@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.
Files changed (135) hide show
  1. package/dist/es/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.mjs +304 -293
  2. package/dist/es/components/contract-signing-location/src/coordinates.mjs +23 -23
  3. package/dist/es/components/contract-signing-location/src/location-rules.mjs +20 -10
  4. package/dist/es/components/contract-signing-location/src/page-layout.mjs +12 -9
  5. package/dist/es/components/contract-signing-location/src/template-source.mjs +2 -0
  6. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.mjs +208 -180
  7. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +2 -1
  8. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.mjs +5 -0
  9. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.mjs +690 -0
  10. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.mjs +5 -0
  11. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.mjs +253 -0
  12. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.mjs +5 -0
  13. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.mjs +87 -0
  14. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.mjs +5 -0
  15. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.mjs +98 -0
  16. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.mjs +5 -0
  17. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.mjs +550 -0
  18. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.mjs +5 -0
  19. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.mjs +117 -0
  20. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.mjs +5 -0
  21. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.mjs +96 -0
  22. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.mjs +51 -26
  23. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.mjs +56 -33
  24. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.mjs +5 -0
  25. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.mjs +29 -0
  26. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.mjs +5 -0
  27. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.vue.mjs +179 -0
  28. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.mjs +5 -0
  29. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.mjs +390 -0
  30. package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +332 -263
  31. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1442 -2287
  32. package/dist/es/components/pro-contract-template-designer/src/composables/use-auto-pagination.mjs +71 -0
  33. package/dist/es/components/pro-contract-template-designer/src/composables/use-designer-files.mjs +11 -0
  34. package/dist/es/components/pro-contract-template-designer/src/composables/use-draft-cache-session.mjs +111 -0
  35. package/dist/es/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.mjs +79 -0
  36. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +189 -160
  37. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-files.mjs +35 -22
  38. package/dist/es/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.mjs +71 -0
  39. package/dist/es/components/pro-contract-template-designer/src/constants.mjs +71 -10
  40. package/dist/es/components/pro-contract-template-designer/src/extensions/editor-extensions.mjs +1 -0
  41. package/dist/es/components/pro-contract-template-designer/src/utils/block-style.mjs +43 -0
  42. package/dist/es/components/pro-contract-template-designer/src/utils/context-menu-viewport.mjs +13 -0
  43. package/dist/es/components/pro-contract-template-designer/src/utils/editor-state.mjs +7 -0
  44. package/dist/es/components/pro-contract-template-designer/src/utils/page-decorations.mjs +398 -0
  45. package/dist/es/components/pro-contract-template-designer/src/utils/serialize-fingerprint.mjs +6 -0
  46. package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +88 -72
  47. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  48. package/dist/es/index.mjs +20 -20
  49. package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs +1 -1
  50. package/dist/lib/components/contract-signing-location/src/coordinates.cjs +1 -1
  51. package/dist/lib/components/contract-signing-location/src/location-rules.cjs +1 -1
  52. package/dist/lib/components/contract-signing-location/src/page-layout.cjs +1 -1
  53. package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -1
  54. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.cjs +1 -1
  55. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -1
  56. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.cjs +1 -0
  57. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.cjs +1 -0
  58. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.cjs +1 -0
  59. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.cjs +1 -0
  60. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.cjs +1 -0
  61. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.cjs +1 -0
  62. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.cjs +1 -0
  63. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.cjs +1 -0
  64. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.cjs +1 -0
  65. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.cjs +1 -0
  66. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.cjs +1 -0
  67. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.cjs +1 -0
  68. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.cjs +1 -0
  69. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.cjs +1 -0
  70. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs +1 -1
  71. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.cjs +1 -1
  72. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.cjs +1 -0
  73. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.cjs +1 -0
  74. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.cjs +1 -0
  75. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.vue.cjs +1 -0
  76. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.cjs +1 -0
  77. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.cjs +1 -0
  78. package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
  79. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  80. package/dist/lib/components/pro-contract-template-designer/src/composables/use-auto-pagination.cjs +1 -0
  81. package/dist/lib/components/pro-contract-template-designer/src/composables/use-designer-files.cjs +1 -0
  82. package/dist/lib/components/pro-contract-template-designer/src/composables/use-draft-cache-session.cjs +1 -0
  83. package/dist/lib/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.cjs +1 -0
  84. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
  85. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-files.cjs +2 -2
  86. package/dist/lib/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.cjs +1 -0
  87. package/dist/lib/components/pro-contract-template-designer/src/constants.cjs +1 -1
  88. package/dist/lib/components/pro-contract-template-designer/src/extensions/editor-extensions.cjs +1 -1
  89. package/dist/lib/components/pro-contract-template-designer/src/utils/block-style.cjs +1 -0
  90. package/dist/lib/components/pro-contract-template-designer/src/utils/context-menu-viewport.cjs +1 -0
  91. package/dist/lib/components/pro-contract-template-designer/src/utils/editor-state.cjs +1 -0
  92. package/dist/lib/components/pro-contract-template-designer/src/utils/page-decorations.cjs +1 -0
  93. package/dist/lib/components/pro-contract-template-designer/src/utils/serialize-fingerprint.cjs +1 -0
  94. package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +3 -3
  95. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  96. package/dist/lib/index.cjs +1 -1
  97. package/dist/theme/icon.css +1 -1
  98. package/dist/theme/index.css +1 -1
  99. package/dist/types/components/contract-signing-location/src/coordinates.d.ts +2 -2
  100. package/dist/types/components/contract-signing-location/src/page-layout.d.ts +2 -2
  101. package/dist/types/components/contract-signing-location/src/template-source.d.ts +2 -0
  102. package/dist/types/components/contract-signing-location/src/types.d.ts +3 -0
  103. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.d.ts +3 -0
  104. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +1 -0
  105. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.d.ts +104 -0
  106. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.d.ts +60 -0
  107. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.d.ts +27 -0
  108. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.d.ts +13 -0
  109. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.d.ts +28 -0
  110. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.d.ts +77 -0
  111. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.d.ts +36 -0
  112. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.d.ts +5 -1
  113. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.d.ts +4 -4
  114. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererToolbar.vue.d.ts +4 -4
  115. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.d.ts +12 -0
  116. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateTextBubbleMenu.vue.d.ts +43 -0
  117. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.d.ts +77 -0
  118. package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +30 -32
  119. package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +456 -12
  120. package/dist/types/components/pro-contract-template-designer/src/composables/use-auto-pagination.d.ts +43 -0
  121. package/dist/types/components/pro-contract-template-designer/src/composables/use-designer-files.d.ts +22 -0
  122. package/dist/types/components/pro-contract-template-designer/src/composables/use-draft-cache-session.d.ts +41 -0
  123. package/dist/types/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.d.ts +49 -0
  124. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +15 -1
  125. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-files.d.ts +13 -0
  126. package/dist/types/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.d.ts +19 -0
  127. package/dist/types/components/pro-contract-template-designer/src/constants.d.ts +7 -1
  128. package/dist/types/components/pro-contract-template-designer/src/types.d.ts +89 -0
  129. package/dist/types/components/pro-contract-template-designer/src/utils/block-style.d.ts +4 -0
  130. package/dist/types/components/pro-contract-template-designer/src/utils/context-menu-viewport.d.ts +25 -0
  131. package/dist/types/components/pro-contract-template-designer/src/utils/editor-state.d.ts +8 -0
  132. package/dist/types/components/pro-contract-template-designer/src/utils/page-decorations.d.ts +90 -0
  133. package/dist/types/components/pro-contract-template-designer/src/utils/serialize-fingerprint.d.ts +8 -0
  134. package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +4 -1
  135. package/package.json +3 -3
