@prosekit/extensions 0.7.1 → 0.7.3

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 (32) hide show
  1. package/dist/_tsup-dts-rollup.d.ts +100 -120
  2. package/dist/chunk-GPSAJOJA.js +188 -0
  3. package/dist/{chunk-PYT3MOTF.js → chunk-LVMTQOWG.js} +31 -14
  4. package/dist/{chunk-2JYT2MT7.js → chunk-OJCMRVEY.js} +36 -21
  5. package/dist/list/style.css +9 -5
  6. package/dist/placeholder/style.css +1 -1
  7. package/dist/prosekit-extensions-autocomplete.js +62 -33
  8. package/dist/prosekit-extensions-blockquote.js +2 -2
  9. package/dist/prosekit-extensions-bold.js +7 -3
  10. package/dist/prosekit-extensions-code-block.js +77 -41
  11. package/dist/prosekit-extensions-code.js +1 -1
  12. package/dist/prosekit-extensions-commit.js +70 -30
  13. package/dist/prosekit-extensions-enter-rule.js +1 -1
  14. package/dist/prosekit-extensions-heading.d.ts +4 -4
  15. package/dist/prosekit-extensions-heading.js +66 -36
  16. package/dist/prosekit-extensions-image.js +14 -5
  17. package/dist/prosekit-extensions-input-rule.js +1 -1
  18. package/dist/prosekit-extensions-italic.js +1 -1
  19. package/dist/prosekit-extensions-link.js +27 -14
  20. package/dist/prosekit-extensions-list.d.ts +8 -2
  21. package/dist/prosekit-extensions-list.js +64 -35
  22. package/dist/prosekit-extensions-mark-rule.js +1 -1
  23. package/dist/prosekit-extensions-mention.js +6 -4
  24. package/dist/prosekit-extensions-placeholder.js +16 -7
  25. package/dist/prosekit-extensions-readonly.js +1 -1
  26. package/dist/prosekit-extensions-search.js +8 -5
  27. package/dist/prosekit-extensions-strike.js +1 -1
  28. package/dist/prosekit-extensions-table.js +68 -30
  29. package/dist/prosekit-extensions-text-align.js +4 -2
  30. package/dist/prosekit-extensions-virtual-selection.js +11 -6
  31. package/package.json +8 -8
  32. package/dist/chunk-ZPEMHYTU.js +0 -140
@@ -16,23 +16,31 @@ import { Step } from "@prosekit/pm/transform";
16
16
  import { Decoration, DecorationSet } from "@prosekit/pm/view";
17
17
  import { ChangeSet } from "prosemirror-changeset";
18
18
  function getChanges(doc, parent, steps) {
19
- return ChangeSet.create(parent).addSteps(
19
+ const initSet = ChangeSet.create(parent);
20
+ const currSet = initSet.addSteps(
20
21
  doc,
21
22
  steps.map((step) => step.getMap()),
22
23
  null
23
- ).changes;
24
+ );
25
+ return currSet.changes;
24
26
  }
25
27
  function renderDivWeight(view) {
26
- return view.dom.ownerDocument.createElement("div");
28
+ const document = view.dom.ownerDocument;
29
+ return document.createElement("div");
27
30
  }
