@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,111 @@
1
+ // src/enter-rule/index.ts
2
+ import {
3
+ Facet,
4
+ OBJECT_REPLACEMENT_CHARACTER,
5
+ getNodeType,
6
+ isTextSelection,
7
+ pluginFacet
8
+ } from "@prosekit/core";
9
+ import { keydownHandler } from "@prosekit/pm/keymap";
10
+ import {
11
+ ProseMirrorPlugin
12
+ } from "@prosekit/pm/state";
13
+ function defineEnterRule({
14
+ regex,
15
+ handler,
16
+ stop = false
17
+ }) {
18
+ const rule = new EnterRule(regex, handler, stop);
19
+ return enterRule.extension([rule]);
20
+ }
21
+ function defineTextBlockEnterRule({
22
+ regex,
23
+ type,
24
+ attrs,
25
+ stop = true
26
+ }) {
27
+ return defineEnterRule({
28
+ regex,
29
+ handler: ({ state, from, to, match }) => {
30
+ const nodeType = getNodeType(state.schema, type);
31
+ const $start = state.doc.resolve(from);
32
+ if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType)) {
33
+ return null;
34
+ }
35
+ const nodeAttrs = attrs && typeof attrs === "function" ? attrs(match) : attrs;
36
+ return state.tr.delete(from, to).setBlockType(from, from, nodeType, nodeAttrs);
37
+ },
38
+ stop
39
+ });
40
+ }
41
+ var EnterRule = class {
42
+ constructor(regex, handler, stop) {
43
+ this.regex = regex;
44
+ this.handler = handler;
45
+ this.stop = stop;
46
+ }
47
+ };
48
+ var enterRule = Facet.define({
49
+ converter: () => {
50
+ let rules = [];
51
+ const command = (state, dispatch, view) => {
52
+ if (!view)
53
+ return false;
54
+ return execRules(view, rules, dispatch);
55
+ };
56
+ const handler = keydownHandler({ Enter: command });
57
+ const plugin = new ProseMirrorPlugin({ props: { handleKeyDown: handler } });
58
+ const pluginFunc = () => [plugin];
59
+ return {
60
+ create: (inputs) => {
61
+ rules = inputs;
62
+ return pluginFunc;
63
+ },
64
+ update: (inputs) => {
65
+ rules = inputs;
66
+ return null;
67
+ }
68
+ };
69
+ },
70
+ next: pluginFacet
71
+ });
72
+ function execRules(view, rules, dispatch) {
73
+ if (view.composing)
74
+ return false;
75
+ const state = view.state;
76
+ const selection = state.selection;
77
+ if (!isTextSelection(selection))
78
+ return false;
79
+ const $cursor = selection.$cursor;
80
+ if (!$cursor || $cursor.parent.type.spec.code)
81
+ return false;
82
+ const textBefore = $cursor.parent.textBetween(
83
+ Math.max(0, $cursor.parentOffset - MAX_MATCH),
84
+ $cursor.parentOffset,
85
+ null,
86
+ OBJECT_REPLACEMENT_CHARACTER
87
+ );
88
+ for (const rule of rules) {
89
+ rule.regex.lastIndex = 0;
90
+ const match = rule.regex.exec(textBefore);
91
+ const tr = match && rule.handler({
92
+ state,
93
+ from: $cursor.pos - match[0].length,
94
+ to: $cursor.pos,
95
+ match
96
+ });
97
+ if (!tr)
98
+ continue;
99
+ dispatch == null ? void 0 : dispatch(tr);
100
+ if (rule.stop) {
101
+ return true;
102
+ }
103
+ }
104
+ return false;
105
+ }
106
+ var MAX_MATCH = 200;
107
+
108
+ export {
109
+ defineEnterRule,
110
+ defineTextBlockEnterRule
111
+ };
@@ -0,0 +1,56 @@
1
+ // src/input-rule/index.ts
2
+ import {
3
+ Facet,
4
+ getNodeType,
5
+ pluginFacet
6
+ } from "@prosekit/core";
7
+ import {
8
+ inputRules,
9
+ textblockTypeInputRule,
10
+ wrappingInputRule
11
+ } from "@prosekit/pm/inputrules";
12
+ import "@prosekit/pm/model";
13
+ import "@prosekit/pm/state";
14
+ function defineInputRule(rule) {
15
+ return inputRuleFacet.extension([() => rule]);
16
+ }
17
+ function defineTextBlockInputRule({
18
+ regex,
19
+ type,
20
+ attrs
21
+ }) {
22
+ return inputRuleFacet.extension([
23
+ ({ schema }) => {
24
+ const nodeType = getNodeType(schema, type);
25
+ return textblockTypeInputRule(regex, nodeType, attrs);
26
+ }
27
+ ]);
28
+ }
29
+ function defineWrappingInputRule({
30
+ regex,
31
+ type,
32
+ attrs,
33
+ join
34
+ }) {
35
+ return inputRuleFacet.extension([
36
+ ({ schema }) => {
37
+ const nodeType = getNodeType(schema, type);
38
+ return wrappingInputRule(regex, nodeType, attrs, join);
39
+ }
40
+ ]);
41
+ }
42
+ var inputRuleFacet = Facet.define({
43
+ convert: (inputs) => {
44
+ return (context) => {
45
+ const rules = inputs.flatMap((callback) => callback(context));
46
+ return [inputRules({ rules })];
47
+ };
48
+ },
49
+ next: pluginFacet
50
+ });
51
+
52
+ export {
53
+ defineInputRule,
54
+ defineTextBlockInputRule,
55
+ defineWrappingInputRule
56
+ };
@@ -1,4 +1,4 @@
1
- /* ../../node_modules/.pnpm/prosemirror-flat-list@0.3.15/node_modules/prosemirror-flat-list/dist/style.css */
1
+ /* ../../node_modules/.pnpm/prosemirror-flat-list@0.5.0/node_modules/prosemirror-flat-list/dist/style.css */
2
2
  .prosemirror-flat-list {
3
3
  padding: 0;
4
4
  margin-top: 0;
@@ -25,25 +25,30 @@
25
25
  .prosemirror-flat-list[data-list-kind=bullet] {
26
26
  list-style: disc;
27
27
  }
28
+ .prosemirror-flat-list[data-list-kind=ordered] {
29
+ counter-increment: prosemirror-flat-list-counter;
30
+ }
31
+ .prosemirror-flat-list[data-list-kind=ordered] > * {
32
+ contain: style;
33
+ }
28
34
  .prosemirror-flat-list[data-list-kind=ordered]::before {
29
35
  position: absolute;
30
36
  right: 100%;
31
37
  font-variant-numeric: tabular-nums;
32
38
  content: counter(prosemirror-flat-list-counter, decimal) ". ";
33
39
  }
34
- @supports (-moz-appearance: none) {
35
- .prosemirror-flat-list[data-list-kind=ordered] {
36
- contain: style;
37
- counter-increment: prosemirror-flat-list-counter;
38
- }
40
+ .prosemirror-flat-list[data-list-kind=ordered]:first-child,
41
+ :not(.prosemirror-flat-list[data-list-kind=ordered]) + .prosemirror-flat-list[data-list-kind=ordered] {
42
+ counter-reset: prosemirror-flat-list-counter;
39
43
  }
40
- @supports not (-moz-appearance: none) {
41
- .prosemirror-flat-list[data-list-kind=ordered] {
42
- counter-reset: prosemirror-flat-list-counter;
43
- counter-increment: prosemirror-flat-list-counter;
44
+ @supports (counter-set: prosemirror-flat-list-counter 1) {
45
+ [data-list-order]:is(.prosemirror-flat-list[data-list-kind=ordered]:first-child, :not(.prosemirror-flat-list[data-list-kind=ordered]) + .prosemirror-flat-list[data-list-kind=ordered]) {
46
+ counter-set: prosemirror-flat-list-counter var(--prosemirror-flat-list-order);
44
47
  }
45
- .prosemirror-flat-list[data-list-kind=ordered] + .prosemirror-flat-list[data-list-kind=ordered] {
46
- counter-reset: none;
48
+ }
49
+ @supports not (counter-set: prosemirror-flat-list-counter 1) {
50
+ [data-list-order]:is(.prosemirror-flat-list[data-list-kind=ordered]:first-child, :not(.prosemirror-flat-list[data-list-kind=ordered]) + .prosemirror-flat-list[data-list-kind=ordered]) {
51
+ counter-increment: prosemirror-flat-list-counter var(--prosemirror-flat-list-order);
47
52
  }
48
53
  }
49
54
  .prosemirror-flat-list[data-list-kind=task] > .list-marker {
@@ -77,7 +82,7 @@
77
82
  opacity: 40%;
78
83
  pointer-events: none;
79
84
  }
80
- .prosemirror-flat-list[data-list-kind=toggle][data-list-collapsable][data-list-collapsed] > .list-content > *:nth-child(n + 2) {
85
+ .prosemirror-flat-list[data-list-kind=toggle][data-list-collapsable][data-list-collapsed] > .list-content > *:nth-child(n+2) {
81
86
  display: none;
82
87
  }
83
88
 
@@ -0,0 +1,3 @@
1
+ export { defineAutocomplete } from './_tsup-dts-rollup';
2
+ export { AutocompleteRule } from './_tsup-dts-rollup';
3
+ export { MatchHandler } from './_tsup-dts-rollup';
@@ -0,0 +1,194 @@
1
+ // src/autocomplete/index.ts
2
+ import {
3
+ Facet,
4
+ pluginFacet
5
+ } from "@prosekit/core";
6
+
7
+ // src/autocomplete/plugin.ts
8
+ import { OBJECT_REPLACEMENT_CHARACTER } from "@prosekit/core";
9
+ import { Plugin } from "@prosekit/pm/state";
10
+ import { Decoration, DecorationSet } from "@prosekit/pm/view";
11
+
12
+ // src/autocomplete/helpers.ts
13
+ import "@prosekit/pm/model";
14
+ import { PluginKey } from "@prosekit/pm/state";
15
+ function defaultCanMatch({ state }) {
16
+ return state.selection.empty && !isInsideCode(state.selection.$from);
17
+ }
18
+ function isInsideCode($pos) {
19
+ for (let d = $pos.depth; d > 0; d--) {
20
+ if ($pos.node(d).type.spec.code) {
21
+ return true;
22
+ }
23
+ }
24
+ return $pos.marks().some((mark) => mark.type.name === "code");
25
+ }
26
+ function getPluginState(state) {
27
+ return pluginKey.getState(state);
28
+ }
29
+ function getTrMeta(tr) {
30
+ return tr.getMeta(pluginKey);
31
+ }
32
+ function setTrMeta(tr, meta) {
33
+ return tr.setMeta(pluginKey, meta);
34
+ }
35
+ var pluginKey = new PluginKey(
36
+ "prosekit-autocomplete"
37
+ );
38
+
39
+ // src/autocomplete/plugin.ts
40
+ function createAutocompletePlugin({
41
+ getRules
42
+ }) {
43
+ return new Plugin({
44
+ key: pluginKey,
45
+ state: {
46
+ init: () => {
47
+ return { active: false, ignore: null, matching: null };
48
+ },
49
+ apply: (tr, prevValue, oldState, newState) => {
50
+ var _a;
51
+ const meta = getTrMeta(tr);
52
+ if (!tr.docChanged && oldState.selection.eq(newState.selection) && !meta) {
53
+ return prevValue;
54
+ }
55
+ if (meta) {
56
+ return meta;
57
+ }
58
+ const nextValue = calcPluginState(newState, getRules());
59
+ if (nextValue.active && prevValue.ignore != null && ((_a = nextValue.matching) == null ? void 0 : _a.from) === prevValue.ignore) {
60
+ return prevValue;
61
+ }
62
+ return nextValue;
63
+ }
64
+ },
65
+ view: () => ({
66
+ update: (view, prevState) => {
67
+ var _a, _b, _c;
68
+ const prevValue = getPluginState(prevState);
69
+ const currValue = getPluginState(view.state);
70
+ if ((prevValue == null ? void 0 : prevValue.active) && prevValue.matching && prevValue.matching.rule !== ((_a = currValue == null ? void 0 : currValue.matching) == null ? void 0 : _a.rule)) {
71
+ (_c = (_b = prevValue.matching.rule).onLeave) == null ? void 0 : _c.call(_b);
72
+ }
73
+ if ((currValue == null ? void 0 : currValue.active) && currValue.matching && currValue.matching.from !== currValue.ignore) {
74
+ const { from, to, match, rule } = currValue.matching;
75
+ const textContent = view.state.doc.textBetween(
76
+ from,
77
+ to,
78
+ OBJECT_REPLACEMENT_CHARACTER
79
+ );
80
+ const deleteMatch = () => {
81
+ if (view.state.doc.textBetween(
82
+ from,
83
+ to,
84
+ OBJECT_REPLACEMENT_CHARACTER
85
+ ) === textContent) {
86
+ view.dispatch(view.state.tr.delete(from, to));
87
+ }
88
+ };
89
+ const ignoreMatch = () => {
90
+ view.dispatch(
91
+ setTrMeta(view.state.tr, {
92
+ active: false,
93
+ ignore: from,
94
+ matching: null
95
+ })
96
+ );
97
+ };
98
+ rule.onMatch({
99
+ state: view.state,
100
+ match,
101
+ from,
102
+ to,
103
+ deleteMatch,
104
+ ignoreMatch
105
+ });
106
+ }
107
+ }
108
+ }),
109
+ props: {
110
+ decorations: (state) => {
111
+ const pluginState = getPluginState(state);
112
+ if ((pluginState == null ? void 0 : pluginState.active) && pluginState.matching) {
113
+ const { from, to } = pluginState.matching;
114
+ const deco = Decoration.inline(from, to, {
115
+ class: "prosemirror-prediction-match"
116
+ });
117
+ return DecorationSet.create(state.doc, [deco]);
118
+ }
119
+ return null;
120
+ }
121
+ }
122
+ });
123
+ }
124
+ var MAX_MATCH = 200;
125
+ function calcPluginState(state, rules) {
126
+ const $pos = state.selection.$from;
127
+ const parentOffset = $pos.parentOffset;
128
+ const textBefore = $pos.parent.textBetween(
129
+ Math.max(0, parentOffset - MAX_MATCH),
130
+ parentOffset,
131
+ null,
132
+ OBJECT_REPLACEMENT_CHARACTER
133
+ );
134
+ for (const rule of rules) {
135
+ if (!rule.canMatch({ state })) {
136
+ continue;
137
+ }
138
+ rule.regex.lastIndex = 0;
139
+ const match = rule.regex.exec(textBefore);
140
+ if (!match) {
141
+ continue;
142
+ }
143
+ const from = $pos.pos - textBefore.length + match.index;
144
+ return {
145
+ active: true,
146
+ ignore: null,
147
+ matching: {
148
+ rule,
149
+ match,
150
+ from,
151
+ to: $pos.pos
152
+ }
153
+ };
154
+ }
155
+ return { active: false, ignore: null, matching: null };
156
+ }
157
+
158
+ // src/autocomplete/rule.ts
159
+ var AutocompleteRule = class {
160
+ constructor(options) {
161
+ var _a;
162
+ this.regex = options.regex;
163
+ this.onMatch = options.onEnter;
164
+ this.onLeave = options.onLeave;
165
+ this.canMatch = (_a = options.canMatch) != null ? _a : defaultCanMatch;
166
+ }
167
+ };
168
+
169
+ // src/autocomplete/index.ts
170
+ function defineAutocomplete(rule) {
171
+ return autocompleteFacet.extension([rule]);
172
+ }
173
+ var autocompleteFacet = Facet.define({
174
+ converter: () => {
175
+ let localRules = [];
176
+ const getRules = () => localRules;
177
+ return {
178
+ create: (rules) => {
179
+ localRules = rules;
180
+ const plugin = createAutocompletePlugin({ getRules });
181
+ return () => [plugin];
182
+ },
183
+ update: (rules) => {
184
+ localRules = rules;
185
+ return null;
186
+ }
187
+ };
188
+ },
189
+ next: pluginFacet
190
+ });
191
+ export {
192
+ AutocompleteRule,
193
+ defineAutocomplete
194
+ };
@@ -1,11 +1,3 @@
1
- import * as _prosekit_core from '@prosekit/core';
2
-
3
- declare function addBlockquoteSpec(): _prosekit_core.Extension<{
4
- NODES: "blockquote";
5
- }>;
6
- /** @public */
7
- declare function addBlockquote(): _prosekit_core.Extension<{
8
- NODES: "blockquote";
9
- }>;
10
-
11
- export { addBlockquote, addBlockquoteSpec };
1
+ export { defineBlockquoteSpec } from './_tsup-dts-rollup';
2
+ export { defineBlockquoteInputRule } from './_tsup-dts-rollup';
3
+ export { defineBlockquote } from './_tsup-dts-rollup';
@@ -1,23 +1,32 @@
1
+ import {
2
+ defineWrappingInputRule
3
+ } from "./chunk-DYFRBXUX.js";
4
+
1
5
  // src/blockquote/index.ts
2
- import { addNodeSpec, defineExtension } from "@prosekit/core";
3
- function addBlockquoteSpec() {
4
- return addNodeSpec({
6
+ import { defineNodeSpec, union } from "@prosekit/core";
7
+ function defineBlockquoteSpec() {
8
+ return defineNodeSpec({
5
9
  name: "blockquote",
6
- spec: {
7
- content: "block+",
8
- group: "block",
9
- defining: true,
10
- parseDOM: [{ tag: "blockquote" }],
11
- toDOM() {
12
- return ["blockquote", 0];
13
- }
10
+ content: "block+",
11
+ group: "block",
12
+ defining: true,
13
+ parseDOM: [{ tag: "blockquote" }],
14
+ toDOM() {
15
+ return ["blockquote", 0];
14
16
  }
15
17
  });
16
18
  }
17
- function addBlockquote() {
18
- return defineExtension([addBlockquoteSpec()]);
19
+ function defineBlockquoteInputRule() {
20
+ return defineWrappingInputRule({
21
+ regex: /^>\s/,
22
+ type: "blockquote"
23
+ });
24
+ }
25
+ function defineBlockquote() {
26
+ return union([defineBlockquoteSpec(), defineBlockquoteInputRule()]);
19
27
  }
20
28
  export {
21
- addBlockquote,
22
- addBlockquoteSpec
29
+ defineBlockquote,
30
+ defineBlockquoteInputRule,
31
+ defineBlockquoteSpec
23
32
  };
@@ -1,20 +1,4 @@
1
- import * as _prosekit_core from '@prosekit/core';
2
-
3
- declare function addBoldSpec(): _prosekit_core.Extension<{
4
- MARKS: "bold";
5
- }>;
6
- declare function addBoldCommands(): _prosekit_core.Extension<{
7
- COMMAND_ARGS: {
8
- toggleBold: [];
9
- };
10
- }>;
11
- declare function addBoldKeymap(): _prosekit_core.Extension<_prosekit_core.ExtensionTyping<string, string, _prosekit_core.CommandArgs>>;
12
- /** @public */
13
- declare function addBold(): _prosekit_core.Extension<{
14
- MARKS: "bold";
15
- COMMAND_ARGS: {
16
- toggleBold: [];
17
- };
18
- }>;
19
-
20
- export { addBold, addBoldCommands, addBoldKeymap, addBoldSpec };
1
+ export { defineBoldSpec } from './_tsup-dts-rollup';
2
+ export { defineBoldCommands } from './_tsup-dts-rollup';
3
+ export { defineBoldKeymap } from './_tsup-dts-rollup';
4
+ export { defineBold } from './_tsup-dts-rollup';
@@ -1,56 +1,54 @@
1
1
  // src/bold/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 addBoldSpec() {
10
- return addMarkSpec({
9
+ function defineBoldSpec() {
10
+ return defineMarkSpec({
11
11
  name: "bold",
12
- spec: {
13
- parseDOM: [
14
- { tag: "strong" },
15
- // This works around a Google Docs misbehavior where
16
- // pasted content will be inexplicably wrapped in `<b>`
17
- // tags with a font-weight normal.
18
- {
19
- tag: "b",
20
- getAttrs: (node) => {
21
- return typeof node !== "string" && node.style.fontWeight !== "normal" && null;
22
- }
23
- },
24
- { style: "font-weight=400", clearMark: (m) => m.type.name == "strong" },
25
- {
26
- style: "font-weight",
27
- getAttrs: (value) => {
28
- return typeof value === "string" && /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null;
29
- }
12
+ parseDOM: [
13
+ { tag: "strong" },
14
+ // This works around a Google Docs misbehavior where
15
+ // pasted content will be inexplicably wrapped in `<b>`
16
+ // tags with a font-weight normal.
17
+ {
18
+ tag: "b",
19
+ getAttrs: (node) => {
20
+ return typeof node !== "string" && node.style.fontWeight !== "normal" && null;
21
+ }
22
+ },
23
+ { style: "font-weight=400", clearMark: (m) => m.type.name == "strong" },
24
+ {
25
+ style: "font-weight",
26
+ getAttrs: (value) => {
27
+ return typeof value === "string" && /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null;
30
28
  }
31
- ],
32
- toDOM() {
33
- return ["em", 0];
34
29
  }
30
+ ],
31
+ toDOM() {
32
+ return ["strong", 0];
35
33
  }
36
34
  });
37
35
  }
38
- function addBoldCommands() {
39
- return addCommands({
36
+ function defineBoldCommands() {
37
+ return defineCommands({
40
38
  toggleBold: () => toggleMark({ type: "bold" })
41
39
  });
42
40
  }
43
- function addBoldKeymap() {
44
- return addKeymap({
41
+ function defineBoldKeymap() {
42
+ return defineKeymap({
45
43
  "Mod-b": toggleMark({ type: "bold" })
46
44
  });
47
45
  }
48
- function addBold() {
49
- return defineExtension([addBoldSpec(), addBoldCommands(), addBoldKeymap()]);
46
+ function defineBold() {
47
+ return union([defineBoldSpec(), defineBoldCommands(), defineBoldKeymap()]);
50
48
  }
51
49
  export {
52
- addBold,
53
- addBoldCommands,
54
- addBoldKeymap,
55
- addBoldSpec
50
+ defineBold,
51
+ defineBoldCommands,
52
+ defineBoldKeymap,
53
+ defineBoldSpec
56
54
  };
@@ -0,0 +1,15 @@
1
+ export { defineCodeBlock_alias_1 as defineCodeBlock } from './_tsup-dts-rollup';
2
+ export { defineCodeBlockCommands_alias_1 as defineCodeBlockCommands } from './_tsup-dts-rollup';
3
+ export { defineCodeBlockHighlight_alias_1 as defineCodeBlockHighlight } from './_tsup-dts-rollup';
4
+ export { HighlightParser_alias_1 as HighlightParser } from './_tsup-dts-rollup';
5
+ export { defineCodeBlockEnterRule_alias_1 as defineCodeBlockEnterRule } from './_tsup-dts-rollup';
6
+ export { defineCodeBlockInputRule_alias_1 as defineCodeBlockInputRule } from './_tsup-dts-rollup';
7
+ export { defineCodeBlockShiki_alias_1 as defineCodeBlockShiki } from './_tsup-dts-rollup';
8
+ export { defineCodeBlockSpec_alias_1 as defineCodeBlockSpec } from './_tsup-dts-rollup';
9
+ export { CodeBlockAttrs_alias_1 as CodeBlockAttrs } from './_tsup-dts-rollup';
10
+ export { shikiBundledLanguagesInfo } from './_tsup-dts-rollup';
11
+ export { shikiBundledThemesInfo } from './_tsup-dts-rollup';
12
+ export { ShikiBundledLanguage } from './_tsup-dts-rollup';
13
+ export { ShikiBundledLanguageInfo } from './_tsup-dts-rollup';
14
+ export { ShikiBundledTheme } from './_tsup-dts-rollup';
15
+ export { ShikiBundledThemeInfo } from './_tsup-dts-rollup';