@guodun/antdv 1.4.1 → 1.4.2

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 (116) hide show
  1. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.mjs +208 -180
  2. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.mjs +2 -1
  3. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.mjs +5 -0
  4. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.mjs +690 -0
  5. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.mjs +5 -0
  6. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.mjs +215 -0
  7. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.mjs +5 -0
  8. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.mjs +87 -0
  9. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.mjs +5 -0
  10. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.mjs +98 -0
  11. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.mjs +5 -0
  12. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.mjs +550 -0
  13. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.mjs +5 -0
  14. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.mjs +117 -0
  15. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.mjs +5 -0
  16. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.mjs +96 -0
  17. package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.mjs +51 -26
  18. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.mjs +56 -33
  19. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.mjs +5 -0
  20. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.mjs +29 -0
  21. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.mjs +5 -0
  22. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.mjs +390 -0
  23. package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +313 -267
  24. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1278 -2293
  25. package/dist/es/components/pro-contract-template-designer/src/composables/use-auto-pagination.mjs +71 -0
  26. package/dist/es/components/pro-contract-template-designer/src/composables/use-designer-files.mjs +11 -0
  27. package/dist/es/components/pro-contract-template-designer/src/composables/use-draft-cache-session.mjs +111 -0
  28. package/dist/es/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.mjs +79 -0
  29. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +189 -160
  30. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-files.mjs +35 -22
  31. package/dist/es/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.mjs +71 -0
  32. package/dist/es/components/pro-contract-template-designer/src/constants.mjs +71 -10
  33. package/dist/es/components/pro-contract-template-designer/src/extensions/editor-extensions.mjs +1 -0
  34. package/dist/es/components/pro-contract-template-designer/src/utils/block-style.mjs +43 -0
  35. package/dist/es/components/pro-contract-template-designer/src/utils/context-menu-viewport.mjs +13 -0
  36. package/dist/es/components/pro-contract-template-designer/src/utils/editor-state.mjs +7 -0
  37. package/dist/es/components/pro-contract-template-designer/src/utils/page-decorations.mjs +398 -0
  38. package/dist/es/components/pro-contract-template-designer/src/utils/serialize-fingerprint.mjs +6 -0
  39. package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +88 -72
  40. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  41. package/dist/es/index.mjs +20 -20
  42. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.cjs +1 -1
  43. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.cjs +1 -1
  44. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.cjs +1 -0
  45. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.cjs +1 -0
  46. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.cjs +1 -0
  47. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.cjs +1 -0
  48. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.cjs +1 -0
  49. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.cjs +1 -0
  50. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.cjs +1 -0
  51. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.cjs +1 -0
  52. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.cjs +1 -0
  53. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.cjs +1 -0
  54. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.cjs +1 -0
  55. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.cjs +1 -0
  56. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.cjs +1 -0
  57. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.cjs +1 -0
  58. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs +1 -1
  59. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererPage.vue.cjs +1 -1
  60. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.cjs +1 -0
  61. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.cjs +1 -0
  62. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.cjs +1 -0
  63. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.cjs +1 -0
  64. package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
  65. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  66. package/dist/lib/components/pro-contract-template-designer/src/composables/use-auto-pagination.cjs +1 -0
  67. package/dist/lib/components/pro-contract-template-designer/src/composables/use-designer-files.cjs +1 -0
  68. package/dist/lib/components/pro-contract-template-designer/src/composables/use-draft-cache-session.cjs +1 -0
  69. package/dist/lib/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.cjs +1 -0
  70. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
  71. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-files.cjs +2 -2
  72. package/dist/lib/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.cjs +1 -0
  73. package/dist/lib/components/pro-contract-template-designer/src/constants.cjs +1 -1
  74. package/dist/lib/components/pro-contract-template-designer/src/extensions/editor-extensions.cjs +1 -1
  75. package/dist/lib/components/pro-contract-template-designer/src/utils/block-style.cjs +1 -0
  76. package/dist/lib/components/pro-contract-template-designer/src/utils/context-menu-viewport.cjs +1 -0
  77. package/dist/lib/components/pro-contract-template-designer/src/utils/editor-state.cjs +1 -0
  78. package/dist/lib/components/pro-contract-template-designer/src/utils/page-decorations.cjs +1 -0
  79. package/dist/lib/components/pro-contract-template-designer/src/utils/serialize-fingerprint.cjs +1 -0
  80. package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +3 -3
  81. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  82. package/dist/lib/index.cjs +1 -1
  83. package/dist/theme/icon.css +1 -1
  84. package/dist/theme/index.css +1 -1
  85. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.d.ts +3 -0
  86. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerSidebar.vue.d.ts +1 -0
  87. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerToolbar.vue.d.ts +104 -0
  88. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.d.ts +50 -0
  89. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateImageContextMenu.vue.d.ts +27 -0
  90. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorations.vue.d.ts +13 -0
  91. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsInspector.vue.d.ts +28 -0
  92. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePageDecorationsStudio.vue.d.ts +77 -0
  93. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePreviewModal.vue.d.ts +36 -0
  94. package/dist/types/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.d.ts +5 -1
  95. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererHeader.vue.d.ts +4 -4
  96. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererToolbar.vue.d.ts +4 -4
  97. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateSubmitDataModal.vue.d.ts +12 -0
  98. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateTextContextMenu.vue.d.ts +77 -0
  99. package/dist/types/components/pro-contract-template-designer/src/DesignerPage.vue.d.ts +8 -32
  100. package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +366 -12
  101. package/dist/types/components/pro-contract-template-designer/src/composables/use-auto-pagination.d.ts +43 -0
  102. package/dist/types/components/pro-contract-template-designer/src/composables/use-designer-files.d.ts +22 -0
  103. package/dist/types/components/pro-contract-template-designer/src/composables/use-draft-cache-session.d.ts +41 -0
  104. package/dist/types/components/pro-contract-template-designer/src/composables/use-signing-placement-editor.d.ts +49 -0
  105. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +15 -1
  106. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-files.d.ts +13 -0
  107. package/dist/types/components/pro-contract-template-designer/src/composables/use-toolbar-overflow.d.ts +19 -0
  108. package/dist/types/components/pro-contract-template-designer/src/constants.d.ts +7 -1
  109. package/dist/types/components/pro-contract-template-designer/src/types.d.ts +89 -0
  110. package/dist/types/components/pro-contract-template-designer/src/utils/block-style.d.ts +4 -0
  111. package/dist/types/components/pro-contract-template-designer/src/utils/context-menu-viewport.d.ts +22 -0
  112. package/dist/types/components/pro-contract-template-designer/src/utils/editor-state.d.ts +8 -0
  113. package/dist/types/components/pro-contract-template-designer/src/utils/page-decorations.d.ts +90 -0
  114. package/dist/types/components/pro-contract-template-designer/src/utils/serialize-fingerprint.d.ts +8 -0
  115. package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +4 -1
  116. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { ContractTemplateEditorCommand, ContractTemplateEditorTextAlign, ContractTemplateFontFamilyMode, ContractTemplateFontFamilyOption, ContractTemplateTextStylePreset, ContractTemplateTextStylePresetKey } from './types';
