@react-email/editor 0.0.0-experimental.21 → 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.
- package/dist/columns-CUxUEHje.mjs +497 -0
- package/dist/columns-CUxUEHje.mjs.map +1 -0
- package/dist/columns-ZSaLdkg9.cjs +630 -0
- package/dist/core/index.cjs +8 -0
- package/dist/core/index.d.cts +2 -0
- package/dist/core/index.d.mts +2 -0
- package/dist/core/index.mjs +4 -0
- package/dist/core-BjmRceVw.mjs +1999 -0
- package/dist/core-BjmRceVw.mjs.map +1 -0
- package/dist/core-iuG1UrYN.cjs +2250 -0
- package/dist/extensions/index.cjs +46 -0
- package/dist/extensions/index.d.cts +389 -0
- package/dist/extensions/index.d.cts.map +1 -0
- package/dist/extensions/index.d.mts +389 -0
- package/dist/extensions/index.d.mts.map +1 -0
- package/dist/extensions/index.mjs +4 -0
- package/dist/index-CfslA7KT.d.cts +130 -0
- package/dist/index-CfslA7KT.d.cts.map +1 -0
- package/dist/index-hbHRR7oB.d.mts +130 -0
- package/dist/index-hbHRR7oB.d.mts.map +1 -0
- package/dist/set-text-alignment-Bx3bPteH.cjs +24 -0
- package/dist/set-text-alignment-DZvgnbvz.mjs +19 -0
- package/dist/set-text-alignment-DZvgnbvz.mjs.map +1 -0
- package/dist/ui/index.cjs +1646 -0
- package/dist/ui/index.d.cts +668 -0
- package/dist/ui/index.d.cts.map +1 -0
- package/dist/ui/index.d.mts +668 -0
- package/dist/ui/index.d.mts.map +1 -0
- package/dist/ui/index.mjs +1584 -0
- package/dist/ui/index.mjs.map +1 -0
- package/dist/ui/themes/default.css +20 -1
- package/dist/utils/index.cjs +3 -0
- package/dist/utils/index.d.cts +7 -0
- package/dist/utils/index.d.cts.map +1 -0
- package/dist/utils/index.d.mts +7 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +3 -0
- package/package.json +41 -13
- package/dist/index.cjs +0 -4205
- package/dist/index.d.cts +0 -1164
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts +0 -1164
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -4047
- 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"}
|