@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
|
@@ -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 {
|
|
5
|
-
import {
|
|
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
|
|
8
|
+
var x = new Set([
|
|
8
9
|
"action",
|
|
9
10
|
"formaction",
|
|
10
11
|
"href",
|
|
11
12
|
"src",
|
|
12
13
|
"xlink:href"
|
|
13
|
-
]),
|
|
14
|
-
function
|
|
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] =
|
|
18
|
+
e?.key && (t[e.key] = I(e));
|
|
18
19
|
}), t;
|
|
19
20
|
}
|
|
20
|
-
function
|
|
21
|
+
function w(e, t) {
|
|
21
22
|
return {
|
|
22
|
-
...
|
|
23
|
+
...C(e),
|
|
23
24
|
...t ?? {}
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
|
-
function
|
|
27
|
-
let n =
|
|
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 &&
|
|
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
|
-
|
|
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" && !
|
|
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" && !
|
|
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
|
|
79
|
-
return n ?
|
|
79
|
+
function E(e, t, n) {
|
|
80
|
+
return n ? T(e, t) : D(e);
|
|
80
81
|
}
|
|
81
|
-
function
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
}),
|
|
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
|
-
})
|
|
168
|
-
|
|
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
|
|
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 :
|
|
180
|
-
return e.pages.flatMap((
|
|
181
|
-
if (!
|
|
182
|
-
let
|
|
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:
|
|
185
|
-
title:
|
|
186
|
-
format:
|
|
187
|
-
width:
|
|
188
|
-
height:
|
|
189
|
-
contentHtml:
|
|
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
|
|
194
|
-
return
|
|
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
|
|
212
|
+
function A(e) {
|
|
197
213
|
return e == null || e === "";
|
|
198
214
|
}
|
|
199
|
-
function
|
|
215
|
+
function j(e, t, r, i) {
|
|
200
216
|
if (!e) return e;
|
|
201
|
-
let a =
|
|
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
|
-
|
|
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 ?
|
|
226
|
+
return a ? N(t.get(a), a, r[a], i) : e;
|
|
211
227
|
});
|
|
212
228
|
}
|
|
213
|
-
function
|
|
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(
|
|
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
|
|
220
|
-
return r.mode === "display" ?
|
|
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
|
|
223
|
-
let o = e?.type ?? "text", s = n ??
|
|
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
|
-
}),
|
|
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
|
-
|
|
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 ${
|
|
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
|
|
258
|
-
let o = e?.type ?? "text", s = !!r.readonly, c =
|
|
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} ${
|
|
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
|
|
299
|
+
function I(e) {
|
|
284
300
|
if (!e) return "";
|
|
285
|
-
if (e.type === "checkbox") return
|
|
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
|
|
308
|
+
function L(e) {
|
|
293
309
|
return typeof e == "boolean" ? e ? "true" : "" : e == null ? "" : String(e);
|
|
294
310
|
}
|
|
295
|
-
function
|
|
311
|
+
function R(e) {
|
|
296
312
|
return typeof e == "boolean" ? e ? "true" : "false" : e == null ? "" : String(e);
|
|
297
313
|
}
|
|
298
|
-
function
|
|
314
|
+
function z(e) {
|
|
299
315
|
return e === !0 || e === "true" || e === "1" || e === "yes" || e === "是" || e === "已选";
|
|
300
316
|
}
|
|
301
|
-
function
|
|
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" ||
|
|
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
|
|
314
|
-
}).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi, (e, t, n) =>
|
|
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
|
|
317
|
-
return r(e,
|
|
332
|
+
function V(e) {
|
|
333
|
+
return r(e, S, (e) => o(e, "data-key"));
|
|
318
334
|
}
|
|
319
|
-
function
|
|
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("正文包含已移除的事件或嵌入属性"), (
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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 {
|
|
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 };
|