@prosekit/extensions 0.0.0-next-20230709094459 → 0.0.0-next-20240421132240

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 (52) hide show
  1. package/dist/_tsup-dts-rollup.d.ts +889 -0
  2. package/dist/chunk-ASTUC4KT.js +111 -0
  3. package/dist/chunk-DYFRBXUX.js +56 -0
  4. package/dist/list/style.css +18 -13
  5. package/dist/prosekit-extensions-autocomplete.d.ts +3 -0
  6. package/dist/prosekit-extensions-autocomplete.js +194 -0
  7. package/dist/prosekit-extensions-blockquote.d.ts +3 -11
  8. package/dist/prosekit-extensions-blockquote.js +24 -15
  9. package/dist/prosekit-extensions-bold.d.ts +4 -20
  10. package/dist/prosekit-extensions-bold.js +35 -37
  11. package/dist/prosekit-extensions-code-block.d.ts +15 -0
  12. package/dist/prosekit-extensions-code-block.js +214 -0
  13. package/dist/prosekit-extensions-code.d.ts +4 -16
  14. package/dist/prosekit-extensions-code.js +28 -12
  15. package/dist/prosekit-extensions-drop-cursor.d.ts +2 -0
  16. package/dist/prosekit-extensions-drop-cursor.js +9 -0
  17. package/dist/prosekit-extensions-enter-rule.d.ts +5 -0
  18. package/dist/prosekit-extensions-enter-rule.js +8 -0
  19. package/dist/prosekit-extensions-heading.d.ts +6 -15
  20. package/dist/prosekit-extensions-heading.js +75 -41
  21. package/dist/prosekit-extensions-image.d.ts +4 -0
  22. package/dist/prosekit-extensions-image.js +49 -0
  23. package/dist/prosekit-extensions-input-rule.d.ts +3 -0
  24. package/dist/prosekit-extensions-input-rule.js +10 -0
  25. package/dist/prosekit-extensions-italic.d.ts +4 -20
  26. package/dist/prosekit-extensions-italic.js +29 -31
  27. package/dist/prosekit-extensions-link.d.ts +6 -0
  28. package/dist/prosekit-extensions-link.js +102 -0
  29. package/dist/prosekit-extensions-list.d.ts +7 -14
  30. package/dist/prosekit-extensions-list.js +59 -24
  31. package/dist/prosekit-extensions-mention.d.ts +4 -0
  32. package/dist/prosekit-extensions-mention.js +56 -0
  33. package/dist/prosekit-extensions-placeholder.d.ts +2 -23
  34. package/dist/prosekit-extensions-placeholder.js +11 -7
  35. package/dist/prosekit-extensions-readonly.d.ts +1 -0
  36. package/dist/prosekit-extensions-readonly.js +16 -0
  37. package/dist/prosekit-extensions-strike.d.ts +4 -0
  38. package/dist/prosekit-extensions-strike.js +47 -0
  39. package/dist/prosekit-extensions-table.d.ts +7 -0
  40. package/dist/prosekit-extensions-table.js +197 -0
  41. package/dist/prosekit-extensions-underline.d.ts +4 -0
  42. package/dist/prosekit-extensions-underline.js +45 -0
  43. package/dist/prosekit-extensions-virtual-selection.d.ts +1 -0
  44. package/dist/prosekit-extensions-virtual-selection.js +58 -0
  45. package/dist/prosekit-extensions.d.ts +1 -2
  46. package/dist/shiki-import-25BJYIO2.js +5 -0
  47. package/dist/table/style.css +34 -0
  48. package/dist/virtual-selection/style.css +6 -0
  49. package/package.json +119 -13
  50. package/dist/prosekit-extensions-suggestion.d.ts +0 -37
  51. package/dist/prosekit-extensions-suggestion.js +0 -159
  52. package/src/index.ts +0 -1
