@daisychainapp/maily-to-core 0.0.25 → 0.1.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.
@@ -6,11 +6,27 @@ interface CommandProps {
6
6
  }
7
7
  type BlockItem = {
8
8
  title: string;
9
- description: string;
9
+ description?: string;
10
10
  searchTerms: string[];
11
- icon: JSX.Element;
12
- shouldBeHidden?: (editor: Editor) => boolean;
11
+ icon?: JSX.Element;
12
+ render?: (editor: Editor) => JSX.Element | null | true;
13
+ preview?: string | ((editor: Editor) => JSX.Element | null);
14
+ } & ({
13
15
  command: (options: CommandProps) => void;
16
+ id?: never;
17
+ commands?: never;
18
+ } | {
19
+ /**
20
+ * id to be used for the slash command query
21
+ * `headers.` will go inside the header subcommand
22
+ */
23
+ id: string;
24
+ command?: never;
25
+ commands: BlockItem[];
26
+ });
27
+ type BlockGroupItem = {
28
+ title: string;
29
+ commands: BlockItem[];
14
30
  };
15
31
 
16
32
  declare const button: BlockItem;
@@ -18,10 +34,11 @@ declare const linkCard: BlockItem;
18
34
 
19
35
  declare const image: BlockItem;
20
36
  declare const logo: BlockItem;
37
+ declare const inlineImage: BlockItem;
21
38
 
22
39
  declare const columns: BlockItem;
23
40
  declare const section: BlockItem;
24
- declare const forLoop: BlockItem;
41
+ declare const repeat: BlockItem;
25
42
  declare const spacer: BlockItem;
26
43
  declare const divider: BlockItem;
27
44
 
@@ -37,4 +54,4 @@ declare const blockquote: BlockItem;
37
54
  declare const footer: BlockItem;
38
55
  declare const clearLine: BlockItem;
39
56
 
40
- export { type BlockItem, blockquote, bulletList, button, clearLine, columns, divider, footer, forLoop, hardBreak, heading1, heading2, heading3, image, linkCard, logo, orderedList, section, spacer, text };
57
+ export { type BlockGroupItem, type BlockItem, blockquote, bulletList, button, clearLine, columns, divider, footer, hardBreak, heading1, heading2, heading3, image, inlineImage, linkCard, logo, orderedList, repeat, section, spacer, text };
@@ -6,11 +6,27 @@ interface CommandProps {
6
6
  }
7
7
  type BlockItem = {
8
8
  title: string;
9
- description: string;
9
+ description?: string;
10
10
  searchTerms: string[];
11
- icon: JSX.Element;
12
- shouldBeHidden?: (editor: Editor) => boolean;
11
+ icon?: JSX.Element;
12
+ render?: (editor: Editor) => JSX.Element | null | true;
13
+ preview?: string | ((editor: Editor) => JSX.Element | null);
14
+ } & ({
13
15
  command: (options: CommandProps) => void;
16
+ id?: never;
17
+ commands?: never;
18
+ } | {
19
+ /**
20
+ * id to be used for the slash command query
21
+ * `headers.` will go inside the header subcommand
22
+ */
23
+ id: string;
24
+ command?: never;
25
+ commands: BlockItem[];
26
+ });
27
+ type BlockGroupItem = {
28
+ title: string;
29
+ commands: BlockItem[];
14
30
  };
15
31
 
16
32
  declare const button: BlockItem;
@@ -18,10 +34,11 @@ declare const linkCard: BlockItem;
18
34
 
19
35
  declare const image: BlockItem;
20
36
  declare const logo: BlockItem;
37
+ declare const inlineImage: BlockItem;
21
38
 
22
39
  declare const columns: BlockItem;
23
40
  declare const section: BlockItem;
24
- declare const forLoop: BlockItem;
41
+ declare const repeat: BlockItem;
25
42
  declare const spacer: BlockItem;
26
43
  declare const divider: BlockItem;
27
44
 
@@ -37,4 +54,4 @@ declare const blockquote: BlockItem;
37
54
  declare const footer: BlockItem;
38
55
  declare const clearLine: BlockItem;
39
56
 
