monto-email-builder 1.2.2 → 1.2.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 (49) hide show
  1. package/README.md +1 -1
  2. package/dist/App/InspectorDrawer/ConfigurationPanel/index.d.ts.map +1 -1
  3. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/TextSidebarPanel.d.ts +2 -1
  4. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/TextSidebarPanel.d.ts.map +1 -1
  5. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/ColorInput/BaseColorInput.d.ts.map +1 -1
  6. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/FontStyleInput.d.ts +8 -0
  7. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/FontStyleInput.d.ts.map +1 -0
  8. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/FontWeightInput.d.ts.map +1 -1
  9. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/LetterSpacingInput.d.ts +8 -0
  10. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/LetterSpacingInput.d.ts.map +1 -0
  11. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/LineHeightInput.d.ts +8 -0
  12. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/LineHeightInput.d.ts.map +1 -0
  13. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/RadioGroupInput.d.ts.map +1 -1
  14. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/TextDecorationInput.d.ts +9 -0
  15. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/TextDecorationInput.d.ts.map +1 -0
  16. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/TextFormatGroup.d.ts +8 -0
  17. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/inputs/TextFormatGroup.d.ts.map +1 -0
  18. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/style-inputs/MultiStylePropertyPanel.d.ts.map +1 -1
  19. package/dist/App/InspectorDrawer/ConfigurationPanel/input-panels/helpers/style-inputs/SingleStylePropertyPanel.d.ts.map +1 -1
  20. package/dist/App/InspectorDrawer/index.d.ts.map +1 -1
  21. package/dist/App/TemplatePanel/index.d.ts.map +1 -1
  22. package/dist/EmailBuilder/index.d.ts +16 -0
  23. package/dist/EmailBuilder/index.d.ts.map +1 -1
  24. package/dist/HtmlEditor/index.d.ts.map +1 -1
  25. package/dist/chunks/{chunk-CxhtzHBZ.js → chunk-_7XTjFEi.js} +220 -80
  26. package/dist/documents/blocks/Text/TextEditor.d.ts.map +1 -1
  27. package/dist/documents/blocks/Text/TextEditorRich.d.ts +3 -0
  28. package/dist/documents/blocks/Text/TextEditorRich.d.ts.map +1 -0
  29. package/dist/documents/blocks/Text/textDom.d.ts +70 -0
  30. package/dist/documents/blocks/Text/textDom.d.ts.map +1 -0
  31. package/dist/documents/blocks/Text/variableCatalog.d.ts +23 -0
  32. package/dist/documents/blocks/Text/variableCatalog.d.ts.map +1 -0
  33. package/dist/documents/blocks/helpers/TStyle.d.ts +4 -0
  34. package/dist/documents/blocks/helpers/TStyle.d.ts.map +1 -1
  35. package/dist/documents/blocks/helpers/block-wrappers/EditorBlockWrapper.d.ts.map +1 -1
  36. package/dist/documents/blocks/helpers/block-wrappers/TuneMenu.d.ts.map +1 -1
  37. package/dist/documents/editor/EditorContext.d.ts +85 -0
  38. package/dist/documents/editor/EditorContext.d.ts.map +1 -1
  39. package/dist/documents/editor/collectTemplateVariables.d.ts +51 -0
  40. package/dist/documents/editor/collectTemplateVariables.d.ts.map +1 -0
  41. package/dist/documents/editor/core.d.ts +717 -4
  42. package/dist/documents/editor/core.d.ts.map +1 -1
  43. package/dist/documents/editor/flushActiveTextEditorToDocument.d.ts +6 -0
  44. package/dist/documents/editor/flushActiveTextEditorToDocument.d.ts.map +1 -0
  45. package/dist/html-editor.js +144 -127
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +5165 -2859
  49. package/package.json +16 -15
@@ -1,8 +1,67 @@
1
1
  import { TEditorConfiguration } from './core';
2
2
  import { Language } from '../../i18n';
