@guodun/antdv 1.7.12 → 1.7.13
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 +370 -294
- package/dist/es/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.mjs +219 -202
- package/dist/es/components/contract-signing-location/src/ContractSigningTemplatePage.vue.mjs +18 -18
- package/dist/es/components/contract-signing-location/src/template-source.mjs +62 -49
- package/dist/es/components/index.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/index.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.mjs +37 -42
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.mjs +69 -55
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.mjs +278 -270
- package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +344 -343
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1046 -1000
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.mjs +120 -74
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +133 -132
- package/dist/es/components/pro-contract-template-designer/src/utils/contract-layout-check.mjs +239 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/contract-print-document.mjs +95 -71
- package/dist/es/components/pro-contract-template-designer/src/utils/page-decorations.mjs +67 -76
- package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +96 -83
- package/dist/es/components/pro-contract-template-designer/src/utils/template-variable-render.mjs +23 -15
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/es/contract-print-css/index.mjs +122 -25
- package/dist/es/contract-print.mjs +2 -0
- package/dist/es/index.mjs +21 -20
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocation.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -1
- package/dist/lib/components/index.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/index.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
- package/dist/lib/components/pro-contract-template-designer/src/utils/contract-layout-check.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/contract-print-document.cjs +50 -28
- package/dist/lib/components/pro-contract-template-designer/src/utils/page-decorations.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +5 -5
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-variable-render.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/lib/contract-print-css/index.cjs +62 -18
- package/dist/lib/contract-print.cjs +1 -0
- package/dist/lib/index.cjs +1 -1
- package/dist/theme/icon.css +1 -1
- package/dist/theme/index.css +1 -1
- package/dist/types/components/contract-signing-location/src/ContractSigningLocation.vue.d.ts +9 -0
- package/dist/types/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.d.ts +7 -0
- package/dist/types/components/contract-signing-location/src/template-source.d.ts +6 -0
- package/dist/types/components/pro-contract-template-designer/index.d.ts +1 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.d.ts +2 -0
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +5 -1
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.d.ts +7 -2
- package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +2 -2
- package/dist/types/components/pro-contract-template-designer/src/types.d.ts +36 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/contract-layout-check.d.ts +104 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/contract-print-document.d.ts +4 -1
- package/dist/types/components/pro-contract-template-designer/src/utils/page-decorations.d.ts +2 -8
- package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +6 -1
- package/dist/types/contract-print-css/index.d.ts +70 -0
- package/dist/types/contract-print.d.ts +2 -0
- package/package.json +14 -2
package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../pro-contract-template-designer/src/ContractPrintIframe.cjs`),t=require(`../../pro-contract-template-designer/src/utils/page-decorations.cjs`);let n=require(`vue`);var r=[`data-page-id`,`data-template-page-index`,`data-page-width`,`data-page-height`],i={key:0,class:`gd-ant-contract-signing-location__template-warning`,role:`alert`},a=(0,n.defineComponent)({name:`ContractSigningTemplatePage`,__name:`ContractSigningTemplatePage`,props:{page:{},fontBaseUrl:{}},emits:[`status`,`metrics`],setup(a,{emit:o}){let s=a,c=o,l=(0,n.shallowRef)(0),u=(0,n.shallowRef)(0),d=(0,n.shallowRef)(`loading`),
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../pro-contract-template-designer/src/ContractPrintIframe.cjs`),t=require(`../../pro-contract-template-designer/src/utils/page-decorations.cjs`);let n=require(`vue`);var r=[`data-page-id`,`data-template-page-index`,`data-page-width`,`data-page-height`],i={key:0,class:`gd-ant-contract-signing-location__template-warning`,role:`alert`},a=(0,n.defineComponent)({name:`ContractSigningTemplatePage`,__name:`ContractSigningTemplatePage`,props:{page:{},fontBaseUrl:{}},emits:[`status`,`metrics`],setup(a,{emit:o}){let s=a,c=o,l=(0,n.shallowRef)(0),u=(0,n.shallowRef)(0),d=(0,n.shallowRef)(0),f=(0,n.shallowRef)(`loading`),p=(0,n.computed)(()=>({width:`${s.page.displayWidth}px`,minHeight:`${s.page.displayHeight}px`,height:`${Math.max(s.page.displayHeight,l.value)}px`})),m=(0,n.computed)(()=>t.buildPageDecorationClassNames(s.page.pageDecorations,s.page.pageNumber)),h=(0,n.computed)(()=>t.buildPageDecorationsHtml(s.page.pageDecorations,s.page.pageNumber,s.page.totalPages,s.page.decorationVariables,s.page.decorationValues)),g=(0,n.computed)(()=>u.value>1?`第 ${s.page.pageNumber} 页正文超出纸张 ${Math.round(u.value)}px,请回模板设计器调整后再指定位置。`:d.value>1?`第 ${s.page.pageNumber} 页正文超出纸张宽度 ${Math.round(d.value)}px,请回模板设计器调整后再指定位置。`:``),_=(0,n.computed)(()=>s.page.errors[0]||g.value),v=(0,n.computed)(()=>s.page.errors.length?`模板已安全降级展示`:`该页签署位置不可信`);function y(e){l.value=e.contentHeight,u.value=e.overflowHeight,d.value=e.overflowWidth,c(`metrics`,e),x()}function b(e,t){if(f.value=e,e===`error`){c(`status`,e,t);return}x()}function x(){if(f.value!==`ready`){c(`status`,f.value);return}if(u.value>1||d.value>1){c(`status`,`error`,g.value);return}c(`status`,`ready`)}return(t,o)=>((0,n.openBlock)(),(0,n.createElementBlock)(`section`,{class:`gd-ant-contract-signing-location__template-page`,"data-page-id":a.page.pageId,"data-template-page-index":a.page.pageIndex,"data-page-width":a.page.displayWidth,"data-page-height":a.page.displayHeight,style:(0,n.normalizeStyle)(p.value)},[(0,n.createVNode)(e.default,{"page-id":a.page.pageId,width:a.page.displayWidth,height:a.page.displayHeight,"padding-top":a.page.paddingTop,"padding-bottom":a.page.paddingBottom,"class-names":m.value,"decorations-html":h.value,"content-html":a.page.contentHtml,"font-base-url":a.fontBaseUrl,title:`第 ${a.page.pageNumber} 页合同签署底图`,onMetrics:y,onStatus:b},null,8,[`page-id`,`width`,`height`,`padding-top`,`padding-bottom`,`class-names`,`decorations-html`,`content-html`,`font-base-url`,`title`]),_.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,i,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)(v.value),1),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(_.value),1)])):(0,n.createCommentVNode)(``,!0)],12,r))}});exports.default=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./constants.cjs`),
|
|
1
|
+
const e=require(`../../../contract-print-css/index.cjs`),t=require(`./constants.cjs`),n=require(`../../pro-contract-template-designer/src/utils/page-decorations.cjs`),r=require(`../../pro-contract-template-designer/src/utils/template-renderer.cjs`),i=require(`../../pro-contract-template-designer/src/utils/contract-layout-check.cjs`);function a(e){return!!(e&&typeof e==`object`&&e.type===`template`)}function o(e){return a(e?.source)}function s(i){if(!a(i)||!f(i.template))return[];try{let a=i.template,o=Array.isArray(a.pages)?a.pages:[],s=r.normalizeRenderValues(a,i.values),c=d(a),l=o.length;return o.flatMap((i,o)=>{let u=r.buildTemplateRenderPages({...a,pages:[i]},s,{readonly:!0,disabled:!0,mode:`display`})[0];if(!u)return[];let d=p(i?.pageSize,a.pageSize,u),f=t.toContractSigningRulePageSize(d),m=o+1,h=e.resolveContractPagePadding(n.normalizePageDecorations(u.pageDecorations),m);return[{pageIndex:o,pageId:u.id,title:u.title,width:f.width||d.width,height:f.height||d.height,displayWidth:d.width,displayHeight:d.height,contentHtml:u.contentHtml,...u.pageDecorations?{pageDecorations:u.pageDecorations}:{},decorationVariables:u.decorationVariables,decorationValues:u.decorationValues,pageNumber:m,totalPages:l,paddingTop:h.top,paddingBottom:h.bottom,errors:c.filter(e=>!e.pageId||e.pageId===u.id).map(e=>e.message)}]})}catch{return[]}}function c(e,t){return s(t).map(t=>i.createContractTemplateLayoutPage({id:t.pageId,title:t.title,format:`Custom`,width:t.displayWidth,height:t.displayHeight,contentHtml:t.contentHtml,...t.pageDecorations?{pageDecorations:t.pageDecorations}:{},decorationVariables:t.decorationVariables,decorationValues:t.decorationValues},{fileId:e,pageIndex:t.pageIndex,pageNumber:t.pageNumber,totalPages:t.totalPages}))}function l(e){if(!a(e.source))return[];if(!f(e.source.template))return[{code:`CONTRACT_TEMPLATE_MISSING`,message:`文件 ${e.fileName||e.fileId} 缺少可渲染的合同模板`,fileId:e.fileId}];try{let t=Array.isArray(e.source.template.pages)?e.source.template.pages:[];return d(e.source.template).map(n=>{let r=n.pageId?t.findIndex(e=>e?.id===n.pageId):-1;return{code:`CONTRACT_${n.code||`TEMPLATE_INVALID`}`,message:`${e.fileName||e.fileId}:${n.message}`,fileId:e.fileId,...r>=0?{pageIndex:r}:{}}})}catch(t){return[{code:`CONTRACT_TEMPLATE_RENDER_FAILED`,message:`文件 ${e.fileName||e.fileId} 的模板数据无法安全渲染`,fileId:e.fileId,cause:t}]}}function u(e){return!e||!a(e.source)?``:l(e)[0]?.message??``}function d(e){return r.validateTemplateRenderStructure(e)}function f(e){return!!(e&&typeof e==`object`)}function p(e,t,n){return h(e)||h(t)||{width:g(e?.width,g(t?.width,n.width)),height:g(e?.height,g(t?.height,n.height))}}var m=[{pointWidth:595.5,pointHeight:842.25,cssWidth:794,cssHeight:1123},{pointWidth:842.25,pointHeight:595.5,cssWidth:1123,cssHeight:794},{pointWidth:419.25,pointHeight:595.5,cssWidth:559,cssHeight:794},{pointWidth:595.5,pointHeight:419.25,cssWidth:794,cssHeight:559},{pointWidth:842.25,pointHeight:1190.25,cssWidth:1123,cssHeight:1587},{pointWidth:1190.25,pointHeight:842.25,cssWidth:1587,cssHeight:1123},{pointWidth:612,pointHeight:792,cssWidth:816,cssHeight:1056},{pointWidth:612,pointHeight:1008,cssWidth:816,cssHeight:1344}];function h(e){let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n<=0)return;let r=m.find(e=>Math.abs(t-e.pointWidth)<=1.1&&Math.abs(n-e.pointHeight)<=1.1);return r?{width:r.cssWidth,height:r.cssHeight}:void 0}function g(e,t){let n=Number(e);return Number.isFinite(n)&&n>0?n:t}exports.buildContractSigningLayoutPages=c,exports.buildContractSigningTemplateRenderPages=s,exports.getContractSigningTemplateDisplayError=u,exports.isContractSigningTemplateFile=o,exports.isContractSigningTemplateSource=a,exports.validateContractSigningTemplateFile=l;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../hooks/setup-theme.cjs`),require(`./collapse-transtion/src/types.cjs`),require(`./collapse-transtion/index.cjs`),require(`./pro-modal/src/types.cjs`),require(`./pro-modal/hooks/useProModal.cjs`),require(`./pro-modal/index.cjs`),require(`./pro-title/src/types.cjs`),require(`./pro-title/index.cjs`),require(`./scroll-bar/src/types.cjs`),require(`./scroll-bar/index.cjs`),require(`./cover-scroll-bar/src/types.cjs`),require(`./cover-scroll-bar/index.cjs`),require(`./scale-virtual-list/index.cjs`),require(`./pro-tag/src/types.cjs`),require(`./pro-tag/index.cjs`),require(`./pro-picker/src/types.cjs`),require(`./pro-picker/index.cjs`),require(`./pro-area/src/types.cjs`),require(`./pro-area/hooks/use-pro-area.cjs`),require(`./pro-area/index.cjs`),require(`./pro-signature/src/types.cjs`),require(`./pro-signature/index.cjs`),require(`./pro-table/hooks/use-pro-table.cjs`),require(`./pro-table/index.cjs`),require(`./icon/index.cjs`),require(`./pro-upload/src/types.cjs`),require(`./pro-upload/src/hooks/useUpload.cjs`),require(`./pro-upload/index.cjs`),require(`./pro-loading/src/pro-loading.cjs`),require(`./plus-upload/index.cjs`),require(`./pro-overlay/index.cjs`),require(`./pro-selector/src/types.cjs`),require(`./pro-selector/src/ProUserSelector.cjs`),require(`./pro-selector/src/ProUserSelectorDrilldown.cjs`),require(`./pro-selector/src/components/user.cjs`),require(`./pro-selector/src/hooks/useUserSelector.cjs`),require(`./pro-selector/index.cjs`),require(`./pro-user-avatar/index.cjs`),require(`./role-selector/src/types.cjs`),require(`./role-selector/index.cjs`),require(`./dept-selector/src/types.cjs`),require(`./dept-selector/index.cjs`),require(`./pro-menu-tree/src/types.cjs`),require(`./pro-menu-tree/index.cjs`),require(`./pro-tag-group/src/types.cjs`),require(`./pro-tag-group/index.cjs`),require(`./pro-form-render/src/types.cjs`),require(`./pro-form-render/index.cjs`),require(`./pro-cell-group/src/types.cjs`),require(`./pro-cell/index.cjs`),require(`./pro-cell-group/index.cjs`),require(`./pro-selector-group/src/types.cjs`),require(`./pro-selector-group/index.cjs`),require(`./pro-dynamic-tags/index.cjs`),require(`./pro-drawer/src/types.cjs`),require(`./pro-drawer/index.cjs`),require(`./pro-contract-template-designer/src/utils/contract-print-document.cjs`),require(`./contract-signing-location/src/constants.cjs`),require(`./pro-contract-template-designer/src/utils/signing-mark.cjs`),require(`./pro-contract-template-designer/src/constants.cjs`),require(`./contract-signing-location/src/coordinates.cjs`),require(`./pro-contract-template-designer/src/types.cjs`),require(`./pro-contract-template-designer/src/utils/advanced-controls.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-designer.cjs`),require(`./pro-contract-template-designer/src/utils/image-url.cjs`),require(`./pro-contract-template-designer/src/utils/template-renderer.cjs`),require(`./contract-signing-location/src/template-source.cjs`),require(`./contract-signing-location/src/location-rules.cjs`),require(`./contract-signing-location/src/page-layout.cjs`),require(`./contract-signing-location/src/signing-visuals.cjs`),require(`./contract-signing-location/index.cjs`),require(`./pro-contract-template-designer/src/utils/content-image.cjs`),require(`./pro-contract-template-designer/src/utils/signing-layout-presets.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-draft-cache.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-files.cjs`),require(`./pro-contract-template-designer/index.cjs`),require(`./pro-contract-signing-flow/src/constants.cjs`),require(`./pro-contract-signing-flow/src/composables/use-contract-signing-flow.cjs`),require(`./pro-contract-signing-flow/index.cjs`),require(`./pro-contract-template-agent/src/composables/use-contract-template-agent.cjs`),require(`./pro-contract-template-agent/src/utils/contract-template-agent-adapter.cjs`),require(`./pro-contract-template-agent/index.cjs`),require(`./hooks/use-basic-app-config.cjs`);
|
|
1
|
+
require(`../hooks/setup-theme.cjs`),require(`./collapse-transtion/src/types.cjs`),require(`./collapse-transtion/index.cjs`),require(`./pro-modal/src/types.cjs`),require(`./pro-modal/hooks/useProModal.cjs`),require(`./pro-modal/index.cjs`),require(`./pro-title/src/types.cjs`),require(`./pro-title/index.cjs`),require(`./scroll-bar/src/types.cjs`),require(`./scroll-bar/index.cjs`),require(`./cover-scroll-bar/src/types.cjs`),require(`./cover-scroll-bar/index.cjs`),require(`./scale-virtual-list/index.cjs`),require(`./pro-tag/src/types.cjs`),require(`./pro-tag/index.cjs`),require(`./pro-picker/src/types.cjs`),require(`./pro-picker/index.cjs`),require(`./pro-area/src/types.cjs`),require(`./pro-area/hooks/use-pro-area.cjs`),require(`./pro-area/index.cjs`),require(`./pro-signature/src/types.cjs`),require(`./pro-signature/index.cjs`),require(`./pro-table/hooks/use-pro-table.cjs`),require(`./pro-table/index.cjs`),require(`./icon/index.cjs`),require(`./pro-upload/src/types.cjs`),require(`./pro-upload/src/hooks/useUpload.cjs`),require(`./pro-upload/index.cjs`),require(`./pro-loading/src/pro-loading.cjs`),require(`./plus-upload/index.cjs`),require(`./pro-overlay/index.cjs`),require(`./pro-selector/src/types.cjs`),require(`./pro-selector/src/ProUserSelector.cjs`),require(`./pro-selector/src/ProUserSelectorDrilldown.cjs`),require(`./pro-selector/src/components/user.cjs`),require(`./pro-selector/src/hooks/useUserSelector.cjs`),require(`./pro-selector/index.cjs`),require(`./pro-user-avatar/index.cjs`),require(`./role-selector/src/types.cjs`),require(`./role-selector/index.cjs`),require(`./dept-selector/src/types.cjs`),require(`./dept-selector/index.cjs`),require(`./pro-menu-tree/src/types.cjs`),require(`./pro-menu-tree/index.cjs`),require(`./pro-tag-group/src/types.cjs`),require(`./pro-tag-group/index.cjs`),require(`./pro-form-render/src/types.cjs`),require(`./pro-form-render/index.cjs`),require(`./pro-cell-group/src/types.cjs`),require(`./pro-cell/index.cjs`),require(`./pro-cell-group/index.cjs`),require(`./pro-selector-group/src/types.cjs`),require(`./pro-selector-group/index.cjs`),require(`./pro-dynamic-tags/index.cjs`),require(`./pro-drawer/src/types.cjs`),require(`./pro-drawer/index.cjs`),require(`./pro-contract-template-designer/src/utils/contract-print-document.cjs`),require(`./contract-signing-location/src/constants.cjs`),require(`./pro-contract-template-designer/src/utils/signing-mark.cjs`),require(`./pro-contract-template-designer/src/constants.cjs`),require(`./contract-signing-location/src/coordinates.cjs`),require(`./pro-contract-template-designer/src/types.cjs`),require(`./pro-contract-template-designer/src/utils/advanced-controls.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-designer.cjs`),require(`./pro-contract-template-designer/src/utils/image-url.cjs`),require(`./pro-contract-template-designer/src/utils/template-renderer.cjs`),require(`./pro-contract-template-designer/src/utils/contract-layout-check.cjs`),require(`./contract-signing-location/src/template-source.cjs`),require(`./contract-signing-location/src/location-rules.cjs`),require(`./contract-signing-location/src/page-layout.cjs`),require(`./contract-signing-location/src/signing-visuals.cjs`),require(`./contract-signing-location/index.cjs`),require(`./pro-contract-template-designer/src/utils/content-image.cjs`),require(`./pro-contract-template-designer/src/utils/signing-layout-presets.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-draft-cache.cjs`),require(`./pro-contract-template-designer/src/composables/use-template-files.cjs`),require(`./pro-contract-template-designer/index.cjs`),require(`./pro-contract-signing-flow/src/constants.cjs`),require(`./pro-contract-signing-flow/src/composables/use-contract-signing-flow.cjs`),require(`./pro-contract-signing-flow/index.cjs`),require(`./pro-contract-template-agent/src/composables/use-contract-template-agent.cjs`),require(`./pro-contract-template-agent/src/utils/contract-template-agent-adapter.cjs`),require(`./pro-contract-template-agent/index.cjs`),require(`./hooks/use-basic-app-config.cjs`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../utils/install.cjs`);require(`./src/utils/contract-print-document.cjs`),require(`./src/utils/signing-mark.cjs`),require(`./src/constants.cjs`),require(`./src/types.cjs`),require(`./src/utils/advanced-controls.cjs`),require(`./src/composables/use-template-designer.cjs`),require(`./src/utils/image-url.cjs`),require(`./src/utils/template-renderer.cjs`),require(`./src/utils/content-image.cjs`),require(`./src/utils/signing-layout-presets.cjs`),require(`./src/composables/use-template-draft-cache.cjs`),require(`./src/composables/use-template-files.cjs`);const t=require(`./src/ProContractTemplateDesigner.cjs`),n=require(`./src/ProContractTemplateRenderer.cjs`);require(`./style/index.cjs`);var r=e.withInstall(t.default),i=e.withInstall(n.default);exports.GdAntProContractTemplateRenderer=i,exports.default=r;
|
|
1
|
+
const e=require(`../utils/install.cjs`);require(`./src/utils/contract-print-document.cjs`),require(`./src/utils/signing-mark.cjs`),require(`./src/constants.cjs`),require(`./src/types.cjs`),require(`./src/utils/advanced-controls.cjs`),require(`./src/composables/use-template-designer.cjs`),require(`./src/utils/image-url.cjs`),require(`./src/utils/template-renderer.cjs`),require(`./src/utils/contract-layout-check.cjs`),require(`./src/utils/content-image.cjs`),require(`./src/utils/signing-layout-presets.cjs`),require(`./src/composables/use-template-draft-cache.cjs`),require(`./src/composables/use-template-files.cjs`);const t=require(`./src/ProContractTemplateDesigner.cjs`),n=require(`./src/ProContractTemplateRenderer.cjs`);require(`./style/index.cjs`);var r=e.withInstall(t.default),i=e.withInstall(n.default);exports.GdAntProContractTemplateRenderer=i,exports.default=r;
|
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractPrintIframe.cjs`),
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../contract-print-css/index.cjs`),t=require(`./ContractPrintIframe.cjs`),n=require(`./utils/page-decorations.cjs`),r=require(`./composables/use-template-designer.cjs`);let i=require(`vue`);var a={class:`gd-contract-template-designer__preview-page-shell`},o=[`data-page-id`,`data-page-format`,`data-page-label`,`data-page-width`,`data-page-height`],s={key:0,class:`gd-contract-template-designer__preview-font-error`,role:`alert`},c=(0,i.defineComponent)({name:`ContractTemplatePreviewPage`,__name:`ContractTemplatePreviewPage`,props:{page:{},fallbackPageSize:{},contentHtml:{},pageDecorations:{},pageNumber:{},totalPages:{},variables:{},fontBaseUrl:{}},setup(c){let l=c,u=(0,i.computed)(()=>r.resolvePageSize(l.page.pageSize,l.fallbackPageSize)),d=(0,i.computed)(()=>e.resolveContractPagePadding(n.normalizePageDecorations(l.pageDecorations),l.pageNumber)),f=(0,i.computed)(()=>({width:`${u.value.width}px`,height:`${u.value.height}px`})),p=(0,i.computed)(()=>n.buildPageDecorationClassNames(l.pageDecorations,l.pageNumber)),m=(0,i.computed)(()=>n.buildPageDecorationsHtml(l.pageDecorations,l.pageNumber,l.totalPages,l.variables)),h=(0,i.shallowRef)(``);function g(e,t){h.value=e===`error`?t||`合同排版度量校验失败`:``}return(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`article`,a,[(0,i.createElementVNode)(`section`,{class:`gd-contract-template-designer__preview-page`,"data-page-id":c.page.id,"data-page-format":u.value.format??`Custom`,"data-page-label":u.value.label??u.value.format??`自定义`,"data-page-width":u.value.width,"data-page-height":u.value.height,style:(0,i.normalizeStyle)(f.value)},[(0,i.createVNode)(t.default,{"page-id":c.page.id,"page-format":u.value.format,width:u.value.width,height:u.value.height,"padding-top":d.value.top,"padding-bottom":d.value.bottom,"class-names":p.value,"decorations-html":m.value,"content-html":c.contentHtml,"font-base-url":c.fontBaseUrl,title:`第 ${c.pageNumber} 页合同预览`,onStatus:g},null,8,[`page-id`,`page-format`,`width`,`height`,`padding-top`,`padding-bottom`,`class-names`,`decorations-html`,`content-html`,`font-base-url`,`title`]),h.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,s,(0,i.toDisplayString)(h.value),1)):(0,i.createCommentVNode)(``,!0)],12,o)]))}});exports.default=c;
|
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./ContractPrintIframe.cjs`),
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../contract-print-css/index.cjs`),t=require(`./ContractPrintIframe.cjs`),n=require(`./utils/page-decorations.cjs`),r=require(`./utils/contract-layout-check.cjs`);let i=require(`vue`);var a=[`data-render-page-id`],o={key:0,class:`gd-contract-template-renderer__page-meta`},s=[`data-page-id`,`data-page-format`,`data-page-width`,`data-page-height`],c={key:0,class:`gd-contract-template-renderer__font-error`,role:`alert`},l=(0,i.defineComponent)({name:`ContractTemplateRendererPage`,__name:`ContractTemplateRendererPage`,props:{page:{},index:{},total:{},zoom:{},showMeta:{type:Boolean},fontBaseUrl:{},activeKey:{},scrollRequest:{}},emits:[`status`,`metrics`,`interaction`],setup(l,{emit:u}){let d=l,f=u,p=(0,i.computed)(()=>({width:`${d.page.width*d.zoom}px`,height:`${d.page.height*d.zoom}px`})),m=(0,i.computed)(()=>e.resolveContractPagePadding(n.normalizePageDecorations(d.page.pageDecorations),d.index+1)),h=(0,i.computed)(()=>({width:`${d.page.width}px`,height:`${d.page.height}px`,transform:`scale(${d.zoom})`})),g=(0,i.computed)(()=>n.buildPageDecorationClassNames(d.page.pageDecorations,d.index+1)),_=(0,i.computed)(()=>n.buildPageDecorationsHtml(d.page.pageDecorations,d.index+1,d.total,d.page.decorationVariables,d.page.decorationValues)),v=(0,i.shallowRef)(``),y=(0,i.shallowRef)(),b=(0,i.computed)(()=>v.value?v.value:y.value?r.describeContractTemplateLayoutIssue({pageIndex:d.index,pageNumber:d.index+1,pageId:d.page.id,kind:`overflow`,overflowHeight:y.value.overflowHeight,overflowWidth:y.value.overflowWidth})[0]??``:``);function x(e,t){e===`loading`&&(y.value=void 0),v.value=e===`error`?r.describeContractTemplateLayoutIssue({pageIndex:d.index,pageNumber:d.index+1,pageId:d.page.id,kind:`measure-failed`,overflowHeight:0,overflowWidth:0,error:t})[0]??`无法确认排版,请稍后重试`:``,f(`status`,e,t)}function S(e){y.value=e,f(`metrics`,e)}return(e,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`article`,{class:`gd-contract-template-renderer__page-shell`,"data-render-page-id":l.page.id},[l.showMeta?((0,i.openBlock)(),(0,i.createElementBlock)(`header`,o,[(0,i.createElementVNode)(`strong`,null,`第 `+(0,i.toDisplayString)(l.index+1)+` / `+(0,i.toDisplayString)(l.total)+` 页`,1),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(l.page.title),1),(0,i.createElementVNode)(`small`,null,(0,i.toDisplayString)(l.page.format)+` · `+(0,i.toDisplayString)(l.page.width)+` × `+(0,i.toDisplayString)(l.page.height)+` px`,1)])):(0,i.createCommentVNode)(``,!0),(0,i.createElementVNode)(`div`,{class:`gd-contract-template-renderer__page-frame`,style:(0,i.normalizeStyle)(p.value)},[(0,i.createElementVNode)(`div`,{class:`gd-contract-template-renderer__print-page`,"data-page-id":l.page.id,"data-page-format":l.page.format,"data-page-width":l.page.width,"data-page-height":l.page.height,style:(0,i.normalizeStyle)(h.value)},[(0,i.createVNode)(t.default,{"page-id":l.page.id,"page-format":l.page.format,width:l.page.width,height:l.page.height,"padding-top":m.value.top,"padding-bottom":m.value.bottom,"class-names":g.value,"decorations-html":_.value,"content-html":l.page.contentHtml,"font-base-url":l.fontBaseUrl,"active-key":l.activeKey,"scroll-request":l.scrollRequest,title:`第 ${l.index+1} 页合同填写内容`,onInteraction:n[0]||=e=>f(`interaction`,e),onMetrics:S,onStatus:x},null,8,[`page-id`,`page-format`,`width`,`height`,`padding-top`,`padding-bottom`,`class-names`,`decorations-html`,`content-html`,`font-base-url`,`active-key`,`scroll-request`,`title`]),b.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,c,(0,i.toDisplayString)(b.value),1)):(0,i.createCommentVNode)(``,!0)],12,s)],4)],8,a))}});exports.default=l;
|
|
@@ -1 +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`),l=require(`@vueuse/core`),ee=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)([]),b=(0,s.ref)(!1),x=(0,s.ref)(!1),S=(0,s.ref)(``),C=(0,s.ref)(``),w=(0,s.ref)(``),xe=(0,s.ref)(0),T=(0,s.ref)(gt(f.zoom)),E=(0,s.ref)(``),D=(0,s.ref)(`all`),O=(0,s.ref)(!1),Se=(0,s.ref)(new Map),k=new Map,A=new Map,j=new Map,M=new Set,{width:Ce}=(0,l.useElementSize)(m),N=(0,s.computed)(()=>f.readonly||f.disabled),we=(0,s.computed)(()=>f.interactionMode===`inline`&&!N.value),Te=(0,s.computed)(()=>n.validateTemplateRenderStructure(f.template)),P=(0,s.computed)(()=>_.value?v.value:[...Te.value,...y.value]),F=(0,s.computed)(()=>(Array.isArray(f.template?.variables)?f.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Ee=(0,s.computed)(()=>{let e={...g.value};return F.value.forEach(n=>{let r=Ze(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),De=(0,s.computed)(()=>F.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),Oe=(0,s.computed)(()=>{let e=new Map;return P.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),I=(0,s.computed)(()=>n.buildTemplateRenderPages(f.template,we.value?be.value:Ee.value,{readonly:f.readonly,disabled:f.disabled,mode:we.value?`control`:`display`})),ke=(0,s.computed)(()=>{let e=new Map,t=new Set(F.value.map(e=>e.key));return I.value.forEach(n=>{dt(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),Ae=(0,s.computed)(()=>F.value.filter(ot)),je=(0,s.computed)(()=>{let e=I.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 F.value.forEach(e=>{let r=t.get(ke.value.get(e.key)??``)??n;r.allVariables.push(e),ot(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}))}),Me=(0,s.computed)(()=>I.value.length>0),L=(0,s.computed)(()=>F.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),R=(0,s.computed)(()=>F.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Ne=(0,s.computed)(()=>F.value.length?Math.round(L.value/F.value.length*100):0),Pe=(0,s.computed)(()=>_.value&&v.value.length===0),Fe=(0,s.computed)(()=>_.value?Pe.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:y.value.length?`发现 ${P.value.length} 个模板或填写问题`:Te.value.length?`模板存在 ${Te.value.length} 个问题,已安全降级展示`:``),Ie=(0,s.computed)(()=>_.value?P.value.length>0||x.value:P.value.length>0);(0,s.watch)(()=>f.template,e=>{z(n.normalizeRenderValues(e,f.values),!1),U();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(w.value)||(w.value=t.find(Boolean)??``),C.value&&!F.value.some(e=>e.key===C.value)&&qe()},{deep:!0}),(0,s.watch)(()=>[f.template?.variables,f.optionResolver,f.requester,f.allowedRemoteOrigins,f.remoteRequestTimeoutMs,f.remoteOptionsCacheTtlMs],()=>{$e()},{deep:!0,immediate:!0}),(0,s.watch)(()=>f.values,e=>{let t=n.normalizeRenderValues(f.template,e);_t(t,g.value)||(z(t,!1,{refreshInlineHtml:f.interactionMode!==`inline`}),U())},{deep:!0}),(0,s.watch)(we,e=>{e&&(be.value={...g.value})}),(0,s.watch)(()=>f.collapsiblePanel,e=>{e||(O.value=!1)}),(0,s.watch)(()=>f.zoom,e=>T.value=gt(e)),(0,s.watch)(I,e=>{!w.value&&e.length&&(w.value=e[0].id)},{immediate:!0});function z(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(be.value={...e}),t&&(p(`update:values`,{...g.value}),p(`change`,{...g.value}))}function B(e,t){if(!e||N.value)return;if(z({...g.value,[e]:t},!0,{refreshInlineHtml:f.interactionMode!==`inline`}),_.value){H();return}let r=F.value.find(t=>t.key===e);r&&(r.type??`text`)===`text`&&(y.value=[...y.value.filter(t=>t.variableKey!==e),...n.validateTemplateTextOverflow(r,t)],p(`validate`,P.value))}function Le(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`?B(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?B(n,t.value===``?void 0:t.valueAsNumber):B(n,t.value))}function Re(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(w.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&J(r)}function ze(e){let t=I.value.find(t=>t.id===e.pageId),n=F.value.some(t=>t.key===e.key);if(!(!t||!n||!dt(t.contentHtml).has(e.key))&&!(e.kind===`input`&&f.interactionMode!==`inline`)){if(w.value=e.pageId,e.kind===`input`){B(e.key,e.value);return}J(e.key)}}function Be(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),J(t.dataset.key))}function V(){return{...g.value}}function Ve(e){z(n.normalizeRenderValues(f.template,e))}function H(){let e=n.validateTemplateRenderValues(f.template,g.value);return W(e),p(`validate`,e),e}function He(){let e=n.resolveTemplateRenderSubmitErrors(f.template,g.value,f.validateOnSubmit);if((f.validateOnSubmit||e.length)&&(W(e),p(`validate`,e)),e.length)return Ye(e[0]),!1;let t=V();return p(`submit`,t),t}function Ue(){return z(n.buildInitialRenderValues(f.template)),U(),V()}function We(){N.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Ue()})}function U(){y.value=[],_.value=!1,v.value=[],b.value=!1,x.value=!1,K()}function W(e){if(y.value=[],v.value=e,_.value=!0,b.value=!1,e.length){x.value=!1,K();return}Ge()}let G;function K(){G&&=(clearTimeout(G),void 0)}function Ge(){K(),x.value=!0,G=setTimeout(()=>{x.value=!1,G=void 0},he)}function q(e){J(e,!0)}function Ke(e){f.interactionMode===`panel`&&(O.value&&=!1,F.value.some(t=>t.key===e)&&!Ae.value.some(t=>t.key===e)&&st())}function J(e,t=!1){if(!e)return;Ke(e),C.value=e,S.value=e;let n=ke.value.get(e);n&&(w.value=n),t&&(xe.value+=1),(0,s.nextTick)(()=>{Je(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 qe(){C.value=``,S.value=``,Je(``)}function Je(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 Ye(e){e.variableKey?(q(e.variableKey),f.interactionMode===`panel`&&(0,s.nextTick)(()=>lt(e.variableKey))):e.pageId&&Q(e.pageId)}function Xe(e){return Oe.value.get(e)??[]}function Y(e){return Se.value.get(e.key)??{options:e.options??[],loading:!1}}function Ze(e){let t=e.componentKey||e.type||``;return t?f.controlRegistry?.[t]:void 0}function X(e,t){let n=new Map(Se.value);n.set(e,t),Se.value=n}function Qe(e){p(`control-warning`,e)}async function $e(){k.forEach(e=>e.abort()),k.clear(),A.clear(),M.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 et(e,t):X(e.key,{options:t,loading:!1}),e.type===`custom`&&!Ze(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;M.has(n)||(M.add(n),Qe({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function et(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;k.set(e.key,i),X(e.key,{options:n,loading:!0});let a=tt(e),o=Date.now(),s=A.get(a);if(s&&s.expiresAt>o){X(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=j.get(a);o||(o=nt(e,r,c,i),j.set(a,o),o.finally(()=>{j.get(a)===o&&j.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let l=Math.max(0,Number(f.remoteOptionsCacheTtlMs)||0);l>0&&A.set(a,{options:s,expiresAt:Date.now()+l}),X(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:`高级控件选项加载失败`;X(e.key,{options:n,loading:!1,error:a}),Qe({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{k.get(e.key)===i&&k.delete(e.key)}}function tt(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function nt(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 rt(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 rt(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 it(e){let t=Y(e);return{variable:e,value:g.value[e.key],errors:Xe(e.key),active:C.value===e.key,readonly:f.readonly,disabled:f.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>B(e.key,t),focusVariable:()=>q(e.key)}}function at(){let e=F.value;if(!e.length)return;let t=e.findIndex(e=>e.key===C.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(g.value[i.key])){q(i.key);return}}}function ot(e){let t=E.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?D.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):D.value===`error`?Xe(e.key).length>0:!0:!1}function st(){E.value=``,D.value=`all`}function ct(e,t){let n=Ae.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&&(q(i),(0,s.nextTick)(()=>lt(i)))}function lt(e){(h.value?.querySelector(`[data-field-key="${$(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function ut(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(),ct(n,e.shiftKey?-1:1))}function dt(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 ft(){!f.collapsiblePanel||f.interactionMode!==`panel`||(O.value=!O.value)}function Z(e){let t=gt(e);return T.value=t,p(`update:zoom`,t),t}function pt(){return Z(1)}function mt(){return T.value}function ht(){let e=Math.max(...I.value.map(e=>e.width),1);return Z(Math.max(0,Ce.value-48)/e)}function Q(e){e&&(w.value=e,(0,s.nextTick)(()=>{m.value?.querySelector(`[data-render-page-id="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function gt(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 _t(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function vt(e){!(e.ctrlKey||e.metaKey)||!Me.value||(e.preventDefault(),Z(e.deltaY>0?T.value-u:T.value+u))}let yt;function bt(){yt?.removeEventListener(`wheel`,vt),yt=void 0}function xt(e){bt(),e&&(e.addEventListener(`wheel`,vt,{passive:!1}),yt=e)}return(0,s.watch)(m,e=>{xt(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{bt(),K(),k.forEach(e=>e.abort()),k.clear()}),ge({showValidation:W,focusError:e=>{Ye(e),e.variableKey&&(0,s.nextTick)(()=>lt(e.variableKey))},getValues:V,setValues:Ve,validate:H,submit:He,resetValues:Ue,scrollToVariable:q,setZoom:Z,resetZoom:pt,getZoom:mt,fitWidth:ht,scrollToPage:Q}),(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:Re,onKeydown:Be,onInput:Le,onChange:Le},[(0,s.renderSlot)(e.$slots,`fileBar`),Me.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:d.title,"filled-count":L.value,"total-count":F.value.length,"progress-percent":Ne.value,"required-missing-count":R.value,zoom:T.value,pages:I.value,"active-page-id":w.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":O.value,readonly:d.readonly,disabled:d.disabled,onZoomIn:t[0]||=e=>Z(T.value+u),onZoomOut:t[1]||=e=>Z(T.value-u),onResetZoom:pt,onFitWidth:ht,onSelectPage:Q,onValidate:H,onReset:We,onSubmit:He,onTogglePanel:ft},{extra:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`progress-percent`,`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),Ie.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:Pe.value,summary:Fe.value,errors:P.value,expanded:b.value,onToggle:t[2]||=e=>b.value=!b.value,onFocusError:Ye},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),Me.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":S.value},[(0,s.createElementVNode)(`div`,re,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(I.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:I.value.length,zoom:T.value,"show-meta":d.showPageMeta,"font-base-url":d.contractFontBaseUrl,"active-key":S.value,"scroll-request":xe.value,onInteraction:ze},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":O.value&&d.collapsiblePanel}])},[d.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:O.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":O.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!O.value,onClick:t[3]||=e=>O.value=!O.value},[O.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(ee.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(ee.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)(L.value)+` / `+(0,s.toDisplayString)(F.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(R.value?`${R.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:E.value,"onUpdate:value":t[4]||=e=>E.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(ee.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,le,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:D.value,"onUpdate:value":t[5]||=e=>D.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:ve},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!De.value,onClick:at},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:Ne.value,size:`small`,"show-info":!1},null,8,[`percent`])]),Ae.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:h,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:ut},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(je.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},it(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:g.value[t.key],errors:Xe(t.key),active:C.value===t.key,readonly:d.readonly,disabled:d.disabled,options:Y(t).options,loading:Y(t).loading,"load-error":Y(t).error,registration:Ze(t),"selector-http":d.selectorHttp,"selector-url-prefix":d.selectorUrlPrefix,onUpdateValue:e=>B(t.key,e),onFocusVariable:e=>q(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:F.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[E.value||D.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:st},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[E.value||D.value!==`all`?{name:`description`,fn:(0,s.withCtx)(()=>[t[8]||=(0,s.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,s.createCommentVNode)(``,!0)],2)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,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
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/advanced-controls.cjs`),n=require(`./utils/template-renderer.cjs`),r=require(`./utils/contract-layout-check.cjs`),i=require(`./ContractTemplateRendererField.cjs`),a=require(`./ContractTemplateRendererHeader.cjs`),o=require(`./ContractTemplateRendererPage.cjs`),s=require(`./ContractTemplateRendererValidation.cjs`);let c=require(`vue`),l=require(`ant-design-vue`),ee=require(`@vueuse/core`),u=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,d=.1,he=3e3,ge=128,f=(0,c.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(f,{expose:_e,emit:ve}){let p=f,m=ve,ye=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],be=(0,c.ref)(),h=(0,c.ref)(),xe=(0,c.ref)(),g=(0,c.ref)(n.normalizeRenderValues(p.template,p.values)),Se=(0,c.ref)({...g.value}),_=(0,c.ref)(!1),v=(0,c.ref)([]),y=(0,c.ref)([]),b=(0,c.ref)(!1),x=(0,c.ref)(!1),S=(0,c.ref)(``),C=(0,c.ref)(``),w=(0,c.ref)(``),Ce=(0,c.ref)(0),T=(0,c.ref)(St(p.zoom)),E=(0,c.ref)(``),D=(0,c.ref)(`all`),O=(0,c.ref)(!1),k=(0,c.ref)(new Map),A=new Map,j=new Map,M=new Map,N=new Set,P=new Map,{width:we}=(0,ee.useElementSize)(h),F=(0,c.computed)(()=>p.readonly||p.disabled),I=(0,c.computed)(()=>p.interactionMode===`inline`&&!F.value),L=(0,c.computed)(()=>n.validateTemplateRenderStructure(p.template)),R=(0,c.computed)(()=>_.value?v.value:[...L.value,...y.value]),z=(0,c.computed)(()=>(Array.isArray(p.template?.variables)?p.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Te=(0,c.computed)(()=>n.resolveTemplateDisplayValues(p.template,g.value,p.controlRegistry)),Ee=(0,c.computed)(()=>z.value.filter(e=>n.isEmptyRenderValue(g.value[e.key])).length),De=(0,c.computed)(()=>{let e=new Map;return R.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),B=(0,c.computed)(()=>n.buildTemplateRenderPages(p.template,I.value?Se.value:Te.value,{readonly:p.readonly,disabled:p.disabled,mode:I.value?`control`:`display`})),Oe=(0,c.computed)(()=>{let e=new Map,t=new Set(z.value.map(e=>e.key));return B.value.forEach(n=>{gt(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),V=(0,c.computed)(()=>z.value.filter(dt)),ke=(0,c.computed)(()=>{let e=B.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 z.value.forEach(e=>{let r=t.get(Oe.value.get(e.key)??``)??n;r.allVariables.push(e),dt(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}))}),H=(0,c.computed)(()=>B.value.length>0),Ae=(0,c.computed)(()=>z.value.filter(e=>!n.isEmptyRenderValue(g.value[e.key])).length),je=(0,c.computed)(()=>z.value.filter(e=>e.required&&n.isEmptyRenderValue(g.value[e.key])).length),Me=(0,c.computed)(()=>z.value.length?Math.round(Ae.value/z.value.length*100):0),Ne=(0,c.computed)(()=>_.value&&v.value.length===0),Pe=(0,c.computed)(()=>_.value?Ne.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:y.value.length?`发现 ${R.value.length} 个模板或填写问题`:L.value.length?`模板存在 ${L.value.length} 个问题,已安全降级展示`:``),Fe=(0,c.computed)(()=>_.value?R.value.length>0||x.value:R.value.length>0);(0,c.watch)(()=>p.template,e=>{U(n.normalizeRenderValues(e,p.values),!1),Je();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(w.value)||(w.value=t.find(Boolean)??``),C.value&&!z.value.some(e=>e.key===C.value)&&Qe()},{deep:!0}),(0,c.watch)(()=>[p.template?.variables,p.optionResolver,p.requester,p.allowedRemoteOrigins,p.remoteRequestTimeoutMs,p.remoteOptionsCacheTtlMs],()=>{it()},{deep:!0,immediate:!0}),(0,c.watch)(()=>p.values,e=>{let t=n.normalizeRenderValues(p.template,e);Ct(t,g.value)||(U(t,!1,{refreshInlineHtml:p.interactionMode!==`inline`}),Je())},{deep:!0}),(0,c.watch)(I,e=>{e&&(Se.value={...g.value})}),(0,c.watch)(()=>p.collapsiblePanel,e=>{e||(O.value=!1)}),(0,c.watch)(()=>p.zoom,e=>T.value=St(e)),(0,c.watch)(B,e=>{!w.value&&e.length&&(w.value=e[0].id)},{immediate:!0});function U(e,t=!0,n={}){g.value={...e},n.refreshInlineHtml!==!1&&(Se.value={...e}),t&&(m(`update:values`,{...g.value}),m(`change`,{...g.value}))}function W(e,t){if(!e||F.value)return;if(U({...g.value,[e]:t},!0,{refreshInlineHtml:p.interactionMode!==`inline`}),_.value){We();return}let r=z.value.find(t=>t.key===e);r&&(r.type??`text`)===`text`&&(y.value=[...y.value.filter(t=>t.variableKey!==e),...n.validateTemplateTextOverflow(r,t)],m(`validate`,R.value))}function Ie(e){if(p.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?W(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?W(n,t.value===``?void 0:t.valueAsNumber):W(n,t.value))}function Le(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(w.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&J(r)}function Re(e,t,n){let i=r.createContractTemplateLayoutPage(e,{pageIndex:t,pageNumber:t+1,totalPages:B.value.length}).key;for(P.delete(i),P.set(i,n);P.size>ge;){let e=P.keys().next().value;if(e===void 0)break;P.delete(e)}}function ze(e){return P.get(e)}function Be(e){let t=B.value.find(t=>t.id===e.pageId),n=z.value.some(t=>t.key===e.key);if(!(!t||!n||!gt(t.contentHtml).has(e.key))&&!(e.kind===`input`&&p.interactionMode!==`inline`)){if(w.value=e.pageId,e.kind===`input`){W(e.key,e.value);return}J(e.key)}}function Ve(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),J(t.dataset.key))}function He(){return{...g.value}}function Ue(e){U(n.normalizeRenderValues(p.template,e))}function We(){let e=n.validateTemplateRenderValues(p.template,g.value);return Ye(e),m(`validate`,e),e}function Ge(){let e=n.resolveTemplateRenderSubmitErrors(p.template,g.value,p.validateOnSubmit);if((p.validateOnSubmit||e.length)&&(Ye(e),m(`validate`,e)),e.length)return et(e[0]),!1;let t=He();return m(`submit`,t),t}function Ke(){return U(n.buildInitialRenderValues(p.template)),Je(),He()}function qe(){F.value||l.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Ke()})}function Je(){y.value=[],_.value=!1,v.value=[],b.value=!1,x.value=!1,K()}function Ye(e){if(y.value=[],v.value=e,_.value=!0,b.value=!1,e.length){x.value=!1,K();return}Xe()}let G;function K(){G&&=(clearTimeout(G),void 0)}function Xe(){K(),x.value=!0,G=setTimeout(()=>{x.value=!1,G=void 0},he)}function q(e){J(e,!0)}function Ze(e){p.interactionMode===`panel`&&(O.value&&=!1,z.value.some(t=>t.key===e)&&!V.value.some(t=>t.key===e)&&ft())}function J(e,t=!1){if(!e)return;Ze(e),C.value=e,S.value=e;let n=Oe.value.get(e);n&&(w.value=n),t&&(Ce.value+=1),(0,c.nextTick)(()=>{$e(e);let r=n?h.value?.querySelector(`[data-render-page-id="${Q(n)}"]`):void 0;t&&r?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),p.interactionMode===`panel`&&xe.value?.querySelector(`[data-field-key="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})})}function Qe(){C.value=``,S.value=``,$e(``)}function $e(e){h.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function et(e){e.variableKey?(q(e.variableKey),p.interactionMode===`panel`&&(0,c.nextTick)(()=>mt(e.variableKey))):e.pageId&&xt(e.pageId)}function tt(e){return De.value.get(e)??[]}function Y(e){return k.value.get(e.key)??{options:e.options??[],loading:!1}}function nt(e){let t=e.componentKey||e.type||``;return t?p.controlRegistry?.[t]:void 0}function X(e,t){let n=new Map(k.value);n.set(e,t),k.value=n}function rt(e){m(`control-warning`,e)}async function it(){A.forEach(e=>e.abort()),A.clear(),j.clear(),N.clear();let e=Array.isArray(p.template?.variables)?p.template.variables:[];await Promise.all(e.map(async e=>{if(!e?.key)return;let t=Array.isArray(e.options)?e.options.map(e=>({...e})):[];if(e.dataSource?await at(e,t):X(e.key,{options:t,loading:!1}),e.type===`custom`&&!nt(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;N.has(n)||(N.add(n),rt({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function at(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;A.set(e.key,i),X(e.key,{options:n,loading:!0});let a=ot(e),o=Date.now(),s=j.get(a);if(s&&s.expiresAt>o){X(e.key,{options:s.options,loading:!1}),A.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,p.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=M.get(a);o||(o=st(e,r,c,i),M.set(a,o),o.finally(()=>{M.get(a)===o&&M.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let l=Math.max(0,Number(p.remoteOptionsCacheTtlMs)||0);l>0&&j.set(a,{options:s,expiresAt:Date.now()+l}),X(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:`高级控件选项加载失败`;X(e.key,{options:n,loading:!1,error:a}),rt({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{A.get(e.key)===i&&A.delete(e.key)}}function ot(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function st(e,n,r,i){let a;if(n.kind===`resolver`){if(!p.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await p.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,p.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!p.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,p.remoteRequestTimeoutMs);a=await ct(p.requester({url:n.url,method:n.method||`GET`,params:n.params,headers:n.headers,timeoutMs:r,signal:i.signal,variable:e}),i,r)}return t.normalizeContractTemplateControlOptions(a,n.kind===`url`?n:void 0,e.type||`select`)}function ct(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 lt(e){let t=Y(e);return{variable:e,value:g.value[e.key],errors:tt(e.key),active:C.value===e.key,readonly:p.readonly,disabled:p.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>W(e.key,t),focusVariable:()=>q(e.key)}}function ut(){let e=z.value;if(!e.length)return;let t=e.findIndex(e=>e.key===C.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(g.value[i.key])){q(i.key);return}}}function dt(e){let t=E.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?D.value===`unfilled`?n.isEmptyRenderValue(g.value[e.key]):D.value===`error`?tt(e.key).length>0:!0:!1}function ft(){E.value=``,D.value=`all`}function pt(e,t){let n=V.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&&(q(i),(0,c.nextTick)(()=>mt(i)))}function mt(e){(xe.value?.querySelector(`[data-field-key="${Q(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function ht(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(),pt(n,e.shiftKey?-1:1))}function gt(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 _t(){!p.collapsiblePanel||p.interactionMode!==`panel`||(O.value=!O.value)}function Z(e){let t=St(e);return T.value=t,m(`update:zoom`,t),t}function vt(){return Z(1)}function yt(){return T.value}function bt(){let e=Math.max(...B.value.map(e=>e.width),1);return Z(Math.max(0,we.value-48)/e)}function xt(e){e&&(w.value=e,(0,c.nextTick)(()=>{h.value?.querySelector(`[data-render-page-id="${Q(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function St(e){let t=Number(e);return Number.isFinite(t)?Math.min(me,Math.max(pe,Math.round(t*100)/100)):1}function Q(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function Ct(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function wt(e){!(e.ctrlKey||e.metaKey)||!H.value||(e.preventDefault(),Z(e.deltaY>0?T.value-d:T.value+d))}let $;function Tt(){$?.removeEventListener(`wheel`,wt),$=void 0}function Et(e){Tt(),e&&(e.addEventListener(`wheel`,wt,{passive:!1}),$=e)}return(0,c.watch)(h,e=>{Et(e)},{immediate:!0}),(0,c.onBeforeUnmount)(()=>{Tt(),K(),A.forEach(e=>e.abort()),A.clear()}),_e({showValidation:Ye,getMountedLayoutMetrics:ze,focusError:e=>{et(e),e.variableKey&&(0,c.nextTick)(()=>mt(e.variableKey))},getValues:He,setValues:Ue,validate:We,submit:Ge,resetValues:Ke,scrollToVariable:q,setZoom:Z,resetZoom:vt,getZoom:yt,fitWidth:bt,scrollToPage:xt}),(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:be,class:(0,c.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":f.disabled,"is-readonly":f.readonly,"is-panel":f.interactionMode===`panel`,"is-inline":f.interactionMode===`inline`}]),onClick:Le,onKeydown:Ve,onInput:Ie,onChange:Ie},[(0,c.renderSlot)(e.$slots,`fileBar`),H.value?((0,c.openBlock)(),(0,c.createBlock)(a.default,{key:0,title:f.title,"filled-count":Ae.value,"total-count":z.value.length,"progress-percent":Me.value,"required-missing-count":je.value,zoom:T.value,pages:B.value,"active-page-id":w.value,"min-zoom":pe,"max-zoom":me,"show-toolbar":f.showToolbar,"show-validate-button":f.showValidateButton,"show-reset-button":f.showResetButton,"show-submit-button":f.showSubmitButton,"show-panel-toggle":f.interactionMode===`panel`&&f.collapsiblePanel,"panel-collapsed":O.value,readonly:f.readonly,disabled:f.disabled,onZoomIn:t[0]||=e=>Z(T.value+d),onZoomOut:t[1]||=e=>Z(T.value-d),onResetZoom:vt,onFitWidth:bt,onSelectPage:xt,onValidate:We,onReset:qe,onSubmit:Ge,onTogglePanel:_t},{extra:(0,c.withCtx)(()=>[(0,c.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`progress-percent`,`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,c.createCommentVNode)(``,!0),Fe.value?((0,c.openBlock)(),(0,c.createBlock)(s.default,{key:1,passed:Ne.value,summary:Pe.value,errors:R.value,expanded:b.value,onToggle:t[2]||=e=>b.value=!b.value,onFocusError:et},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,c.createCommentVNode)(``,!0),H.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:3,class:(0,c.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":f.interactionMode===`inline`}])},[(0,c.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:h,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":S.value},[(0,c.createElementVNode)(`div`,re,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(B.value,(e,t)=>((0,c.openBlock)(),(0,c.createBlock)(o.default,{key:e.id,page:e,index:t,total:B.value.length,zoom:T.value,"show-meta":f.showPageMeta,"font-base-url":f.contractFontBaseUrl,"active-key":S.value,"scroll-request":Ce.value,onInteraction:Be,onMetrics:n=>Re(e,t,n)},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`,`font-base-url`,`active-key`,`scroll-request`,`onMetrics`]))),128))])],8,ne),f.interactionMode===`panel`?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:0,class:(0,c.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":O.value&&f.collapsiblePanel}])},[f.collapsiblePanel?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Tooltip),{key:0,title:O.value?`展开填写面板`:`收起填写面板`},{default:(0,c.withCtx)(()=>[(0,c.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":O.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!O.value,onClick:t[3]||=e=>O.value=!O.value},[O.value?((0,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,ie)]),_:1},8,[`title`])):(0,c.createCommentVNode)(``,!0),(0,c.createElementVNode)(`div`,ae,[(0,c.createElementVNode)(`aside`,oe,[(0,c.createElementVNode)(`div`,se,[(0,c.createElementVNode)(`div`,ce,[(0,c.createElementVNode)(`div`,null,[t[6]||=(0,c.createElementVNode)(`strong`,null,`填写项`,-1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(Ae.value)+` / `+(0,c.toDisplayString)(z.value.length)+` 已填写`,1)]),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(je.value?`${je.value} 项必填未完成`:`必填项已完成`),1)]),(0,c.createVNode)((0,c.unref)(l.Input),{value:E.value,"onUpdate:value":t[4]||=e=>E.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,c.withCtx)(()=>[(0,c.createVNode)((0,c.unref)(u.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,c.createElementVNode)(`div`,le,[(0,c.createVNode)((0,c.unref)(l.Segmented),{value:D.value,"onUpdate:value":t[5]||=e=>D.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:ye},null,8,[`value`]),(0,c.createVNode)((0,c.unref)(l.Button),{size:`small`,disabled:!Ee.value,onClick:ut},{default:(0,c.withCtx)(()=>[...t[7]||=[(0,c.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,c.createVNode)((0,c.unref)(l.Progress),{percent:Me.value,size:`small`,"show-info":!1},null,8,[`percent`])]),V.value.length?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:xe,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:ht},[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(ke.value,t=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,c.createElementVNode)(`div`,ue,[(0,c.createElementVNode)(`strong`,null,(0,c.toDisplayString)(t.title),1),(0,c.createElementVNode)(`span`,null,(0,c.toDisplayString)(t.variables.length)+` / `+(0,c.toDisplayString)(t.totalCount)+` 项`,1)]),(0,c.createElementVNode)(`div`,de,[((0,c.openBlock)(!0),(0,c.createElementBlock)(c.Fragment,null,(0,c.renderList)(t.variables,t=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,c.renderSlot)(e.$slots,`field`,(0,c.mergeProps)({ref_for:!0},lt(t)),()=>[(0,c.createVNode)(i.default,{variable:t,value:g.value[t.key],errors:tt(t.key),active:C.value===t.key,readonly:f.readonly,disabled:f.disabled,options:Y(t).options,loading:Y(t).loading,"load-error":Y(t).error,registration:nt(t),"selector-http":f.selectorHttp,"selector-url-prefix":f.selectorUrlPrefix,onUpdateValue:e=>W(t.key,e),onFocusVariable:e=>q(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,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:z.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,c.unref)(l.Empty).PRESENTED_IMAGE_SIMPLE},(0,c.createSlots)({default:(0,c.withCtx)(()=>[E.value||D.value!==`all`?((0,c.openBlock)(),(0,c.createBlock)((0,c.unref)(l.Button),{key:0,type:`link`,size:`small`,onClick:ft},{default:(0,c.withCtx)(()=>[...t[9]||=[(0,c.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,c.createCommentVNode)(``,!0)]),_:2},[E.value||D.value!==`all`?{name:`description`,fn:(0,c.withCtx)(()=>[t[8]||=(0,c.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,c.createCommentVNode)(``,!0)],2)):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,te,[(0,c.createVNode)((0,c.unref)(l.Empty),{description:`暂无可渲染的合同页面`,image:(0,c.unref)(l.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=f;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),
|
|
2
|
-
`)}function _e(){let e=P.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)>ie)return;let i=Math.abs(r.left-n.left)/G.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ve(){let e=P.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof m.CellSelection||t instanceof h.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 ye(){let e=P.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 be(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function I(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 xe(e,t){let n=P.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return I(n.state.doc.resolve(r))}function Se(){let e=P.value;if(e)return I(e.state.selection.$from)}function Ce(e,t,n){let r=P.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof m.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=xe(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(m.CellSelection.create(r.state.doc,a))),!0):!1}function we(){let e=P.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 Te(){let e=P.value,t=e?.state.selection;if(!e||!(t instanceof m.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 Ee(e=P.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function L(e){let t=P.value;if(!t)return 0;let n=Ee(t.state.doc),r=n,i=e=>{r=Ee(e.doc)};return e===`delete-table-row`?(0,m.deleteRow)(t.state,i):e===`delete-table-column`?(0,m.deleteColumn)(t.state,i):(0,m.deleteTable)(t.state,i),Math.max(0,n-r)}function R(e){let t=P.value?.state.selection,n=!!(t&&!t.empty);y(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?_e():void 0,leadingText:ye()})}function De(e,t){R({pageId:v.page.id,clientX:e,clientY:t})}function Oe(e,t){y(`editor-context-menu`,{type:`image`,...e,image:t})}function ke(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:s.normalizeContractImageDimension(e.attrs.width),height:s.normalizeContractImageDimension(e.attrs.height)}}function z(){let e=P.value?.state.selection;if(e instanceof h.NodeSelection)return ke(e.node,e.from)}function Ae(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`&&y(`variable-select`,r.attrs.key),(!(e.state.selection instanceof h.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(h.NodeSelection.create(e.state.doc,t))),ke(r,t))}catch{return}}function B(e){y(`editor-context-menu`,{type:`table`,...e,capabilities:we(),activeAlignment:Te(),affectedVariableCounts:{deleteRow:L(`delete-table-row`),deleteColumn:L(`delete-table-column`),deleteTable:L(`delete-table`)}})}function je(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function V(){let e=P.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`&&je(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=V();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function Ne(){return V().length>1}function Pe(){return[`center`,`right`].find(e=>P.value?.isActive(`heading`,{textAlign:e})||P.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function H(){let e=P.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:Ne(),textAlign:Pe(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:he(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:ge(),selectedContentImage:z()}}function U(){y(`editor-state-change`,v.page.id,H())}(0,f.watch)(b,e=>{P.value?.setEditable(!e),U()}),(0,f.watch)(()=>v.page.contentHtml,e=>{W(e)});function W(e){if(!P.value||e===$()){T=void 0;return}if(M()){T=e;return}P.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),U()}let Fe=(0,f.computed)(()=>{let e=t.normalizePageDecorations(v.pageDecorations),n=v.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:`${v.pageSize.width}px`,height:`${v.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,v.pageSize.height-r-i)}px`}}),G=(0,f.computed)(()=>Math.max(.1,v.zoom||1)),Ie=(0,f.computed)(()=>({width:`${Math.ceil((v.pageSize.width+10)*G.value)}px`,height:`${Math.ceil((v.pageSize.height+40)*G.value)}px`})),Le=(0,f.computed)(()=>({"--gd-contract-page-zoom":String(G.value)})),Re=(0,f.computed)(()=>n.resolvePageSize(v.pageSize));function ze(e){if(v.readonly||v.disabled){e.preventDefault(),e.stopPropagation();return}let t=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(t){e.preventDefault(),e.stopPropagation(),y(`variable-drop`,v.page.id,t,e.clientX,e.clientY);return}let n=e.dataTransfer?.getData(g);n&&n!==v.page.id&&(e.preventDefault(),e.stopPropagation(),y(`variable-move-blocked`,v.page.id))}function Be(e,t){let n=P.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return o.insertTemplateVariableNode(n,e,r),Z(),K()}function Ve(e,t){let n=P.value;if(n)return c.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),K()}function He(e){let t=P.value,n=t?.state.selection;if(!t||!(n instanceof h.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:s.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let a=t.state.tr.setNodeMarkup(n.from,void 0,r);return a.setSelection(h.NodeSelection.create(a.doc,n.from)),t.view.dispatch(a),K()}function Ue(){let e=P.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function K(){return{...v.page,pageSize:Re.value,contentHtml:$(),contentJson:Q()??v.page.contentJson}}function We(e){if(!j())return{contentHtml:e.contentHtml,contentJson:e.contentJson};let t=$();return!M()&&e.contentHtml!==v.page.contentHtml&&e.contentHtml!==t?{contentHtml:e.contentHtml,contentJson:e.contentJson}:{contentHtml:t,contentJson:Q()}}function q(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function J(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Ge(e){return(0,ne.generateHTML)(q(e),N)}function Ke(){if(v.pageDecorations){let e=t.normalizePageDecorations(v.pageDecorations),n=v.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,v.pageSize.height-r-i)}let e=x.value;if(!e)return v.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,v.pageSize.height-r-i)}function qe(){let e=x.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=G.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(!P.value)return;let e=qe(),t=Ke();if(e.some(e=>e.top+e.height>t+1))return n.splitPageContentByMeasurements(Q()?.content,e,t)}function Je(){return!!Y()}function Ye(){let e=P.value;if(!e||!j()||M()||!e.view.hasFocus())return!1;let t=Y();if(!t)return!1;let n=0;for(let r=0;r<t.splitIndex;r++)n+=e.state.doc.child(r).nodeSize;if(t.currentContent.length>t.splitIndex){let r=e.state.doc.child(t.splitIndex),i=t.currentContent[t.splitIndex].content.length;for(let e=0;e<i;e++)n+=r.child(e).nodeSize;n+=1}return e.state.selection.ranges.every(e=>e.$from.pos>=n)}function Xe(e){return(!e||(0,f.toRaw)(e)===le)&&!se&&!M()&&!P.value?.view.hasFocus()&&J(Q()?.content)}function Ze(){if(!P.value||!j()||M())return;let e=Y();if(!e)return;let t=P.value,{doc:n,selection:r,storedMarks:a}=t.state,o=t.state.tr,s=0;for(let t=0;t<e.splitIndex;t++)s+=n.child(t).nodeSize;let c=s,l=s;if(e.currentContent.length>e.splitIndex){let t=n.child(e.splitIndex),r=e.currentContent[e.splitIndex].content.length;for(let e=0;e<r;e++)c+=t.child(e).nodeSize;l=c+1,o.delete(l,s+t.nodeSize-1),o.delete(c+2,o.doc.content.size)}else o.delete(s,n.content.size);let u=t.view.hasFocus()&&r.ranges.every(e=>e.$from.pos>=l)?r.map(t.schema.nodeFromJSON(q(e.overflowContent)),new i.Mapping([new i.StepMap([0,c,0])])):void 0;o.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(a);let ee=k+1;t.view.dispatch(o);let d=u&&{selection:u,storedMarks:a,isCurrent:()=>!E&&P.value===t&&!t.isDestroyed&&!b.value&&!M()&&t.view.hasFocus()&&k===ee};return{page:K(),overflowContent:e.overflowContent,overflowHtml:Ge(e.overflowContent),selection:d}}function Qe(e){if(!P.value||!j()||M()||!e.length)return;let t=P.value,n=t.schema.nodeFromJSON(q(e)).content,{doc:r,storedMarks:i}=t.state,a=t.state.tr;J(Q()?.content)?a.replaceWith(0,r.content.size,n):a.insert(0,n),a.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(i);let o=k+1;return t.view.dispatch(a),A=O?void 0:o,O=!1,K()}function $e(e,t){let n=P.value,r=A;if(A=void 0,!n||!j()||b.value||M()||r!==k||!e.isCurrent()||$()!==t)return;let i=h.Selection.fromJSON(n.state.doc,e.selection.toJSON()),a=k+1;n.view.dispatch(n.state.tr.setSelection(i).setStoredMarks(e.storedMarks?.map(e=>n.schema.markFromJSON(e.toJSON()))??null).setMeta(`addToHistory`,!1)),!(!e.isCurrent()||k!==a)&&(n.view.focus(),n.view.hasFocus()&&k===a&&n.commands.scrollIntoView())}function et(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 tt(e,t=e.key){if(!P.value)return;let n=o.buildTemplateVariableAttrs(e),r=!1;return P.value.commands.command(({tr:e,state:i,dispatch:a})=>(et(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),Z(),r?K():void 0}function nt(e){if(!P.value)return;let t=0;return P.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=et(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?K():void 0}function rt(){x.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function X(e){if(e)return Array.from(x.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function it(e){rt();let t=X(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),P.value?.commands.focus(),!0):!1}function Z(){rt(),X(v.selectedVariableKey)?.classList.add(`is-active`)}function at(t){let r=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),i=P.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,f.watch)([()=>v.selectedVariableKey,()=>v.variables],()=>{(0,f.nextTick)(Z)},{deep:!0,flush:`post`});function ot(e){b.value||(e.type===`apply-block-style`?P.value&&u.applyContractTemplateBlockStyle(P.value,e.format):e.type===`apply-text-style-preset`?at(e.preset):c.runContractTemplateEditorCommand(P.value,e),U())}function st(){P.value?.commands.focus()}function Q(){return P.value?S.read(P.value).getJSON():v.page.contentJson}function $(){return P.value?S.read(P.value).getHTML():v.page.contentHtml}function ct(e){let t=v.variables.find(t=>t.id===e||t.key===e),n=t?X(t.key):void 0;Z(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function lt(){x.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,f.onBeforeUnmount)(()=>{E=!0,w!==void 0&&clearTimeout(w),P.value?.off(`contract-word-paste`,F),P.value?.destroy()}),ae({findText:de,revealSearchMatch:fe,replaceSearchMatches:pe,focusHeading:me,focus:st,getHTML:$,getJSON:Q,getContentSnapshot:We,getEditorState:H,getTableCommandCapabilities:we,getAffectedVariableCount:L,insertVariable:Be,insertContentImage:Ve,updateSelectedContentImage:He,getSelectionRange:Ue,getSelectionViewportRect:ve,requestTextContextMenu:De,isReady:j,isComposing:M,hasOverflowContent:Je,hasOverflowSelection:Ye,isUntouchedPaginationBlank:Xe,updateVariable:tt,removeVariable:nt,splitOverflowContent:Ze,prependContent:Qe,restorePaginationSelection:$e,runCommand:ot,scrollIntoField:ct,scrollIntoVariable:it,scrollIntoPage:lt}),(e,t)=>((0,f.openBlock)(),(0,f.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,f.normalizeStyle)(Ie.value)},[(0,f.createElementVNode)(`div`,{class:(0,f.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":_.active}]),style:(0,f.normalizeStyle)(Le.value)},[(0,f.createElementVNode)(`header`,re,[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(_.page.title||`第 ${_.pageIndex+1} 页`),1),(0,f.createElementVNode)(`span`,null,`第 `+(0,f.toDisplayString)(_.pageIndex+1)+` 页 · `+(0,f.toDisplayString)(_.pageSize.label||`A4`)+` · `+(0,f.toDisplayString)(_.pageSize.width)+` × `+(0,f.toDisplayString)(_.pageSize.height),1)]),(0,f.createElementVNode)(`div`,{ref_key:`pageElement`,ref:x,class:`gd-contract-template-designer__page`,style:(0,f.normalizeStyle)(Fe.value),onLoadCapture:t[0]||=e=>y(`page-layout-change`,_.page.id),onDragover:t[1]||=(0,f.withModifiers)(()=>{},[`prevent`]),onDrop:ze,onClick:t[2]||=e=>y(`editor-focus`,_.page.id)},[(0,f.createVNode)(ee.default,{decorations:_.pageDecorations,"page-number":_.pageIndex+1,"total-pages":_.totalPages,variables:_.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,f.unref)(P)?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(p.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,f.unref)(P)},null,8,[`editor`])):(0,f.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=_;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../contract-print-css/index.cjs`),t=require(`./constants.cjs`),n=require(`./utils/page-decorations.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/editor-snapshot-cache.cjs`),a=require(`../../../node_modules/prosemirror-transform/dist/index.cjs`),o=require(`./composables/use-page-authoring.cjs`);require(`../../../node_modules/@tiptap/pm/dist/transform/index.cjs`);const s=require(`./extensions/template-variable.cjs`),c=require(`./utils/content-image.cjs`),l=require(`./extensions/editor-extensions.cjs`),u=require(`./utils/context-variable.cjs`),d=require(`./utils/block-style.cjs`),ee=require(`./ContractTemplatePageDecorations.cjs`),te=require(`./utils/caret-viewport.cjs`);let f=require(`vue`),ne=require(`ant-design-vue`),re=require(`@tiptap/vue-3`),ie=require(`@tiptap/core`),p=require(`@tiptap/pm/tables`),m=require(`@tiptap/pm/state`);var ae={class:`gd-contract-template-designer__page-title`},h=`application/x-gd-contract-variable-move`,oe=8,g=(0,f.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},getScrollContainer:{type:Function,default:void 0}},emits:[`page-update`,`variable-drop`,`variable-select`,`variable-move-blocked`,`editor-focus`,`editor-ready`,`composition-end`,`page-layout-change`,`editor-state-change`,`editor-context-menu`,`word-paste`],setup(g,{expose:se,emit:ce}){let _=g,v=ce,y=(0,f.computed)(()=>_.readonly||_.disabled),b=(0,f.ref)(),x=i.createEditorSnapshotCache(),S=!1,C,w,T=!1,E=!1,le=!1,D=!1,O=0,k,ue=_.page.contentHtml,de=(0,f.toRaw)(_.page);function A(){return E&&!T}function j(){return S||!!N.value?.view.composing}function fe(e){let t=e.filter(Boolean).join(`、`);return typeof window>`u`?!1:new Promise(e=>{ne.Modal.confirm({title:`粘贴内容包含不兼容字体`,content:`检测到 ${t||`外部`} 字体。为保证 Mac 与 Windows 排版一致,将统一转换为合同标准字体(GD Contract Latin + 系统宋体)。是否继续粘贴?`,okText:`继续粘贴`,cancelText:`取消粘贴`,onOk:()=>e(!0),onCancel:()=>e(!1)})})}let M=l.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:_.processImageFile,confirmExternalFontPaste:fe,getZoom:()=>Math.max(.1,_.zoom||1)}),N=(0,re.useEditor)({content:_.page.contentHtml,editable:!y.value,extensions:M,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:{compositionstart:()=>(S=!0,C!==void 0&&clearTimeout(C),!1),compositionend:()=>(S=!1,C=setTimeout(()=>{if(C=void 0,!(T||j())){if(w!==void 0){let e=w;w=void 0,Fe(e)}v(`page-update`,K()),v(`composition-end`,_.page.id)}},0),!1),contextmenu:(e,t)=>{if(y.value)return!1;let n=Oe(e,t.target);if(n)return t.preventDefault(),B({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=N.value?.state.selection,i=r instanceof p.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=u.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||Te(t.clientX,t.clientY,t.target))?(U({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(z({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(h,_.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(h);return!n||n===_.page.id?!1:(t.preventDefault(),v(`variable-move-blocked`,_.page.id),!0)}},handleKeyDown:(e,t)=>{if(y.value||!Se(t))return!1;let n=N.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=H();if(i){let e=n.view.coordsAtPos(r.from);return B({pageId:_.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof p.CellSelection;if(u.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=we();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(p.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return U({pageId:_.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return z({pageId:_.page.id,clientX:o.left,clientY:o.bottom}),!0},handleScrollToSelection:e=>te.scrollCaretIntoCanvas(e,()=>_.getScrollContainer?.(),()=>b.value)},onTransaction:({transaction:e,appendedTransactions:t})=>{[e,...t].some(e=>e.docChanged&&!e.getMeta(`preventUpdate`))&&(le=!0),!E&&[e,...t].some(e=>e.selectionSet||e.storedMarksSet)&&(D=!0),[e,...t].some(e=>e.docChanged||e.selectionSet||e.storedMarksSet||e.getMeta(`blur`))&&(O+=1)},onUpdate:({editor:e})=>{v(`page-update`,{..._.page,contentHtml:x.read(e).getHTML(),contentJson:x.read(e).getJSON()}),W()},onFocus:()=>{v(`editor-focus`,_.page.id),W()},onBlur:W,onSelectionUpdate:W,onMount:()=>{k=O},onCreate:({editor:e})=>{if(_.page.contentHtml!==ue&&_.page.contentHtml!==x.read(e).getHTML())if(S||e.view.composing)w=_.page.contentHtml;else{let t=k===O?O+1:void 0;e.commands.setContent(_.page.contentHtml||`<p></p>`,{emitUpdate:!1}),k=t}E=!0,e.on(`contract-word-paste`,P),W(),v(`editor-ready`,_.page.id)}}),{findText:pe,revealSearchMatch:me,replaceSearchMatches:he,focusHeading:ge}=o.usePageAuthoring({editor:()=>N.value,readonly:()=>y.value,search:()=>({query:_.searchQuery,matchCase:_.searchMatchCase,activeMatch:_.activeSearchMatch})});function P(e){v(`word-paste`,e)}function _e(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 ve(){if(!N.value)return``;let{from:e,to:t}=N.value.state.selection;return N.value.state.doc.textBetween(e,t,`
|
|
2
|
+
`)}function ye(){let e=N.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)>oe)return;let i=Math.abs(r.left-n.left)/G.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function be(){let e=N.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof p.CellSelection||t instanceof m.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 xe(){let e=N.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 Se(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function F(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 Ce(e,t){let n=N.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return F(n.state.doc.resolve(r))}function we(){let e=N.value;if(e)return F(e.state.selection.$from)}function Te(e,t,n){let r=N.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof p.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=Ce(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(p.CellSelection.create(r.state.doc,a))),!0):!1}function I(){let e=N.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 Ee(){let e=N.value,t=e?.state.selection;if(!e||!(t instanceof p.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 L(e=N.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function R(e){let t=N.value;if(!t)return 0;let n=L(t.state.doc),r=n,i=e=>{r=L(e.doc)};return e===`delete-table-row`?(0,p.deleteRow)(t.state,i):e===`delete-table-column`?(0,p.deleteColumn)(t.state,i):(0,p.deleteTable)(t.state,i),Math.max(0,n-r)}function z(e){let t=N.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?ye():void 0,leadingText:xe()})}function De(e,t){z({pageId:_.page.id,clientX:e,clientY:t})}function B(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function V(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:c.normalizeContractImageDimension(e.attrs.width),height:c.normalizeContractImageDimension(e.attrs.height)}}function H(){let e=N.value?.state.selection;if(e instanceof m.NodeSelection)return V(e.node,e.from)}function Oe(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 m.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(m.NodeSelection.create(e.state.doc,t))),V(r,t))}catch{return}}function U(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:I(),activeAlignment:Ee(),affectedVariableCounts:{deleteRow:R(`delete-table-row`),deleteColumn:R(`delete-table-column`),deleteTable:R(`delete-table`)}})}function ke(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function Ae(){let e=N.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`&&ke(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 je(){let e=Ae();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function Me(){return Ae().length>1}function Ne(){return[`center`,`right`].find(e=>N.value?.isActive(`heading`,{textAlign:e})||N.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function Pe(){let e=N.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:je(),hasMixedBlockFormats:Me(),textAlign:Ne(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:_e(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:ve(),selectedContentImage:H()}}function W(){v(`editor-state-change`,_.page.id,Pe())}(0,f.watch)(y,e=>{N.value?.setEditable(!e),W()}),(0,f.watch)(()=>_.page.contentHtml,e=>{Fe(e)});function Fe(e){if(!N.value||e===$()){w=void 0;return}if(j()){w=e;return}N.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W()}let Ie=(0,f.computed)(()=>{let{top:t,bottom:r}=e.resolveContractPagePadding(n.normalizePageDecorations(_.pageDecorations),_.pageIndex+1);return{width:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${t}px`,paddingBottom:`${r}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-t-r)}px`}}),G=(0,f.computed)(()=>Math.max(.1,_.zoom||1)),Le=(0,f.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*G.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*G.value)}px`})),Re=(0,f.computed)(()=>({"--gd-contract-page-zoom":String(G.value)})),ze=(0,f.computed)(()=>r.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(h);n&&n!==_.page.id&&(e.preventDefault(),e.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function Ve(e,t){let n=N.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return s.insertTemplateVariableNode(n,e,r),Z(),K()}function He(e,t){let n=N.value;if(n)return l.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),K()}function Ue(e){let t=N.value,n=t?.state.selection;if(!t||!(n instanceof m.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:c.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let a=t.state.tr.setNodeMarkup(n.from,void 0,r);return a.setSelection(m.NodeSelection.create(a.doc,n.from)),t.view.dispatch(a),K()}function We(){let e=N.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function K(){return{..._.page,pageSize:ze.value,contentHtml:$(),contentJson:Q()??_.page.contentJson}}function Ge(e){if(!A())return{contentHtml:e.contentHtml,contentJson:e.contentJson};let t=$();return!j()&&e.contentHtml!==_.page.contentHtml&&e.contentHtml!==t?{contentHtml:e.contentHtml,contentJson:e.contentJson}:{contentHtml:t,contentJson:Q()}}function q(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function Ke(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function qe(e){return(0,ie.generateHTML)(q(e),M)}function Je(){if(_.pageDecorations){let{top:t,bottom:r}=e.resolveContractPagePadding(n.normalizePageDecorations(_.pageDecorations),_.pageIndex+1);return Math.max(120,_.pageSize.height-t-r)}let t=b.value;if(!t)return _.pageSize.height-108;let r=window.getComputedStyle(t),i=Number.parseFloat(r.paddingTop)||0,a=Number.parseFloat(r.paddingBottom)||0;return Math.max(120,_.pageSize.height-i-a)}function Ye(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=G.value;return Array.from(e.children).map(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 J(){if(!N.value)return;let e=Ye(),t=Je();if(e.some(e=>e.top+e.height>t+1))return r.splitPageContentByMeasurements(Q()?.content,e,t)}function Xe(){return!!J()}function Ze(){let e=N.value;if(!e||!A()||j()||!e.view.hasFocus())return!1;let t=J();if(!t)return!1;let n=0;for(let r=0;r<t.splitIndex;r++)n+=e.state.doc.child(r).nodeSize;if(t.currentContent.length>t.splitIndex){let r=e.state.doc.child(t.splitIndex),i=t.currentContent[t.splitIndex].content.length;for(let e=0;e<i;e++)n+=r.child(e).nodeSize;n+=1}return e.state.selection.ranges.every(e=>e.$from.pos>=n)}function Qe(e){return(!e||(0,f.toRaw)(e)===de)&&!le&&!j()&&!N.value?.view.hasFocus()&&Ke(Q()?.content)}function $e(){if(!N.value||!A()||j())return;let e=J();if(!e)return;let t=N.value,{doc:n,selection:r,storedMarks:i}=t.state,o=t.state.tr,s=0;for(let t=0;t<e.splitIndex;t++)s+=n.child(t).nodeSize;let c=s,l=s;if(e.currentContent.length>e.splitIndex){let t=n.child(e.splitIndex),r=e.currentContent[e.splitIndex].content.length;for(let e=0;e<r;e++)c+=t.child(e).nodeSize;l=c+1,o.delete(l,s+t.nodeSize-1),o.delete(c+2,o.doc.content.size)}else o.delete(s,n.content.size);let u=t.view.hasFocus()&&r.ranges.every(e=>e.$from.pos>=l)?r.map(t.schema.nodeFromJSON(q(e.overflowContent)),new a.Mapping([new a.StepMap([0,c,0])])):void 0;o.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(i);let d=O+1;t.view.dispatch(o);let ee=u&&{selection:u,storedMarks:i,isCurrent:()=>!T&&N.value===t&&!t.isDestroyed&&!y.value&&!j()&&t.view.hasFocus()&&O===d};return{page:K(),overflowContent:e.overflowContent,overflowHtml:qe(e.overflowContent),selection:ee}}function et(e){if(!N.value||!A()||j()||!e.length)return;let t=N.value,n=t.schema.nodeFromJSON(q(e)).content,{doc:r,storedMarks:i}=t.state,a=t.state.tr;Ke(Q()?.content)?a.replaceWith(0,r.content.size,n):a.insert(0,n),a.setMeta(`preventUpdate`,!0).setMeta(`addToHistory`,!1).setStoredMarks(i);let o=O+1;return t.view.dispatch(a),k=D?void 0:o,D=!1,K()}function tt(e,t){let n=N.value,r=k;if(k=void 0,!n||!A()||y.value||j()||r!==O||!e.isCurrent()||$()!==t)return;let i=m.Selection.fromJSON(n.state.doc,e.selection.toJSON()),a=O+1;n.view.dispatch(n.state.tr.setSelection(i).setStoredMarks(e.storedMarks?.map(e=>n.schema.markFromJSON(e.toJSON()))??null).setMeta(`addToHistory`,!1)),!(!e.isCurrent()||O!==a)&&(n.view.focus(),n.view.hasFocus()&&O===a&&n.commands.scrollIntoView())}function Y(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 nt(e,t=e.key){if(!N.value)return;let n=s.buildTemplateVariableAttrs(e),r=!1;return N.value.commands.command(({tr:e,state:i,dispatch:a})=>(Y(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),Z(),r?K():void 0}function rt(e){if(!N.value)return;let t=0;return N.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=Y(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?K():void 0}function it(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function X(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function at(e){it();let t=X(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),N.value?.commands.focus(),!0):!1}function Z(){it(),X(_.selectedVariableKey)?.classList.add(`is-active`)}function ot(e){let n=t.CONTRACT_TEXT_STYLE_PRESETS.find(t=>t.key===e),i=N.value;if(!n||!i)return;let a=i.chain().focus().clearNodes();n.headingLevel?a.setHeading({level:n.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(n.textAlign).setFontSize(`${n.fontSize}px`).setFontFamily(n.fontFamily||t.DEFAULT_CONTRACT_FONT_FAMILY).setColor(r.DEFAULT_FIELD_STYLE.color||`#1f2937`),n.bold?a.setBold():a.unsetBold(),n.italic?a.setItalic():a.unsetItalic(),n.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,f.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,f.nextTick)(Z)},{deep:!0,flush:`post`});function st(e){y.value||(e.type===`apply-block-style`?N.value&&d.applyContractTemplateBlockStyle(N.value,e.format):e.type===`apply-text-style-preset`?ot(e.preset):l.runContractTemplateEditorCommand(N.value,e),W())}function ct(){N.value?.commands.focus()}function Q(){return N.value?x.read(N.value).getJSON():_.page.contentJson}function $(){return N.value?x.read(N.value).getHTML():_.page.contentHtml}function lt(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?X(t.key):void 0;Z(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function ut(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,f.onBeforeUnmount)(()=>{T=!0,C!==void 0&&clearTimeout(C),N.value?.off(`contract-word-paste`,P),N.value?.destroy()}),se({findText:pe,revealSearchMatch:me,replaceSearchMatches:he,focusHeading:ge,focus:ct,getHTML:$,getJSON:Q,getContentSnapshot:Ge,getEditorState:Pe,getTableCommandCapabilities:I,getAffectedVariableCount:R,insertVariable:Ve,insertContentImage:He,updateSelectedContentImage:Ue,getSelectionRange:We,getSelectionViewportRect:be,requestTextContextMenu:De,isReady:A,isComposing:j,hasOverflowContent:Xe,hasOverflowSelection:Ze,isUntouchedPaginationBlank:Qe,updateVariable:nt,removeVariable:rt,splitOverflowContent:$e,prependContent:et,restorePaginationSelection:tt,runCommand:st,scrollIntoField:lt,scrollIntoVariable:at,scrollIntoPage:ut}),(e,t)=>((0,f.openBlock)(),(0,f.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,f.normalizeStyle)(Le.value)},[(0,f.createElementVNode)(`div`,{class:(0,f.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,f.normalizeStyle)(Re.value)},[(0,f.createElementVNode)(`header`,ae,[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,f.createElementVNode)(`span`,null,`第 `+(0,f.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,f.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,f.toDisplayString)(g.pageSize.width)+` × `+(0,f.toDisplayString)(g.pageSize.height),1)]),(0,f.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,f.normalizeStyle)(Ie.value),onLoadCapture:t[0]||=e=>v(`page-layout-change`,g.page.id),onDragover:t[1]||=(0,f.withModifiers)(()=>{},[`prevent`]),onDrop:Be,onClick:t[2]||=e=>v(`editor-focus`,g.page.id)},[(0,f.createVNode)(ee.default,{decorations:g.pageDecorations,"page-number":g.pageIndex+1,"total-pages":g.totalPages,variables:g.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,f.unref)(N)?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(re.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,f.unref)(N)},null,8,[`editor`])):(0,f.createCommentVNode)(``,!0)],36)],6)],4))}});exports.default=g;
|