@@ -0,0 +1,214 @@
1
+ import {
2
+ defineTextBlockInputRule
3
+ } from "./chunk-DYFRBXUX.js";
4
+ import {
5
+ defineTextBlockEnterRule
6
+ } from "./chunk-ASTUC4KT.js";
7
+
8
+ // src/code-block/code-block.ts
9
+ import { union } from "@prosekit/core";
10
+
11
+ // src/code-block/code-block-commands.ts
12
+ import {
13
+ defineCommands,
14
+ insertNode,
15
+ setBlockType,
16
+ setNodeAttrs,
17
+ toggleNode
18
+ } from "@prosekit/core";
19
+ function defineCodeBlockCommands() {
20
+ return defineCommands({
21
+ setCodeBlock: (attrs) => {
22
+ return setBlockType({ type: "codeBlock", attrs });
23
+ },
24
+ insertCodeBlock: (attrs) => {
25
+ return insertNode({ type: "codeBlock", attrs });
26
+ },
27
+ toggleCodeBlock: (attrs) => {
28
+ return toggleNode({ type: "codeBlock", attrs });
29
+ },
30
+ setCodeBlockAttrs: (attrs) => {
31
+ return setNodeAttrs({ type: "codeBlock", attrs });
32
+ }
33
+ });
34
+ }
35
+
36
+ // src/code-block/code-block-input-rule.ts
37
+ function defineCodeBlockInputRule() {
38
+ return defineTextBlockInputRule({
39
+ regex: /^```(\S*)\s$/,
40
+ type: "codeBlock",
41
+ attrs: getAttrs
42
+ });
43
+ }
44
+ function defineCodeBlockEnterRule() {
45
+ return defineTextBlockEnterRule({
46
+ regex: /^```(\S*)$/,
47
+ type: "codeBlock",
48
+ attrs: getAttrs
49
+ });
50
+ }
51
+ function getAttrs(match) {
52
+ return { language: match[1] || "" };
53
+ }
54
+
55
+ // src/code-block/code-block-keymap.ts
56
+ import { defaultBlockAt, defineKeymap } from "@prosekit/core";
57
+ import { TextSelection } from "@prosekit/pm/state";
58
+ function defineCodeBlockKeymap() {
59
+ return defineKeymap({
60
+ Enter: existCodeBlock
61
+ });
62
+ }
63
+ var existCodeBlock = (state, dispatch) => {
64
+ if (!state.selection.empty) {
65
+ return false;
66
+ }
67
+ const { $head } = state.selection;
68
+ const parent = $head.parent;
69
+ if (parent.isTextblock && parent.type.spec.code && $head.parentOffset === parent.content.size && parent.textContent.endsWith("\n\n")) {
70
+ const grandParent = $head.node(-1);
71
+ const insertIndex = $head.indexAfter(-1);
72
+ const type = defaultBlockAt(grandParent.contentMatchAt(insertIndex));
73
+ if (!type || !grandParent.canReplaceWith(insertIndex, insertIndex, type)) {
74
+ return false;
75
+ }
76
+ if (dispatch) {
77
+ const { tr } = state;
78
+ tr.delete($head.pos - 2, $head.pos);
79
+ const pos = tr.selection.$head.after();
80
+ const node = type.createAndFill();
81
+ if (node) {
82
+ tr.replaceWith(pos, pos, node);
83
+ tr.setSelection(TextSelection.near(tr.doc.resolve(pos), 1));
84
+ dispatch(tr.scrollIntoView());
85
+ }
86
+ }
87
+ return true;
88
+ }
89
+ return false;
90
+ };
91
+
92
+ // src/code-block/code-block-spec.ts
93
+ import { defineNodeSpec } from "@prosekit/core";
94
+ function defineCodeBlockSpec() {
95
+ return defineNodeSpec({
96
+ name: "codeBlock",
97
+ content: "text*",
98
+ group: "block",
99
+ code: true,
100
+ defining: true,
101
+ marks: "",
102
+ attrs: { language: { default: "" } },
103
+ parseDOM: [
104
+ {
105
+ tag: "pre",
106
+ preserveWhitespace: "full",
107
+ getAttrs: (node) => ({
108
+ language: node.getAttribute("data-language") || ""
109
+ })
110
+ }
111
+ ],
112
+ toDOM(node) {
113
+ const attrs = node.attrs;
114
+ return ["pre", { "data-language": attrs.language }, ["code", 0]];
115
+ }
116
+ });
117
+ }
118
+
119
+ // src/code-block/code-block.ts
120
+ function defineCodeBlock() {
121
+ return union([
122
+ defineCodeBlockSpec(),
123
+ defineCodeBlockInputRule(),
124
+ defineCodeBlockEnterRule(),
125
+ defineCodeBlockKeymap(),
126
+ defineCodeBlockCommands()
127
+ ]);
128
+ }
129
+
130
+ // src/code-block/code-block-highlight.ts
131
+ import { definePlugin } from "@prosekit/core";
132
+ import { createHighlightPlugin } from "prosemirror-highlight";
133
+ function defineCodeBlockHighlight({
134
+ parser
135
+ }) {
136
+ return definePlugin(
137
+ createHighlightPlugin({ parser, nodeTypes: ["codeBlock"] })
138
+ );
139
+ }
140
+
141
+ // src/code-block/shiki-parser.ts
142
+ import { createParser } from "prosemirror-highlight/shiki";
143
+ function createHighlighterLoader() {
144
+ let highlighterPromise;
145
+ let highlighter;
146
+ const loadLangs = /* @__PURE__ */ new Set();
147
+ return function highlighterLoader(lang, options) {
148
+ if (!highlighterPromise) {
149
+ highlighterPromise = import("./shiki-import-25BJYIO2.js").then(({ getHighlighter }) => {
150
+ return getHighlighter(options);
151
+ }).then((h) => {
152
+ highlighter = h;
153
+ });
154
+ return { promise: highlighterPromise };
155
+ }
156
+ if (!highlighter) {
157
+ return { promise: highlighterPromise };
158
+ }
159
+ if (!loadLangs.has(lang)) {
160
+ const promise = highlighter.loadLanguage(lang).then(() => {
161
+ loadLangs.add(lang);
162
+ }).catch((error) => {
163
+ console.warn(`Failed to load language '${lang}'`, error);
164
+ });
165
+ return { promise };
166
+ }
167
+ return { highlighter };
168
+ };
169
+ }
170
+ function createLazyParser(highlighterOptions) {
171
+ let parser;
172
+ const highlighterLoader = createHighlighterLoader();
173
+ return function lazyParser(options) {
174
+ const language = options.language || "";
175
+ const { highlighter, promise } = highlighterLoader(
176
+ language,
177
+ highlighterOptions
178
+ );
179
+ if (!highlighter) {
180
+ return promise || [];
181
+ }
182
+ if (!parser) {
183
+ parser = createParser(highlighter);
184
+ }
185
+ return parser(options);
186
+ };
187
+ }
188
+
189
+ // src/code-block/code-block-shiki.ts
190
+ function defineCodeBlockShiki({
191
+ themes = ["one-dark-pro"],
192
+ langs = ["text"],
193
+ langAlias = {}
194
+ } = {}) {
195
+ const parser = createLazyParser({ themes, langs, langAlias });
196
+ return defineCodeBlockHighlight({ parser });
197
+ }
198
+
199
+ // src/code-block/shiki-bundle.ts
200
+ import {
201
+ bundledLanguagesInfo,
202
+ bundledThemesInfo
203
+ } from "shiki";
204
+ export {
205
+ defineCodeBlock,
206
+ defineCodeBlockCommands,
207
+ defineCodeBlockEnterRule,
208
+ defineCodeBlockHighlight,
209
+ defineCodeBlockInputRule,
210
+ defineCodeBlockShiki,
211
+ defineCodeBlockSpec,
212
+ bundledLanguagesInfo as shikiBundledLanguagesInfo,
213
+ bundledThemesInfo as shikiBundledThemesInfo
214
+ };
@@ -1,16 +1,4 @@
1
- import * as _prosekit_core from '@prosekit/core';
2
-
3
- /**
4
- * @public
5
- */
6
- declare function addCodeSpec(): _prosekit_core.Extension<{
7
- MARKS: "code";
8
- }>;
9
- /**
10
- * @public
11
- */
12
- declare function addCode(): _prosekit_core.Extension<{
13
- MARKS: "code";
14
- }>;
15
-
16
- export { addCode, addCodeSpec };
1
+ export { defineCodeSpec } from './_tsup-dts-rollup';
2
+ export { defineCodeCommands } from './_tsup-dts-rollup';
3
+ export { defineItalicKeymap } from './_tsup-dts-rollup';
4
+ export { defineCode } from './_tsup-dts-rollup';
@@ -1,20 +1,36 @@
1
1
  // src/code/index.ts