28
31
  function decorateDeletionSlice(slice) {
29
32
  let { openStart, openEnd, content } = slice;
30
- for (; openStart > 0 && openEnd > 0 && content.childCount === 1; )
31
- openStart--, openEnd--, content = content.child(0).content;
32
- if (content.childCount === 0)
33
+ while (openStart > 0 && openEnd > 0 && content.childCount === 1) {
34
+ openStart--;
35
+ openEnd--;
36
+ content = content.child(0).content;
37
+ }
38
+ if (content.childCount === 0) {
33
39
  return [];
40
+ }
34
41
  if (openStart > 0 && openEnd > 0 && content.childCount === 2) {
35
- let head = Fragment.from([content.child(0)]), tail = Fragment.from([content.child(1)]);
42
+ const head = Fragment.from([content.child(0)]);
43
+ const tail = Fragment.from([content.child(1)]);
36
44
  return [
37
45
  ...decorateDeletionSlice(new Slice(head, openStart, openStart)),
38
46
  renderDivWeight,
@@ -40,32 +48,44 @@ function decorateDeletionSlice(slice) {
40
48
  ];
41
49
  }
42
50
  if (openStart > 0 && content.childCount >= 2) {
43
- let nodes = collectNodes(content), head = Fragment.from(nodes.slice(0, 1)), body = Fragment.from(nodes.slice(1));
51
+ const nodes = collectNodes(content);
52
+ const head = Fragment.from(nodes.slice(0, 1));
53
+ const body = Fragment.from(nodes.slice(1));
44
54
  return [
45
55
  ...decorateDeletionSlice(new Slice(head, openStart, openStart)),
46
56
  ...decorateDeletionSlice(new Slice(body, 0, openEnd))
47
57
  ];
48
58
  }
49
59
  if (openEnd > 0 && content.childCount >= 2) {
50
- let nodes = collectNodes(content), body = Fragment.from(nodes.slice(0, -1)), tail = Fragment.from(nodes.slice(-1));
60
+ const nodes = collectNodes(content);
61
+ const body = Fragment.from(nodes.slice(0, -1));
62
+ const tail = Fragment.from(nodes.slice(-1));
51
63
  return [
52
64
  ...decorateDeletionSlice(new Slice(body, openStart, 0)),
53
65
  ...decorateDeletionSlice(new Slice(tail, openEnd, openEnd))
54
66
  ];
55
67
  }
56
- let schema = content.child(0).type.schema, isInline = content.child(0).isInline;
57
- return [(view) => {
58
- let document = view.dom.ownerDocument, element = document.createElement(isInline ? "span" : "div");
59
- return DOMSerializer.fromSchema(schema).serializeFragment(content, { document }, element), element.classList.add("prosekit-commit-deletion"), element;
60
- }];
68
+ const schema = content.child(0).type.schema;
69
+ const isInline = content.child(0).isInline;
70
+ const render = (view) => {
71
+ const document = view.dom.ownerDocument;
72
+ const element = document.createElement(isInline ? "span" : "div");
73
+ const serializer = DOMSerializer.fromSchema(schema);
74
+ serializer.serializeFragment(content, { document }, element);
75
+ element.classList.add("prosekit-commit-deletion");
76
+ return element;
77
+ };
78
+ return [render];
61
79
  }
62
80
  function decorateDeletion(doc, from, to, pos) {
63
- let slice = doc.slice(from, to), renders = decorateDeletionSlice(slice), count = renders.length;
81
+ const slice = doc.slice(from, to);
82
+ const renders = decorateDeletionSlice(slice);
83
+ const count = renders.length;
64
84
  return renders.map(
65
85
  (render, index) => Decoration.widget(pos, render, {
66
86
  side: -20 - count + index,
67
87
  // Ensure the text in the decoration is able to be selected.
68
- ignoreSelection: !0
88
+ ignoreSelection: true
69
89
  })
70
90
  );
71
91
  }
@@ -73,27 +93,42 @@ function decorateAddition(from, to) {
73
93
  return Decoration.inline(from, to, { class: "prosekit-commit-addition" });
74
94
  }
75
95
  function decorateChange(prev, change) {
76
- let { fromA, toA, fromB, toB } = change, decorations = [];
77
- return fromA < toA && decorations.push(...decorateDeletion(prev, fromA, toA, fromB)), fromB < toB && decorations.push(decorateAddition(fromB, toB)), decorations;
96
+ const { fromA, toA, fromB, toB } = change;
97
+ const decorations = [];
98
+ if (fromA < toA) {
99
+ decorations.push(...decorateDeletion(prev, fromA, toA, fromB));
100
+ }
101
+ if (fromB < toB) {
102
+ decorations.push(decorateAddition(fromB, toB));
103
+ }
104
+ return decorations;
78
105
  }
79
106
  function decorateCommit(doc, parent, steps) {
80
- let decorations = getChanges(doc, parent, steps).flatMap(
107
+ const changes = getChanges(doc, parent, steps);
108
+ const decorations = changes.flatMap(
81
109
  (change) => decorateChange(parent, change)
82
110
  );
83
111
  return DecorationSet.create(doc, decorations);
84
112
  }
85
113
  function defineCommitDecoration(commit) {
86
- let key = new PluginKey("prosekit-commit-decoration");
114
+ const key = new PluginKey("prosekit-commit-decoration");
87
115
  return definePlugin(({ schema }) => {
88
- let parent = schema.nodeFromJSON(commit.parent), steps = commit.steps.map((step) => Step.fromJSON(schema, step));
116
+ const parent = schema.nodeFromJSON(commit.parent);
117
+ const steps = commit.steps.map((step) => Step.fromJSON(schema, step));
89
118
  return new ProseMirrorPlugin({
90
119
  key,
91
120
  state: {
92
- init: (_, instance) => decorateCommit(instance.doc, parent, steps),
93
- apply: (tr, deco) => deco.map(tr.mapping, tr.doc)
121
+ init: (_, instance) => {
122
+ return decorateCommit(instance.doc, parent, steps);
123
+ },
124
+ apply: (tr, deco) => {
125
+ return deco.map(tr.mapping, tr.doc);
126
+ }
94
127
  },
95
128
  props: {
96
- decorations: (state) => key.getState(state)
129
+ decorations: (state) => {
130
+ return key.getState(state);
131
+ }
97
132
  }
98
133
  });
99
134
  });
@@ -115,30 +150,35 @@ var CommitRecorder = class {
115
150
  * will be returned if there is no change.
116
151
  */
117
152
  commit() {
118
- if (!this.parent || !this.doc || this.steps.length === 0 || this.parent.eq(this.doc))
153
+ if (!this.parent || !this.doc || this.steps.length === 0 || this.parent.eq(this.doc)) {
119
154
  return null;
120
- let commit = {
155
+ }
156
+ const commit = {
121
157
  doc: jsonFromNode(this.doc),
122
158
  parent: jsonFromNode(this.parent),
123
159
  steps: this.steps.map((step) => step.toJSON())
124
160
  };
125
- return this.init(this.doc), commit;
161
+ this.init(this.doc);
162
+ return commit;
126
163
  }
127
164
  /**
128
165
  * @internal
129
166
  */
130
167
  init(doc) {
131
- this.doc = doc, this.parent = doc, this.steps = [];
168
+ this.doc = doc;
169
+ this.parent = doc;
170
+ this.steps = [];
132
171
  }
133
172
  /**
134
173
  * @internal
135
174
  */
136
175
  apply(tr) {
137
- this.steps.push(...tr.steps), this.doc = tr.doc;
176
+ this.steps.push(...tr.steps);
177
+ this.doc = tr.doc;
138
178
  }
139
179
  };
140
180
  function defineCommitRecorder(commitRecorder) {
141
- let key = new PluginKey("prosekit-commit-recorder");
181
+ const key = new PluginKey("prosekit-commit-recorder");
142
182
  return definePlugin(
143
183
  new ProseMirrorPlugin({
144
184
  key,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  defineEnterRule,
3
3
  defineTextBlockEnterRule
4
- } from "./chunk-2JYT2MT7.js";
4
+ } from "./chunk-OJCMRVEY.js";
5
5
  export {
6
6
  defineEnterRule,
7
7
  defineTextBlockEnterRule
@@ -1,6 +1,6 @@
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
1
  export { defineHeading } from './_tsup-dts-rollup';
2
+ export { defineHeadingCommands_alias_1 as defineHeadingCommands } from './_tsup-dts-rollup';
3
+ export { defineHeadingInputRule } from './_tsup-dts-rollup';
4
+ export { defineHeadingKeymap } from './_tsup-dts-rollup';
5
+ export { defineHeadingSpec } from './_tsup-dts-rollup';
6
6
  export { HeadingAttrs } from './_tsup-dts-rollup';
@@ -1,25 +1,83 @@
1
1
  import {
2
2
  defineTextBlockInputRule
3
- } from "./chunk-PYT3MOTF.js";
3
+ } from "./chunk-LVMTQOWG.js";
4
4
 
5
5
  // src/heading/index.ts
6
+ import { union } from "@prosekit/core";
7
+
8
+ // src/heading/commands.ts
6
9
  import {
7
10
  defineCommands,
8
- defineKeymap,
9
- defineNodeSpec,
10
11
  insertNode,
11
12
  setBlockType,
12
- toggleNode,
13
- union,
13
+ toggleNode
14
+ } from "@prosekit/core";
15
+ function defineHeadingCommands() {
16
+ return defineCommands({
17
+ setHeading: (attrs) => {
18
+ return setBlockType({ type: "heading", attrs });
19
+ },
20
+ insertHeading: (attrs) => {
21
+ return insertNode({ type: "heading", attrs });
22
+ },
23
+ toggleHeading: (attrs) => {
24
+ return toggleNode({ type: "heading", attrs });
25
+ }
26
+ });
27
+ }
28
+
29
+ // src/heading/input-rule.ts
30
+ function defineHeadingInputRule() {
31
+ return defineTextBlockInputRule({
32
+ regex: /^(#{1,6})\s$/,
33
+ type: "heading",
34
+ attrs: (match) => {
35
+ var _a, _b;
36
+ const level = (_b = (_a = match[1]) == null ? void 0 : _a.length) != null ? _b : 1;
37
+ return { level };
38
+ }
39
+ });
40
+ }
41
+
42
+ // src/heading/keymap.ts
43
+ import {
44
+ defineKeymap,
45
+ isAtBlockStart,
46
+ toggleNode as toggleNode2,
47
+ unsetBlockType,
14
48
  withSkipCodeBlock
15
49
  } from "@prosekit/core";
50
+ function toggleHeadingKeybinding(level) {
51
+ return withSkipCodeBlock(toggleNode2({ type: "heading", attrs: { level } }));
52
+ }
53
+ var backspaceUnsetHeading = (state, dispatch, view) => {
54
+ const $pos = isAtBlockStart(state, view);
55
+ if (($pos == null ? void 0 : $pos.parent.type.name) === "heading") {
56
+ return unsetBlockType()(state, dispatch, view);
57
+ }
58
+ return false;
59
+ };
60
+ function defineHeadingKeymap() {
61
+ return defineKeymap({
62
+ "mod-1": toggleHeadingKeybinding(1),
63
+ "mod-2": toggleHeadingKeybinding(2),
64
+ "mod-3": toggleHeadingKeybinding(3),
65
+ "mod-4": toggleHeadingKeybinding(4),
66
+ "mod-5": toggleHeadingKeybinding(5),
67
+ "mod-6": toggleHeadingKeybinding(6),
68
+ Backspace: backspaceUnsetHeading
69
+ });
70
+ }
71
+
72
+ // src/heading/spec.ts
73
+ import { defineNodeSpec } from "@prosekit/core";
16
74
  function defineHeadingSpec() {
17
75
  return defineNodeSpec({
18
76
  name: "heading",
19
77
  attrs: { level: { default: 1 } },
20
78
  content: "inline*",
21
79
  group: "block",
22
- defining: !0,
80
+ defining: true,
23
81
  parseDOM: [
24
82
  { tag: "h1", attrs: { level: 1 } },
25
83
  { tag: "h2", attrs: { level: 2 } },
@@ -33,36 +91,8 @@ function defineHeadingSpec() {
33
91
  }
34
92
  });
35
93
  }
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
- return { level: (_b = (_a = match[1]) == null ? void 0 : _a.length) != null ? _b : 1 };
56
- }
57
- });
58
- }
59
- function defineHeadingCommands() {
60
- return defineCommands({
61
- setHeading: (attrs) => setBlockType({ type: "heading", attrs }),
62
- insertHeading: (attrs) => insertNode({ type: "heading", attrs }),
63
- toggleHeading: (attrs) => toggleNode({ type: "heading", attrs })
64
- });
65
- }
94
+
95
+ // src/heading/index.ts
66
96
  function defineHeading() {
67
97
  return union([
68
98
  defineHeadingSpec(),
@@ -12,22 +12,31 @@ function defineImageSpec() {
12
12
  src: { default: null }
13
13
  },
14
14
  group: "block",
15
- defining: !0,
16
- draggable: !0,
15
+ defining: true,
16
+ draggable: true,
17
17
  parseDOM: [
18
18
  {
19
19
  tag: "img[src]",
20
- getAttrs: (element) => typeof element == "string" ? { src: null } : { src: element.getAttribute("src") || null }
20
+ getAttrs: (element) => {
21
+ if (typeof element === "string") {
22
+ return { src: null };
23
+ }
24
+ const src = element.getAttribute("src") || null;
25
+ return { src };
26
+ }
21
27
  }
22
28
  ],
23
29
  toDOM(node) {
24
- return ["img", node.attrs];
30
+ const attrs = node.attrs;
31
+ return ["img", attrs];
25
32
  }
26
33
  });
27
34
  }
28
35
  function defineImageCommands() {
29
36
  return defineCommands({
30
- insertImage: (attrs) => insertNode({ type: "image", attrs })
37
+ insertImage: (attrs) => {
38
+ return insertNode({ type: "image", attrs });
39
+ }
31
40
  });
32
41
  }
33
42
  function defineImage() {
@@ -4,7 +4,7 @@ import {
4
4
  defineMarkInputRule,
5
5
  defineTextBlockInputRule,
6
6
  defineWrappingInputRule
7
- } from "./chunk-PYT3MOTF.js";
7
+ } from "./chunk-LVMTQOWG.js";
8
8
  export {
9
9
  createMarkInputRule,
10
10
  defineInputRule,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineMarkInputRule
3
- } from "./chunk-PYT3MOTF.js";
3
+ } from "./chunk-LVMTQOWG.js";
4
4
 
5
5
  // src/italic/index.ts
6
6
  import {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  defineMarkRule
3
- } from "./chunk-ZPEMHYTU.js";
3
+ } from "./chunk-GPSAJOJA.js";
4
4
  import {
5
5
  defineEnterRule
6
- } from "./chunk-2JYT2MT7.js";
6
+ } from "./chunk-OJCMRVEY.js";
7
7
  import {
8
8
  defineInputRule
9
- } from "./chunk-PYT3MOTF.js";
9
+ } from "./chunk-LVMTQOWG.js";
10
10
 
