@react-email/editor 0.0.0-experimental.2 → 0.0.0-experimental.20

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/package.json CHANGED
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "name": "@react-email/editor",
3
- "version": "0.0.0-experimental.2",
3
+ "version": "0.0.0-experimental.20",
4
4
  "description": "",
5
- "sideEffects": false,
5
+ "sideEffects": [
6
+ "**/*.css"
7
+ ],
6
8
  "main": "./dist/index.js",
7
9
  "module": "./dist/index.mjs",
8
10
  "types": "./dist/index.d.ts",
@@ -16,10 +18,16 @@
16
18
  "default": "./dist/index.mjs"
17
19
  },
18
20
  "require": {
19
- "types": "./dist/index.d.ts",
20
- "default": "./dist/index.js"
21
+ "types": "./dist/index.d.cts",
22
+ "default": "./dist/index.cjs"
21
23
  }
22
- }
24
+ },
25
+ "./styles/bubble-menu.css": "./dist/ui/bubble-menu/bubble-menu.css",
26
+ "./styles/link-bubble-menu.css": "./dist/ui/link-bubble-menu/link-bubble-menu.css",
27
+ "./styles/button-bubble-menu.css": "./dist/ui/button-bubble-menu/button-bubble-menu.css",
28
+ "./styles/image-bubble-menu.css": "./dist/ui/image-bubble-menu/image-bubble-menu.css",
29
+ "./styles/slash-command.css": "./dist/ui/slash-command/slash-command.css",
30
+ "./themes/default.css": "./dist/ui/themes/default.css"
23
31
  },
24
32
  "license": "MIT",
25
33
  "repository": {
@@ -35,24 +43,45 @@
35
43
  "node": ">=20.0.0"
36
44
  },
37
45
  "peerDependencies": {
46
+ "@radix-ui/react-popover": "^1.0.0",
47
+ "lucide-react": ">=0.300.0",
38
48
  "react": "^18.0 || ^19.0 || ^19.0.0-rc",
39
- "@react-email/components": "1.0.8"
49
+ "@react-email/components": "1.0.9"
40
50
  },
41
51
  "dependencies": {
42
- "@tiptap/core": "^3.10.7",
43
- "@tiptap/extension-code-block": "^3.10.7",
44
- "@tiptap/extension-heading": "^3.10.7",
45
- "@tiptap/extension-horizontal-rule": "^3.10.7",
46
- "@tiptap/extension-placeholder": "^3.10.7",
47
- "@tiptap/html": "^3.10.7",
48
- "@tiptap/pm": "^3.10.7",
49
- "@tiptap/react": "^3.10.7",
50
- "@tiptap/starter-kit": "^3.10.7",
52
+ "@tiptap/core": "^3.17.1",
53
+ "@tiptap/extension-blockquote": "^3.17.1",
54
+ "@tiptap/extension-bullet-list": "^3.17.1",
55
+ "@tiptap/extension-code": "^3.17.1",
56
+ "@tiptap/extension-code-block": "^3.17.1",
57
+ "@tiptap/extension-hard-break": "^3.17.1",
58
+ "@tiptap/extension-heading": "^3.17.1",
59
+ "@tiptap/extension-horizontal-rule": "^3.17.1",
60
+ "@tiptap/extension-italic": "^3.17.1",
61
+ "@tiptap/extension-link": "^3.17.1",
62
+ "@tiptap/extension-list-item": "^3.17.1",
63
+ "@tiptap/extension-mention": "^3.17.1",
64
+ "@tiptap/extension-ordered-list": "^3.17.1",
65
+ "@tiptap/extension-paragraph": "^3.17.1",
66
+ "@tiptap/extension-placeholder": "^3.17.1",
67
+ "@tiptap/extension-strike": "^3.17.1",
68
+ "@tiptap/extensions": "^3.17.1",
69
+ "@tiptap/html": "^3.17.1",
70
+ "@tiptap/pm": "^3.17.1",
71
+ "@tiptap/react": "^3.17.1",
72
+ "@tiptap/starter-kit": "^3.17.1",
73
+ "@tiptap/suggestion": "^3.17.1",
51
74
  "hast-util-from-html": "^2.0.3",
52
- "prismjs": "^1.30.0"
75
+ "prismjs": "^1.30.0",
76
+ "tippy.js": "^6.3.7"
53
77
  },