2
- import { addMarkSpec, defineExtension } from "@prosekit/core";
3
- function addCodeSpec() {
4
- return addMarkSpec({
2
+ import {
3
+ defineCommands,
4
+ defineKeymap,
5
+ defineMarkSpec,
6
+ toggleMark,
7
+ union
8
+ } from "@prosekit/core";
9
+ function defineCodeSpec() {
10
+ return defineMarkSpec({
5
11
  name: "code",
6
- spec: {
7
- parseDOM: [{ tag: "code" }],
8
- toDOM() {
9
- return ["code", 0];
10
- }
12
+ parseDOM: [{ tag: "code" }],
13
+ toDOM() {
14
+ return ["code", 0];
11
15
  }
12
16
  });
13
17
  }
14
- function addCode() {
15
- return defineExtension([addCodeSpec()]);
18
+ function defineCodeCommands() {
19
+ return defineCommands({
20
+ toggleCode: () => toggleMark({ type: "code" })
21
+ });
22
+ }
23
+ function defineItalicKeymap() {
24
+ return defineKeymap({
25
+ "Mod-e": toggleMark({ type: "code" })
26
+ });
27
+ }
28
+ function defineCode() {
29
+ return union([defineCodeSpec(), defineCodeCommands(), defineItalicKeymap()]);
16
30
  }
17
31
  export {
18
- addCode,
19
- addCodeSpec
32
+ defineCode,
33
+ defineCodeCommands,
34
+ defineCodeSpec,
35
+ defineItalicKeymap
20
36
  };
@@ -0,0 +1,2 @@
1
+ export { defineDropCursor } from './_tsup-dts-rollup';
2
+ export { DropCursorOptions } from './_tsup-dts-rollup';
@@ -0,0 +1,9 @@
1
+ // src/drop-cursor/index.ts
2
+ import { definePlugin } from "@prosekit/core";
3
+ import { dropCursor } from "prosemirror-dropcursor";
4
+ function defineDropCursor(options) {
5
+ return definePlugin(() => dropCursor(options));
6
+ }
7
+ export {
8
+ defineDropCursor
9
+ };
@@ -0,0 +1,5 @@
1
+ export { defineEnterRule } from './_tsup-dts-rollup';
2
+ export { defineTextBlockEnterRule } from './_tsup-dts-rollup';
3
+ export { EnterRuleHandler } from './_tsup-dts-rollup';
4
+ export { EnterRuleOptions } from './_tsup-dts-rollup';
5
+ export { TextBlockEnterRuleOptions } from './_tsup-dts-rollup';
@@ -0,0 +1,8 @@
1
+ import {
2
+ defineEnterRule,
3
+ defineTextBlockEnterRule
4
+ } from "./chunk-ASTUC4KT.js";
5
+ export {
6
+ defineEnterRule,
7
+ defineTextBlockEnterRule
8
+ };
@@ -1,15 +1,6 @@
1
- import * as _prosekit_core from '@prosekit/core';
2
-
3
- interface HeadingAttrs {
4
- level: number;
5
- }
6
- declare function addHeadingSpec(): _prosekit_core.Extension<{
7
- NODES: "heading";
8
- }>;
9
- declare function addHeadingInputRule(): _prosekit_core.Extension<_prosekit_core.ExtensionTyping<string, string, _prosekit_core.CommandArgs>>;
10
- /** @public */
11
- declare function addHeading(): _prosekit_core.Extension<{
12
- NODES: "heading";
13
- }>;
14
-
15
- export { HeadingAttrs, addHeading, addHeadingInputRule, addHeadingSpec };
1
+ export { defineHeadingSpec } from './_tsup-dts-rollup';
2
+ export { defineHeadingKeymap } from './_tsup-dts-rollup';
3
+ export { defineHeadingInputRule } from './_tsup-dts-rollup';
4
+ export { defineHeadingCommands } from './_tsup-dts-rollup';
5
+ export { defineHeading } from './_tsup-dts-rollup';
6
+ export { HeadingAttrs } from './_tsup-dts-rollup';
@@ -1,53 +1,87 @@
1
+ import {
2
+ defineTextBlockInputRule
3
+ } from "./chunk-DYFRBXUX.js";
4
+
1
5
  // src/heading/index.ts
2
6
  import {
3
- addInputRule,
4
- addNodeSpec,
5
- defineExtension,
6
- getNodeType
7
+ defineCommands,
8
+ defineKeymap,
9
+ defineNodeSpec,
10
+ insertNode,
11
+ setBlockType,
12
+ toggleNode,
13
+ union,
14
+ withSkipCodeBlock
7
15
  } from "@prosekit/core";
8
- import { textblockTypeInputRule } from "@prosekit/pm/inputrules";
9
- function addHeadingSpec() {
10
- return addNodeSpec({
16
+ function defineHeadingSpec() {
17
+ return defineNodeSpec({
11
18
  name: "heading",
12
- spec: {
13
- attrs: { level: { default: 1 } },
14
- content: "inline*",
15
- group: "block",
16
- defining: true,
17
- parseDOM: [
18
- { tag: "h1", attrs: { level: 1 } },
19
- { tag: "h2", attrs: { level: 2 } },
20
- { tag: "h3", attrs: { level: 3 } },
21
- { tag: "h4", attrs: { level: 4 } },
22
- { tag: "h5", attrs: { level: 5 } },
23
- { tag: "h6", attrs: { level: 6 } }
24
- ],
25
- toDOM(node) {
26
- return [`h${node.attrs.level}`, 0];
27
- }
19
+ attrs: { level: { default: 1 } },
20
+ content: "inline*",
21
+ group: "block",
22
+ defining: true,
23
+ parseDOM: [
24
+ { tag: "h1", attrs: { level: 1 } },
25
+ { tag: "h2", attrs: { level: 2 } },
26
+ { tag: "h3", attrs: { level: 3 } },
27
+ { tag: "h4", attrs: { level: 4 } },
28
+ { tag: "h5", attrs: { level: 5 } },
29
+ { tag: "h6", attrs: { level: 6 } }
30
+ ],
31
+ toDOM(node) {
32
+ return [`h${node.attrs.level}`, 0];
33
+ }
34
+ });
35
+ }
36
+ function defineHeadingKeymap() {
37
+ return defineKeymap({
38
+ "mod-1": toggleHeadingKeybinding(1),
39
+ "mod-2": toggleHeadingKeybinding(2),
40
+ "mod-3": toggleHeadingKeybinding(3),
41
+ "mod-4": toggleHeadingKeybinding(4),
42
+ "mod-5": toggleHeadingKeybinding(5),
43
+ "mod-6": toggleHeadingKeybinding(6)
44
+ });
45
+ }
46
+ function toggleHeadingKeybinding(level) {
47
+ return withSkipCodeBlock(toggleNode({ type: "heading", attrs: { level } }));
48
+ }
49
+ function defineHeadingInputRule() {
50
+ return defineTextBlockInputRule({
51
+ regex: /^(#{1,6})\s$/,
52
+ type: "heading",
53
+ attrs: (match) => {
54
+ var _a, _b;
55
+ const level = (_b = (_a = match[1]) == null ? void 0 : _a.length) != null ? _b : 1;
56
+ return { level };
28
57
  }
29
58
  });
30
59
  }
31
- function addHeadingInputRule() {
32
- return addInputRule(({ schema }) => {
33
- const nodeSpec = getNodeType(schema, "heading");
34
- const inputRule = textblockTypeInputRule(
35
- /^(#{1,6})\s/,
36
- nodeSpec,
37
- (match) => {
38
- var _a, _b;
39
- const level = (_b = (_a = match[1]) == null ? void 0 : _a.length) != null ? _b : 1;
40
- return { level };
41
- }
42
- );
43
- return [inputRule];
60
+ function defineHeadingCommands() {
61
+ return defineCommands({
62
+ setHeading: (attrs) => {
63
+ return setBlockType({ type: "heading", attrs });
64
+ },
65
+ insertHeading: (attrs) => {
66
+ return insertNode({ type: "heading", attrs });
67
+ },
68
+ toggleHeading: (attrs) => {
69
+ return toggleNode({ type: "heading", attrs });
70
+ }
44
71
  });
45
72
  }
46
- function addHeading() {
47
- return defineExtension([addHeadingSpec(), addHeadingInputRule()]);
73
+ function defineHeading() {
74
+ return union([
75
+ defineHeadingSpec(),
76
+ defineHeadingInputRule(),
77
+ defineHeadingKeymap(),
78
+ defineHeadingCommands()
79
+ ]);
48
80
  }
49
81
  export {
50
- addHeading,
51
- addHeadingInputRule,
52
- addHeadingSpec
82
+ defineHeading,
83
+ defineHeadingCommands,
84
+ defineHeadingInputRule,
85
+ defineHeadingKeymap,
86
+ defineHeadingSpec
53
87
  };
@@ -0,0 +1,4 @@
1
+ export { defineImageSpec } from './_tsup-dts-rollup';
2
+ export { defineImageCommands } from './_tsup-dts-rollup';
3
+ export { defineImage } from './_tsup-dts-rollup';
4
+ export { ImageAttrs } from './_tsup-dts-rollup';
@@ -0,0 +1,49 @@
1
+ // src/image/index.ts
2
+ import {
3
+ defineCommands,
4
+ defineNodeSpec,
5
+ insertNode,
6
+ union
7
+ } from "@prosekit/core";
8
+ function defineImageSpec() {
9
+ return defineNodeSpec({
10
+ name: "image",
11
+ attrs: {
12
+ src: { default: null }
13
+ },
14
+ group: "block",
15
+ defining: true,
16
+ draggable: true,
17
+ parseDOM: [
18
+ {
19
+ tag: "img[src]",
20
+ getAttrs: (element) => {
21
+ if (typeof element === "string") {
22
+ return { src: null };
23
+ }
24
+ const src = element.getAttribute("src") || null;
25
+ return { src };
26
+ }
27
+ }
28
+ ],
29
+ toDOM(node) {
30
+ const attrs = node.attrs;
31
+ return ["img", attrs];
32
+ }
33
+ });
34
+ }
35
+ function defineImageCommands() {
36
+ return defineCommands({
37
+ insertImage: (attrs) => {
38
+ return insertNode({ type: "image", attrs });
39
+ }
40
+ });
41
+ }
42
+ function defineImage() {
43
+ return union([defineImageSpec(), defineImageCommands()]);
44
+ }
45
+ export {
46
+ defineImage,
47
+ defineImageCommands,
48
+ defineImageSpec
49
+ };
@@ -0,0 +1,3 @@
1
+ export { defineInputRule } from './_tsup-dts-rollup';
2
+ export { defineTextBlockInputRule } from './_tsup-dts-rollup';
3
+ export { defineWrappingInputRule } from './_tsup-dts-rollup';
@@ -0,0 +1,10 @@
1
+ import {
2
+ defineInputRule,
3
+ defineTextBlockInputRule,
4
+ defineWrappingInputRule
5
+ } from "./chunk-DYFRBXUX.js";
6
+ export {
7
+ defineInputRule,
8
+ defineTextBlockInputRule,
9
+ defineWrappingInputRule
10
+ };
@@ -1,20 +1,4 @@
1
- import * as _prosekit_core from '@prosekit/core';
2
-
3
- declare function addItalicSpec(): _prosekit_core.Extension<{
4
- MARKS: "italic";
5
- }>;
6
- declare function addItalicCommands(): _prosekit_core.Extension<{
7
- COMMAND_ARGS: {
8
- toggleItalic: [];
9
- };
10
- }>;
11
- declare function addItalicKeymap(): _prosekit_core.Extension<_prosekit_core.ExtensionTyping<string, string, _prosekit_core.CommandArgs>>;
12
- /** @public */
13
- declare function addItalic(): _prosekit_core.Extension<{
14
- MARKS: "italic";
15
- COMMAND_ARGS: {
16
- toggleItalic: [];
17
- };
18
- }>;
19
-
20
- export { addItalic, addItalicCommands, addItalicKeymap, addItalicSpec };
1
+ export { defineItalicSpec } from './_tsup-dts-rollup';
2
+ export { defineItalicCommands } from './_tsup-dts-rollup';
3
+ export { defineItalicKeymap_alias_1 as defineItalicKeymap } from './_tsup-dts-rollup';
4
+ export { defineItalic } from './_tsup-dts-rollup';
@@ -1,50 +1,48 @@
1
1
  // src/italic/index.ts
2
2
  import {
3
- addCommands,
4
- addKeymap,
5
- addMarkSpec,
6
- defineExtension,
3
+ defineCommands,
4
+ defineKeymap,
5
+ defineMarkSpec,
6
+ union,
7
7
  toggleMark
8
8
  } from "@prosekit/core";
9
- function addItalicSpec() {
10
- return addMarkSpec({
9
+ function defineItalicSpec() {
10
+ return defineMarkSpec({
11
11
  name: "italic",
12
- spec: {
13
- parseDOM: [
14
- { tag: "i" },
15
- { tag: "em" },
16
- { style: "font-style=italic" },
17
- {
18
- style: "font-style=normal",
19
- clearMark: (m) => m.type.name === "italic"
20
- }
21
- ],
22
- toDOM() {
23
- return ["em", 0];
12
+ parseDOM: [
13
+ { tag: "i" },
14
+ { tag: "em" },
15
+ { style: "font-style=italic" },
16
+ {
17
+ style: "font-style=normal",
18
+ clearMark: (m) => m.type.name === "italic"
24
19
  }
20
+ ],
21
+ toDOM() {
22
+ return ["em", 0];
25
23
  }
26
24
  });
27
25
  }
28
- function addItalicCommands() {
29
- return addCommands({
26
+ function defineItalicCommands() {
27
+ return defineCommands({
30
28
  toggleItalic: () => toggleMark({ type: "italic" })
31
29
  });
32
30
  }
33
- function addItalicKeymap() {
34
- return addKeymap({
31
+ function defineItalicKeymap() {
32
+ return defineKeymap({
35
33
  "Mod-i": toggleMark({ type: "italic" })
36
34
  });
37
35
  }
38
- function addItalic() {
39
- return defineExtension([
40
- addItalicSpec(),
41
- addItalicCommands(),
42
- addItalicKeymap()
36
+ function defineItalic() {
37
+ return union([
38
+ defineItalicSpec(),
39
+ defineItalicCommands(),
40
+ defineItalicKeymap()
43
41
  ]);
44
42
  }
45
43
  export {
46
- addItalic,
47
- addItalicCommands,
48
- addItalicKeymap,
49
- addItalicSpec
44
+ defineItalic,
45
+ defineItalicCommands,
46
+ defineItalicKeymap,
47
+ defineItalicSpec
50
48
  };
@@ -0,0 +1,6 @@
1
+ export { defineLinkSpec } from './_tsup-dts-rollup';
2
+ export { defineLinkCommands } from './_tsup-dts-rollup';
3
+ export { defineLinkInputRule } from './_tsup-dts-rollup';
4
+ export { defineLinkEnterRule } from './_tsup-dts-rollup';
5
+ export { defineLink } from './_tsup-dts-rollup';
6
+ export { LinkAttrs } from './_tsup-dts-rollup';