40
- export { type BlockItem, blockquote, bulletList, button, clearLine, columns, divider, footer, forLoop, hardBreak, heading1, heading2, heading3, image, linkCard, logo, orderedList, section, spacer, text };
57
+ export { type BlockGroupItem, type BlockItem, blockquote, bulletList, button, clearLine, columns, divider, footer, hardBreak, heading1, heading2, heading3, image, inlineImage, linkCard, logo, orderedList, repeat, section, spacer, text };
@@ -27,15 +27,16 @@ __export(blocks_exports, {
27
27
  columns: () => columns,
28
28
  divider: () => divider,
29
29
  footer: () => footer,
30
- forLoop: () => forLoop,
31
30
  hardBreak: () => hardBreak,
32
31
  heading1: () => heading1,
33
32
  heading2: () => heading2,
34
33
  heading3: () => heading3,
35
34
  image: () => image,
35
+ inlineImage: () => inlineImage,
36
36
  linkCard: () => linkCard,
37
37
  logo: () => logo,
38
38
  orderedList: () => orderedList,
39
+ repeat: () => repeat,
39
40
  section: () => section,
40
41
  spacer: () => spacer,
41
42
  text: () => text
@@ -61,10 +62,16 @@ var linkCard = {
61
62
  icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowUpRightSquare, { className: "mly-h-4 mly-w-4" }),
62
63
  command: ({ editor, range }) => {
63
64
  editor.chain().focus().deleteRange(range).setLinkCard().run();
65
+ },
66
+ render: (editor) => {
67
+ return editor.extensionManager.extensions.findIndex(
68
+ (ext) => ext.name === "linkCard"
69
+ ) === -1 ? null : true;
64
70
  }
65
71
  };
66
72
 
67
73
  // src/blocks/image.tsx
74
+ var import_state = require("@tiptap/pm/state");
68
75
  var import_lucide_react2 = require("lucide-react");
69
76
  var import_jsx_runtime2 = require("react/jsx-runtime");
70
77
  var image = {
@@ -85,6 +92,31 @@ var logo = {
85
92
  editor.chain().focus().deleteRange(range).setLogoImage({ src: "" }).run();
86
93
  }
87
94
  };
95
+ var inlineImage = {
96
+ title: "Inline Image",
97
+ description: "Inline image",
98
+ searchTerms: ["image", "inline"],
99
+ icon: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react2.ImageIcon, { className: "mly-h-4 mly-w-4" }),
100
+ command: ({ editor, range }) => {
101
+ editor.chain().focus().deleteRange(range).setInlineImage({
102
+ src: ""
103
+ }).command((props) => {
104
+ const { tr, state, view, editor: editor2 } = props;
105
+ const { from } = range;
106
+ const node = state.doc.nodeAt(from);
107
+ if (!node) {
108
+ return false;
109
+ }
110
+ const selection = import_state.TextSelection.create(
111
+ tr.doc,
112
+ from,
113
+ from + node.nodeSize
114
+ );
115
+ tr.setSelection(selection);
116
+ return true;
117
+ }).run();
118
+ }
119
+ };
88
120
 
89
121
  // src/blocks/layout.tsx
90
122
  var import_lucide_react3 = require("lucide-react");
@@ -94,9 +126,6 @@ var columns = {
94
126
  description: "Add columns to email.",
95
127
  searchTerms: ["layout", "columns"],
96
128
  icon: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react3.ColumnsIcon, { className: "mly-h-4 mly-w-4" }),
97
- shouldBeHidden: (editor) => {
98
- return editor.isActive("columns");
99
- },
100
129
  command: ({ editor, range }) => {
101
130
  editor.chain().focus().deleteRange(range).setColumns().focus(editor.state.selection.head - 2).run();
102
131
  }
@@ -110,16 +139,13 @@ var section = {
110
139
  editor.chain().focus().deleteRange(range).setSection().run();
111
140
  }
112
141
  };
113
- var forLoop = {
114
- title: "For",
142
+ var repeat = {
143
+ title: "Repeat",
115
144
  description: "Loop over an array of items.",
116
- searchTerms: ["for", "loop"],
145
+ searchTerms: ["repeat", "for", "loop"],
117
146
  icon: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react3.Repeat2, { className: "mly-h-4 mly-w-4" }),
118
- shouldBeHidden: (editor) => {
119
- return editor.isActive("for");
120
- },
121
147
  command: ({ editor, range }) => {
122
- editor.chain().focus().deleteRange(range).setFor().run();
148
+ editor.chain().focus().deleteRange(range).setRepeat().run();
123
149
  }
124
150
  };
