@react-email/editor 0.0.0-experimental.22 → 0.0.0-experimental.24

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 (44) hide show
  1. package/dist/columns-CUxUEHje.mjs +497 -0
  2. package/dist/columns-CUxUEHje.mjs.map +1 -0
  3. package/dist/columns-ZSaLdkg9.cjs +630 -0
  4. package/dist/core/index.cjs +8 -0
  5. package/dist/core/index.d.cts +2 -0
  6. package/dist/core/index.d.mts +2 -0
  7. package/dist/core/index.mjs +4 -0
  8. package/dist/core-BjmRceVw.mjs +1999 -0
  9. package/dist/core-BjmRceVw.mjs.map +1 -0
  10. package/dist/core-iuG1UrYN.cjs +2250 -0
  11. package/dist/extensions/index.cjs +46 -0
  12. package/dist/extensions/index.d.cts +389 -0
  13. package/dist/extensions/index.d.cts.map +1 -0
  14. package/dist/extensions/index.d.mts +389 -0
  15. package/dist/extensions/index.d.mts.map +1 -0
  16. package/dist/extensions/index.mjs +4 -0
  17. package/dist/index-CfslA7KT.d.cts +130 -0
  18. package/dist/index-CfslA7KT.d.cts.map +1 -0
  19. package/dist/index-hbHRR7oB.d.mts +130 -0
  20. package/dist/index-hbHRR7oB.d.mts.map +1 -0
  21. package/dist/set-text-alignment-Bx3bPteH.cjs +24 -0
  22. package/dist/set-text-alignment-DZvgnbvz.mjs +19 -0
  23. package/dist/set-text-alignment-DZvgnbvz.mjs.map +1 -0
  24. package/dist/ui/index.cjs +1646 -0
  25. package/dist/ui/index.d.cts +668 -0
  26. package/dist/ui/index.d.cts.map +1 -0
  27. package/dist/ui/index.d.mts +668 -0
  28. package/dist/ui/index.d.mts.map +1 -0
  29. package/dist/ui/index.mjs +1584 -0
  30. package/dist/ui/index.mjs.map +1 -0
  31. package/dist/utils/index.cjs +3 -0
  32. package/dist/utils/index.d.cts +7 -0
  33. package/dist/utils/index.d.cts.map +1 -0
  34. package/dist/utils/index.d.mts +7 -0
  35. package/dist/utils/index.d.mts.map +1 -0
  36. package/dist/utils/index.mjs +3 -0
  37. package/package.json +38 -11
  38. package/dist/index.cjs +0 -4228
  39. package/dist/index.d.cts +0 -1175
  40. package/dist/index.d.cts.map +0 -1
  41. package/dist/index.d.mts +0 -1175
  42. package/dist/index.d.mts.map +0 -1
  43. package/dist/index.mjs +0 -4072
  44. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,130 @@