3
+ import type { TStyle } from '../blocks/helpers/TStyle';
4
+ export type TextSelectionRange = {
5
+ blockId: string;
6
+ start: number;
7
+ end: number;
8
+ };
9
+ export type TextCaret = {
10
+ blockId: string;
11
+ offset: number;
12
+ };
13
+ export type ContactAttribute = {
14
+ Id: number;
15
+ IsSystem?: number | boolean;
16
+ CompanyId?: number;
17
+ Name?: string;
18
+ AttrField: string;
19
+ AttrType?: number;
20
+ AttrComment?: string;
21
+ Enable?: number | boolean;
22
+ CreateTime?: number;
23
+ UpdateTime?: number;
24
+ Categories?: unknown;
25
+ };
26
+ export type TextDomApplyKind = {
27
+ kind: 'style';
28
+ style: Partial<TStyle>;
29
+ } | {
30
+ kind: 'link';
31
+ href: string;
32
+ targetBlank: boolean;
33
+ } | {
34
+ kind: 'variable';
35
+ token: string;
36
+ defaultValue?: string;
37
+ } | {
38
+ kind: 'replaceVariable';
39
+ token: string;
40
+ start: number;
41
+ end: number;
42
+ defaultValue?: string;
43
+ };
44
+ export type TextDomApplyRequest = {
45
+ blockId: string;
46
+ id: number;
47
+ } & TextDomApplyKind;
3
48
  type TValue = {
4
49
  document: TEditorConfiguration;
5
50
  selectedBlockId: string | null;
51
+ /** 当前 Text 块内字符选区,用于右侧属性栏「跟随选区」 */
52
+ textSelection: TextSelectionRange | null;
53
+ /** 当前 Text 块内折叠光标位置(无选区时也要记住,用于插入变量等) */
54
+ textCaret: TextCaret | null;
55
+ /** 最近一次在面板中应用选区样式的时间戳;用于避免 re-render 导致选区折叠后误清空 textSelection */
56
+ lastInlineStyleApplyAt: number;
57
+ /** 更新选区时同步的当前块文本快照,用于右侧「选中」预览(未 blur 前 document 未更新) */
58
+ lastTextBlockContent: {
59
+ blockId: string;
60
+ text: string;
61
+ styleSnapshot?: Partial<TStyle>;
62
+ } | null;
63
+ /** 右侧面板触发的 DOM 级样式/链接应用(由 TextEditor 消费) */
64
+ textDomApplyRequest: TextDomApplyRequest | null;
6
65
  selectedSidebarTab: 'block-configuration' | 'styles';
7
66
  selectedMainTab: 'editor' | 'preview' | 'json' | 'html';
8
67
  selectedScreenSize: 'desktop' | 'mobile';
@@ -11,6 +70,8 @@ type TValue = {
11
70
  imageUploadHandler?: (file: File) => Promise<string>;
12
71
  videoUploadHandler?: (file: File) => Promise<string>;
13
72
  language: Language;
73
+ /** 外部传入的联系人属性(用于变量面板) */
74
+ contactAttributes: ContactAttribute[];
14
75
  onChange?: (document: TEditorConfiguration, html: string) => void;
15
76
  saveHandler?: (document: TEditorConfiguration) => void | Promise<void>;
16
77
  saveAndExitHandler?: (document: TEditorConfiguration) => void | Promise<void>;
@@ -26,8 +87,11 @@ export declare function initializeStore(config?: {
26
87
  language?: Language;
27
88
  showJsonFeatures?: boolean;
28
89
  showSamplesDrawerTitle?: boolean;
90
+ contactAttributes?: ContactAttribute[];
29
91
  }): void;
30
92
  declare const editorStateStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TValue>>;
93
+ export declare function setContactAttributes(attrs: ContactAttribute[] | null | undefined): void;
94
+ export declare function useContactAttributes(): ContactAttribute[];
31
95
  export declare function useDocument(): TEditorConfiguration;
32
96
  export declare function useSelectedBlockId(): string | null;
33
97
  export declare function useSelectedScreenSize(): "desktop" | "mobile";
@@ -37,6 +101,27 @@ export declare function useSelectedSidebarTab(): "styles" | "block-configuration
37
101
  export declare function useInspectorDrawerOpen(): boolean;
38
102
  export declare function useSamplesDrawerOpen(): boolean;
39
103
  export declare function setSelectedBlockId(selectedBlockId: TValue['selectedBlockId']): void;
104
+ export declare function setTextSelection(range: TValue['textSelection']): void;
105
+ export declare function setTextCaret(textCaret: TValue['textCaret']): void;
106
+ export declare function useTextSelection(): TextSelectionRange | null;
107
+ export declare function useTextCaret(): TextCaret | null;
108
+ /** 在右侧面板应用选区样式后调用,避免随后 re-render 导致选区折叠时误清空 textSelection */
109
+ export declare function markLastInlineStyleApply(): void;
110
+ export declare function shouldIgnoreCollapsedSelectionForClear(): boolean;
111
+ export declare function setLastTextBlockContent(payload: {
112
+ blockId: string;
113
+ text: string;
114
+ styleSnapshot?: Partial<TStyle>;
115
+ } | null): void;
116
+ export declare function queueTextDomApply(blockId: string, payload: TextDomApplyKind): void;
117
+ export declare function clearTextDomApplyRequest(): void;
118
+ export declare function useTextDomApplyRequest(): TextDomApplyRequest | null;
119
+ export declare function useLastTextBlockContent(): {
120
+ blockId: string;
121
+ text: string;
122
+ styleSnapshot?: Partial<TStyle>;
123
+ } | null;
124
+ export declare function useLastInlineStyleApplyAt(): number;
40
125
  export declare function setSidebarTab(selectedSidebarTab: TValue['selectedSidebarTab']): void;
41
126
  export declare function resetDocument(document: TValue['document']): void;
42
127
  export declare function setDocument(document: TValue['document'], options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"EditorContext.d.ts","sourceRoot":"","sources":["../../../src/documents/editor/EditorContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EditorContext.d.ts","sourceRoot":"","sources":["../../../src/documents/editor/EditorContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { TEditorConfiguration } from './core';
2
+ export type EmailTemplateVariableItem = {
3
+ /** 文档内全局自增,从 1 起 */
4
+ id: number;
5
+ /** 与 span `data-variable-instance-id` 一致,用于关联 variableDefaults */
6
+ variableInstanceId: string;
7
+ /** 完整 token:`{{name}}` 或 `{%name%}` */
8
+ variable: string;
9
+ /** 变量类型:`{{}}` -> user,`{% %}` -> system */
10
+ type: 'user' | 'system';
11
+ /** 变量名(不含分隔符) */
12
+ attribute: string;
13
+ /** 用户变量为 variableDefaults[variableInstanceId];内置变量固定为 `''` */
14
+ default: string;
15
+ };
16
+ /**
17
+ * EmailBuilder `variables` 入参(与 getVariables 输出可对齐):
18
+ * - **集成推荐**:只传 `attribute` + `default`(或 `variable: "{{name}}"` + `default`),无需知道 `variableInstanceId`;
19
+ * - 若已知实例 id,可传 `variableInstanceId` 精确写入一条。
20
+ */
21
+ export type EmailBuilderVariableInput = {
22
+ id?: number;
23
+ /** 若已知正文 span 的 id,只更新该实例;与按名匹配二选一 */
24
+ variableInstanceId?: string;
25
+ /** 如 `{{first_name}}`;可与 attribute 二选一用于解析变量名 */
26
+ variable?: string;
27
+ /** 变量名(不含 `{{}}`);与 `variable` 二选一;无需 `variableInstanceId` */
28
+ attribute?: string;
29
+ default: string;
30
+ };
31
+ /**
32
+ * 从 Text `props.variables[].default` 预填到 `props.variableDefaults`:
33
+ * - 有 `variableInstanceId`:按实例写入;
34
+ * - 无实例 id:按 attribute 作为 legacy 键写入(后续会在编辑器内迁移到实例 id)。
35
+ */
36
+ export declare function hydrateVariableDefaultsFromEmbeddedVariables(document: TEditorConfiguration, rootBlockId?: string): TEditorConfiguration;
37
+ /**
38
+ * 从当前文档收集 Text 中「插入式」变量(span[data-text-variable]):
39
+ * - `{{name}}`:default 来自 variableDefaults;
40
+ * - `{%name%}`:builtin,default 恒为 `''`。
41
+ * 不包含手打 `{{}}` / `{% %}` 纯文本。多段落 HTML 会在 body 范围内扫描。
42
+ */
43
+ export declare function collectTemplateVariablesFromDocument(document: TEditorConfiguration, rootBlockId?: string): EmailTemplateVariableItem[];
44
+ /**
45
+ * 将外部传入的变量默认值合并进文档:仅对正文里「插入式变量」span(含 `data-variable-instance-id`)生效。
46
+ * - 入参带 `variableInstanceId`:只写该实例;
47
+ * - 否则按 `attribute` / `variable` 解析变量名,对正文中**所有**同名 `{{name}}` 实例写入同一 `default`(内置 `{%name%}` 不按名写入)。
48
+ * 未在正文出现的名或 id 会被忽略;未在入参中出现的实例保留原有 variableDefaults。
49
+ */
50
+ export declare function applyExternalVariableDefaultsToDocument(document: TEditorConfiguration, variables: ReadonlyArray<EmailBuilderVariableInput> | null | undefined, rootBlockId?: string): TEditorConfiguration;
51
+ //# sourceMappingURL=collectTemplateVariables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectTemplateVariables.d.ts","sourceRoot":"","sources":["../../../src/documents/editor/collectTemplateVariables.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEjE,MAAM,MAAM,yBAAyB,GAAG;IACtC,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAgBF;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,4CAA4C,CAC1D,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,SAAS,GACnB,oBAAoB,CA8DtB;AAsDD;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,SAAS,GACnB,yBAAyB,EAAE,CAyC7B;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,oBAAoB,EAC9B,SAAS,EAAE,aAAa,CAAC,yBAAyB,CAAC,GAAG,IAAI,GAAG,SAAS,EACtE,WAAW,SAAS,GACnB,oBAAoB,CA+DtB"}