125
151
  var spacer = {
@@ -247,15 +273,16 @@ var clearLine = {
247
273
  columns,
248
274
  divider,
249
275
  footer,
250
- forLoop,
251
276
  hardBreak,
252
277
  heading1,
253
278
  heading2,
254
279
  heading3,
255
280
  image,
281
+ inlineImage,
256
282
  linkCard,
257
283
  logo,
258
284
  orderedList,
285
+ repeat,
259
286
  section,
260
287
  spacer,
261
288
  text
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/blocks.ts","../../src/blocks/button.tsx","../../src/blocks/image.tsx","../../src/blocks/layout.tsx","../../src/blocks/list.tsx","../../src/blocks/typography.tsx"],"sourcesContent":["export * from './blocks/button';\nexport * from './blocks/image';\nexport * from './blocks/layout';\nexport * from './blocks/list';\nexport * from './blocks/typography';\nexport * from './blocks/types';\n","import type { BlockItem } from './types';\nimport { MousePointer, ArrowUpRightSquare } from 'lucide-react';\n\nexport const button: BlockItem = {\n title: 'Button',\n description: 'Add a call to action button to email.',\n searchTerms: ['link', 'button', 'cta'],\n icon: <MousePointer className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setButton().run();\n },\n};\n\nexport const linkCard: BlockItem = {\n title: 'Link Card',\n description: 'Add a link card to email.',\n searchTerms: ['link', 'button', 'image'],\n icon: <ArrowUpRightSquare className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLinkCard().run();\n },\n};\n","import type { BlockItem } from './types';\nimport { ImageIcon } from 'lucide-react';\n\nexport const image: BlockItem = {\n title: 'Image',\n description: 'Full width image',\n searchTerms: ['image'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setImage({ src: '' }).run();\n },\n};\n\nexport const logo: BlockItem = {\n title: 'Logo',\n description: 'Add your brand logo',\n searchTerms: ['image', 'logo'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLogoImage({ src: '' }).run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n ColumnsIcon,\n Repeat2,\n MoveVertical,\n RectangleHorizontal,\n Minus,\n} from 'lucide-react';\n\nexport const columns: BlockItem = {\n title: 'Columns',\n description: 'Add columns to email.',\n searchTerms: ['layout', 'columns'],\n icon: <ColumnsIcon className=\"mly-h-4 mly-w-4\" />,\n shouldBeHidden: (editor) => {\n return editor.isActive('columns');\n },\n command: ({ editor, range }) => {\n // @ts-ignore\n editor\n .chain()\n .focus()\n .deleteRange(range)\n // @ts-ignore\n .setColumns()\n .focus(editor.state.selection.head - 2)\n .run();\n },\n};\n\nexport const section: BlockItem = {\n title: 'Section',\n description: 'Add a section to email.',\n searchTerms: ['layout', 'section'],\n icon: <RectangleHorizontal className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSection().run();\n },\n};\n\nexport const forLoop: BlockItem = {\n title: 'For',\n description: 'Loop over an array of items.',\n searchTerms: ['for', 'loop'],\n icon: <Repeat2 className=\"mly-h-4 mly-w-4\" />,\n shouldBeHidden: (editor) => {\n return editor.isActive('for');\n },\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setFor().run();\n },\n};\n\nexport const spacer: BlockItem = {\n title: 'Spacer',\n description: 'Add space between blocks.',\n searchTerms: ['space', 'gap', 'divider'],\n icon: <MoveVertical className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSpacer({ height: 'sm' }).run();\n },\n};\n\nexport const divider: BlockItem = {\n title: 'Divider',\n description: 'Add a horizontal divider.',\n searchTerms: ['divider', 'line'],\n icon: <Minus className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHorizontalRule().run();\n },\n};\n","import type { BlockItem } from './types';\nimport { List, ListOrdered } from 'lucide-react';\n\nexport const bulletList: BlockItem = {\n title: 'Bullet List',\n description: 'Create a simple bullet list.',\n searchTerms: ['unordered', 'point'],\n icon: <List className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBulletList().run();\n },\n};\n\nexport const orderedList: BlockItem = {\n title: 'Numbered List',\n description: 'Create a list with numbering.',\n searchTerms: ['ordered'],\n icon: <ListOrdered className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleOrderedList().run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n Text,\n Heading1,\n Heading2,\n Heading3,\n DivideIcon,\n TextQuote,\n FootprintsIcon,\n EraserIcon,\n} from 'lucide-react';\n\nexport const text: BlockItem = {\n title: 'Text',\n description: 'Just start typing with plain text.',\n searchTerms: ['p', 'paragraph'],\n icon: <Text className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .toggleNode('paragraph', 'paragraph')\n .run();\n },\n};\n\nexport const heading1: BlockItem = {\n title: 'Heading 1',\n description: 'Big heading.',\n searchTerms: ['title', 'big', 'large'],\n icon: <Heading1 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 1 })\n .run();\n },\n};\n\nexport const heading2: BlockItem = {\n title: 'Heading 2',\n description: 'Medium heading.',\n searchTerms: ['subtitle', 'medium'],\n icon: <Heading2 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 2 })\n .run();\n },\n};\n\nexport const heading3: BlockItem = {\n title: 'Heading 3',\n description: 'Small heading.',\n searchTerms: ['subtitle', 'small'],\n icon: <Heading3 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 3 })\n .run();\n },\n};\n\nexport const hardBreak: BlockItem = {\n title: 'Hard Break',\n description: 'Add a break between lines.',\n searchTerms: ['break', 'line'],\n icon: <DivideIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHardBreak().run();\n },\n};\n\nexport const blockquote: BlockItem = {\n title: 'Blockquote',\n description: 'Add blockquote.',\n searchTerms: ['quote', 'blockquote'],\n icon: <TextQuote className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBlockquote().run();\n },\n};\n\nexport const footer: BlockItem = {\n title: 'Footer',\n description: 'Add a footer text to email.',\n searchTerms: ['footer', 'text'],\n icon: <FootprintsIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setFooter().run();\n },\n};\n\nexport const clearLine: BlockItem = {\n title: 'Clear Line',\n description: 'Clear the current line.',\n searchTerms: ['clear', 'line'],\n icon: <EraserIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().selectParentNode().deleteSelection().run();\n },\n};\n"],"mappings":"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","names":["import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/blocks.ts","../../src/blocks/button.tsx","../../src/blocks/image.tsx","../../src/blocks/layout.tsx","../../src/blocks/list.tsx","../../src/blocks/typography.tsx"],"sourcesContent":["export * from './blocks/button';\nexport * from './blocks/image';\nexport * from './blocks/layout';\nexport * from './blocks/list';\nexport * from './blocks/typography';\nexport * from './blocks/types';\n","import type { BlockItem } from './types';\nimport { MousePointer, ArrowUpRightSquare } from 'lucide-react';\n\nexport const button: BlockItem = {\n title: 'Button',\n description: 'Add a call to action button to email.',\n searchTerms: ['link', 'button', 'cta'],\n icon: <MousePointer className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setButton().run();\n },\n};\n\nexport const linkCard: BlockItem = {\n title: 'Link Card',\n description: 'Add a link card to email.',\n searchTerms: ['link', 'button', 'image'],\n icon: <ArrowUpRightSquare className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLinkCard().run();\n },\n render: (editor) => {\n return editor.extensionManager.extensions.findIndex(\n (ext) => ext.name === 'linkCard'\n ) === -1\n ? null\n : true;\n },\n};\n","import { NodeSelection, Selection, TextSelection } from '@tiptap/pm/state';\nimport type { BlockItem } from './types';\nimport { ImageIcon } from 'lucide-react';\n\nexport const image: BlockItem = {\n title: 'Image',\n description: 'Full width image',\n searchTerms: ['image'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setImage({ src: '' }).run();\n },\n};\n\nexport const logo: BlockItem = {\n title: 'Logo',\n description: 'Add your brand logo',\n searchTerms: ['image', 'logo'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLogoImage({ src: '' }).run();\n },\n};\n\nexport const inlineImage: BlockItem = {\n title: 'Inline Image',\n description: 'Inline image',\n searchTerms: ['image', 'inline'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor\n .chain()\n .focus()\n .deleteRange(range)\n // @ts-ignore\n .setInlineImage({\n src: '',\n })\n // @ts-ignore\n .command((props) => {\n const { tr, state, view, editor } = props;\n const { from } = range;\n\n const node = state.doc.nodeAt(from);\n if (!node) {\n return false;\n }\n\n const selection = TextSelection.create(\n tr.doc,\n from,\n from + node.nodeSize\n );\n tr.setSelection(selection);\n return true;\n })\n .run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n ColumnsIcon,\n Repeat2,\n MoveVertical,\n RectangleHorizontal,\n Minus,\n} from 'lucide-react';\n\nexport const columns: BlockItem = {\n title: 'Columns',\n description: 'Add columns to email.',\n searchTerms: ['layout', 'columns'],\n icon: <ColumnsIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor\n .chain()\n .focus()\n .deleteRange(range)\n // @ts-ignore\n .setColumns()\n .focus(editor.state.selection.head - 2)\n .run();\n },\n};\n\nexport const section: BlockItem = {\n title: 'Section',\n description: 'Add a section to email.',\n searchTerms: ['layout', 'section'],\n icon: <RectangleHorizontal className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSection().run();\n },\n};\n\nexport const repeat: BlockItem = {\n title: 'Repeat',\n description: 'Loop over an array of items.',\n searchTerms: ['repeat', 'for', 'loop'],\n icon: <Repeat2 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setRepeat().run();\n },\n};\n\nexport const spacer: BlockItem = {\n title: 'Spacer',\n description: 'Add space between blocks.',\n searchTerms: ['space', 'gap', 'divider'],\n icon: <MoveVertical className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSpacer({ height: 'sm' }).run();\n },\n};\n\nexport const divider: BlockItem = {\n title: 'Divider',\n description: 'Add a horizontal divider.',\n searchTerms: ['divider', 'line'],\n icon: <Minus className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHorizontalRule().run();\n },\n};\n","import type { BlockItem } from './types';\nimport { List, ListOrdered } from 'lucide-react';\n\nexport const bulletList: BlockItem = {\n title: 'Bullet List',\n description: 'Create a simple bullet list.',\n searchTerms: ['unordered', 'point'],\n icon: <List className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBulletList().run();\n },\n};\n\nexport const orderedList: BlockItem = {\n title: 'Numbered List',\n description: 'Create a list with numbering.',\n searchTerms: ['ordered'],\n icon: <ListOrdered className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleOrderedList().run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n Text,\n Heading1,\n Heading2,\n Heading3,\n DivideIcon,\n TextQuote,\n FootprintsIcon,\n EraserIcon,\n} from 'lucide-react';\n\nexport const text: BlockItem = {\n title: 'Text',\n description: 'Just start typing with plain text.',\n searchTerms: ['p', 'paragraph'],\n icon: <Text className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .toggleNode('paragraph', 'paragraph')\n .run();\n },\n};\n\nexport const heading1: BlockItem = {\n title: 'Heading 1',\n description: 'Big heading.',\n searchTerms: ['title', 'big', 'large'],\n icon: <Heading1 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 1 })\n .run();\n },\n};\n\nexport const heading2: BlockItem = {\n title: 'Heading 2',\n description: 'Medium heading.',\n searchTerms: ['subtitle', 'medium'],\n icon: <Heading2 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 2 })\n .run();\n },\n};\n\nexport const heading3: BlockItem = {\n title: 'Heading 3',\n description: 'Small heading.',\n searchTerms: ['subtitle', 'small'],\n icon: <Heading3 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 3 })\n .run();\n },\n};\n\nexport const hardBreak: BlockItem = {\n title: 'Hard Break',\n description: 'Add a break between lines.',\n searchTerms: ['break', 'line'],\n icon: <DivideIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHardBreak().run();\n },\n};\n\nexport const blockquote: BlockItem = {\n title: 'Blockquote',\n description: 'Add blockquote.',\n searchTerms: ['quote', 'blockquote'],\n icon: <TextQuote className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBlockquote().run();\n },\n};\n\nexport const footer: BlockItem = {\n title: 'Footer',\n description: 'Add a footer text to email.',\n searchTerms: ['footer', 'text'],\n icon: <FootprintsIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setFooter().run();\n },\n};\n\nexport const clearLine: BlockItem = {\n title: 'Clear Line',\n description: 'Clear the current line.',\n searchTerms: ['clear', 'line'],\n icon: <EraserIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().selectParentNode().deleteSelection().run();\n },\n};\n"],"mappings":"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","names":["import_lucide_react","import_jsx_runtime","editor","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime","import_lucide_react","import_jsx_runtime"]}
@@ -17,10 +17,16 @@ var linkCard = {
17
17
  icon: /* @__PURE__ */ jsx(ArrowUpRightSquare, { className: "mly-h-4 mly-w-4" }),
18
18
  command: ({ editor, range }) => {
19
19
  editor.chain().focus().deleteRange(range).setLinkCard().run();
20
+ },
21
+ render: (editor) => {
22
+ return editor.extensionManager.extensions.findIndex(
23
+ (ext) => ext.name === "linkCard"
24
+ ) === -1 ? null : true;
20
25
  }
21
26
  };
