@guodun/antdv 1.7.6 → 1.7.8

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.
Files changed (47) hide show
  1. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +152 -146
  2. package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +415 -295
  3. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1040 -993
  4. package/dist/es/components/pro-contract-template-designer/src/composables/use-auto-pagination.mjs +141 -47
  5. package/dist/es/components/pro-contract-template-designer/src/composables/use-draft-cache-session.mjs +1 -1
  6. package/dist/es/components/pro-contract-template-designer/src/composables/use-page-authoring.mjs +22 -21
  7. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-authoring.mjs +37 -36
  8. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +125 -75
  9. package/dist/es/components/pro-contract-template-designer/src/utils/authoring-search.mjs +34 -13
  10. package/dist/es/components/pro-contract-template-designer/src/utils/caret-viewport.mjs +41 -0
  11. package/dist/es/components/pro-contract-template-designer/src/utils/document-outline.mjs +24 -1
  12. package/dist/es/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.mjs +15 -0
  13. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  14. package/dist/es/index.mjs +21 -21
  15. package/dist/es/node_modules/@tiptap/pm/dist/transform/index.mjs +1 -0
  16. package/dist/es/node_modules/prosemirror-transform/dist/index.mjs +161 -67
  17. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -1
  18. package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
  19. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  20. package/dist/lib/components/pro-contract-template-designer/src/composables/use-auto-pagination.cjs +1 -1
  21. package/dist/lib/components/pro-contract-template-designer/src/composables/use-draft-cache-session.cjs +1 -1
  22. package/dist/lib/components/pro-contract-template-designer/src/composables/use-page-authoring.cjs +1 -1
  23. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-authoring.cjs +1 -1
  24. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
  25. package/dist/lib/components/pro-contract-template-designer/src/utils/authoring-search.cjs +1 -1
  26. package/dist/lib/components/pro-contract-template-designer/src/utils/caret-viewport.cjs +1 -0
  27. package/dist/lib/components/pro-contract-template-designer/src/utils/document-outline.cjs +1 -1
  28. package/dist/lib/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.cjs +1 -0
  29. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  30. package/dist/lib/index.cjs +1 -1
  31. package/dist/lib/node_modules/@tiptap/pm/dist/transform/index.cjs +1 -0
  32. package/dist/lib/node_modules/prosemirror-transform/dist/index.cjs +2 -2
  33. package/dist/theme/icon.css +1 -1
  34. package/dist/theme/index.css +1 -1
  35. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +1 -0
  36. package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +28 -0
  37. package/dist/types/components/pro-contract-template-designer/src/composables/use-auto-pagination.d.ts +25 -2
  38. package/dist/types/components/pro-contract-template-designer/src/composables/use-draft-cache-session.d.ts +1 -1
  39. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +10 -1
  40. package/dist/types/components/pro-contract-template-designer/src/utils/authoring-search.d.ts +5 -0
  41. package/dist/types/components/pro-contract-template-designer/src/utils/caret-viewport.d.ts +18 -0
  42. package/dist/types/components/pro-contract-template-designer/src/utils/document-outline.d.ts +6 -0
  43. package/dist/types/components/pro-contract-template-designer/src/utils/editor-snapshot-cache.d.ts +16 -0
  44. package/package.json +3 -3
  45. package/dist/theme/dept-selector.css +0 -1
  46. package/dist/theme/pro-selector-group.css +0 -1
  47. package/dist/theme/role-selector.css +0 -1