@@ -1,30 +1,31 @@
1
1
  import { isContractTemplateFieldType as e } from "../types.mjs";
2
2
  import { canParseHtmlDocument as t, canUseDomHtml as n, collectFromHtmlTags as r, escapeHtmlAttribute as i, escapeHtmlText as a, getHtmlAttribute as o, hasPositivePageSize as s, replaceTemplateVariableSpans as c } from "./html.mjs";
3
3
  import { resolveTemplateVariablePresentation as l } from "./template-variable-render.mjs";
4
- import { DEFAULT_PAGE_SIZE as u, resolvePageSize as d } from "../composables/use-template-designer.mjs";
5
- import { isSafeContractImageUrl as f } from "./image-url.mjs";
4
+ import { buildPageDecorationClassNames as u, buildPageDecorationsHtml as d, collectPageDecorationVariableKeys as f, normalizePageDecorations as p, validatePageDecorations as m } from "./page-decorations.mjs";
5
+ import { CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS as h, CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN as g, DEFAULT_PAGE_SIZE as _, resolvePageSize as v, validateContractTemplateVariableKey as y } from "../composables/use-template-designer.mjs";
6
+ import { isSafeContractImageUrl as b } from "./image-url.mjs";
6
7
  //#region src/components/pro-contract-template-designer/src/utils/template-renderer.ts