1
+ import { Content, Editor, Extensions, JSONContent, Node, NodeConfig, NodeType } from "@tiptap/core";
2
+ import { UseEditorOptions } from "@tiptap/react";
3
+ import { EditorView } from "@tiptap/pm/view";
4
+ import { Node as Node$1 } from "@tiptap/pm/model";
5
+
6
+ //#region src/core/event-bus.d.ts
7
+
8
+ /**
9
+ * Base event map interface for the editor event bus.
10
+ *
11
+ * Components extend this via TypeScript module augmentation:
12
+ * ```ts
13
+ * declare module '@react-email/editor' {
14
+ * interface EditorEventMap {
15
+ * 'my-component:custom-event': { data: string };
16
+ * }
17
+ * }
18
+ * ```
19
+ */
20
+ interface EditorEventMap {
21
+ 'bubble-menu:add-link': undefined;
22
+ }
23
+ type EditorEventName = keyof EditorEventMap;
24
+ type EditorEventHandler<T extends EditorEventName> = (payload: EditorEventMap[T]) => void | Promise<void>;
25
+ interface EditorEventSubscription {
26
+ unsubscribe: () => void;
27
+ }
28
+ declare class EditorEventBus {
29
+ private prefixEventName;
30
+ dispatch<T extends EditorEventName>(eventName: T, payload: EditorEventMap[T], options?: {
31
+ target?: EventTarget;
32
+ }): void;
33
+ on<T extends EditorEventName>(eventName: T, handler: EditorEventHandler<T>, options?: AddEventListenerOptions & {
34
+ target?: EventTarget;
35
+ }): EditorEventSubscription;
36
+ }
37
+ declare const editorEventBus: EditorEventBus;
38
+ //#endregion
39
+ //#region src/core/is-document-visually-empty.d.ts
40
+ declare function isDocumentVisuallyEmpty(doc: Node$1): boolean;
41
+ //#endregion
42
+ //#region src/core/serializer/compose-react-email.d.ts
43
+ interface ComposeReactEmailResult {
44
+ html: string;
45
+ text: string;
46
+ }
47
+ declare const composeReactEmail: ({
48
+ editor,
49
+ preview
50
+ }: {
51
+ editor: Editor;
52
+ preview: string | null;
53
+ }) => Promise<ComposeReactEmailResult>;
54
+ //#endregion
55
+ //#region src/core/serializer/email-node.d.ts
56
+ type RendererComponent = (props: {
57
+ node: JSONContent;
58
+ style: React.CSSProperties;
59
+ children?: React.ReactNode;
60
+ }) => React.ReactNode;
61
+ interface EmailNodeConfig<Options, Storage> extends NodeConfig<Options, Storage> {
62
+ renderToReactEmail: RendererComponent;
63
+ }
64
+ type ConfigParameter<Options, Storage> = Partial<Omit<EmailNodeConfig<Options, Storage>, 'renderToReactEmail'>> & Pick<EmailNodeConfig<Options, Storage>, 'renderToReactEmail'> & ThisType<{
65
+ name: string;
66
+ options: Options;
67
+ storage: Storage;
68
+ editor: Editor;
69
+ type: NodeType;
70
+ parent: (...args: any[]) => any;
71
+ }>;
72
+ declare class EmailNode<Options = Record<string, never>, Storage = Record<string, never>> extends Node<Options, Storage> {
73
+ config: EmailNodeConfig<Options, Storage>;
74
+ constructor(config: ConfigParameter<Options, Storage>);
75
+ /**
76
+ * Create a new Node instance
77
+ * @param config - Node configuration object or a function that returns a configuration object
78
+ */
79
+ static create<O = Record<string, never>, S = Record<string, never>>(config: ConfigParameter<O, S> | (() => ConfigParameter<O, S>)): EmailNode<O, S>;
80
+ static from<O, S>(node: Node<O, S>, renderToReactEmail: RendererComponent): EmailNode<O, S>;
81
+ configure(options?: Partial<Options>): EmailNode<Options, Storage>;
82
+ extend<ExtendedOptions = Options, ExtendedStorage = Storage, ExtendedConfig extends NodeConfig<ExtendedOptions, ExtendedStorage> = EmailNodeConfig<ExtendedOptions, ExtendedStorage>>(extendedConfig?: (() => Partial<ExtendedConfig>) | (Partial<ExtendedConfig> & ThisType<{
83
+ name: string;
84
+ options: ExtendedOptions;
85
+ storage: ExtendedStorage;
86
+ editor: Editor;
87
+ type: NodeType;
88
+ }>)): EmailNode<ExtendedOptions, ExtendedStorage>;
89
+ }
90
+ //#endregion
91
+ //#region src/core/create-paste-handler.d.ts
92
+ type PasteHandler = (payload: string | File, view: EditorView) => boolean;
93
+ type UploadImageHandler = (file: File, view: EditorView, pos: number, preserveAttributes?: {
94
+ width?: string;
95
+ height?: string;
96
+ alignment?: string;
97
+ href?: string;
98
+ }) => void | Promise<void>;
99
+ //#endregion
100
+ //#region src/core/use-editor.d.ts
101
+ type Merge<A, B> = A & Omit<B, keyof A>;
102
+ declare function useEditor$1({
103
+ content,
104
+ extensions,
105
+ onUpdate,
106
+ onPaste,
107
+ onUploadImage,
108
+ onReady,
109
+ editable,
110
+ ...rest
111
+ }: Merge<{
112
+ content: Content;
113
+ extensions?: Extensions;
114
+ onUpdate?: (editor: Editor, transaction: {
115
+ getMeta: (key: string) => unknown;
116
+ }) => void;
117
+ onPaste?: PasteHandler;
118
+ onUploadImage?: UploadImageHandler;
119
+ onReady?: (editor: Editor | null) => void;
120
+ editable?: boolean;
121
+ }, UseEditorOptions>): {
122
+ editor: Editor;
123
+ isEditorEmpty: boolean;
124
+ extensions: Extensions;
125
+ contentError: Error | null;
126
+ isCollaborative: boolean;
127
+ };
128
+ //#endregion
129
+ export { composeReactEmail as a, EditorEventMap as c, editorEventBus as d, RendererComponent as i, EditorEventName as l, EmailNode as n, isDocumentVisuallyEmpty as o, EmailNodeConfig as r, EditorEventHandler as s, useEditor$1 as t, EditorEventSubscription as u };
130
+ //# sourceMappingURL=index-hbHRR7oB.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-hbHRR7oB.d.mts","names":[],"sources":["../src/core/event-bus.ts","../src/core/is-document-visually-empty.ts","../src/core/serializer/compose-react-email.tsx","../src/core/serializer/email-node.ts","../src/core/create-paste-handler.ts","../src/core/use-editor.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+
2
+ //#region src/utils/set-text-alignment.ts
3
+ function setTextAlignment(editor, alignment) {
4
+ const { from, to } = editor.state.selection;
5
+ const tr = editor.state.tr;
6
+ editor.state.doc.nodesBetween(from, to, (node, pos) => {
7
+ if (node.isTextblock) {
8
+ const prop = "align" in node.attrs ? "align" : "alignment";
9
+ tr.setNodeMarkup(pos, null, {
10
+ ...node.attrs,
11
+ [prop]: alignment
12
+ });
13
+ }
14
+ });
15
+ editor.view.dispatch(tr);
16
+ }
17
+
18
+ //#endregion
19
+ Object.defineProperty(exports, 'setTextAlignment', {
20
+ enumerable: true,
21
+ get: function () {
22
+ return setTextAlignment;
23
+ }
24
+ });
@@ -0,0 +1,19 @@
1
+ //#region src/utils/set-text-alignment.ts
2
+ function setTextAlignment(editor, alignment) {
3
+ const { from, to } = editor.state.selection;
4
+ const tr = editor.state.tr;
5
+ editor.state.doc.nodesBetween(from, to, (node, pos) => {
6
+ if (node.isTextblock) {
7
+ const prop = "align" in node.attrs ? "align" : "alignment";
8
+ tr.setNodeMarkup(pos, null, {
9
+ ...node.attrs,
10
+ [prop]: alignment
11
+ });
12
+ }
13
+ });
14
+ editor.view.dispatch(tr);
15
+ }
16
+
17
+ //#endregion
18
+ export { setTextAlignment as t };
19
+ //# sourceMappingURL=set-text-alignment-DZvgnbvz.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-text-alignment-DZvgnbvz.mjs","names":[],"sources":["../src/utils/set-text-alignment.ts"],"sourcesContent":["import type { Editor } from '@tiptap/core';\n\nexport function setTextAlignment(editor: Editor, alignment: string) {\n const { from, to } = editor.state.selection;\n const tr = editor.state.tr;\n editor.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock) {\n const prop = 'align' in node.attrs ? 'align' : 'alignment';\n tr.setNodeMarkup(pos, null, { ...node.attrs, [prop]: alignment });\n }\n });\n editor.view.dispatch(tr);\n}\n"],"mappings":";AAEA,SAAgB,iBAAiB,QAAgB,WAAmB;CAClE,MAAM,EAAE,MAAM,OAAO,OAAO,MAAM;CAClC,MAAM,KAAK,OAAO,MAAM;AACxB,QAAO,MAAM,IAAI,aAAa,MAAM,KAAK,MAAM,QAAQ;AACrD,MAAI,KAAK,aAAa;GACpB,MAAM,OAAO,WAAW,KAAK,QAAQ,UAAU;AAC/C,MAAG,cAAc,KAAK,MAAM;IAAE,GAAG,KAAK;KAAQ,OAAO;IAAW,CAAC;;GAEnE;AACF,QAAO,KAAK,SAAS,GAAG"}