@guodun/antdv 1.7.3 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/components/contract-signing-location/src/ContractSigningLocation.vue.mjs +313 -308
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.mjs +796 -0
- package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +16 -5
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +3 -1
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.mjs +123 -710
- package/dist/es/components/pro-contract-template-designer/src/composables/use-renderer-files.mjs +80 -0
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +172 -134
- package/dist/es/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.mjs +11 -9
- package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +136 -76
- package/dist/es/components/pro-contract-template-designer/src/utils/toolbar-overflow.mjs +10 -9
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocation.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-renderer-files.cjs +1 -0
- 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/composables/use-toolbar-overflow.cjs +1 -1
- 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/toolbar-overflow.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/theme/icon.css +1 -1
- package/dist/theme/index.css +1 -1
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.d.ts +89 -0
- package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +2 -0
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.d.ts +388 -10
- package/dist/types/components/pro-contract-template-designer/src/composables/use-renderer-files.d.ts +14 -0
- package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +9 -2
- package/dist/types/components/pro-contract-template-designer/src/types.d.ts +16 -2
- package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +3 -3
- package/dist/types/components/pro-contract-template-designer/src/utils/toolbar-overflow.d.ts +2 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`),require(`../../pro-contract-template-designer/src/utils/contract-print-document.cjs`);const e=require(`./constants.cjs`),t=require(`./coordinates.cjs`),n=require(`./template-source.cjs`),r=require(`./location-rules.cjs`),i=require(`./ContractSigningLocationCanvas.cjs`),a=require(`./ContractSigningLocationInspector.cjs`),o=require(`./ContractSigningLocationNavigator.cjs`),s=require(`./preview-requests.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),u=require(`@ant-design/icons-vue`);var ee={class:`gd-ant-contract-signing-location__header`},te={class:`gd-ant-contract-signing-location__title`},ne={class:`gd-ant-contract-signing-location__header-actions`},re={class:`gd-ant-contract-signing-location__placement-count`},ie={key:0,class:`gd-ant-contract-signing-location__error`,role:`alert`},ae=[`aria-label`,`aria-expanded`],oe={class:`gd-ant-contract-signing-location__panel-stack`},se=[`aria-label`,`aria-expanded`],ce={class:`gd-ant-contract-signing-location__panel-stack`},le=(0,c.defineComponent)({name:`ContractSigningLocation`,__name:`ContractSigningLocation`,props:{modelValue:{default:void 0},mode:{default:`placement`},contractId:{default:``},dataProvider:{default:void 0},sealTypeOptions:{default:()=>e.CONTRACT_SIGNING_SEAL_TYPE_OPTIONS.map(e=>({...e}))},defaultSealTypes:{default:void 0},referencePlacements:{default:()=>[]},allowedPlacementTypes:{default:()=>[`seal`,`signature`,`date`]},sizeProfile:{default:`default`},autoLoad:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},minZoom:{default:.5},maxZoom:{default:1.5},zoom:{default:1},resizable:{type:Boolean,default:!1},sealMinSize:{default:8},sealMaxSize:{default:640},height:{default:void 0},showSubmitButton:{type:Boolean,default:!0},showInspector:{type:Boolean,default:void 0},contractFontBaseUrl:{default:void 0}},emits:[`update:modelValue`,`update:zoom`,`change`,`ready`,`file-change`,`page-change`,`submit`,`error`],setup(e,{expose:le,emit:ue}){let d=e,f=ue,p=(0,c.computed)(()=>t.resolveContractSigningSealSizeLimit(d.sealMinSize,d.sealMaxSize)),m=r.normalizeContractSigningLocationValue(d.modelValue??r.createContractSigningLocationValue(d.contractId),{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions}),h=(0,c.shallowRef)(m),g=(0,c.shallowRef)(r.cloneContractSigningLocationValue(m)),_=(0,c.shallowRef)(m.files[0]?.fileId??``),v=(0,c.shallowRef)(m.files[0]?.pages[0]?.pageIndex??0),y=(0,c.shallowRef)(``),b=(0,c.shallowRef)(!1),x=(0,c.shallowRef)(``),S=(0,c.ref)([]),C=(0,c.ref)({}),w=(0,c.shallowRef)(H(d.zoom)),T=(0,c.ref)(null),E=(0,c.ref)(!1),D=(0,c.ref)(!1),O=(0,c.shallowRef)(`loading`),k=(0,c.shallowRef)(``),A=0,j=!1,M,N=[],P=0,F=new s.ContractSigningPreviewRequests,I=(0,c.computed)(()=>d.mode===`preview`),de=(0,c.computed)(()=>I.value||d.readonly||d.disabled),fe=(0,c.computed)(()=>d.showInspector??!I.value),pe=(0,c.computed)(()=>!I.value&&d.showSubmitButton),me=(0,c.computed)(()=>h.value.files.length<=1),he=(0,c.computed)(()=>Je(d.height)),L=(0,c.computed)(()=>h.value.files.find(e=>e.fileId===_.value)??h.value.files[0]),R=(0,c.computed)(()=>n.isContractSigningTemplateFile(L.value)&&O.value!==`ready`),z=(0,c.computed)(()=>de.value||R.value),B=(0,c.computed)(()=>L.value?.pages.find(e=>e.pageIndex===v.value)??L.value?.pages[0]),ge=(0,c.computed)(()=>{let e=L.value;return e?h.value.placements.filter(t=>t.fileId===e.fileId):[]}),_e=(0,c.computed)(()=>{let e=L.value;return e?d.referencePlacements.filter(t=>t.fileId===e.fileId):[]}),V=(0,c.computed)(()=>h.value.placements.find(e=>e.id===y.value)),ve=(0,c.computed)(()=>{let e=V.value;return e?r.findContractSigningPage(h.value,e.fileId,e.pageIndex)??B.value:B.value}),ye=(0,c.computed)(()=>S.value.filter(e=>e.endsWith(`:thumbnail`)).map(e=>e.slice(0,-10))),be=(0,c.computed)(()=>Object.keys(C.value).filter(e=>e.endsWith(`:thumbnail`)).map(e=>e.slice(0,-10))),xe=(0,c.computed)(()=>S.value.filter(e=>e.endsWith(`:preview`)).map(e=>e.slice(0,-8))),Se=(0,c.computed)(()=>{let e={};return Object.entries(C.value).forEach(([t,n])=>{t.endsWith(`:preview`)&&(e[t.slice(0,-8)]=n)}),e});(0,c.watch)(()=>d.modelValue,e=>{if(!e)return;let t=r.normalizeContractSigningLocationValue(e,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions});$(t)!==$(h.value)&&(Q(),h.value=t,g.value=r.cloneContractSigningLocationValue(t),Y(),(0,c.nextTick)(()=>T.value?.scrollToPage(v.value)))},{deep:!0}),(0,c.watch)(p,()=>{$(r.normalizeContractSigningLocationValue(h.value,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions}))!==$(h.value)&&U(h.value)}),(0,c.watch)(()=>d.zoom,e=>{w.value=H(e)}),(0,c.watch)(()=>L.value?.fileId,()=>{O.value=n.isContractSigningTemplateFile(L.value)?`loading`:`ready`,k.value=``}),(0,c.watch)(()=>[d.contractId,d.dataProvider,d.autoLoad],([e,t,n],r)=>{!n||!t||!e||(!r||e!==r[0]||t!==r[1])&&W()},{immediate:!0}),(0,c.onBeforeUnmount)(()=>{j=!0,A+=1,Ue(),Q()});function H(e){let n=Math.min(d.minZoom,d.maxZoom),r=Math.max(d.minZoom,d.maxZoom);return t.clampContractSigningZoom(e,n,r)}function Ce(e){let t=H(e);w.value=t,f(`update:zoom`,t)}function we(){return T.value?.fitWidth()??w.value}function U(e,t={}){h.value=r.normalizeContractSigningLocationValue(e,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions}),t.clearError!==!1&&(x.value=``),Y();let n=r.cloneContractSigningLocationValue(h.value);return f(`update:modelValue`,n),f(`change`,n),n}async function W(){let e=String(d.contractId||h.value.contractId||``).trim();if(!d.dataProvider)return X({code:`CONTRACT_PROVIDER_MISSING`,message:`未配置合同数据提供器,请由宿主传入文件数据`}),!1;if(!e)return X({code:`CONTRACT_ID_MISSING`,message:`缺少用于加载合同的 PaaS contractId`}),!1;let n=++A;Q(),b.value=!0,x.value=``;try{let i=await d.dataProvider.loadContract({contractId:e});if(j||n!==A)return!1;let a=r.normalizeContractSigningProviderValue(i,t.normalizeContractSigningCoordinateScale(d.dataProvider.coordinateScale)),o=r.normalizeContractSigningLocationValue({...a,contractId:e,placements:a.placements.length?a.placements:h.value.contractId===e?h.value.placements:[]},{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions});h.value=o,g.value=r.cloneContractSigningLocationValue(o),y.value=``,Y();let s=r.cloneContractSigningLocationValue(o);return f(`update:modelValue`,s),f(`change`,s),f(`ready`,s),Te(),(0,c.nextTick)(()=>T.value?.scrollToPage(v.value)),s}catch(e){return j||n!==A||X(Z(e,`CONTRACT_LOAD_FAILED`,`合同加载失败,请检查授权后重试`)),!1}finally{!j&&n===A&&(b.value=!1)}}async function Te(){d.dataProvider?.loadPagePreview&&await Promise.allSettled(h.value.files.map(e=>{if(n.isContractSigningTemplateFile(e))return Promise.resolve();let t=r.getContractSigningHomePage(e.pages);return t&&!t.thumbnailUrl?G(e.fileId,t.pageIndex,!0):Promise.resolve()}))}async function G(e,i,a){let o=d.dataProvider?.loadPagePreview,s=h.value.files.find(t=>t.fileId===e),c=r.findContractSigningPage(h.value,e,i),l=Ve(e,i,a);if(!o||n.isContractSigningTemplateFile(s)||!c||S.value.includes(l))return;He(l),S.value=[...S.value,l];let u=F.start(l);try{let n=await o({contractId:h.value.contractId||d.contractId,fileId:e,pageIndex:i,thumbnail:a,signal:u.signal});if(j||!F.isCurrent(l,u)||!r.findContractSigningPage(h.value,e,i))return;let s=r.findContractSigningPage(h.value,e,i),c=r.resolveContractSigningPreviewPageSize(s,n,t.normalizeContractSigningCoordinateScale(d.dataProvider?.coordinateScale),a),ee=h.value.files.map(t=>t.fileId===e?{...t,pages:t.pages.map(e=>e.pageIndex===i?{...e,...c||{},...a?{thumbnailUrl:n.url}:{previewUrl:n.url}}:e)}:t);U({...h.value,files:ee},{clearError:!1})}catch(t){if(!F.isCurrent(l,u)||We(t))return;let n=Z(t,`CONTRACT_PREVIEW_FAILED`,`合同页面预览加载失败,可切换页面或重试`,{fileId:e,pageIndex:i});f(`error`,n),C.value={...C.value,[l]:n.message}}finally{F.finish(l,u)&&(S.value=S.value.filter(e=>e!==l))}}function Ee(e){if(e===_.value)return;let t=_.value;Ue(),t&&(Q(e=>e.startsWith(`${t}:`)&&e.endsWith(`:preview`)),N=N.filter(t=>t.fileId===e)),_.value=e;let n=h.value.files.find(t=>t.fileId===e);v.value=r.getContractSigningHomePage(n?.pages)?.pageIndex??0,y.value=``,f(`file-change`,e),f(`page-change`,e,v.value),(0,c.nextTick)(()=>T.value?.scrollToPage(v.value))}function De(e){v.value=e}function Oe(e){v.value!==e&&(v.value=e),f(`page-change`,_.value,e)}function ke(e){Ue();let t=_.value;M=setTimeout(()=>{M=void 0,_.value===t&&Ae(t,e)},150)}function Ae(e,t){let r=h.value.files.find(t=>t.fileId===e);!r||n.isContractSigningTemplateFile(r)||e!==_.value||(t.forEach(e=>{let t=r.pages.find(t=>t.pageIndex===e);!t||t.previewUrl||S.value.includes(Ve(r.fileId,e,!1))||N.some(t=>t.fileId===r.fileId&&t.pageIndex===e)||N.push({fileId:r.fileId,pageIndex:e})}),je())}async function je(){let e=_.value;for(N=N.filter(t=>t.fileId===e);P<3&&N.length;){let t=N.shift();if(!t||t.fileId!==e)continue;let i=r.findContractSigningPage(h.value,t.fileId,t.pageIndex),a=h.value.files.find(e=>e.fileId===t.fileId);!i||n.isContractSigningTemplateFile(a)||i.previewUrl||S.value.includes(Ve(t.fileId,t.pageIndex,!1))||(P+=1,G(t.fileId,t.pageIndex,!1).finally(()=>{P=Math.max(0,P-1),je()}))}}function Me(e){let t=h.value.placements.find(t=>t.id===e);t&&(t.fileId!==_.value&&Ee(t.fileId),y.value=e,(0,c.nextTick)(()=>T.value?.scrollToPlacement(e)))}function K(e,t={}){if(z.value||!d.allowedPlacementTypes.includes(e))return;let n=t.fileId??L.value?.fileId,i=t.pageIndex??B.value?.pageIndex;if(!n||i===void 0)return;let a=r.findContractSigningPage(h.value,n,i);if(!a||!r.isContractSigningPageUsable(a)){X({code:`CONTRACT_PAGE_SIZE_INVALID`,message:`当前页面缺少有效的原始宽高,暂时不能添加签署位置`,fileId:n,pageIndex:i});return}let o=r.resolveContractSigningDefaultSealTypes(d.defaultSealTypes,d.sealTypeOptions);if(e===`seal`&&!o.length){X({code:`CONTRACT_SEAL_TYPES_MISSING`,message:`当前未配置可用的印章类型,暂时不能添加印章位置`,fileId:n,pageIndex:i});return}let s=r.createContractSigningPlacement(e,n,a,{signLeft:t.signLeft,signTop:t.signTop,sizeProfile:d.sizeProfile,sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions,...e===`seal`?{sealType:o}:{}});return U({...h.value,placements:[...h.value.placements,s]}),_.value=n,v.value=i,y.value=s.id,Ke(s)}function Ne(e,t){z.value||U({...h.value,placements:h.value.placements.map(n=>{if(n.id!==e)return n;let i=t.pageIndex===void 0?n.pageIndex:t.pageIndex,a=r.findContractSigningPage(h.value,n.fileId,i);return r.patchContractSigningPlacement(n,t,a,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions})})})}function Pe(){let e=V.value;if(!e||z.value)return;let n=r.findContractSigningPage(h.value,e.fileId,e.pageIndex);if(!n)return;let i=t.clampContractSigningPlacement({...Ke(e),id:qe(),signLeft:e.signLeft+16,signTop:e.signTop+16},n,{sealSizeLimit:p.value});U({...h.value,placements:[...h.value.placements,i]}),y.value=i.id}function q(e){z.value||(U({...h.value,placements:h.value.placements.filter(t=>t.id!==e)}),y.value===e&&(y.value=``))}function Fe(){let e=r.validateContractSigningLocationValue(h.value,{allowedSealTypes:d.sealTypeOptions.map(e=>e.value)});return R.value?[...e,{code:`CONTRACT_TEMPLATE_FONT_UNAVAILABLE`,message:J()}]:e}function Ie(){return r.cloneContractSigningLocationValue(h.value)}function Le(){if(R.value)throw new r.ContractSigningLocationBuildError([{code:`CONTRACT_TEMPLATE_FONT_UNAVAILABLE`,message:J()}]);return r.buildContractSigningLocationOutput(Ie(),{allowedSealTypes:d.sealTypeOptions.map(e=>e.value)})}function Re(){if(R.value){let e=J();return console.error(`[GD-SIGN-COORD]`,e),X({code:`CONTRACT_TEMPLATE_FONT_UNAVAILABLE`,message:e}),!1}try{let e=Le();return x.value=``,f(`submit`,e),e}catch(e){return X(e instanceof r.ContractSigningLocationBuildError?{...e.errors[0],cause:e}:Z(e,`CONTRACT_SIGNING_LOCATION_INVALID`,`指定签署位置数据不完整`)),!1}}function ze(e,t){O.value=e,k.value=e===`error`?t||`合同排版度量校验失败`:``}function J(){return O.value===`error`?k.value||`合同排版度量校验失败,禁止生成签署坐标`:`合同排版度量校验中,请稍后再保存签署坐标`}function Be(){if(z.value)return r.cloneContractSigningLocationValue(h.value);let e=U(r.cloneContractSigningLocationValue(g.value));return y.value=``,Y(!0),(0,c.nextTick)(()=>T.value?.scrollToPage(v.value)),e}function Y(e=!1){let t=(e?void 0:h.value.files.find(e=>e.fileId===_.value))??h.value.files[0];_.value=t?.fileId??``,v.value=((e?void 0:t?.pages.find(e=>e.pageIndex===v.value))??t?.pages[0])?.pageIndex??0,h.value.placements.some(e=>e.id===y.value)||(y.value=``)}function X(e){x.value=e.message,f(`error`,e)}function Z(e,t,n,r={}){let i=typeof e==`object`&&e&&`status`in e?Number(e.status):void 0;return{code:t,message:i===401||i===403?`授权已失效,请重新获取签署凭证`:e instanceof Error&&e.message?e.message:n,...r,cause:e}}function Ve(e,t,n){return`${e}:${t}:${n?`thumbnail`:`preview`}`}function He(e){if(!(e in C.value))return;let t={...C.value};delete t[e],C.value=t}function Ue(){M&&=(clearTimeout(M),void 0)}function Q(e){let t=e??(()=>!0),n=new Set(F.abort(t));n.size&&(S.value=S.value.filter(e=>!n.has(e))),e||(N=[])}function We(e){return!!(e&&typeof e==`object`&&`cancelled`in e&&e.cancelled)||e instanceof DOMException&&e.name===`AbortError`}function Ge(e){let t=L.value;t&&G(t.fileId,e,!1)}function Ke(e){return{...e,sealType:e.sealType?[...e.sealType]:void 0}}function $(e){return JSON.stringify(e)}function qe(){return typeof crypto<`u`&&`randomUUID`in crypto?`contract-signing-placement-${crypto.randomUUID()}`:`contract-signing-placement-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Je(e){if(typeof e==`number`&&Number.isFinite(e)&&e>0)return{"--gd-ant-contract-signing-location-height":`${e}px`};if(typeof e==`string`&&e.trim())return{"--gd-ant-contract-signing-location-height":e.trim()}}return le({load:W,validate:Fe,getValue:Ie,getOutput:Le,submit:Re,reset:Be,addPlacement:K,removePlacement:q,fitWidth:we}),(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{class:(0,c.normalizeClass)([`gd-ant-contract-signing-location`,{"is-readonly":de.value,"is-disabled":e.disabled,"is-preview":I.value}]),style:(0,c.normalizeStyle)(he.value)},[(0,c.createElementVNode)(`header`,ee,[(0,c.createElementVNode)(`div`,te,[n[6]||=(0,c.createElementVNode)(`span`,{class:`gd-ant-contract-signing-location__title-bar`,"aria-hidden":`true`},null,-1),(0,c.createElementVNode)(`div`,null,[(0,c.createElementVNode)(`strong`,null,(0,c.toDisplayString)(I.value?`合同预览`:`指定合同签署位置`),1)])]),(0,c.createElementVNode)(`div`,ne,[(0,c.createElementVNode)(`span`,re,(0,c.toDisplayString)(h.value.placements.length)+` 个位置`,1),e.dataProvider?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:0,loading:b.value,onClick:W},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(u.ReloadOutlined),{"aria-hidden":`true`}),n[7]||=(0,c.createTextVNode)(` 重新加载 `,-1)]),_:1},8,[`loading`])):(0,c.createCommentVNode)(``,!0),I.value?(0,c.createCommentVNode)(``,!0):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:1,disabled:z.value,onClick:Be},{default:(0,c.withCtx)(()=>[...n[8]||=[(0,c.createTextVNode)(`重置`,-1)]]),_:1},8,[`disabled`])),pe.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:2,type:`primary`,loading:b.value,disabled:e.disabled||R.value,onClick:Re},{default:(0,c.withCtx)(()=>[...n[9]||=[(0,c.createTextVNode)(`确认并生成规则`,-1)]]),_:1},8,[`loading`,`disabled`])):(0,c.createCommentVNode)(``,!0)])]),x.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,ie,[(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(x.value),1),e.dataProvider&&e.contractId?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:0,type:`link`,size:`small`,onClick:W},{default:(0,c.withCtx)(()=>[...n[10]||=[(0,c.createTextVNode)(`重试`,-1)]]),_:1})):(0,c.createCommentVNode)(``,!0)])):(0,c.createCommentVNode)(``,!0),(0,c.createElementVNode)(`div`,{class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__body`,{"is-single-file":me.value,"is-inspector-hidden":!fe.value}])},[me.value?(0,c.createCommentVNode)(``,!0):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:0,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__navigator-wrap`,{"is-collapsed":D.value}])},[(0,c.createVNode)((0,c.unref)(l.Tooltip),{title:D.value?`展开页面栏`:`收起页面栏`},{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`button`,{type:`button`,class:`gd-ant-contract-signing-location__panel-handle`,"aria-label":D.value?`展开页面栏`:`收起页面栏`,"aria-expanded":!D.value,onClick:n[0]||=e=>D.value=!D.value},[D.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.RightOutlined),{key:0,"aria-hidden":`true`})):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.LeftOutlined),{key:1,"aria-hidden":`true`}))],8,ae)]),_:1},8,[`title`]),(0,c.createElementVNode)(`div`,oe,[(0,c.createVNode)(o.default,{files:h.value.files,"active-file-id":_.value,"loading-preview-keys":ye.value,"error-preview-keys":be.value,onSelect:Ee},null,8,[`files`,`active-file-id`,`loading-preview-keys`,`error-preview-keys`])])],2)),(0,c.createVNode)(i.default,{ref_key:`canvasRef`,ref:T,file:L.value,pages:L.value?.pages??[],placements:ge.value,"reference-placements":_e.value,"selected-placement-id":y.value,readonly:z.value,resizable:e.resizable,"seal-size-limit":p.value,"seal-type-options":e.sealTypeOptions,zoom:w.value,"preview-loading-keys":xe.value,"preview-error-map":Se.value,"active-page-index":v.value,"min-zoom":e.minZoom,"max-zoom":e.maxZoom,"font-base-url":e.contractFontBaseUrl,onSelect:n[1]||=e=>y.value=e,onRetry:Ge,onAdd:n[2]||=(e,t,n,r)=>K(e,{signLeft:t,signTop:n,pageIndex:r}),onUpdate:n[3]||=e=>Ne(e.id,e),onRemove:q,onVisiblePages:ke,onViewPage:De,onPageChange:Oe,onZoomChange:Ce,onTemplateStatus:ze},null,8,[`file`,`pages`,`placements`,`reference-placements`,`selected-placement-id`,`readonly`,`resizable`,`seal-size-limit`,`seal-type-options`,`zoom`,`preview-loading-keys`,`preview-error-map`,`active-page-index`,`min-zoom`,`max-zoom`,`font-base-url`]),fe.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:1,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__inspector-wrap`,{"is-collapsed":E.value}])},[(0,c.createVNode)((0,c.unref)(l.Tooltip),{title:E.value?`展开属性栏`:`收起属性栏`},{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`button`,{type:`button`,class:`gd-ant-contract-signing-location__panel-handle`,"aria-label":E.value?`展开属性栏`:`收起属性栏`,"aria-expanded":!E.value,onClick:n[4]||=e=>E.value=!E.value},[E.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.RightOutlined),{key:1,"aria-hidden":`true`}))],8,se)]),_:1},8,[`title`]),(0,c.createElementVNode)(`div`,ce,[(0,c.createVNode)(a.default,{placement:V.value,page:ve.value,pages:L.value?.pages??[],placements:ge.value,readonly:z.value,resizable:e.resizable,"seal-size-limit":p.value,"seal-type-options":e.sealTypeOptions,"allowed-placement-types":e.allowedPlacementTypes,"size-profile":e.sizeProfile,onAdd:K,onUpdate:n[5]||=e=>V.value&&Ne(V.value.id,e),onDuplicate:Pe,onRemove:q,onLocate:Me},null,8,[`placement`,`page`,`pages`,`placements`,`readonly`,`resizable`,`seal-size-limit`,`seal-type-options`,`allowed-placement-types`,`size-profile`])])],2)):(0,c.createCommentVNode)(``,!0)],2)],6))}});exports.default=le;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`),require(`../../pro-contract-template-designer/src/utils/contract-print-document.cjs`);const e=require(`./constants.cjs`),t=require(`./coordinates.cjs`),n=require(`./template-source.cjs`),r=require(`./location-rules.cjs`),i=require(`./ContractSigningLocationCanvas.cjs`),a=require(`./ContractSigningLocationInspector.cjs`),o=require(`./ContractSigningLocationNavigator.cjs`),s=require(`./preview-requests.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),u=require(`@ant-design/icons-vue`);var ee={class:`gd-ant-contract-signing-location__header`},te={class:`gd-ant-contract-signing-location__title`},ne={class:`gd-ant-contract-signing-location__header-actions`},re={class:`gd-ant-contract-signing-location__placement-count`},ie={key:0,class:`gd-ant-contract-signing-location__error`,role:`alert`},ae=[`aria-label`,`aria-expanded`],oe={class:`gd-ant-contract-signing-location__panel-stack`},se=[`aria-label`,`aria-expanded`],ce={class:`gd-ant-contract-signing-location__panel-stack`},le=(0,c.defineComponent)({name:`ContractSigningLocation`,__name:`ContractSigningLocation`,props:{modelValue:{default:void 0},mode:{default:`placement`},contractId:{default:``},dataProvider:{default:void 0},sealTypeOptions:{default:()=>e.CONTRACT_SIGNING_SEAL_TYPE_OPTIONS.map(e=>({...e}))},defaultSealTypes:{default:void 0},referencePlacements:{default:()=>[]},allowedPlacementTypes:{default:()=>[`seal`,`signature`,`date`]},sizeProfile:{default:`default`},autoLoad:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},minZoom:{default:.5},maxZoom:{default:1.5},zoom:{default:1},resizable:{type:Boolean,default:!1},sealMinSize:{default:8},sealMaxSize:{default:640},height:{default:void 0},showSubmitButton:{type:Boolean,default:!0},showInspector:{type:Boolean,default:void 0},contractFontBaseUrl:{default:void 0}},emits:[`update:modelValue`,`update:zoom`,`change`,`ready`,`file-change`,`page-change`,`submit`,`error`],setup(e,{expose:le,emit:ue}){let d=e,f=ue,p=(0,c.computed)(()=>t.resolveContractSigningSealSizeLimit(d.sealMinSize,d.sealMaxSize)),m=r.normalizeContractSigningLocationValue(d.modelValue??r.createContractSigningLocationValue(d.contractId),{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions}),h=(0,c.shallowRef)(m),de=(0,c.shallowRef)(r.cloneContractSigningLocationValue(m)),g=(0,c.shallowRef)(m.files[0]?.fileId??``),_=(0,c.shallowRef)(m.files[0]?.pages[0]?.pageIndex??0),v=(0,c.shallowRef)(``),y=(0,c.shallowRef)(!1),b=(0,c.shallowRef)(``),x=(0,c.ref)([]),S=(0,c.ref)({}),C=(0,c.shallowRef)(B(d.zoom)),w=(0,c.ref)(null),T=(0,c.ref)(!1),E=(0,c.ref)(!1),D=(0,c.shallowRef)(`loading`),O=(0,c.shallowRef)(``),k=0,A=!1,j,M=[],N=0,P=new s.ContractSigningPreviewRequests,F=(0,c.computed)(()=>d.mode===`preview`),fe=(0,c.computed)(()=>F.value||d.readonly||d.disabled),pe=(0,c.computed)(()=>d.showInspector??!F.value),me=(0,c.computed)(()=>!F.value&&d.showSubmitButton),he=(0,c.computed)(()=>h.value.files.length<=1),ge=(0,c.computed)(()=>Ye(d.height)),I=(0,c.computed)(()=>h.value.files.find(e=>e.fileId===g.value)??h.value.files[0]),L=(0,c.computed)(()=>n.isContractSigningTemplateFile(I.value)&&D.value!==`ready`),_e=(0,c.computed)(()=>{if(!L.value||F.value)return``;if(D.value===`loading`)return`合同排版校验中,暂不可指定签署位置`;let e=O.value.match(/第\s*(\d+)\s*页正文超出纸张/);return e?`第 ${e[1]} 页正文超出纸张,请回模板设计器调整后重试`:`合同排版校验失败,请检查模板后重试`}),R=(0,c.computed)(()=>fe.value||L.value),ve=(0,c.computed)(()=>I.value?.pages.find(e=>e.pageIndex===_.value)??I.value?.pages[0]),ye=(0,c.computed)(()=>{let e=I.value;return e?h.value.placements.filter(t=>t.fileId===e.fileId):[]}),be=(0,c.computed)(()=>{let e=I.value;return e?d.referencePlacements.filter(t=>t.fileId===e.fileId):[]}),z=(0,c.computed)(()=>h.value.placements.find(e=>e.id===v.value)),xe=(0,c.computed)(()=>{let e=z.value;return e?r.findContractSigningPage(h.value,e.fileId,e.pageIndex)??ve.value:ve.value}),Se=(0,c.computed)(()=>x.value.filter(e=>e.endsWith(`:thumbnail`)).map(e=>e.slice(0,-10))),Ce=(0,c.computed)(()=>Object.keys(S.value).filter(e=>e.endsWith(`:thumbnail`)).map(e=>e.slice(0,-10))),we=(0,c.computed)(()=>x.value.filter(e=>e.endsWith(`:preview`)).map(e=>e.slice(0,-8))),Te=(0,c.computed)(()=>{let e={};return Object.entries(S.value).forEach(([t,n])=>{t.endsWith(`:preview`)&&(e[t.slice(0,-8)]=n)}),e});(0,c.watch)(()=>d.modelValue,e=>{if(!e)return;let t=r.normalizeContractSigningLocationValue(e,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions});$(t)!==$(h.value)&&(Q(),h.value=t,de.value=r.cloneContractSigningLocationValue(t),q(),(0,c.nextTick)(()=>w.value?.scrollToPage(_.value)))},{deep:!0}),(0,c.watch)(p,()=>{$(r.normalizeContractSigningLocationValue(h.value,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions}))!==$(h.value)&&V(h.value)}),(0,c.watch)(()=>d.zoom,e=>{C.value=B(e)}),(0,c.watch)(()=>I.value?.fileId,()=>{D.value=n.isContractSigningTemplateFile(I.value)?`loading`:`ready`,O.value=``}),(0,c.watch)(()=>[d.contractId,d.dataProvider,d.autoLoad],([e,t,n],r)=>{!n||!t||!e||(!r||e!==r[0]||t!==r[1])&&H()},{immediate:!0}),(0,c.onBeforeUnmount)(()=>{A=!0,k+=1,Z(),Q()});function B(e){let n=Math.min(d.minZoom,d.maxZoom),r=Math.max(d.minZoom,d.maxZoom);return t.clampContractSigningZoom(e,n,r)}function Ee(e){let t=B(e);C.value=t,f(`update:zoom`,t)}function De(){return w.value?.fitWidth()??C.value}function V(e,t={}){h.value=r.normalizeContractSigningLocationValue(e,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions}),t.clearError!==!1&&(b.value=``),q();let n=r.cloneContractSigningLocationValue(h.value);return f(`update:modelValue`,n),f(`change`,n),n}async function H(){let e=String(d.contractId||h.value.contractId||``).trim();if(!d.dataProvider)return J({code:`CONTRACT_PROVIDER_MISSING`,message:`未配置合同数据提供器,请由宿主传入文件数据`}),!1;if(!e)return J({code:`CONTRACT_ID_MISSING`,message:`缺少用于加载合同的 PaaS contractId`}),!1;let n=++k;Q(),y.value=!0,b.value=``;try{let i=await d.dataProvider.loadContract({contractId:e});if(A||n!==k)return!1;let a=r.normalizeContractSigningProviderValue(i,t.normalizeContractSigningCoordinateScale(d.dataProvider.coordinateScale)),o=r.normalizeContractSigningLocationValue({...a,contractId:e,placements:a.placements.length?a.placements:h.value.contractId===e?h.value.placements:[]},{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions});h.value=o,de.value=r.cloneContractSigningLocationValue(o),v.value=``,q();let s=r.cloneContractSigningLocationValue(o);return f(`update:modelValue`,s),f(`change`,s),f(`ready`,s),Oe(),(0,c.nextTick)(()=>w.value?.scrollToPage(_.value)),s}catch(e){return A||n!==k||J(Y(e,`CONTRACT_LOAD_FAILED`,`合同加载失败,请检查授权后重试`)),!1}finally{!A&&n===k&&(y.value=!1)}}async function Oe(){d.dataProvider?.loadPagePreview&&await Promise.allSettled(h.value.files.map(e=>{if(n.isContractSigningTemplateFile(e))return Promise.resolve();let t=r.getContractSigningHomePage(e.pages);return t&&!t.thumbnailUrl?U(e.fileId,t.pageIndex,!0):Promise.resolve()}))}async function U(e,i,a){let o=d.dataProvider?.loadPagePreview,s=h.value.files.find(t=>t.fileId===e),c=r.findContractSigningPage(h.value,e,i),l=X(e,i,a);if(!o||n.isContractSigningTemplateFile(s)||!c||x.value.includes(l))return;We(l),x.value=[...x.value,l];let u=P.start(l);try{let n=await o({contractId:h.value.contractId||d.contractId,fileId:e,pageIndex:i,thumbnail:a,signal:u.signal});if(A||!P.isCurrent(l,u)||!r.findContractSigningPage(h.value,e,i))return;let s=r.findContractSigningPage(h.value,e,i),c=r.resolveContractSigningPreviewPageSize(s,n,t.normalizeContractSigningCoordinateScale(d.dataProvider?.coordinateScale),a),ee=h.value.files.map(t=>t.fileId===e?{...t,pages:t.pages.map(e=>e.pageIndex===i?{...e,...c||{},...a?{thumbnailUrl:n.url}:{previewUrl:n.url}}:e)}:t);V({...h.value,files:ee},{clearError:!1})}catch(t){if(!P.isCurrent(l,u)||Ge(t))return;let n=Y(t,`CONTRACT_PREVIEW_FAILED`,`合同页面预览加载失败,可切换页面或重试`,{fileId:e,pageIndex:i});f(`error`,n),S.value={...S.value,[l]:n.message}}finally{P.finish(l,u)&&(x.value=x.value.filter(e=>e!==l))}}function ke(e){if(e===g.value)return;let t=g.value;Z(),t&&(Q(e=>e.startsWith(`${t}:`)&&e.endsWith(`:preview`)),M=M.filter(t=>t.fileId===e)),g.value=e;let n=h.value.files.find(t=>t.fileId===e);_.value=r.getContractSigningHomePage(n?.pages)?.pageIndex??0,v.value=``,f(`file-change`,e),f(`page-change`,e,_.value),(0,c.nextTick)(()=>w.value?.scrollToPage(_.value))}function Ae(e){_.value=e}function je(e){_.value!==e&&(_.value=e),f(`page-change`,g.value,e)}function Me(e){Z();let t=g.value;j=setTimeout(()=>{j=void 0,g.value===t&&Ne(t,e)},150)}function Ne(e,t){let r=h.value.files.find(t=>t.fileId===e);!r||n.isContractSigningTemplateFile(r)||e!==g.value||(t.forEach(e=>{let t=r.pages.find(t=>t.pageIndex===e);!t||t.previewUrl||x.value.includes(X(r.fileId,e,!1))||M.some(t=>t.fileId===r.fileId&&t.pageIndex===e)||M.push({fileId:r.fileId,pageIndex:e})}),Pe())}async function Pe(){let e=g.value;for(M=M.filter(t=>t.fileId===e);N<3&&M.length;){let t=M.shift();if(!t||t.fileId!==e)continue;let i=r.findContractSigningPage(h.value,t.fileId,t.pageIndex),a=h.value.files.find(e=>e.fileId===t.fileId);!i||n.isContractSigningTemplateFile(a)||i.previewUrl||x.value.includes(X(t.fileId,t.pageIndex,!1))||(N+=1,U(t.fileId,t.pageIndex,!1).finally(()=>{N=Math.max(0,N-1),Pe()}))}}function Fe(e){let t=h.value.placements.find(t=>t.id===e);t&&(t.fileId!==g.value&&ke(t.fileId),v.value=e,(0,c.nextTick)(()=>w.value?.scrollToPlacement(e)))}function W(e,t={}){if(R.value||!d.allowedPlacementTypes.includes(e))return;let n=t.fileId??I.value?.fileId,i=t.pageIndex??ve.value?.pageIndex;if(!n||i===void 0)return;let a=r.findContractSigningPage(h.value,n,i);if(!a||!r.isContractSigningPageUsable(a)){J({code:`CONTRACT_PAGE_SIZE_INVALID`,message:`当前页面缺少有效的原始宽高,暂时不能添加签署位置`,fileId:n,pageIndex:i});return}let o=r.resolveContractSigningDefaultSealTypes(d.defaultSealTypes,d.sealTypeOptions);if(e===`seal`&&!o.length){J({code:`CONTRACT_SEAL_TYPES_MISSING`,message:`当前未配置可用的印章类型,暂时不能添加印章位置`,fileId:n,pageIndex:i});return}let s=r.createContractSigningPlacement(e,n,a,{signLeft:t.signLeft,signTop:t.signTop,sizeProfile:d.sizeProfile,sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions,...e===`seal`?{sealType:o}:{}});return V({...h.value,placements:[...h.value.placements,s]}),g.value=n,_.value=i,v.value=s.id,qe(s)}function Ie(e,t){R.value||V({...h.value,placements:h.value.placements.map(n=>{if(n.id!==e)return n;let i=t.pageIndex===void 0?n.pageIndex:t.pageIndex,a=r.findContractSigningPage(h.value,n.fileId,i);return r.patchContractSigningPlacement(n,t,a,{sealSizeLimit:p.value,sealTypeOptions:d.sealTypeOptions})})})}function Le(){let e=z.value;if(!e||R.value)return;let n=r.findContractSigningPage(h.value,e.fileId,e.pageIndex);if(!n)return;let i=t.clampContractSigningPlacement({...qe(e),id:Je(),signLeft:e.signLeft+16,signTop:e.signTop+16},n,{sealSizeLimit:p.value});V({...h.value,placements:[...h.value.placements,i]}),v.value=i.id}function G(e){R.value||(V({...h.value,placements:h.value.placements.filter(t=>t.id!==e)}),v.value===e&&(v.value=``))}function Re(){let e=r.validateContractSigningLocationValue(h.value,{allowedSealTypes:d.sealTypeOptions.map(e=>e.value)});return L.value?[...e,{code:`CONTRACT_TEMPLATE_FONT_UNAVAILABLE`,message:K()}]:e}function ze(){return r.cloneContractSigningLocationValue(h.value)}function Be(){if(L.value)throw new r.ContractSigningLocationBuildError([{code:`CONTRACT_TEMPLATE_FONT_UNAVAILABLE`,message:K()}]);return r.buildContractSigningLocationOutput(ze(),{allowedSealTypes:d.sealTypeOptions.map(e=>e.value)})}function Ve(){if(L.value){let e=K();return console.error(`[GD-SIGN-COORD]`,e),J({code:`CONTRACT_TEMPLATE_FONT_UNAVAILABLE`,message:e}),!1}try{let e=Be();return b.value=``,f(`submit`,e),e}catch(e){return J(e instanceof r.ContractSigningLocationBuildError?{...e.errors[0],cause:e}:Y(e,`CONTRACT_SIGNING_LOCATION_INVALID`,`指定签署位置数据不完整`)),!1}}function He(e,t){D.value=e,O.value=e===`error`?t||`合同排版度量校验失败`:``}function K(){return D.value===`error`?O.value||`合同排版度量校验失败,禁止生成签署坐标`:`合同排版度量校验中,请稍后再保存签署坐标`}function Ue(){if(R.value)return r.cloneContractSigningLocationValue(h.value);let e=V(r.cloneContractSigningLocationValue(de.value));return v.value=``,q(!0),(0,c.nextTick)(()=>w.value?.scrollToPage(_.value)),e}function q(e=!1){let t=(e?void 0:h.value.files.find(e=>e.fileId===g.value))??h.value.files[0];g.value=t?.fileId??``,_.value=((e?void 0:t?.pages.find(e=>e.pageIndex===_.value))??t?.pages[0])?.pageIndex??0,h.value.placements.some(e=>e.id===v.value)||(v.value=``)}function J(e){b.value=e.message,f(`error`,e)}function Y(e,t,n,r={}){let i=typeof e==`object`&&e&&`status`in e?Number(e.status):void 0;return{code:t,message:i===401||i===403?`授权已失效,请重新获取签署凭证`:e instanceof Error&&e.message?e.message:n,...r,cause:e}}function X(e,t,n){return`${e}:${t}:${n?`thumbnail`:`preview`}`}function We(e){if(!(e in S.value))return;let t={...S.value};delete t[e],S.value=t}function Z(){j&&=(clearTimeout(j),void 0)}function Q(e){let t=e??(()=>!0),n=new Set(P.abort(t));n.size&&(x.value=x.value.filter(e=>!n.has(e))),e||(M=[])}function Ge(e){return!!(e&&typeof e==`object`&&`cancelled`in e&&e.cancelled)||e instanceof DOMException&&e.name===`AbortError`}function Ke(e){let t=I.value;t&&U(t.fileId,e,!1)}function qe(e){return{...e,sealType:e.sealType?[...e.sealType]:void 0}}function $(e){return JSON.stringify(e)}function Je(){return typeof crypto<`u`&&`randomUUID`in crypto?`contract-signing-placement-${crypto.randomUUID()}`:`contract-signing-placement-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Ye(e){if(typeof e==`number`&&Number.isFinite(e)&&e>0)return{"--gd-ant-contract-signing-location-height":`${e}px`};if(typeof e==`string`&&e.trim())return{"--gd-ant-contract-signing-location-height":e.trim()}}return le({load:H,validate:Re,getValue:ze,getOutput:Be,submit:Ve,reset:Ue,addPlacement:W,removePlacement:G,fitWidth:De}),(t,n)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{class:(0,c.normalizeClass)([`gd-ant-contract-signing-location`,{"is-readonly":fe.value,"is-disabled":e.disabled,"is-preview":F.value}]),style:(0,c.normalizeStyle)(ge.value)},[(0,c.createElementVNode)(`header`,ee,[(0,c.createElementVNode)(`div`,te,[n[6]||=(0,c.createElementVNode)(`span`,{class:`gd-ant-contract-signing-location__title-bar`,"aria-hidden":`true`},null,-1),(0,c.createElementVNode)(`div`,null,[(0,c.createElementVNode)(`strong`,null,(0,c.toDisplayString)(F.value?`合同预览`:`指定合同签署位置`),1)])]),(0,c.createElementVNode)(`div`,ne,[(0,c.createElementVNode)(`span`,re,(0,c.toDisplayString)(h.value.placements.length)+` 个位置`,1),e.dataProvider?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:0,loading:y.value,onClick:H},{default:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(u.ReloadOutlined),{"aria-hidden":`true`}),n[7]||=(0,c.createTextVNode)(` 重新加载 `,-1)]),_:1},8,[`loading`])):(0,c.createCommentVNode)(``,!0),F.value?(0,c.createCommentVNode)(``,!0):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:1,disabled:R.value,onClick:Ue},{default:(0,c.withCtx)(()=>[...n[8]||=[(0,c.createTextVNode)(`重置`,-1)]]),_:1},8,[`disabled`])),me.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:2,type:`primary`,loading:y.value,disabled:e.disabled||L.value,onClick:Ve},{default:(0,c.withCtx)(()=>[...n[9]||=[(0,c.createTextVNode)(`确认并生成规则`,-1)]]),_:1},8,[`loading`,`disabled`])):(0,c.createCommentVNode)(``,!0)])]),b.value||_e.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,ie,[(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(b.value||_e.value),1),b.value&&e.dataProvider&&e.contractId?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:0,type:`link`,size:`small`,onClick:H},{default:(0,c.withCtx)(()=>[...n[10]||=[(0,c.createTextVNode)(`重试`,-1)]]),_:1})):(0,c.createCommentVNode)(``,!0)])):(0,c.createCommentVNode)(``,!0),(0,c.createElementVNode)(`div`,{class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__body`,{"is-single-file":he.value,"is-inspector-hidden":!pe.value}])},[he.value?(0,c.createCommentVNode)(``,!0):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:0,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__navigator-wrap`,{"is-collapsed":E.value}])},[(0,c.createVNode)((0,c.unref)(l.Tooltip),{title:E.value?`展开页面栏`:`收起页面栏`},{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`button`,{type:`button`,class:`gd-ant-contract-signing-location__panel-handle`,"aria-label":E.value?`展开页面栏`:`收起页面栏`,"aria-expanded":!E.value,onClick:n[0]||=e=>E.value=!E.value},[E.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.RightOutlined),{key:0,"aria-hidden":`true`})):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.LeftOutlined),{key:1,"aria-hidden":`true`}))],8,ae)]),_:1},8,[`title`]),(0,c.createElementVNode)(`div`,oe,[(0,c.createVNode)(o.default,{files:h.value.files,"active-file-id":g.value,"loading-preview-keys":Se.value,"error-preview-keys":Ce.value,onSelect:ke},null,8,[`files`,`active-file-id`,`loading-preview-keys`,`error-preview-keys`])])],2)),(0,c.createVNode)(i.default,{ref_key:`canvasRef`,ref:w,file:I.value,pages:I.value?.pages??[],placements:ye.value,"reference-placements":be.value,"selected-placement-id":v.value,readonly:R.value,resizable:e.resizable,"seal-size-limit":p.value,"seal-type-options":e.sealTypeOptions,zoom:C.value,"preview-loading-keys":we.value,"preview-error-map":Te.value,"active-page-index":_.value,"min-zoom":e.minZoom,"max-zoom":e.maxZoom,"font-base-url":e.contractFontBaseUrl,onSelect:n[1]||=e=>v.value=e,onRetry:Ke,onAdd:n[2]||=(e,t,n,r)=>W(e,{signLeft:t,signTop:n,pageIndex:r}),onUpdate:n[3]||=e=>Ie(e.id,e),onRemove:G,onVisiblePages:Me,onViewPage:Ae,onPageChange:je,onZoomChange:Ee,onTemplateStatus:He},null,8,[`file`,`pages`,`placements`,`reference-placements`,`selected-placement-id`,`readonly`,`resizable`,`seal-size-limit`,`seal-type-options`,`zoom`,`preview-loading-keys`,`preview-error-map`,`active-page-index`,`min-zoom`,`max-zoom`,`font-base-url`]),pe.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:1,class:(0,c.normalizeClass)([`gd-ant-contract-signing-location__inspector-wrap`,{"is-collapsed":T.value}])},[(0,c.createVNode)((0,c.unref)(l.Tooltip),{title:T.value?`展开属性栏`:`收起属性栏`},{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`button`,{type:`button`,class:`gd-ant-contract-signing-location__panel-handle`,"aria-label":T.value?`展开属性栏`:`收起属性栏`,"aria-expanded":!T.value,onClick:n[4]||=e=>T.value=!T.value},[T.value?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.RightOutlined),{key:1,"aria-hidden":`true`}))],8,se)]),_:1},8,[`title`]),(0,c.createElementVNode)(`div`,ce,[(0,c.createVNode)(a.default,{placement:z.value,page:xe.value,pages:I.value?.pages??[],placements:ye.value,readonly:R.value,resizable:e.resizable,"seal-size-limit":p.value,"seal-type-options":e.sealTypeOptions,"allowed-placement-types":e.allowedPlacementTypes,"size-profile":e.sizeProfile,onAdd:W,onUpdate:n[5]||=e=>z.value&&Ie(z.value.id,e),onDuplicate:Le,onRemove:G,onLocate:Fe},null,8,[`placement`,`page`,`pages`,`placements`,`readonly`,`resizable`,`seal-size-limit`,`seal-type-options`,`allowed-placement-types`,`size-profile`])])],2)):(0,c.createCommentVNode)(``,!0)],2)],6))}});exports.default=le;
|
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=require(`./ContractTemplateSingleRenderer.vue.cjs`).default;exports.default=e;
|
|
@@ -0,0 +1 @@
|
|
|
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`),ee=require(`@vueuse/core`),l=require(`@ant-design/icons-vue`);var te={key:2,class:`gd-contract-template-renderer__empty`},ne=[`data-highlighted-variable-key`],re={class:`gd-contract-template-renderer__pages`},ie=[`aria-label`,`aria-expanded`],ae={class:`gd-contract-template-renderer__panel-clip`},oe={class:`gd-contract-template-renderer__panel`},se={class:`gd-contract-template-renderer__panel-head`},ce={class:`gd-contract-template-renderer__panel-head-row`},le={class:`gd-contract-template-renderer__panel-head-actions`},ue={class:`gd-contract-template-renderer__field-group-head`},de={class:`gd-contract-template-renderer__field-group-items`},fe=[`data-field-key`],pe=.5,me=1.5,u=.1,he=3e3,d=(0,s.defineComponent)({name:`ContractTemplateSingleRenderer`,__name:`ContractTemplateSingleRenderer`,props:{files:{},activeFileId:{},valuesByFile:{},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:``},contractFontBaseUrl:{default:void 0}},emits:[`update:activeFileId`,`update:valuesByFile`,`update:values`,`change`,`validate`,`submit`,`update:zoom`,`control-warning`],setup(d,{expose:ge,emit:_e}){let f=d,p=_e,ve=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],ye=(0,s.ref)(),m=(0,s.ref)(),h=(0,s.ref)(),g=(0,s.ref)(n.normalizeRenderValues(f.template,f.values)),be=(0,s.ref)({...g.value}),_=(0,s.ref)(!1),v=(0,s.ref)([]),y=(0,s.ref)(!1),b=(0,s.ref)(!1),x=(0,s.ref)(``),S=(0,s.ref)(``),C=(0,s.ref)(``),xe=(0,s.ref)(0),w=(0,s.ref)(mt(f.zoom)),T=(0,s.ref)(``),E=(0,s.ref)(`all`),D=(0,s.ref)(!1),O=(0,s.ref)(new Map),k=new Map,Se=new Map,A=new Map,j=new Set,{width:Ce}=(0,ee.useElementSize)(m),we=(0,s.computed)(()=>f.readonly||f.disabled),M=(0,s.computed)(()=>n.validateTemplateRenderStructure(f.template)),N=(0,s.computed)(()=>_.value?v.value:M.value),P=(0,s.computed)(()=>(Array.isArray(f.template?.variables)?f.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Te=(0,s.computed)(()=>{let e={...g.value};return P.value.forEach(n=>{let r=Je(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),Ee=(0,s.computed)(()=>P.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),De=(0,s.computed)(()=>{let e=new Map;return N.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),F=(0,s.computed)(()=>{let e=f.interactionMode===`panel`;return n.buildTemplateRenderPages(f.template,e?Te.value:be.value,{readonly:f.readonly,disabled:f.disabled,mode:e?`display`:`control`})}),Oe=(0,s.computed)(()=>{let e=new Map,t=new Set(P.value.map(e=>e.key));return F.value.forEach(n=>{ct(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),I=(0,s.computed)(()=>P.value.filter(rt)),ke=(0,s.computed)(()=>{let e=F.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 P.value.forEach(e=>{let r=t.get(Oe.value.get(e.key)??``)??n;r.allVariables.push(e),rt(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}))}),L=(0,s.computed)(()=>F.value.length>0),R=(0,s.computed)(()=>P.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),z=(0,s.computed)(()=>P.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Ae=(0,s.computed)(()=>P.value.length?Math.round(R.value/P.value.length*100):0),je=(0,s.computed)(()=>_.value&&v.value.length===0),Me=(0,s.computed)(()=>_.value?je.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:M.value.length?`模板存在 ${M.value.length} 个问题,已安全降级展示`:``),Ne=(0,s.computed)(()=>_.value?N.value.length>0||b.value:M.value.length>0);(0,s.watch)(()=>f.template,e=>{B(n.normalizeRenderValues(e,f.values),!1),W();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(C.value)||(C.value=t.find(Boolean)??``),S.value&&!P.value.some(e=>e.key===S.value)&&We()},{deep:!0}),(0,s.watch)(()=>[f.template?.variables,f.optionResolver,f.requester,f.allowedRemoteOrigins,f.remoteRequestTimeoutMs,f.remoteOptionsCacheTtlMs],()=>{Xe()},{deep:!0,immediate:!0}),(0,s.watch)(()=>f.values,e=>{let t=n.normalizeRenderValues(f.template,e);ht(t,g.value)||(B(t,!1,{refreshInlineHtml:f.interactionMode!==`inline`}),W())},{deep:!0}),(0,s.watch)(()=>f.interactionMode,e=>{e===`inline`&&(be.value={...g.value})}),(0,s.watch)(()=>f.collapsiblePanel,e=>{e||(D.value=!1)}),(0,s.watch)(()=>f.zoom,e=>w.value=mt(e)),(0,s.watch)(F,e=>{!C.value&&e.length&&(C.value=e[0].id)},{immediate:!0});function B(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(p(`update:values`,{...g.value}),p(`change`,{...g.value}))}function V(e,t){!e||we.value||(B({...g.value,[e]:t},!0,{refreshInlineHtml:f.interactionMode!==`inline`}),_.value&&U())}function Pe(e){if(f.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`?V(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?V(n,t.value===``?void 0:t.valueAsNumber):V(n,t.value))}function Fe(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&&Y(r)}function Ie(e){let t=F.value.find(t=>t.id===e.pageId),n=P.value.some(t=>t.key===e.key);if(!(!t||!n||!ct(t.contentHtml).has(e.key))&&!(e.kind===`input`&&f.interactionMode!==`inline`)){if(C.value=e.pageId,e.kind===`input`){V(e.key,e.value);return}Y(e.key)}}function Le(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 H(){return{...g.value}}function Re(e){B(n.normalizeRenderValues(f.template,e))}function U(){let e=n.validateTemplateRenderValues(f.template,g.value);return G(e),p(`validate`,e),e}function ze(){let e=n.resolveTemplateRenderSubmitErrors(f.template,g.value,f.validateOnSubmit);if((f.validateOnSubmit||e.length)&&(G(e),p(`validate`,e)),e.length)return Ke(e[0]),!1;let t=H();return p(`submit`,t),t}function Be(){return B(n.buildInitialRenderValues(f.template)),W(),H()}function Ve(){we.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Be()})}function W(){_.value=!1,v.value=[],y.value=!1,b.value=!1,q()}function G(e){if(v.value=e,_.value=!0,y.value=!1,e.length){b.value=!1,q();return}He()}let K;function q(){K&&=(clearTimeout(K),void 0)}function He(){q(),b.value=!0,K=setTimeout(()=>{b.value=!1,K=void 0},he)}function J(e){Y(e,!0)}function Ue(e){f.interactionMode===`panel`&&(D.value&&=!1,P.value.some(t=>t.key===e)&&!I.value.some(t=>t.key===e)&&it())}function Y(e,t=!1){if(!e)return;Ue(e),S.value=e,x.value=e;let n=Oe.value.get(e);n&&(C.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{Ge(e);let r=n?m.value?.querySelector(`[data-render-page-id="${$(n)}"]`):void 0;t&&r?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),f.interactionMode===`panel`&&h.value?.querySelector(`[data-field-key="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function We(){S.value=``,x.value=``,Ge(``)}function Ge(e){m.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function Ke(e){e.variableKey?J(e.variableKey):e.pageId&&pt(e.pageId)}function qe(e){return De.value.get(e)??[]}function X(e){return O.value.get(e.key)??{options:e.options??[],loading:!1}}function Je(e){let t=e.componentKey||e.type||``;return t?f.controlRegistry?.[t]:void 0}function Z(e,t){let n=new Map(O.value);n.set(e,t),O.value=n}function Ye(e){p(`control-warning`,e)}async function Xe(){k.forEach(e=>e.abort()),k.clear(),Se.clear(),j.clear();let e=Array.isArray(f.template?.variables)?f.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 Ze(e,t):Z(e.key,{options:t,loading:!1}),e.type===`custom`&&!Je(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;j.has(n)||(j.add(n),Ye({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function Ze(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),Z(e.key,{options:n,loading:!0});let a=Qe(e),o=Date.now(),s=Se.get(a);if(s&&s.expiresAt>o){Z(e.key,{options:s.options,loading:!1}),k.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,f.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=A.get(a);o||(o=$e(e,r,c,i),A.set(a,o),o.finally(()=>{A.get(a)===o&&A.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let ee=Math.max(0,Number(f.remoteOptionsCacheTtlMs)||0);ee>0&&Se.set(a,{options:s,expiresAt:Date.now()+ee}),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}),Ye({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function Qe(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function $e(e,n,r,i){let a;if(n.kind===`resolver`){if(!f.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await f.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,f.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!f.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,f.remoteRequestTimeoutMs);a=await et(f.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 et(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 tt(e){let t=X(e);return{variable:e,value:g.value[e.key],errors:qe(e.key),active:S.value===e.key,readonly:f.readonly,disabled:f.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>V(e.key,t),focusVariable:()=>J(e.key)}}function nt(){let e=P.value;if(!e.length)return;let t=e.findIndex(e=>e.key===S.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(g.value[i.key])){J(i.key);return}}}function rt(e){let t=T.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?E.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):E.value===`error`?qe(e.key).length>0:!0:!1}function it(){T.value=``,E.value=`all`}function at(e,t){let n=I.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)(()=>ot(i)))}function ot(e){(h.value?.querySelector(`[data-field-key="${$(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function st(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(),at(n,e.shiftKey?-1:1))}function ct(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 lt(){!f.collapsiblePanel||f.interactionMode!==`panel`||(D.value=!D.value)}function Q(e){let t=mt(e);return w.value=t,p(`update:zoom`,t),t}function ut(){return Q(1)}function dt(){return w.value}function ft(){let e=Math.max(...F.value.map(e=>e.width),1);return Q(Math.max(0,Ce.value-48)/e)}function pt(e){e&&(C.value=e,(0,s.nextTick)(()=>{m.value?.querySelector(`[data-render-page-id="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function mt(e){let t=Number(e);return Number.isFinite(t)?Math.min(me,Math.max(pe,Math.round(t*100)/100)):1}function $(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function ht(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function gt(e){!(e.ctrlKey||e.metaKey)||!L.value||(e.preventDefault(),Q(e.deltaY>0?w.value-u:w.value+u))}let _t;function vt(){_t?.removeEventListener(`wheel`,gt),_t=void 0}function yt(e){vt(),e&&(e.addEventListener(`wheel`,gt,{passive:!1}),_t=e)}return(0,s.watch)(m,e=>{yt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{vt(),q(),k.forEach(e=>e.abort()),k.clear()}),ge({showValidation:G,focusError:e=>{Ke(e),e.variableKey&&(0,s.nextTick)(()=>ot(e.variableKey))},getValues:H,setValues:Re,validate:U,submit:ze,resetValues:Be,scrollToVariable:J,setZoom:Q,resetZoom:ut,getZoom:dt,fitWidth:ft,scrollToPage:pt}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ye,class:(0,s.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":d.disabled,"is-readonly":d.readonly,"is-panel":d.interactionMode===`panel`,"is-inline":d.interactionMode===`inline`}]),onClick:Fe,onKeydown:Le,onInput:Pe,onChange:Pe},[(0,s.renderSlot)(e.$slots,`fileBar`),L.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:d.title,"filled-count":R.value,"total-count":P.value.length,"required-missing-count":z.value,zoom:w.value,pages:F.value,"active-page-id":C.value,"min-zoom":pe,"max-zoom":me,"show-toolbar":d.showToolbar,"show-validate-button":d.showValidateButton,"show-reset-button":d.showResetButton,"show-submit-button":d.showSubmitButton,"show-panel-toggle":d.interactionMode===`panel`&&d.collapsiblePanel,"panel-collapsed":D.value,readonly:d.readonly,disabled:d.disabled,onZoomIn:t[0]||=e=>Q(w.value+u),onZoomOut:t[1]||=e=>Q(w.value-u),onResetZoom:ut,onFitWidth:ft,onSelectPage:pt,onValidate:U,onReset:Ve,onSubmit:ze,onTogglePanel:lt},{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),Ne.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:je.value,summary:Me.value,errors:N.value,expanded:y.value,onToggle:t[2]||=e=>y.value=!y.value,onFocusError:Ke},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),L.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,class:(0,s.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":d.interactionMode===`inline`}])},[(0,s.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:m,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":x.value},[(0,s.createElementVNode)(`div`,re,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(F.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:F.value.length,zoom:w.value,"show-meta":d.showPageMeta,"font-base-url":d.contractFontBaseUrl,"active-key":x.value,"scroll-request":xe.value,onInteraction:Ie},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`]))),128))])],8,ne),d.interactionMode===`panel`?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":D.value&&d.collapsiblePanel}])},[d.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:D.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":D.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!D.value,onClick:t[3]||=e=>D.value=!D.value},[D.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(l.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(l.RightOutlined),{key:1,"aria-hidden":`true`}))],8,ie)]),_:1},8,[`title`])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,ae,[(0,s.createElementVNode)(`aside`,oe,[(0,s.createElementVNode)(`div`,se,[(0,s.createElementVNode)(`div`,ce,[(0,s.createElementVNode)(`div`,null,[t[6]||=(0,s.createElementVNode)(`strong`,null,`填写项`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(R.value)+` / `+(0,s.toDisplayString)(P.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(z.value?`${z.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:T.value,"onUpdate:value":t[4]||=e=>T.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(l.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,le,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:E.value,"onUpdate:value":t[5]||=e=>E.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:ve},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!Ee.value,onClick:nt},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:Ae.value,size:`small`,"show-info":!1},null,8,[`percent`])]),I.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:h,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:st},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(ke.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,s.createElementVNode)(`div`,ue,[(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`,de,[((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},tt(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:qe(t.key),active:S.value===t.key,readonly:d.readonly,disabled:d.disabled,options:X(t).options,loading:X(t).loading,"load-error":X(t).error,registration:Je(t),"selector-http":d.selectorHttp,"selector-url-prefix":d.selectorUrlPrefix,onUpdateValue:e=>V(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,fe))),128))])]))),128))],544)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:P.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[T.value||E.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:it},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[T.value||E.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`,te,[(0,s.createVNode)((0,s.unref)(c.Empty),{description:`暂无可渲染的合同页面`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=d;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./composables/use-template-designer.cjs`),r=require(`./composables/use-page-authoring.cjs`),i=require(`./extensions/template-variable.cjs`),a=require(`./utils/content-image.cjs`),o=require(`./extensions/editor-extensions.cjs`),s=require(`./utils/context-variable.cjs`),ee=require(`./utils/block-style.cjs`),te=require(`./ContractTemplatePageDecorations.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),u=require(`@tiptap/vue-3`),ne=require(`@tiptap/core`),d=require(`@tiptap/pm/tables`),f=require(`@tiptap/pm/state`);var p={class:`gd-contract-template-designer__page-title`},m=`application/x-gd-contract-variable-move`,h=8,g=(0,c.defineComponent)({name:`ProContractTemplateDesignerPage`,__name:`DesignerPage`,props:{page:{},pageIndex:{},pageSize:{},pageDecorations:{default:void 0},totalPages:{default:1},variables:{},selectedVariableKey:{default:``},active:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},zoom:{default:1},processImageFile:{type:Function,default:void 0},searchQuery:{default:``},searchMatchCase:{type:Boolean,default:!1},activeSearchMatch:{default:void 0}},emits:[`page-update`,`variable-drop`,`variable-select`,`variable-move-blocked`,`editor-focus`,`editor-state-change`,`editor-context-menu`,`word-paste`],setup(g,{expose:re,emit:ie}){let _=g,v=ie,y=(0,c.computed)(()=>_.readonly||_.disabled),b=(0,c.ref)();function ae(e){let t=e.filter(Boolean).join(`、`);return typeof window>`u`?!1:new Promise(e=>{l.Modal.confirm({title:`粘贴内容包含不兼容字体`,content:`检测到 ${t||`外部`} 字体。为保证 Mac 与 Windows 排版一致,将统一转换为合同标准字体(GD Contract Latin + 系统宋体)。是否继续粘贴?`,okText:`继续粘贴`,cancelText:`取消粘贴`,onOk:()=>e(!0),onCancel:()=>e(!1)})})}let x=o.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:_.processImageFile,confirmExternalFontPaste:ae,getZoom:()=>Math.max(.1,_.zoom||1)}),S=(0,u.useEditor)({content:_.page.contentHtml,editable:!y.value,extensions:x,editorProps:{attributes:{class:`gd-contract-template-designer__editor-prose`},handleClick:(e,t,n)=>{let r=(n.target instanceof HTMLElement?n.target.closest(`[data-template-variable]`):void 0)?.dataset.key;if(!r)return!1;let i=_.variables.find(e=>e.key===r);return i&&v(`variable-select`,i.key),!1},handleDOMEvents:{contextmenu:(e,t)=>{if(y.value)return!1;let n=B(e,t.target);if(n)return t.preventDefault(),L({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=S.value?.state.selection,i=r instanceof d.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=s.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||A(t.clientX,t.clientY,t.target))?(V({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(F({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0)},dragstart:(e,t)=>y.value?(t.preventDefault(),!0):(t.target instanceof HTMLElement?t.target:null)?.closest(`[data-template-variable]`)?(t.dataTransfer?.setData(m,_.page.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`),b.value?.classList.add(`is-variable-dragging`),!1):!1,dragend:()=>(b.value?.classList.remove(`is-variable-dragging`),!1),drop:(e,t)=>{if(y.value)return t.preventDefault(),t.stopPropagation(),!0;let n=t.dataTransfer?.getData(m);return!n||n===_.page.id?!1:(t.preventDefault(),v(`variable-move-blocked`,_.page.id),!0)}},handleKeyDown:(e,t)=>{if(y.value||!ue(t))return!1;let n=S.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=z();if(i){let e=n.view.coordsAtPos(r.from);return L({pageId:_.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof d.CellSelection;if(s.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=fe();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(d.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return V({pageId:_.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return F({pageId:_.page.id,clientX:o.left,clientY:o.bottom}),!0}},onUpdate:({editor:e})=>{v(`page-update`,{..._.page,contentHtml:e.getHTML(),contentJson:e.getJSON()}),W()},onFocus:()=>{v(`editor-focus`,_.page.id),W()},onBlur:W,onSelectionUpdate:W,onCreate:({editor:e})=>{e.on(`contract-word-paste`,E),W()}}),{findText:oe,revealSearchMatch:C,replaceSearchMatches:w,focusHeading:T}=r.usePageAuthoring({editor:()=>S.value,readonly:()=>y.value,search:()=>({query:_.searchQuery,matchCase:_.searchMatchCase,activeMatch:_.activeSearchMatch})});function E(e){v(`word-paste`,e)}function D(e){if(typeof e==`number`&&Number.isFinite(e))return e;let t=String(e||``).match(/(\d+(\.\d+)?)/);return t?Number(t[1]):void 0}function O(){if(!S.value)return``;let{from:e,to:t}=S.value.state.selection;return S.value.state.doc.textBetween(e,t,`
|
|
2
|
-
`)}function se(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);if(Math.abs(r.top-n.top)>h)return;let i=Math.abs(r.left-n.left)/K.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ce(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof d.CellSelection||t instanceof f.NodeSelection))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);return{top:Math.min(n.top,r.top),bottom:Math.max(n.bottom,r.bottom),left:Math.min(n.left,r.left),right:Math.max(n.left,r.right)}}catch{return}}function le(){let e=S.value;if(!e)return``;let t=e.state.selection.$from,n=t.pos;for(let e=t.depth;e>0;--e){let r=t.node(e).type.name;if(r===`paragraph`||r===`heading`){n=t.start(e);break}}return e.state.doc.textBetween(n,e.state.selection.from,``)}function ue(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function k(e){for(let t=e.depth;t>0;--t){let n=e.node(t).type.spec.tableRole;if(n===`cell`||n===`header_cell`)return e.before(t)}}function de(e,t){let n=S.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return k(n.state.doc.resolve(r))}function fe(){let e=S.value;if(e)return k(e.state.selection.$from)}function A(e,t,n){let r=S.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof d.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=de(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(d.CellSelection.create(r.state.doc,a))),!0):!1}function j(){let e=S.value,t=e?.isActive(`table`)?e.can():void 0,n=e=>!!(t&&e(t));return{addRowBefore:n(e=>e.addRowBefore()),addRowAfter:n(e=>e.addRowAfter()),deleteRow:n(e=>e.deleteRow()),addColumnBefore:n(e=>e.addColumnBefore()),addColumnAfter:n(e=>e.addColumnAfter()),deleteColumn:n(e=>e.deleteColumn()),mergeCells:n(e=>e.mergeCells()),splitCell:n(e=>e.splitCell()),alignLeft:n(e=>e.setCellAttribute(`textAlign`,`left`)),alignCenter:n(e=>e.setCellAttribute(`textAlign`,`center`)),alignRight:n(e=>e.setCellAttribute(`textAlign`,`right`)),toggleHeaderRow:n(e=>e.toggleHeaderRow()),toggleHeaderColumn:n(e=>e.toggleHeaderColumn()),deleteTable:n(e=>e.deleteTable())}}function M(){let e=S.value,t=e?.state.selection;if(!e||!(t instanceof d.CellSelection))return`left`;let n=new Set;return t.forEachCell(e=>{let t=e.attrs.textAlign;n.add(t===`center`||t===`right`?t:`left`)}),n.size===1?n.values().next().value??`left`:`mixed`}function N(e=S.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function P(e){let t=S.value;if(!t)return 0;let n=N(t.state.doc),r=n,i=e=>{r=N(e.doc)};return e===`delete-table-row`?(0,d.deleteRow)(t.state,i):e===`delete-table-column`?(0,d.deleteColumn)(t.state,i):(0,d.deleteTable)(t.state,i),Math.max(0,n-r)}function F(e){let t=S.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?se():void 0,leadingText:le()})}function I(e,t){F({pageId:_.page.id,clientX:e,clientY:t})}function L(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function R(e,t){if(!(e.type.name!==`image`||typeof e.attrs.src!=`string`||!e.attrs.src))return{position:t,src:e.attrs.src,alt:typeof e.attrs.alt==`string`?e.attrs.alt:void 0,title:typeof e.attrs.title==`string`?e.attrs.title:void 0,width:a.normalizeContractImageDimension(e.attrs.width),height:a.normalizeContractImageDimension(e.attrs.height)}}function z(){let e=S.value?.state.selection;if(e instanceof f.NodeSelection)return R(e.node,e.from)}function B(e,t){let n=t instanceof HTMLElement?t.closest(`[data-template-variable], img[src]`):null;if(n)try{let t=e.posAtDOM(n,0),r=e.state.doc.nodeAt(t);return!r||r.type.name!==`templateVariable`&&r.type.name!==`image`?void 0:(r.type.name===`templateVariable`&&typeof r.attrs.key==`string`&&v(`variable-select`,r.attrs.key),(!(e.state.selection instanceof f.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(f.NodeSelection.create(e.state.doc,t))),R(r,t))}catch{return}}function V(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:j(),activeAlignment:M(),affectedVariableCounts:{deleteRow:P(`delete-table-row`),deleteColumn:P(`delete-table-column`),deleteTable:P(`delete-table`)}})}function pe(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function H(){let e=S.value;if(!e)return[];let{doc:t,selection:n}=e.state,r=[],i=e=>{e.type.name===`paragraph`?r.push(`paragraph`):e.type.name===`heading`&&pe(e.attrs.level)&&r.push(e.attrs.level)};if(n.empty)for(let e=n.$from.depth;e>0;e--){let t=n.$from.node(e);if(t.type.name===`paragraph`||t.type.name===`heading`){i(t);break}}else t.nodesBetween(n.from,n.to,e=>(i(e),!0));return Array.from(new Set(r))}function me(){let e=H();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function he(){return H().length>1}function ge(){return[`center`,`right`].find(e=>S.value?.isActive(`heading`,{textAlign:e})||S.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function U(){let e=S.value,t=t=>!!e?.isActive(t),n=e?.getAttributes(`textStyle`)??{};return{isFocused:!!e?.isFocused,canUndo:!!e?.can().undo(),canRedo:!!e?.can().redo(),isBold:t(`bold`),isItalic:t(`italic`),isUnderline:t(`underline`),isBulletList:t(`bulletList`),isOrderedList:t(`orderedList`),isTableActive:t(`table`),currentHeadingLevel:me(),hasMixedBlockFormats:he(),textAlign:ge(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:D(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:O(),selectedContentImage:z()}}function W(){v(`editor-state-change`,_.page.id,U())}(0,c.watch)(y,e=>{S.value?.setEditable(!e),W()}),(0,c.watch)(()=>_.page.contentHtml,e=>{!S.value||e===S.value.getHTML()||(S.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W())});let G=(0,c.computed)(()=>{let e=t.normalizePageDecorations(_.pageDecorations),n=_.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return{width:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-r-i)}px`}}),K=(0,c.computed)(()=>Math.max(.1,_.zoom||1)),_e=(0,c.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*K.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*K.value)}px`})),ve=(0,c.computed)(()=>({"--gd-contract-page-zoom":String(K.value)})),ye=(0,c.computed)(()=>n.resolvePageSize(_.pageSize));function be(e){if(_.readonly||_.disabled){e.preventDefault(),e.stopPropagation();return}let t=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(t){e.preventDefault(),e.stopPropagation(),v(`variable-drop`,_.page.id,t,e.clientX,e.clientY);return}let n=e.dataTransfer?.getData(m);n&&n!==_.page.id&&(e.preventDefault(),e.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function xe(e,t){let n=S.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return i.insertTemplateVariableNode(n,e,r),$(),q()}function Se(e,t){let n=S.value;if(n)return o.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),q()}function Ce(e){let t=S.value,n=t?.state.selection;if(!t||!(n instanceof f.NodeSelection)||n.node.type.name!==`image`)return;let r={...n.node.attrs},i=!1;if([`width`,`height`].forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t]===void 0?null:a.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let o=t.state.tr.setNodeMarkup(n.from,void 0,r);return o.setSelection(f.NodeSelection.create(o.doc,n.from)),t.view.dispatch(o),q()}function we(){let e=S.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function q(){return{..._.page,pageSize:ye.value,contentHtml:S.value?.getHTML()??_.page.contentHtml,contentJson:S.value?.getJSON()??_.page.contentJson}}function J(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function Te(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Ee(e){return(0,ne.generateHTML)(J(e),x)}function De(){if(_.pageDecorations){let e=t.normalizePageDecorations(_.pageDecorations),n=_.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return Math.max(120,_.pageSize.height-r-i)}let e=b.value;if(!e)return _.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,_.pageSize.height-r-i)}function Oe(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=K.value;return Array.from(e.children).map(e=>{let r=e.getBoundingClientRect();return{top:(r.top-t.top)/n,height:r.height/n}})}function Y(){if(!S.value)return;let e=S.value.getJSON();return n.splitPageContentByMeasurements(e.content,Oe(),De())}function ke(){return!!Y()}function Ae(){if(!S.value)return;let e=Y();if(e)return S.value.commands.setContent(J(e.currentContent),{emitUpdate:!1}),{page:q(),overflowContent:e.overflowContent,overflowHtml:Ee(e.overflowContent)}}function je(e){if(!S.value||!e.length)return;let t=S.value.getJSON().content,n=[...e,...Te(t)?[]:t??[]];return S.value.commands.setContent(J(n),{emitUpdate:!1}),q()}function X(e,t){let n=[];return e.descendants((e,r)=>{e.type.name===`templateVariable`&&e.attrs.key===t&&n.push({node:e,pos:r})}),n}function Me(e,t=e.key){if(!S.value)return;let n=i.buildTemplateVariableAttrs(e),r=!1;return S.value.commands.command(({tr:e,state:i,dispatch:a})=>(X(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),$(),r?q():void 0}function Ne(e){if(!S.value)return;let t=0;return S.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=X(r.doc,e).map(({node:e,pos:t})=>({from:t,to:t+e.nodeSize})).sort((e,t)=>t.from-e.from);return a.forEach(e=>n.delete(e.from,e.to)),t=a.length,t&&i?.(n),t>0}),t?q():void 0}function Z(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function Q(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function Pe(e){Z();let t=Q(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),S.value?.commands.focus(),!0):!1}function $(){Z(),Q(_.selectedVariableKey)?.classList.add(`is-active`)}function Fe(t){let r=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),i=S.value;if(!r||!i)return;let a=i.chain().focus().clearNodes();r.headingLevel?a.setHeading({level:r.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(r.textAlign).setFontSize(`${r.fontSize}px`).setFontFamily(r.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY).setColor(n.DEFAULT_FIELD_STYLE.color||`#1f2937`),r.bold?a.setBold():a.unsetBold(),r.italic?a.setItalic():a.unsetItalic(),r.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,c.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,c.nextTick)($)},{deep:!0,flush:`post`});function Ie(e){y.value||(e.type===`apply-block-style`?S.value&&ee.applyContractTemplateBlockStyle(S.value,e.format):e.type===`apply-text-style-preset`?Fe(e.preset):o.runContractTemplateEditorCommand(S.value,e),W())}function Le(){S.value?.commands.focus()}function Re(){return S.value?.getJSON()}function ze(){return S.value?.getHTML()??_.page.contentHtml}function Be(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?Q(t.key):void 0;$(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function Ve(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,c.onBeforeUnmount)(()=>{S.value?.off(`contract-word-paste`,E),S.value?.destroy()}),re({findText:oe,revealSearchMatch:C,replaceSearchMatches:w,focusHeading:T,focus:Le,getHTML:ze,getJSON:Re,getEditorState:U,getTableCommandCapabilities:j,getAffectedVariableCount:P,insertVariable:xe,insertContentImage:Se,updateSelectedContentImage:Ce,getSelectionRange:we,getSelectionViewportRect:ce,requestTextContextMenu:I,hasOverflowContent:ke,updateVariable:Me,removeVariable:Ne,splitOverflowContent:Ae,prependContent:je,runCommand:Ie,scrollIntoField:Be,scrollIntoVariable:Pe,scrollIntoPage:Ve}),(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,c.normalizeStyle)(_e.value)},[(0,c.createElementVNode)(`div`,{class:(0,c.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,c.normalizeStyle)(ve.value)},[(0,c.createElementVNode)(`header`,p,[(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,c.createElementVNode)(`span`,null,`第 `+(0,c.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,c.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,c.toDisplayString)(g.pageSize.width)+` × `+(0,c.toDisplayString)(g.pageSize.height),1)]),(0,c.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,c.normalizeStyle)(G.value),onDragover:t[0]||=(0,c.withModifiers)(()=>{},[`prevent`]),onDrop:be,onClick:t[1]||=e=>v(`editor-focus`,g.page.id)},[(0,c.createVNode)(te.default,{decorations:g.pageDecorations,"page-number":g.pageIndex+1,"total-pages":g.totalPages,variables:g.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,c.unref)(S)?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,c.unref)(S)},null,8,[`editor`])):(0,c.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=g;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./composables/use-template-designer.cjs`),r=require(`./composables/use-page-authoring.cjs`),i=require(`./extensions/template-variable.cjs`),a=require(`./utils/content-image.cjs`),o=require(`./extensions/editor-extensions.cjs`),s=require(`./utils/context-variable.cjs`),ee=require(`./utils/block-style.cjs`),te=require(`./ContractTemplatePageDecorations.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),u=require(`@tiptap/vue-3`),ne=require(`@tiptap/core`),d=require(`@tiptap/pm/tables`),f=require(`@tiptap/pm/state`);var p={class:`gd-contract-template-designer__page-title`},m=`application/x-gd-contract-variable-move`,h=8,g=(0,c.defineComponent)({name:`ProContractTemplateDesignerPage`,__name:`DesignerPage`,props:{page:{},pageIndex:{},pageSize:{},pageDecorations:{default:void 0},totalPages:{default:1},variables:{},selectedVariableKey:{default:``},active:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},zoom:{default:1},processImageFile:{type:Function,default:void 0},searchQuery:{default:``},searchMatchCase:{type:Boolean,default:!1},activeSearchMatch:{default:void 0}},emits:[`page-update`,`variable-drop`,`variable-select`,`variable-move-blocked`,`editor-focus`,`editor-ready`,`editor-state-change`,`editor-context-menu`,`word-paste`],setup(g,{expose:re,emit:ie}){let _=g,v=ie,y=(0,c.computed)(()=>_.readonly||_.disabled),b=(0,c.ref)();function ae(e){let t=e.filter(Boolean).join(`、`);return typeof window>`u`?!1:new Promise(e=>{l.Modal.confirm({title:`粘贴内容包含不兼容字体`,content:`检测到 ${t||`外部`} 字体。为保证 Mac 与 Windows 排版一致,将统一转换为合同标准字体(GD Contract Latin + 系统宋体)。是否继续粘贴?`,okText:`继续粘贴`,cancelText:`取消粘贴`,onOk:()=>e(!0),onCancel:()=>e(!1)})})}let x=o.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:_.processImageFile,confirmExternalFontPaste:ae,getZoom:()=>Math.max(.1,_.zoom||1)}),S=(0,u.useEditor)({content:_.page.contentHtml,editable:!y.value,extensions:x,editorProps:{attributes:{class:`gd-contract-template-designer__editor-prose`},handleClick:(e,t,n)=>{let r=(n.target instanceof HTMLElement?n.target.closest(`[data-template-variable]`):void 0)?.dataset.key;if(!r)return!1;let i=_.variables.find(e=>e.key===r);return i&&v(`variable-select`,i.key),!1},handleDOMEvents:{contextmenu:(e,t)=>{if(y.value)return!1;let n=B(e,t.target);if(n)return t.preventDefault(),L({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=S.value?.state.selection,i=r instanceof d.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=s.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||A(t.clientX,t.clientY,t.target))?(V({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(F({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0)},dragstart:(e,t)=>y.value?(t.preventDefault(),!0):(t.target instanceof HTMLElement?t.target:null)?.closest(`[data-template-variable]`)?(t.dataTransfer?.setData(m,_.page.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`),b.value?.classList.add(`is-variable-dragging`),!1):!1,dragend:()=>(b.value?.classList.remove(`is-variable-dragging`),!1),drop:(e,t)=>{if(y.value)return t.preventDefault(),t.stopPropagation(),!0;let n=t.dataTransfer?.getData(m);return!n||n===_.page.id?!1:(t.preventDefault(),v(`variable-move-blocked`,_.page.id),!0)}},handleKeyDown:(e,t)=>{if(y.value||!ue(t))return!1;let n=S.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=z();if(i){let e=n.view.coordsAtPos(r.from);return L({pageId:_.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof d.CellSelection;if(s.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=fe();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(d.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return V({pageId:_.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return F({pageId:_.page.id,clientX:o.left,clientY:o.bottom}),!0}},onUpdate:({editor:e})=>{v(`page-update`,{..._.page,contentHtml:e.getHTML(),contentJson:e.getJSON()}),W()},onFocus:()=>{v(`editor-focus`,_.page.id),W()},onBlur:W,onSelectionUpdate:W,onCreate:({editor:e})=>{e.on(`contract-word-paste`,E),W(),v(`editor-ready`,_.page.id)}}),{findText:oe,revealSearchMatch:C,replaceSearchMatches:w,focusHeading:T}=r.usePageAuthoring({editor:()=>S.value,readonly:()=>y.value,search:()=>({query:_.searchQuery,matchCase:_.searchMatchCase,activeMatch:_.activeSearchMatch})});function E(e){v(`word-paste`,e)}function D(e){if(typeof e==`number`&&Number.isFinite(e))return e;let t=String(e||``).match(/(\d+(\.\d+)?)/);return t?Number(t[1]):void 0}function O(){if(!S.value)return``;let{from:e,to:t}=S.value.state.selection;return S.value.state.doc.textBetween(e,t,`
|
|
2
|
+
`)}function se(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);if(Math.abs(r.top-n.top)>h)return;let i=Math.abs(r.left-n.left)/K.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ce(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof d.CellSelection||t instanceof f.NodeSelection))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);return{top:Math.min(n.top,r.top),bottom:Math.max(n.bottom,r.bottom),left:Math.min(n.left,r.left),right:Math.max(n.left,r.right)}}catch{return}}function le(){let e=S.value;if(!e)return``;let t=e.state.selection.$from,n=t.pos;for(let e=t.depth;e>0;--e){let r=t.node(e).type.name;if(r===`paragraph`||r===`heading`){n=t.start(e);break}}return e.state.doc.textBetween(n,e.state.selection.from,``)}function ue(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function k(e){for(let t=e.depth;t>0;--t){let n=e.node(t).type.spec.tableRole;if(n===`cell`||n===`header_cell`)return e.before(t)}}function de(e,t){let n=S.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return k(n.state.doc.resolve(r))}function fe(){let e=S.value;if(e)return k(e.state.selection.$from)}function A(e,t,n){let r=S.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof d.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=de(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(d.CellSelection.create(r.state.doc,a))),!0):!1}function j(){let e=S.value,t=e?.isActive(`table`)?e.can():void 0,n=e=>!!(t&&e(t));return{addRowBefore:n(e=>e.addRowBefore()),addRowAfter:n(e=>e.addRowAfter()),deleteRow:n(e=>e.deleteRow()),addColumnBefore:n(e=>e.addColumnBefore()),addColumnAfter:n(e=>e.addColumnAfter()),deleteColumn:n(e=>e.deleteColumn()),mergeCells:n(e=>e.mergeCells()),splitCell:n(e=>e.splitCell()),alignLeft:n(e=>e.setCellAttribute(`textAlign`,`left`)),alignCenter:n(e=>e.setCellAttribute(`textAlign`,`center`)),alignRight:n(e=>e.setCellAttribute(`textAlign`,`right`)),toggleHeaderRow:n(e=>e.toggleHeaderRow()),toggleHeaderColumn:n(e=>e.toggleHeaderColumn()),deleteTable:n(e=>e.deleteTable())}}function M(){let e=S.value,t=e?.state.selection;if(!e||!(t instanceof d.CellSelection))return`left`;let n=new Set;return t.forEachCell(e=>{let t=e.attrs.textAlign;n.add(t===`center`||t===`right`?t:`left`)}),n.size===1?n.values().next().value??`left`:`mixed`}function N(e=S.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function P(e){let t=S.value;if(!t)return 0;let n=N(t.state.doc),r=n,i=e=>{r=N(e.doc)};return e===`delete-table-row`?(0,d.deleteRow)(t.state,i):e===`delete-table-column`?(0,d.deleteColumn)(t.state,i):(0,d.deleteTable)(t.state,i),Math.max(0,n-r)}function F(e){let t=S.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?se():void 0,leadingText:le()})}function I(e,t){F({pageId:_.page.id,clientX:e,clientY:t})}function L(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function R(e,t){if(!(e.type.name!==`image`||typeof e.attrs.src!=`string`||!e.attrs.src))return{position:t,src:e.attrs.src,alt:typeof e.attrs.alt==`string`?e.attrs.alt:void 0,title:typeof e.attrs.title==`string`?e.attrs.title:void 0,width:a.normalizeContractImageDimension(e.attrs.width),height:a.normalizeContractImageDimension(e.attrs.height)}}function z(){let e=S.value?.state.selection;if(e instanceof f.NodeSelection)return R(e.node,e.from)}function B(e,t){let n=t instanceof HTMLElement?t.closest(`[data-template-variable], img[src]`):null;if(n)try{let t=e.posAtDOM(n,0),r=e.state.doc.nodeAt(t);return!r||r.type.name!==`templateVariable`&&r.type.name!==`image`?void 0:(r.type.name===`templateVariable`&&typeof r.attrs.key==`string`&&v(`variable-select`,r.attrs.key),(!(e.state.selection instanceof f.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(f.NodeSelection.create(e.state.doc,t))),R(r,t))}catch{return}}function V(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:j(),activeAlignment:M(),affectedVariableCounts:{deleteRow:P(`delete-table-row`),deleteColumn:P(`delete-table-column`),deleteTable:P(`delete-table`)}})}function pe(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function H(){let e=S.value;if(!e)return[];let{doc:t,selection:n}=e.state,r=[],i=e=>{e.type.name===`paragraph`?r.push(`paragraph`):e.type.name===`heading`&&pe(e.attrs.level)&&r.push(e.attrs.level)};if(n.empty)for(let e=n.$from.depth;e>0;e--){let t=n.$from.node(e);if(t.type.name===`paragraph`||t.type.name===`heading`){i(t);break}}else t.nodesBetween(n.from,n.to,e=>(i(e),!0));return Array.from(new Set(r))}function me(){let e=H();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function he(){return H().length>1}function ge(){return[`center`,`right`].find(e=>S.value?.isActive(`heading`,{textAlign:e})||S.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function U(){let e=S.value,t=t=>!!e?.isActive(t),n=e?.getAttributes(`textStyle`)??{};return{isFocused:!!e?.isFocused,canUndo:!!e?.can().undo(),canRedo:!!e?.can().redo(),isBold:t(`bold`),isItalic:t(`italic`),isUnderline:t(`underline`),isBulletList:t(`bulletList`),isOrderedList:t(`orderedList`),isTableActive:t(`table`),currentHeadingLevel:me(),hasMixedBlockFormats:he(),textAlign:ge(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:D(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:O(),selectedContentImage:z()}}function W(){v(`editor-state-change`,_.page.id,U())}(0,c.watch)(y,e=>{S.value?.setEditable(!e),W()}),(0,c.watch)(()=>_.page.contentHtml,e=>{!S.value||e===S.value.getHTML()||(S.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W())});let G=(0,c.computed)(()=>{let e=t.normalizePageDecorations(_.pageDecorations),n=_.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return{width:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-r-i)}px`}}),K=(0,c.computed)(()=>Math.max(.1,_.zoom||1)),_e=(0,c.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*K.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*K.value)}px`})),ve=(0,c.computed)(()=>({"--gd-contract-page-zoom":String(K.value)})),ye=(0,c.computed)(()=>n.resolvePageSize(_.pageSize));function be(e){if(_.readonly||_.disabled){e.preventDefault(),e.stopPropagation();return}let t=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(t){e.preventDefault(),e.stopPropagation(),v(`variable-drop`,_.page.id,t,e.clientX,e.clientY);return}let n=e.dataTransfer?.getData(m);n&&n!==_.page.id&&(e.preventDefault(),e.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function xe(e,t){let n=S.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return i.insertTemplateVariableNode(n,e,r),$(),q()}function Se(e,t){let n=S.value;if(n)return o.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),q()}function Ce(e){let t=S.value,n=t?.state.selection;if(!t||!(n instanceof f.NodeSelection)||n.node.type.name!==`image`)return;let r={...n.node.attrs},i=!1;if([`width`,`height`].forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t]===void 0?null:a.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let o=t.state.tr.setNodeMarkup(n.from,void 0,r);return o.setSelection(f.NodeSelection.create(o.doc,n.from)),t.view.dispatch(o),q()}function we(){let e=S.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function q(){return{..._.page,pageSize:ye.value,contentHtml:S.value?.getHTML()??_.page.contentHtml,contentJson:S.value?.getJSON()??_.page.contentJson}}function J(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function Te(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Ee(e){return(0,ne.generateHTML)(J(e),x)}function De(){if(_.pageDecorations){let e=t.normalizePageDecorations(_.pageDecorations),n=_.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return Math.max(120,_.pageSize.height-r-i)}let e=b.value;if(!e)return _.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,_.pageSize.height-r-i)}function Oe(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=K.value;return Array.from(e.children).map(r=>{let i=r.getBoundingClientRect(),a=r instanceof HTMLTableElement?r:r.querySelector(`:scope > table`),o=a?Array.from(a.rows).map(e=>{let r=e.getBoundingClientRect();return{top:(r.top-t.top)/n,height:r.height/n}}):void 0;return{top:(i.top-t.top)/n,height:i.height/n,...o?.length?{tableRows:o,trailingTextBlockHeight:Number.parseFloat(window.getComputedStyle(e).lineHeight)||28}:{}}})}function Y(){if(!S.value)return;let e=S.value.getJSON();return n.splitPageContentByMeasurements(e.content,Oe(),De())}function ke(){return!!Y()}function Ae(){if(!S.value)return;let e=Y();if(e)return S.value.commands.setContent(J(e.currentContent),{emitUpdate:!1}),{page:q(),overflowContent:e.overflowContent,overflowHtml:Ee(e.overflowContent)}}function je(e){if(!S.value||!e.length)return;let t=S.value.getJSON().content,n=[...e,...Te(t)?[]:t??[]];return S.value.commands.setContent(J(n),{emitUpdate:!1}),q()}function X(e,t){let n=[];return e.descendants((e,r)=>{e.type.name===`templateVariable`&&e.attrs.key===t&&n.push({node:e,pos:r})}),n}function Me(e,t=e.key){if(!S.value)return;let n=i.buildTemplateVariableAttrs(e),r=!1;return S.value.commands.command(({tr:e,state:i,dispatch:a})=>(X(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),$(),r?q():void 0}function Ne(e){if(!S.value)return;let t=0;return S.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=X(r.doc,e).map(({node:e,pos:t})=>({from:t,to:t+e.nodeSize})).sort((e,t)=>t.from-e.from);return a.forEach(e=>n.delete(e.from,e.to)),t=a.length,t&&i?.(n),t>0}),t?q():void 0}function Z(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function Q(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function Pe(e){Z();let t=Q(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),S.value?.commands.focus(),!0):!1}function $(){Z(),Q(_.selectedVariableKey)?.classList.add(`is-active`)}function Fe(t){let r=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),i=S.value;if(!r||!i)return;let a=i.chain().focus().clearNodes();r.headingLevel?a.setHeading({level:r.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(r.textAlign).setFontSize(`${r.fontSize}px`).setFontFamily(r.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY).setColor(n.DEFAULT_FIELD_STYLE.color||`#1f2937`),r.bold?a.setBold():a.unsetBold(),r.italic?a.setItalic():a.unsetItalic(),r.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,c.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,c.nextTick)($)},{deep:!0,flush:`post`});function Ie(e){y.value||(e.type===`apply-block-style`?S.value&&ee.applyContractTemplateBlockStyle(S.value,e.format):e.type===`apply-text-style-preset`?Fe(e.preset):o.runContractTemplateEditorCommand(S.value,e),W())}function Le(){S.value?.commands.focus()}function Re(){return S.value?.getJSON()}function ze(){return S.value?.getHTML()??_.page.contentHtml}function Be(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?Q(t.key):void 0;$(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function Ve(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,c.onBeforeUnmount)(()=>{S.value?.off(`contract-word-paste`,E),S.value?.destroy()}),re({findText:oe,revealSearchMatch:C,replaceSearchMatches:w,focusHeading:T,focus:Le,getHTML:ze,getJSON:Re,getEditorState:U,getTableCommandCapabilities:j,getAffectedVariableCount:P,insertVariable:xe,insertContentImage:Se,updateSelectedContentImage:Ce,getSelectionRange:we,getSelectionViewportRect:ce,requestTextContextMenu:I,hasOverflowContent:ke,updateVariable:Me,removeVariable:Ne,splitOverflowContent:Ae,prependContent:je,runCommand:Ie,scrollIntoField:Be,scrollIntoVariable:Pe,scrollIntoPage:Ve}),(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,c.normalizeStyle)(_e.value)},[(0,c.createElementVNode)(`div`,{class:(0,c.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,c.normalizeStyle)(ve.value)},[(0,c.createElementVNode)(`header`,p,[(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,c.createElementVNode)(`span`,null,`第 `+(0,c.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,c.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,c.toDisplayString)(g.pageSize.width)+` × `+(0,c.toDisplayString)(g.pageSize.height),1)]),(0,c.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,c.normalizeStyle)(G.value),onDragover:t[0]||=(0,c.withModifiers)(()=>{},[`prevent`]),onDrop:be,onClick:t[1]||=e=>v(`editor-focus`,g.page.id)},[(0,c.createVNode)(te.default,{decorations:g.pageDecorations,"page-number":g.pageIndex+1,"total-pages":g.totalPages,variables:g.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,c.unref)(S)?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(u.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,c.unref)(S)},null,8,[`editor`])):(0,c.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=g;
|
package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./types.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/image-url.cjs`),a=require(`./utils/template-renderer.cjs`),o=require(`./composables/use-fit-width-zoom.cjs`),s=require(`./utils/content-image.cjs`),ee=require(`./utils/signing-layout-presets.cjs`),te=require(`./utils/context-variable.cjs`),ne=require(`./DesignerPage.cjs`),re=require(`./TableContextMenu.cjs`),ie=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),ae=require(`./utils/template-tool-icons.cjs`),oe=require(`./ContractTemplateDesignerToolbar.cjs`),se=require(`./ContractTemplateAuthoringBar.cjs`),ce=require(`./composables/use-template-authoring.cjs`),le=require(`./ContractTemplateTextContextMenu.cjs`),ue=require(`./ContractTemplateTextBubbleMenu.cjs`),de=require(`./ContractTemplateImageContextMenu.cjs`),fe=require(`./ContractTemplatePreviewModal.cjs`),pe=require(`./ContractTemplateSubmitDataModal.cjs`),me=require(`./ContractTemplateVariableDataModal.cjs`),he=require(`./SigningLayoutCustomModal.cjs`),ge=require(`./composables/use-template-draft-cache.cjs`),_e=require(`./composables/use-auto-pagination.cjs`),ve=require(`./composables/use-designer-files.cjs`),c=require(`./composables/use-template-files.cjs`),ye=require(`./composables/use-draft-cache-session.cjs`),be=require(`./ContractTemplateFileBar.cjs`),xe=require(`./ContractTemplateDesignerSidebar.cjs`),Se=require(`./ContractTemplateDesignerInspector.cjs`),Ce=require(`./ContractTemplatePageDecorationsStudio.cjs`),l=require(`./utils/serialize-fingerprint.cjs`),we=require(`./utils/editor-state.cjs`),u=require(`./utils/context-menu-viewport.cjs`);let d=require(`vue`),Te=require(`ant-design-vue`),Ee=require(`@vueuse/core`),De=require(`@ant-design/icons-vue`);var Oe={key:2,class:`gd-contract-template-designer__validation`},ke={key:0,class:`gd-contract-template-designer__validation-list`},Ae=[`onClick`],je={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},Me=.5,Ne=1.5,Pe=.1,Fe=120,Ie=128,Le=108,Re=48,ze=24,Be=10,Ve=48,He=8,f=(0,d.defineComponent)({name:`ProContractTemplateDesigner`,__name:`ProContractTemplateDesigner`,props:{modelValue:{default:void 0},files:{},activeFileId:{},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},height:{default:760},pageSize:{default:()=>r.DEFAULT_PAGE_SIZE},pageSizeOptions:{},maxPages:{default:20},imageCompression:{type:[Object,Boolean]},imageUpload:{},variableTypes:{default:()=>r.DEFAULT_FIELD_TYPES},signingLayoutPresets:{},showAdvancedChoiceControls:{type:Boolean,default:!1},showBuiltinSelectorControls:{type:Boolean,default:!1},showCustomControls:{type:Boolean,default:!1},defaultVariableStyle:{default:()=>r.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},contractFontBaseUrl:{default:void 0},showSubmitDataViewer:{type:Boolean,default:!0},showVariableDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:ge.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:ge.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:ge.DEFAULT_DRAFT_CACHE_MAX_BYTES},showDraftCacheStatus:{type:Boolean,default:!0}},emits:[`update:modelValue`,`change`,`update:files`,`update:activeFileId`,`files-change`,`file-add`,`file-change`,`file-remove`,`file-move`,`variable-add`,`validate`,`draft-cache-change`,`page-limit`,`image-error`],setup(f,{expose:Ue,emit:We}){let p=f,m=We,Ge=(0,d.computed)(()=>({height:typeof p.height==`number`?`${p.height}px`:p.height})),Ke=(0,d.ref)(),qe=(0,d.ref)(),Je=(0,d.ref)(),Ye=(0,d.ref)(),Xe=(0,d.ref)(),Ze=`gd-contract-template-page-decorations-studio-${(0,d.useId)()}`,Qe=`gd-contract-template-workspace-chrome-${(0,d.useId)()}`,$e=(0,d.ref)(),et=(0,d.ref)(),tt=(0,d.ref)(),nt=``,rt=``,it=(0,d.ref)(!1),h=(0,d.computed)(()=>it.value||Array.isArray(p.files)),at=c.normalizeContractTemplateFiles(p.files,p.modelValue,p.pageSize),ot=c.constrainContractTemplateFiles(at,p.pageSizeOptions),st=h.value?ot.files:at,ct=c.resolveContractTemplateActiveFileId(st,p.activeFileId),g=(0,d.ref)(st),_=(0,d.ref)(ct),lt=st.find(e=>e.id===ct)??st[0],ut=r.normalizeTemplateValue(lt?.template??p.modelValue,p.pageSize),v=(0,d.ref)(r.constrainTemplatePageSizes(ut,p.pageSizeOptions));if(h.value){if(g.value=c.replaceContractTemplateFile(g.value,_.value,v.value),l.serializeFingerprint(g.value)!==l.serializeFingerprint(at)){let e=c.cloneContractTemplateFiles(g.value);nt=l.serializeFingerprint(e),m(`update:files`,e),m(`files-change`,c.cloneContractTemplateFiles(e))}}else p.modelValue&&l.serializeFingerprint(v.value)!==l.serializeFingerprint(ut)&&(rt=l.serializeFingerprint(v.value),m(`update:modelValue`,r.cloneTemplateValue(v.value)),m(`change`,r.cloneTemplateValue(v.value)));let y=(0,d.ref)(``),b=(0,d.ref)(v.value.pages[0]?.id??``),x=(0,d.ref)(!1),S=(0,d.ref)([]),C=new Map,dt=(0,d.ref)(!1),ft=(0,d.ref)(``),w=(0,d.ref)(!1),T=(0,d.ref)(),pt=(0,d.ref)(),mt=(0,d.ref)(``),ht=(0,d.ref)(!1),gt=(0,d.ref)(``),_t=(0,d.ref)(!1),vt=(0,d.ref)({values:{},variables:[]}),E=(0,d.ref)(1),D=(0,d.ref)(!1),yt=(0,d.ref)(!1),bt=(0,d.ref)(!1),O=(0,d.ref)(!1),k=(0,d.ref)(!1),xt=(0,d.ref)(),A=(0,d.ref)(!1),St=(0,d.ref)(`header`),Ct=(0,d.ref)(!1),wt=(0,d.ref)({}),j=(0,d.ref)(``),M=(0,d.ref)(!1),N=(0,d.ref)(!1),Tt=(0,d.ref)(!1),Et=(0,d.ref)(!1),Dt=(0,d.ref)(!1),Ot=(0,d.ref)(!1),kt=(0,d.ref)(!1),At=(0,d.ref)(``),jt=(0,d.ref)(),Mt=(0,d.ref)(),Nt=(0,d.ref)(``),Pt=(0,d.ref)(!1),P=(0,d.ref)(),Ft=(0,d.ref)(),F=(0,d.ref)(),It=(0,d.ref)(),Lt=(0,d.ref)(!1),Rt,zt=(0,d.ref)(!1),Bt,Vt=(0,d.ref)(!1),Ht=(0,d.ref)(``),I=(0,d.ref)(),Ut=(0,d.ref)(),L=(0,d.ref)(),Wt=(0,d.ref)(),Gt=(0,d.ref)(),Kt=(0,d.ref)(),R=(0,d.ref)(``),z=(0,d.ref)(ge.createDraftCacheStatus(`idle`,`暂无本地草稿`)),qt=(0,d.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,d.computed)(()=>p.readonly||p.disabled),{panel:tn,query:nn,replacement:rn,matchCase:an,matches:on,currentIndex:sn,currentMatch:cn,feedback:ln,highlightQuery:un,open:dn,close:fn,navigate:pn,replaceCurrent:mn,replaceAll:hn,handleKeydown:gn}=ce.useTemplateAuthoring({pages:()=>v.value.pages,fileId:()=>_.value,readonly:()=>B.value,root:()=>Ke.value,pageRefs:C,activatePage:ra,beforeOpen:()=>{$(),Ga(),O.value=!1},focusPanel:()=>tt.value?.focusPanel(),focusTrigger:e=>tt.value?.focusTrigger(e)}),_n=(0,d.computed)(()=>!!(P.value||tn.value||I.value||L.value||M.value||N.value||Ct.value||Tt.value||Et.value||Dt.value||Ot.value||kt.value)),vn=(0,d.computed)(()=>!!p.enableDraftCache&&!B.value),yn=(0,d.computed)(()=>g.value.find(e=>e.id===_.value)??g.value[0]),bn=(0,d.computed)(()=>T.value?r.buildTemplatePreviewPages(T.value):[]),xn=(0,d.computed)(()=>(pt.value??[]).map(e=>({file:e,pages:r.buildTemplatePreviewPages(e.template)}))),Sn=(0,d.computed)(()=>xn.value.find(e=>e.file.id===mt.value)??xn.value[0]),V=(0,d.computed)(()=>v.value.pages.find(e=>e.id===b.value)??v.value.pages[0]),Cn=(0,d.computed)(()=>r.resolvePageSize(V.value?.pageSize,v.value.pageSize)),wn=(0,d.computed)(()=>x.value&&S.value.length===0),Tn=(0,d.computed)(()=>x.value?wn.value?`校验通过,正文变量与变量配置一致`:`发现 ${S.value.length} 个校验问题`:``),En=(0,d.computed)(()=>{let e=V.value?.title||`合同正文`;return`${h.value&&yn.value?`${yn.value.name} · `:``}${e} · ${Cn.value.label} · 共 ${v.value.pages.length} 页`}),Dn=(0,d.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[t.resolvePageDecorationPreset(v.value.pageDecorations)]),On=(0,d.computed)(()=>{let e=t.normalizePageDecorations(v.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),kn=(0,d.computed)(()=>Object.values(On.value).filter(Boolean).length),An=(0,d.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${ge.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``}}),jn=(0,d.computed)(()=>({"is-success":z.value.type===`saved`||z.value.type===`restored`,"is-warning":z.value.type===`too-large`,"is-error":z.value.type===`unavailable`||z.value.type===`read-failed`||z.value.type===`write-failed`})),Mn=(0,d.computed)(()=>`${Math.round(E.value*100)}%`),Nn=(0,d.computed)(()=>e.resolveFontFamilyOptions(p.fontFamilies,p.fontFamilyMode)),Pn=(0,d.computed)(()=>Nn.value.map(e=>({label:e.label,value:e.value}))),Fn=e.DEFAULT_TEXT_ALIGN_OPTIONS,In=[...e.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],Ln=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Rn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],zn=(0,d.computed)(()=>r.normalizePageSizeOptions(p.pageSizeOptions)),Bn=(0,d.computed)(()=>zn.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:r.getPageSizeKey(e)}))),Vn=(0,d.computed)(()=>r.getPageSizeKey(Cn.value)),Hn=(0,d.computed)(()=>p.draftCacheKey),H=(0,d.computed)(()=>v.value.variables.find(e=>e.key===y.value)),Un=(0,d.computed)(()=>{let e=[...p.variableTypes,...p.showAdvancedChoiceControls?r.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES:[],...p.showBuiltinSelectorControls?r.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES:[],...p.showCustomControls?r.DEFAULT_CUSTOM_FIELD_TYPES:[]].filter(e=>n.isContractTemplateFieldType(e?.type));return Array.from(new Map(e.map(e=>[e.type,e])).values())}),Wn=(0,d.computed)(()=>{let e=[...ee.SIGNING_LAYOUT_PRESET_KEYS.map(e=>ee.SIGNING_LAYOUT_PRESETS[e]),...(p.signingLayoutPresets??[]).filter(e=>!!e?.key)];return Array.from(new Map(e.map(e=>[e.key,e])).values())}),Gn=(0,d.computed)(()=>Un.value.map(e=>({...e,icon:ae.resolveFieldTypeIcon(e.type),group:e.type===`select`||e.type===`radio`?`advanced-choice`:e.type.endsWith(`-selector`)?`builtin-selector`:e.type===`custom`?`custom`:`basic`}))),U=(0,d.computed)(()=>r.normalizeContractTemplateMaxPages(p.maxPages)),Kn=(0,d.computed)(()=>v.value.pages.length>=U.value),qn=(0,d.computed)(()=>{let e=r.collectTemplateValueVariableKeys(v.value);return Array.from(t.collectPageDecorationVariableKeys(v.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:W}=_e.useAutoPagination({templateValue:v,readonlyState:B,isAutoPaginating:dt,pendingPaginationPageId:ft,activePageId:b,normalizedMaxPages:U,pageRefs:C,syncPageEditors:K,commitBodyChange:Ar,getPageSize:Mr,notifyPageLimit:Pr}),{saveDraftCache:Jn,loadDraftCache:Yn,clearDraftCache:Xn,restoreDraftCacheIfNeeded:Zn,stopDraftCacheTimer:Qn,restartDraftCacheTimer:$n,resetDraftFingerprint:er}=ye.useDraftCacheSession({draftCacheWritable:vn,multipleFilesMode:h,filesValue:g,activeFileIdValue:_,templateValue:v,draftCacheKey:Hn,draftCacheInterval:()=>p.draftCacheInterval,draftCacheMaxBytes:()=>p.draftCacheMaxBytes,pageSize:()=>p.pageSize,pageSizeOptions:()=>p.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:K,setActiveFileId:Y,emitFilesChange:J,commit:X,updateDraftCacheStatus:xr,scheduleAutoPaginate:W,activePageId:b,selectedVariableKey:y}),tr=(0,d.computed)(()=>{let e=Ht.value.trim().toLowerCase(),t=v.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),nr=(0,d.computed)(()=>Math.max(Re,Cn.value.width-Ie)),rr=(0,d.computed)(()=>Math.max(ze,Cn.value.height-Le)),G=(0,d.computed)(()=>wt.value[b.value]??dr()),ir=(0,d.computed)(()=>G.value.hasMixedBlockFormats?void 0:G.value.currentHeadingLevel??`paragraph`),ar=(0,d.computed)(()=>G.value.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),or=(0,d.computed)(()=>G.value.fontSize??r.DEFAULT_FIELD_STYLE.fontSize??14),sr=(0,d.computed)(()=>G.value.textColor||r.DEFAULT_FIELD_STYLE.color||`#1f2937`),cr=(0,d.computed)(()=>H.value?.style?.fontFamily||r.DEFAULT_FIELD_STYLE.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),lr=(0,d.computed)(()=>{let t=e.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),n=hr(or.value),r=hr(j.value),i=new Map;return r&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(r)&&i.set(r,{label:`使用 ${r}px`,value:r}),n&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(n)&&i.set(n,{label:r===n?`使用 ${n}px`:`${n}px`,value:n}),[...Array.from(i.values()),...t]});(0,d.watch)(()=>p.modelValue,e=>{if(!e||h.value)return;let t=r.normalizeTemplateValue(e,p.pageSize),n=r.constrainTemplatePageSizes(t,p.pageSizeOptions),i=l.serializeFingerprint(n)!==l.serializeFingerprint(v.value),a=l.serializeFingerprint(n),o=a===rt;o&&(rt=``),(i||!o)&&(v.value=n,g.value=c.replaceContractTemplateFile(g.value,_.value,n),b.value=n.pages[0]?.id??``,y.value=``,W(b.value)),l.serializeFingerprint(n)!==l.serializeFingerprint(t)&&(rt=a,m(`update:modelValue`,r.cloneTemplateValue(n)),m(`change`,r.cloneTemplateValue(n)))},{deep:!0}),(0,d.watch)(()=>p.files,e=>{if(!Array.isArray(e))return;let t=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),n=c.constrainContractTemplateFiles(t,p.pageSizeOptions).files,r=l.serializeFingerprint(n),i=l.serializeFingerprint(g.value);r===nt&&(nt=``);let a=c.resolveContractTemplateActiveFileId(n,p.activeFileId||_.value);if(r===i?a!==_.value&&Y(a,{syncCurrent:!1,shouldEmit:!1}):(g.value=n,Y(a,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0})),r!==l.serializeFingerprint(t)){let e=c.cloneContractTemplateFiles(n);nt=l.serializeFingerprint(e),m(`update:files`,e),m(`files-change`,c.cloneContractTemplateFiles(e))}},{deep:!0}),(0,d.watch)(()=>p.activeFileId,e=>{!h.value||!e||e===_.value||Y(e,{syncCurrent:!0,shouldEmit:!1})});function ur(e,t){let n=l.serializeFingerprint(g.value);q(!1);let i=c.normalizeContractTemplateFiles(g.value,void 0,e),{files:a}=c.constrainContractTemplateFiles(i,t),o=l.serializeFingerprint(a)!==n,s=a.find(e=>e.id===_.value);return s&&l.serializeFingerprint(s.template)!==l.serializeFingerprint(v.value)&&(v.value=r.cloneTemplateValue(s.template)),o&&(x.value=!1,S.value=[],J(a,``)),o}(0,d.watch)([()=>p.pageSize,()=>p.pageSizeOptions],([e,t])=>{if(h.value){ur(e,t),W(b.value);return}let n=r.normalizeTemplateValue(v.value,e),i=r.constrainTemplatePageSizes(n,t);l.serializeFingerprint(i)!==l.serializeFingerprint(v.value)&&X(i),W(b.value)},{deep:!0}),(0,d.watch)(U,()=>{W(v.value.pages[0]?.id)}),(0,d.watch)(B,e=>{e&&($(),M.value=!1,N.value=!1)}),(0,d.watch)(b,()=>{F.value=void 0}),(0,d.watch)([_n,A,w],()=>{Ja()}),(0,d.watch)(()=>[p.enableDraftCache,Hn.value,p.draftCacheInterval,B.value],()=>{er(),$n()}),(0,d.watch)(D,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,d.onMounted)(()=>{Zn(),$n(),W(b.value),window.addEventListener(`pointerdown`,no,!0),window.addEventListener(`pointerup`,$a),window.addEventListener(`keydown`,ao,!0),window.addEventListener(`keydown`,oo),window.addEventListener(`resize`,eo),window.addEventListener(`scroll`,ro,!0)}),(0,d.onBeforeUnmount)(()=>{_r(),Qt=!0,D.value&&typeof document<`u`&&(document.body.style.overflow=Xt??``),window.removeEventListener(`pointerdown`,no,!0),window.removeEventListener(`pointerup`,$a),window.removeEventListener(`keydown`,ao,!0),window.removeEventListener(`keydown`,oo),window.removeEventListener(`resize`,eo),window.removeEventListener(`scroll`,ro,!0),Bt!==void 0&&cancelAnimationFrame(Bt),Qn()});function dr(){return{isFocused:!1,canUndo:!1,canRedo:!1,isBold:!1,isItalic:!1,isUnderline:!1,isBulletList:!1,isOrderedList:!1,isTableActive:!1,textAlign:`left`,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:r.DEFAULT_FIELD_STYLE.fontSize??14,textColor:r.DEFAULT_FIELD_STYLE.color??`#1f2937`,selectionText:``,hasMixedBlockFormats:!1}}function fr(e){return e===`left`||e===`center`||e===`right`}function pr(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function mr(e,t=or.value){let n=Number(e);return Number.isFinite(n)?Math.min(Ve,Math.max(Be,Math.round(n))):t}function hr(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Ve,Math.max(Be,Math.round(n)))}function K(e=v.value){return{...e,pages:e.pages.map(e=>{let t=C.get(e.id);return{...e,contentHtml:t?.getHTML()??e.contentHtml,contentJson:t?.getJSON()??e.contentJson}})}}function gr(){$t=!1,en&&=(clearTimeout(en),void 0)}function _r(){let e=$t;gr(),e&&br()}function vr(){$t=!0,en&&clearTimeout(en),en=setTimeout(()=>{en=void 0,!(!$t||Qt)&&($t=!1,br())},Fe)}function yr(e){let t=v.value.pages,n=t.findIndex(t=>t.id===e.id);if(n<0)return;let r=t[n];if(r.contentHtml===e.contentHtml&&r.contentJson===e.contentJson&&r.title===e.title&&r.pageSize===e.pageSize)return;let i=t.slice();i[n]=e,v.value={...v.value,pages:i}}function br(){let e=K(),t=r.syncTemplateVariablesWithPages(e);y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),X(t)}function q(e=!1){_r();let t=r.cloneTemplateValue(K());if(!h.value)return t;let n=g.value.find(e=>e.id===_.value)?.template,i=l.serializeFingerprint(n)!==l.serializeFingerprint(t),a=c.replaceContractTemplateFile(g.value,_.value,t);return g.value=a,i&&e&&J(a),t}function J(e,t=_.value){if(!h.value)return;let n=c.cloneContractTemplateFiles(e);g.value=n,nt=l.serializeFingerprint(n),m(`update:files`,c.cloneContractTemplateFiles(n)),m(`files-change`,c.cloneContractTemplateFiles(n));let r=n.find(e=>e.id===t);r&&m(`file-change`,c.cloneContractTemplateFiles([r])[0])}function Y(e,t={}){let{syncCurrent:n,shouldEmit:i,forceRefresh:a}=ve.resolveSetActiveFileIdOptions(t),o=c.resolveContractTemplateActiveFileId(g.value,e),s=o!==_.value;if(n?q(!0):gr(),!s&&!a)return;let ee=g.value.find(e=>e.id===o);ee&&(_.value=o,v.value=r.cloneTemplateValue(ee.template),y.value=``,b.value=v.value.pages[0]?.id??``,wt.value={},C.clear(),ft.value=``,x.value=!1,S.value=[],w.value=!1,T.value=void 0,pt.value=void 0,er(),i&&s&&m(`update:activeFileId`,o),n&&s&&vn.value&&Jn(),(0,d.nextTick)(()=>{W(b.value)}))}function X(e){gr();let t=r.normalizeTemplateValue(e,p.pageSize),n=r.constrainTemplatePageSizes(t,p.pageSizeOptions);return v.value=n,x.value=!1,S.value=[],h.value?J(c.replaceContractTemplateFile(g.value,_.value,n)):(g.value=c.replaceContractTemplateFile(g.value,_.value,n),rt=l.serializeFingerprint(n),m(`update:modelValue`,r.cloneTemplateValue(n)),m(`change`,r.cloneTemplateValue(n))),n}function xr(e,t=e.type!==`unchanged`){z.value=e,t&&m(`draft-cache-change`,{...e})}function Sr(){return{...z.value}}function Cr(e,t){t?C.set(e,t):C.delete(e)}function wr(e){$(),Dt.value=!1,Z({type:`insert-signing-layout`,preset:ee.isSigningLayoutPresetKey(e.key)?e.key:void 0,options:e.options})}function Tr(e){$(),Z({type:`insert-signing-layout`,options:e})}function Er(){Dt.value=!1,kt.value=!0}function Dr(e){$(),Ot.value=!1,Z({type:`insert-signing-mark`,mark:{markType:e}})}function Z(e,t=V.value?.id??b.value){B.value||C.get(t)?.runCommand(e)}function Or(e){Z(e),$()}function kr(e){let t=P.value?.pageId;t&&(C.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function Ar(e){let t=X(r.syncTemplateVariablesWithPages(e));return y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),t}function jr(e){yr(e),vr(),W(e.id)}function Mr(e){return r.resolvePageSize(e?.pageSize,v.value.pageSize)}function Nr(e){if(B.value||!V.value)return;let t=zn.value.find(t=>r.getPageSizeKey(t)===e);if(!t)return;let n=V.value.id,i=r.resolvePageSize(t,v.value.pageSize);X({...v.value,pages:v.value.pages.map(e=>e.id===n?{...e,pageSize:i}:e)}),W(n)}function Pr(e){let t=U.value;R.value=`合同最多支持 ${t} 页`,m(`page-limit`,t,e)}function Fr(){if(B.value)return;if(Kn.value){Pr(`add`);return}let e=r.createDefaultPage(v.value.pages.length+1,Cn.value);X({...v.value,pages:[...v.value.pages,e]}),b.value=e.id}function Ir(e){if(B.value)return;if(Kn.value){Pr(`duplicate`);return}let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=r.cloneTemplateValue({pages:[e],variables:[],pageSize:v.value.pageSize}).pages[0],i=r.createBlankPage(t+2,Mr(e),n.contentHtml,n.contentJson);i.title=`${e.title||`第 ${t+1} 页`}副本`;let a=[...v.value.pages];a.splice(t+1,0,i),X({...v.value,pages:a}),b.value=i.id}function Lr(e){if(B.value||v.value.pages.length<=1)return;let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=v.value.pages.filter(t=>t.id!==e.id),r=Ar({...v.value,pages:n});b.value=r.pages[Math.min(t,r.pages.length-1)]?.id??``}function Rr(e){B.value||v.value.pages.length<=1||Te.Modal.confirm({title:`删除合同页面`,content:`删除页面会同时移除页面正文,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{Lr(e)}})}function zr(e){let t=new Set(v.value.variables.map(e=>e.key)),n=1;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function Br(e){let t=e.type??`text`;return r.createTemplateVariable({...e,type:t,key:e.key||zr(t),label:e.label||r.getFieldOption(t,Un.value).label},Un.value,p.defaultVariableStyle)}function Vr(e,t=V.value?.id??v.value.pages[0].id,n){if(B.value)return e;let r=C.get(t)?.insertVariable(e,n),i=!v.value.variables.some(t=>t.key===e.key);return X({...v.value,pages:r?v.value.pages.map(e=>e.id===r.id?r:e):v.value.pages,variables:i?[...v.value.variables,e]:v.value.variables}),y.value=e.key,b.value=t,i&&m(`variable-add`,e),W(t),e}function Hr(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 Ur(e={}){let t=s.normalizeContractImageDimension(jt.value),n=s.normalizeContractImageDimension(Mt.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function Wr(){At.value=``,jt.value=void 0,Mt.value=void 0,Nt.value=``}function Gr(e,t=V.value?.id??v.value.pages[0]?.id,n){let r=Hr({...e,src:e.src.trim()});if(!(B.value||!t||!i.isSafeContractImageUrl(r.src)||!r.src||!C.get(t)?.insertContentImage(r,n)))return b.value=t,y.value=``,r.src}function Kr(e){return e instanceof Error?e:Error(`图片处理失败`)}async function qr(e,t){t===`toolbar`&&(Pt.value=!0,Nt.value=``);try{let n=await s.processContractImageFile(e,{source:t,compression:p.imageCompression,upload:p.imageUpload});return Qt?void 0:n.src}catch(e){let n=Kr(e);t===`toolbar`&&(Nt.value=n.message),R.value=n.message,m(`image-error`,n,t);return}finally{t===`toolbar`&&(Pt.value=!1)}}let Jr=0;function Yr(e){let t=e.replacedFontFamilies.filter(Boolean);if(!t.length)return;let n=Date.now();n-Jr<800||(Jr=n,Te.message.info(`已将 ${t.length} 种外部字体(${t.join(`、`)})统一为合同标准字体,以保证 Mac 与 Windows 排版一致`))}async function Xr(e){return await qr(e,`paste`)??null}async function Zr(e,t={}){if(B.value)return;let n=V.value?.id??v.value.pages[0]?.id,r=n?C.get(n)?.getSelectionRange():void 0,a=typeof e==`string`?e.trim():await qr(e,`toolbar`);if(Qt)return;if(!a||!i.isSafeContractImageUrl(a)){typeof e==`string`&&(Nt.value=`请输入安全的图片 URL`);return}if(n&&!C.has(n))return;let o=Gr({...t,src:a},n,r);return o&&(Et.value=!1,Wr(),R.value=`已插入图片`),o}function Qr(){B.value||Pt.value||($(),Nt.value=``,et.value&&(et.value.value=``),et.value?.click())}async function $r(e){let t=e.target.files?.[0];t&&await Zr(t,Ur({alt:t.name}))}async function ei(){let e=At.value;await Zr(e,Ur())}function ti(e){bi(e),Tt.value=!1}function ni(){$(),Fr()}function ri(e,t,n,r){$(),Vr(Br({type:t}),e,{left:n,top:r})}function ii(e){$(),y.value=e}function ai(e){let n=v.value.variables.find(t=>t.id===e.id);if(!n)return;let i=e.key.trim();if(i!==n.key){let t=r.validateContractTemplateVariableKey(i,v.value.variables,e.id);if(t){R.value=t;return}}e={...e,key:i};let a=[...v.value.pages],o=n.key,s=``;C.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)}}),X({...v.value,pages:a,variables:v.value.variables.map(t=>t.id===e.id?e:t),...o!==e.key&&v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,o,e.key)}:{}}),y.value=e.key,W(s||b.value)}function Q(e){H.value&&ai({...H.value,...e,style:{...H.value.style,...e.style}})}function oi(e){B.value||!H.value||Q({key:e})}function si(e){B.value||(X({...v.value,pageDecorations:t.normalizePageDecorations(e)}),W(v.value.pages[0]?.id))}function ci(e){(e===`left`||e===`center`||e===`right`)&&Q({style:{textAlign:e}})}function li(e){(e===`solid`||e===`dashed`)&&Q({style:{borderStyle:e}})}function ui(e){(e===`contain`||e===`cover`||e===`fill`)&&Q({style:{objectFit:e}})}function di(e){Q({style:e})}function fi(t){di({fontFamily:String(t||``).trim()||e.DEFAULT_CONTRACT_FONT_FAMILY})}function pi(e){di({fontSize:mr(e,H.value?.style?.fontSize??14)})}function mi(e){H.value&&Q({multiline:e,rows:H.value.rows||3,lineHeight:H.value.lineHeight||28,style:e?{underline:!0}:void 0})}function hi(e){H.value&&Q({rows:Number(e||3),lineHeight:H.value.lineHeight||28})}function gi(e){if(B.value)return;let n=[...v.value.pages];C.forEach((t,r)=>{let i=t.removeVariable(e.key);if(i){let e=n.findIndex(e=>e.id===r);e>=0&&(n[e]=i)}}),X({...v.value,pages:n,variables:v.value.variables.filter(t=>t.id!==e.id),...v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,e.key)}:{}}),y.value=``}function _i(e){let t=(e.trim()||`variable`).replace(/\s+/g,`_`),n=new Set(v.value.variables.map(e=>e.key));if(!n.has(t))return t;let r=2;for(;n.has(`${t}_${r}`);)r+=1;return`${t}_${r}`}function vi(e){B.value||Vr(r.createTemplateVariable({...e,id:void 0,key:_i(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},Un.value,p.defaultVariableStyle))}function yi(e){return B.value?void 0:Vr(v.value.variables.find(t=>t.key===e.key)??r.createTemplateVariable(e,Un.value,p.defaultVariableStyle))}function bi(e){if(!B.value)return Vr(Br({type:e}))}function xi(e){if(B.value||!n.isContractTemplateFieldType(e))return;let t=P.value,r=Un.value.find(t=>t.type===e);if(!t||!r)return;let i=te.inferContextVariableLabel(t.leadingText)||r.label,a=te.resolveContextVariableWidth(t.selectionWidth,Re,nr.value),o=Si();Vr(Br({type:e,label:i,...a?{width:a}:{},...o?{style:o}:{}}),t.pageId),R.value=t.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function Si(){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 Ci(e){if(B.value)return;let t=P.value;t&&(Vr(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function wi(e){let t=e.type&&n.isContractTemplateFieldType(e.type)?e.type:`text`;return r.getFieldOption(t,Un.value).label}function Ti(){v.value.variables.length&&(Vt.value=!0,(0,d.nextTick)(()=>{Ra(),Ft.value?.focusBindSearch()}))}function Ei(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function Di(e){return E.value=Math.round(Math.min(Ne,Math.max(Me,Number.isFinite(e)?e:1))*100)/100,E.value}let{width:Oi}=(0,Ee.useElementSize)(qe),ki=(0,d.computed)(()=>Math.max(...v.value.pages.map(e=>Mr(e).width),r.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:Ai,applyAutoFit:ji,markUserAdjusted:Mi,userAdjusted:Ni}=o.useFitWidthZoom({viewportWidth:Oi,widestPageWidth:ki,padding:48,minZoom:Me,maxZoom:Ne,getZoom:()=>E.value,applyZoom:Di});function Pi(e){return Mi(),Di(e)}function Fi(){return ji()}function Ii(){return E.value}function Li(){Pi(E.value+Pe)}function Ri(){Pi(E.value-Pe)}function zi(){$(),Ga(),D.value=!D.value}(0,d.watch)(Oi,e=>{k.value&&!Ni.value&&e>0&&Ai()});function Bi(e){O.value?$e.value?.focus():e()}function Vi(){$(),Ga(),A.value=!1,Zt={fullscreen:D.value,sidebar:yt.value,inspector:bt.value,chrome:O.value,zoom:E.value,userAdjusted:Ni.value},D.value=!0,yt.value=!0,bt.value=!0,O.value=!0,k.value=!0,(0,d.nextTick)(()=>{B.value?xt.value?.focus():C.get(b.value)?.focus()})}function Hi(){let e=Zt;k.value=!1,Zt=void 0,e&&(D.value=e.fullscreen,yt.value=e.sidebar,bt.value=e.inspector,O.value=e.chrome,e.userAdjusted?Pi(e.zoom):ji(),(0,d.nextTick)(()=>Bi(()=>Ye.value?.focusImmersive())))}function Ui(){k.value?Hi():Vi()}function Wi(){$(),F.value=void 0;let e=q(!1);h.value?(pt.value=c.cloneContractTemplateFiles(g.value),T.value=void 0,mt.value=_.value||g.value[0]?.id||``):(T.value=r.cloneTemplateValue(e),pt.value=void 0,mt.value=``),w.value=!0}function Gi(){w.value=!1,T.value=void 0,pt.value=void 0,mt.value=``}function Ki(){return xa()}function qi(){$();let e=Ki();return gt.value=JSON.stringify(e,null,2),ht.value=!0,e}function Ji(){ht.value=!1}function Yi(){return a.buildTemplateVariableData(q(!1))}function Xi(){$();let e=Yi();return vt.value=e,_t.value=!0,e}function Zi(){_t.value=!1}function Qi(){$(),F.value=void 0,M.value=!1,N.value=!1,y.value=``,b.value=``,w.value=!1,T.value=void 0,pt.value=void 0,ht.value=!1,gt.value=``,_t.value=!1,vt.value={values:{},variables:[]},wt.value={},ft.value=``;let e=X(r.createBlankTemplate(r.DEFAULT_PAGE_SIZE));return b.value=e.pages[0]?.id??``,r.cloneTemplateValue(e)}function $i(){B.value||($(),Te.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面和模板变量,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{Qi()}}))}function ea(e){let t=K().pages,n=t.find(e=>e.id===b.value);return(n?[n,...t.filter(e=>e.id!==n.id)]:t).find(t=>t.contentHtml.includes(`data-key="${e.key}"`)||t.contentHtml.includes(`data-key='${e.key}'`))}function ta(e){$(),y.value=e.key;let t=ea(e);t&&(b.value=t.id,(0,d.nextTick)(()=>{C.get(t.id)?.scrollIntoVariable(e.key)}))}function na(e){let t=v.value.variables.find(t=>t.key===e||t.id===e);t&&ta(t)}function ra(e,t=!0){$(),b.value=e,t&&(0,d.nextTick)(()=>{C.get(e)?.scrollIntoPage()})}function ia(e){ra(e.pageId,!1),C.get(e.pageId)?.focusHeading(e.headingIndex)}function aa(e){v.value.pages.some(t=>t.id===e)&&ra(e)}function oa(){if(A.value){sa();return}A.value=!0}function sa(){A.value=!1,(0,d.nextTick)(()=>Bi(()=>Ye.value?.focusPageDecorations()))}function ca(){return _r(),r.cloneTemplateValue(K())}function la(e){W(X(r.normalizeTemplateValue(e,p.pageSize)).pages[0]?.id)}function ua(){let e=q(!1);return h.value?c.cloneContractTemplateFiles(g.value):c.cloneContractTemplateFiles(c.replaceContractTemplateFile(g.value,_.value,e))}function da(e,t){let n=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),r=c.constrainContractTemplateFiles(n,p.pageSizeOptions),i=g.value;it.value=!0,q(!1),g.value=r.files,Y(c.resolveContractTemplateActiveFileId(g.value,t??_.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.serializeFingerprint(i)!==l.serializeFingerprint(g.value)&&J(g.value,``)}function fa(e){if(B.value)return;it.value=!0,q(!0);let t=c.createContractTemplateFile(e||`合同文件 ${g.value.length+1}`,p.pageSize);return g.value=[...g.value,t],J(g.value,``),m(`file-add`,c.cloneContractTemplateFiles([t])[0]),Y(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function pa(e){!h.value&&!g.value.some(t=>t.id===e)||(it.value=!0,Y(e))}function ma(e,t){if(B.value)return;it.value=!0,q(!1);let n=c.renameContractTemplateFile(g.value,e,t),r=n.find(t=>t.id===e);if(r)return g.value=n,J(n,e),c.cloneContractTemplateFiles([r])[0]}function ha(e){if(B.value||g.value.length<=1)return;it.value=!0,q(!1);let t=g.value.find(t=>t.id===e);if(!t)return;let n=c.removeContractTemplateFile(g.value,e);if(n.length!==g.value.length)return g.value=n,J(n,``),m(`file-remove`,c.cloneContractTemplateFiles([t])[0]),_.value===e&&Y(c.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function ga(e){if(B.value||g.value.length<=1)return;let t=g.value.find(t=>t.id===e);t&&Te.Modal.confirm({title:`删除合同文件`,content:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{ha(e)}})}function _a(e,t){if(B.value)return;it.value=!0,q(!1);let n=g.value.findIndex(t=>t.id===e),r=c.moveContractTemplateFile(g.value,e,t),i=r.findIndex(t=>t.id===e),a=r[i];if(!(!a||n===i))return g.value=r,J(r,``),m(`file-move`,c.cloneContractTemplateFiles([a])[0],n,i),c.cloneContractTemplateFiles([a])[0]}function va(){q(!1);let e=Ca(h.value?g.value.flatMap(e=>r.validateTemplateValue(e.template,{maxPages:U.value}).map(t=>({...t,fileId:e.id}))):r.validateTemplateValue(K(),{maxPages:U.value}));return S.value=e,x.value=!0,m(`validate`,e),e}function ya(e){if(e.fileId&&e.fileId!==_.value){pa(e.fileId),(0,d.nextTick)(()=>ya({...e,fileId:void 0}));return}let n=t.resolvePageDecorationValidationPath(e);if(n){A.value=!0,(0,d.nextTick)(()=>Xe.value?.focusField(n));return}if(e.variableKey){na(e.variableKey);return}if(e.pageId){aa(e.pageId);return}let r=v.value.variables.find(t=>t.id===e.id||t.key===e.id);if(r){ta(r);return}v.value.pages.some(t=>t.id===e.id)&&ra(e.id)}function ba(e){return t.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`variable`?`变量`:`字段`}function xa(){return _r(),r.exportTemplateValue(K())}function Sa(){let e=q(!1),t=h.value?g.value:c.replaceContractTemplateFile(g.value,_.value,e);return c.exportContractTemplateFiles(t)}function Ca(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 wa(e){S.value=[...e],x.value=!0}function Ta(){S.value=[],x.value=!1}function Ea(){C.get(V.value?.id??b.value)?.focus()}function Da(e){fr(e)&&Z({type:`set-text-align`,value:e})}function Oa(e){(e===`paragraph`||pr(e))&&Z({type:`apply-block-style`,format:e})}function ka(e){let t=hr(e);t&&(Z({type:`set-font-size`,value:t}),j.value=``)}function Aa(e){let t=String(e||``).trim();if(!t){Z({type:`unset-font-family`});return}Z({type:`set-font-family`,value:t})}function ja(e){Ma(e.target?.value??``)}function Ma(e){let t=e.trim();t&&Z({type:`set-color`,value:t})}function Na(e){j.value=e}function Pa(){j.value.trim()&&ka(j.value)}function Fa(e){e.key===`Enter`&&(e.preventDefault(),Pa())}function Ia(e){e||(Pa(),j.value=``)}function La(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Vt.value=!1,Ht.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,304,300);P.value={pageId:e.pageId,x:t.x,y:t.y,hasSelection:e.hasSelection,selectionWidth:e.selectionWidth,leadingText:e.leadingText},(0,d.nextTick)(()=>{Ra(),Ft.value?.focusFirstButton()})}function Ra(){let e=Ft.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function za(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,L.value=void 0;let t=u.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,d.nextTick)(()=>{let e=Ut.value?.getMenuElement(),t=I.value;if(e&&t){let n=u.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}Ut.value?.focusFirstItem()})}function Ba(e){if(B.value)return;b.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,y.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,d.nextTick)(()=>{Va(),Wt.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function Va(){let e=Wt.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function Ha(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:s.normalizeContractImageDimension(Gt.value),height:s.normalizeContractImageDimension(Kt.value)})&&(R.value=`已更新图片尺寸`),$())}function Ua(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function Wa(e){e.type===`table`?za(e):e.type===`image`?Ba(e):La(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Vt.value=!1,Ht.value=``}function Ga(){fn(!1),M.value=!1,N.value=!1,Ct.value=!1,Tt.value=!1,Et.value=!1,Dt.value=!1,Ot.value=!1}function Ka(){Ga(),O.value=!O.value,(0,d.nextTick)(()=>Bi(()=>Ye.value?.focusChromeToggle()))}let qa=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function Ja(){let e=B.value||zt.value||Lt.value||_n.value||A.value||w.value,t=b.value,n=e?void 0:C.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-He,i=r>=12?r:n.bottom+He,a=(n.left+n.right)/2-380/2,o=u.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,d.nextTick)(()=>Ya(n))}function Ya(e){let t=It.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-He,a=i>=12?i:e.bottom+He,o=(e.left+e.right)/2-r.width/2,s=u.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function Xa(){let e=F.value?.pageId??b.value,t=C.get(e)?.getSelectionRange();Rt=t?{pageId:e,...t}:void 0,Lt.value=!0,F.value=void 0}function Za(e){if(!Lt.value)return;let t=Rt,n=C.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(Lt.value=!1,Rt=void 0)}function Qa(){!F.value||Bt!==void 0||(Bt=requestAnimationFrame(()=>{Bt=void 0,Ja()}))}function $a(){zt.value&&(zt.value=!1,Ja())}function eo(){$(),Qa()}function to(e,t){C.get(F.value?.pageId??b.value)?.requestTextContextMenu(e,t)}function no(e){let t=e.target instanceof Element?e.target:null;t?.closest(`.ProseMirror`)&&(zt.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(qa)||($(),F.value&&Xa()))}function ro(e){(e.target instanceof Element?e.target:null)?.closest(qa)||($(),Qa())}function io(e){let t=Ke.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 ao(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Ke.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}!_n.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),sa())}function oo(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!vn.value||!io(e))return;e.preventDefault(),Jn();return}if(e.key===`Escape`){if(Jt.has(e)){Jt.delete(e);return}let t=_n.value,n=t||A.value;if(!t&&A.value&&sa(),$(),Ga(),n&&e.stopPropagation(),!n){if(F.value){Xa(),e.stopPropagation();return}k.value?Hi():D.value=!1}}}function so(e,t){e===b.value&&t.selectedContentImage&&(y.value=``),e===b.value&&(Za(e),Ja());let n=wt.value[e];n&&we.isSameEditorState(n,t)||(wt.value={...wt.value,[e]:t})}function co(e=qt.value.rows,t=qt.value.cols){Z({type:`insert-table`,options:{rows:Math.min(10,Math.max(1,Math.round(Number(e)||3))),cols:Math.min(10,Math.max(1,Math.round(Number(t)||3))),withHeaderRow:!!qt.value.withHeaderRow}}),M.value=!1,$()}let lo={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function uo(e){let t=I.value;if(!t)return;let n=()=>{Z(e,t.pageId),$()},r=lo[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),Te.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>C.get(t.pageId)?.focus()})}function fo(e){let t=Ut.value?.getMenuElement();if(!t)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation();let t=I.value?.pageId;$(),C.get(t??``)?.focus();return}let n=Array.from(t.querySelectorAll(`button:not(:disabled)`));if(!n.length)return;if(e.key===`Home`||e.key===`End`){e.preventDefault(),n[e.key===`Home`?0:n.length-1]?.focus();return}if(![`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`].includes(e.key))return;let r=(Math.max(0,n.indexOf(document.activeElement))+(e.key===`ArrowUp`||e.key===`ArrowLeft`?-1:1)+n.length)%n.length;e.preventDefault(),n[r]?.focus()}function po(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),C.get(t??``)?.focus()}function mo(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),C.get(t??``)?.focus()}function ho(e){Z({type:e}),N.value=!1,$()}return Ue({getValue:ca,setValue:la,getFiles:ua,setFiles:da,addFile:fa,selectFile:pa,renameFile:ma,removeFile:ha,moveFile:_a,validate:va,exportTemplate:xa,exportFiles:Sa,getSubmitData:Ki,clearTemplate:Qi,saveDraftCache:Jn,loadDraftCache:Yn,clearDraftCache:Xn,getDraftCacheStatus:Sr,insertVariable:yi,insertImage:Zr,focus:Ea,openPreview:Wi,closePreview:Gi,openSubmitDataViewer:qi,closeSubmitDataViewer:Ji,getVariableData:Yi,openVariableDataViewer:Xi,closeVariableDataViewer:Zi,setServerValidationErrors:wa,clearValidationErrors:Ta,scrollToVariable:na,scrollToPage:aa,setZoom:Pi,resetZoom:Fi,getZoom:Ii,fitWidth:Ai}),(e,t)=>((0,d.openBlock)(),(0,d.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Ke,class:(0,d.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":f.disabled,"is-readonly":B.value,"is-fullscreen":D.value,"is-immersive":k.value}]),style:(0,d.normalizeStyle)(Ge.value),onKeydownCapture:t[31]||=(...e)=>(0,d.unref)(gn)&&(0,d.unref)(gn)(...e)},[h.value?((0,d.openBlock)(),(0,d.createBlock)(be.default,{key:0,files:g.value,"active-file-id":_.value,readonly:B.value,onSelect:pa,onAdd:t[0]||=e=>fa(),onRename:ma,onRemove:ga,onMove:_a},null,8,[`files`,`active-file-id`,`readonly`])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{class:(0,d.normalizeClass)([`gd-contract-template-designer__layout`,{"is-sidebar-collapsed":yt.value,"is-inspector-collapsed":bt.value}])},[(0,d.createVNode)(xe.default,{collapsed:yt.value,pages:v.value.pages,variables:v.value.variables,"decoration-variable-keys":qn.value,"active-page-id":b.value,"selected-variable-key":y.value,"normalized-max-pages":U.value,"page-limit-reached":Kn.value,"selected-page":V.value,"selected-page-size":Cn.value,"normalized-page-size-options":zn.value,"page-size-options":Bn.value,"selected-page-size-option-value":Vn.value,readonly:B.value,"get-page-size":Mr,onToggle:t[1]||=e=>yt.value=!yt.value,onAddPage:Fr,onActivatePage:ra,onNavigateOutline:ia,onDuplicatePage:Ir,onRemovePage:Rr,onPatchPageFormat:Nr,onScrollToVariable:ta},null,8,[`collapsed`,`pages`,`variables`,`decoration-variable-keys`,`active-page-id`,`selected-variable-key`,`normalized-max-pages`,`page-limit-reached`,`selected-page`,`selected-page-size`,`normalized-page-size-options`,`page-size-options`,`selected-page-size-option-value`,`readonly`]),(0,d.createElementVNode)(`main`,{ref_key:`workspaceElement`,ref:Je,class:`gd-contract-template-designer__workspace`},[(0,d.withDirectives)((0,d.createElementVNode)(`div`,{id:Qe,class:`gd-contract-template-designer__workspace-chrome`},[(0,d.createVNode)(ie.default,{ref_key:`workspaceHeaderElement`,ref:Ye,summary:En.value,"draft-cache-status-text":An.value,"draft-cache-status-class":jn.value,"show-draft-cache-status":f.showDraftCacheStatus,"show-clear-button":f.showClearButton,"show-submit-data-viewer":f.showSubmitDataViewer,"show-variable-data-viewer":f.showVariableDataViewer,readonly:B.value,"zoom-percent":Mn.value,"zoom-out-disabled":E.value<=Me,"zoom-in-disabled":E.value>=Ne,"is-fullscreen":D.value,immersive:k.value,"page-decorations-open":A.value,"page-decorations-studio-id":Ze,"page-decorations-preset-label":Dn.value,"page-decorations-enabled-count":kn.value,"page-decorations-enabled-states":On.value,"chrome-controls-id":Qe,onZoomOut:Ri,onZoomIn:Li,onFitWidth:(0,d.unref)(Ai),onResetZoom:Fi,onToggleFullscreen:zi,onToggleImmersive:Ui,onClear:$i,onValidate:va,onPreview:Wi,onSubmitData:qi,onVariableData:Xi,onTogglePageDecorations:oa,onToggleChrome:Ka},{authoring:(0,d.withCtx)(()=>[(0,d.createVNode)(se.default,{ref_key:`authoringBarElement`,ref:tt,compact:``,query:(0,d.unref)(nn),"onUpdate:query":t[2]||=e=>(0,d.isRef)(nn)?nn.value=e:null,replacement:(0,d.unref)(rn),"onUpdate:replacement":t[3]||=e=>(0,d.isRef)(rn)?rn.value=e:null,"match-case":(0,d.unref)(an),"onUpdate:matchCase":t[4]||=e=>(0,d.isRef)(an)?an.value=e:null,panel:(0,d.unref)(tn),readonly:B.value,total:(0,d.unref)(on).length,"current-index":(0,d.unref)(sn),"current-page":(0,d.unref)(cn)?(0,d.unref)(cn).pageIndex+1:void 0,feedback:(0,d.unref)(ln),onOpen:(0,d.unref)(dn),onClose:t[5]||=e=>(0,d.unref)(fn)(),onNavigate:(0,d.unref)(pn),onReplaceCurrent:(0,d.unref)(mn),onReplaceAll:(0,d.unref)(hn)},null,8,[`query`,`replacement`,`match-case`,`panel`,`readonly`,`total`,`current-index`,`current-page`,`feedback`,`onOpen`,`onNavigate`,`onReplaceCurrent`,`onReplaceAll`])]),_:1},8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-data-viewer`,`show-variable-data-viewer`,`readonly`,`zoom-percent`,`zoom-out-disabled`,`zoom-in-disabled`,`is-fullscreen`,`immersive`,`page-decorations-open`,`page-decorations-preset-label`,`page-decorations-enabled-count`,`page-decorations-enabled-states`,`onFitWidth`]),(0,d.createVNode)(oe.default,{"variable-insert-popover-open":Tt.value,"onUpdate:variableInsertPopoverOpen":t[6]||=e=>Tt.value=e,"signing-layout-popover-open":Dt.value,"onUpdate:signingLayoutPopoverOpen":t[7]||=e=>Dt.value=e,"signing-mark-popover-open":Ot.value,"onUpdate:signingMarkPopoverOpen":t[8]||=e=>Ot.value=e,"image-insert-popover-open":Et.value,"onUpdate:imageInsertPopoverOpen":t[9]||=e=>Et.value=e,"image-insert-url":At.value,"onUpdate:imageInsertUrl":t[10]||=e=>At.value=e,"image-insert-width":jt.value,"onUpdate:imageInsertWidth":t[11]||=e=>jt.value=e,"image-insert-height":Mt.value,"onUpdate:imageInsertHeight":t[12]||=e=>Mt.value=e,"table-insert-popover-open":M.value,"onUpdate:tableInsertPopoverOpen":t[13]||=e=>M.value=e,"table-actions-popover-open":N.value,"onUpdate:tableActionsPopoverOpen":t[14]||=e=>N.value=e,"table-insert-draft":qt.value,"onUpdate:tableInsertDraft":t[15]||=e=>qt.value=e,"toolbar-more-open":Ct.value,"onUpdate:toolbarMoreOpen":t[16]||=e=>Ct.value=e,readonly:B.value,"editor-state":G.value,"current-block-format":ir.value,"block-format-options":In,"font-family-select-options":Pn.value,"current-editor-font-family":ar.value,"font-size-preset-options":lr.value,"current-editor-font-size":or.value,"editor-font-size-search-value":j.value,"current-editor-text-color":sr.value,"body-control-tool-items":Gn.value,"signing-layout-presets":Wn.value,"page-limit-reached":Kn.value,"normalized-max-pages":U.value,"image-processing":Pt.value,"image-insert-error":Nt.value,onCommand:t[17]||=e=>Z(e),onPatchBlockFormat:Oa,onPatchFontFamily:Aa,onPatchFontSize:ka,onPatchColor:ja,onPatchTextAlign:Da,onInsertVariable:ti,onInsertSigningLayout:wr,onInsertSigningMark:Dr,onOpenSigningLayoutCustom:Er,onOpenImageFile:Qr,onInsertImageUrl:ei,onAddPage:Fr,onInsertTable:co,onTableAction:ho,onFontSizeSearch:Na,onFontSizeCommit:Pa,onFontSizeDropdownChange:Ia,onFontSizeKeydown:Fa},null,8,`variable-insert-popover-open.signing-layout-popover-open.signing-mark-popover-open.image-insert-popover-open.image-insert-url.image-insert-width.image-insert-height.table-insert-popover-open.table-actions-popover-open.table-insert-draft.toolbar-more-open.readonly.editor-state.current-block-format.font-family-select-options.current-editor-font-family.font-size-preset-options.current-editor-font-size.editor-font-size-search-value.current-editor-text-color.body-control-tool-items.signing-layout-presets.page-limit-reached.normalized-max-pages.image-processing.image-insert-error`.split(`.`))],512),[[d.vShow,!O.value]]),O.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(Te.Tooltip),{key:0,title:`展开工具区`},{default:(0,d.withCtx)(()=>[(0,d.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:$e,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":Qe,onClick:Ka},[(0,d.createVNode)((0,d.unref)(De.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,d.createCommentVNode)(``,!0),k.value&&!A.value?((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:xt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:Hi},[(0,d.createVNode)((0,d.unref)(De.CompressOutlined),{"aria-hidden":`true`}),t[32]||=(0,d.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),t[33]||=(0,d.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,d.createCommentVNode)(``,!0),x.value?((0,d.openBlock)(),(0,d.createElementBlock)(`section`,Oe,[(0,d.createVNode)((0,d.unref)(Te.Alert),{type:wn.value?`success`:`error`,message:Tn.value,"show-icon":``},null,8,[`type`,`message`]),S.value.length?((0,d.openBlock)(),(0,d.createElementBlock)(`div`,ke,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(S.value,e=>((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:`${e.id}-${e.message}`,type:`button`,class:`gd-contract-template-designer__validation-item`,onClick:t=>ya(e)},[(0,d.createElementVNode)(`span`,null,(0,d.toDisplayString)(e.message),1),(0,d.createElementVNode)(`small`,null,(0,d.toDisplayString)(ba(e)),1)],8,Ae))),128))])):(0,d.createCommentVNode)(``,!0)])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:qe,class:`gd-contract-template-designer__canvas`},[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(v.value.pages,(e,n)=>((0,d.openBlock)(),(0,d.createBlock)(ne.default,{key:`${_.value}:${e.id}`,ref_for:!0,ref:t=>Cr(e.id,t),page:e,"page-index":n,"page-size":Mr(e),"page-decorations":v.value.pageDecorations,"total-pages":v.value.pages.length,variables:v.value.variables,"selected-variable-key":y.value,active:b.value===e.id,readonly:f.readonly,disabled:f.disabled,zoom:E.value,"process-image-file":Xr,"search-query":(0,d.unref)(un),"search-match-case":(0,d.unref)(an),"active-search-match":(0,d.unref)(cn)?.pageId===e.id?(0,d.unref)(cn):void 0,onPageUpdate:jr,onVariableDrop:ri,onVariableSelect:ii,onEditorFocus:t[18]||=e=>ra(e,!1),onEditorStateChange:so,onEditorContextMenu:Wa,onWordPaste:Yr,onVariableMoveBlocked:t[19]||=e=>R.value=`变量只能在当前页内移动,跨页移动尚未支持。`},null,8,[`page`,`page-index`,`page-size`,`page-decorations`,`total-pages`,`variables`,`selected-variable-key`,`active`,`readonly`,`disabled`,`zoom`,`search-query`,`search-match-case`,`active-search-match`]))),128))],512)],512),(0,d.createVNode)(Se.default,{collapsed:bt.value,readonly:f.readonly,disabled:f.disabled,"body-control-tool-items":Gn.value,"selected-variable":H.value,variables:v.value.variables,"current-variable-font-family":cr.value,"font-family-select-options":Pn.value,"text-align-options":(0,d.unref)(Fn),"border-style-options":Ln,"object-fit-options":Rn,"selected-variable-width-max":nr.value,"selected-variable-height-max":rr.value,"min-font-size":Be,"max-font-size":Ve,"default-multiline-rows":(0,d.unref)(3),onToggle:t[20]||=e=>bt.value=!bt.value,onVariableDragStart:Ei,onInsertVariable:bi,onDuplicateVariable:vi,onRemoveVariable:gi,onPatchVariable:Q,onRenameVariable:oi,onPatchStyle:di,onPatchMultiline:mi,onPatchRows:hi,onPatchFontFamily:fi,onPatchFontSize:pi,onPatchTextAlign:ci,onPatchBorderStyle:li,onPatchObjectFit:ui},null,8,[`collapsed`,`readonly`,`disabled`,`body-control-tool-items`,`selected-variable`,`variables`,`current-variable-font-family`,`font-family-select-options`,`text-align-options`,`selected-variable-width-max`,`selected-variable-height-max`,`default-multiline-rows`])],2),(0,d.withDirectives)((0,d.createVNode)(Ce.default,{ref_key:`pageDecorationsStudioElement`,ref:Xe,id:Ze,open:A.value,decorations:v.value.pageDecorations,variables:v.value.variables,"font-family-options":Pn.value,readonly:f.readonly,disabled:f.disabled,"active-tab":St.value,"onUpdate:activeTab":t[21]||=e=>St.value=e,onChange:si,onClose:sa},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[d.vShow,A.value]]),((0,d.openBlock)(),(0,d.createBlock)(d.Teleport,{to:`body`},[I.value?((0,d.openBlock)(),(0,d.createBlock)(re.default,{key:0,ref_key:`tableContextMenuElement`,ref:Ut,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,d.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:uo,onKeydown:fo},null,8,[`capabilities`,`active-alignment`,`style`])):(0,d.createCommentVNode)(``,!0),L.value?((0,d.openBlock)(),(0,d.createBlock)(de.default,{key:1,ref_key:`imageContextMenuElement`,ref:Wt,width:Gt.value,"onUpdate:width":t[22]||=e=>Gt.value=e,height:Kt.value,"onUpdate:height":t[23]||=e=>Kt.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:Ua,onApply:Ha,onKeydown:mo},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,d.createCommentVNode)(``,!0),P.value?((0,d.openBlock)(),(0,d.createBlock)(le.default,{key:2,ref_key:`textContextMenuElement`,ref:Ft,"bind-open":Vt.value,"onUpdate:bindOpen":t[24]||=e=>Vt.value=e,"bind-keyword":Ht.value,"onUpdate:bindKeyword":t[25]||=e=>Ht.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":G.value,"current-editor-text-color":sr.value,"body-control-tool-items":Gn.value,"text-menu-bindable-variables":tr.value,"variables-count":v.value.variables.length,"resolve-bind-variable-type-label":wi,onCommand:Or,onClipboard:kr,onAddPage:ni,onInsertVariable:xi,onBindVariable:Ci,onOpenBindPanel:Ti,onKeydown:po,onPatchColor:Ma},null,8,[`bind-open`,`bind-keyword`,`x`,`y`,`has-selection`,`editor-state`,`current-editor-text-color`,`body-control-tool-items`,`text-menu-bindable-variables`,`variables-count`])):(0,d.createCommentVNode)(``,!0),F.value?((0,d.openBlock)(),(0,d.createBlock)(ue.default,{key:3,ref_key:`textBubbleElement`,ref:It,x:F.value.x,y:F.value.y,"editor-state":G.value,"font-size-preset-options":lr.value,"current-editor-font-size":or.value,"editor-font-size-search-value":j.value,"current-editor-text-color":sr.value,"text-align-options":(0,d.unref)(Fn),onCommand:Z,onPatchFontSize:ka,onPatchTextAlign:Da,onPatchColor:Ma,onFontSizeSearch:Na,onFontSizeCommit:Pa,onFontSizeDropdownChange:Ia,onFontSizeKeydown:Fa,onMore:to},null,8,[`x`,`y`,`editor-state`,`font-size-preset-options`,`current-editor-font-size`,`editor-font-size-search-value`,`current-editor-text-color`,`text-align-options`])):(0,d.createCommentVNode)(``,!0)])),(0,d.createElementVNode)(`input`,{ref_key:`imageFileInputElement`,ref:et,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:$r},null,544),(0,d.createElementVNode)(`span`,je,(0,d.toDisplayString)(R.value),1),(0,d.createVNode)(fe.default,{open:w.value,"onUpdate:open":t[26]||=e=>w.value=e,"preview-pages":bn.value,"preview-file-groups":xn.value,"preview-active-group":Sn.value,"preview-snapshot":T.value,"font-base-url":f.contractFontBaseUrl,onCancel:Gi,onSelectFile:t[27]||=e=>mt.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`,`font-base-url`]),(0,d.createVNode)(pe.default,{open:ht.value,"onUpdate:open":t[28]||=e=>ht.value=e,json:gt.value,onCancel:Ji},null,8,[`open`,`json`]),(0,d.createVNode)(me.default,{open:_t.value,"onUpdate:open":t[29]||=e=>_t.value=e,data:vt.value,"file-name":yn.value?.name,onCancel:Zi},null,8,[`open`,`data`,`file-name`]),(0,d.createVNode)(he.default,{open:kt.value,"onUpdate:open":t[30]||=e=>kt.value=e,disabled:B.value,onInsert:Tr},null,8,[`open`,`disabled`])],38))}});exports.default=f;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./types.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/image-url.cjs`),a=require(`./utils/template-renderer.cjs`),o=require(`./composables/use-fit-width-zoom.cjs`),s=require(`./utils/content-image.cjs`),ee=require(`./utils/signing-layout-presets.cjs`),te=require(`./utils/context-variable.cjs`),ne=require(`./DesignerPage.cjs`),re=require(`./TableContextMenu.cjs`),ie=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),ae=require(`./utils/template-tool-icons.cjs`),oe=require(`./ContractTemplateDesignerToolbar.cjs`),se=require(`./ContractTemplateAuthoringBar.cjs`),ce=require(`./composables/use-template-authoring.cjs`),le=require(`./ContractTemplateTextContextMenu.cjs`),ue=require(`./ContractTemplateTextBubbleMenu.cjs`),de=require(`./ContractTemplateImageContextMenu.cjs`),fe=require(`./ContractTemplatePreviewModal.cjs`),pe=require(`./ContractTemplateSubmitDataModal.cjs`),me=require(`./ContractTemplateVariableDataModal.cjs`),he=require(`./SigningLayoutCustomModal.cjs`),ge=require(`./composables/use-template-draft-cache.cjs`),_e=require(`./composables/use-auto-pagination.cjs`),ve=require(`./composables/use-designer-files.cjs`),c=require(`./composables/use-template-files.cjs`),ye=require(`./composables/use-draft-cache-session.cjs`),be=require(`./ContractTemplateFileBar.cjs`),xe=require(`./ContractTemplateDesignerSidebar.cjs`),Se=require(`./ContractTemplateDesignerInspector.cjs`),Ce=require(`./ContractTemplatePageDecorationsStudio.cjs`),l=require(`./utils/serialize-fingerprint.cjs`),we=require(`./utils/editor-state.cjs`),u=require(`./utils/context-menu-viewport.cjs`);let d=require(`vue`),Te=require(`ant-design-vue`),Ee=require(`@vueuse/core`),De=require(`@ant-design/icons-vue`);var Oe={key:2,class:`gd-contract-template-designer__validation`},ke={key:0,class:`gd-contract-template-designer__validation-list`},Ae=[`onClick`],je={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},Me=.5,Ne=1.5,Pe=.1,Fe=120,Ie=128,Le=108,Re=48,ze=24,Be=10,Ve=48,He=8,f=(0,d.defineComponent)({name:`ProContractTemplateDesigner`,__name:`ProContractTemplateDesigner`,props:{modelValue:{default:void 0},files:{},activeFileId:{},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},height:{default:760},pageSize:{default:()=>r.DEFAULT_PAGE_SIZE},pageSizeOptions:{},maxPages:{default:20},imageCompression:{type:[Object,Boolean]},imageUpload:{},variableTypes:{default:()=>r.DEFAULT_FIELD_TYPES},signingLayoutPresets:{},showAdvancedChoiceControls:{type:Boolean,default:!1},showBuiltinSelectorControls:{type:Boolean,default:!1},showCustomControls:{type:Boolean,default:!1},defaultVariableStyle:{default:()=>r.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},contractFontBaseUrl:{default:void 0},showSubmitDataViewer:{type:Boolean,default:!0},showVariableDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:ge.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:ge.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:ge.DEFAULT_DRAFT_CACHE_MAX_BYTES},showDraftCacheStatus:{type:Boolean,default:!0}},emits:[`update:modelValue`,`change`,`update:files`,`update:activeFileId`,`files-change`,`file-add`,`file-change`,`file-remove`,`file-move`,`variable-add`,`validate`,`draft-cache-change`,`page-limit`,`image-error`],setup(f,{expose:Ue,emit:We}){let p=f,m=We,Ge=(0,d.computed)(()=>({height:typeof p.height==`number`?`${p.height}px`:p.height})),Ke=(0,d.ref)(),qe=(0,d.ref)(),Je=(0,d.ref)(),Ye=(0,d.ref)(),Xe=(0,d.ref)(),Ze=`gd-contract-template-page-decorations-studio-${(0,d.useId)()}`,Qe=`gd-contract-template-workspace-chrome-${(0,d.useId)()}`,$e=(0,d.ref)(),et=(0,d.ref)(),tt=(0,d.ref)(),nt=``,rt=``,it=(0,d.ref)(!1),h=(0,d.computed)(()=>it.value||Array.isArray(p.files)),at=c.normalizeContractTemplateFiles(p.files,p.modelValue,p.pageSize),ot=c.constrainContractTemplateFiles(at,p.pageSizeOptions),st=h.value?ot.files:at,ct=c.resolveContractTemplateActiveFileId(st,p.activeFileId),g=(0,d.ref)(st),_=(0,d.ref)(ct),lt=st.find(e=>e.id===ct)??st[0],ut=r.normalizeTemplateValue(lt?.template??p.modelValue,p.pageSize),v=(0,d.ref)(r.constrainTemplatePageSizes(ut,p.pageSizeOptions));if(h.value){if(g.value=c.replaceContractTemplateFile(g.value,_.value,v.value),l.serializeFingerprint(g.value)!==l.serializeFingerprint(at)){let e=c.cloneContractTemplateFiles(g.value);nt=l.serializeFingerprint(e),m(`update:files`,e),m(`files-change`,c.cloneContractTemplateFiles(e))}}else p.modelValue&&l.serializeFingerprint(v.value)!==l.serializeFingerprint(ut)&&(rt=l.serializeFingerprint(v.value),m(`update:modelValue`,r.cloneTemplateValue(v.value)),m(`change`,r.cloneTemplateValue(v.value)));let y=(0,d.ref)(``),b=(0,d.ref)(v.value.pages[0]?.id??``),x=(0,d.ref)(!1),S=(0,d.ref)([]),C=new Map,dt=(0,d.ref)(!1),ft=(0,d.ref)(``),w=(0,d.ref)(!1),T=(0,d.ref)(),pt=(0,d.ref)(),mt=(0,d.ref)(``),ht=(0,d.ref)(!1),gt=(0,d.ref)(``),_t=(0,d.ref)(!1),vt=(0,d.ref)({values:{},variables:[]}),E=(0,d.ref)(1),D=(0,d.ref)(!1),yt=(0,d.ref)(!1),bt=(0,d.ref)(!1),O=(0,d.ref)(!1),k=(0,d.ref)(!1),xt=(0,d.ref)(),A=(0,d.ref)(!1),St=(0,d.ref)(`header`),Ct=(0,d.ref)(!1),wt=(0,d.ref)({}),j=(0,d.ref)(``),M=(0,d.ref)(!1),N=(0,d.ref)(!1),Tt=(0,d.ref)(!1),Et=(0,d.ref)(!1),Dt=(0,d.ref)(!1),Ot=(0,d.ref)(!1),kt=(0,d.ref)(!1),At=(0,d.ref)(``),jt=(0,d.ref)(),Mt=(0,d.ref)(),Nt=(0,d.ref)(``),Pt=(0,d.ref)(!1),P=(0,d.ref)(),Ft=(0,d.ref)(),F=(0,d.ref)(),It=(0,d.ref)(),Lt=(0,d.ref)(!1),Rt,zt=(0,d.ref)(!1),Bt,Vt=(0,d.ref)(!1),Ht=(0,d.ref)(``),I=(0,d.ref)(),Ut=(0,d.ref)(),L=(0,d.ref)(),Wt=(0,d.ref)(),Gt=(0,d.ref)(),Kt=(0,d.ref)(),R=(0,d.ref)(``),z=(0,d.ref)(ge.createDraftCacheStatus(`idle`,`暂无本地草稿`)),qt=(0,d.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,d.computed)(()=>p.readonly||p.disabled),{panel:tn,query:nn,replacement:rn,matchCase:an,matches:on,currentIndex:sn,currentMatch:cn,feedback:ln,highlightQuery:un,open:dn,close:fn,navigate:pn,replaceCurrent:mn,replaceAll:hn,handleKeydown:gn}=ce.useTemplateAuthoring({pages:()=>v.value.pages,fileId:()=>_.value,readonly:()=>B.value,root:()=>Ke.value,pageRefs:C,activatePage:ra,beforeOpen:()=>{$(),Ga(),O.value=!1},focusPanel:()=>tt.value?.focusPanel(),focusTrigger:e=>tt.value?.focusTrigger(e)}),_n=(0,d.computed)(()=>!!(P.value||tn.value||I.value||L.value||M.value||N.value||Ct.value||Tt.value||Et.value||Dt.value||Ot.value||kt.value)),vn=(0,d.computed)(()=>!!p.enableDraftCache&&!B.value),yn=(0,d.computed)(()=>g.value.find(e=>e.id===_.value)??g.value[0]),bn=(0,d.computed)(()=>T.value?r.buildTemplatePreviewPages(T.value):[]),xn=(0,d.computed)(()=>(pt.value??[]).map(e=>({file:e,pages:r.buildTemplatePreviewPages(e.template)}))),Sn=(0,d.computed)(()=>xn.value.find(e=>e.file.id===mt.value)??xn.value[0]),V=(0,d.computed)(()=>v.value.pages.find(e=>e.id===b.value)??v.value.pages[0]),Cn=(0,d.computed)(()=>r.resolvePageSize(V.value?.pageSize,v.value.pageSize)),wn=(0,d.computed)(()=>x.value&&S.value.length===0),Tn=(0,d.computed)(()=>x.value?wn.value?`校验通过,正文变量与变量配置一致`:`发现 ${S.value.length} 个校验问题`:``),En=(0,d.computed)(()=>{let e=V.value?.title||`合同正文`;return`${h.value&&yn.value?`${yn.value.name} · `:``}${e} · ${Cn.value.label} · 共 ${v.value.pages.length} 页`}),Dn=(0,d.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[t.resolvePageDecorationPreset(v.value.pageDecorations)]),On=(0,d.computed)(()=>{let e=t.normalizePageDecorations(v.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),kn=(0,d.computed)(()=>Object.values(On.value).filter(Boolean).length),An=(0,d.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${ge.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``}}),jn=(0,d.computed)(()=>({"is-success":z.value.type===`saved`||z.value.type===`restored`,"is-warning":z.value.type===`too-large`,"is-error":z.value.type===`unavailable`||z.value.type===`read-failed`||z.value.type===`write-failed`})),Mn=(0,d.computed)(()=>`${Math.round(E.value*100)}%`),Nn=(0,d.computed)(()=>e.resolveFontFamilyOptions(p.fontFamilies,p.fontFamilyMode)),Pn=(0,d.computed)(()=>Nn.value.map(e=>({label:e.label,value:e.value}))),Fn=e.DEFAULT_TEXT_ALIGN_OPTIONS,In=[...e.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],Ln=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Rn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],zn=(0,d.computed)(()=>r.normalizePageSizeOptions(p.pageSizeOptions)),Bn=(0,d.computed)(()=>zn.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:r.getPageSizeKey(e)}))),Vn=(0,d.computed)(()=>r.getPageSizeKey(Cn.value)),Hn=(0,d.computed)(()=>p.draftCacheKey),H=(0,d.computed)(()=>v.value.variables.find(e=>e.key===y.value)),Un=(0,d.computed)(()=>{let e=[...p.variableTypes,...p.showAdvancedChoiceControls?r.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES:[],...p.showBuiltinSelectorControls?r.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES:[],...p.showCustomControls?r.DEFAULT_CUSTOM_FIELD_TYPES:[]].filter(e=>n.isContractTemplateFieldType(e?.type));return Array.from(new Map(e.map(e=>[e.type,e])).values())}),Wn=(0,d.computed)(()=>{let e=[...ee.SIGNING_LAYOUT_PRESET_KEYS.map(e=>ee.SIGNING_LAYOUT_PRESETS[e]),...(p.signingLayoutPresets??[]).filter(e=>!!e?.key)];return Array.from(new Map(e.map(e=>[e.key,e])).values())}),Gn=(0,d.computed)(()=>Un.value.map(e=>({...e,icon:ae.resolveFieldTypeIcon(e.type),group:e.type===`select`||e.type===`radio`?`advanced-choice`:e.type.endsWith(`-selector`)?`builtin-selector`:e.type===`custom`?`custom`:`basic`}))),U=(0,d.computed)(()=>r.normalizeContractTemplateMaxPages(p.maxPages)),Kn=(0,d.computed)(()=>v.value.pages.length>=U.value),qn=(0,d.computed)(()=>{let e=r.collectTemplateValueVariableKeys(v.value);return Array.from(t.collectPageDecorationVariableKeys(v.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:W}=_e.useAutoPagination({templateValue:v,readonlyState:B,isAutoPaginating:dt,pendingPaginationPageId:ft,activePageId:b,normalizedMaxPages:U,pageRefs:C,syncPageEditors:K,commitBodyChange:Ar,getPageSize:Mr,notifyPageLimit:Pr}),{saveDraftCache:Jn,loadDraftCache:Yn,clearDraftCache:Xn,restoreDraftCacheIfNeeded:Zn,stopDraftCacheTimer:Qn,restartDraftCacheTimer:$n,resetDraftFingerprint:er}=ye.useDraftCacheSession({draftCacheWritable:vn,multipleFilesMode:h,filesValue:g,activeFileIdValue:_,templateValue:v,draftCacheKey:Hn,draftCacheInterval:()=>p.draftCacheInterval,draftCacheMaxBytes:()=>p.draftCacheMaxBytes,pageSize:()=>p.pageSize,pageSizeOptions:()=>p.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:K,setActiveFileId:Y,emitFilesChange:J,commit:X,updateDraftCacheStatus:xr,scheduleAutoPaginate:W,activePageId:b,selectedVariableKey:y}),tr=(0,d.computed)(()=>{let e=Ht.value.trim().toLowerCase(),t=v.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),nr=(0,d.computed)(()=>Math.max(Re,Cn.value.width-Ie)),rr=(0,d.computed)(()=>Math.max(ze,Cn.value.height-Le)),G=(0,d.computed)(()=>wt.value[b.value]??dr()),ir=(0,d.computed)(()=>G.value.hasMixedBlockFormats?void 0:G.value.currentHeadingLevel??`paragraph`),ar=(0,d.computed)(()=>G.value.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),or=(0,d.computed)(()=>G.value.fontSize??r.DEFAULT_FIELD_STYLE.fontSize??14),sr=(0,d.computed)(()=>G.value.textColor||r.DEFAULT_FIELD_STYLE.color||`#1f2937`),cr=(0,d.computed)(()=>H.value?.style?.fontFamily||r.DEFAULT_FIELD_STYLE.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),lr=(0,d.computed)(()=>{let t=e.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),n=hr(or.value),r=hr(j.value),i=new Map;return r&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(r)&&i.set(r,{label:`使用 ${r}px`,value:r}),n&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(n)&&i.set(n,{label:r===n?`使用 ${n}px`:`${n}px`,value:n}),[...Array.from(i.values()),...t]});(0,d.watch)(()=>p.modelValue,e=>{if(!e||h.value)return;let t=r.normalizeTemplateValue(e,p.pageSize),n=r.constrainTemplatePageSizes(t,p.pageSizeOptions),i=l.serializeFingerprint(n)!==l.serializeFingerprint(v.value),a=l.serializeFingerprint(n),o=a===rt;o&&(rt=``),(i||!o)&&(v.value=n,g.value=c.replaceContractTemplateFile(g.value,_.value,n),b.value=n.pages[0]?.id??``,y.value=``,W(b.value)),l.serializeFingerprint(n)!==l.serializeFingerprint(t)&&(rt=a,m(`update:modelValue`,r.cloneTemplateValue(n)),m(`change`,r.cloneTemplateValue(n)))},{deep:!0}),(0,d.watch)(()=>p.files,e=>{if(!Array.isArray(e))return;let t=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),n=c.constrainContractTemplateFiles(t,p.pageSizeOptions).files,r=l.serializeFingerprint(n),i=l.serializeFingerprint(g.value);r===nt&&(nt=``);let a=c.resolveContractTemplateActiveFileId(n,p.activeFileId||_.value);if(r===i?a!==_.value&&Y(a,{syncCurrent:!1,shouldEmit:!1}):(g.value=n,Y(a,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0})),r!==l.serializeFingerprint(t)){let e=c.cloneContractTemplateFiles(n);nt=l.serializeFingerprint(e),m(`update:files`,e),m(`files-change`,c.cloneContractTemplateFiles(e))}},{deep:!0}),(0,d.watch)(()=>p.activeFileId,e=>{!h.value||!e||e===_.value||Y(e,{syncCurrent:!0,shouldEmit:!1})});function ur(e,t){let n=l.serializeFingerprint(g.value);q(!1);let i=c.normalizeContractTemplateFiles(g.value,void 0,e),{files:a}=c.constrainContractTemplateFiles(i,t),o=l.serializeFingerprint(a)!==n,s=a.find(e=>e.id===_.value);return s&&l.serializeFingerprint(s.template)!==l.serializeFingerprint(v.value)&&(v.value=r.cloneTemplateValue(s.template)),o&&(x.value=!1,S.value=[],J(a,``)),o}(0,d.watch)([()=>p.pageSize,()=>p.pageSizeOptions],([e,t])=>{if(h.value){ur(e,t),W(b.value);return}let n=r.normalizeTemplateValue(v.value,e),i=r.constrainTemplatePageSizes(n,t);l.serializeFingerprint(i)!==l.serializeFingerprint(v.value)&&X(i),W(b.value)},{deep:!0}),(0,d.watch)(U,()=>{W(v.value.pages[0]?.id)}),(0,d.watch)(B,e=>{e&&($(),M.value=!1,N.value=!1)}),(0,d.watch)(b,()=>{F.value=void 0}),(0,d.watch)([_n,A,w],()=>{Ja()}),(0,d.watch)(()=>[p.enableDraftCache,Hn.value,p.draftCacheInterval,B.value],()=>{er(),$n()}),(0,d.watch)(D,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,d.onMounted)(()=>{Zn(),$n(),W(b.value),window.addEventListener(`pointerdown`,no,!0),window.addEventListener(`pointerup`,$a),window.addEventListener(`keydown`,ao,!0),window.addEventListener(`keydown`,oo),window.addEventListener(`resize`,eo),window.addEventListener(`scroll`,ro,!0)}),(0,d.onBeforeUnmount)(()=>{_r(),Qt=!0,D.value&&typeof document<`u`&&(document.body.style.overflow=Xt??``),window.removeEventListener(`pointerdown`,no,!0),window.removeEventListener(`pointerup`,$a),window.removeEventListener(`keydown`,ao,!0),window.removeEventListener(`keydown`,oo),window.removeEventListener(`resize`,eo),window.removeEventListener(`scroll`,ro,!0),Bt!==void 0&&cancelAnimationFrame(Bt),Qn()});function dr(){return{isFocused:!1,canUndo:!1,canRedo:!1,isBold:!1,isItalic:!1,isUnderline:!1,isBulletList:!1,isOrderedList:!1,isTableActive:!1,textAlign:`left`,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:r.DEFAULT_FIELD_STYLE.fontSize??14,textColor:r.DEFAULT_FIELD_STYLE.color??`#1f2937`,selectionText:``,hasMixedBlockFormats:!1}}function fr(e){return e===`left`||e===`center`||e===`right`}function pr(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function mr(e,t=or.value){let n=Number(e);return Number.isFinite(n)?Math.min(Ve,Math.max(Be,Math.round(n))):t}function hr(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Ve,Math.max(Be,Math.round(n)))}function K(e=v.value){return{...e,pages:e.pages.map(e=>{let t=C.get(e.id);return{...e,contentHtml:t?.getHTML()??e.contentHtml,contentJson:t?.getJSON()??e.contentJson}})}}function gr(){$t=!1,en&&=(clearTimeout(en),void 0)}function _r(){let e=$t;gr(),e&&br()}function vr(){$t=!0,en&&clearTimeout(en),en=setTimeout(()=>{en=void 0,!(!$t||Qt)&&($t=!1,br())},Fe)}function yr(e){let t=v.value.pages,n=t.findIndex(t=>t.id===e.id);if(n<0)return;let r=t[n];if(r.contentHtml===e.contentHtml&&r.contentJson===e.contentJson&&r.title===e.title&&r.pageSize===e.pageSize)return;let i=t.slice();i[n]=e,v.value={...v.value,pages:i}}function br(){let e=K(),t=r.syncTemplateVariablesWithPages(e);y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),X(t)}function q(e=!1){_r();let t=r.cloneTemplateValue(K());if(!h.value)return t;let n=g.value.find(e=>e.id===_.value)?.template,i=l.serializeFingerprint(n)!==l.serializeFingerprint(t),a=c.replaceContractTemplateFile(g.value,_.value,t);return g.value=a,i&&e&&J(a),t}function J(e,t=_.value){if(!h.value)return;let n=c.cloneContractTemplateFiles(e);g.value=n,nt=l.serializeFingerprint(n),m(`update:files`,c.cloneContractTemplateFiles(n)),m(`files-change`,c.cloneContractTemplateFiles(n));let r=n.find(e=>e.id===t);r&&m(`file-change`,c.cloneContractTemplateFiles([r])[0])}function Y(e,t={}){let{syncCurrent:n,shouldEmit:i,forceRefresh:a}=ve.resolveSetActiveFileIdOptions(t),o=c.resolveContractTemplateActiveFileId(g.value,e),s=o!==_.value;if(n?q(!0):gr(),!s&&!a)return;let ee=g.value.find(e=>e.id===o);ee&&(_.value=o,v.value=r.cloneTemplateValue(ee.template),y.value=``,b.value=v.value.pages[0]?.id??``,wt.value={},C.clear(),ft.value=``,x.value=!1,S.value=[],w.value=!1,T.value=void 0,pt.value=void 0,er(),i&&s&&m(`update:activeFileId`,o),n&&s&&vn.value&&Jn(),(0,d.nextTick)(()=>{W(b.value)}))}function X(e){gr();let t=r.normalizeTemplateValue(e,p.pageSize),n=r.constrainTemplatePageSizes(t,p.pageSizeOptions);return v.value=n,x.value=!1,S.value=[],h.value?J(c.replaceContractTemplateFile(g.value,_.value,n)):(g.value=c.replaceContractTemplateFile(g.value,_.value,n),rt=l.serializeFingerprint(n),m(`update:modelValue`,r.cloneTemplateValue(n)),m(`change`,r.cloneTemplateValue(n))),n}function xr(e,t=e.type!==`unchanged`){z.value=e,t&&m(`draft-cache-change`,{...e})}function Sr(){return{...z.value}}function Cr(e,t){t?C.set(e,t):C.delete(e)}function wr(e){$(),Dt.value=!1,Z({type:`insert-signing-layout`,preset:ee.isSigningLayoutPresetKey(e.key)?e.key:void 0,options:e.options})}function Tr(e){$(),Z({type:`insert-signing-layout`,options:e})}function Er(){Dt.value=!1,kt.value=!0}function Dr(e){$(),Ot.value=!1,Z({type:`insert-signing-mark`,mark:{markType:e}})}function Z(e,t=V.value?.id??b.value){B.value||C.get(t)?.runCommand(e)}function Or(e){Z(e),$()}function kr(e){let t=P.value?.pageId;t&&(C.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function Ar(e){let t=X(r.syncTemplateVariablesWithPages(e));return y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),t}function jr(e){yr(e),vr(),W(e.id)}function Mr(e){return r.resolvePageSize(e?.pageSize,v.value.pageSize)}function Nr(e){if(B.value||!V.value)return;let t=zn.value.find(t=>r.getPageSizeKey(t)===e);if(!t)return;let n=V.value.id,i=r.resolvePageSize(t,v.value.pageSize);X({...v.value,pages:v.value.pages.map(e=>e.id===n?{...e,pageSize:i}:e)}),W(n)}function Pr(e){let t=U.value;R.value=`合同最多支持 ${t} 页`,m(`page-limit`,t,e)}function Fr(){if(B.value)return;if(Kn.value){Pr(`add`);return}let e=r.createDefaultPage(v.value.pages.length+1,Cn.value);X({...v.value,pages:[...v.value.pages,e]}),b.value=e.id}function Ir(e){if(B.value)return;if(Kn.value){Pr(`duplicate`);return}let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=r.cloneTemplateValue({pages:[e],variables:[],pageSize:v.value.pageSize}).pages[0],i=r.createBlankPage(t+2,Mr(e),n.contentHtml,n.contentJson);i.title=`${e.title||`第 ${t+1} 页`}副本`;let a=[...v.value.pages];a.splice(t+1,0,i),X({...v.value,pages:a}),b.value=i.id}function Lr(e){if(B.value||v.value.pages.length<=1)return;let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=v.value.pages.filter(t=>t.id!==e.id),r=Ar({...v.value,pages:n});b.value=r.pages[Math.min(t,r.pages.length-1)]?.id??``}function Rr(e){B.value||v.value.pages.length<=1||Te.Modal.confirm({title:`删除合同页面`,content:`删除页面会同时移除页面正文,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{Lr(e)}})}function zr(e){let t=new Set(v.value.variables.map(e=>e.key)),n=1;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function Br(e){let t=e.type??`text`;return r.createTemplateVariable({...e,type:t,key:e.key||zr(t),label:e.label||r.getFieldOption(t,Un.value).label},Un.value,p.defaultVariableStyle)}function Vr(e,t=V.value?.id??v.value.pages[0].id,n){if(B.value)return e;let r=C.get(t)?.insertVariable(e,n),i=!v.value.variables.some(t=>t.key===e.key);return X({...v.value,pages:r?v.value.pages.map(e=>e.id===r.id?r:e):v.value.pages,variables:i?[...v.value.variables,e]:v.value.variables}),y.value=e.key,b.value=t,i&&m(`variable-add`,e),W(t),e}function Hr(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 Ur(e={}){let t=s.normalizeContractImageDimension(jt.value),n=s.normalizeContractImageDimension(Mt.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function Wr(){At.value=``,jt.value=void 0,Mt.value=void 0,Nt.value=``}function Gr(e,t=V.value?.id??v.value.pages[0]?.id,n){let r=Hr({...e,src:e.src.trim()});if(!(B.value||!t||!i.isSafeContractImageUrl(r.src)||!r.src||!C.get(t)?.insertContentImage(r,n)))return b.value=t,y.value=``,r.src}function Kr(e){return e instanceof Error?e:Error(`图片处理失败`)}async function qr(e,t){t===`toolbar`&&(Pt.value=!0,Nt.value=``);try{let n=await s.processContractImageFile(e,{source:t,compression:p.imageCompression,upload:p.imageUpload});return Qt?void 0:n.src}catch(e){let n=Kr(e);t===`toolbar`&&(Nt.value=n.message),R.value=n.message,m(`image-error`,n,t);return}finally{t===`toolbar`&&(Pt.value=!1)}}let Jr=0;function Yr(e){let t=e.replacedFontFamilies.filter(Boolean);if(!t.length)return;let n=Date.now();n-Jr<800||(Jr=n,Te.message.info(`已将 ${t.length} 种外部字体(${t.join(`、`)})统一为合同标准字体,以保证 Mac 与 Windows 排版一致`))}async function Xr(e){return await qr(e,`paste`)??null}async function Zr(e,t={}){if(B.value)return;let n=V.value?.id??v.value.pages[0]?.id,r=n?C.get(n)?.getSelectionRange():void 0,a=typeof e==`string`?e.trim():await qr(e,`toolbar`);if(Qt)return;if(!a||!i.isSafeContractImageUrl(a)){typeof e==`string`&&(Nt.value=`请输入安全的图片 URL`);return}if(n&&!C.has(n))return;let o=Gr({...t,src:a},n,r);return o&&(Et.value=!1,Wr(),R.value=`已插入图片`),o}function Qr(){B.value||Pt.value||($(),Nt.value=``,et.value&&(et.value.value=``),et.value?.click())}async function $r(e){let t=e.target.files?.[0];t&&await Zr(t,Ur({alt:t.name}))}async function ei(){let e=At.value;await Zr(e,Ur())}function ti(e){bi(e),Tt.value=!1}function ni(){$(),Fr()}function ri(e,t,n,r){$(),Vr(Br({type:t}),e,{left:n,top:r})}function ii(e){$(),y.value=e}function ai(e){let n=v.value.variables.find(t=>t.id===e.id);if(!n)return;let i=e.key.trim();if(i!==n.key){let t=r.validateContractTemplateVariableKey(i,v.value.variables,e.id);if(t){R.value=t;return}}e={...e,key:i};let a=[...v.value.pages],o=n.key,s=``;C.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)}}),X({...v.value,pages:a,variables:v.value.variables.map(t=>t.id===e.id?e:t),...o!==e.key&&v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,o,e.key)}:{}}),y.value=e.key,W(s||b.value)}function Q(e){H.value&&ai({...H.value,...e,style:{...H.value.style,...e.style}})}function oi(e){B.value||!H.value||Q({key:e})}function si(e){B.value||(X({...v.value,pageDecorations:t.normalizePageDecorations(e)}),W(v.value.pages[0]?.id))}function ci(e){(e===`left`||e===`center`||e===`right`)&&Q({style:{textAlign:e}})}function li(e){(e===`solid`||e===`dashed`)&&Q({style:{borderStyle:e}})}function ui(e){(e===`contain`||e===`cover`||e===`fill`)&&Q({style:{objectFit:e}})}function di(e){Q({style:e})}function fi(t){di({fontFamily:String(t||``).trim()||e.DEFAULT_CONTRACT_FONT_FAMILY})}function pi(e){di({fontSize:mr(e,H.value?.style?.fontSize??14)})}function mi(e){H.value&&Q({multiline:e,rows:H.value.rows||3,lineHeight:H.value.lineHeight||28,style:e?{underline:!0}:void 0})}function hi(e){H.value&&Q({rows:Number(e||3),lineHeight:H.value.lineHeight||28})}function gi(e){if(B.value)return;let n=[...v.value.pages];C.forEach((t,r)=>{let i=t.removeVariable(e.key);if(i){let e=n.findIndex(e=>e.id===r);e>=0&&(n[e]=i)}}),X({...v.value,pages:n,variables:v.value.variables.filter(t=>t.id!==e.id),...v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,e.key)}:{}}),y.value=``}function _i(e){let t=(e.trim()||`variable`).replace(/\s+/g,`_`),n=new Set(v.value.variables.map(e=>e.key));if(!n.has(t))return t;let r=2;for(;n.has(`${t}_${r}`);)r+=1;return`${t}_${r}`}function vi(e){B.value||Vr(r.createTemplateVariable({...e,id:void 0,key:_i(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},Un.value,p.defaultVariableStyle))}function yi(e){return B.value?void 0:Vr(v.value.variables.find(t=>t.key===e.key)??r.createTemplateVariable(e,Un.value,p.defaultVariableStyle))}function bi(e){if(!B.value)return Vr(Br({type:e}))}function xi(e){if(B.value||!n.isContractTemplateFieldType(e))return;let t=P.value,r=Un.value.find(t=>t.type===e);if(!t||!r)return;let i=te.inferContextVariableLabel(t.leadingText)||r.label,a=te.resolveContextVariableWidth(t.selectionWidth,Re,nr.value),o=Si();Vr(Br({type:e,label:i,...a?{width:a}:{},...o?{style:o}:{}}),t.pageId),R.value=t.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function Si(){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 Ci(e){if(B.value)return;let t=P.value;t&&(Vr(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function wi(e){let t=e.type&&n.isContractTemplateFieldType(e.type)?e.type:`text`;return r.getFieldOption(t,Un.value).label}function Ti(){v.value.variables.length&&(Vt.value=!0,(0,d.nextTick)(()=>{Ra(),Ft.value?.focusBindSearch()}))}function Ei(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function Di(e){return E.value=Math.round(Math.min(Ne,Math.max(Me,Number.isFinite(e)?e:1))*100)/100,E.value}let{width:Oi}=(0,Ee.useElementSize)(qe),ki=(0,d.computed)(()=>Math.max(...v.value.pages.map(e=>Mr(e).width),r.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:Ai,applyAutoFit:ji,markUserAdjusted:Mi,userAdjusted:Ni}=o.useFitWidthZoom({viewportWidth:Oi,widestPageWidth:ki,padding:48,minZoom:Me,maxZoom:Ne,getZoom:()=>E.value,applyZoom:Di});function Pi(e){return Mi(),Di(e)}function Fi(){return ji()}function Ii(){return E.value}function Li(){Pi(E.value+Pe)}function Ri(){Pi(E.value-Pe)}function zi(){$(),Ga(),D.value=!D.value}(0,d.watch)(Oi,e=>{k.value&&!Ni.value&&e>0&&Ai()});function Bi(e){O.value?$e.value?.focus():e()}function Vi(){$(),Ga(),A.value=!1,Zt={fullscreen:D.value,sidebar:yt.value,inspector:bt.value,chrome:O.value,zoom:E.value,userAdjusted:Ni.value},D.value=!0,yt.value=!0,bt.value=!0,O.value=!0,k.value=!0,(0,d.nextTick)(()=>{B.value?xt.value?.focus():C.get(b.value)?.focus()})}function Hi(){let e=Zt;k.value=!1,Zt=void 0,e&&(D.value=e.fullscreen,yt.value=e.sidebar,bt.value=e.inspector,O.value=e.chrome,e.userAdjusted?Pi(e.zoom):ji(),(0,d.nextTick)(()=>Bi(()=>Ye.value?.focusImmersive())))}function Ui(){k.value?Hi():Vi()}function Wi(){$(),F.value=void 0;let e=q(!1);h.value?(pt.value=c.cloneContractTemplateFiles(g.value),T.value=void 0,mt.value=_.value||g.value[0]?.id||``):(T.value=r.cloneTemplateValue(e),pt.value=void 0,mt.value=``),w.value=!0}function Gi(){w.value=!1,T.value=void 0,pt.value=void 0,mt.value=``}function Ki(){return xa()}function qi(){$();let e=Ki();return gt.value=JSON.stringify(e,null,2),ht.value=!0,e}function Ji(){ht.value=!1}function Yi(){return a.buildTemplateVariableData(q(!1))}function Xi(){$();let e=Yi();return vt.value=e,_t.value=!0,e}function Zi(){_t.value=!1}function Qi(){$(),F.value=void 0,M.value=!1,N.value=!1,y.value=``,b.value=``,w.value=!1,T.value=void 0,pt.value=void 0,ht.value=!1,gt.value=``,_t.value=!1,vt.value={values:{},variables:[]},wt.value={},ft.value=``;let e=X(r.createBlankTemplate(r.DEFAULT_PAGE_SIZE));return b.value=e.pages[0]?.id??``,r.cloneTemplateValue(e)}function $i(){B.value||($(),Te.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面和模板变量,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{Qi()}}))}function ea(e){let t=K().pages,n=t.find(e=>e.id===b.value);return(n?[n,...t.filter(e=>e.id!==n.id)]:t).find(t=>t.contentHtml.includes(`data-key="${e.key}"`)||t.contentHtml.includes(`data-key='${e.key}'`))}function ta(e){$(),y.value=e.key;let t=ea(e);t&&(b.value=t.id,(0,d.nextTick)(()=>{C.get(t.id)?.scrollIntoVariable(e.key)}))}function na(e){let t=v.value.variables.find(t=>t.key===e||t.id===e);t&&ta(t)}function ra(e,t=!0){$(),b.value=e,t&&(0,d.nextTick)(()=>{C.get(e)?.scrollIntoPage()})}function ia(e){ra(e.pageId,!1),C.get(e.pageId)?.focusHeading(e.headingIndex)}function aa(e){v.value.pages.some(t=>t.id===e)&&ra(e)}function oa(){if(A.value){sa();return}A.value=!0}function sa(){A.value=!1,(0,d.nextTick)(()=>Bi(()=>Ye.value?.focusPageDecorations()))}function ca(){return _r(),r.cloneTemplateValue(K())}function la(e){W(X(r.normalizeTemplateValue(e,p.pageSize)).pages[0]?.id)}function ua(){let e=q(!1);return h.value?c.cloneContractTemplateFiles(g.value):c.cloneContractTemplateFiles(c.replaceContractTemplateFile(g.value,_.value,e))}function da(e,t){let n=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),r=c.constrainContractTemplateFiles(n,p.pageSizeOptions),i=g.value;it.value=!0,q(!1),g.value=r.files,Y(c.resolveContractTemplateActiveFileId(g.value,t??_.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.serializeFingerprint(i)!==l.serializeFingerprint(g.value)&&J(g.value,``)}function fa(e){if(B.value)return;it.value=!0,q(!0);let t=c.createContractTemplateFile(e||`合同文件 ${g.value.length+1}`,p.pageSize);return g.value=[...g.value,t],J(g.value,``),m(`file-add`,c.cloneContractTemplateFiles([t])[0]),Y(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function pa(e){!h.value&&!g.value.some(t=>t.id===e)||(it.value=!0,Y(e))}function ma(e,t){if(B.value)return;it.value=!0,q(!1);let n=c.renameContractTemplateFile(g.value,e,t),r=n.find(t=>t.id===e);if(r)return g.value=n,J(n,e),c.cloneContractTemplateFiles([r])[0]}function ha(e){if(B.value||g.value.length<=1)return;it.value=!0,q(!1);let t=g.value.find(t=>t.id===e);if(!t)return;let n=c.removeContractTemplateFile(g.value,e);if(n.length!==g.value.length)return g.value=n,J(n,``),m(`file-remove`,c.cloneContractTemplateFiles([t])[0]),_.value===e&&Y(c.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function ga(e){if(B.value||g.value.length<=1)return;let t=g.value.find(t=>t.id===e);t&&Te.Modal.confirm({title:`删除合同文件`,content:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{ha(e)}})}function _a(e,t){if(B.value)return;it.value=!0,q(!1);let n=g.value.findIndex(t=>t.id===e),r=c.moveContractTemplateFile(g.value,e,t),i=r.findIndex(t=>t.id===e),a=r[i];if(!(!a||n===i))return g.value=r,J(r,``),m(`file-move`,c.cloneContractTemplateFiles([a])[0],n,i),c.cloneContractTemplateFiles([a])[0]}function va(){q(!1);let e=Ca(h.value?g.value.flatMap(e=>r.validateTemplateValue(e.template,{maxPages:U.value}).map(t=>({...t,fileId:e.id}))):r.validateTemplateValue(K(),{maxPages:U.value}));return S.value=e,x.value=!0,m(`validate`,e),e}function ya(e){if(e.fileId&&e.fileId!==_.value){pa(e.fileId),(0,d.nextTick)(()=>ya({...e,fileId:void 0}));return}let n=t.resolvePageDecorationValidationPath(e);if(n){A.value=!0,(0,d.nextTick)(()=>Xe.value?.focusField(n));return}if(e.variableKey){na(e.variableKey);return}if(e.pageId){aa(e.pageId);return}let r=v.value.variables.find(t=>t.id===e.id||t.key===e.id);if(r){ta(r);return}v.value.pages.some(t=>t.id===e.id)&&ra(e.id)}function ba(e){return t.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`variable`?`变量`:`字段`}function xa(){return _r(),r.exportTemplateValue(K())}function Sa(){let e=q(!1),t=h.value?g.value:c.replaceContractTemplateFile(g.value,_.value,e);return c.exportContractTemplateFiles(t)}function Ca(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 wa(e){S.value=[...e],x.value=!0}function Ta(){S.value=[],x.value=!1}function Ea(){C.get(V.value?.id??b.value)?.focus()}function Da(e){fr(e)&&Z({type:`set-text-align`,value:e})}function Oa(e){(e===`paragraph`||pr(e))&&Z({type:`apply-block-style`,format:e})}function ka(e){let t=hr(e);t&&(Z({type:`set-font-size`,value:t}),j.value=``)}function Aa(e){let t=String(e||``).trim();if(!t){Z({type:`unset-font-family`});return}Z({type:`set-font-family`,value:t})}function ja(e){Ma(e.target?.value??``)}function Ma(e){let t=e.trim();t&&Z({type:`set-color`,value:t})}function Na(e){j.value=e}function Pa(){j.value.trim()&&ka(j.value)}function Fa(e){e.key===`Enter`&&(e.preventDefault(),Pa())}function Ia(e){e||(Pa(),j.value=``)}function La(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Vt.value=!1,Ht.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,304,300);P.value={pageId:e.pageId,x:t.x,y:t.y,hasSelection:e.hasSelection,selectionWidth:e.selectionWidth,leadingText:e.leadingText},(0,d.nextTick)(()=>{Ra(),Ft.value?.focusFirstButton()})}function Ra(){let e=Ft.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function za(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,L.value=void 0;let t=u.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,d.nextTick)(()=>{let e=Ut.value?.getMenuElement(),t=I.value;if(e&&t){let n=u.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}Ut.value?.focusFirstItem()})}function Ba(e){if(B.value)return;b.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,y.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,d.nextTick)(()=>{Va(),Wt.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function Va(){let e=Wt.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function Ha(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:s.normalizeContractImageDimension(Gt.value),height:s.normalizeContractImageDimension(Kt.value)})&&(R.value=`已更新图片尺寸`),$())}function Ua(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function Wa(e){e.type===`table`?za(e):e.type===`image`?Ba(e):La(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Vt.value=!1,Ht.value=``}function Ga(){fn(!1),M.value=!1,N.value=!1,Ct.value=!1,Tt.value=!1,Et.value=!1,Dt.value=!1,Ot.value=!1}function Ka(){Ga(),O.value=!O.value,(0,d.nextTick)(()=>Bi(()=>Ye.value?.focusChromeToggle()))}let qa=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function Ja(){let e=B.value||zt.value||Lt.value||_n.value||A.value||w.value,t=b.value,n=e?void 0:C.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-He,i=r>=12?r:n.bottom+He,a=(n.left+n.right)/2-380/2,o=u.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,d.nextTick)(()=>Ya(n))}function Ya(e){let t=It.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-He,a=i>=12?i:e.bottom+He,o=(e.left+e.right)/2-r.width/2,s=u.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function Xa(){let e=F.value?.pageId??b.value,t=C.get(e)?.getSelectionRange();Rt=t?{pageId:e,...t}:void 0,Lt.value=!0,F.value=void 0}function Za(e){if(!Lt.value)return;let t=Rt,n=C.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(Lt.value=!1,Rt=void 0)}function Qa(){!F.value||Bt!==void 0||(Bt=requestAnimationFrame(()=>{Bt=void 0,Ja()}))}function $a(){zt.value&&(zt.value=!1,Ja())}function eo(){$(),Qa()}function to(e,t){C.get(F.value?.pageId??b.value)?.requestTextContextMenu(e,t)}function no(e){let t=e.target instanceof Element?e.target:null;t?.closest(`.ProseMirror`)&&(zt.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(qa)||($(),F.value&&Xa()))}function ro(e){(e.target instanceof Element?e.target:null)?.closest(qa)||($(),Qa())}function io(e){let t=Ke.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 ao(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Ke.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}!_n.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),sa())}function oo(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!vn.value||!io(e))return;e.preventDefault(),Jn();return}if(e.key===`Escape`){if(Jt.has(e)){Jt.delete(e);return}let t=_n.value,n=t||A.value;if(!t&&A.value&&sa(),$(),Ga(),n&&e.stopPropagation(),!n){if(F.value){Xa(),e.stopPropagation();return}k.value?Hi():D.value=!1}}}function so(e,t){e===b.value&&t.selectedContentImage&&(y.value=``),e===b.value&&(Za(e),Ja());let n=wt.value[e];n&&we.isSameEditorState(n,t)||(wt.value={...wt.value,[e]:t})}function co(e=qt.value.rows,t=qt.value.cols){Z({type:`insert-table`,options:{rows:Math.min(10,Math.max(1,Math.round(Number(e)||3))),cols:Math.min(10,Math.max(1,Math.round(Number(t)||3))),withHeaderRow:!!qt.value.withHeaderRow}}),M.value=!1,$()}let lo={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function uo(e){let t=I.value;if(!t)return;let n=()=>{Z(e,t.pageId),$()},r=lo[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),Te.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>C.get(t.pageId)?.focus()})}function fo(e){let t=Ut.value?.getMenuElement();if(!t)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation();let t=I.value?.pageId;$(),C.get(t??``)?.focus();return}let n=Array.from(t.querySelectorAll(`button:not(:disabled)`));if(!n.length)return;if(e.key===`Home`||e.key===`End`){e.preventDefault(),n[e.key===`Home`?0:n.length-1]?.focus();return}if(![`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`].includes(e.key))return;let r=(Math.max(0,n.indexOf(document.activeElement))+(e.key===`ArrowUp`||e.key===`ArrowLeft`?-1:1)+n.length)%n.length;e.preventDefault(),n[r]?.focus()}function po(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),C.get(t??``)?.focus()}function mo(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),C.get(t??``)?.focus()}function ho(e){Z({type:e}),N.value=!1,$()}return Ue({getValue:ca,setValue:la,getFiles:ua,setFiles:da,addFile:fa,selectFile:pa,renameFile:ma,removeFile:ha,moveFile:_a,validate:va,exportTemplate:xa,exportFiles:Sa,getSubmitData:Ki,clearTemplate:Qi,saveDraftCache:Jn,loadDraftCache:Yn,clearDraftCache:Xn,getDraftCacheStatus:Sr,insertVariable:yi,insertImage:Zr,focus:Ea,openPreview:Wi,closePreview:Gi,openSubmitDataViewer:qi,closeSubmitDataViewer:Ji,getVariableData:Yi,openVariableDataViewer:Xi,closeVariableDataViewer:Zi,setServerValidationErrors:wa,clearValidationErrors:Ta,scrollToVariable:na,scrollToPage:aa,setZoom:Pi,resetZoom:Fi,getZoom:Ii,fitWidth:Ai}),(e,t)=>((0,d.openBlock)(),(0,d.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Ke,class:(0,d.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":f.disabled,"is-readonly":B.value,"is-fullscreen":D.value,"is-immersive":k.value}]),style:(0,d.normalizeStyle)(Ge.value),onKeydownCapture:t[31]||=(...e)=>(0,d.unref)(gn)&&(0,d.unref)(gn)(...e)},[h.value?((0,d.openBlock)(),(0,d.createBlock)(be.default,{key:0,files:g.value,"active-file-id":_.value,readonly:B.value,onSelect:pa,onAdd:t[0]||=e=>fa(),onRename:ma,onRemove:ga,onMove:_a},null,8,[`files`,`active-file-id`,`readonly`])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{class:(0,d.normalizeClass)([`gd-contract-template-designer__layout`,{"is-sidebar-collapsed":yt.value,"is-inspector-collapsed":bt.value}])},[(0,d.createVNode)(xe.default,{collapsed:yt.value,pages:v.value.pages,variables:v.value.variables,"decoration-variable-keys":qn.value,"active-page-id":b.value,"selected-variable-key":y.value,"normalized-max-pages":U.value,"page-limit-reached":Kn.value,"selected-page":V.value,"selected-page-size":Cn.value,"normalized-page-size-options":zn.value,"page-size-options":Bn.value,"selected-page-size-option-value":Vn.value,readonly:B.value,"get-page-size":Mr,onToggle:t[1]||=e=>yt.value=!yt.value,onAddPage:Fr,onActivatePage:ra,onNavigateOutline:ia,onDuplicatePage:Ir,onRemovePage:Rr,onPatchPageFormat:Nr,onScrollToVariable:ta},null,8,[`collapsed`,`pages`,`variables`,`decoration-variable-keys`,`active-page-id`,`selected-variable-key`,`normalized-max-pages`,`page-limit-reached`,`selected-page`,`selected-page-size`,`normalized-page-size-options`,`page-size-options`,`selected-page-size-option-value`,`readonly`]),(0,d.createElementVNode)(`main`,{ref_key:`workspaceElement`,ref:Je,class:`gd-contract-template-designer__workspace`},[(0,d.withDirectives)((0,d.createElementVNode)(`div`,{id:Qe,class:`gd-contract-template-designer__workspace-chrome`},[(0,d.createVNode)(ie.default,{ref_key:`workspaceHeaderElement`,ref:Ye,summary:En.value,"draft-cache-status-text":An.value,"draft-cache-status-class":jn.value,"show-draft-cache-status":f.showDraftCacheStatus,"show-clear-button":f.showClearButton,"show-submit-data-viewer":f.showSubmitDataViewer,"show-variable-data-viewer":f.showVariableDataViewer,readonly:B.value,"zoom-percent":Mn.value,"zoom-out-disabled":E.value<=Me,"zoom-in-disabled":E.value>=Ne,"is-fullscreen":D.value,immersive:k.value,"page-decorations-open":A.value,"page-decorations-studio-id":Ze,"page-decorations-preset-label":Dn.value,"page-decorations-enabled-count":kn.value,"page-decorations-enabled-states":On.value,"chrome-controls-id":Qe,onZoomOut:Ri,onZoomIn:Li,onFitWidth:(0,d.unref)(Ai),onResetZoom:Fi,onToggleFullscreen:zi,onToggleImmersive:Ui,onClear:$i,onValidate:va,onPreview:Wi,onSubmitData:qi,onVariableData:Xi,onTogglePageDecorations:oa,onToggleChrome:Ka},{authoring:(0,d.withCtx)(()=>[(0,d.createVNode)(se.default,{ref_key:`authoringBarElement`,ref:tt,compact:``,query:(0,d.unref)(nn),"onUpdate:query":t[2]||=e=>(0,d.isRef)(nn)?nn.value=e:null,replacement:(0,d.unref)(rn),"onUpdate:replacement":t[3]||=e=>(0,d.isRef)(rn)?rn.value=e:null,"match-case":(0,d.unref)(an),"onUpdate:matchCase":t[4]||=e=>(0,d.isRef)(an)?an.value=e:null,panel:(0,d.unref)(tn),readonly:B.value,total:(0,d.unref)(on).length,"current-index":(0,d.unref)(sn),"current-page":(0,d.unref)(cn)?(0,d.unref)(cn).pageIndex+1:void 0,feedback:(0,d.unref)(ln),onOpen:(0,d.unref)(dn),onClose:t[5]||=e=>(0,d.unref)(fn)(),onNavigate:(0,d.unref)(pn),onReplaceCurrent:(0,d.unref)(mn),onReplaceAll:(0,d.unref)(hn)},null,8,[`query`,`replacement`,`match-case`,`panel`,`readonly`,`total`,`current-index`,`current-page`,`feedback`,`onOpen`,`onNavigate`,`onReplaceCurrent`,`onReplaceAll`])]),_:1},8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-data-viewer`,`show-variable-data-viewer`,`readonly`,`zoom-percent`,`zoom-out-disabled`,`zoom-in-disabled`,`is-fullscreen`,`immersive`,`page-decorations-open`,`page-decorations-preset-label`,`page-decorations-enabled-count`,`page-decorations-enabled-states`,`onFitWidth`]),(0,d.createVNode)(oe.default,{"variable-insert-popover-open":Tt.value,"onUpdate:variableInsertPopoverOpen":t[6]||=e=>Tt.value=e,"signing-layout-popover-open":Dt.value,"onUpdate:signingLayoutPopoverOpen":t[7]||=e=>Dt.value=e,"signing-mark-popover-open":Ot.value,"onUpdate:signingMarkPopoverOpen":t[8]||=e=>Ot.value=e,"image-insert-popover-open":Et.value,"onUpdate:imageInsertPopoverOpen":t[9]||=e=>Et.value=e,"image-insert-url":At.value,"onUpdate:imageInsertUrl":t[10]||=e=>At.value=e,"image-insert-width":jt.value,"onUpdate:imageInsertWidth":t[11]||=e=>jt.value=e,"image-insert-height":Mt.value,"onUpdate:imageInsertHeight":t[12]||=e=>Mt.value=e,"table-insert-popover-open":M.value,"onUpdate:tableInsertPopoverOpen":t[13]||=e=>M.value=e,"table-actions-popover-open":N.value,"onUpdate:tableActionsPopoverOpen":t[14]||=e=>N.value=e,"table-insert-draft":qt.value,"onUpdate:tableInsertDraft":t[15]||=e=>qt.value=e,"toolbar-more-open":Ct.value,"onUpdate:toolbarMoreOpen":t[16]||=e=>Ct.value=e,readonly:B.value,"editor-state":G.value,"current-block-format":ir.value,"block-format-options":In,"font-family-select-options":Pn.value,"current-editor-font-family":ar.value,"font-size-preset-options":lr.value,"current-editor-font-size":or.value,"editor-font-size-search-value":j.value,"current-editor-text-color":sr.value,"body-control-tool-items":Gn.value,"signing-layout-presets":Wn.value,"page-limit-reached":Kn.value,"normalized-max-pages":U.value,"image-processing":Pt.value,"image-insert-error":Nt.value,onCommand:t[17]||=e=>Z(e),onPatchBlockFormat:Oa,onPatchFontFamily:Aa,onPatchFontSize:ka,onPatchColor:ja,onPatchTextAlign:Da,onInsertVariable:ti,onInsertSigningLayout:wr,onInsertSigningMark:Dr,onOpenSigningLayoutCustom:Er,onOpenImageFile:Qr,onInsertImageUrl:ei,onAddPage:Fr,onInsertTable:co,onTableAction:ho,onFontSizeSearch:Na,onFontSizeCommit:Pa,onFontSizeDropdownChange:Ia,onFontSizeKeydown:Fa},null,8,`variable-insert-popover-open.signing-layout-popover-open.signing-mark-popover-open.image-insert-popover-open.image-insert-url.image-insert-width.image-insert-height.table-insert-popover-open.table-actions-popover-open.table-insert-draft.toolbar-more-open.readonly.editor-state.current-block-format.font-family-select-options.current-editor-font-family.font-size-preset-options.current-editor-font-size.editor-font-size-search-value.current-editor-text-color.body-control-tool-items.signing-layout-presets.page-limit-reached.normalized-max-pages.image-processing.image-insert-error`.split(`.`))],512),[[d.vShow,!O.value]]),O.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(Te.Tooltip),{key:0,title:`展开工具区`},{default:(0,d.withCtx)(()=>[(0,d.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:$e,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":Qe,onClick:Ka},[(0,d.createVNode)((0,d.unref)(De.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,d.createCommentVNode)(``,!0),k.value&&!A.value?((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:xt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:Hi},[(0,d.createVNode)((0,d.unref)(De.CompressOutlined),{"aria-hidden":`true`}),t[32]||=(0,d.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),t[33]||=(0,d.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,d.createCommentVNode)(``,!0),x.value?((0,d.openBlock)(),(0,d.createElementBlock)(`section`,Oe,[(0,d.createVNode)((0,d.unref)(Te.Alert),{type:wn.value?`success`:`error`,message:Tn.value,"show-icon":``},null,8,[`type`,`message`]),S.value.length?((0,d.openBlock)(),(0,d.createElementBlock)(`div`,ke,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(S.value,e=>((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:`${e.id}-${e.message}`,type:`button`,class:`gd-contract-template-designer__validation-item`,onClick:t=>ya(e)},[(0,d.createElementVNode)(`span`,null,(0,d.toDisplayString)(e.message),1),(0,d.createElementVNode)(`small`,null,(0,d.toDisplayString)(ba(e)),1)],8,Ae))),128))])):(0,d.createCommentVNode)(``,!0)])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:qe,class:`gd-contract-template-designer__canvas`},[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(v.value.pages,(e,n)=>((0,d.openBlock)(),(0,d.createBlock)(ne.default,{key:`${_.value}:${e.id}`,ref_for:!0,ref:t=>Cr(e.id,t),page:e,"page-index":n,"page-size":Mr(e),"page-decorations":v.value.pageDecorations,"total-pages":v.value.pages.length,variables:v.value.variables,"selected-variable-key":y.value,active:b.value===e.id,readonly:f.readonly,disabled:f.disabled,zoom:E.value,"process-image-file":Xr,"search-query":(0,d.unref)(un),"search-match-case":(0,d.unref)(an),"active-search-match":(0,d.unref)(cn)?.pageId===e.id?(0,d.unref)(cn):void 0,onPageUpdate:jr,onVariableDrop:ri,onVariableSelect:ii,onEditorFocus:t[18]||=e=>ra(e,!1),onEditorReady:(0,d.unref)(W),onEditorStateChange:so,onEditorContextMenu:Wa,onWordPaste:Yr,onVariableMoveBlocked:t[19]||=e=>R.value=`变量只能在当前页内移动,跨页移动尚未支持。`},null,8,[`page`,`page-index`,`page-size`,`page-decorations`,`total-pages`,`variables`,`selected-variable-key`,`active`,`readonly`,`disabled`,`zoom`,`search-query`,`search-match-case`,`active-search-match`,`onEditorReady`]))),128))],512)],512),(0,d.createVNode)(Se.default,{collapsed:bt.value,readonly:f.readonly,disabled:f.disabled,"body-control-tool-items":Gn.value,"selected-variable":H.value,variables:v.value.variables,"current-variable-font-family":cr.value,"font-family-select-options":Pn.value,"text-align-options":(0,d.unref)(Fn),"border-style-options":Ln,"object-fit-options":Rn,"selected-variable-width-max":nr.value,"selected-variable-height-max":rr.value,"min-font-size":Be,"max-font-size":Ve,"default-multiline-rows":(0,d.unref)(3),onToggle:t[20]||=e=>bt.value=!bt.value,onVariableDragStart:Ei,onInsertVariable:bi,onDuplicateVariable:vi,onRemoveVariable:gi,onPatchVariable:Q,onRenameVariable:oi,onPatchStyle:di,onPatchMultiline:mi,onPatchRows:hi,onPatchFontFamily:fi,onPatchFontSize:pi,onPatchTextAlign:ci,onPatchBorderStyle:li,onPatchObjectFit:ui},null,8,[`collapsed`,`readonly`,`disabled`,`body-control-tool-items`,`selected-variable`,`variables`,`current-variable-font-family`,`font-family-select-options`,`text-align-options`,`selected-variable-width-max`,`selected-variable-height-max`,`default-multiline-rows`])],2),(0,d.withDirectives)((0,d.createVNode)(Ce.default,{ref_key:`pageDecorationsStudioElement`,ref:Xe,id:Ze,open:A.value,decorations:v.value.pageDecorations,variables:v.value.variables,"font-family-options":Pn.value,readonly:f.readonly,disabled:f.disabled,"active-tab":St.value,"onUpdate:activeTab":t[21]||=e=>St.value=e,onChange:si,onClose:sa},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[d.vShow,A.value]]),((0,d.openBlock)(),(0,d.createBlock)(d.Teleport,{to:`body`},[I.value?((0,d.openBlock)(),(0,d.createBlock)(re.default,{key:0,ref_key:`tableContextMenuElement`,ref:Ut,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,d.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:uo,onKeydown:fo},null,8,[`capabilities`,`active-alignment`,`style`])):(0,d.createCommentVNode)(``,!0),L.value?((0,d.openBlock)(),(0,d.createBlock)(de.default,{key:1,ref_key:`imageContextMenuElement`,ref:Wt,width:Gt.value,"onUpdate:width":t[22]||=e=>Gt.value=e,height:Kt.value,"onUpdate:height":t[23]||=e=>Kt.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:Ua,onApply:Ha,onKeydown:mo},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,d.createCommentVNode)(``,!0),P.value?((0,d.openBlock)(),(0,d.createBlock)(le.default,{key:2,ref_key:`textContextMenuElement`,ref:Ft,"bind-open":Vt.value,"onUpdate:bindOpen":t[24]||=e=>Vt.value=e,"bind-keyword":Ht.value,"onUpdate:bindKeyword":t[25]||=e=>Ht.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":G.value,"current-editor-text-color":sr.value,"body-control-tool-items":Gn.value,"text-menu-bindable-variables":tr.value,"variables-count":v.value.variables.length,"resolve-bind-variable-type-label":wi,onCommand:Or,onClipboard:kr,onAddPage:ni,onInsertVariable:xi,onBindVariable:Ci,onOpenBindPanel:Ti,onKeydown:po,onPatchColor:Ma},null,8,[`bind-open`,`bind-keyword`,`x`,`y`,`has-selection`,`editor-state`,`current-editor-text-color`,`body-control-tool-items`,`text-menu-bindable-variables`,`variables-count`])):(0,d.createCommentVNode)(``,!0),F.value?((0,d.openBlock)(),(0,d.createBlock)(ue.default,{key:3,ref_key:`textBubbleElement`,ref:It,x:F.value.x,y:F.value.y,"editor-state":G.value,"font-size-preset-options":lr.value,"current-editor-font-size":or.value,"editor-font-size-search-value":j.value,"current-editor-text-color":sr.value,"text-align-options":(0,d.unref)(Fn),onCommand:Z,onPatchFontSize:ka,onPatchTextAlign:Da,onPatchColor:Ma,onFontSizeSearch:Na,onFontSizeCommit:Pa,onFontSizeDropdownChange:Ia,onFontSizeKeydown:Fa,onMore:to},null,8,[`x`,`y`,`editor-state`,`font-size-preset-options`,`current-editor-font-size`,`editor-font-size-search-value`,`current-editor-text-color`,`text-align-options`])):(0,d.createCommentVNode)(``,!0)])),(0,d.createElementVNode)(`input`,{ref_key:`imageFileInputElement`,ref:et,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:$r},null,544),(0,d.createElementVNode)(`span`,je,(0,d.toDisplayString)(R.value),1),(0,d.createVNode)(fe.default,{open:w.value,"onUpdate:open":t[26]||=e=>w.value=e,"preview-pages":bn.value,"preview-file-groups":xn.value,"preview-active-group":Sn.value,"preview-snapshot":T.value,"font-base-url":f.contractFontBaseUrl,onCancel:Gi,onSelectFile:t[27]||=e=>mt.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`,`font-base-url`]),(0,d.createVNode)(pe.default,{open:ht.value,"onUpdate:open":t[28]||=e=>ht.value=e,json:gt.value,onCancel:Ji},null,8,[`open`,`json`]),(0,d.createVNode)(me.default,{open:_t.value,"onUpdate:open":t[29]||=e=>_t.value=e,data:vt.value,"file-name":yn.value?.name,onCancel:Zi},null,8,[`open`,`data`,`file-name`]),(0,d.createVNode)(he.default,{open:kt.value,"onUpdate:open":t[30]||=e=>kt.value=e,disabled:B.value,onInsert:Tr},null,8,[`open`,`disabled`])],38))}});exports.default=f;
|