7
- var p = new Set([
8
+ var x = new Set([
8
9
  "action",
9
10
  "formaction",
10
11
  "href",
11
12
  "src",
12
13
  "xlink:href"
13
- ]), m = /<[^>]+data-template-variable=["']true["'][^>]*>/gi;
14
- function h(e) {
14
+ ]), S = /<[^>]+data-template-variable=["']true["'][^>]*>/gi;
15
+ function C(e) {
15
16
  let t = {};
16
17
  return (Array.isArray(e?.variables) ? e.variables : []).forEach((e) => {
17
- e?.key && (t[e.key] = O(e));
18
+ e?.key && (t[e.key] = I(e));
18
19
  }), t;
19
20
  }
20
- function g(e, t) {
21
+ function w(e, t) {
21
22
  return {
22
- ...h(e),
23
+ ...C(e),
23
24
  ...t ?? {}
24
25
  };
25
26
  }
26
- function _(e, t) {
27
- let n = y(e);
27
+ function T(e, t) {
28
+ let n = D(e);
28
29
  if (!e) return n;
29
30
  let r = Array.isArray(e.variables) ? e.variables : [], i = new Set(r.map((e) => e?.key).filter(Boolean));
30
31
  return Object.keys(t).forEach((e) => {
@@ -38,7 +39,7 @@ function _(e, t) {
38
39
  }), r.forEach((e) => {
39
40
  if (!e?.key) return;
40
41
  let r = t[e.key];
41
- if (e.required && S(r)) {
42
+ if (e.required && A(r)) {
42
43
  n.push({
43
44
  type: "variable",
44
45
  id: e.id,
@@ -48,7 +49,7 @@ function _(e, t) {
48
49
  });
49
50
  return;
50
51
  }
51
- S(r) || (e.type === "number" && (typeof r != "number" || !Number.isFinite(r)) && n.push({
52
+ A(r) || (e.type === "number" && (typeof r != "number" || !Number.isFinite(r)) && n.push({
52
53
  type: "variable",
53
54
  id: e.id,
54
55
  variableKey: e.key,
@@ -60,13 +61,13 @@ function _(e, t) {
60
61
  variableKey: e.key,
61
62
  message: `${e.label || e.key} 不是合法复选值`,
62
63
  code: "VARIABLE_TYPE_INVALID"
63
- }), e.type === "date" && !R(r) && n.push({
64
+ }), e.type === "date" && !K(r) && n.push({
64
65
  type: "variable",
65
66
  id: e.id,
66
67
  variableKey: e.key,
67
68
  message: `${e.label || e.key} 不是合法日期`,
68
69
  code: "VARIABLE_TYPE_INVALID"
69
- }), e.type === "image" && !f(String(r)) && n.push({
70
+ }), e.type === "image" && !b(String(r)) && n.push({
70
71
  type: "security",
71
72
  id: e.id,
72
73
  variableKey: e.key,
@@ -75,10 +76,10 @@ function _(e, t) {
75
76
  }));
76
77
  }), n;
77
78
  }
78
- function v(e, t, n) {
79
- return n ? _(e, t) : y(e);
79
+ function E(e, t, n) {
80
+ return n ? T(e, t) : D(e);
80
81
  }
81
- function y(t) {
82
+ function D(t) {
82
83
  if (!t) return [{
83
84
  type: "page",
84
85
  id: "template",
@@ -113,7 +114,14 @@ function y(t) {
113
114
  });
114
115
  return;
115
116
  }
116
- a.set(t.key, (a.get(t.key) ?? 0) + 1), e(t.type ?? "text") || n.push({
117
+ let o = t.key.trim(), s = i.some((e) => e?.id !== t.id && typeof e?.key == "string" && e.key.trim() === o), c = y(t.key, i, t.id), l = !g.test(o) || h.has(o);
118
+ c && (l || !s || t.key !== o) && n.push({
119
+ type: "variable",
120
+ id: t.id || `variable-${r}`,
121
+ variableKey: t.key,
122
+ message: `${t.label || t.key}:${c}`,
123
+ code: "VARIABLE_KEY_INVALID"
124
+ }), a.set(o, (a.get(o) ?? 0) + 1), e(t.type ?? "text") || n.push({
117
125
  type: "variable",
118
126
  id: t.id,
119
127
  variableKey: t.key,
@@ -130,7 +138,7 @@ function y(t) {
130
138
  });
131
139
  });
132
140
  let o = /* @__PURE__ */ new Set();
133
- return r.forEach((e, t) => {
141
+ r.forEach((e, t) => {
134
142
  if (!e || typeof e.id != "string" || !e.id.trim() || typeof e.contentHtml != "string") {
135
143
  n.push({
136
144
  type: "page",
@@ -147,7 +155,7 @@ function y(t) {
147
155
  pageId: e.id,
148
156
  message: `${e.title || `第 ${t + 1} 页`}:页面尺寸无效,已回退为安全尺寸`,
149
157
  code: "PAGE_SIZE_INVALID"
150
- }), N(e.contentHtml).forEach((e) => o.add(e)), P(e.contentHtml).forEach((r, i) => {
158
+ }), V(e.contentHtml).forEach((e) => o.add(e)), H(e.contentHtml).forEach((r, i) => {
151
159
  n.push({
152
160
  type: "security",
153
161
  id: `${e.id}-security-${i}`,
@@ -164,63 +172,71 @@ function y(t) {
164
172
  message: `正文引用的变量 ${e} 缺少配置`,
165
173
  code: "VARIABLE_CONFIG_MISSING"
166
174
  });
167
- }), a.forEach((e, t) => {
168
- o.has(t) || n.push({
175
+ });
176
+ let c = f(t.pageDecorations);
177
+ return a.forEach((e, t) => {
178
+ !o.has(t) && !c.has(t) && n.push({
169
179
  type: "variable",
170
180
  id: t,
171
181
  variableKey: t,
172
182
  message: `变量 ${t} 缺少正文节点`,
173
183
  code: "VARIABLE_NODE_MISSING"
174
184
  });
175
- }), n;
185
+ }), n.push(...m(t.pageDecorations, i)), n;
176
186
  }
177
- function b(e, t, n = {}) {
187
+ function O(e, t, n = {}) {
178
188
  if (!e || !Array.isArray(e.pages)) return [];
179
- let r = Array.isArray(e.variables) ? e.variables : [], i = new Map(r.filter((e) => e?.key).map((e) => [e.key, e])), a = s(e.pageSize) ? e.pageSize : u;
180
- return e.pages.flatMap((e) => {
181
- if (!e || typeof e.id != "string" || !e.id.trim() || typeof e.contentHtml != "string") return [];
182
- let r = d(e.pageSize, a);
189
+ let r = Array.isArray(e.variables) ? e.variables : [], i = new Map(r.filter((e) => e?.key).map((e) => [e.key, e])), a = s(e.pageSize) ? e.pageSize : _;
190
+ return e.pages.flatMap((o) => {
191
+ if (!o || typeof o.id != "string" || !o.id.trim() || typeof o.contentHtml != "string") return [];
192
+ let s = v(o.pageSize, a);
183
193
  return [{
184
- id: e.id,
185
- title: e.title || "未命名页面",
186
- format: r.format ?? "Custom",
187
- width: r.width,
188
- height: r.height,
189
- contentHtml: C(e.contentHtml, i, t, n)
194
+ id: o.id,
195
+ title: o.title || "未命名页面",
196
+ format: s.format ?? "Custom",
197
+ width: s.width,
198
+ height: s.height,
199
+ contentHtml: j(o.contentHtml, i, t, n),
200
+ ...e.pageDecorations ? { pageDecorations: p(e.pageDecorations) } : {},
201
+ decorationVariables: r,
202
+ decorationValues: t
190
203
  }];
191
204
  });
192
205
  }
193
- function x(e, t, n = {}) {
194
- return b(e, t, n).map((e) => `<section class="gd-contract-template-page" data-page-id="${i(e.id)}" data-page-format="${i(e.format)}" data-page-width="${e.width}" data-page-height="${e.height}" style="width:${e.width}px;min-height:${e.height}px">${e.contentHtml}</section>`).join("\n");
206
+ function k(e, t, n = {}) {
207
+ return O(e, t, n).map((e, t, n) => {
208
+ let r = d(e.pageDecorations, t + 1, n.length, e.decorationVariables, e.decorationValues);
209
+ return `<section class="${u(e.pageDecorations, t + 1)}" data-page-id="${i(e.id)}" data-page-format="${i(e.format)}" data-page-width="${e.width}" data-page-height="${e.height}" style="width:${e.width}px;min-height:${e.height}px">${r}<div class="gd-contract-template-page__content">${e.contentHtml}</div></section>`;
210
+ }).join("\n");
195
211
  }
196
- function S(e) {
212
+ function A(e) {
197
213
  return e == null || e === "";
198
214
  }
199
- function C(e, t, r, i) {
215
+ function j(e, t, r, i) {
200
216
  if (!e) return e;
201
- let a = M(e);
217
+ let a = B(e);
202
218
  if (n()) {
203
219
  let e = new DOMParser().parseFromString(a, "text/html");
204
220
  return e.querySelectorAll("[data-template-variable]").forEach((e) => {
205
- w(e, t, r, i);
221
+ M(e, t, r, i);
206
222
  }), e.body.innerHTML;
207
223
  }
208
224
  return c(a, (e, n) => {
209
225
  let a = o(n, "data-key");
210
- return a ? T(t.get(a), a, r[a], i) : e;
226
+ return a ? N(t.get(a), a, r[a], i) : e;
211
227
  });
212
228
  }
213
- function w(e, t, n, r) {
229
+ function M(e, t, n, r) {
214
230
  let i = e.dataset.key || "", a = t.get(i);
215
231
  if (!i || !a) return;
216
- let o = new DOMParser().parseFromString(T(a, i, n[i], r), "text/html").body.firstElementChild;
232
+ let o = new DOMParser().parseFromString(N(a, i, n[i], r), "text/html").body.firstElementChild;
217
233
  o && e.replaceWith(o);
218
234
  }
219
- function T(e, t, n, r) {
220
- return r.mode === "display" ? E(e, t, n, r) : D(e, t, n, r);
235
+ function N(e, t, n, r) {
236
+ return r.mode === "display" ? P(e, t, n, r) : F(e, t, n, r);
221
237
  }
222
- function E(e, t, n, r) {
223
- let o = e?.type ?? "text", s = n ?? O(e), c = o === "image" && !S(s) && !f(String(s)) ? "" : s, u = A(c), d = l({
238
+ function P(e, t, n, r) {
239
+ let o = e?.type ?? "text", s = n ?? I(e), c = o === "image" && !A(s) && !b(String(s)) ? "" : s, u = R(c), d = l({
224
240
  type: o,
225
241
  width: e?.width,
226
242
  height: e?.height,
@@ -235,13 +251,13 @@ function E(e, t, n, r) {
235
251
  rows: e?.rows,
236
252
  lineHeight: e?.lineHeight,
237
253
  style: e?.style
238
- }), p = d.displayText || e?.placeholder || e?.label || t, m = [
254
+ }), f = d.displayText || e?.placeholder || e?.label || t, p = [
239
255
  `class="${i([
240
256
  "gd-contract-template-renderer__control",
241
257
  "gd-contract-template-renderer__preview-control",
242
258
  ...d.classes,
243
259
  r.activeKey === t ? "is-active" : "",
244
- S(c) ? "is-empty" : ""
260
+ A(c) ? "is-empty" : ""
245
261
  ].filter(Boolean).join(" "))}"`,
246
262
  `style="${i(d.styleText)}"`,
247
263
  "data-contract-render-wrapper=\"true\"",
@@ -252,10 +268,10 @@ function E(e, t, n, r) {
252
268
  r.disabled ? "" : "role=\"button\"",
253
269
  r.disabled ? "" : "tabindex=\"0\""
254
270
  ].filter(Boolean).join(" ");
255
- return o === "checkbox" ? `<span ${m}><span class="gd-contract-template-renderer__checkbox-mark" aria-hidden="true">${j(c) ? "✓" : ""}</span>${a(p)}</span>` : o === "image" && !S(c) ? `<span ${m}></span>` : `<span ${m}>${a(p)}</span>`;
271
+ return o === "checkbox" ? `<span ${p}><span class="gd-contract-template-renderer__checkbox-mark" aria-hidden="true">${z(c) ? "✓" : ""}</span>${a(f)}</span>` : o === "image" && !A(c) ? `<span ${p}></span>` : `<span ${p}>${a(f)}</span>`;
256
272
  }
257
- function D(e, t, n, r) {
258
- let o = e?.type ?? "text", s = !!r.readonly, c = k(n ?? O(e)), u = l({
273
+ function F(e, t, n, r) {
274
+ let o = e?.type ?? "text", s = !!r.readonly, c = L(n ?? I(e)), u = l({
259
275
  type: o,
260
276
  width: e?.width,
261
277
  height: e?.height,
@@ -278,49 +294,49 @@ function D(e, t, n, r) {
278
294
  d ? "disabled" : "",
279
295
  s ? "readonly" : ""
280
296
  ].filter(Boolean).join(" "), p = `style="${i(u.styleText)}"`, m = i(["gd-contract-template-renderer__control", ...u.classes].join(" "));
281
- return o === "checkbox" ? `<label class="${m}" ${p} data-contract-render-wrapper="true" data-key="${i(t)}"><input type="checkbox" ${f} ${j(c) ? "checked" : ""}>${a(e?.checkedText || e?.label || t)}</label>` : s ? `<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${i(t)}">${a(u.displayText || c)}</span>` : o === "number" ? `<input class="${m}" ${p} type="number" ${f} value="${i(c)}" placeholder="${i(e?.placeholder || "")}">` : o === "date" ? `<input class="${m}" ${p} type="date" ${f} value="${i(c)}" placeholder="${i(e?.placeholder || "")}">` : e?.multiline ? `<textarea class="${m}" ${p} ${f} placeholder="${i(e.placeholder || "")}">${a(c)}</textarea>` : `<input class="${m}" ${p} type="text" ${f} value="${i(c)}" placeholder="${i(e?.placeholder || "")}">`;
297
+ return o === "checkbox" ? `<label class="${m}" ${p} data-contract-render-wrapper="true" data-key="${i(t)}"><input type="checkbox" ${f} ${z(c) ? "checked" : ""}>${a(e?.checkedText || e?.label || t)}</label>` : s ? `<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${i(t)}">${a(u.displayText || c)}</span>` : o === "number" ? `<input class="${m}" ${p} type="number" ${f} value="${i(c)}" placeholder="${i(e?.placeholder || "")}">` : o === "date" ? `<input class="${m}" ${p} type="date" ${f} value="${i(c)}" placeholder="${i(e?.placeholder || "")}">` : e?.multiline ? `<textarea class="${m}" ${p} ${f} placeholder="${i(e.placeholder || "")}">${a(c)}</textarea>` : `<input class="${m}" ${p} type="text" ${f} value="${i(c)}" placeholder="${i(e?.placeholder || "")}">`;
282
298
  }
283
- function O(e) {
299
+ function I(e) {
284
300
  if (!e) return "";
285
- if (e.type === "checkbox") return j(e.defaultValue);
301
+ if (e.type === "checkbox") return z(e.defaultValue);
286
302
  if (e.type === "number" && e.defaultValue !== void 0) {
287
303
  let t = Number(e.defaultValue);
288
304
  return Number.isFinite(t) ? t : e.defaultValue;
289
305
  }
290
306
  return e.defaultValue ?? "";
291
307
  }
292
- function k(e) {
308
+ function L(e) {
293
309
  return typeof e == "boolean" ? e ? "true" : "" : e == null ? "" : String(e);
294
310
  }
295
- function A(e) {
311
+ function R(e) {
296
312
  return typeof e == "boolean" ? e ? "true" : "false" : e == null ? "" : String(e);
297
313
  }
298
- function j(e) {
314
+ function z(e) {
299
315
  return e === !0 || e === "true" || e === "1" || e === "yes" || e === "是" || e === "已选";
300
316
  }
301
- function M(e) {
317
+ function B(e) {
302
318
  if (t()) {
303
319
  let t = new DOMParser().parseFromString(e, "text/html");
304
320
  return t.querySelectorAll("script,style,meta,link,iframe,object,embed").forEach((e) => e.remove()), t.querySelectorAll("*").forEach((e) => {
305
321
  Array.from(e.attributes).forEach((t) => {
306
322
  let n = t.name.toLowerCase();
307
- (n.startsWith("on") || n === "srcdoc" || p.has(n) && F(t.value) || n === "style" && L(t.value)) && e.removeAttribute(t.name);
323
+ (n.startsWith("on") || n === "srcdoc" || x.has(n) && U(t.value) || n === "style" && G(t.value)) && e.removeAttribute(t.name);
308
324
  });
309
325
  }), t.body.innerHTML;
310
326
  }
311
327
  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) => {
312
328
  let a = r ?? i ?? "";
313
- return F(a) ? "" : n ? ` ${t}=${n}${a}${n}` : ` ${t}=${a}`;
314
- }).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi, (e, t, n) => L(n) ? "" : ` style=${t}${n}${t}`);
329
+ return U(a) ? "" : n ? ` ${t}=${n}${a}${n}` : ` ${t}=${a}`;
330
+ }).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi, (e, t, n) => G(n) ? "" : ` style=${t}${n}${t}`);
315
331
  }
316
- function N(e) {
317
- return r(e, m, (e) => o(e, "data-key"));
332
+ function V(e) {
333
+ return r(e, S, (e) => o(e, "data-key"));
318
334
  }
319
- function P(e) {
335
+ function H(e) {
320
336
  let t = [];
321
- 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("正文包含已移除的事件或嵌入属性"), (I(e) || /style\s*=\s*["'][^"']*(?:expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html))/i.test(e)) && t.push("正文包含已移除的危险 URL 或样式"), t;
337
+ 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("正文包含已移除的事件或嵌入属性"), (W(e) || /style\s*=\s*["'][^"']*(?:expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html))/i.test(e)) && t.push("正文包含已移除的危险 URL 或样式"), t;
322
338
  }
323
- function F(e) {
339
+ function U(e) {
324
340
  let t = e.replace(/&#(?:x([\da-f]+)|(\d+));?/gi, (e, t, n) => {
325
341
  let r = Number.parseInt(t ?? n ?? "", t ? 16 : 10);
326
342
  try {
@@ -335,22 +351,22 @@ function F(e) {
335
351
  })[t.toLowerCase()] ?? "").trim().replace(/[\u0000-\u0020\u007F]+/g, "");
336
352
  return /^(?:javascript|vbscript|data:text\/html)/i.test(t);
337
353
  }
338
- function I(e) {
354
+ function W(e) {
339
355
  let t = /\s+(?:action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\1|([^\s>]+))/gi, n = t.exec(e);
340
356
  for (; n;) {
341
- if (F(n[2] ?? n[3] ?? "")) return !0;
357
+ if (U(n[2] ?? n[3] ?? "")) return !0;
342
358
  n = t.exec(e);
343
359
  }
344
360
  return !1;
345
361
  }
346
- function L(e) {
362
+ function G(e) {
347
363
  return /expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html)/i.test(e);
348
364
  }
349
- function R(e) {
365
+ function K(e) {
350
366
  let t = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));
351
367
  if (!t) return !1;
352
368
  let n = /* @__PURE__ */ new Date(`${t[1]}-${t[2]}-${t[3]}T00:00:00Z`);
353
369
  return !Number.isNaN(n.getTime()) && n.getUTCFullYear() === Number(t[1]) && n.getUTCMonth() + 1 === Number(t[2]) && n.getUTCDate() === Number(t[3]);
354
370
  }
355
371
  //#endregion
356
- export { h as buildInitialRenderValues, x as buildTemplateRenderHtml, b as buildTemplateRenderPages, S as isEmptyRenderValue, g as normalizeRenderValues, v as resolveTemplateRenderSubmitErrors, M as sanitizeContractRendererHtml, y as validateTemplateRenderStructure, _ as validateTemplateRenderValues };
372
+ export { C as buildInitialRenderValues, k as buildTemplateRenderHtml, O as buildTemplateRenderPages, A as isEmptyRenderValue, w as normalizeRenderValues, E as resolveTemplateRenderSubmitErrors, B as sanitizeContractRendererHtml, D as validateTemplateRenderStructure, T as validateTemplateRenderValues };