11
11
  // src/link/index.ts
12
12
  import {
@@ -21,29 +21,41 @@ import {
21
21
  import { InputRule } from "@prosekit/pm/inputrules";
22
22
 
23
23
  // src/link/link-regex.ts
24
- var TLD_RE_PATTERN = "a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)", PUNCTUATION_CHAR_PATTERN = "\\.\\,\\;\\!\\?", STOP_CHAR_PATTERN = "[" + PUNCTUATION_CHAR_PATTERN + "]", END_CHAR_PATTERN = "[^\\s" + PUNCTUATION_CHAR_PATTERN + "]", LINK_RE_BASE_PATTERN = (
24
+ var TLD_RE_PATTERN = "a(?:a(?:a|rp)|b(?:arth|b(?:ott|vie)?|c|le|ogado|udhabi)|c(?:ademy|c(?:enture|ountants?)|o|tor)?|d(?:s|ult)?|e(?:g|ro|tna)?|f(?:l|rica)?|g(?:akhan|ency)?|i(?:g|r(?:bus|force|tel))?|kdn|l(?:faromeo|i(?:baba|pay)|l(?:finanz|state|y)|s(?:ace|tom))?|m(?:azon|e(?:rican(?:express|family)|x)|fam|ica|sterdam)?|n(?:alytics|droid|quan|z)|ol?|p(?:artments|p(?:le)?)|q(?:uarelle)?|r(?:a(?:b|mco)|chi|my|pa|te?)?|s(?:da|ia|sociates)?|t(?:hleta|torney)?|u(?:ction|di(?:ble|o)?|spost|t(?:hor|os?))?|vianca|ws?|xa?|z(?:ure)?)|b(?:a(?:by|idu|n(?:a(?:mex|narepublic)|d|k)|r(?:c(?:elona|lay(?:card|s))|efoot|gains)?|s(?:eball|ketball)|uhaus|yern)?|b(?:c|t|va)?|c[gn]|d|e(?:a(?:ts|uty)|er|ntley|rlin|st(?:buy)?|t)?|f|g|h(?:arti)?|i(?:ble|d|ke|ngo?|o|z)?|j|l(?:ack(?:friday)?|o(?:ckbuster|g|omberg)|ue)|m[sw]?|n(?:pparibas)?|o(?:ats|ehringer|fa|m|nd|o(?:k(?:ing)?)?|s(?:ch|t(?:ik|on))|t|utique|x)?|r(?:adesco|idgestone|o(?:adway|ker|ther)|ussels)?|s|t|u(?:ild(?:ers)?|siness|y|zz)|v|w|y|zh?)|c(?:a(?:b|fe|l(?:l|vinklein)?|m(?:era|p)?|non|p(?:etown|ital(?:one)?)|r(?:avan|ds|e(?:ers?)?|s)?|s(?:a|e|h|ino)|t(?:ering|holic)?)?|b(?:a|n|re|s)|c|d|e(?:nter|o|rn)|f[ad]?|g|h(?:a(?:n(?:el|nel)|rity|se|t)|eap|intai|r(?:istmas|ome)|urch)?|i(?:priani|rcle|sco|t(?:adel|ic?|y(?:eats)?))?|k|l(?:aims|eaning|i(?:ck|ni(?:c|que))|o(?:thing|ud)|ub(?:med)?)?|m|n|o(?:ach|des|ffee|l(?:lege|ogne)|m(?:cast|m(?:bank|unity)|p(?:a(?:ny|re)|uter)|sec)?|n(?:dos|s(?:truction|ulting)|t(?:act|ractors))|o(?:king(?:channel)?|l|p)|rsica|u(?:ntry|pons?|rses))?|pa|r(?:edit(?:card|union)?|icket|own|s|uises?)?|u(?:isinella)?|v|w|x|y(?:mru|ou)?|z)|d(?:a(?:bur|d|nce|t(?:a|e|ing|sun)|y)|clk|ds|e(?:al(?:er|s)?|gree|l(?:ivery|l|oitte|ta)|mocrat|nt(?:al|ist)|si(?:gn)?|v)?|hl|i(?:amonds|et|gital|rect(?:ory)?|s(?:co(?:unt|ver)|h)|y)|j|k|m|np|o(?:c(?:s|tor)|g|mains|t|wnload)?|rive|tv|u(?:bai|nlop|pont|rban)|v(?:ag|r)|z)|e(?:a(?:rth|t)|co?|d(?:eka|u(?:cation)?)|e|g|m(?:ail|erck)|n(?:ergy|gineer(?:ing)?|terprises)|pson|quipment|r(?:icsson|ni)?|s(?:q|tate)?|t(?:isalat)?|u(?:rovision|s)?|vents|x(?:change|p(?:ert|osed|ress)|traspace))|f(?:a(?:ge|i(?:l|rwinds|th)|mily|ns?|rm(?:ers)?|s(?:hion|t))|e(?:dex|edback|rr(?:ari|ero))|i(?:at|d(?:elity|o)|lm|na(?:l|nc(?:e|ial))|r(?:e(?:stone)?|mdale)|sh(?:ing)?|t(?:ness)?)?|j|k|l(?:i(?:ckr|ghts|r)|o(?:rist|wers)|y)|m|o(?:o(?:d(?:network)?|tball)?|r(?:d|ex|sale|um)|undation|x)?|r(?:e(?:e|senius)|l|o(?:gans|nt(?:door|ier)))?|tr|u(?:jitsu|nd?|rniture|tbol)|yi)|g(?:a(?:l(?:l(?:ery|o|up))?|mes?|p|rden|y)?|b(?:iz)?|dn?|e(?:a|nt(?:ing)?|orge)?|f|g(?:ee)?|h|i(?:fts?|v(?:es|ing))?|l(?:ass|e|ob(?:al|o))?|m(?:ail|bh|o|x)?|n|o(?:daddy|l(?:d(?:point)?|f)|o(?:dyear|g(?:le)?)?|p|t|v)|p|q|r(?:a(?:inger|phics|tis)|een|ipe|o(?:cery|up))?|s|t|u(?:ardian|cci|ge|i(?:de|tars)|ru)?|w|y)|h(?:a(?:ir|mburg|ngout|us)|bo|dfc(?:bank)?|e(?:alth(?:care)?|l(?:p|sinki)|r(?:e|mes))|gtv|i(?:phop|samitsu|tachi|v)|kt?|m|n|o(?:ckey|l(?:dings|iday)|me(?:depot|goods|s(?:ense)?)|nda|rse|s(?:pital|t(?:ing)?)|t(?:el(?:es|s)|mail)?|use|w)|r|sbc|t|u(?:ghes)?|y(?:att|undai))|i(?:bm|c(?:bc|e|u)|d|e(?:ee)?|fm|kano|l|m(?:amat|db|mo(?:bilien)?)?|n(?:c|dustries|f(?:initi|o)|g|k|s(?:titute|ur(?:ance|e))|t(?:ernational|uit)?|vestments)?|o|piranga|q|r(?:ish)?|s(?:maili|t(?:anbul)?)?|t(?:au|v)?)|j(?:a(?:guar|va)|cb|e(?:ep|tzt|welry)?|io|ll|mp?|nj|o(?:b(?:s|urg)|t|y)?|p(?:morgan|rs)?|u(?:egos|niper))|k(?:aufen|ddi|e(?:rry(?:hotels|logistics|properties))?|fh|g|h|i(?:a|ds|m|nd(?:er|le)|tchen|wi)?|m|n|o(?:eln|matsu|sher)|p(?:mg|n)?|r(?:d|ed)?|uokgroup|w|y(?:oto)?|z)|l(?:a(?:caixa|m(?:borghini|er)|n(?:c(?:aster|ia)|d(?:rover)?|xess)|salle|t(?:ino|robe)?|w(?:yer)?)?|b|c|ds|e(?:ase|clerc|frak|g(?:al|o)|xus)|gbt|i(?:dl|fe(?:insurance|style)?|ghting|ke|lly|m(?:ited|o)|n(?:coln|de|k)|psy|v(?:e|ing))?|k|l[cp]|o(?:ans?|c(?:ker|us)|l|ndon|tt[eo]|ve)|pl(?:financial)?|r|s|t(?:da?)?|u(?:ndbeck|x(?:e|ury))?|v|y)|m(?:a(?:cys|drid|i(?:f|son)|keup|n(?:agement|go)?|p|r(?:ket(?:ing|s)?|riott|shalls)|serati|ttel)?|ba|c(?:kinsey)?|d|e(?:d(?:ia)?|et|lbourne|m(?:e|orial)|nu?|rckmsd)?|g|h|i(?:ami|crosoft|l|n[it]|t(?:subishi)?)|k|l[bs]?|ma?|n|o(?:bi(?:le)?|da|e|i|m|n(?:ash|ey|ster)|r(?:mon|tgage)|scow|to(?:rcycles)?|v(?:ie)?)?|p|q|r|sd?|t[nr]?|u(?:s(?:eum|ic)|tual)?|v|w|x|y|z)|n(?:a(?:b|goya|me|tura|vy)?|ba|c|e(?:c|t(?:bank|flix|work)?|ustar|ws?|x(?:t(?:direct)?|us))?|fl?|go?|hk|i(?:co|k(?:e|on)|nja|ssa[ny])?|l|o(?:kia|rt(?:hwesternmutual|on)|w(?:ruz|tv)?)?|p|r[aw]?|tt|u|yc|z)|o(?:b(?:i|server)|ffice|kinawa|l(?:ayan(?:group)?|dnavy|lo)|m(?:ega)?|n(?:e|g|l(?:ine)?)|oo|pen|r(?:a(?:cle|nge)|g(?:anic)?|igins)|saka|t(?:suka|t)|vh)|p(?:a(?:ge|nasonic|r(?:is|s|t(?:ners|s|y))|ssagens|y)?|ccw|et?|f(?:izer)?|g|h(?:armacy|d|ilips|o(?:ne|to(?:graphy|s)?)|ysio)?|i(?:c(?:s|t(?:et|ures))|d|n[gk]?|oneer|zza)|k|l(?:a(?:ce|y(?:station)?)|u(?:mbing|s))?|m|nc?|o(?:hl|ker|litie|rn|st)|r(?:a(?:merica|xi)|ess|ime|o(?:d(?:uctions)?|f|gressive|mo|pert(?:ies|y)|tection)?|u(?:dential)?)?|s|t|ub|wc?|y)|q(?:a|pon|ue(?:bec|st))|r(?:a(?:cing|dio)|e(?:a(?:d|l(?:estate|t(?:or|y)))|cipes|d(?:stone|umbrella)?|hab|i(?:sen?|t)|liance|n(?:t(?:als)?)?|p(?:air|ort|ublican)|st(?:aurant)?|views?|xroth)?|i(?:c(?:h(?:ardli)?|oh)|l|o|p)|o(?:c(?:her|ks)|deo|gers|om)?|s(?:vp)?|u(?:gby|hr|n)?|we?|yukyu)|s(?:a(?:arland|fe(?:ty)?|kura|l(?:e|on)|ms(?:club|ung)|n(?:dvik(?:coromant)?|ofi)|p|rl|s|ve|xo)?|b[is]?|c(?:a|b|h(?:aeffler|midt|o(?:larships|ol)|ule|warz)|ience|ot)?|d|e(?:a(?:rch|t)|cur(?:e|ity)|ek|lect|ner|rvices|ven|w|xy?)?|fr|g|h(?:a(?:ngrila|rp|w)|ell|i(?:a|ksha)|o(?:es|p(?:ping)?|uji|w(?:time)?))?|i(?:lk|n(?:a|gles)|te)?|j|k(?:in?|y(?:pe)?)?|l(?:ing)?|m(?:art|ile)?|n(?:cf)?|o(?:c(?:cer|ial)|ft(?:bank|ware)|hu|l(?:ar|utions)|n[gy]|y)?|p(?:a(?:ce)?|o(?:rt|t))|rl?|s|t(?:a(?:da|ples|r|te(?:bank|farm))|c(?:group)?|o(?:ckholm|r(?:age|e))|ream|ud(?:io|y)|yle)?|u(?:cks|pp(?:l(?:ies|y)|ort)|r(?:f|gery)|zuki)?|v|w(?:atch|iss)|x|y(?:dney|stems)?|z)|t(?:a(?:b|ipei|lk|obao|rget|t(?:a(?:motors|r)|too)|xi?)|ci?|dk?|e(?:am|ch(?:nology)?|l|masek|nnis|va)|f|g|h(?:d|eat(?:er|re))?|i(?:aa|ckets|enda|ffany|ps|r(?:es|ol))|j(?:maxx|x)?|k(?:maxx)?|l|m(?:all)?|n|o(?:day|kyo|ols|p|ray|shiba|tal|urs|wn|y(?:ota|s))?|r(?:a(?:d(?:e|ing)|ining|vel(?:channel|ers(?:insurance)?)?)|ust|v)?|t|u(?:be|i|nes|shu)|vs?|w|z)|u(?:a|b(?:ank|s)|g|k|n(?:i(?:com|versity)|o)|ol|ps|s|y|z)|v(?:a(?:cations|n(?:a|guard))?|c|e(?:gas|ntures|r(?:isign|sicherung)|t)?|g|i(?:ajes|deo|g|king|llas|n|p|rgin|s(?:a|ion)|v[ao])?|laanderen|n|o(?:dka|l(?:kswagen|vo)|t(?:e|ing|o)|yage)|u(?:elos)?)|w(?:a(?:l(?:es|mart|ter)|ng(?:gou)?|tch(?:es)?)|e(?:ather(?:channel)?|b(?:cam|er|site)|d(?:ding)?|i(?:bo|r))|f|hoswho|i(?:en|ki|lliamhill|n(?:dows|e|ners)?)|me|o(?:lterskluwer|odside|r(?:ks?|ld)|w)|s|t[cf])|x(?:box|erox|finity|i(?:huan|n)|xx|yz)|y(?:a(?:chts|hoo|maxun|ndex)|e|o(?:dobashi|ga|kohama|u(?:tube)?)|t|un)|z(?:a(?:ppos|ra)?|ero|ip|m|one|uerich|w)";
25
+ var PUNCTUATION_CHAR_PATTERN = "\\.\\,\\;\\!\\?";
26
+ var STOP_CHAR_PATTERN = "[" + PUNCTUATION_CHAR_PATTERN + "]";
27
+ var END_CHAR_PATTERN = "[^\\s" + PUNCTUATION_CHAR_PATTERN + "]";
28
+ var LINK_RE_BASE_PATTERN = (
25
29
  // start of the link group
26
30
  "((?:(?:(?:https?:)?\\/\\/)?(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:" + TLD_RE_PATTERN + "))(?::\\d{2,5})?(?:/(?:\\S*" + END_CHAR_PATTERN + ")?)?(?:\\?(?:\\S*" + END_CHAR_PATTERN + "))?(?:\\#(?:\\S*" + END_CHAR_PATTERN + ")?)?)"
27
- ), LINK_ENTER_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + "?$", LINK_INPUT_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + "?\\s$", LINK_MARK_PATTERN = LINK_RE_BASE_PATTERN + "(?=" + STOP_CHAR_PATTERN + "|\\s|$)", LINK_ENTER_RE = new RegExp(LINK_ENTER_PATTERN, "gi"), LINK_INPUT_RE = new RegExp(LINK_INPUT_PATTERN, "gi"), LINK_MARK_RE = new RegExp(LINK_MARK_PATTERN, "gi");
31
+ );
32
+ var LINK_ENTER_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + "?$";
33
+ var LINK_INPUT_PATTERN = LINK_RE_BASE_PATTERN + STOP_CHAR_PATTERN + "?\\s$";
34
+ var LINK_MARK_PATTERN = LINK_RE_BASE_PATTERN + "(?=" + STOP_CHAR_PATTERN + "|\\s|$)";
35
+ var LINK_ENTER_RE = new RegExp(LINK_ENTER_PATTERN, "gi");
36
+ var LINK_INPUT_RE = new RegExp(LINK_INPUT_PATTERN, "gi");
37
+ var LINK_MARK_RE = new RegExp(LINK_MARK_PATTERN, "gi");
28
38
 
29
39
  // src/link/index.ts
30
40
  function defineLinkSpec() {
31
41
  return defineMarkSpec({
32
42
  name: "link",
33
- inclusive: !1,
43
+ inclusive: false,
34
44
  parseDOM: [
35
45
  {
36
46
  tag: "a[href]",
37
- getAttrs: (dom) => ({
38
- href: dom.getAttribute("href")
39
- })
47
+ getAttrs: (dom) => {
48
+ return {
49
+ href: dom.getAttribute("href")
50
+ };
51
+ }
40
52
  }
41
53
  ],
42
54
  attrs: {
43
55
  href: {}
44
56
  },
45
57
  toDOM(node) {
46
- let { href } = node.attrs;
58
+ const { href } = node.attrs;
47
59
  return ["a", { href }, 0];
48
60
  }
49
61
  });
@@ -59,9 +71,9 @@ function defineLinkCommands() {
59
71
  function defineLinkInputRule() {
60
72
  return defineInputRule(
61
73
  new InputRule(LINK_INPUT_RE, (state, match, from) => {
62
- let href = match[1];
74
+ const href = match[1];
63
75
  if (!href) return null;
64
- let mark = state.schema.marks.link.create({ href });
76
+ const mark = state.schema.marks.link.create({ href });
65
77
  return state.tr.addMark(from, from + href.length, mark).insertText(" ");
66
78
  })
67
79
  );
@@ -70,9 +82,10 @@ function defineLinkEnterRule() {
70
82
  return defineEnterRule({
71
83
  regex: LINK_ENTER_RE,
72
84
  handler: ({ state, from, match }) => {
73
- let href = match[1];
85
+ const href = match[1];
74
86
  if (!href) return null;
75
- let mark = state.schema.marks.link.create({ href }), tr = state.tr.addMark(from, from + href.length, mark);
87
+ const mark = state.schema.marks.link.create({ href });
88
+ const tr = state.tr.addMark(from, from + href.length, mark);
76
89
  return tr.docChanged ? tr : null;
77
90
  }
78
91
  });
@@ -1,7 +1,13 @@
1
1
  export { defineListSpec } from './_tsup-dts-rollup';
2
2
  export { defineListPlugins } from './_tsup-dts-rollup';
3
- export { defineListKeymap } from './_tsup-dts-rollup';
4
3
  export { defineListInputRules } from './_tsup-dts-rollup';
5
- export { defineListCommands } from './_tsup-dts-rollup';
6
4
  export { defineList } from './_tsup-dts-rollup';
7
5
  export { ListDOMSerializer } from './_tsup-dts-rollup';
6
+ export { DedentListOptions } from './_tsup-dts-rollup';
7
+ export { IndentListOptions } from './_tsup-dts-rollup';
8
+ export { ListAttributes } from './_tsup-dts-rollup';
9
+ export { ToggleCollapsedOptions } from './_tsup-dts-rollup';
10
+ export { UnwrapListOptions } from './_tsup-dts-rollup';
11
+ export { WrapInListGetAttrs } from './_tsup-dts-rollup';
12
+ export { defineListCommands_alias_1 as defineListCommands } from './_tsup-dts-rollup';
13
+ export { defineListKeymap } from './_tsup-dts-rollup';
@@ -1,32 +1,78 @@
1
1
  import {
2
2
  defineInputRule
3
- } from "./chunk-PYT3MOTF.js";
3
+ } from "./chunk-LVMTQOWG.js";
4
4
 
5
5
  // src/list/index.ts
6
6
  import {
7
- Priority,
8
- defineCommands,
9
- defineKeymap,
10
7
  defineNodeSpec,
11
8
  definePlugin,
12
- insertNode,
13
- union,
14
- withPriority
9
+ union
15
10
  } from "@prosekit/core";
16
11
  import {
17
- createDedentListCommand,
18
- createIndentListCommand,
19
12
  createListPlugins,
20
13
  createListSpec,
21
- createMoveListCommand,
22
- createSplitListCommand,
23
- createToggleCollapsedCommand,
24
- createToggleListCommand,
25
- createUnwrapListCommand,
26
- createWrapInListCommand,
27
- listInputRules,
28
- listKeymap
14
+ listInputRules
15
+ } from "prosemirror-flat-list";
16
+
17
+ // src/list/commands.ts
18
+ import { defineCommands, insertNode } from "@prosekit/core";
19
+ import {
20
+ createDedentListCommand as dedentList,
21
+ createIndentListCommand as indentList,
22
+ createMoveListCommand as moveList,
23
+ createSplitListCommand as splitList,
24
+ createToggleCollapsedCommand as toggleCollapsed,
25
+ createToggleListCommand as toggleList,
26
+ createUnwrapListCommand as unwrapList,
27
+ createWrapInListCommand as wrapInList
28
+ } from "prosemirror-flat-list";
29
+ function insertList(attrs) {
30
+ return insertNode({ type: "list", attrs });
31
+ }
32
+ function defineListCommands() {
33
+ return defineCommands({
34
+ dedentList,
35
+ indentList,
36
+ moveList,
37
+ splitList,
38
+ toggleCollapsed,
39
+ toggleList,
40
+ unwrapList,
41
+ wrapInList,
42
+ insertList
43
+ });
44
+ }
45
+
46
+ // src/list/keymap.ts
47
+ import { defineKeymap } from "@prosekit/core";
48
+ import { chainCommands, deleteSelection } from "@prosekit/pm/commands";
49
+ import {
50
+ createDedentListCommand,
51
+ createIndentListCommand,
52
+ deleteCommand,
53
+ enterCommand,
54
+ joinCollapsedListBackward,
55
+ joinListUp,
56
+ protectCollapsed
29
57
  } from "prosemirror-flat-list";
58
+ var backspaceCommand = chainCommands(
59
+ protectCollapsed,
60
+ deleteSelection,
61
+ joinListUp,
62
+ joinCollapsedListBackward
63
+ );
64
+ var listKeymap = {
65
+ Enter: enterCommand,
66
+ Backspace: backspaceCommand,
67
+ Delete: deleteCommand,
68
+ "Mod-[": createDedentListCommand(),
69
+ "Mod-]": createIndentListCommand()
70
+ };
71
+ function defineListKeymap() {
72
+ return defineKeymap(listKeymap);
73
+ }
74
+
75
+ // src/list/index.ts
30
76
  import { ListDOMSerializer } from "prosemirror-flat-list";
31
77
  function defineListSpec() {
32
78
  return defineNodeSpec({ ...createListSpec(), name: "list" });
@@ -34,31 +80,14 @@ function defineListSpec() {
34
80
  function defineListPlugins() {
35
81
  return definePlugin(({ schema }) => createListPlugins({ schema }));
36
82
  }
37
- function defineListKeymap() {
38
- return defineKeymap(listKeymap);
39
- }
40
83
  function defineListInputRules() {
41
84
  return union(listInputRules.map(defineInputRule));
42
85
  }
43
- function defineListCommands() {
44
- return defineCommands({
45
- dedentList: createDedentListCommand,
46
- indentList: createIndentListCommand,
47
- moveList: createMoveListCommand,
48
- splitList: createSplitListCommand,
49
- toggleCollapsed: createToggleCollapsedCommand,
50
- toggleList: createToggleListCommand,
51
- unwrapList: createUnwrapListCommand,
52
- wrapInList: createWrapInListCommand,
53
- insertList: (attrs) => insertNode({ type: "list", attrs })
54
- });
55
- }
56
86
  function defineList() {
57
87
  return union([
58
88
  defineListSpec(),
59
89
  defineListPlugins(),
60
- // Use a high priority to override the default key bindings.
61
- withPriority(defineListKeymap(), Priority.high),
90
+ defineListKeymap(),
62
91
  defineListInputRules(),
63
92
  defineListCommands()
64
93
  ]);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineMarkRule
3
- } from "./chunk-ZPEMHYTU.js";
3
+ } from "./chunk-GPSAJOJA.js";
4
4
  export {
5
5
  defineMarkRule
6
6
  };