54
78
  "devDependencies": {
79
+ "@testing-library/react": "^16.0.0",
80
+ "@types/node": "22.19.7",
55
81
  "@types/prismjs": "1.26.5",
82
+ "postcss": "8.5.6",
83
+ "postcss-import": "16.1.1",
84
+ "tsx": "4.21.0",
56
85
  "typescript": "5.8.3",
57
86
  "tsconfig": "0.0.0"
58
87
  },
@@ -60,9 +89,11 @@
60
89
  "access": "public"
61
90
  },
62
91
  "scripts": {
63
- "build": "tsdown src/index.ts --format esm,cjs --dts --external react",
92
+ "build": "tsdown src/index.ts --format esm,cjs --dts --external react && pnpm run build:css",
93
+ "build:css": "tsx scripts/copy-css.ts",
64
94
  "build:watch": "tsdown src/index.ts --format esm,cjs --dts --external react --watch",
65
95
  "clean": "rm -rf dist",
96
+ "typecheck": "tsc --noEmit",
66
97
  "test": "vitest run",
67
98
  "test:watch": "vitest"
68
99
  }
package/dist/index.d.ts DELETED
@@ -1,274 +0,0 @@
1
- import * as _tiptap_core0 from "@tiptap/core";
2
- import { Editor, Extension, JSONContent, Mark, Node, NodeConfig as NodeConfig$1, NodeType, ParentConfig } from "@tiptap/core";
3
- import { Node as Node$1 } from "@tiptap/pm/model";
4
- import * as React$1 from "react";
5
- import { CodeBlockOptions } from "@tiptap/extension-code-block";
6
- import * as _tiptap_extension_placeholder0 from "@tiptap/extension-placeholder";
7
-
8
- //#region src/utils/types.d.ts
9
-
10
- type KnownThemeComponents = 'reset' | 'body' | 'container' | 'h1' | 'h2' | 'h3' | 'paragraph' | 'nestedList' | 'list' | 'listItem' | 'listParagraph' | 'blockquote' | 'codeBlock' | 'inlineCode' | 'codeTag' | 'link' | 'footer' | 'hr' | 'image' | 'button' | 'section';
11
- type CssJs = { [K in KnownThemeComponents]: React$1.CSSProperties & {
12
- align?: 'center' | 'left' | 'right';
13
- } };
14
- //#endregion
15
- //#region src/core/email-node.d.ts
16
- type RendererComponent = (props: {
17
- node: JSONContent;
18
- styles: CssJs;
19
- children?: React.ReactNode;
20
- }) => React.ReactNode;
21
- interface EmailNodeConfig<Options, Storage> extends NodeConfig$1<Options, Storage> {
22
- renderToReactEmail: RendererComponent;
23
- }
24
- type ConfigParameter<Options, Storage> = Partial<Omit<EmailNodeConfig<Options, Storage>, 'renderToReactEmail'>> & Pick<EmailNodeConfig<Options, Storage>, 'renderToReactEmail'>;
25
- declare class EmailNode<Options = Record<string, never>, Storage = Record<string, never>> extends Node<Options, Storage> {
26
- config: EmailNodeConfig<Options, Storage>;
27
- constructor(config: ConfigParameter<Options, Storage>);
28
- /**
29
- * Create a new Node instance
30
- * @param config - Node configuration object or a function that returns a configuration object
31
- */
32
- static create<O = Record<string, never>, S = Record<string, never>>(config: ConfigParameter<O, S> | (() => ConfigParameter<O, S>)): EmailNode<O, S>;
33
- static from<O, S>(node: Node<O, S>, renderToReactEmail: RendererComponent): EmailNode<O, S>;
34
- configure(options?: Partial<Options>): EmailNode<Options, Storage>;
35
- extend<ExtendedOptions = Options, ExtendedStorage = Storage, ExtendedConfig extends NodeConfig$1<ExtendedOptions, ExtendedStorage> = EmailNodeConfig<ExtendedOptions, ExtendedStorage>>(extendedConfig?: (() => Partial<ExtendedConfig>) | (Partial<ExtendedConfig> & ThisType<{
36
- name: string;
37
- options: ExtendedOptions;
38
- storage: ExtendedStorage;
39
- editor: Editor;
40
- type: NodeType;
41
- }>)): EmailNode<ExtendedOptions, ExtendedStorage>;
42
- }
43
- //#endregion
44
- //#region src/extensions/alignment-attribute.d.ts
45
- interface AlignmentOptions {
46
- types: string[];
47
- alignments: string[];
48
- }
49
- declare module '@tiptap/core' {
50
- interface Commands<ReturnType> {
51
- alignment: {
52
- /**
53
- * Set the text align attribute
54
- */
55
- setAlignment: (alignment: string) => ReturnType;
56
- };
57
- }
58
- }
59
- declare const AlignmentAttribute: Extension<AlignmentOptions, any>;
60
- //#endregion
61
- //#region src/extensions/body.d.ts
62
- interface BodyOptions {
63
- HTMLAttributes: Record<string, unknown>;
64
- }
65
- declare const Body: EmailNode<BodyOptions, Record<string, never>>;
66
- //#endregion
67
- //#region src/extensions/bold.d.ts
68
- interface BoldOptions {
69
- /**
70
- * HTML attributes to add to the bold element.
71
- * @default {}
72
- * @example { class: 'foo' }
73
- */
74
- HTMLAttributes: Record<string, unknown>;
75
- }
76
- declare module '@tiptap/core' {
77
- interface Commands<ReturnType> {
78
- bold: {
79
- /**
80
- * Set a bold mark
81
- */
82
- setBold: () => ReturnType;
83
- /**
84
- * Toggle a bold mark
85
- */
86
- toggleBold: () => ReturnType;
87
- /**
88
- * Unset a bold mark
89
- */
90
- unsetBold: () => ReturnType;
91
- };
92
- }
93
- }
94
- /**
95
- * This extension allows you to mark text as bold.
96
- * @see https://tiptap.dev/api/marks/bold
97
- */
98
- declare const Bold: Mark<BoldOptions, any>;
99
- //#endregion
100
- //#region src/extensions/button.d.ts
101
- interface EditorButtonOptions {
102
- HTMLAttributes: Record<string, unknown>;
103
- [key: string]: unknown;
104
- }
105
- declare module '@tiptap/core' {
106
- interface Commands<ReturnType> {
107
- button: {
108
- setButton: () => ReturnType;
109
- updateButton: (attributes: Record<string, unknown>) => ReturnType;
110
- };
111
- }
112
- }
113
- declare const Button: EmailNode<EditorButtonOptions, Record<string, never>>;
114
- //#endregion
115
- //#region src/extensions/class-attribute.d.ts
116
- interface ClassAttributeOptions {
117
- types: string[];
118
- class: string[];
119
- }
120
- declare module '@tiptap/core' {
121
- interface Commands<ReturnType> {
122
- class: {
123
- /**
124
- * Set the class attribute
125
- */
126
- setClass: (classList: string) => ReturnType;
127
- /**
128
- * Unset the class attribute
129
- */
130
- unsetClass: () => ReturnType;
131
- };
132
- }
133
- }
134
- declare const ClassAttribute: Extension<ClassAttributeOptions, any>;
135
- //#endregion
136
- //#region src/extensions/code-block.d.ts
137
- interface CodeBlockPrismOptions extends CodeBlockOptions {
138
- defaultLanguage: string;
139
- defaultTheme: string;
140
- }
141
- declare const CodeBlockPrism: EmailNode<CodeBlockPrismOptions, any>;
142
- //#endregion
143
- //#region src/extensions/div.d.ts
144
- interface DivOptions {
145
- HTMLAttributes: Record<string, unknown>;
146
- }
147
- declare const Div: EmailNode<DivOptions, Record<string, never>>;
148
- //#endregion
149
- //#region src/extensions/max-nesting.d.ts
150
- interface MaxNestingOptions {
151
- maxDepth: number;
152
- nodeTypes?: string[];
153
- }
154
- declare const MaxNesting: Extension<MaxNestingOptions, any>;
155
- //#endregion
156
- //#region src/extensions/placeholder.d.ts
157
- interface PlaceholderOptions {
158
- placeholder?: string | ((props: {
159
- node: Node$1;
160
- }) => string);
161
- includeChildren?: boolean;
162
- }
163
- declare const createPlaceholderExtension: (options?: Partial<PlaceholderOptions>) => _tiptap_core0.Extension<_tiptap_extension_placeholder0.PlaceholderOptions, any>;
164
- declare const placeholder: _tiptap_core0.Extension<_tiptap_extension_placeholder0.PlaceholderOptions, any>;
165
- //#endregion
166
- //#region src/extensions/preserved-style.d.ts
167
- declare const PreservedStyle: Mark<any, any>;
168
- /**
169
- * Processes styles when unlinking:
170
- * - Has background (button-like): preserve all styles
171
- * - No background: strip link-indicator styles (color, text-decoration), keep the rest
172
- */
173
- declare function processStylesForUnlink(styleString: string | null | undefined): string | null;
174
- //#endregion
175
- //#region src/extensions/section.d.ts
176
- interface SectionOptions {
177
- HTMLAttributes: Record<string, unknown>;
178
- [key: string]: unknown;
179
- }
180
- declare module '@tiptap/core' {
181
- interface Commands<ReturnType> {
182
- section: {
183
- insertSection: () => ReturnType;
184
- };
185
- }
186
- }
187
- declare const Section: EmailNode<SectionOptions, Record<string, never>>;
188
- //#endregion
189
- //#region src/extensions/style-attribute.d.ts
190
- interface StyleAttributeOptions {
191
- types: string[];
192
- style: string[];
193
- }
194
- declare module '@tiptap/core' {
195
- interface Commands<ReturnType> {
196
- textAlign: {
197
- /**
198
- * Set the style attribute
199
- */
200
- setStyle: (style: string) => ReturnType;
201
- /**
202
- * Unset the style attribute
203
- */
204
- unsetStyle: () => ReturnType;
205
- };
206
- }
207
- }
208
- declare const StyleAttribute: Extension<StyleAttributeOptions, any>;
209
- //#endregion
210
- //#region src/extensions/sup.d.ts
211
- interface SupOptions {
212
- /**
213
- * HTML attributes to add to the sup element.
214
- * @default {}
215
- * @example { class: 'foo' }
216
- */
217
- HTMLAttributes: Record<string, unknown>;
218
- }
219
- declare module '@tiptap/core' {
220
- interface Commands<ReturnType> {
221
- sup: {
222
- /**
223
- * Set a superscript mark
224
- */
225
- setSup: () => ReturnType;
226
- /**
227
- * Toggle a superscript mark
228
- */
229
- toggleSup: () => ReturnType;
230
- /**
231
- * Unset a superscript mark
232
- */
233
- unsetSup: () => ReturnType;
234
- };
235
- }
236
- }
237
- /**
238
- * This extension allows you to mark text as superscript.
239
- * @see https://tiptap.dev/api/marks/superscript
240
- */
241
- declare const Sup: Mark<SupOptions, any>;
242
- //#endregion
243
- //#region src/extensions/table.d.ts
244
- declare module '@tiptap/core' {
245
- interface NodeConfig<Options, Storage> {
246
- /**
247
- * A string or function to determine the role of the table.
248
- * @default 'table'
249
- * @example () => 'table'
250
- */
251
- tableRole?: string | ((this: {
252
- name: string;
253
- options: Options;
254
- storage: Storage;
255
- parent: ParentConfig<NodeConfig<Options>>['tableRole'];
256
- }) => string);
257
- }
258
- }
259
- interface TableOptions {
260
- HTMLAttributes: Record<string, unknown>;
261
- }
262
- declare const Table: EmailNode<TableOptions, Record<string, never>>;
263
- interface TableRowOptions extends Record<string, unknown> {
264
- HTMLAttributes?: Record<string, unknown>;
265
- }
266
- declare const TableRow: EmailNode<TableRowOptions, Record<string, never>>;
267
- interface TableCellOptions extends Record<string, unknown> {
268
- HTMLAttributes?: Record<string, unknown>;
269
- }
270
- declare const TableCell: EmailNode<TableCellOptions, Record<string, never>>;
271
- declare const TableHeader: Node<any, any>;
272
- //#endregion
273
- export { AlignmentAttribute, Body, BodyOptions, Bold, BoldOptions, Button, ClassAttribute, CodeBlockPrism, CodeBlockPrismOptions, Div, DivOptions, EmailNode, EmailNodeConfig, MaxNesting, PlaceholderOptions, PreservedStyle, RendererComponent, Section, StyleAttribute, Sup, SupOptions, Table, TableCell, TableHeader, TableOptions, TableRow, createPlaceholderExtension, placeholder, processStylesForUnlink };
274
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/utils/types.ts","../src/core/email-node.ts","../src/extensions/alignment-attribute.tsx","../src/extensions/body.tsx","../src/extensions/bold.ts","../src/extensions/button.tsx","../src/extensions/class-attribute.tsx","../src/extensions/code-block.tsx","../src/extensions/div.tsx","../src/extensions/max-nesting.ts","../src/extensions/placeholder.ts","../src/extensions/preserved-style.ts","../src/extensions/section.tsx","../src/extensions/style-attribute.tsx","../src/extensions/sup.ts","../src/extensions/table.tsx"],"sourcesContent":[],"mappings":"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"}