22
27
 
23
28
  // src/blocks/image.tsx
29
+ import { TextSelection } from "@tiptap/pm/state";
24
30
  import { ImageIcon } from "lucide-react";
25
31
  import { jsx as jsx2 } from "react/jsx-runtime";
26
32
  var image = {
@@ -41,6 +47,31 @@ var logo = {
41
47
  editor.chain().focus().deleteRange(range).setLogoImage({ src: "" }).run();
42
48
  }
43
49
  };
50
+ var inlineImage = {
51
+ title: "Inline Image",
52
+ description: "Inline image",
53
+ searchTerms: ["image", "inline"],
54
+ icon: /* @__PURE__ */ jsx2(ImageIcon, { className: "mly-h-4 mly-w-4" }),
55
+ command: ({ editor, range }) => {
56
+ editor.chain().focus().deleteRange(range).setInlineImage({
57
+ src: ""
58
+ }).command((props) => {
59
+ const { tr, state, view, editor: editor2 } = props;
60
+ const { from } = range;
61
+ const node = state.doc.nodeAt(from);
62
+ if (!node) {
63
+ return false;
64
+ }
65
+ const selection = TextSelection.create(
66
+ tr.doc,
67
+ from,
68
+ from + node.nodeSize
69
+ );
70
+ tr.setSelection(selection);
71
+ return true;
72
+ }).run();
73
+ }
74
+ };
44
75
 