1
+ import { ContractTemplateEditorCommand, ContractTemplateEditorTextAlign, ContractTemplateBlockStyle, ContractTemplateFontFamilyMode, ContractTemplateFontFamilyOption, ContractTemplateTextStylePreset, ContractTemplateTextStylePresetKey } from './types';
2
2
  /**
3
3
  * 合同正文默认字体。
4
4
  *
@@ -17,6 +17,9 @@ export declare const DEFAULT_TEXT_ALIGN_OPTIONS: Array<{
17
17
  label: string;
18
18
  value: ContractTemplateEditorTextAlign;
19
19
  }>;
20
+ /** Word 式段落样式;只统一结构、字号、粗体和段距,其余人工格式继续保留。 */
21
+ export declare const CONTRACT_BLOCK_STYLES: ContractTemplateBlockStyle[];
22
+ export declare function getContractBlockStyle(format: ContractTemplateBlockStyle['format']): ContractTemplateBlockStyle | undefined;
20
23
  /**
21
24
  * 合同文本样式预设。
22
25
  *
@@ -39,6 +42,9 @@ export declare function resolveContractTextStylePresetCommands(key: ContractTemp
39
42
  } | {
40
43
  type: "set-heading";
41
44
  level: import('./types').ContractTemplateHeadingLevel;
45
+ } | {
46
+ type: "apply-block-style";
47
+ format: import('./types').ContractTemplateBlockFormat;
42
48
  } | {
43
49
  type: "toggle-heading";
44
50
  level: import('./types').ContractTemplateHeadingLevel;
@@ -11,6 +11,52 @@ export interface ContractTemplatePageSize {
11
11
  height: number;
12
12
  label?: string;
13
13
  }
14
+ export type ContractTemplateDecorationTextAlign = 'left' | 'center' | 'right';
15
+ export interface ContractTemplateHeaderFooterSlots {
16
+ left: string;
17
+ center: string;
18
+ right: string;
19
+ }
20
+ /** 页眉或页脚的纯文本配置;支持 {pageNumber} / {totalPages} 页码令牌。 */
21
+ export interface ContractTemplateHeaderFooterConfig {
22
+ enabled: boolean;
23
+ text: string;
24
+ textAlign: ContractTemplateDecorationTextAlign;
25
+ fontSize: number;
26
+ color: string;
27
+ /** 新渲染器的三栏权威内容;缺省时由 text/textAlign 迁移。 */
28
+ slots?: ContractTemplateHeaderFooterSlots;
29
+ showOnFirstPage?: boolean;
30
+ fontFamily?: string;
31
+ fontWeight?: 400 | 600;
32
+ /** 距对应页面边缘的距离,单位 px。 */
33
+ offset?: number;
34
+ divider?: {
35
+ enabled: boolean;
36
+ color: string;
37
+ };
38
+ }
39
+ /** 每页居中的文字水印配置。 */
40
+ export interface ContractTemplateWatermarkConfig {
41
+ enabled: boolean;
42
+ text: string;
43
+ fontSize: number;
44
+ color: string;
45
+ opacity: number;
46
+ rotation: number;
47
+ showOnFirstPage?: boolean;
48
+ layout?: 'single' | 'tiled';
49
+ density?: 'sparse' | 'normal' | 'dense';
50
+ }
51
+ /** 模板级页面装饰;所有页面共享同一份页眉、页脚和水印配置。 */
52
+ export interface ContractTemplatePageDecorations {
53
+ header: ContractTemplateHeaderFooterConfig;
54
+ footer: ContractTemplateHeaderFooterConfig;
55
+ watermark: ContractTemplateWatermarkConfig;
56
+ pageNumbering?: {
57
+ countFirstPage: boolean;
58
+ };
59
+ }
14
60
  export interface ContractTemplateFieldStyle {
15
61
  border?: boolean;
16
62
  underline?: boolean;
@@ -118,6 +164,8 @@ export interface ContractTemplateData {
118
164
  pageSize: ContractTemplatePageSize;
119
165
  /** 旧模板可缺省;归一化后的模板始终带空数组。 */
120
166
  signingPlacements?: ContractTemplateSigningPlacement[];
167
+ /** 旧模板可缺省;配置后由设计器预览、填写渲染器和 PDF 服务共同消费。 */
168
+ pageDecorations?: ContractTemplatePageDecorations;
121
169
  }
122
170
  /** 多文件设计器中的一份独立合同文件;正文、变量和签署位置均在文件内隔离。 */
123
171
  export interface ContractTemplateFile {
@@ -138,6 +186,15 @@ export interface ContractTemplateFontFamilyOption {
138
186
  export type ContractTemplateFontFamilyMode = 'append' | 'replace';
139
187
  export type ContractTemplateEditorTextAlign = 'left' | 'center' | 'right';
140
188
  export type ContractTemplateHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
189
+ export type ContractTemplateBlockFormat = 'paragraph' | ContractTemplateHeadingLevel;
190
+ export interface ContractTemplateBlockStyle {
191
+ format: ContractTemplateBlockFormat;
192
+ label: string;
193
+ fontSize: number;
194
+ bold: boolean;
195
+ marginTop: number;
196
+ marginBottom: number;
197
+ }
141
198
  export type ContractTemplateTextStylePresetKey = 'contractTitle' | 'clauseTitle' | 'bodyClause' | 'appendixTitle';
142
199
  export interface ContractTemplateTextStylePreset {
143
200
  key: ContractTemplateTextStylePresetKey;
@@ -162,6 +219,8 @@ export interface ContractTemplateEditorState {
162
219
  isOrderedList: boolean;
163
220
  isTableActive: boolean;
164
221
  currentHeadingLevel?: ContractTemplateHeadingLevel;
222
+ /** 选区内同时包含正文与标题或多个标题层级。 */
223
+ hasMixedBlockFormats?: boolean;
165
224
  textAlign: ContractTemplateEditorTextAlign;
166
225
  fontFamily?: string;
167
226
  fontSize?: number;
@@ -203,6 +262,9 @@ export type ContractTemplateEditorCommand = {
203
262
  } | {
204
263
  type: 'set-heading';
205
264
  level: ContractTemplateHeadingLevel;
265
+ } | {
266
+ type: 'apply-block-style';
267
+ format: ContractTemplateBlockFormat;
206
268
  } | {
207
269
  type: 'toggle-heading';
208
270
  level: ContractTemplateHeadingLevel;
@@ -678,3 +740,30 @@ export interface ContractTemplateDesignerExpose {
678
740
  /** 将当前模板签署位置投影为 packages/contract 使用的严格 DTO。 */
679
741
  buildContractLocationRules: (options: ContractTemplateLocationRuleOptions) => ContractLocationRule[];
680
742
  }
743
+ export type ContractTemplateEditorContextMenuPayload = {
744
+ type: 'text';
745
+ pageId: string;
746
+ clientX: number;
747
+ clientY: number;
748
+ hasSelection: boolean;
749
+ selectionWidth?: number;
750
+ leadingText?: string;
751
+ } | {
752
+ type: 'table';
753
+ pageId: string;
754
+ clientX: number;
755
+ clientY: number;
756
+ capabilities: ContractTemplateTableCommandCapabilities;
757
+ activeAlignment: ContractTemplateEditorTextAlign | 'mixed';
758
+ affectedVariableCounts: {
759
+ deleteRow: number;
760
+ deleteColumn: number;
761
+ deleteTable: number;
762
+ };
763
+ } | {
764
+ type: 'image';
765
+ pageId: string;
766
+ clientX: number;
767
+ clientY: number;
768
+ image: ContractTemplateSelectedContentImage;
769
+ };
@@ -0,0 +1,4 @@
1
+ import { Editor } from '@tiptap/core';
2
+ import { ContractTemplateBlockFormat } from '../types';
3
+ /** 将段落样式应用到当前选区覆盖的完整块,保留字体、颜色、对齐和装饰等其它格式。 */
4
+ export declare function applyContractTemplateBlockStyle(editor: Editor, format: ContractTemplateBlockFormat): boolean;
@@ -0,0 +1,22 @@
1
+ /** 右键菜单贴边时的视口内边距;正文/图片/表格共用,避免各写一套魔法数。 */
2
+ export declare const CONTEXT_MENU_VIEWPORT_PADDING = 12;
3
+ export declare const TEXT_CONTEXT_MENU_ESTIMATED_WIDTH = 304;
4
+ export declare const TEXT_CONTEXT_MENU_ESTIMATED_HEIGHT = 300;
5
+ export declare const IMAGE_CONTEXT_MENU_ESTIMATED_WIDTH = 288;
6
+ export declare const IMAGE_CONTEXT_MENU_ESTIMATED_HEIGHT = 196;
7
+ export declare const TABLE_CONTEXT_MENU_ESTIMATED_WIDTH = 248;
8
+ export declare const TABLE_CONTEXT_MENU_ESTIMATED_HEIGHT = 400;
9
+ /**
10
+ * 把菜单左上角夹进视口。
11
+ *
12
+ * 首帧常用估算宽高,渲染后再用 {@link clampContextMenuToElement} 按实测尺寸校正。
13
+ */
14
+ export declare function clampContextMenuPosition(clientX: number, clientY: number, width: number, height: number, padding?: number): {
15
+ x: number;
16
+ y: number;
17
+ };
18
+ /** 按菜单真实包围盒再夹一次,避免估算尺寸和实测不一致时贴边被裁。 */
19
+ export declare function clampContextMenuToElement(x: number, y: number, element: HTMLElement, padding?: number): {
20
+ x: number;
21
+ y: number;
22
+ };
@@ -0,0 +1,8 @@
1
+ import { ContractTemplateEditorState } from '../types';
2
+ /**
3
+ * 比较两份工具栏编辑器状态是否等价。
4
+ *
5
+ * Tiptap 每次 transaction 都会上报状态;工具栏按钮激活态往往没变。
6
+ * 只比较扁平字段和当前选中图片,避免对整份 state 做 JSON.stringify。
7
+ */
8
+ export declare function isSameEditorState(previous: ContractTemplateEditorState, next: ContractTemplateEditorState): boolean;
@@ -0,0 +1,90 @@
1
+ import { ContractTemplateHeaderFooterConfig, ContractTemplateHeaderFooterSlots, ContractTemplatePageDecorations, ContractTemplateRenderValues, ContractTemplateValidationError, ContractTemplateVariable, ContractTemplateWatermarkConfig } from '../types';
2
+ export declare const CONTRACT_PAGE_BASE_PADDING: {
3
+ readonly top: 54;
4
+ readonly right: 64;
5
+ readonly bottom: 54;
6
+ readonly left: 64;
7
+ };
8
+ export declare const CONTRACT_PAGE_DECORATED_PADDING = 80;
9
+ export declare const CONTRACT_PAGE_DECORATION_TOKEN_LIMIT = 240;
10
+ export type ContractTemplatePageDecorationPresetKey = 'none' | 'page-number' | 'internal-review' | 'draft' | 'custom';
11
+ export type ContractTemplateWatermarkDensity = 'sparse' | 'normal' | 'dense';
12
+ export type ContractTemplatePageDecorationFieldPath = `header.slots.${keyof ContractTemplateHeaderFooterSlots}` | `footer.slots.${keyof ContractTemplateHeaderFooterSlots}` | 'watermark.text';
13
+ export interface NormalizedContractTemplateHeaderFooterConfig extends ContractTemplateHeaderFooterConfig {
14
+ slots: ContractTemplateHeaderFooterSlots;
15
+ showOnFirstPage: boolean;
16
+ fontFamily: string;
17
+ fontWeight: 400 | 600;
18
+ offset: number;
19
+ divider: {
20
+ enabled: boolean;
21
+ color: string;
22
+ };
23
+ }
24
+ export interface NormalizedContractTemplateWatermarkConfig extends ContractTemplateWatermarkConfig {
25
+ showOnFirstPage: boolean;
26
+ layout: 'single' | 'tiled';
27
+ density: ContractTemplateWatermarkDensity;
28
+ }
29
+ export interface NormalizedContractTemplatePageDecorations extends ContractTemplatePageDecorations {
30
+ header: NormalizedContractTemplateHeaderFooterConfig;
31
+ footer: NormalizedContractTemplateHeaderFooterConfig;
32
+ watermark: NormalizedContractTemplateWatermarkConfig;
33
+ pageNumbering: {
34
+ countFirstPage: boolean;
35
+ };
36
+ }
37
+ export type PageDecorationToken = {
38
+ type: 'text';
39
+ value: string;
40
+ } | {
41
+ type: 'pageNumber';
42
+ } | {
43
+ type: 'totalPages';
44
+ } | {
45
+ type: 'variable';
46
+ key: string;
47
+ raw: string;
48
+ };
49
+ export interface PageDecorationTokenIssue {
50
+ code: 'DECORATION_TOKEN_MALFORMED' | 'DECORATION_VARIABLE_UNKNOWN' | 'DECORATION_VARIABLE_IMAGE_UNSUPPORTED';
51
+ message: string;
52
+ token: string;
53
+ offset: number;
54
+ }
55
+ export declare const WATERMARK_DENSITY_GRID: Record<ContractTemplateWatermarkDensity, {
56
+ columns: number;
57
+ rows: number;
58
+ }>;
59
+ export declare const DEFAULT_PAGE_DECORATIONS: NormalizedContractTemplatePageDecorations;
60
+ /** 旧 text/textAlign 在这里一次性迁移,后续所有调用方只消费完整三栏模型。 */
61
+ export declare function normalizePageDecorations(value?: Partial<ContractTemplatePageDecorations>): NormalizedContractTemplatePageDecorations;
62
+ export declare function createPageDecorationPreset(key: Exclude<ContractTemplatePageDecorationPresetKey, 'custom'>): NormalizedContractTemplatePageDecorations;
63
+ export declare function resolvePageDecorationPreset(value?: Partial<ContractTemplatePageDecorations>): ContractTemplatePageDecorationPresetKey;
64
+ export declare function hasEnabledPageHeader(value?: Partial<ContractTemplatePageDecorations>, physicalPageNumber?: number): boolean;
65
+ export declare function hasEnabledPageFooter(value?: Partial<ContractTemplatePageDecorations>, physicalPageNumber?: number): boolean;
66
+ export declare function hasEnabledPageWatermark(value?: Partial<ContractTemplatePageDecorations>, physicalPageNumber?: number): boolean;
67
+ export declare function getPageDecorationNumbers(physicalPageNumber: number, physicalTotalPages: number, countFirstPage?: boolean): {
68
+ pageNumber: string;
69
+ totalPages: string;
70
+ };
71
+ export declare function interpolatePageDecorationText(text: string, physicalPageNumber: number, physicalTotalPages: number, countFirstPage?: boolean): string;
72
+ export declare function parsePageDecorationText(text: string, variables?: readonly ContractTemplateVariable[], validateReferences?: boolean): {
73
+ tokens: PageDecorationToken[];
74
+ issues: PageDecorationTokenIssue[];
75
+ };
76
+ export declare function collectPageDecorationVariableKeys(value?: Partial<ContractTemplatePageDecorations>): Set<string>;
77
+ export declare function validatePageDecorations(value: Partial<ContractTemplatePageDecorations> | undefined, variables: readonly ContractTemplateVariable[]): ContractTemplateValidationError[];
78
+ /** 从页面装饰校验错误中还原可聚焦的表单字段路径。 */
79
+ export declare function resolvePageDecorationValidationPath(error: Pick<ContractTemplateValidationError, 'code' | 'id'>): ContractTemplatePageDecorationFieldPath | undefined;
80
+ /** 重命名与显式删除只改变量令牌,固定正文中相同字样不会被误改。 */
81
+ export declare function rewritePageDecorationVariableTokens(value: Partial<ContractTemplatePageDecorations> | undefined, previousKey: string, nextKey?: string): NormalizedContractTemplatePageDecorations;
82
+ export declare function resolvePageDecorationTokenText(token: PageDecorationToken, variables: readonly ContractTemplateVariable[], values: ContractTemplateRenderValues | undefined, physicalPageNumber: number, physicalTotalPages: number, countFirstPage: boolean): string;
83
+ export declare function getWatermarkDensityGrid(density: ContractTemplateWatermarkDensity): {
84
+ columns: number;
85
+ rows: number;
86
+ };
87
+ export declare function getPageDecorationSafePadding(config: ContractTemplateHeaderFooterConfig): number;
88
+ export declare function buildPageDecorationClassNames(value?: Partial<ContractTemplatePageDecorations>, physicalPageNumber?: number): string;
89
+ /** 导出 HTML 只输出转义文本、白名单样式和静态平铺节点,不依赖运行时脚本。 */
90
+ export declare function buildPageDecorationsHtml(value: Partial<ContractTemplatePageDecorations> | undefined, physicalPageNumber: number, physicalTotalPages: number, variables?: readonly ContractTemplateVariable[], values?: ContractTemplateRenderValues): string;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 模板 / 文件快照指纹。
3
+ *
4
+ * 设计器用序列化字符串判断「是不是自己 emit 回去的同一份数据」,
5
+ * 避免 v-model 回流把光标和选中态清掉。各处必须走同一套算法,不能有的
6
+ * stringify、有的手写比较,否则指纹对不上就会误重置编辑器。
7
+ */
8
+ export declare function serializeFingerprint(value: unknown): string;
@@ -1,4 +1,4 @@
1
- import { ContractTemplateData, ContractTemplatePageFormat, ContractTemplateRenderValue, ContractTemplateRenderValues, ContractTemplateValidationError } from '../types';
1
+ import { ContractTemplateData, ContractTemplatePageFormat, ContractTemplatePageDecorations, ContractTemplateRenderValue, ContractTemplateRenderValues, ContractTemplateValidationError, ContractTemplateVariable } from '../types';
2
2
  import { isSafeContractImageUrl } from './image-url';
3
3
  export { isSafeContractImageUrl };
4
4
  export type ContractTemplateRenderHtmlMode = 'control' | 'display';
@@ -15,6 +15,9 @@ export interface ContractTemplateRenderPage {
15
15
  width: number;
16
16
  height: number;
17
17
  contentHtml: string;
18
+ pageDecorations?: ContractTemplatePageDecorations;
19
+ decorationVariables: ContractTemplateVariable[];
20
+ decorationValues: ContractTemplateRenderValues;
18
21
  }
19
22
  /** 按变量默认值生成初始填写值,供渲染器首次挂载和 resetValues 共用。 */
20
23
  export declare function buildInitialRenderValues(template: ContractTemplateData | undefined): ContractTemplateRenderValues;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guodun/antdv",
3
- "version": "1.4.1",
3
+ "version": "1.4.2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "CHANGELOG.md",