@guodun/antdv 1.4.1 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.mjs +304 -293
- package/dist/es/components/contract-signing-location/src/coordinates.mjs +23 -23
- package/dist/es/components/contract-signing-location/src/location-rules.mjs +20 -10
- package/dist/es/components/contract-signing-location/src/page-layout.mjs +12 -9
- package/dist/es/components/contract-signing-location/src/template-source.mjs +2 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.mjs +208 -180
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +2 -1
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.mjs +690 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.mjs +253 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.mjs +87 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.mjs +98 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.mjs +550 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.mjs +117 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.mjs +96 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.mjs +51 -26
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.mjs +56 -33
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.mjs +29 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.vue.mjs +179 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.mjs +390 -0
- package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +332 -263
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1442 -2287
- package/dist/es/components/pro-contract-template-designer/src/composables/use-auto-pagination.mjs +71 -0
- package/dist/es/components/pro-contract-template-designer/src/composables/use-designer-files.mjs +11 -0
- package/dist/es/components/pro-contract-template-designer/src/composables/use-draft-cache-session.mjs +111 -0
- package/dist/es/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.mjs +79 -0
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +189 -160
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-files.mjs +35 -22
- package/dist/es/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.mjs +71 -0
- package/dist/es/components/pro-contract-template-designer/src/constants.mjs +71 -10
- package/dist/es/components/pro-contract-template-designer/src/extensions/editor-extensions.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/block-style.mjs +43 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/context-menu-viewport.mjs +13 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/editor-state.mjs +7 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/page-decorations.mjs +398 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/serialize-fingerprint.mjs +6 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +88 -72
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/es/index.mjs +20 -20
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/coordinates.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/location-rules.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/page-layout.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.cjs +1 -0
- 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/ContractTemplateSubmitDataModal.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-auto-pagination.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-designer-files.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-draft-cache-session.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-files.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/constants.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/extensions/editor-extensions.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/block-style.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/context-menu-viewport.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/editor-state.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/page-decorations.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/serialize-fingerprint.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +3 -3
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- 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/coordinates.d.ts +2 -2
- package/dist/types/components/contract-signing-location/src/page-layout.d.ts +2 -2
- package/dist/types/components/contract-signing-location/src/template-source.d.ts +2 -0
- package/dist/types/components/contract-signing-location/src/types.d.ts +3 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.d.ts +3 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +1 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.d.ts +104 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.d.ts +60 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.d.ts +27 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.d.ts +13 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.d.ts +28 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.d.ts +77 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.d.ts +36 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.d.ts +5 -1
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.d.ts +4 -4
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererToolbar.vue.d.ts +4 -4
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.d.ts +12 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.vue.d.ts +43 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.d.ts +77 -0
- package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +30 -32
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +456 -12
- package/dist/types/components/pro-contract-template-designer/src/composables/use-auto-pagination.d.ts +43 -0
- package/dist/types/components/pro-contract-template-designer/src/composables/use-designer-files.d.ts +22 -0
- package/dist/types/components/pro-contract-template-designer/src/composables/use-draft-cache-session.d.ts +41 -0
- package/dist/types/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.d.ts +49 -0
- package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +15 -1
- package/dist/types/components/pro-contract-template-designer/src/composables/use-template-files.d.ts +13 -0
- package/dist/types/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.d.ts +19 -0
- package/dist/types/components/pro-contract-template-designer/src/constants.d.ts +7 -1
- package/dist/types/components/pro-contract-template-designer/src/types.d.ts +89 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/block-style.d.ts +4 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/context-menu-viewport.d.ts +25 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/editor-state.d.ts +8 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/page-decorations.d.ts +90 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/serialize-fingerprint.d.ts +8 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +4 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../utils/signing-placement.cjs`);function t(e){return{...e,...e.sealTypes?{sealTypes:[...e.sealTypes]}:{}}}function n(n){function r(r,i=n.selectedPage.value?.id??n.templateValue.value.pages[0]?.id,a){if(!e.canMutateSigningPlacements(n.readonly(),n.disabled())||!i)return;let o=n.templateValue.value.pages.find(e=>e.id===i);if(!o)return;let s=e.createSigningPlacement(r,i,n.getPageSize(o),{...a??n.getVisiblePosition(i,r)});return n.commitSigningPlacements([...n.signingPlacements.value,s]),n.activePageId.value=i,n.selectSigningPlacement(s.id),n.emitAdd(t(s)),s}function i(t,i,a,o){if(!n.showSigningPlacementTools())return;let s=e.getSigningPlacementDefaultSize(i.type);r(i.type,t,{x:a-s.width/2,y:o-s.height/2})}function a(e){return r(e.type)}function o(t,r){if(!e.canMutateSigningPlacements(n.readonly(),n.disabled())){t.preventDefault();return}t.dataTransfer?.setData(e.SIGNING_PLACEMENT_MIME,e.serializeSigningPlacementDragPayload(r)),t.dataTransfer&&(t.dataTransfer.effectAllowed=`copy`)}function s(r){if(!e.canMutateSigningPlacements(n.readonly(),n.disabled()))return;let i=n.templateValue.value.pages.find(e=>e.id===r.pageId);if(!i)return;let a=e.clampSigningPlacement({...r,...r.type===`seal`?{}:{sealTypes:void 0}},n.getPageSize(i));n.commitSigningPlacements(n.signingPlacements.value.map(e=>e.id===a.id?a:e),[a.id]),n.selectedSigningPlacementId.value=a.id,n.emitChange(t(a))}function c(t){let r=n.selectedSigningPlacement.value;if(!r)return;let i=n.templateValue.value.pages.find(e=>e.id===r.pageId);i&&s(e.applySigningPlacementPatch(r,t,n.getPageSize(i)))}function l(r=n.selectedSigningPlacement.value){if(!e.canMutateSigningPlacements(n.readonly(),n.disabled())||!r)return;let i=n.templateValue.value.pages.find(e=>e.id===r.pageId);if(!i)return;let a=e.createSigningPlacement(r.type,r.pageId,n.getPageSize(i),{...t(r),id:void 0,x:r.x+16,y:r.y+16});n.commitSigningPlacements([...n.signingPlacements.value,a]),n.selectSigningPlacement(a.id),n.emitAdd(t(a))}function u(r=n.selectedSigningPlacement.value){!e.canMutateSigningPlacements(n.readonly(),n.disabled())||!r||(n.commitSigningPlacements(n.signingPlacements.value.filter(e=>e.id!==r.id),[r.id]),n.selectedSigningPlacementId.value===r.id&&n.selectSigningPlacement(),n.emitRemove(t(r)))}return{insertSigningPlacement:r,handleSigningPlacementDrop:i,insertSigningPlacementTool:a,handleSigningPlacementDragStart:o,updateSigningPlacement:s,patchSelectedSigningPlacement:c,duplicateSigningPlacement:l,removeSigningPlacement:u,cloneSigningPlacement:t}}exports.cloneSigningPlacement=t,exports.useSigningPlacementEditor=n;
|
package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`../types.cjs`),t=require(`../utils/html.cjs`),n=require(`../utils/signing-placement.cjs`),r=require(`../constants.cjs`),i=require(`../utils/template-variable-render.cjs`);var
|
|
2
|
-
`)}function
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function N(e){let t=new Map(e.variables.map(e=>[e.key,e])),n=Array.isArray(e.signingPlacements)?e.signingPlacements:[];return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:W(e.contentHtml,t),signingPlacements:n.filter(t=>t.pageId===e.id).map(e=>({id:e.id,pageId:e.pageId,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,mustSign:e.mustSign,...e.sealTypes?.length?{sealTypes:[...e.sealTypes]}:{}}))}))}function ie(e){let t=g(e);return{...t,rendererVersion:u,styleVersion:d,html:j(t)}}function P(e,t={}){let r=[],i=new Map;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&r.push({type:`page`,id:e.pages[t.maxPages]?.id??e.pages.at(-1)?.id??``,pageId:e.pages[t.maxPages]?.id,code:`PAGE_LIMIT_EXCEEDED`,message:`合同共 ${e.pages.length} 页,超过最多 ${t.maxPages} 页限制`}),e.variables.forEach(e=>{if(e.key?.trim()||r.push({type:`variable`,id:e.id,message:`${e.label||`变量`} 缺少变量标识`}),e.key){let t=i.get(e.key);t&&t!==e.id&&r.push({type:`variable`,id:e.id,message:`变量标识 ${e.key} 重复`}),i.set(e.key,e.id)}A(e.type)&&r.push({type:`variable`,id:e.id,variableKey:e.key,message:`${e.label||e.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let a=new Set(e.variables.map(e=>e.key).filter(Boolean)),o=new Set;return e.pages.forEach(e=>{F(e).forEach(t=>{o.add(t),a.has(t)||r.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!o.has(e.key)&&r.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),r.push(...n.validateSigningPlacements(e)),r}function F(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;ae(r.type)&&r.attrs?.key&&t.add(r.attrs.key),r.content?.forEach(n)}n(e.contentJson);let r=e.contentHtml||``,i=/data-template-variable=["']true["'][^>]*data-key=["']([^"']+)["']|data-key=["']([^"']+)["'][^>]*data-template-variable=["']true["']/g,a=i.exec(r);for(;a;){let e=a[1]||a[2];e&&t.add(e),a=i.exec(r)}return t}function ae(e){return e===`templateVariable`||e===`templateField`}function I(e){let t=new Set;return e.pages.forEach(e=>{F(e).forEach(e=>t.add(e))}),t}function L(e){let t=I(e);return{...e,variables:e.variables.filter(e=>e.key&&t.has(e.key))}}function R(e,t,n){let r=e??[];if(r.length<=1||n<=0)return;let i=Math.min(r.length,t.length),a=-1;for(let e=0;e<i;e+=1){let r=t[e];if(r.top+r.height>n+1){a=e;break}}if(!(a<=0))return{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function z(e,n){let r=y(e.pageSize,n);return[`class="gd-contract-template-page"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(r.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(r.label??r.format??`自定义`)}"`,`data-page-width="${r.width}"`,`data-page-height="${r.height}"`].join(` `)}var B=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function V(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||A(e.type)&&!A(t.type))&&n.set(e.key,e)}function i(e){if(!e||typeof e!=`object`)return;let t=e;t.type===`templateVariable`&&typeof t.attrs?.key==`string`&&r(U(t.attrs,t.attrs.key)),t.content?.forEach(i)}i(e.contentJson);let a=e.contentHtml||``;return t.canUseDomHtml()?new DOMParser().parseFromString(a,`text/html`).querySelectorAll(`[data-template-variable]`).forEach(e=>{r(H(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,B,e=>{r(H(t.createTagAttributeReader(e)))}),Array.from(n.values())}function H(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),a=e(`data-use-grouping`);return{key:n,label:e(`data-label`)??n,type:r??`text`,placeholder:e(`data-placeholder`)??``,width:t.readNumberAttribute(e(`data-width`),160),height:t.readNumberAttribute(e(`data-height`),32),required:e(`data-required`)===`true`,defaultValue:e(`data-default-value`)??``,format:e(`data-format`)??``,precision:i?Number(i):void 0,useGrouping:a?a===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function U(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function W(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return G(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{q(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(se(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?oe(i,n):e})}function G(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&J(r)){e.removeAttribute(t.name);return}n===`style`&&Y(r)&&e.removeAttribute(t.name)})})}function K(e,n){let r=e(`data-key`)??``,a=n.get(r),o=a?.type??e(`data-variable-type`)??`text`,s=le(o,a?.defaultValue??e(`data-default-value`)??``),c=i.resolveTemplateVariablePresentation({type:o,width:a?.width??e(`data-width`),height:a?.height??e(`data-height`),defaultValue:s,placeholder:a?.placeholder??e(`data-placeholder`)??``,format:a?.format??e(`data-format`)??``,precision:a?.precision??t.readOptionalNumber(e(`data-precision`)),useGrouping:a?.useGrouping??t.readOptionalBoolean(e(`data-use-grouping`)),checkedText:a?.checkedText??e(`data-checked-text`)??``,uncheckedText:a?.uncheckedText??e(`data-unchecked-text`)??``,multiline:a?.multiline??t.readOptionalBoolean(e(`data-multiline`))??!1,rows:a?.rows??e(`data-rows`),lineHeight:a?.lineHeight??e(`data-line-height`),style:ce(a,e)});return{key:r,label:a?.label??e(`data-label`)??r,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function q(e,n){let{key:r,label:i,presentation:a,text:o}=K(t.createElementAttributeReader(e),n);e.setAttribute(`data-template-variable`,`true`),e.setAttribute(`data-key`,r),e.setAttribute(`data-label`,i),e.setAttribute(`data-variable-type`,a.type),e.setAttribute(`data-width`,String(a.width)),e.setAttribute(`data-height`,String(a.height)),e.setAttribute(`data-border`,String(a.border)),e.setAttribute(`data-underline`,String(a.underline)),e.setAttribute(`data-color`,a.color),e.setAttribute(`data-background`,a.background),e.setAttribute(`data-font-size`,String(a.fontSize)),e.setAttribute(`data-font-family`,a.fontFamily),e.setAttribute(`data-placeholder-color`,a.placeholderColor),e.setAttribute(`data-line-color`,a.lineColor),e.setAttribute(`data-text-align`,a.textAlign),e.setAttribute(`data-border-style`,a.borderStyle),e.setAttribute(`data-object-fit`,a.objectFit),e.className=a.classes.join(` `),e.setAttribute(`style`,a.styleText),e.textContent=o}function oe(e,n){let{key:r,label:i,presentation:a,text:o}=K(e,n);return`<span data-template-variable="true" data-key="${t.escapeHtmlAttribute(r)}" data-label="${t.escapeHtmlAttribute(i)}" data-variable-type="${t.escapeHtmlAttribute(a.type)}" data-width="${a.width}" data-height="${a.height}" data-border="${a.border}" data-underline="${a.underline}" data-font-family="${t.escapeHtmlAttribute(a.fontFamily)}" class="${t.escapeHtmlAttribute(a.classes.join(` `))}" style="${t.escapeHtmlAttribute(a.styleText)}">${t.escapeHtmlText(o)}</span>`}function se(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>J(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>Y(n)?``:` style=${t}${n}${t}`)}function ce(e,n){return{border:e?.style?.border??t.readOptionalBoolean(n(`data-border`)),underline:e?.style?.underline??t.readOptionalBoolean(n(`data-underline`)),color:e?.style?.color??n(`data-color`),background:e?.style?.background??n(`data-background`),fontSize:e?.style?.fontSize??t.readOptionalNumber(n(`data-font-size`)),fontFamily:e?.style?.fontFamily??n(`data-font-family`),placeholderColor:e?.style?.placeholderColor??n(`data-placeholder-color`),lineColor:e?.style?.lineColor??n(`data-line-color`),textAlign:e?.style?.textAlign??Z(n(`data-text-align`)),borderStyle:e?.style?.borderStyle??Q(n(`data-border-style`)),objectFit:e?.style?.objectFit??$(n(`data-object-fit`))}}function le(e,t){return e===`image`&&J(t)?``:t}function J(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function Y(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function ue(e){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return t.querySelectorAll(`[data-template-variable]`).forEach(e=>{let t=e.dataset.key||``;t&&(e.textContent=`\${{${t}}}`)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(e,(e,n)=>{let r=t.createTagAttributeReader(n)(`data-key`);return r?`<span${n}>\${{${r}}}</span>`:e})}function de(e){return e===`left`||e===`center`||e===`right`}function fe(e){return e===`solid`||e===`dashed`}function X(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return de(e)?e:void 0}function Q(e){return fe(e)?e:void 0}function $(e){return X(e)?e:void 0}function pe(e,t=[]){let n=[...t,...P(e)],r=new Set;return n.filter(e=>{let t=`${e.code??``}|${e.id}|${e.pageId??``}|${e.message}`;return r.has(t)?!1:(r.add(t),!0)})}exports.CONTRACT_TEMPLATE_RENDERER_VERSION=u,exports.CONTRACT_TEMPLATE_STYLE_VERSION=d,exports.DEFAULT_FIELD_STYLE=s,exports.DEFAULT_FIELD_TYPES=p,exports.DEFAULT_MULTILINE_LINE_HEIGHT=l,exports.DEFAULT_MULTILINE_ROWS=c,exports.DEFAULT_PAGE_SIZE=o,exports.PAGE_SIZE_OPTIONS=a,exports.buildTemplateExpressionHtml=j,exports.buildTemplateHtml=re,exports.buildTemplatePreviewHtml=M,exports.buildTemplatePreviewPages=N,exports.cloneTemplateValue=g,exports.collectTemplateLocationRuleExportErrors=pe,exports.collectTemplateValueVariableKeys=I,exports.collectTemplateVariableKeys=F,exports.constrainTemplatePageSizes=C,exports.createBlankPage=E,exports.createBlankTemplate=ee,exports.createDefaultPage=T,exports.createDefaultTemplate=D,exports.createDesignerId=h,exports.createTemplateVariable=k,exports.exportTemplateValue=ie,exports.findPageSizeOption=S,exports.getFieldOption=O,exports.getPageSizeKey=b,exports.getPageSizeOption=_,exports.inferPageFormat=v,exports.normalizeContractTemplateMaxPages=f,exports.normalizePageSizeOptions=x,exports.normalizeTemplateValue=ne,exports.resolvePageSize=y,exports.splitPageContentByMeasurements=R,exports.syncTemplateVariablesWithPages=L,exports.validateTemplateValue=P;
|
|
1
|
+
const e=require(`../types.cjs`),t=require(`../utils/html.cjs`),n=require(`../utils/signing-placement.cjs`),r=require(`../constants.cjs`),i=require(`../utils/template-variable-render.cjs`),a=require(`../utils/page-decorations.cjs`);var o=[{format:`A0`,width:3178,height:4493,label:`A0`},{format:`A1`,width:2245,height:3178,label:`A1`},{format:`A2`,width:1587,height:2245,label:`A2`},{format:`A3`,width:1123,height:1587,label:`A3`},{format:`A4`,width:794,height:1123,label:`A4`},{format:`A5`,width:559,height:794,label:`A5`},{format:`Letter`,width:816,height:1056,label:`Letter`},{format:`Legal`,width:816,height:1344,label:`Legal`}],s={...o[4]},c={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:r.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},l=3,u=28,d=`contract-template-renderer-1.0.0`,f=`contract-render-css-1.0.0`,p=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,m=new Set([`pageNumber`,`totalPages`,`rendererVersion`]);function h(e,t,n){let r=typeof e==`string`?e.trim():``;return r?p.test(r)?m.has(r)?`${r} 是系统保留标识`:t.some(e=>e.id!==n&&e.key.trim()===r)?`变量标识 ${r} 已存在`:``:`变量标识需以字母开头,仅包含字母、数字和下划线,长度为 2~64 位`:`请输入变量标识`}function g(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var _=[{type:`text`,label:`输入框`,defaultWidth:160,defaultHeight:32},{type:`date`,label:`日期`,defaultWidth:140,defaultHeight:32},{type:`number`,label:`数字`,defaultWidth:120,defaultHeight:32},{type:`image`,label:`图片`,defaultWidth:160,defaultHeight:96},{type:`checkbox`,label:`复选框`,defaultWidth:96,defaultHeight:28}],v=0;function y(e){return v+=1,`${e}-${Date.now().toString(36)}-${v.toString(36)}`}function b(e){let t=JSON.parse(JSON.stringify(e));return Array.isArray(t.signingPlacements)&&(t.signingPlacements=t.signingPlacements.map(e=>({id:e.id,pageId:e.pageId,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,mustSign:e.mustSign,...e.sealTypes?.length?{sealTypes:[...e.sealTypes]}:{}}))),t}function x(e){return o.find(t=>t.format===e)}function S(e){if(e)return e.format&&e.format!==`Custom`?e.format:o.find(t=>t.width===e.width&&t.height===e.height)?.format}function C(e,t=s){let n=S(t)??t.format,r=e?.format??S(e)??n??`Custom`,i=r===`Custom`?void 0:x(r),a=D(i?.width??e?.width,t.width),o=D(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function w(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function T(e){let t=(Array.isArray(e)?e:o).map(e=>{let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return;let r=e?.format;if(r&&r!==`Custom`){let t=x(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:S(e),a=i?x(i):void 0;if(a)return{...a,label:e.label??a.label};if(r!==`Custom`)return;let o=Math.round(t),s=Math.round(n);if(!(o<=0||s<=0))return{format:`Custom`,width:o,height:s,label:e.label??`Custom`}}).filter(Boolean),n=new Set,r=t.filter(e=>{let t=w(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:o).map(e=>({...e}))}function E(e,t){let n=w(e);return t.find(e=>w(e)===n)}function ee(e,t){let r=T(t),i=r[0],a=C(e.pageSize,i),o=E(a,r)??i,s=new Map,c=e.pages.map(e=>{let t=C(e.pageSize,a),n=E(t,r)??i;return w(t)!==w(n)&&s.set(e.id,{source:t,target:n}),{...e,pageSize:{...n}}}),l=[],u=(e.signingPlacements??[]).map(e=>{let t=s.get(e.pageId);return t?(l.push(e.id),n.scaleSigningPlacementToPage(e,t.source,t.target)):e});return{value:{...e,pageSize:{...o},pages:c,signingPlacements:u},resizedSigningPlacementIds:l}}function D(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function O(e=1,t){return{id:y(`page`),title:`第 ${e} 页`,pageSize:t?C(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function k(e=1,t,n=`<p></p>`,r){return{id:y(`page`),title:`第 ${e} 页`,pageSize:t?C(t):void 0,contentHtml:n,contentJson:r}}function A(e=s){let t=C(e);return{pages:[O(1,t)],variables:[],pageSize:t,signingPlacements:[]}}function te(e=s){let t=C(e);return{pages:[k(1,t,`<p></p>`)],variables:[],pageSize:t,signingPlacements:[]}}function j(e,t=_){return t.find(t=>t.type===e)??_[0]}function M(e,t=_,n={}){let r=e.type===void 0?`text`:e.type,i=j(r,t),a=ne(r);return{id:e.id??y(`variable`),key:e.key,label:e.label??i.label??e.key,type:r,placeholder:e.placeholder??a.placeholder??``,width:Math.max(24,Math.round(e.width??i.defaultWidth??140)),height:Math.max(24,Math.round(e.height??a.height??i.defaultHeight??32)),required:e.required??!1,defaultValue:e.defaultValue??``,format:e.format??a.format??``,precision:e.precision??a.precision,useGrouping:e.useGrouping??a.useGrouping,checkedText:e.checkedText??a.checkedText??``,uncheckedText:e.uncheckedText??a.uncheckedText??``,multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...c,...a.style,...n,...e.style}}}function ne(e){return e===`date`?{placeholder:`年 月 日`,format:`YYYY年MM月DD日`,style:{border:!1,underline:!0}}:e===`number`?{placeholder:`0`,format:`decimal`,useGrouping:!0,style:{border:!1,underline:!0,textAlign:`right`}}:e===`image`?{placeholder:`图片`,height:96,style:{border:!0,underline:!1,borderStyle:`dashed`,background:`transparent`,lineColor:`#d9dce0`,textAlign:`center`,objectFit:`contain`}}:e===`checkbox`?{height:28,checkedText:`已选`,uncheckedText:``,style:{border:!1,underline:!1}}:{style:{border:!1,underline:!0}}}function N(t){return t!==void 0&&!e.isContractTemplateFieldType(t)}function re(e,t=s){if(!e)return A(t);let r=C(e.pageSize,t),i=(e.pages?.length?e.pages:[O(1,r)]).map((e,t)=>({id:e.id||y(`page`),title:e.title||`第 ${t+1} 页`,pageSize:C(e.pageSize,r),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),o=[],c=new Map,l=Object.fromEntries(i.map(e=>[e.id,C(e.pageSize,r)]));return(e.variables??[]).forEach(e=>{let t=M({...e,id:e.id||y(`variable`)});o.push(t),t.key&&c.set(t.key,t)}),i.forEach(e=>{G(e).forEach(e=>{if(!e.key)return;let t=c.get(e.key);if(!t){let t=M(e);o.push(t),c.set(e.key,t);return}if(N(e.type)){let n=M({...t,type:e.type});c.set(e.key,n);let r=o.findIndex(e=>e.id===t.id);r>=0&&(o[r]=n)}})}),{pages:i,variables:o,pageSize:r,signingPlacements:n.normalizeSigningPlacements(e.signingPlacements,l,r),...e.pageDecorations?{pageDecorations:a.normalizePageDecorations(e.pageDecorations)}:{}}}function ie(e){return e.pages.map((t,n)=>H(e,t,n,t.contentHtml,{})).join(`
|
|
2
|
+
`)}function P(e){return e.pages.map((t,n)=>H(e,t,n,ge(t.contentHtml))).join(`
|
|
3
|
+
`)}function F(e){return I(e).map(({page:t,contentHtml:n},r)=>{let i=C(t.pageSize,e.pageSize),o=a.buildPageDecorationsHtml(e.pageDecorations,r+1,e.pages.length,e.variables,{});return`<section ${U(t,e.pageSize,e.pageDecorations,r+1)} style="width:${i.width}px;min-height:${i.height}px">${o}<div class="gd-contract-template-page__content">${n}</div></section>`}).join(`
|
|
4
|
+
`)}function I(e){let t=new Map(e.variables.map(e=>[e.key,e])),n=Array.isArray(e.signingPlacements)?e.signingPlacements:[];return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:le(e.contentHtml,t),signingPlacements:n.filter(t=>t.pageId===e.id).map(e=>({id:e.id,pageId:e.pageId,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,mustSign:e.mustSign,...e.sealTypes?.length?{sealTypes:[...e.sealTypes]}:{}}))}))}var L=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function ae(e){let t=a.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new L(t);let n=b(e);return n.pageDecorations&&=a.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:d,styleVersion:f,html:P(n)}}function R(e,t={}){let r=[],i=new Set;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&r.push({type:`page`,id:e.pages[t.maxPages]?.id??e.pages.at(-1)?.id??``,pageId:e.pages[t.maxPages]?.id,code:`PAGE_LIMIT_EXCEEDED`,message:`合同共 ${e.pages.length} 页,超过最多 ${t.maxPages} 页限制`}),e.variables.forEach(t=>{let n=h(t.key,e.variables,t.id),a=!!t.key?.trim()&&e.variables.some(e=>e.id!==t.id&&e.key.trim()===t.key.trim());n&&(!a||t.key!==t.key.trim())&&r.push({type:`variable`,id:t.id,variableKey:t.key,message:t.key?.trim()?n:`${t.label||`变量`} 缺少变量标识`,code:t.key?.trim()?`VARIABLE_KEY_INVALID`:`VARIABLE_KEY_MISSING`}),t.key&&(i.has(t.key)&&r.push({type:`variable`,id:t.id,variableKey:t.key,message:`变量标识 ${t.key} 重复`,code:`VARIABLE_KEY_DUPLICATED`}),i.add(t.key)),N(t.type)&&r.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let o=new Set(e.variables.map(e=>e.key).filter(Boolean)),s=new Set,c=a.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{z(e).forEach(t=>{s.add(t),o.has(t)||r.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!s.has(e.key)&&!c.has(e.key)&&r.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),r.push(...a.validatePageDecorations(e.pageDecorations,e.variables)),r.push(...n.validateSigningPlacements(e)),r}function z(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;oe(r.type)&&r.attrs?.key&&t.add(r.attrs.key),r.content?.forEach(n)}n(e.contentJson);let r=e.contentHtml||``,i=/data-template-variable=["']true["'][^>]*data-key=["']([^"']+)["']|data-key=["']([^"']+)["'][^>]*data-template-variable=["']true["']/g,a=i.exec(r);for(;a;){let e=a[1]||a[2];e&&t.add(e),a=i.exec(r)}return t}function oe(e){return e===`templateVariable`||e===`templateField`}function B(e){let t=new Set;return e.pages.forEach(e=>{z(e).forEach(e=>t.add(e))}),t}function se(e){let t=B(e),n=a.collectPageDecorationVariableKeys(e.pageDecorations);return{...e,variables:e.variables.filter(r=>h(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function V(e,t,n){let r=e??[];if(r.length<=1||n<=0)return;let i=Math.min(r.length,t.length),a=-1;for(let e=0;e<i;e+=1){let r=t[e];if(r.top+r.height>n+1){a=e;break}}if(!(a<=0))return{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function H(e,t,n,r,i){let o=a.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,i);return`<section ${U(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${r}</div></section>`}function U(e,n,r,i=1){let o=C(e.pageSize,n);return[`class="${a.buildPageDecorationClassNames(r,i)}"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(o.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(o.label??o.format??`自定义`)}"`,`data-page-width="${o.width}"`,`data-page-height="${o.height}"`].join(` `)}var W=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function G(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||N(e.type)&&!N(t.type))&&n.set(e.key,e)}function i(e){if(!e||typeof e!=`object`)return;let t=e;t.type===`templateVariable`&&typeof t.attrs?.key==`string`&&r(ce(t.attrs,t.attrs.key)),t.content?.forEach(i)}i(e.contentJson);let a=e.contentHtml||``;return t.canUseDomHtml()?new DOMParser().parseFromString(a,`text/html`).querySelectorAll(`[data-template-variable]`).forEach(e=>{r(K(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,W,e=>{r(K(t.createTagAttributeReader(e)))}),Array.from(n.values())}function K(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),a=e(`data-use-grouping`);return{key:n,label:e(`data-label`)??n,type:r??`text`,placeholder:e(`data-placeholder`)??``,width:t.readNumberAttribute(e(`data-width`),160),height:t.readNumberAttribute(e(`data-height`),32),required:e(`data-required`)===`true`,defaultValue:e(`data-default-value`)??``,format:e(`data-format`)??``,precision:i?Number(i):void 0,useGrouping:a?a===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function ce(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function le(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return ue(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{de(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(pe(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?fe(i,n):e})}function ue(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&J(r)){e.removeAttribute(t.name);return}n===`style`&&Y(r)&&e.removeAttribute(t.name)})})}function q(e,n){let r=e(`data-key`)??``,a=n.get(r),o=a?.type??e(`data-variable-type`)??`text`,s=he(o,a?.defaultValue??e(`data-default-value`)??``),c=i.resolveTemplateVariablePresentation({type:o,width:a?.width??e(`data-width`),height:a?.height??e(`data-height`),defaultValue:s,placeholder:a?.placeholder??e(`data-placeholder`)??``,format:a?.format??e(`data-format`)??``,precision:a?.precision??t.readOptionalNumber(e(`data-precision`)),useGrouping:a?.useGrouping??t.readOptionalBoolean(e(`data-use-grouping`)),checkedText:a?.checkedText??e(`data-checked-text`)??``,uncheckedText:a?.uncheckedText??e(`data-unchecked-text`)??``,multiline:a?.multiline??t.readOptionalBoolean(e(`data-multiline`))??!1,rows:a?.rows??e(`data-rows`),lineHeight:a?.lineHeight??e(`data-line-height`),style:me(a,e)});return{key:r,label:a?.label??e(`data-label`)??r,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function de(e,n){let{key:r,label:i,presentation:a,text:o}=q(t.createElementAttributeReader(e),n);e.setAttribute(`data-template-variable`,`true`),e.setAttribute(`data-key`,r),e.setAttribute(`data-label`,i),e.setAttribute(`data-variable-type`,a.type),e.setAttribute(`data-width`,String(a.width)),e.setAttribute(`data-height`,String(a.height)),e.setAttribute(`data-border`,String(a.border)),e.setAttribute(`data-underline`,String(a.underline)),e.setAttribute(`data-color`,a.color),e.setAttribute(`data-background`,a.background),e.setAttribute(`data-font-size`,String(a.fontSize)),e.setAttribute(`data-font-family`,a.fontFamily),e.setAttribute(`data-placeholder-color`,a.placeholderColor),e.setAttribute(`data-line-color`,a.lineColor),e.setAttribute(`data-text-align`,a.textAlign),e.setAttribute(`data-border-style`,a.borderStyle),e.setAttribute(`data-object-fit`,a.objectFit),e.className=a.classes.join(` `),e.setAttribute(`style`,a.styleText),e.textContent=o}function fe(e,n){let{key:r,label:i,presentation:a,text:o}=q(e,n);return`<span data-template-variable="true" data-key="${t.escapeHtmlAttribute(r)}" data-label="${t.escapeHtmlAttribute(i)}" data-variable-type="${t.escapeHtmlAttribute(a.type)}" data-width="${a.width}" data-height="${a.height}" data-border="${a.border}" data-underline="${a.underline}" data-font-family="${t.escapeHtmlAttribute(a.fontFamily)}" class="${t.escapeHtmlAttribute(a.classes.join(` `))}" style="${t.escapeHtmlAttribute(a.styleText)}">${t.escapeHtmlText(o)}</span>`}function pe(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>J(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>Y(n)?``:` style=${t}${n}${t}`)}function me(e,n){return{border:e?.style?.border??t.readOptionalBoolean(n(`data-border`)),underline:e?.style?.underline??t.readOptionalBoolean(n(`data-underline`)),color:e?.style?.color??n(`data-color`),background:e?.style?.background??n(`data-background`),fontSize:e?.style?.fontSize??t.readOptionalNumber(n(`data-font-size`)),fontFamily:e?.style?.fontFamily??n(`data-font-family`),placeholderColor:e?.style?.placeholderColor??n(`data-placeholder-color`),lineColor:e?.style?.lineColor??n(`data-line-color`),textAlign:e?.style?.textAlign??Z(n(`data-text-align`)),borderStyle:e?.style?.borderStyle??Q(n(`data-border-style`)),objectFit:e?.style?.objectFit??$(n(`data-object-fit`))}}function he(e,t){return e===`image`&&J(t)?``:t}function J(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function Y(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function ge(e){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return t.querySelectorAll(`[data-template-variable]`).forEach(e=>{let t=e.dataset.key||``;t&&(e.textContent=`\${{${t}}}`)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(e,(e,n)=>{let r=t.createTagAttributeReader(n)(`data-key`);return r?`<span${n}>\${{${r}}}</span>`:e})}function X(e){return e===`left`||e===`center`||e===`right`}function _e(e){return e===`solid`||e===`dashed`}function ve(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return X(e)?e:void 0}function Q(e){return _e(e)?e:void 0}function $(e){return ve(e)?e:void 0}function ye(e,t=[]){let n=[...t,...R(e)],r=new Set;return n.filter(e=>{let t=`${e.code??``}|${e.id}|${e.pageId??``}|${e.message}`;return r.has(t)?!1:(r.add(t),!0)})}exports.CONTRACT_TEMPLATE_RENDERER_VERSION=d,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=m,exports.CONTRACT_TEMPLATE_STYLE_VERSION=f,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=p,exports.ContractTemplatePageDecorationValidationError=L,exports.DEFAULT_FIELD_STYLE=c,exports.DEFAULT_FIELD_TYPES=_,exports.DEFAULT_MULTILINE_LINE_HEIGHT=u,exports.DEFAULT_MULTILINE_ROWS=l,exports.DEFAULT_PAGE_SIZE=s,exports.PAGE_SIZE_OPTIONS=o,exports.buildTemplateExpressionHtml=P,exports.buildTemplateHtml=ie,exports.buildTemplatePreviewHtml=F,exports.buildTemplatePreviewPages=I,exports.cloneTemplateValue=b,exports.collectTemplateLocationRuleExportErrors=ye,exports.collectTemplateValueVariableKeys=B,exports.collectTemplateVariableKeys=z,exports.constrainTemplatePageSizes=ee,exports.createBlankPage=k,exports.createBlankTemplate=te,exports.createDefaultPage=O,exports.createDefaultTemplate=A,exports.createDesignerId=y,exports.createTemplateVariable=M,exports.exportTemplateValue=ae,exports.findPageSizeOption=E,exports.getFieldOption=j,exports.getPageSizeKey=w,exports.getPageSizeOption=x,exports.inferPageFormat=S,exports.normalizeContractTemplateMaxPages=g,exports.normalizePageSizeOptions=T,exports.normalizeTemplateValue=re,exports.resolvePageSize=C,exports.splitPageContentByMeasurements=V,exports.syncTemplateVariablesWithPages=se,exports.validateContractTemplateVariableKey=h,exports.validateTemplateValue=R;
|
package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-files.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require(`./use-template-designer.cjs`);function t(t){return t.map(t=>({id:t.id,name:t.name,template:e.cloneTemplateValue(t.template)}))}function n(t=`合同文件 1`,n){return{id:e.createDesignerId(`contract-file`),name:t.trim()||`合同文件`,template:e.createBlankTemplate(n)}}function r(t,n,r){let i=Array.isArray(t)&&t.length?t:[{id:e.createDesignerId(`contract-file`),name:`合同文件 1`,template:n??e.createBlankTemplate(r)}],a=new Set;return i.map((t,n)=>{let i=typeof t?.id==`string`?t.id.trim():``;return(!i||a.has(i))&&(i=e.createDesignerId(`contract-file`)),a.add(i),{id:i,name:String(t?.name||``).trim()||`合同文件 ${n+1}`,template:e.normalizeTemplateValue(t?.template,r)}})}function i(e,t){let n=typeof t==`string`?t.trim():``;return e.some(e=>e.id===n)?n:e[0]?.id??``}function
|
|
2
|
-
`)}}function
|
|
1
|
+
const e=require(`./use-template-designer.cjs`);function t(t){return t.map(t=>({id:t.id,name:t.name,template:e.cloneTemplateValue(t.template)}))}function n(t=`合同文件 1`,n){return{id:e.createDesignerId(`contract-file`),name:t.trim()||`合同文件`,template:e.createBlankTemplate(n)}}function r(t,n,r){let i=Array.isArray(t)&&t.length?t:[{id:e.createDesignerId(`contract-file`),name:`合同文件 1`,template:n??e.createBlankTemplate(r)}],a=new Set;return i.map((t,n)=>{let i=typeof t?.id==`string`?t.id.trim():``;return(!i||a.has(i))&&(i=e.createDesignerId(`contract-file`)),a.add(i),{id:i,name:String(t?.name||``).trim()||`合同文件 ${n+1}`,template:e.normalizeTemplateValue(t?.template,r)}})}function i(t,n){let r=new Map;return{files:t.map(t=>{let i=e.constrainTemplatePageSizes(t.template,n);return i.resizedSigningPlacementIds.length&&r.set(t.id,i.resizedSigningPlacementIds),{...t,template:i.value}}),resizedSigningPlacementIds:r}}function a(e,t){let n=typeof t==`string`?t.trim():``;return e.some(e=>e.id===n)?n:e[0]?.id??``}function o(t,n,r){return t.map(t=>t.id===n?{...t,template:e.cloneTemplateValue(r)}:t)}function s(e,t,n){let r=n.trim();return e.map(e=>e.id===t?{...e,name:r||e.name}:e)}function c(e,t){return e.length<=1||!e.some(e=>e.id===t)?[...e]:e.filter(e=>e.id!==t)}function l(e,t,n){let r=e.findIndex(e=>e.id===t),i=r+n;if(r<0||i<0||i>=e.length)return[...e];let a=[...e],[o]=a.splice(r,1);return o&&a.splice(i,0,o),a}function u(t){let n=t.map(t=>{let n=e.exportTemplateValue(t.template);return{id:t.id,name:t.name,template:n,html:n.html}});return{files:n,combinedHtml:n.map(e=>`<section data-contract-file-id="${d(e.id)}" data-contract-file-name="${d(e.name)}">${e.template.html}</section>`).join(`
|
|
2
|
+
`)}}function d(e){return e.replaceAll(`&`,`&`).replaceAll(`"`,`"`).replaceAll(`<`,`<`).replaceAll(`>`,`>`)}exports.cloneContractTemplateFiles=t,exports.constrainContractTemplateFiles=i,exports.createContractTemplateFile=n,exports.exportContractTemplateFiles=u,exports.moveContractTemplateFile=l,exports.normalizeContractTemplateFiles=r,exports.removeContractTemplateFile=c,exports.renameContractTemplateFile=s,exports.replaceContractTemplateFile=o,exports.resolveContractTemplateActiveFileId=a;
|
package/dist/lib/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../utils/toolbar-overflow.cjs`);let t=require(`vue`);var n=43,r=6,i=4;function a(a){let o=(0,t.ref)([]),s=new Map,c=0,l=(0,t.computed)(()=>o.value.length>0);function u(e){return o.value.includes(e)}function d(e,n){let r=o.value;r.length===e.length&&e.every(e=>r.includes(e))||(o.value=e,e.length||(a.toolbarMoreOpen.value=!1),!(n>=i)&&(0,t.nextTick)(()=>f(n+1)))}function f(t=0){let i=a.toolbarMainElement.value;if(!i)return;if(typeof window<`u`&&window.matchMedia(`(max-width: 760px)`).matches){d([],t);return}let o=i.clientWidth;if(o<=0)return;let l=a.toolbarMoreElement.value,u=0;for(let e of Array.from(i.children)){if(!(e instanceof HTMLElement))continue;if(e===l){e.offsetWidth>0&&(c=e.offsetWidth);continue}let t=e.dataset.toolbarOverflowKey;if(t){e.offsetWidth>0&&s.set(t,e.offsetWidth);continue}u+=e.offsetWidth}let f=Object.fromEntries(e.CONTRACT_TEMPLATE_TOOLBAR_OVERFLOW_PRIORITY.map(e=>[e,s.get(e)??0]));d(e.resolveContractTemplateToolbarOverflowKeys({availableWidth:o,fixedWidth:u,groupWidths:f,moreWidth:c||n,buffer:r}),t)}(0,t.watch)(()=>a.measureDependencies(),()=>{(0,t.nextTick)(()=>f())},{immediate:!0}),(0,t.onMounted)(()=>{(0,t.nextTick)(()=>f()),typeof document<`u`&&document.fonts?.ready&&document.fonts.ready.then(()=>{a.isDisposed()||!a.toolbarMainElement.value||(0,t.nextTick)(()=>{a.isDisposed()||f()})})}),(0,t.onBeforeUnmount)(()=>{typeof document>`u`||document.removeEventListener(`mousedown`,p,!0)});function p(e){let t=e.target instanceof HTMLElement?e.target:null;t&&(t.closest(`.gd-contract-template-designer__toolbar-more, .ant-popover, .ant-select-dropdown`)||(a.toolbarMoreOpen.value=!1))}return(0,t.watch)(a.toolbarMoreOpen,e=>{typeof document>`u`||(e?document.addEventListener(`mousedown`,p,!0):document.removeEventListener(`mousedown`,p,!0))}),{toolbarOverflowKeys:o,toolbarHasOverflow:l,isToolbarGroupOverflowed:u,measureToolbarOverflow:f}}exports.useToolbarOverflow=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`,t=[{label:`合同宋体`,value:e},{label:`合同楷体`,value:`KaiTi, STKaiti, Kaiti SC, serif`},{label:`合同仿宋`,value:`FangSong, STFangsong, serif`},{label:`文档黑体`,value:`Noto Sans SC, Source Han Sans SC, PingFang SC, Microsoft YaHei, sans-serif`},{label:`Arial`,value:`Arial, Helvetica, sans-serif`},{label:`Times New Roman`,value:`"Times New Roman", Times, serif`},{label:`Courier New`,value:`"Courier New", Consolas, monospace`}],n=[12,14,16,18,20,24,28,32],r=[{label:`左对齐`,value:`left`},{label:`居中对齐`,value:`center`},{label:`右对齐`,value:`right`}],i=[{key:`contractTitle`,label:`合同标题`,headingLevel:1,fontSize:26,fontFamily:e,textAlign:`center`,bold:!0,italic:!1,underline:!1},{key:`clauseTitle`,label:`条款标题`,headingLevel:2,fontSize:18,fontFamily:e,textAlign:`left`,bold:!0,italic:!1,underline:!1},{key:`bodyClause`,label:`正文条款`,paragraph:!0,fontSize:14,fontFamily:e,textAlign:`left`,bold:!1,italic:!1,underline:!1},{key:`appendixTitle`,label:`附件标题`,headingLevel:2,fontSize:20,fontFamily:e,textAlign:`center`,bold:!0,italic:!1,underline:!1}];function
|
|
1
|
+
var e=`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`,t=[{label:`合同宋体`,value:e},{label:`合同楷体`,value:`KaiTi, STKaiti, Kaiti SC, serif`},{label:`合同仿宋`,value:`FangSong, STFangsong, serif`},{label:`文档黑体`,value:`Noto Sans SC, Source Han Sans SC, PingFang SC, Microsoft YaHei, sans-serif`},{label:`Arial`,value:`Arial, Helvetica, sans-serif`},{label:`Times New Roman`,value:`"Times New Roman", Times, serif`},{label:`Courier New`,value:`"Courier New", Consolas, monospace`}],n=[12,14,16,18,20,24,28,32],r=[{label:`左对齐`,value:`left`},{label:`居中对齐`,value:`center`},{label:`右对齐`,value:`right`}],i=[{format:`paragraph`,label:`正文`,fontSize:14,bold:!1,marginTop:0,marginBottom:10},{format:1,label:`标题 1`,fontSize:28,bold:!0,marginTop:20,marginBottom:12},{format:2,label:`标题 2`,fontSize:24,bold:!0,marginTop:16,marginBottom:10},{format:3,label:`标题 3`,fontSize:20,bold:!0,marginTop:14,marginBottom:8},{format:4,label:`标题 4`,fontSize:18,bold:!0,marginTop:12,marginBottom:8},{format:5,label:`标题 5`,fontSize:16,bold:!0,marginTop:10,marginBottom:6},{format:6,label:`标题 6`,fontSize:14,bold:!0,marginTop:8,marginBottom:6}];function a(e){return i.find(t=>t.format===e)}var o=[{key:`contractTitle`,label:`合同标题`,headingLevel:1,fontSize:26,fontFamily:e,textAlign:`center`,bold:!0,italic:!1,underline:!1},{key:`clauseTitle`,label:`条款标题`,headingLevel:2,fontSize:18,fontFamily:e,textAlign:`left`,bold:!0,italic:!1,underline:!1},{key:`bodyClause`,label:`正文条款`,paragraph:!0,fontSize:14,fontFamily:e,textAlign:`left`,bold:!1,italic:!1,underline:!1},{key:`appendixTitle`,label:`附件标题`,headingLevel:2,fontSize:20,fontFamily:e,textAlign:`center`,bold:!0,italic:!1,underline:!1}];function s(e){return[e.paragraph?{type:`set-paragraph`}:{type:`set-heading`,level:e.headingLevel??2},{type:`set-text-align`,value:e.textAlign},{type:`set-font-family`,value:e.fontFamily},{type:`set-font-size`,value:e.fontSize},e.bold?{type:`set-bold`}:{type:`unset-bold`},e.italic?{type:`set-italic`}:{type:`unset-italic`},e.underline?{type:`set-underline`}:{type:`unset-underline`}]}var c=Object.fromEntries(o.map(e=>[e.key,s(e)]));function l(e){return o.find(t=>t.key===e)}function u(e){return(c[e]??[]).map(e=>({...e}))}function d(e){return String(e||``).replace(/["']/g,``).replace(/\s*,\s*/g,`,`).trim().toLowerCase()}function f(e,n=`append`){let r=n===`replace`?e??t:[...t,...e??[]],i=new Map;return r.forEach(e=>{e?.value&&i.set(d(e.value),e)}),Array.from(i.values())}exports.CONTRACT_BLOCK_STYLES=i,exports.CONTRACT_TEXT_STYLE_PRESETS=o,exports.CONTRACT_TEXT_STYLE_PRESET_COMMANDS=c,exports.DEFAULT_CONTRACT_FONT_FAMILY=e,exports.DEFAULT_FONT_FAMILY_OPTIONS=t,exports.DEFAULT_FONT_SIZE_PRESETS=n,exports.DEFAULT_TEXT_ALIGN_OPTIONS=r,exports.getContractBlockStyle=a,exports.getContractTextStylePreset=l,exports.normalizeFontFamilyValue=d,exports.resolveContractTextStylePresetCommands=u,exports.resolveFontFamilyOptions=f;
|
package/dist/lib/components/pro-contract-template-designer/src/extensions/editor-extensions.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../constants.cjs`),n=require(`./template-variable.cjs`),r=require(`./font-size.cjs`),i=require(`./office-content.cjs`),a=require(`./word-paste.cjs`);let o=require(`@tiptap/starter-kit`);o=e.__toESM(o,1);let s=require(`@tiptap/extension-text-align`);s=e.__toESM(s,1);let c=require(`@tiptap/extension-text-style`),l=require(`@tiptap/extension-color`);l=e.__toESM(l,1);let u=require(`@tiptap/extension-placeholder`);u=e.__toESM(u,1);let d=require(`@tiptap/extension-table`),f=require(`@tiptap/extension-table-row`);f=e.__toESM(f,1);let p=require(`@tiptap/extension-table-header`);p=e.__toESM(p,1);let m=require(`@tiptap/extension-table-cell`);m=e.__toESM(m,1);var h=[`heading`,`paragraph`],g=[`textStyle`],_=[1,2,3,4,5,6];function v(e){return e.extend({addAttributes(){return{...this.parent?.(),textAlign:{default:`left`,parseHTML:e=>e.style.textAlign||`left`,renderHTML:e=>({style:`text-align: ${e.textAlign||`left`}`})}}}})}function y(e=`请输入合同正文`,t={}){return[o.default.configure({heading:{levels:_}}),s.default.configure({types:h}),c.TextStyle,c.FontFamily.configure({types:g}),l.default.configure({types:g}),c.BackgroundColor.configure({types:g}),r.FontSize,i.ContractSuperscript,i.ContractSubscript,i.OfficeContentFormatting,u.default.configure({placeholder:e}),d.Table.configure({resizable:!0}),f.default,v(p.default),v(m.default),i.ContractContentImage.configure({getZoom:t.getZoom}),n.TemplateVariable,a.WordPaste.configure({processImageFile:t.processImageFile})]}function b(e){return Number.isFinite(e)?`${Math.max(10,Math.round(e))}px`:`14px`}function x(e,n){switch(n.type){case`undo`:return e.undo();case`redo`:return e.redo();case`select-all`:return e.selectAll();case`set-paragraph`:return e.setParagraph();case`set-heading`:return e.setHeading({level:n.level});case`toggle-heading`:return e.toggleHeading({level:n.level});case`set-bold`:return e.setBold();case`toggle-bold`:return e.toggleBold();case`unset-bold`:return e.unsetBold();case`set-italic`:return e.setItalic();case`toggle-italic`:return e.toggleItalic();case`unset-italic`:return e.unsetItalic();case`set-underline`:return e.setUnderline();case`toggle-underline`:return e.toggleUnderline();case`unset-underline`:return e.unsetUnderline();case`toggle-bullet-list`:return e.toggleBulletList();case`toggle-ordered-list`:return e.toggleOrderedList();case`set-text-align`:return e.setTextAlign(n.value);case`unset-text-align`:return e.unsetTextAlign();case`set-color`:return n.value.trim()?e.setColor(n.value):e.unsetColor();case`unset-color`:return e.unsetColor();case`set-font-size`:return e.setFontSize(b(n.value));case`unset-font-size`:return e.unsetFontSize();case`set-font-family`:return n.value.trim()?e.setFontFamily(n.value):e.unsetFontFamily();case`unset-font-family`:return e.unsetFontFamily();case`clear-text-format`:return e.unsetBold().unsetItalic().unsetUnderline().unsetColor().unsetFontSize().unsetFontFamily();case`clear-block-format`:return e.setParagraph().unsetTextAlign();case`apply-text-style-preset`:return t.resolveContractTextStylePresetCommands(n.preset).reduce(x,e);case`insert-horizontal-rule`:return e.setHorizontalRule();case`insert-content-image`:return n.position===void 0?e.insertContent({type:`image`,attrs:n.image}):e.insertContentAt(n.position,{type:`image`,attrs:n.image});case`insert-table`:return e.insertTable({rows:Math.max(1,Math.round(n.options.rows)),cols:Math.max(1,Math.round(n.options.cols)),withHeaderRow:n.options.withHeaderRow});case`add-table-row-before`:return e.addRowBefore();case`add-table-row-after`:return e.addRowAfter();case`delete-table-row`:return e.deleteRow();case`add-table-column-before`:return e.addColumnBefore();case`add-table-column-after`:return e.addColumnAfter();case`delete-table-column`:return e.deleteColumn();case`merge-table-cells`:return e.mergeCells();case`split-table-cell`:return e.splitCell();case`set-table-cell-align`:return e.setCellAttribute(`textAlign`,n.value);case`toggle-table-header-row`:return e.toggleHeaderRow();case`toggle-table-header-column`:return e.toggleHeaderColumn();case`toggle-table-header-cell`:return e.toggleHeaderCell();case`delete-table`:return e.deleteTable()}}function S(e,t,n={}){return e?x(n.focus===!1?e.chain():e.chain().focus(),t).run():!1}exports.createEditorExtensions=y,exports.runContractTemplateEditorCommand=S;
|
|
1
|
+
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../constants.cjs`),n=require(`./template-variable.cjs`),r=require(`./font-size.cjs`),i=require(`./office-content.cjs`),a=require(`./word-paste.cjs`);let o=require(`@tiptap/starter-kit`);o=e.__toESM(o,1);let s=require(`@tiptap/extension-text-align`);s=e.__toESM(s,1);let c=require(`@tiptap/extension-text-style`),l=require(`@tiptap/extension-color`);l=e.__toESM(l,1);let u=require(`@tiptap/extension-placeholder`);u=e.__toESM(u,1);let d=require(`@tiptap/extension-table`),f=require(`@tiptap/extension-table-row`);f=e.__toESM(f,1);let p=require(`@tiptap/extension-table-header`);p=e.__toESM(p,1);let m=require(`@tiptap/extension-table-cell`);m=e.__toESM(m,1);var h=[`heading`,`paragraph`],g=[`textStyle`],_=[1,2,3,4,5,6];function v(e){return e.extend({addAttributes(){return{...this.parent?.(),textAlign:{default:`left`,parseHTML:e=>e.style.textAlign||`left`,renderHTML:e=>({style:`text-align: ${e.textAlign||`left`}`})}}}})}function y(e=`请输入合同正文`,t={}){return[o.default.configure({heading:{levels:_}}),s.default.configure({types:h}),c.TextStyle,c.FontFamily.configure({types:g}),l.default.configure({types:g}),c.BackgroundColor.configure({types:g}),r.FontSize,i.ContractSuperscript,i.ContractSubscript,i.OfficeContentFormatting,u.default.configure({placeholder:e}),d.Table.configure({resizable:!0}),f.default,v(p.default),v(m.default),i.ContractContentImage.configure({getZoom:t.getZoom}),n.TemplateVariable,a.WordPaste.configure({processImageFile:t.processImageFile})]}function b(e){return Number.isFinite(e)?`${Math.max(10,Math.round(e))}px`:`14px`}function x(e,n){switch(n.type){case`undo`:return e.undo();case`redo`:return e.redo();case`select-all`:return e.selectAll();case`set-paragraph`:return e.setParagraph();case`set-heading`:return e.setHeading({level:n.level});case`apply-block-style`:return n.format===`paragraph`?e.setParagraph():e.setHeading({level:n.format});case`toggle-heading`:return e.toggleHeading({level:n.level});case`set-bold`:return e.setBold();case`toggle-bold`:return e.toggleBold();case`unset-bold`:return e.unsetBold();case`set-italic`:return e.setItalic();case`toggle-italic`:return e.toggleItalic();case`unset-italic`:return e.unsetItalic();case`set-underline`:return e.setUnderline();case`toggle-underline`:return e.toggleUnderline();case`unset-underline`:return e.unsetUnderline();case`toggle-bullet-list`:return e.toggleBulletList();case`toggle-ordered-list`:return e.toggleOrderedList();case`set-text-align`:return e.setTextAlign(n.value);case`unset-text-align`:return e.unsetTextAlign();case`set-color`:return n.value.trim()?e.setColor(n.value):e.unsetColor();case`unset-color`:return e.unsetColor();case`set-font-size`:return e.setFontSize(b(n.value));case`unset-font-size`:return e.unsetFontSize();case`set-font-family`:return n.value.trim()?e.setFontFamily(n.value):e.unsetFontFamily();case`unset-font-family`:return e.unsetFontFamily();case`clear-text-format`:return e.unsetBold().unsetItalic().unsetUnderline().unsetColor().unsetFontSize().unsetFontFamily();case`clear-block-format`:return e.setParagraph().unsetTextAlign();case`apply-text-style-preset`:return t.resolveContractTextStylePresetCommands(n.preset).reduce(x,e);case`insert-horizontal-rule`:return e.setHorizontalRule();case`insert-content-image`:return n.position===void 0?e.insertContent({type:`image`,attrs:n.image}):e.insertContentAt(n.position,{type:`image`,attrs:n.image});case`insert-table`:return e.insertTable({rows:Math.max(1,Math.round(n.options.rows)),cols:Math.max(1,Math.round(n.options.cols)),withHeaderRow:n.options.withHeaderRow});case`add-table-row-before`:return e.addRowBefore();case`add-table-row-after`:return e.addRowAfter();case`delete-table-row`:return e.deleteRow();case`add-table-column-before`:return e.addColumnBefore();case`add-table-column-after`:return e.addColumnAfter();case`delete-table-column`:return e.deleteColumn();case`merge-table-cells`:return e.mergeCells();case`split-table-cell`:return e.splitCell();case`set-table-cell-align`:return e.setCellAttribute(`textAlign`,n.value);case`toggle-table-header-row`:return e.toggleHeaderRow();case`toggle-table-header-column`:return e.toggleHeaderColumn();case`toggle-table-header-cell`:return e.toggleHeaderCell();case`delete-table`:return e.deleteTable()}}function S(e,t,n={}){return e?x(n.focus===!1?e.chain():e.chain().focus(),t).run():!1}exports.createEditorExtensions=y,exports.runContractTemplateEditorCommand=S;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../constants.cjs`);function t(e){let{doc:t,selection:n}=e.state;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`){let r=n.$from.start(e);return{from:r,to:Math.max(r,r+t.content.size)}}}return{from:n.from,to:n.to}}let r=1/0,i=-1/0;return t.nodesBetween(n.from,n.to,(e,t)=>e.type.name!==`paragraph`&&e.type.name!==`heading`?!0:(r=Math.min(r,t),i=Math.max(i,t+e.nodeSize),!0)),!Number.isFinite(r)||!Number.isFinite(i)?{from:n.from,to:n.to}:{from:r+1,to:Math.max(r+1,i-1)}}function n(n,r){let i=e.getContractBlockStyle(r);if(!i)return!1;let a=t(n),o=n.chain().focus().setTextSelection(a);return r===`paragraph`?o.setParagraph():o.setHeading({level:r}),o.setFontSize(`${i.fontSize}px`),i.bold?o.setBold():o.unsetBold(),o.updateAttributes(`paragraph`,{marginTop:`${i.marginTop}px`,marginBottom:`${i.marginBottom}px`}),o.updateAttributes(`heading`,{marginTop:`${i.marginTop}px`,marginBottom:`${i.marginBottom}px`}),o.run(),!0}exports.applyContractTemplateBlockStyle=n;
|
package/dist/lib/components/pro-contract-template-designer/src/utils/context-menu-viewport.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t,n,r,i=12){let a=typeof window>`u`?n+i*2:window.innerWidth,o=typeof window>`u`?r+i*2:window.innerHeight;return{x:Math.max(i,Math.min(e,a-n-i)),y:Math.max(i,Math.min(t,o-r-i))}}function t(t,n,r,i=12){let a=r.getBoundingClientRect();return e(t,n,a.width,a.height,i)}exports.clampContextMenuPosition=e,exports.clampContextMenuToElement=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./serialize-fingerprint.cjs`);function t(t,n){return t.isFocused===n.isFocused&&t.canUndo===n.canUndo&&t.canRedo===n.canRedo&&t.isBold===n.isBold&&t.isItalic===n.isItalic&&t.isUnderline===n.isUnderline&&t.isBulletList===n.isBulletList&&t.isOrderedList===n.isOrderedList&&t.isTableActive===n.isTableActive&&t.currentHeadingLevel===n.currentHeadingLevel&&t.hasMixedBlockFormats===n.hasMixedBlockFormats&&t.textAlign===n.textAlign&&t.fontFamily===n.fontFamily&&t.fontSize===n.fontSize&&t.textColor===n.textColor&&t.selectionText===n.selectionText&&e.serializeFingerprint(t.selectedContentImage)===e.serializeFingerprint(n.selectedContentImage)}exports.isSameEditorState=t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./html.cjs`),t=require(`../constants.cjs`),n=require(`./template-variable-render.cjs`);var r={top:54,right:64,bottom:54,left:64},i={sparse:{columns:2,rows:3},normal:{columns:3,rows:4},dense:{columns:4,rows:6}},a={header:{enabled:!1,text:``,textAlign:`center`,slots:{left:``,center:``,right:``},showOnFirstPage:!0,fontFamily:t.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:12,fontWeight:400,color:`#565b66`,offset:24,divider:{enabled:!1,color:`#d8dadd`}},footer:{enabled:!1,text:`第 {pageNumber} / {totalPages} 页`,textAlign:`center`,slots:{left:``,center:`第 {pageNumber} / {totalPages} 页`,right:``},showOnFirstPage:!0,fontFamily:t.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:12,fontWeight:400,color:`#565b66`,offset:24,divider:{enabled:!1,color:`#d8dadd`}},watermark:{enabled:!1,text:``,fontSize:36,color:`#7a818b`,opacity:.14,rotation:-30,showOnFirstPage:!0,layout:`single`,density:`normal`},pageNumbering:{countFirstPage:!0}},o=/^#[\da-f]{6}$/i,s=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,c=/\$\{\{[\s\S]*?\}\}|\$\{\{|\$\{[^{}]*\}|\{[A-Za-z][A-Za-z0-9]*\}/g;function l(e){return{header:E(e?.header,a.header),footer:E(e?.footer,a.footer),watermark:D(e?.watermark),pageNumbering:{countFirstPage:e?.pageNumbering?.countFirstPage!==!1}}}function u(e){let t=l();return e===`none`?t:(t.footer=E({...t.footer,enabled:!0,slots:{left:``,center:`第 {pageNumber} / {totalPages} 页`,right:``}},a.footer),(e===`internal-review`||e===`draft`)&&(t.watermark=D({...t.watermark,enabled:!0,text:e===`internal-review`?`内部审阅`:`草稿`,layout:`tiled`,density:`normal`})),t)}function d(e){let t=JSON.stringify(l(e));return[`none`,`page-number`,`internal-review`,`draft`].find(e=>JSON.stringify(u(e))===t)??`custom`}function f(e,t=1){let n=l(e).header;return F(n,t)}function p(e,t=1){let n=l(e).footer;return F(n,t)}function m(e,t=1){let n=l(e).watermark;return n.enabled&&!!n.text.trim()&&(t!==1||n.showOnFirstPage)}function h(e,t,n=!0){let r=Math.max(1,Math.floor(e||1)),i=Math.max(0,Math.floor(t||0));return{pageNumber:n?String(r):r===1?``:String(r-1),totalPages:String(n?i:Math.max(0,i-1))}}function g(e,t=[],n=!1){let r=[],i=[],a=new Map(t.map(e=>[e.key,e])),o=0;c.lastIndex=0;let l=c.exec(e);for(;l;){l.index>o&&r.push({type:`text`,value:e.slice(o,l.index)});let t=l[0];if(t===`{pageNumber}`)r.push({type:`pageNumber`});else if(t===`{totalPages}`)r.push({type:`totalPages`});else if(t.startsWith("${{")&&t.endsWith(`}}`)){let e=t.slice(3,-2),o=e.trim();if(e!==o||!s.test(o))i.push({code:`DECORATION_TOKEN_MALFORMED`,message:`页面装饰变量令牌 ${t} 格式错误`,token:t,offset:l.index}),r.push({type:`text`,value:t});else{let e=a.get(o);n&&!e?i.push({code:`DECORATION_VARIABLE_UNKNOWN`,message:`页面装饰引用了未知变量 ${o}`,token:t,offset:l.index}):e?.type===`image`&&i.push({code:`DECORATION_VARIABLE_IMAGE_UNSUPPORTED`,message:`图片变量 ${o} 不能用于页面装饰`,token:t,offset:l.index}),r.push({type:`variable`,key:o,raw:t})}}else i.push({code:`DECORATION_TOKEN_MALFORMED`,message:`页面装饰令牌 ${t} 格式错误`,token:t,offset:l.index}),r.push({type:`text`,value:t});o=l.index+t.length,l=c.exec(e)}return o<e.length&&r.push({type:`text`,value:e.slice(o)}),{tokens:r,issues:i}}function _(e){let t=l(e),n=new Set;return N(t,e=>{g(e).tokens.forEach(e=>{e.type===`variable`&&n.add(e.key)}),L(e).forEach(e=>n.add(e.key))}),n}function v(e,t){let n=l(e),r=[];return N(n,(e,n)=>{g(e,t,!0).issues.forEach((e,t)=>{r.push({type:`variable`,id:`${n}-${e.offset}-${t}`,variableKey:e.code===`DECORATION_VARIABLE_UNKNOWN`?e.token.slice(3,-2).trim():void 0,code:e.code,message:`${P(n)}:${e.message}`})})}),r}function y(e){if(!e.code?.startsWith(`DECORATION_`))return;let t=e.id.replace(/-\d+-\d+$/,``);if(/^(?:header|footer)\.slots\.(?:left|center|right)$/.test(t)||t===`watermark.text`)return t}function b(e,t,n){let r=l(e),i=e=>R(e,t,n);return r.header.slots=I(r.header.slots,i),r.footer.slots=I(r.footer.slots,i),r.watermark.text=i(r.watermark.text),r.header=E(r.header,a.header),r.footer=E(r.footer,a.footer),r}function x(e,t,n,r,i,a){if(e.type===`text`)return e.value;let o=h(r,i,a);if(e.type===`pageNumber`)return o.pageNumber;if(e.type===`totalPages`)return o.totalPages;let s=t.find(t=>t.key===e.key);return!s||s.type===`image`?e.raw:M(s,n?.[e.key])}function S(e){return i[e]??i.normal}function C(e){let t=E(e,a.header);return Math.max(80,t.offset+Math.ceil(t.fontSize*1.5)+20)}function w(e,t=1){return[`gd-contract-template-page`,f(e,t)?`has-contract-header`:``,p(e,t)?`has-contract-footer`:``].filter(Boolean).join(` `)}function T(e,t,n,r=[],i){let a=l(e),o=[];return m(a,t)&&o.push(A(a.watermark,r,i,t,n,a.pageNumbering.countFirstPage)),f(a,t)&&o.push(k(`header`,a.header,r,i,t,n,a.pageNumbering.countFirstPage)),p(a,t)&&o.push(k(`footer`,a.footer,r,i,t,n,a.pageNumbering.countFirstPage)),o.join(``)}function E(e,t){let n=z(e?.textAlign,t.textAlign),r=O(e,t,n),i=r[n].trim()?n:r.center.trim()?`center`:r.left.trim()?`left`:r.right.trim()?`right`:n;return{enabled:!!e?.enabled,text:r[i],textAlign:i,slots:r,showOnFirstPage:e?.showOnFirstPage!==!1,fontFamily:H(e?.fontFamily,t.fontFamily),fontSize:U(e?.fontSize,10,24,t.fontSize),fontWeight:e?.fontWeight===600?600:400,color:V(e?.color,t.color),offset:U(e?.offset,12,48,t.offset),divider:{enabled:!!e?.divider?.enabled,color:V(e?.divider?.color,t.divider.color)}}}function D(e){let t=a.watermark;return{enabled:!!e?.enabled,text:B(e?.text,t.text),fontSize:U(e?.fontSize,12,72,t.fontSize),color:V(e?.color,t.color),opacity:U(e?.opacity,.04,.5,t.opacity),rotation:U(e?.rotation,-90,90,t.rotation),showOnFirstPage:e?.showOnFirstPage!==!1,layout:e?.layout===`tiled`?`tiled`:`single`,density:e?.density===`sparse`||e?.density===`dense`?e.density:`normal`}}function O(e,t,n){if(e?.slots&&typeof e.slots==`object`)return{left:B(e.slots.left,``),center:B(e.slots.center,``),right:B(e.slots.right,``)};let r={left:``,center:``,right:``};return r[n]=B(e?.text,t.text),r}function k(t,n,r,i,a,o,s){let c=C(n),l=n.divider.enabled?`;border-${t===`header`?`bottom`:`top`}:1px solid ${e.escapeHtmlAttribute(n.divider.color)}`:``,u=`color:${e.escapeHtmlAttribute(n.color)};font-family:${e.escapeHtmlAttribute(n.fontFamily)};font-size:${n.fontSize}px;font-weight:${n.fontWeight};${t===`header`?`top`:`bottom`}:${n.offset}px${l}`,d=[`left`,`center`,`right`].map(e=>`<div class="gd-contract-template-page__decoration-slot is-${e}">${j(n.slots[e],r,i,a,o,s)}</div>`).join(``);return`<div class="gd-contract-template-page__${t}" data-decoration-offset="${n.offset}" data-decoration-font-size="${n.fontSize}" data-decoration-safe-padding="${c}" style="${u}">${d}</div>`}function A(t,n,r,i,a,o){let s=S(t.density),c=t.layout===`tiled`?s.columns*s.rows:1,l=j(t.text,n,r,i,a,o),u=Array.from({length:c},()=>`<div class="gd-contract-template-page__watermark-item" style="color:${e.escapeHtmlAttribute(t.color)};font-size:${t.fontSize}px;opacity:${t.opacity};transform:rotate(${t.rotation}deg)">${l}</div>`).join(``),d=t.layout===`tiled`?`--gd-watermark-columns:${s.columns};--gd-watermark-rows:${s.rows}`:``;return`<div class="gd-contract-template-page__watermark is-${t.layout} density-${t.density}" data-watermark-layout="${t.layout}" data-watermark-density="${t.density}" aria-hidden="true" style="${d}">${u}</div>`}function j(t,n,r,i,a,o){let s=h(i,a,o),c=new Map(n.map(e=>[e.key,e]));return g(t).tokens.map(t=>{if(t.type===`text`)return e.escapeHtmlText(t.value);if(t.type===`pageNumber`)return e.escapeHtmlText(s.pageNumber);if(t.type===`totalPages`)return e.escapeHtmlText(s.totalPages);let n=c.get(t.key);return r!==void 0&&n&&n.type!==`image`?e.escapeHtmlText(M(n,r[t.key])):`<span class="gd-contract-template-page__variable" data-template-variable="true" data-key="${e.escapeHtmlAttribute(t.key)}" data-label="${e.escapeHtmlAttribute(n?.label??t.key)}" data-variable-type="${e.escapeHtmlAttribute(n?.type??`text`)}">\${{${e.escapeHtmlText(t.key)}}}</span>`}).join(``)}function M(e,t){let r=t==null?e.defaultValue??``:String(t);return n.resolveTemplateVariablePresentation({type:e.type,defaultValue:r,placeholder:e.placeholder,format:e.format,precision:e.precision,useGrouping:e.useGrouping,checkedText:e.checkedText,uncheckedText:e.uncheckedText,style:e.style}).displayText||e.placeholder||e.label||e.key}function N(e,t){[`left`,`center`,`right`].forEach(n=>{t(e.header.slots[n],`header.slots.${n}`),t(e.footer.slots[n],`footer.slots.${n}`)}),t(e.watermark.text,`watermark.text`)}function P(e){return{"header.slots.left":`页眉左栏`,"header.slots.center":`页眉中栏`,"header.slots.right":`页眉右栏`,"footer.slots.left":`页脚左栏`,"footer.slots.center":`页脚中栏`,"footer.slots.right":`页脚右栏`,"watermark.text":`水印内容`}[e]??`页面装饰`}function F(e,t){return e.enabled&&Object.values(e.slots).some(e=>e.trim())&&(t!==1||e.showOnFirstPage)}function I(e,t){return{left:t(e.left),center:t(e.center),right:t(e.right)}}function L(e){let t=[],n=/\$\{\{([\s\S]*?)\}\}|\$\{\{\s*([A-Za-z][A-Za-z0-9_]{1,63})(?![A-Za-z0-9_])/g,r=n.exec(e);for(;r;){let i=(r[1]??r[2]??``).trim();i&&t.push({key:i,raw:r[0],start:r.index,end:r.index+r[0].length}),r=n.exec(e)}return t}function R(e,t,n){let r=L(e);if(!r.length)return e;let i=``,a=0;return r.forEach(r=>{i+=e.slice(a,r.start),i+=r.key===t?n?`\${{${n}}}`:``:r.raw,a=r.end}),i+e.slice(a)}function z(e,t){return e===`left`||e===`right`||e===`center`?e:t}function B(e,t){return(typeof e==`string`?e:t).slice(0,240)}function V(e,t){return typeof e==`string`&&o.test(e)?e:t}function H(e,t){return typeof e==`string`&&e.replace(/[";{}<>]/g,``).trim().slice(0,120)||t}function U(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(n,Math.max(t,i)):r}exports.CONTRACT_PAGE_BASE_PADDING=r,exports.buildPageDecorationClassNames=w,exports.buildPageDecorationsHtml=T,exports.collectPageDecorationVariableKeys=_,exports.createPageDecorationPreset=u,exports.getPageDecorationSafePadding=C,exports.getWatermarkDensityGrid=S,exports.hasEnabledPageFooter=p,exports.hasEnabledPageHeader=f,exports.hasEnabledPageWatermark=m,exports.normalizePageDecorations=l,exports.parsePageDecorationText=g,exports.resolvePageDecorationPreset=d,exports.resolvePageDecorationTokenText=x,exports.resolvePageDecorationValidationPath=y,exports.rewritePageDecorationVariableTokens=b,exports.validatePageDecorations=v;
|
package/dist/lib/components/pro-contract-template-designer/src/utils/serialize-fingerprint.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return JSON.stringify(e)}exports.serializeFingerprint=e;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const e=require(`../types.cjs`),t=require(`./html.cjs`),n=require(`./template-variable-render.cjs`),r=require(`../composables/use-template-designer.cjs`),
|
|
2
|
-
`)}function
|
|
3
|
-
`,tab:` `})[t.toLowerCase()]??``).trim().replace(/[\u0000-\u0020\u007F]+/g,``);return/^(?:javascript|vbscript|data:text\/html)/i.test(t)}function
|
|
1
|
+
const e=require(`../types.cjs`),t=require(`./html.cjs`),n=require(`./template-variable-render.cjs`),r=require(`./page-decorations.cjs`),i=require(`../composables/use-template-designer.cjs`),a=require(`./image-url.cjs`);var o=new Set([`action`,`formaction`,`href`,`src`,`xlink:href`]),s=/<[^>]+data-template-variable=["']true["'][^>]*>/gi;function c(e){let t={};return(Array.isArray(e?.variables)?e.variables:[]).forEach(e=>{e?.key&&(t[e.key]=x(e))}),t}function l(e,t){return{...c(e),...t??{}}}function u(e,t){let n=f(e);if(!e)return n;let r=Array.isArray(e.variables)?e.variables:[],i=new Set(r.map(e=>e?.key).filter(Boolean));return Object.keys(t).forEach(e=>{i.has(e)||n.push({type:`variable`,id:e,variableKey:e,message:`提交值 ${e} 不属于模板变量`,code:`VARIABLE_UNKNOWN`})}),r.forEach(e=>{if(!e?.key)return;let r=t[e.key];if(e.required&&h(r)){n.push({type:`variable`,id:e.id,variableKey:e.key,message:`请填写${e.label||e.key}`,code:`VARIABLE_REQUIRED`});return}h(r)||(e.type===`number`&&(typeof r!=`number`||!Number.isFinite(r))&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${e.label||e.key} 不是合法数字`,code:`VARIABLE_TYPE_INVALID`}),e.type===`checkbox`&&typeof r!=`boolean`&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${e.label||e.key} 不是合法复选值`,code:`VARIABLE_TYPE_INVALID`}),e.type===`date`&&!j(r)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${e.label||e.key} 不是合法日期`,code:`VARIABLE_TYPE_INVALID`}),e.type===`image`&&!a.isSafeContractImageUrl(String(r))&&n.push({type:`security`,id:e.id,variableKey:e.key,message:`${e.label||e.key} 不是安全的图片地址`,code:`IMAGE_URL_UNSAFE`}))}),n}function d(e,t,n){return n?u(e,t):f(e)}function f(n){if(!n)return[{type:`page`,id:`template`,message:`缺少可渲染的合同模板`,code:`TEMPLATE_MISSING`}];let a=[],o=Array.isArray(n.pages)?n.pages:[],s=Array.isArray(n.variables)?n.variables:[];(!Array.isArray(n.pages)||o.length===0)&&a.push({type:`page`,id:`template-pages`,message:`模板至少需要一个合法页面`,code:`TEMPLATE_PAGES_INVALID`}),Array.isArray(n.variables)||a.push({type:`variable`,id:`template-variables`,message:`模板变量列表格式无效`,code:`TEMPLATE_VARIABLES_INVALID`}),t.hasPositivePageSize(n.pageSize)||a.push({type:`page`,id:`template-page-size`,message:`模板默认页面尺寸无效,已回退为安全默认尺寸`,code:`TEMPLATE_PAGE_SIZE_INVALID`});let c=new Map;s.forEach((t,n)=>{if(!t||typeof t.key!=`string`||!t.key.trim()){a.push({type:`variable`,id:t?.id||`variable-${n}`,message:`第 ${n+1} 个变量缺少有效 key`,code:`VARIABLE_KEY_MISSING`});return}let r=t.key.trim(),o=s.some(e=>e?.id!==t.id&&typeof e?.key==`string`&&e.key.trim()===r),l=i.validateContractTemplateVariableKey(t.key,s,t.id),u=!i.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN.test(r)||i.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS.has(r);l&&(u||!o||t.key!==r)&&a.push({type:`variable`,id:t.id||`variable-${n}`,variableKey:t.key,message:`${t.label||t.key}:${l}`,code:`VARIABLE_KEY_INVALID`}),c.set(r,(c.get(r)??0)+1),e.isContractTemplateFieldType(t.type??`text`)||a.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})}),c.forEach((e,t)=>{e>1&&a.push({type:`variable`,id:t,variableKey:t,message:`变量 key ${t} 重复`,code:`VARIABLE_KEY_DUPLICATED`})});let l=new Set;o.forEach((e,n)=>{if(!e||typeof e.id!=`string`||!e.id.trim()||typeof e.contentHtml!=`string`){a.push({type:`page`,id:e?.id||`page-${n}`,pageId:e?.id,message:`第 ${n+1} 页结构无效,已跳过渲染`,code:`PAGE_INVALID`});return}e.pageSize!==void 0&&!t.hasPositivePageSize(e.pageSize)&&a.push({type:`page`,id:`${e.id}-page-size`,pageId:e.id,message:`${e.title||`第 ${n+1} 页`}:页面尺寸无效,已回退为安全尺寸`,code:`PAGE_SIZE_INVALID`}),E(e.contentHtml).forEach(e=>l.add(e)),D(e.contentHtml).forEach((t,r)=>{a.push({type:`security`,id:`${e.id}-security-${r}`,pageId:e.id,message:`${e.title||`第 ${n+1} 页`}:${t}`,code:`HTML_UNSAFE`})})}),l.forEach(e=>{c.has(e)||a.push({type:`variable`,id:e,variableKey:e,message:`正文引用的变量 ${e} 缺少配置`,code:`VARIABLE_CONFIG_MISSING`})});let u=r.collectPageDecorationVariableKeys(n.pageDecorations);return c.forEach((e,t)=>{!l.has(t)&&!u.has(t)&&a.push({type:`variable`,id:t,variableKey:t,message:`变量 ${t} 缺少正文节点`,code:`VARIABLE_NODE_MISSING`})}),a.push(...r.validatePageDecorations(n.pageDecorations,s)),a}function p(e,n,a={}){if(!e||!Array.isArray(e.pages))return[];let o=Array.isArray(e.variables)?e.variables:[],s=new Map(o.filter(e=>e?.key).map(e=>[e.key,e])),c=t.hasPositivePageSize(e.pageSize)?e.pageSize:i.DEFAULT_PAGE_SIZE;return e.pages.flatMap(t=>{if(!t||typeof t.id!=`string`||!t.id.trim()||typeof t.contentHtml!=`string`)return[];let l=i.resolvePageSize(t.pageSize,c);return[{id:t.id,title:t.title||`未命名页面`,format:l.format??`Custom`,width:l.width,height:l.height,contentHtml:g(t.contentHtml,s,n,a),...e.pageDecorations?{pageDecorations:r.normalizePageDecorations(e.pageDecorations)}:{},decorationVariables:o,decorationValues:n}]})}function m(e,n,i={}){return p(e,n,i).map((e,n,i)=>{let a=r.buildPageDecorationsHtml(e.pageDecorations,n+1,i.length,e.decorationVariables,e.decorationValues);return`<section class="${r.buildPageDecorationClassNames(e.pageDecorations,n+1)}" data-page-id="${t.escapeHtmlAttribute(e.id)}" data-page-format="${t.escapeHtmlAttribute(e.format)}" data-page-width="${e.width}" data-page-height="${e.height}" style="width:${e.width}px;min-height:${e.height}px">${a}<div class="gd-contract-template-page__content">${e.contentHtml}</div></section>`}).join(`
|
|
2
|
+
`)}function h(e){return e==null||e===``}function g(e,n,r,i){if(!e)return e;let a=T(e);if(t.canUseDomHtml()){let e=new DOMParser().parseFromString(a,`text/html`);return e.querySelectorAll(`[data-template-variable]`).forEach(e=>{_(e,n,r,i)}),e.body.innerHTML}return t.replaceTemplateVariableSpans(a,(e,a)=>{let o=t.getHtmlAttribute(a,`data-key`);return o?v(n.get(o),o,r[o],i):e})}function _(e,t,n,r){let i=e.dataset.key||``,a=t.get(i);if(!i||!a)return;let o=new DOMParser().parseFromString(v(a,i,n[i],r),`text/html`).body.firstElementChild;o&&e.replaceWith(o)}function v(e,t,n,r){return r.mode===`display`?y(e,t,n,r):b(e,t,n,r)}function y(e,r,i,o){let s=e?.type??`text`,c=i??x(e),l=s===`image`&&!h(c)&&!a.isSafeContractImageUrl(String(c))?``:c,u=C(l),d=n.resolveTemplateVariablePresentation({type:s,width:e?.width,height:e?.height,placeholder:e?.placeholder??``,defaultValue:u,format:e?.format??``,precision:e?.precision,useGrouping:e?.useGrouping,checkedText:e?.checkedText??``,uncheckedText:e?.uncheckedText??``,multiline:e?.multiline,rows:e?.rows,lineHeight:e?.lineHeight,style:e?.style}),f=d.displayText||e?.placeholder||e?.label||r,p=[`class="${t.escapeHtmlAttribute([`gd-contract-template-renderer__control`,`gd-contract-template-renderer__preview-control`,...d.classes,o.activeKey===r?`is-active`:``,h(l)?`is-empty`:``].filter(Boolean).join(` `))}"`,`style="${t.escapeHtmlAttribute(d.styleText)}"`,`data-contract-render-wrapper="true"`,`data-contract-render-preview="true"`,`data-key="${t.escapeHtmlAttribute(r)}"`,`data-variable-type="${t.escapeHtmlAttribute(s)}"`,`aria-label="${t.escapeHtmlAttribute(e?.label||r)}"`,o.disabled?``:`role="button"`,o.disabled?``:`tabindex="0"`].filter(Boolean).join(` `);return s===`checkbox`?`<span ${p}><span class="gd-contract-template-renderer__checkbox-mark" aria-hidden="true">${w(l)?`✓`:``}</span>${t.escapeHtmlText(f)}</span>`:s===`image`&&!h(l)?`<span ${p}></span>`:`<span ${p}>${t.escapeHtmlText(f)}</span>`}function b(e,r,i,a){let o=e?.type??`text`,s=!!a.readonly,c=S(i??x(e)),l=n.resolveTemplateVariablePresentation({type:o,width:e?.width,height:e?.height,placeholder:e?.placeholder??``,defaultValue:s?c:``,format:e?.format??``,precision:e?.precision,useGrouping:e?.useGrouping,checkedText:e?.checkedText??``,uncheckedText:e?.uncheckedText??``,multiline:e?.multiline,rows:e?.rows,lineHeight:e?.lineHeight,style:e?.style}),u=a.disabled||s,d=[`data-contract-render-control="true"`,`data-key="${t.escapeHtmlAttribute(r)}"`,`data-variable-type="${t.escapeHtmlAttribute(o)}"`,`aria-label="${t.escapeHtmlAttribute(e?.label||r)}"`,u?`disabled`:``,s?`readonly`:``].filter(Boolean).join(` `),f=`style="${t.escapeHtmlAttribute(l.styleText)}"`,p=t.escapeHtmlAttribute([`gd-contract-template-renderer__control`,...l.classes].join(` `));return o===`checkbox`?`<label class="${p}" ${f} data-contract-render-wrapper="true" data-key="${t.escapeHtmlAttribute(r)}"><input type="checkbox" ${d} ${w(c)?`checked`:``}>${t.escapeHtmlText(e?.checkedText||e?.label||r)}</label>`:s?`<span class="${p}" ${f} data-contract-render-wrapper="true" data-key="${t.escapeHtmlAttribute(r)}">${t.escapeHtmlText(l.displayText||c)}</span>`:o===`number`?`<input class="${p}" ${f} type="number" ${d} value="${t.escapeHtmlAttribute(c)}" placeholder="${t.escapeHtmlAttribute(e?.placeholder||``)}">`:o===`date`?`<input class="${p}" ${f} type="date" ${d} value="${t.escapeHtmlAttribute(c)}" placeholder="${t.escapeHtmlAttribute(e?.placeholder||``)}">`:e?.multiline?`<textarea class="${p}" ${f} ${d} placeholder="${t.escapeHtmlAttribute(e.placeholder||``)}">${t.escapeHtmlText(c)}</textarea>`:`<input class="${p}" ${f} type="text" ${d} value="${t.escapeHtmlAttribute(c)}" placeholder="${t.escapeHtmlAttribute(e?.placeholder||``)}">`}function x(e){if(!e)return``;if(e.type===`checkbox`)return w(e.defaultValue);if(e.type===`number`&&e.defaultValue!==void 0){let t=Number(e.defaultValue);return Number.isFinite(t)?t:e.defaultValue}return e.defaultValue??``}function S(e){return typeof e==`boolean`?e?`true`:``:e==null?``:String(e)}function C(e){return typeof e==`boolean`?e?`true`:`false`:e==null?``:String(e)}function w(e){return e===!0||e===`true`||e===`1`||e===`yes`||e===`是`||e===`已选`}function T(e){if(t.canParseHtmlDocument()){let t=new DOMParser().parseFromString(e,`text/html`);return t.querySelectorAll(`script,style,meta,link,iframe,object,embed`).forEach(e=>e.remove()),t.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase();(n.startsWith(`on`)||n===`srcdoc`||o.has(n)&&O(t.value)||n===`style`&&A(t.value))&&e.removeAttribute(t.name)})}),t.body.innerHTML}return e.replace(/<\s*(script|style|iframe|object|embed)\b[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*\/?\s*(?:script|style|meta|link|iframe|object|embed)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\2|([^\s>]+))/gi,(e,t,n,r,i)=>{let a=r??i??``;return O(a)?``:n?` ${t}=${n}${a}${n}`:` ${t}=${a}`}).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>A(n)?``:` style=${t}${n}${t}`)}function E(e){return t.collectFromHtmlTags(e,s,e=>t.getHtmlAttribute(e,`data-key`))}function D(e){let t=[];return/<\s*(script|style|meta|link|iframe|object|embed)\b/i.test(e)&&t.push(`正文包含已移除的危险标签`),/\s(?:on[a-z]+|srcdoc)\s*=/i.test(e)&&t.push(`正文包含已移除的事件或嵌入属性`),(k(e)||/style\s*=\s*["'][^"']*(?:expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html))/i.test(e))&&t.push(`正文包含已移除的危险 URL 或样式`),t}function O(e){let t=e.replace(/&#(?:x([\da-f]+)|(\d+));?/gi,(e,t,n)=>{let r=Number.parseInt(t??n??``,t?16:10);try{return Number.isFinite(r)?String.fromCodePoint(r):e}catch{return e}}).replace(/&(colon|tab|newline);/gi,(e,t)=>({colon:`:`,newline:`
|
|
3
|
+
`,tab:` `})[t.toLowerCase()]??``).trim().replace(/[\u0000-\u0020\u007F]+/g,``);return/^(?:javascript|vbscript|data:text\/html)/i.test(t)}function k(e){let t=/\s+(?:action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\1|([^\s>]+))/gi,n=t.exec(e);for(;n;){if(O(n[2]??n[3]??``))return!0;n=t.exec(e)}return!1}function A(e){return/expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html)/i.test(e)}function j(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t)return!1;let n=new Date(`${t[1]}-${t[2]}-${t[3]}T00:00:00Z`);return!Number.isNaN(n.getTime())&&n.getUTCFullYear()===Number(t[1])&&n.getUTCMonth()+1===Number(t[2])&&n.getUTCDate()===Number(t[3])}exports.buildInitialRenderValues=c,exports.buildTemplateRenderHtml=m,exports.buildTemplateRenderPages=p,exports.isEmptyRenderValue=h,exports.normalizeRenderValues=l,exports.resolveTemplateRenderSubmitErrors=d,exports.sanitizeContractRendererHtml=T,exports.validateTemplateRenderStructure=f,exports.validateTemplateRenderValues=u;
|