45
76
  // src/blocks/layout.tsx
46
77
  import {
@@ -56,9 +87,6 @@ var columns = {
56
87
  description: "Add columns to email.",
57
88
  searchTerms: ["layout", "columns"],
58
89
  icon: /* @__PURE__ */ jsx3(ColumnsIcon, { className: "mly-h-4 mly-w-4" }),
59
- shouldBeHidden: (editor) => {
60
- return editor.isActive("columns");
61
- },
62
90
  command: ({ editor, range }) => {
63
91
  editor.chain().focus().deleteRange(range).setColumns().focus(editor.state.selection.head - 2).run();
64
92
  }
@@ -72,16 +100,13 @@ var section = {
72
100
  editor.chain().focus().deleteRange(range).setSection().run();
73
101
  }
74
102
  };
75
- var forLoop = {
76
- title: "For",
103
+ var repeat = {
104
+ title: "Repeat",
77
105
  description: "Loop over an array of items.",
78
- searchTerms: ["for", "loop"],
106
+ searchTerms: ["repeat", "for", "loop"],
79
107
  icon: /* @__PURE__ */ jsx3(Repeat2, { className: "mly-h-4 mly-w-4" }),
80
- shouldBeHidden: (editor) => {
81
- return editor.isActive("for");
82
- },
83
108
  command: ({ editor, range }) => {
84
- editor.chain().focus().deleteRange(range).setFor().run();
109
+ editor.chain().focus().deleteRange(range).setRepeat().run();
85
110
  }
86
111
  };
87
112
  var spacer = {
@@ -217,15 +242,16 @@ export {
217
242
  columns,
218
243
  divider,
219
244
  footer,
220
- forLoop,
221
245
  hardBreak,
222
246
  heading1,
223
247
  heading2,
224
248
  heading3,
225
249
  image,
250
+ inlineImage,
226
251
  linkCard,
227
252
  logo,
228
253
  orderedList,
254
+ repeat,
229
255
  section,
230
256
  spacer,
231
257
  text
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/blocks/button.tsx","../../src/blocks/image.tsx","../../src/blocks/layout.tsx","../../src/blocks/list.tsx","../../src/blocks/typography.tsx"],"sourcesContent":["import type { BlockItem } from './types';\nimport { MousePointer, ArrowUpRightSquare } from 'lucide-react';\n\nexport const button: BlockItem = {\n title: 'Button',\n description: 'Add a call to action button to email.',\n searchTerms: ['link', 'button', 'cta'],\n icon: <MousePointer className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setButton().run();\n },\n};\n\nexport const linkCard: BlockItem = {\n title: 'Link Card',\n description: 'Add a link card to email.',\n searchTerms: ['link', 'button', 'image'],\n icon: <ArrowUpRightSquare className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLinkCard().run();\n },\n};\n","import type { BlockItem } from './types';\nimport { ImageIcon } from 'lucide-react';\n\nexport const image: BlockItem = {\n title: 'Image',\n description: 'Full width image',\n searchTerms: ['image'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setImage({ src: '' }).run();\n },\n};\n\nexport const logo: BlockItem = {\n title: 'Logo',\n description: 'Add your brand logo',\n searchTerms: ['image', 'logo'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLogoImage({ src: '' }).run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n ColumnsIcon,\n Repeat2,\n MoveVertical,\n RectangleHorizontal,\n Minus,\n} from 'lucide-react';\n\nexport const columns: BlockItem = {\n title: 'Columns',\n description: 'Add columns to email.',\n searchTerms: ['layout', 'columns'],\n icon: <ColumnsIcon className=\"mly-h-4 mly-w-4\" />,\n shouldBeHidden: (editor) => {\n return editor.isActive('columns');\n },\n command: ({ editor, range }) => {\n // @ts-ignore\n editor\n .chain()\n .focus()\n .deleteRange(range)\n // @ts-ignore\n .setColumns()\n .focus(editor.state.selection.head - 2)\n .run();\n },\n};\n\nexport const section: BlockItem = {\n title: 'Section',\n description: 'Add a section to email.',\n searchTerms: ['layout', 'section'],\n icon: <RectangleHorizontal className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSection().run();\n },\n};\n\nexport const forLoop: BlockItem = {\n title: 'For',\n description: 'Loop over an array of items.',\n searchTerms: ['for', 'loop'],\n icon: <Repeat2 className=\"mly-h-4 mly-w-4\" />,\n shouldBeHidden: (editor) => {\n return editor.isActive('for');\n },\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setFor().run();\n },\n};\n\nexport const spacer: BlockItem = {\n title: 'Spacer',\n description: 'Add space between blocks.',\n searchTerms: ['space', 'gap', 'divider'],\n icon: <MoveVertical className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSpacer({ height: 'sm' }).run();\n },\n};\n\nexport const divider: BlockItem = {\n title: 'Divider',\n description: 'Add a horizontal divider.',\n searchTerms: ['divider', 'line'],\n icon: <Minus className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHorizontalRule().run();\n },\n};\n","import type { BlockItem } from './types';\nimport { List, ListOrdered } from 'lucide-react';\n\nexport const bulletList: BlockItem = {\n title: 'Bullet List',\n description: 'Create a simple bullet list.',\n searchTerms: ['unordered', 'point'],\n icon: <List className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBulletList().run();\n },\n};\n\nexport const orderedList: BlockItem = {\n title: 'Numbered List',\n description: 'Create a list with numbering.',\n searchTerms: ['ordered'],\n icon: <ListOrdered className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleOrderedList().run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n Text,\n Heading1,\n Heading2,\n Heading3,\n DivideIcon,\n TextQuote,\n FootprintsIcon,\n EraserIcon,\n} from 'lucide-react';\n\nexport const text: BlockItem = {\n title: 'Text',\n description: 'Just start typing with plain text.',\n searchTerms: ['p', 'paragraph'],\n icon: <Text className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .toggleNode('paragraph', 'paragraph')\n .run();\n },\n};\n\nexport const heading1: BlockItem = {\n title: 'Heading 1',\n description: 'Big heading.',\n searchTerms: ['title', 'big', 'large'],\n icon: <Heading1 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 1 })\n .run();\n },\n};\n\nexport const heading2: BlockItem = {\n title: 'Heading 2',\n description: 'Medium heading.',\n searchTerms: ['subtitle', 'medium'],\n icon: <Heading2 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 2 })\n .run();\n },\n};\n\nexport const heading3: BlockItem = {\n title: 'Heading 3',\n description: 'Small heading.',\n searchTerms: ['subtitle', 'small'],\n icon: <Heading3 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 3 })\n .run();\n },\n};\n\nexport const hardBreak: BlockItem = {\n title: 'Hard Break',\n description: 'Add a break between lines.',\n searchTerms: ['break', 'line'],\n icon: <DivideIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHardBreak().run();\n },\n};\n\nexport const blockquote: BlockItem = {\n title: 'Blockquote',\n description: 'Add blockquote.',\n searchTerms: ['quote', 'blockquote'],\n icon: <TextQuote className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBlockquote().run();\n },\n};\n\nexport const footer: BlockItem = {\n title: 'Footer',\n description: 'Add a footer text to email.',\n searchTerms: ['footer', 'text'],\n icon: <FootprintsIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setFooter().run();\n },\n};\n\nexport const clearLine: BlockItem = {\n title: 'Clear Line',\n description: 'Clear the current line.',\n searchTerms: ['clear', 'line'],\n icon: <EraserIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().selectParentNode().deleteSelection().run();\n },\n};\n"],"mappings":"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","names":["jsx","jsx","jsx","jsx"]}
1
+ {"version":3,"sources":["../../src/blocks/button.tsx","../../src/blocks/image.tsx","../../src/blocks/layout.tsx","../../src/blocks/list.tsx","../../src/blocks/typography.tsx"],"sourcesContent":["import type { BlockItem } from './types';\nimport { MousePointer, ArrowUpRightSquare } from 'lucide-react';\n\nexport const button: BlockItem = {\n title: 'Button',\n description: 'Add a call to action button to email.',\n searchTerms: ['link', 'button', 'cta'],\n icon: <MousePointer className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setButton().run();\n },\n};\n\nexport const linkCard: BlockItem = {\n title: 'Link Card',\n description: 'Add a link card to email.',\n searchTerms: ['link', 'button', 'image'],\n icon: <ArrowUpRightSquare className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLinkCard().run();\n },\n render: (editor) => {\n return editor.extensionManager.extensions.findIndex(\n (ext) => ext.name === 'linkCard'\n ) === -1\n ? null\n : true;\n },\n};\n","import { NodeSelection, Selection, TextSelection } from '@tiptap/pm/state';\nimport type { BlockItem } from './types';\nimport { ImageIcon } from 'lucide-react';\n\nexport const image: BlockItem = {\n title: 'Image',\n description: 'Full width image',\n searchTerms: ['image'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setImage({ src: '' }).run();\n },\n};\n\nexport const logo: BlockItem = {\n title: 'Logo',\n description: 'Add your brand logo',\n searchTerms: ['image', 'logo'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setLogoImage({ src: '' }).run();\n },\n};\n\nexport const inlineImage: BlockItem = {\n title: 'Inline Image',\n description: 'Inline image',\n searchTerms: ['image', 'inline'],\n icon: <ImageIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor\n .chain()\n .focus()\n .deleteRange(range)\n // @ts-ignore\n .setInlineImage({\n src: '',\n })\n // @ts-ignore\n .command((props) => {\n const { tr, state, view, editor } = props;\n const { from } = range;\n\n const node = state.doc.nodeAt(from);\n if (!node) {\n return false;\n }\n\n const selection = TextSelection.create(\n tr.doc,\n from,\n from + node.nodeSize\n );\n tr.setSelection(selection);\n return true;\n })\n .run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n ColumnsIcon,\n Repeat2,\n MoveVertical,\n RectangleHorizontal,\n Minus,\n} from 'lucide-react';\n\nexport const columns: BlockItem = {\n title: 'Columns',\n description: 'Add columns to email.',\n searchTerms: ['layout', 'columns'],\n icon: <ColumnsIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor\n .chain()\n .focus()\n .deleteRange(range)\n // @ts-ignore\n .setColumns()\n .focus(editor.state.selection.head - 2)\n .run();\n },\n};\n\nexport const section: BlockItem = {\n title: 'Section',\n description: 'Add a section to email.',\n searchTerms: ['layout', 'section'],\n icon: <RectangleHorizontal className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSection().run();\n },\n};\n\nexport const repeat: BlockItem = {\n title: 'Repeat',\n description: 'Loop over an array of items.',\n searchTerms: ['repeat', 'for', 'loop'],\n icon: <Repeat2 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setRepeat().run();\n },\n};\n\nexport const spacer: BlockItem = {\n title: 'Spacer',\n description: 'Add space between blocks.',\n searchTerms: ['space', 'gap', 'divider'],\n icon: <MoveVertical className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setSpacer({ height: 'sm' }).run();\n },\n};\n\nexport const divider: BlockItem = {\n title: 'Divider',\n description: 'Add a horizontal divider.',\n searchTerms: ['divider', 'line'],\n icon: <Minus className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHorizontalRule().run();\n },\n};\n","import type { BlockItem } from './types';\nimport { List, ListOrdered } from 'lucide-react';\n\nexport const bulletList: BlockItem = {\n title: 'Bullet List',\n description: 'Create a simple bullet list.',\n searchTerms: ['unordered', 'point'],\n icon: <List className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBulletList().run();\n },\n};\n\nexport const orderedList: BlockItem = {\n title: 'Numbered List',\n description: 'Create a list with numbering.',\n searchTerms: ['ordered'],\n icon: <ListOrdered className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleOrderedList().run();\n },\n};\n","import type { BlockItem } from './types';\nimport {\n Text,\n Heading1,\n Heading2,\n Heading3,\n DivideIcon,\n TextQuote,\n FootprintsIcon,\n EraserIcon,\n} from 'lucide-react';\n\nexport const text: BlockItem = {\n title: 'Text',\n description: 'Just start typing with plain text.',\n searchTerms: ['p', 'paragraph'],\n icon: <Text className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .toggleNode('paragraph', 'paragraph')\n .run();\n },\n};\n\nexport const heading1: BlockItem = {\n title: 'Heading 1',\n description: 'Big heading.',\n searchTerms: ['title', 'big', 'large'],\n icon: <Heading1 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 1 })\n .run();\n },\n};\n\nexport const heading2: BlockItem = {\n title: 'Heading 2',\n description: 'Medium heading.',\n searchTerms: ['subtitle', 'medium'],\n icon: <Heading2 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 2 })\n .run();\n },\n};\n\nexport const heading3: BlockItem = {\n title: 'Heading 3',\n description: 'Small heading.',\n searchTerms: ['subtitle', 'small'],\n icon: <Heading3 className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode('heading', { level: 3 })\n .run();\n },\n};\n\nexport const hardBreak: BlockItem = {\n title: 'Hard Break',\n description: 'Add a break between lines.',\n searchTerms: ['break', 'line'],\n icon: <DivideIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setHardBreak().run();\n },\n};\n\nexport const blockquote: BlockItem = {\n title: 'Blockquote',\n description: 'Add blockquote.',\n searchTerms: ['quote', 'blockquote'],\n icon: <TextQuote className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).toggleBlockquote().run();\n },\n};\n\nexport const footer: BlockItem = {\n title: 'Footer',\n description: 'Add a footer text to email.',\n searchTerms: ['footer', 'text'],\n icon: <FootprintsIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().deleteRange(range).setFooter().run();\n },\n};\n\nexport const clearLine: BlockItem = {\n title: 'Clear Line',\n description: 'Clear the current line.',\n searchTerms: ['clear', 'line'],\n icon: <EraserIcon className=\"mly-h-4 mly-w-4\" />,\n command: ({ editor, range }) => {\n // @ts-ignore\n editor.chain().focus().selectParentNode().deleteSelection().run();\n },\n};\n"],"mappings":"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","names":["jsx","editor","jsx","jsx","jsx"]}