@@ -1,4 +1,4 @@
1
- const e=require(`../constants.cjs`),t=require(`../utils/html.cjs`),n=require(`../utils/template-variable-render.cjs`),r=require(`../utils/page-decorations.cjs`),i=require(`../types.cjs`),a=require(`../utils/advanced-controls.cjs`);var o=[{format:`A0`,width:3178,height:4493,label:`A0`},{format:`A1`,width:2245,height:3178,label:`A1`},{format:`A2`,width:1587,height:2245,label:`A2`},{format:`A3`,width:1123,height:1587,label:`A3`},{format:`A4`,width:794,height:1123,label:`A4`},{format:`A5`,width:559,height:794,label:`A5`},{format:`Letter`,width:816,height:1056,label:`Letter`},{format:`Legal`,width:816,height:1344,label:`Legal`}],s={...o[4]},c={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},ee=3,te=28,l=`contract-template-renderer-1.0.0`,u=`contract-render-css-1.0.0`,d=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,f=new Set([`pageNumber`,`totalPages`,`rendererVersion`]);function p(e,t,n){let r=typeof e==`string`?e.trim():``;return r?d.test(r)?f.has(r)?`${r} 是系统保留标识`:t.some(e=>e.id!==n&&e.key.trim()===r)?`变量标识 ${r} 已存在`:``:`变量标识需以字母开头,仅包含字母、数字和下划线,长度为 2~64 位`:`请输入变量标识`}function ne(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var m=[{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}],h=[{type:`select`,label:`下拉框`,defaultWidth:180,defaultHeight:32},{type:`radio`,label:`单选框`,defaultWidth:220,defaultHeight:32}],g=[{type:`user-selector`,label:`用户选择器`,defaultWidth:240,defaultHeight:36},{type:`dept-selector`,label:`部门选择器`,defaultWidth:240,defaultHeight:36},{type:`role-selector`,label:`角色选择器`,defaultWidth:240,defaultHeight:36},{type:`org-selector`,label:`组织架构`,defaultWidth:240,defaultHeight:36}],_=[{type:`custom`,label:`自定义控件`,defaultWidth:200,defaultHeight:36}],v=[...m,...h,...g,..._],y=0;function b(e){return y+=1,`${e}-${Date.now().toString(36)}-${y.toString(36)}`}function x(e){return JSON.parse(JSON.stringify(e))}function S(e){return o.find(t=>t.format===e)}function C(e){if(e)return e.format&&e.format!==`Custom`?e.format:o.find(t=>t.width===e.width&&t.height===e.height)?.format}function w(e,t=s){let n=C(t)??t.format,r=e?.format??C(e)??n??`Custom`,i=r===`Custom`?void 0:S(r),a=O(i?.width??e?.width,t.width),o=O(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function T(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function E(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=S(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:C(e),a=i?S(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=T(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:o).map(e=>({...e}))}function D(e,t){let n=T(e);return t.find(e=>T(e)===n)}function re(e,t){let n=E(t),r=n[0],i=w(e.pageSize,r),a=D(i,n)??r,o=new Map,s=e.pages.map(e=>{let t=w(e.pageSize,i),a=D(t,n)??r;return T(t)!==T(a)&&o.set(e.id,{source:t,target:a}),{...e,pageSize:{...a}}});return{...e,pageSize:{...a},pages:s}}function O(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function k(e=1,t){return{id:b(`page`),title:`第 ${e} 页`,pageSize:t?w(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function A(e=1,t,n=`<p></p>`,r){return{id:b(`page`),title:`第 ${e} 页`,pageSize:t?w(t):void 0,contentHtml:n,contentJson:r}}function j(e=s){let t=w(e);return{pages:[k(1,t)],variables:[],pageSize:t}}function ie(e=s){let t=w(e);return{pages:[A(1,t,`<p></p>`)],variables:[],pageSize:t}}function M(e,t=m){return t.find(t=>t.type===e)??v.find(t=>t.type===e)??m[0]}function N(e,t=m,n={}){let r=e.type===void 0?`text`:e.type,i=M(r,t),a=P(r);return{id:e.id??b(`variable`),key:e.key,label:e.label??i.label??e.key,type:r,placeholder:e.placeholder??a.placeholder??``,width:Math.max(24,Math.round(e.width??i.defaultWidth??140)),height:Math.max(24,Math.round(e.height??a.height??i.defaultHeight??32)),required:e.required??!1,defaultValue:e.defaultValue??``,format:e.format??a.format??``,precision:e.precision??a.precision,useGrouping:e.useGrouping??a.useGrouping,checkedText:e.checkedText??a.checkedText??``,uncheckedText:e.uncheckedText??a.uncheckedText??``,options:Array.isArray(e.options)?e.options.map(e=>({...e})):[],dataSource:e.dataSource?{...e.dataSource}:void 0,multiple:e.multiple??!1,componentKey:e.componentKey??``,componentConfig:e.componentConfig?{...e.componentConfig}:{},multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...c,...a.style,...n,...e.style}}}function P(e){return e===`date`?{placeholder:`年 月 日`,format:`YYYY年MM月DD日`,style:{border:!1,underline:!0}}:e===`number`?{placeholder:`0`,format:`decimal`,useGrouping:!0,style:{border:!1,underline:!0,textAlign:`right`}}:e===`image`?{placeholder:`图片`,height:96,style:{border:!0,underline:!1,borderStyle:`dashed`,background:`transparent`,lineColor:`#d9dce0`,textAlign:`center`,objectFit:`contain`}}:e===`checkbox`?{height:28,checkedText:`已选`,uncheckedText:``,style:{border:!1,underline:!1}}:e===`select`||e===`radio`?{placeholder:e===`select`?`请选择`:`请选择一项`,multiple:!1,style:{border:!0,underline:!1}}:e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`||e===`custom`?{placeholder:`请选择`,multiple:!1,style:{border:!0,underline:!1}}:{style:{border:!1,underline:!0}}}function F(e){return e!==void 0&&!i.isContractTemplateFieldType(e)}function ae(e,t=s){if(!e)return j(t);let n=w(e.pageSize,t),i=(e.pages?.length?e.pages:[k(1,n)]).map((e,t)=>({id:e.id||b(`page`),title:e.title||`第 ${t+1} 页`,pageSize:w(e.pageSize,n),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),a=[],o=new Map;return Object.fromEntries(i.map(e=>[e.id,w(e.pageSize,n)])),(e.variables??[]).forEach(e=>{let t=N({...e,id:e.id||b(`variable`)});a.push(t),t.key&&o.set(t.key,t)}),i.forEach(e=>{pe(e).forEach(e=>{if(!e.key)return;let t=o.get(e.key);if(!t){let t=N(e);a.push(t),o.set(e.key,t);return}if(F(e.type)){let n=N({...t,type:e.type});o.set(e.key,n);let r=a.findIndex(e=>e.id===t.id);r>=0&&(a[r]=n)}})}),{pages:i,variables:a,pageSize:n,...e.pageDecorations?{pageDecorations:r.normalizePageDecorations(e.pageDecorations)}:{}}}function oe(e){return e.pages.map((t,n)=>W(e,t,n,t.contentHtml,{})).join(`
2
- `)}function I(e){return e.pages.map((t,n)=>W(e,t,n,xe(t.contentHtml))).join(`
3
- `)}function se(e){return L(e).map(({page:t,contentHtml:n},i)=>{let a=w(t.pageSize,e.pageSize),o=r.buildPageDecorationsHtml(e.pageDecorations,i+1,e.pages.length,e.variables,{});return`<section ${G(t,e.pageSize,e.pageDecorations,i+1)} style="width:${a.width}px;min-height:${a.height}px">${o}<div class="gd-contract-template-page__content">${n}</div></section>`}).join(`
4
- `)}function L(e){let t=new Map(e.variables.map(e=>[e.key,e]));return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:he(e.contentHtml,t)}))}var R=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function ce(e){let t=r.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new R(t);let n=x(e);return n.pageDecorations&&=r.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:l,styleVersion:u,html:I(n)}}function le(e,t={}){let n=[],i=new Set;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&n.push({type:`page`,id:e.pages[t.maxPages]?.id??e.pages.at(-1)?.id??``,pageId:e.pages[t.maxPages]?.id,code:`PAGE_LIMIT_EXCEEDED`,message:`合同共 ${e.pages.length} 页,超过最多 ${t.maxPages} 页限制`}),e.variables.forEach(t=>{let r=p(t.key,e.variables,t.id),a=!!t.key?.trim()&&e.variables.some(e=>e.id!==t.id&&e.key.trim()===t.key.trim());r&&(!a||t.key!==t.key.trim())&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:t.key?.trim()?r:`${t.label||`变量`} 缺少变量标识`,code:t.key?.trim()?`VARIABLE_KEY_INVALID`:`VARIABLE_KEY_MISSING`}),t.key&&(i.has(t.key)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`变量标识 ${t.key} 重复`,code:`VARIABLE_KEY_DUPLICATED`}),i.add(t.key)),F(t.type)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let a=new Set(e.variables.map(e=>e.key).filter(Boolean)),o=new Set,s=r.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{z(e).forEach(t=>{o.add(t),a.has(t)||n.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!o.has(e.key)&&!s.has(e.key)&&n.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),n.push(...r.validatePageDecorations(e.pageDecorations,e.variables)),n}function z(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;B(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 B(e){return e===`templateVariable`||e===`templateField`}function V(e){let t=new Set;return e.pages.forEach(e=>{z(e).forEach(e=>t.add(e))}),t}function H(e){let t=V(e),n=r.collectPageDecorationVariableKeys(e.pageDecorations);return{...e,variables:e.variables.filter(r=>p(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function U(e,t){for(let n=0;n<t;n+=1){let r=e[n]?.content??[];for(let e of r){let r=Math.max(1,Number(e.attrs?.rowspan)||1);if(n+r>t)return!1}}return!0}function ue(e,t,n){let r=e.content??[],i=t.tableRows??[],a=Math.min(r.length,i.length),o=n-Math.max(0,t.trailingTextBlockHeight??0),s=0;for(let e=0;e<a;e+=1){let t=i[e];if(t.top+t.height>o+1)break;s=e+1}if(s<=0||s>=r.length)return;let c=s;for(;c>0&&!U(r,c);)--c;if(!(c<=0||c>=r.length))return{currentTable:{...e,content:r.slice(0,c)},overflowTable:{...e,content:r.slice(c)}}}function de(e,t,n){let r=e??[];if(!r.length||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;let o=r[a],s=o?.type===`table`?ue(o,t[a],n):void 0;if(s)return{splitIndex:a,currentContent:[...r.slice(0,a),s.currentTable],overflowContent:[s.overflowTable,...r.slice(a+1)]};if(!(a<=0))return{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function W(e,t,n,i,a){let o=r.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,a);return`<section ${G(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${i}</div></section>`}function G(e,n,i,a=1){let o=w(e.pageSize,n);return[`class="${r.buildPageDecorationClassNames(i,a)}"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(o.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(o.label??o.format??`自定义`)}"`,`data-page-width="${o.width}"`,`data-page-height="${o.height}"`].join(` `)}var fe=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function pe(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||F(e.type)&&!F(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(me(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,fe,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`),o=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:o?o===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,options:a.decodeContractTemplateJsonAttribute(e(`data-control-options`))??[],dataSource:a.decodeContractTemplateJsonAttribute(e(`data-control-source`)),multiple:e(`data-multiple`)===`true`,componentKey:e(`data-component-key`)??``,componentConfig:a.decodeContractTemplateJsonAttribute(e(`data-component-config`))??{},multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function me(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,options:Array.isArray(e.options)?e.options:[],dataSource:e.dataSource,multiple:e.multiple===!0,componentKey:r(`componentKey`)??``,componentConfig:e.componentConfig,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function he(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return ge(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{_e(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(ye(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?ve(i,n):e})}function ge(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&Y(r)){e.removeAttribute(t.name);return}n===`style`&&X(r)&&e.removeAttribute(t.name)})})}function q(e,r){let i=e(`data-key`)??``,a=r.get(i),o=a?.type??e(`data-variable-type`)??`text`,s=be(o,a?.defaultValue??e(`data-default-value`)??``),c=n.resolveTemplateVariablePresentation({type:o,width:a?.width??e(`data-width`),height:a?.height??e(`data-height`),defaultValue:s,placeholder:a?.placeholder??e(`data-placeholder`)??``,format:a?.format??e(`data-format`)??``,precision:a?.precision??t.readOptionalNumber(e(`data-precision`)),useGrouping:a?.useGrouping??t.readOptionalBoolean(e(`data-use-grouping`)),checkedText:a?.checkedText??e(`data-checked-text`)??``,uncheckedText:a?.uncheckedText??e(`data-unchecked-text`)??``,multiline:a?.multiline??t.readOptionalBoolean(e(`data-multiline`))??!1,rows:a?.rows??e(`data-rows`),lineHeight:a?.lineHeight??e(`data-line-height`),style:J(a,e)});return{key:i,label:a?.label??e(`data-label`)??i,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function _e(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 ve(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 ye(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>Y(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>X(n)?``:` style=${t}${n}${t}`)}function J(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 be(e,t){return e===`image`&&Y(t)?``:t}function Y(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function X(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function xe(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 Se(e){return e===`left`||e===`center`||e===`right`}function Ce(e){return e===`solid`||e===`dashed`}function we(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return Se(e)?e:void 0}function Q(e){return Ce(e)?e:void 0}function $(e){return we(e)?e:void 0}exports.ALL_DEFAULT_FIELD_TYPES=v,exports.CONTRACT_TEMPLATE_RENDERER_VERSION=l,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=f,exports.CONTRACT_TEMPLATE_STYLE_VERSION=u,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=d,exports.ContractTemplatePageDecorationValidationError=R,exports.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES=h,exports.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES=g,exports.DEFAULT_CUSTOM_FIELD_TYPES=_,exports.DEFAULT_FIELD_STYLE=c,exports.DEFAULT_FIELD_TYPES=m,exports.DEFAULT_MULTILINE_LINE_HEIGHT=te,exports.DEFAULT_MULTILINE_ROWS=ee,exports.DEFAULT_PAGE_SIZE=s,exports.PAGE_SIZE_OPTIONS=o,exports.buildTemplateExpressionHtml=I,exports.buildTemplateHtml=oe,exports.buildTemplatePreviewHtml=se,exports.buildTemplatePreviewPages=L,exports.cloneTemplateValue=x,exports.collectTemplateValueVariableKeys=V,exports.collectTemplateVariableKeys=z,exports.constrainTemplatePageSizes=re,exports.createBlankPage=A,exports.createBlankTemplate=ie,exports.createDefaultPage=k,exports.createDefaultTemplate=j,exports.createDesignerId=b,exports.createTemplateVariable=N,exports.exportTemplateValue=ce,exports.findPageSizeOption=D,exports.getFieldOption=M,exports.getPageSizeKey=T,exports.getPageSizeOption=S,exports.inferPageFormat=C,exports.normalizeContractTemplateMaxPages=ne,exports.normalizePageSizeOptions=E,exports.normalizeTemplateValue=ae,exports.resolvePageSize=w,exports.splitPageContentByMeasurements=de,exports.syncTemplateVariablesWithPages=H,exports.validateContractTemplateVariableKey=p,exports.validateTemplateValue=le;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`),t=require(`../utils/html.cjs`),n=require(`../utils/template-variable-render.cjs`),r=require(`../utils/page-decorations.cjs`),i=require(`../types.cjs`),a=require(`../utils/advanced-controls.cjs`);let o=require(`vue`);var s=[{format:`A0`,width:3178,height:4493,label:`A0`},{format:`A1`,width:2245,height:3178,label:`A1`},{format:`A2`,width:1587,height:2245,label:`A2`},{format:`A3`,width:1123,height:1587,label:`A3`},{format:`A4`,width:794,height:1123,label:`A4`},{format:`A5`,width:559,height:794,label:`A5`},{format:`Letter`,width:816,height:1056,label:`Letter`},{format:`Legal`,width:816,height:1344,label:`Legal`}],c={...s[4]},l={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},ee=3,te=28,u=`contract-template-renderer-1.0.0`,d=`contract-render-css-1.0.0`,f=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,p=new Set([`pageNumber`,`totalPages`,`rendererVersion`]);function m(e,t,n){let r=typeof e==`string`?e.trim():``;return r?f.test(r)?p.has(r)?`${r} 是系统保留标识`:t.some(e=>e.id!==n&&e.key.trim()===r)?`变量标识 ${r} 已存在`:``:`变量标识需以字母开头,仅包含字母、数字和下划线,长度为 2~64 位`:`请输入变量标识`}function h(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var g=[{type:`text`,label:`输入框`,defaultWidth:160,defaultHeight:32},{type:`date`,label:`日期`,defaultWidth:140,defaultHeight:32},{type:`number`,label:`数字`,defaultWidth:120,defaultHeight:32},{type:`image`,label:`图片`,defaultWidth:160,defaultHeight:96},{type:`checkbox`,label:`复选框`,defaultWidth:96,defaultHeight:28}],_=[{type:`select`,label:`下拉框`,defaultWidth:180,defaultHeight:32},{type:`radio`,label:`单选框`,defaultWidth:220,defaultHeight:32}],v=[{type:`user-selector`,label:`用户选择器`,defaultWidth:240,defaultHeight:36},{type:`dept-selector`,label:`部门选择器`,defaultWidth:240,defaultHeight:36},{type:`role-selector`,label:`角色选择器`,defaultWidth:240,defaultHeight:36},{type:`org-selector`,label:`组织架构`,defaultWidth:240,defaultHeight:36}],y=[{type:`custom`,label:`自定义控件`,defaultWidth:200,defaultHeight:36}],b=[...g,..._,...v,...y],x=0;function S(e){return x+=1,`${e}-${Date.now().toString(36)}-${x.toString(36)}`}function C(e){return JSON.parse(JSON.stringify(e))}function w(e){return s.find(t=>t.format===e)}function T(e){if(e)return e.format&&e.format!==`Custom`?e.format:s.find(t=>t.width===e.width&&t.height===e.height)?.format}function E(e,t=c){let n=T(t)??t.format,r=e?.format??T(e)??n??`Custom`,i=r===`Custom`?void 0:w(r),a=A(i?.width??e?.width,t.width),o=A(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function D(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function O(e){let t=(Array.isArray(e)?e:s).map(e=>{let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return;let r=e?.format;if(r&&r!==`Custom`){let t=w(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:T(e),a=i?w(i):void 0;if(a)return{...a,label:e.label??a.label};if(r!==`Custom`)return;let o=Math.round(t),s=Math.round(n);if(!(o<=0||s<=0))return{format:`Custom`,width:o,height:s,label:e.label??`Custom`}}).filter(Boolean),n=new Set,r=t.filter(e=>{let t=D(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:s).map(e=>({...e}))}function k(e,t){let n=D(e);return t.find(e=>D(e)===n)}function ne(e,t){let n=O(t),r=n[0],i=E(e.pageSize,r),a=k(i,n)??r,o=new Map,s=e.pages.map(e=>{let t=E(e.pageSize,i),a=k(t,n)??r;return D(t)!==D(a)&&o.set(e.id,{source:t,target:a}),{...e,pageSize:{...a}}});return{...e,pageSize:{...a},pages:s}}function A(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function j(e=1,t){return{id:S(`page`),title:`第 ${e} 页`,pageSize:t?E(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function M(e=1,t,n=`<p></p>`,r){return{id:S(`page`),title:`第 ${e} 页`,pageSize:t?E(t):void 0,contentHtml:n,contentJson:r}}function N(e=c){let t=E(e);return{pages:[j(1,t)],variables:[],pageSize:t}}function re(e=c){let t=E(e);return{pages:[M(1,t,`<p></p>`)],variables:[],pageSize:t}}function P(e,t=g){return t.find(t=>t.type===e)??b.find(t=>t.type===e)??g[0]}function F(e,t=g,n={}){let r=e.type===void 0?`text`:e.type,i=P(r,t),a=ie(r);return{id:e.id??S(`variable`),key:e.key,label:e.label??i.label??e.key,type:r,placeholder:e.placeholder??a.placeholder??``,width:Math.max(24,Math.round(e.width??i.defaultWidth??140)),height:Math.max(24,Math.round(e.height??a.height??i.defaultHeight??32)),required:e.required??!1,defaultValue:e.defaultValue??``,format:e.format??a.format??``,precision:e.precision??a.precision,useGrouping:e.useGrouping??a.useGrouping,checkedText:e.checkedText??a.checkedText??``,uncheckedText:e.uncheckedText??a.uncheckedText??``,options:Array.isArray(e.options)?e.options.map(e=>({...e})):[],dataSource:e.dataSource?{...e.dataSource}:void 0,multiple:e.multiple??!1,componentKey:e.componentKey??``,componentConfig:e.componentConfig?{...e.componentConfig}:{},multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...l,...a.style,...n,...e.style}}}function ie(e){return e===`date`?{placeholder:`年 月 日`,format:`YYYY年MM月DD日`,style:{border:!1,underline:!0}}:e===`number`?{placeholder:`0`,format:`decimal`,useGrouping:!0,style:{border:!1,underline:!0,textAlign:`right`}}:e===`image`?{placeholder:`图片`,height:96,style:{border:!0,underline:!1,borderStyle:`dashed`,background:`transparent`,lineColor:`#d9dce0`,textAlign:`center`,objectFit:`contain`}}:e===`checkbox`?{height:28,checkedText:`已选`,uncheckedText:``,style:{border:!1,underline:!1}}:e===`select`||e===`radio`?{placeholder:e===`select`?`请选择`:`请选择一项`,multiple:!1,style:{border:!0,underline:!1}}:e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`||e===`custom`?{placeholder:`请选择`,multiple:!1,style:{border:!0,underline:!1}}:{style:{border:!1,underline:!0}}}function I(e){return e!==void 0&&!i.isContractTemplateFieldType(e)}function L(e,t=c){if(!e)return N(t);let n=E(e.pageSize,t),i=(e.pages?.length?e.pages:[j(1,n)]).map((e,t)=>({id:e.id||S(`page`),title:e.title||`第 ${t+1} 页`,pageSize:E(e.pageSize,n),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),a=[],o=new Map;return Object.fromEntries(i.map(e=>[e.id,E(e.pageSize,n)])),(e.variables??[]).forEach(e=>{let t=F({...e,id:e.id||S(`variable`)});a.push(t),t.key&&o.set(t.key,t)}),i.forEach(e=>{K(e).forEach(e=>{if(!e.key)return;let t=o.get(e.key);if(!t){let t=F(e);a.push(t),o.set(e.key,t);return}if(I(e.type)){let n=F({...t,type:e.type});o.set(e.key,n);let r=a.findIndex(e=>e.id===t.id);r>=0&&(a[r]=n)}})}),{pages:i,variables:a,pageSize:n,...e.pageDecorations?{pageDecorations:r.normalizePageDecorations(e.pageDecorations)}:{}}}function ae(e){return e.pages.map((t,n)=>W(e,t,n,t.contentHtml,{})).join(`
2
+ `)}function R(e){return e.pages.map((t,n)=>W(e,t,n,Ce(t.contentHtml))).join(`
3
+ `)}function oe(e){return z(e).map(({page:t,contentHtml:n},i)=>{let a=E(t.pageSize,e.pageSize),o=r.buildPageDecorationsHtml(e.pageDecorations,i+1,e.pages.length,e.variables,{});return`<section ${G(t,e.pageSize,e.pageDecorations,i+1)} style="width:${a.width}px;min-height:${a.height}px">${o}<div class="gd-contract-template-page__content">${n}</div></section>`}).join(`
4
+ `)}function z(e){let t=new Map(e.variables.map(e=>[e.key,e]));return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:ge(e.contentHtml,t)}))}var B=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function se(e){let t=r.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new B(t);let n=C(e);return n.pageDecorations&&=r.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:u,styleVersion:d,html:R(n)}}function ce(e,t={}){let n=[],i=new Set;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&n.push({type:`page`,id:e.pages[t.maxPages]?.id??e.pages.at(-1)?.id??``,pageId:e.pages[t.maxPages]?.id,code:`PAGE_LIMIT_EXCEEDED`,message:`合同共 ${e.pages.length} 页,超过最多 ${t.maxPages} 页限制`}),e.variables.forEach(t=>{let r=m(t.key,e.variables,t.id),a=!!t.key?.trim()&&e.variables.some(e=>e.id!==t.id&&e.key.trim()===t.key.trim());r&&(!a||t.key!==t.key.trim())&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:t.key?.trim()?r:`${t.label||`变量`} 缺少变量标识`,code:t.key?.trim()?`VARIABLE_KEY_INVALID`:`VARIABLE_KEY_MISSING`}),t.key&&(i.has(t.key)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`变量标识 ${t.key} 重复`,code:`VARIABLE_KEY_DUPLICATED`}),i.add(t.key)),I(t.type)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let a=new Set(e.variables.map(e=>e.key).filter(Boolean)),o=new Set,s=r.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{V(e).forEach(t=>{o.add(t),a.has(t)||n.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!o.has(e.key)&&!s.has(e.key)&&n.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),n.push(...r.validatePageDecorations(e.pageDecorations,e.variables)),n}function V(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;le(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 le(e){return e===`templateVariable`||e===`templateField`}function H(e){let t=new Set;return e.pages.forEach(e=>{V(e).forEach(e=>t.add(e))}),t}function U(e,t=H(e)){let n=r.collectPageDecorationVariableKeys(e.pageDecorations),i=new Map;for(let t of e.variables)i.set(t.key,(i.get(t.key)??0)+1);return{...e,variables:e.variables.filter(r=>(i.get(r.key)??0)>1||m(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function ue(){let e=new Map;function t(t){let n=t.contentJson&&(0,o.toRaw)(t.contentJson),r=e.get(t.id);return(!r||r.html!==t.contentHtml||r.json!==n)&&(r={html:t.contentHtml,json:n,keys:V(t)},e.set(t.id,r)),r}function n(n){let r=new Set(n.pages.map(e=>e.id));for(let t of Array.from(e.keys()))r.has(t)||e.delete(t);let i=new Set;for(let e of n.pages)t(e).keys.forEach(e=>i.add(e));return i}function r(e){let r=n(e),i=e.variables.slice(),a=new Map(i.filter(e=>e.key).map(e=>[e.key,e]));for(let n of e.pages){let e=t(n);e.variables??=K(n);for(let t of e.variables){let e=a.get(t.key);if(!e){let e=F(t);i.push(e),a.set(e.key,e)}else if(I(t.type)&&e.type!==t.type){let n=F({...e,type:t.type}),r=i.findIndex(t=>t.id===e.id);r>=0&&(i[r]=n),a.set(n.key,n)}}}let o=U({...e,variables:i},r);return o.variables.length===e.variables.length&&o.variables.every((t,n)=>t===e.variables[n])?e:o}return{sync:r,collectKeys:n,clear:()=>e.clear()}}function de(e,t){for(let n=0;n<t;n+=1){let r=e[n]?.content??[];for(let e of r){let r=Math.max(1,Number(e.attrs?.rowspan)||1);if(n+r>t)return!1}}return!0}function fe(e,t,n){let r=e.content??[],i=t.tableRows??[],a=Math.min(r.length,i.length),o=n-Math.max(0,t.trailingTextBlockHeight??0),s=0;for(let e=0;e<a;e+=1){let t=i[e];if(t.top+t.height>o+1)break;s=e+1}if(s<=0||s>=r.length)return;let c=s;for(;c>0&&!de(r,c);)--c;if(!(c<=0||c>=r.length))return{currentTable:{...e,content:r.slice(0,c)},overflowTable:{...e,content:r.slice(c)}}}function pe(e,t,n){let r=e??[];if(!r.length||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;let o=r[a],s=o?.type===`table`?fe(o,t[a],n):void 0;if(s)return{splitIndex:a,currentContent:[...r.slice(0,a),s.currentTable],overflowContent:[s.overflowTable,...r.slice(a+1)]};if(!(a<=0))return{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function W(e,t,n,i,a){let o=r.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,a);return`<section ${G(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${i}</div></section>`}function G(e,n,i,a=1){let o=E(e.pageSize,n);return[`class="${r.buildPageDecorationClassNames(i,a)}"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(o.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(o.label??o.format??`自定义`)}"`,`data-page-width="${o.width}"`,`data-page-height="${o.height}"`].join(` `)}var me=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function K(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||I(e.type)&&!I(t.type))&&n.set(e.key,e)}function i(e){if(!e||typeof e!=`object`)return;let t=e;t.type===`templateVariable`&&typeof t.attrs?.key==`string`&&r(he(t.attrs,t.attrs.key)),t.content?.forEach(i)}i(e.contentJson);let a=e.contentHtml||``;return t.canUseDomHtml()?new DOMParser().parseFromString(a,`text/html`).querySelectorAll(`[data-template-variable]`).forEach(e=>{r(q(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,me,e=>{r(q(t.createTagAttributeReader(e)))}),Array.from(n.values())}function q(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),o=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:o?o===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,options:a.decodeContractTemplateJsonAttribute(e(`data-control-options`))??[],dataSource:a.decodeContractTemplateJsonAttribute(e(`data-control-source`)),multiple:e(`data-multiple`)===`true`,componentKey:e(`data-component-key`)??``,componentConfig:a.decodeContractTemplateJsonAttribute(e(`data-component-config`))??{},multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function he(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,options:Array.isArray(e.options)?e.options:[],dataSource:e.dataSource,multiple:e.multiple===!0,componentKey:r(`componentKey`)??``,componentConfig:e.componentConfig,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function ge(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return _e(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{ve(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(be(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?ye(i,n):e})}function _e(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&Y(r)){e.removeAttribute(t.name);return}n===`style`&&X(r)&&e.removeAttribute(t.name)})})}function J(e,r){let i=e(`data-key`)??``,a=r.get(i),o=a?.type??e(`data-variable-type`)??`text`,s=Se(o,a?.defaultValue??e(`data-default-value`)??``),c=n.resolveTemplateVariablePresentation({type:o,width:a?.width??e(`data-width`),height:a?.height??e(`data-height`),defaultValue:s,placeholder:a?.placeholder??e(`data-placeholder`)??``,format:a?.format??e(`data-format`)??``,precision:a?.precision??t.readOptionalNumber(e(`data-precision`)),useGrouping:a?.useGrouping??t.readOptionalBoolean(e(`data-use-grouping`)),checkedText:a?.checkedText??e(`data-checked-text`)??``,uncheckedText:a?.uncheckedText??e(`data-unchecked-text`)??``,multiline:a?.multiline??t.readOptionalBoolean(e(`data-multiline`))??!1,rows:a?.rows??e(`data-rows`),lineHeight:a?.lineHeight??e(`data-line-height`),style:xe(a,e)});return{key:i,label:a?.label??e(`data-label`)??i,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function ve(e,n){let{key:r,label:i,presentation:a,text:o}=J(t.createElementAttributeReader(e),n);e.setAttribute(`data-template-variable`,`true`),e.setAttribute(`data-key`,r),e.setAttribute(`data-label`,i),e.setAttribute(`data-variable-type`,a.type),e.setAttribute(`data-width`,String(a.width)),e.setAttribute(`data-height`,String(a.height)),e.setAttribute(`data-border`,String(a.border)),e.setAttribute(`data-underline`,String(a.underline)),e.setAttribute(`data-color`,a.color),e.setAttribute(`data-background`,a.background),e.setAttribute(`data-font-size`,String(a.fontSize)),e.setAttribute(`data-font-family`,a.fontFamily),e.setAttribute(`data-placeholder-color`,a.placeholderColor),e.setAttribute(`data-line-color`,a.lineColor),e.setAttribute(`data-text-align`,a.textAlign),e.setAttribute(`data-border-style`,a.borderStyle),e.setAttribute(`data-object-fit`,a.objectFit),e.className=a.classes.join(` `),e.setAttribute(`style`,a.styleText),e.textContent=o}function ye(e,n){let{key:r,label:i,presentation:a,text:o}=J(e,n);return`<span data-template-variable="true" data-key="${t.escapeHtmlAttribute(r)}" data-label="${t.escapeHtmlAttribute(i)}" data-variable-type="${t.escapeHtmlAttribute(a.type)}" data-width="${a.width}" data-height="${a.height}" data-border="${a.border}" data-underline="${a.underline}" data-font-family="${t.escapeHtmlAttribute(a.fontFamily)}" class="${t.escapeHtmlAttribute(a.classes.join(` `))}" style="${t.escapeHtmlAttribute(a.styleText)}">${t.escapeHtmlText(o)}</span>`}function be(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>Y(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>X(n)?``:` style=${t}${n}${t}`)}function xe(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 Se(e,t){return e===`image`&&Y(t)?``:t}function Y(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function X(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function Ce(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 we(e){return e===`left`||e===`center`||e===`right`}function Te(e){return e===`solid`||e===`dashed`}function Ee(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return we(e)?e:void 0}function Q(e){return Te(e)?e:void 0}function $(e){return Ee(e)?e:void 0}exports.ALL_DEFAULT_FIELD_TYPES=b,exports.CONTRACT_TEMPLATE_RENDERER_VERSION=u,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=p,exports.CONTRACT_TEMPLATE_STYLE_VERSION=d,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=f,exports.ContractTemplatePageDecorationValidationError=B,exports.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES=_,exports.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES=v,exports.DEFAULT_CUSTOM_FIELD_TYPES=y,exports.DEFAULT_FIELD_STYLE=l,exports.DEFAULT_FIELD_TYPES=g,exports.DEFAULT_MULTILINE_LINE_HEIGHT=te,exports.DEFAULT_MULTILINE_ROWS=ee,exports.DEFAULT_PAGE_SIZE=c,exports.PAGE_SIZE_OPTIONS=s,exports.buildTemplateExpressionHtml=R,exports.buildTemplateHtml=ae,exports.buildTemplatePreviewHtml=oe,exports.buildTemplatePreviewPages=z,exports.cloneTemplateValue=C,exports.collectTemplateValueVariableKeys=H,exports.collectTemplateVariableKeys=V,exports.constrainTemplatePageSizes=ne,exports.createBlankPage=M,exports.createBlankTemplate=re,exports.createDefaultPage=j,exports.createDefaultTemplate=N,exports.createDesignerId=S,exports.createTemplateBodySync=ue,exports.createTemplateVariable=F,exports.exportTemplateValue=se,exports.findPageSizeOption=k,exports.getFieldOption=P,exports.getPageSizeKey=D,exports.getPageSizeOption=w,exports.inferPageFormat=T,exports.normalizeContractTemplateMaxPages=h,exports.normalizePageSizeOptions=O,exports.normalizeTemplateValue=L,exports.resolvePageSize=E,exports.splitPageContentByMeasurements=pe,exports.syncTemplateVariablesWithPages=U,exports.validateContractTemplateVariableKey=m,exports.validateTemplateValue=ce;
@@ -1 +1 @@
1
- const e=require(`../../../../node_modules/prosemirror-history/dist/index.cjs`);require(`../../../../node_modules/@tiptap/pm/dist/history/index.cjs`);function t(e,t,n=!1){if(!t)return[];let r=new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n?`gu`:`giu`),i=[];return e.descendants((e,t)=>{if(e.isAtom&&!e.isText)return!1;if(!e.isTextblock)return!0;let n=``,a=t+1,o=()=>{r.lastIndex=0;for(let e of Array.from(n.matchAll(r))){let t=a+e.index;i.push({from:t,to:t+e[0].length})}n=``};return e.forEach((e,r)=>{if(!e.isText){o();return}n||(a=t+1+r),n+=e.text}),o(),!1}),i}function n(n,r,i,a){let o=new Set(t(n.doc,r.query,r.matchCase).map(e=>`${e.from}:${e.to}`)),s=new Set,c=a.filter(e=>{let t=`${e.from}:${e.to}`;return!o.has(t)||s.has(t)?!1:(s.add(t),n.doc.textBetween(e.from,e.to)!==i)}).sort((e,t)=>t.from-e.from),l=e.closeHistory(n.tr);for(let e of c){if(!i){l.delete(e.from,e.to);continue}let t=n.doc.resolve(e.from).nodeAfter?.marks??[];l.replaceWith(e.from,e.to,n.schema.text(i,t))}return{transaction:l,count:c.length}}function r(t,r,i,a,o){if(!t||t.isDestroyed||r||!t.isEditable)return 0;let s=n(t.state,i,a,o);return s.count?(t.view.dispatch(s.transaction),t.view.dispatch(e.closeHistory(t.state.tr).setMeta(`addToHistory`,!1)),s.count):0}function i(e,t){if(!Number.isInteger(t)||t<0)return;let n=0,r;return e.descendants((e,i)=>r!==void 0||e.isAtom&&!e.isText?!1:(e.type.name===`heading`&&n++===t&&(r=i+1),r===void 0)),r}exports.findContractHeadingPosition=i,exports.findContractTextMatches=t,exports.replaceContractTextMatches=r;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../../node_modules/prosemirror-history/dist/index.cjs`);require(`../../../../node_modules/@tiptap/pm/dist/history/index.cjs`);let t=require(`vue`);function n(e,t,n=!1){if(!t)return[];let r=new RegExp(t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n?`gu`:`giu`),i=[];return e.descendants((e,t)=>{if(e.isAtom&&!e.isText)return!1;if(!e.isTextblock)return!0;let n=``,a=t+1,o=()=>{r.lastIndex=0;for(let e of Array.from(n.matchAll(r))){let t=a+e.index;i.push({from:t,to:t+e[0].length})}n=``};return e.forEach((e,r)=>{if(!e.isText){o();return}n||(a=t+1+r),n+=e.text}),o(),!1}),i}function r(){let e;function r(r,i,a=!1){let o=(0,t.toRaw)(r);if(e?.doc===o&&e.query===i&&e.matchCase===a)return e.matches;let s=n(o,i,a);return e={doc:o,query:i,matchCase:a,matches:s},s}return{read:r,clear:()=>{e=void 0}}}function i(t,r,i,a){let o=new Set(n(t.doc,r.query,r.matchCase).map(e=>`${e.from}:${e.to}`)),s=new Set,c=a.filter(e=>{let n=`${e.from}:${e.to}`;return!o.has(n)||s.has(n)?!1:(s.add(n),t.doc.textBetween(e.from,e.to)!==i)}).sort((e,t)=>t.from-e.from),l=e.closeHistory(t.tr);for(let e of c){if(!i){l.delete(e.from,e.to);continue}let n=t.doc.resolve(e.from).nodeAfter?.marks??[];l.replaceWith(e.from,e.to,t.schema.text(i,n))}return{transaction:l,count:c.length}}function a(t,n,r,a,o){if(!t||t.isDestroyed||n||!t.isEditable)return 0;let s=i(t.state,r,a,o);return s.count?(t.view.dispatch(s.transaction),t.view.dispatch(e.closeHistory(t.state.tr).setMeta(`addToHistory`,!1)),s.count):0}function o(e,t){if(!Number.isInteger(t)||t<0)return;let n=0,r;return e.descendants((e,i)=>r!==void 0||e.isAtom&&!e.isText?!1:(e.type.name===`heading`&&n++===t&&(r=i+1),r===void 0)),r}exports.createContractTextMatchCache=r,exports.findContractHeadingPosition=o,exports.findContractTextMatches=n,exports.replaceContractTextMatches=a;
@@ -0,0 +1 @@
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);let e=require(`@tiptap/pm/state`);var t=`.gd-contract-template-designer__editor-prose`;function n(t,n,r){let i=n();if(!i)return!1;let a;try{let{selection:n}=t.state;if(n instanceof e.NodeSelection){let e=t.nodeDOM(n.from);if(!(e instanceof HTMLElement))return!1;a=e.getBoundingClientRect()}else a=t.coordsAtPos(n.head,1)}catch{return!1}let o=r()?.getBoundingClientRect(),s=o?Math.min(a.top,o.bottom):a.top,c=o?Math.min(a.bottom,o.bottom):a.bottom,l=i.getBoundingClientRect();return s<l.top+48?i.scrollTop-=l.top+48-s:c>l.bottom-48&&(i.scrollTop+=c-(l.bottom-48)),a.left<l.left?i.scrollLeft-=l.left-a.left:a.right>l.right&&(i.scrollLeft+=a.right-l.right),!0}function r(){let e=window.getSelection();if(!e?.rangeCount)return;let t=e.getRangeAt(0).getBoundingClientRect();return t.top||t.bottom?t.top:(e.focusNode instanceof Element?e.focusNode:e.focusNode?.parentElement)?.getBoundingClientRect().top}function i(e,n=()=>!0){if(typeof window>`u`||!e||!n())return;let i=window.getSelection();if(!i?.rangeCount||!e.contains(i.focusNode))return;let a=(i.focusNode instanceof Element?i.focusNode:i.focusNode?.parentElement)?.closest(t),o=r();if(o!==void 0)return()=>{if(n())try{let n=window.getSelection()?.focusNode,i=n instanceof Element?n:n?.parentElement;if(!i||i.closest(t)!==a)return;let s=r();s!==void 0&&Math.abs(s-o)>.5&&(e.scrollTop+=s-o)}catch{}}}exports.captureCaretViewport=i,exports.scrollCaretIntoCanvas=n;
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./html.cjs`),t=require(`../extensions/editor-extensions.cjs`);let n=require(`@tiptap/core`),r=require(`@tiptap/pm/model`);var i;function a(e){return e.replace(/\s+/g,` `).trim()}function o(e){return a(e.textBetween(0,e.content.size,` `,()=>` `))}function s(s){if(!e.canParseHtmlDocument()){let e=a(s.contentHtml.replace(/<!--[\s\S]*?-->/g,` `).replace(/<(script|style|template|noscript|iframe)\b[^>]*>[\s\S]*?<\/\1\s*>/gi,` `).replace(/<[^>]*>/g,` `));return{text:e,summary:e.slice(0,88),headings:[]}}let c=new DOMParser().parseFromString(s.contentHtml,`text/html`);c.querySelectorAll(`script, style, template, noscript, iframe, object, embed`).forEach(e=>e.remove()),i??=(0,n.getSchema)(t.createEditorExtensions());let l=r.DOMParser.fromSchema(i).parse(c.body),u=o(l),d=[],f=[],p=0;return l.descendants(e=>{if(e.type.name!==`heading`)return;let t=p++,n=o(e);if(!n)return;let r=Number(e.attrs.level);for(;f.length&&f[f.length-1]>=r;)f.pop();d.push({pageId:s.id,headingIndex:t,level:r,depth:f.length,text:n}),f.push(r)}),{text:u,summary:u.slice(0,88),headings:d}}exports.readContractPageNavigation=s;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./html.cjs`),t=require(`../extensions/editor-extensions.cjs`);let n=require(`@tiptap/core`),r=require(`@tiptap/pm/model`);var i;function a(e){return e.replace(/\s+/g,` `).trim()}function o(e){return a(e.textBetween(0,e.content.size,` `,()=>` `))}function s(s){if(!e.canParseHtmlDocument()){let e=a(s.contentHtml.replace(/<!--[\s\S]*?-->/g,` `).replace(/<(script|style|template|noscript|iframe)\b[^>]*>[\s\S]*?<\/\1\s*>/gi,` `).replace(/<[^>]*>/g,` `));return{text:e,summary:e.slice(0,88),headings:[]}}let c=new DOMParser().parseFromString(s.contentHtml,`text/html`);c.querySelectorAll(`script, style, template, noscript, iframe, object, embed`).forEach(e=>e.remove()),i??=(0,n.getSchema)(t.createEditorExtensions());let l=r.DOMParser.fromSchema(i).parse(c.body),u=o(l),d=[],f=[],p=0;return l.descendants(e=>{if(e.type.name!==`heading`)return;let t=p++,n=o(e);if(!n)return;let r=Number(e.attrs.level);for(;f.length&&f[f.length-1]>=r;)f.pop();d.push({pageId:s.id,headingIndex:t,level:r,depth:f.length,text:n}),f.push(r)}),{text:u,summary:u.slice(0,88),headings:d}}function c(){let e=new Map;function t(t){let n=new Set(t.map(e=>e.id));for(let t of Array.from(e.keys()))n.has(t)||e.delete(t)}function n(n){return t(n),n.map(t=>{let n=e.get(t.id);if(n?.html===t.contentHtml)return n.content;let r=s(t);return e.set(t.id,{html:t.contentHtml,content:r}),r})}return{readPages:n,retainPages:t,clear:()=>e.clear()}}exports.createContractPageNavigationCache=c;
@@ -0,0 +1 @@
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);let e=require(`vue`);function t(){let t,n,r;function i(i){let a=(0,e.toRaw)(i.state.doc);return a!==t&&(t=a,n=void 0,r=void 0),{getHTML:()=>n??=i.getHTML(),getJSON:()=>r??=i.getJSON()}}return{read:i}}exports.createEditorSnapshotCache=t;