@caspeco/casper-ui-library 9.8.0 → 9.10.0

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 (113) hide show
  1. package/dist/_virtual/index.js +5 -0
  2. package/dist/_virtual/index2.js +4 -0
  3. package/dist/_virtual/use-sync-external-store-shim.development.js +4 -0
  4. package/dist/_virtual/use-sync-external-store-shim.production.js +4 -0
  5. package/dist/_virtual/with-selector.development.js +4 -0
  6. package/dist/_virtual/with-selector.js +5 -0
  7. package/dist/_virtual/with-selector.production.js +4 -0
  8. package/dist/_virtual/with-selector2.js +4 -0
  9. package/dist/components/button/button-recipe.d.ts.map +1 -1
  10. package/dist/components/button/button-recipe.js +80 -39
  11. package/dist/components/input/input.d.ts +1 -0
  12. package/dist/components/input/input.d.ts.map +1 -1
  13. package/dist/components/input/types.d.ts +1 -1
  14. package/dist/components/input/types.d.ts.map +1 -1
  15. package/dist/components/rich-text-editor/boolean-control.d.ts +3 -0
  16. package/dist/components/rich-text-editor/boolean-control.d.ts.map +1 -0
  17. package/dist/components/rich-text-editor/boolean-control.js +35 -0
  18. package/dist/components/rich-text-editor/extensions.d.ts +4 -0
  19. package/dist/components/rich-text-editor/extensions.d.ts.map +1 -0
  20. package/dist/components/rich-text-editor/extensions.js +37 -0
  21. package/dist/components/rich-text-editor/index.d.ts +26 -0
  22. package/dist/components/rich-text-editor/index.d.ts.map +1 -0
  23. package/dist/components/rich-text-editor/index.js +23 -0
  24. package/dist/components/rich-text-editor/rich-text-editor-context.d.ts +10 -0
  25. package/dist/components/rich-text-editor/rich-text-editor-context.d.ts.map +1 -0
  26. package/dist/components/rich-text-editor/rich-text-editor-context.js +13 -0
  27. package/dist/components/rich-text-editor/rich-text-editor-control.d.ts +11 -0
  28. package/dist/components/rich-text-editor/rich-text-editor-control.d.ts.map +1 -0
  29. package/dist/components/rich-text-editor/rich-text-editor-control.js +202 -0
  30. package/dist/components/rich-text-editor/rich-text-editor-recipe.d.ts +4 -0
  31. package/dist/components/rich-text-editor/rich-text-editor-recipe.d.ts.map +1 -0
  32. package/dist/components/rich-text-editor/rich-text-editor-recipe.js +58 -0
  33. package/dist/components/rich-text-editor/rich-text-editor.composition.d.ts +6 -0
  34. package/dist/components/rich-text-editor/rich-text-editor.composition.d.ts.map +1 -0
  35. package/dist/components/rich-text-editor/rich-text-editor.d.ts +11 -0
  36. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -0
  37. package/dist/components/rich-text-editor/rich-text-editor.js +60 -0
  38. package/dist/components/rich-text-editor/rich-text-editor.test.d.ts +2 -0
  39. package/dist/components/rich-text-editor/rich-text-editor.test.d.ts.map +1 -0
  40. package/dist/components/rich-text-editor/rich-text-editor.visual.test.d.ts +2 -0
  41. package/dist/components/rich-text-editor/rich-text-editor.visual.test.d.ts.map +1 -0
  42. package/dist/components/rich-text-editor/rich-text-renderer.d.ts +3 -0
  43. package/dist/components/rich-text-editor/rich-text-renderer.d.ts.map +1 -0
  44. package/dist/components/rich-text-editor/rich-text-renderer.js +21 -0
  45. package/dist/components/rich-text-editor/translations.d.ts +23 -0
  46. package/dist/components/rich-text-editor/translations.d.ts.map +1 -0
  47. package/dist/components/rich-text-editor/translations.js +120 -0
  48. package/dist/components/rich-text-editor/types.d.ts +30 -0
  49. package/dist/components/rich-text-editor/types.d.ts.map +1 -0
  50. package/dist/components/rich-text-editor/use-rich-text-editor.d.ts +3 -0
  51. package/dist/components/rich-text-editor/use-rich-text-editor.d.ts.map +1 -0
  52. package/dist/components/rich-text-editor/use-rich-text-editor.js +17 -0
  53. package/dist/components/table/helper.d.ts +1 -0
  54. package/dist/components/table/helper.d.ts.map +1 -1
  55. package/dist/components/table/helper.js +8 -4
  56. package/dist/components/table/table-toolbar-settings.d.ts.map +1 -1
  57. package/dist/components/table/table-toolbar-settings.js +172 -56
  58. package/dist/components/table/translations.d.ts +14 -0
  59. package/dist/components/table/translations.d.ts.map +1 -1
  60. package/dist/components/table/translations.js +21 -9
  61. package/dist/components/toggle-button/toggle-button.d.ts.map +1 -1
  62. package/dist/components/toggle-button/toggle-button.js +11 -11
  63. package/dist/components/toggle-button/types.d.ts +2 -0
  64. package/dist/components/toggle-button/types.d.ts.map +1 -1
  65. package/dist/index.d.ts +1 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +774 -763
  68. package/dist/node_modules/@dnd-kit/dom/index.js +13 -13
  69. package/dist/node_modules/@dnd-kit/dom/sortable.js +36 -32
  70. package/dist/node_modules/@dnd-kit/react/sortable.js +11 -10
  71. package/dist/node_modules/@dnd-kit/state/dist/index.js +1 -1
  72. package/dist/node_modules/@tiptap/core/dist/index.js +3792 -0
  73. package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +17 -0
  74. package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js +62 -0
  75. package/dist/node_modules/@tiptap/extension-bold/dist/index.js +85 -0
  76. package/dist/node_modules/@tiptap/extension-code/dist/index.js +54 -0
  77. package/dist/node_modules/@tiptap/extension-code-block/dist/index.js +217 -0
  78. package/dist/node_modules/@tiptap/extension-document/dist/index.js +12 -0
  79. package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js +59 -0
  80. package/dist/node_modules/@tiptap/extension-heading/dist/index.js +63 -0
  81. package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js +56 -0
  82. package/dist/node_modules/@tiptap/extension-italic/dist/index.js +83 -0
  83. package/dist/node_modules/@tiptap/extension-link/dist/index.js +313 -0
  84. package/dist/node_modules/@tiptap/extension-list/dist/index.js +785 -0
  85. package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js +49 -0
  86. package/dist/node_modules/@tiptap/extension-strike/dist/index.js +66 -0
  87. package/dist/node_modules/@tiptap/extension-text/dist/index.js +13 -0
  88. package/dist/node_modules/@tiptap/extension-underline/dist/index.js +65 -0
  89. package/dist/node_modules/@tiptap/extensions/dist/index.js +439 -0
  90. package/dist/node_modules/@tiptap/react/dist/index.js +501 -0
  91. package/dist/node_modules/@tiptap/starter-kit/dist/index.js +28 -0
  92. package/dist/node_modules/fast-equals/dist/es/index.js +324 -0
  93. package/dist/node_modules/linkifyjs/dist/linkify.js +705 -0
  94. package/dist/node_modules/orderedmap/dist/index.js +103 -0
  95. package/dist/node_modules/prosemirror-commands/dist/index.js +388 -0
  96. package/dist/node_modules/prosemirror-dropcursor/dist/index.js +86 -0
  97. package/dist/node_modules/prosemirror-gapcursor/dist/index.js +204 -0
  98. package/dist/node_modules/prosemirror-history/dist/index.js +248 -0
  99. package/dist/node_modules/prosemirror-keymap/dist/index.js +62 -0
  100. package/dist/node_modules/prosemirror-model/dist/index.js +2736 -0
  101. package/dist/node_modules/prosemirror-schema-list/dist/index.js +88 -0
  102. package/dist/node_modules/prosemirror-state/dist/index.js +822 -0
  103. package/dist/node_modules/prosemirror-transform/dist/index.js +1552 -0
  104. package/dist/node_modules/prosemirror-view/dist/index.js +3802 -0
  105. package/dist/node_modules/rope-sequence/dist/index.js +100 -0
  106. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +58 -0
  107. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +57 -0
  108. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +58 -0
  109. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +46 -0
  110. package/dist/node_modules/use-sync-external-store/shim/index.js +10 -0
  111. package/dist/node_modules/use-sync-external-store/shim/with-selector.js +10 -0
  112. package/dist/node_modules/w3c-keyname/index.js +93 -0
  113. package/package.json +9 -2
@@ -0,0 +1,17 @@
1
+ var t = (e, n) => {
2
+ if (e === "slot")
3
+ return 0;
4
+ if (e instanceof Function)
5
+ return e(n);
6
+ const { children: r, ...s } = n ?? {};
7
+ if (e === "svg")
8
+ throw new Error("SVG elements are not supported in the JSX syntax, use the array syntax instead");
9
+ return [e, s, r];
10
+ };
11
+ export {
12
+ t as createElement,
13
+ t as h,
14
+ t as jsx,
15
+ t as jsxDEV,
16
+ t as jsxs
17
+ };
@@ -0,0 +1,62 @@
1
+ import { Node as c, wrappingInputRule as p, mergeAttributes as k } from "../../core/dist/index.js";
2
+ import { createElement as s } from "../../core/dist/jsx-runtime/jsx-runtime.js";
3
+ var m = /^\s*>\s$/, q = c.create({
4
+ name: "blockquote",
5
+ addOptions() {
6
+ return {
7
+ HTMLAttributes: {}
8
+ };
9
+ },
10
+ content: "block+",
11
+ group: "block",
12
+ defining: !0,
13
+ parseHTML() {
14
+ return [{ tag: "blockquote" }];
15
+ },
16
+ renderHTML({ HTMLAttributes: t }) {
17
+ return /* @__PURE__ */ s("blockquote", { ...k(this.options.HTMLAttributes, t), children: /* @__PURE__ */ s("slot", {}) });
18
+ },
19
+ parseMarkdown: (t, e) => {
20
+ var r;
21
+ const n = (r = e.parseBlockChildren) != null ? r : e.parseChildren;
22
+ return e.createNode("blockquote", void 0, n(t.tokens || []));
23
+ },
24
+ renderMarkdown: (t, e) => {
25
+ if (!t.content)
26
+ return "";
27
+ const r = ">", n = [];
28
+ return t.content.forEach((o, a) => {
29
+ var i, u;
30
+ const d = ((u = (i = e.renderChild) == null ? void 0 : i.call(e, o, a)) != null ? u : e.renderChildren([o])).split(`
31
+ `).map((l) => l.trim() === "" ? r : `${r} ${l}`);
32
+ n.push(d.join(`
33
+ `));
34
+ }), n.join(`
35
+ ${r}
36
+ `);
37
+ },
38
+ addCommands() {
39
+ return {
40
+ setBlockquote: () => ({ commands: t }) => t.wrapIn(this.name),
41
+ toggleBlockquote: () => ({ commands: t }) => t.toggleWrap(this.name),
42
+ unsetBlockquote: () => ({ commands: t }) => t.lift(this.name)
43
+ };
44
+ },
45
+ addKeyboardShortcuts() {
46
+ return {
47
+ "Mod-Shift-b": () => this.editor.commands.toggleBlockquote()
48
+ };
49
+ },
50
+ addInputRules() {
51
+ return [
52
+ p({
53
+ find: m,
54
+ type: this.type
55
+ })
56
+ ];
57
+ }
58
+ });
59
+ export {
60
+ q as Blockquote,
61
+ m as inputRegex
62
+ };
@@ -0,0 +1,85 @@
1
+ import { Mark as o, markPasteRule as r, markInputRule as s, mergeAttributes as a } from "../../core/dist/index.js";
2
+ import { createElement as n } from "../../core/dist/jsx-runtime/jsx-runtime.js";
3
+ var d = /(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))$/, l = /(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))/g, i = /(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))$/, u = /(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))/g, p = o.create({
4
+ name: "bold",
5
+ addOptions() {
6
+ return {
7
+ HTMLAttributes: {}
8
+ };
9
+ },
10
+ parseHTML() {
11
+ return [
12
+ {
13
+ tag: "strong"
14
+ },
15
+ {
16
+ tag: "b",
17
+ getAttrs: (t) => t.style.fontWeight !== "normal" && null
18
+ },
19
+ {
20
+ style: "font-weight=400",
21
+ clearMark: (t) => t.type.name === this.name
22
+ },
23
+ {
24
+ style: "font-weight",
25
+ getAttrs: (t) => /^(bold(er)?|[5-9]\d{2,})$/.test(t) && null
26
+ }
27
+ ];
28
+ },
29
+ renderHTML({ HTMLAttributes: t }) {
30
+ return /* @__PURE__ */ n("strong", { ...a(this.options.HTMLAttributes, t), children: /* @__PURE__ */ n("slot", {}) });
31
+ },
32
+ markdownTokenName: "strong",
33
+ parseMarkdown: (t, e) => e.applyMark("bold", e.parseInline(t.tokens || [])),
34
+ markdownOptions: {
35
+ htmlReopen: {
36
+ open: "<strong>",
37
+ close: "</strong>"
38
+ }
39
+ },
40
+ renderMarkdown: (t, e) => `**${e.renderChildren(t)}**`,
41
+ addCommands() {
42
+ return {
43
+ setBold: () => ({ commands: t }) => t.setMark(this.name),
44
+ toggleBold: () => ({ commands: t }) => t.toggleMark(this.name),
45
+ unsetBold: () => ({ commands: t }) => t.unsetMark(this.name)
46
+ };
47
+ },
48
+ addKeyboardShortcuts() {
49
+ return {
50
+ "Mod-b": () => this.editor.commands.toggleBold(),
51
+ "Mod-B": () => this.editor.commands.toggleBold()
52
+ };
53
+ },
54
+ addInputRules() {
55
+ return [
56
+ s({
57
+ find: d,
58
+ type: this.type
59
+ }),
60
+ s({
61
+ find: i,
62
+ type: this.type
63
+ })
64
+ ];
65
+ },
66
+ addPasteRules() {
67
+ return [
68
+ r({
69
+ find: l,
70
+ type: this.type
71
+ }),
72
+ r({
73
+ find: u,
74
+ type: this.type
75
+ })
76
+ ];
77
+ }
78
+ });
79
+ export {
80
+ p as Bold,
81
+ d as starInputRegex,
82
+ l as starPasteRegex,
83
+ i as underscoreInputRegex,
84
+ u as underscorePasteRegex
85
+ };
@@ -0,0 +1,54 @@
1
+ import { Mark as r, markPasteRule as n, markInputRule as a, mergeAttributes as d } from "../../core/dist/index.js";
2
+ var o = /(^|[^`])`([^`]+)`(?!`)$/, u = /(^|[^`])`([^`]+)`(?!`)/g, i = r.create({
3
+ name: "code",
4
+ addOptions() {
5
+ return {
6
+ HTMLAttributes: {}
7
+ };
8
+ },
9
+ excludes: "_",
10
+ code: !0,
11
+ exitable: !0,
12
+ parseHTML() {
13
+ return [{ tag: "code" }];
14
+ },
15
+ renderHTML({ HTMLAttributes: e }) {
16
+ return ["code", d(this.options.HTMLAttributes, e), 0];
17
+ },
18
+ markdownTokenName: "codespan",
19
+ parseMarkdown: (e, t) => t.applyMark("code", [{ type: "text", text: e.text || "" }]),
20
+ renderMarkdown: (e, t) => e.content ? `\`${t.renderChildren(e.content)}\`` : "",
21
+ addCommands() {
22
+ return {
23
+ setCode: () => ({ commands: e }) => e.setMark(this.name),
24
+ toggleCode: () => ({ commands: e }) => e.toggleMark(this.name),
25
+ unsetCode: () => ({ commands: e }) => e.unsetMark(this.name)
26
+ };
27
+ },
28
+ addKeyboardShortcuts() {
29
+ return {
30
+ "Mod-e": () => this.editor.commands.toggleCode()
31
+ };
32
+ },
33
+ addInputRules() {
34
+ return [
35
+ a({
36
+ find: o,
37
+ type: this.type
38
+ })
39
+ ];
40
+ },
41
+ addPasteRules() {
42
+ return [
43
+ n({
44
+ find: u,
45
+ type: this.type
46
+ })
47
+ ];
48
+ }
49
+ });
50
+ export {
51
+ i as Code,
52
+ o as inputRegex,
53
+ u as pasteRegex
54
+ };
@@ -0,0 +1,217 @@
1
+ import { Node as C, textblockTypeInputRule as S, mergeAttributes as k } from "../../core/dist/index.js";
2
+ import { Plugin as w, PluginKey as B, TextSelection as T, Selection as L } from "../../../prosemirror-state/dist/index.js";
3
+ var y = 4, M = /^```([a-z]+)?[\s\n]$/, N = /^~~~([a-z]+)?[\s\n]$/, _ = C.create({
4
+ name: "codeBlock",
5
+ addOptions() {
6
+ return {
7
+ languageClassPrefix: "language-",
8
+ exitOnTripleEnter: !0,
9
+ exitOnArrowDown: !0,
10
+ defaultLanguage: null,
11
+ enableTabIndentation: !1,
12
+ tabSize: y,
13
+ HTMLAttributes: {}
14
+ };
15
+ },
16
+ content: "text*",
17
+ marks: "",
18
+ group: "block",
19
+ code: !0,
20
+ defining: !0,
21
+ addAttributes() {
22
+ return {
23
+ language: {
24
+ default: this.options.defaultLanguage,
25
+ parseHTML: (e) => {
26
+ var t;
27
+ const { languageClassPrefix: r } = this.options;
28
+ if (!r)
29
+ return null;
30
+ const o = [...((t = e.firstElementChild) == null ? void 0 : t.classList) || []].filter((s) => s.startsWith(r)).map((s) => s.replace(r, ""))[0];
31
+ return o || null;
32
+ },
33
+ rendered: !1
34
+ }
35
+ };
36
+ },
37
+ parseHTML() {
38
+ return [
39
+ {
40
+ tag: "pre",
41
+ preserveWhitespace: "full"
42
+ }
43
+ ];
44
+ },
45
+ renderHTML({ node: e, HTMLAttributes: t }) {
46
+ return [
47
+ "pre",
48
+ k(this.options.HTMLAttributes, t),
49
+ [
50
+ "code",
51
+ {
52
+ class: e.attrs.language ? this.options.languageClassPrefix + e.attrs.language : null
53
+ },
54
+ 0
55
+ ]
56
+ ];
57
+ },
58
+ markdownTokenName: "code",
59
+ parseMarkdown: (e, t) => {
60
+ var r, n;
61
+ return ((r = e.raw) == null ? void 0 : r.startsWith("```")) === !1 && ((n = e.raw) == null ? void 0 : n.startsWith("~~~")) === !1 && e.codeBlockStyle !== "indented" ? [] : t.createNode(
62
+ "codeBlock",
63
+ { language: e.lang || null },
64
+ e.text ? [t.createTextNode(e.text)] : []
65
+ );
66
+ },
67
+ renderMarkdown: (e, t) => {
68
+ var r;
69
+ let n = "";
70
+ const a = ((r = e.attrs) == null ? void 0 : r.language) || "";
71
+ return e.content ? n = [`\`\`\`${a}`, t.renderChildren(e.content), "```"].join(`
72
+ `) : n = `\`\`\`${a}
73
+
74
+ \`\`\``, n;
75
+ },
76
+ addCommands() {
77
+ return {
78
+ setCodeBlock: (e) => ({ commands: t }) => t.setNode(this.name, e),
79
+ toggleCodeBlock: (e) => ({ commands: t }) => t.toggleNode(this.name, "paragraph", e)
80
+ };
81
+ },
82
+ addKeyboardShortcuts() {
83
+ return {
84
+ "Mod-Alt-c": () => this.editor.commands.toggleCodeBlock(),
85
+ // remove code block when at start of document or code block is empty
86
+ Backspace: () => {
87
+ const { empty: e, $anchor: t } = this.editor.state.selection, r = t.pos === 1;
88
+ return !e || t.parent.type.name !== this.name ? !1 : r || !t.parent.textContent.length ? this.editor.commands.clearNodes() : !1;
89
+ },
90
+ // handle tab indentation
91
+ Tab: ({ editor: e }) => {
92
+ var t;
93
+ if (!this.options.enableTabIndentation)
94
+ return !1;
95
+ const r = (t = this.options.tabSize) != null ? t : y, { state: n } = e, { selection: a } = n, { $from: o, empty: s } = a;
96
+ if (o.parent.type !== this.type)
97
+ return !1;
98
+ const i = " ".repeat(r);
99
+ return s ? e.commands.insertContent(i) : e.commands.command(({ tr: l }) => {
100
+ const { from: c, to: f } = a, u = n.doc.textBetween(c, f, `
101
+ `, `
102
+ `).split(`
103
+ `).map((p) => i + p).join(`
104
+ `);
105
+ return l.replaceWith(c, f, n.schema.text(u)), !0;
106
+ });
107
+ },
108
+ // handle shift+tab reverse indentation
109
+ "Shift-Tab": ({ editor: e }) => {
110
+ var t;
111
+ if (!this.options.enableTabIndentation)
112
+ return !1;
113
+ const r = (t = this.options.tabSize) != null ? t : y, { state: n } = e, { selection: a } = n, { $from: o, empty: s } = a;
114
+ return o.parent.type !== this.type ? !1 : s ? e.commands.command(({ tr: i }) => {
115
+ var l;
116
+ const { pos: c } = o, f = o.start(), h = o.end(), u = n.doc.textBetween(f, h, `
117
+ `, `
118
+ `).split(`
119
+ `);
120
+ let p = 0, g = 0;
121
+ const b = c - f;
122
+ for (let d = 0; d < u.length; d += 1) {
123
+ if (g + u[d].length >= b) {
124
+ p = d;
125
+ break;
126
+ }
127
+ g += u[d].length + 1;
128
+ }
129
+ const A = ((l = u[p].match(/^ */)) == null ? void 0 : l[0]) || "", v = Math.min(A.length, r);
130
+ if (v === 0)
131
+ return !0;
132
+ let m = f;
133
+ for (let d = 0; d < p; d += 1)
134
+ m += u[d].length + 1;
135
+ return i.delete(m, m + v), c - m <= v && i.setSelection(T.create(i.doc, m)), !0;
136
+ }) : e.commands.command(({ tr: i }) => {
137
+ const { from: l, to: c } = a, x = n.doc.textBetween(l, c, `
138
+ `, `
139
+ `).split(`
140
+ `).map((u) => {
141
+ var p;
142
+ const g = ((p = u.match(/^ */)) == null ? void 0 : p[0]) || "", b = Math.min(g.length, r);
143
+ return u.slice(b);
144
+ }).join(`
145
+ `);
146
+ return i.replaceWith(l, c, n.schema.text(x)), !0;
147
+ });
148
+ },
149
+ // exit node on triple enter
150
+ Enter: ({ editor: e }) => {
151
+ if (!this.options.exitOnTripleEnter)
152
+ return !1;
153
+ const { state: t } = e, { selection: r } = t, { $from: n, empty: a } = r;
154
+ if (!a || n.parent.type !== this.type)
155
+ return !1;
156
+ const o = n.parentOffset === n.parent.nodeSize - 2, s = n.parent.textContent.endsWith(`
157
+
158
+ `);
159
+ return !o || !s ? !1 : e.chain().command(({ tr: i }) => (i.delete(n.pos - 2, n.pos), !0)).exitCode().run();
160
+ },
161
+ // exit node on arrow down
162
+ ArrowDown: ({ editor: e }) => {
163
+ if (!this.options.exitOnArrowDown)
164
+ return !1;
165
+ const { state: t } = e, { selection: r, doc: n } = t, { $from: a, empty: o } = r;
166
+ if (!o || a.parent.type !== this.type || !(a.parentOffset === a.parent.nodeSize - 2))
167
+ return !1;
168
+ const i = a.after();
169
+ return i === void 0 ? !1 : n.nodeAt(i) ? e.commands.command(({ tr: c }) => (c.setSelection(L.near(n.resolve(i))), !0)) : e.commands.exitCode();
170
+ }
171
+ };
172
+ },
173
+ addInputRules() {
174
+ return [
175
+ S({
176
+ find: M,
177
+ type: this.type,
178
+ getAttributes: (e) => ({
179
+ language: e[1]
180
+ })
181
+ }),
182
+ S({
183
+ find: N,
184
+ type: this.type,
185
+ getAttributes: (e) => ({
186
+ language: e[1]
187
+ })
188
+ })
189
+ ];
190
+ },
191
+ addProseMirrorPlugins() {
192
+ return [
193
+ // this plugin creates a code block for pasted content from VS Code
194
+ // we can also detect the copied code language
195
+ new w({
196
+ key: new B("codeBlockVSCodeHandler"),
197
+ props: {
198
+ handlePaste: (e, t) => {
199
+ if (!t.clipboardData || this.editor.isActive(this.type.name))
200
+ return !1;
201
+ const r = t.clipboardData.getData("text/plain"), n = t.clipboardData.getData("vscode-editor-data"), a = n ? JSON.parse(n) : void 0, o = a?.mode;
202
+ if (!r || !o)
203
+ return !1;
204
+ const { tr: s, schema: i } = e.state, l = i.text(r.replace(/\r\n?/g, `
205
+ `));
206
+ return s.replaceSelectionWith(this.type.create({ language: o }, l)), s.selection.$from.parent.type !== this.type && s.setSelection(T.near(s.doc.resolve(Math.max(0, s.selection.from - 2)))), s.setMeta("paste", !0), e.dispatch(s), !0;
207
+ }
208
+ }
209
+ })
210
+ ];
211
+ }
212
+ });
213
+ export {
214
+ _ as CodeBlock,
215
+ M as backtickInputRegex,
216
+ N as tildeInputRegex
217
+ };
@@ -0,0 +1,12 @@
1
+ import { Node as n } from "../../core/dist/index.js";
2
+ var o = n.create({
3
+ name: "doc",
4
+ topNode: !0,
5
+ content: "block+",
6
+ renderMarkdown: (e, r) => e.content ? r.renderChildren(e.content, `
7
+
8
+ `) : ""
9
+ });
10
+ export {
11
+ o as Document
12
+ };
@@ -0,0 +1,59 @@
1
+ import { Node as l, mergeAttributes as c } from "../../core/dist/index.js";
2
+ var f = l.create({
3
+ name: "hardBreak",
4
+ markdownTokenName: "br",
5
+ addOptions() {
6
+ return {
7
+ keepMarks: !0,
8
+ HTMLAttributes: {}
9
+ };
10
+ },
11
+ inline: !0,
12
+ group: "inline",
13
+ selectable: !1,
14
+ linebreakReplacement: !0,
15
+ parseHTML() {
16
+ return [{ tag: "br" }];
17
+ },
18
+ renderHTML({ HTMLAttributes: e }) {
19
+ return ["br", c(this.options.HTMLAttributes, e)];
20
+ },
21
+ renderText() {
22
+ return `
23
+ `;
24
+ },
25
+ renderMarkdown: () => `
26
+ `,
27
+ parseMarkdown: () => ({
28
+ type: "hardBreak"
29
+ }),
30
+ addCommands() {
31
+ return {
32
+ setHardBreak: () => ({ commands: e, chain: n, state: a, editor: s }) => e.first([
33
+ () => e.exitCode(),
34
+ () => e.command(() => {
35
+ const { selection: r, storedMarks: o } = a;
36
+ if (r.$from.parent.type.spec.isolating)
37
+ return !1;
38
+ const { keepMarks: i } = this.options, { splittableMarks: d } = s.extensionManager, t = o || r.$to.parentOffset && r.$from.marks();
39
+ return n().insertContent({ type: this.name }).command(({ tr: u, dispatch: k }) => {
40
+ if (k && t && i) {
41
+ const m = t.filter((p) => d.includes(p.type.name));
42
+ u.ensureMarks(m);
43
+ }
44
+ return !0;
45
+ }).run();
46
+ })
47
+ ])
48
+ };
49
+ },
50
+ addKeyboardShortcuts() {
51
+ return {
52
+ "Mod-Enter": () => this.editor.commands.setHardBreak(),
53
+ "Shift-Enter": () => this.editor.commands.setHardBreak()
54
+ };
55
+ }
56
+ });
57
+ export {
58
+ f as HardBreak
59
+ };
@@ -0,0 +1,63 @@
1
+ import { Node as l, textblockTypeInputRule as i, mergeAttributes as a } from "../../core/dist/index.js";
2
+ var d = l.create({
3
+ name: "heading",
4
+ addOptions() {
5
+ return {
6
+ levels: [1, 2, 3, 4, 5, 6],
7
+ HTMLAttributes: {}
8
+ };
9
+ },
10
+ content: "inline*",
11
+ group: "block",
12
+ defining: !0,
13
+ addAttributes() {
14
+ return {
15
+ level: {
16
+ default: 1,
17
+ rendered: !1
18
+ }
19
+ };
20
+ },
21
+ parseHTML() {
22
+ return this.options.levels.map((e) => ({
23
+ tag: `h${e}`,
24
+ attrs: { level: e }
25
+ }));
26
+ },
27
+ renderHTML({ node: e, HTMLAttributes: t }) {
28
+ return [`h${this.options.levels.includes(e.attrs.level) ? e.attrs.level : this.options.levels[0]}`, a(this.options.HTMLAttributes, t), 0];
29
+ },
30
+ parseMarkdown: (e, t) => t.createNode("heading", { level: e.depth || 1 }, t.parseInline(e.tokens || [])),
31
+ renderMarkdown: (e, t) => {
32
+ var r;
33
+ const n = (r = e.attrs) != null && r.level ? parseInt(e.attrs.level, 10) : 1, s = "#".repeat(n);
34
+ return e.content ? `${s} ${t.renderChildren(e.content)}` : "";
35
+ },
36
+ addCommands() {
37
+ return {
38
+ setHeading: (e) => ({ commands: t }) => this.options.levels.includes(e.level) ? t.setNode(this.name, e) : !1,
39
+ toggleHeading: (e) => ({ commands: t }) => this.options.levels.includes(e.level) ? t.toggleNode(this.name, "paragraph", e) : !1
40
+ };
41
+ },
42
+ addKeyboardShortcuts() {
43
+ return this.options.levels.reduce(
44
+ (e, t) => ({
45
+ ...e,
46
+ [`Mod-Alt-${t}`]: () => this.editor.commands.toggleHeading({ level: t })
47
+ }),
48
+ {}
49
+ );
50
+ },
51
+ addInputRules() {
52
+ return this.options.levels.map((e) => i({
53
+ find: new RegExp(`^(#{${Math.min(...this.options.levels)},${e}})\\s$`),
54
+ type: this.type,
55
+ getAttributes: {
56
+ level: e
57
+ }
58
+ }));
59
+ }
60
+ });
61
+ export {
62
+ d as Heading
63
+ };
@@ -0,0 +1,56 @@
1
+ import { Node as m, nodeInputRule as f, canInsertNode as h, isNodeSelection as T, mergeAttributes as y } from "../../core/dist/index.js";
2
+ import { TextSelection as s, NodeSelection as N } from "../../../prosemirror-state/dist/index.js";
3
+ var M = m.create({
4
+ name: "horizontalRule",
5
+ addOptions() {
6
+ return {
7
+ HTMLAttributes: {},
8
+ nextNodeType: "paragraph"
9
+ };
10
+ },
11
+ group: "block",
12
+ parseHTML() {
13
+ return [{ tag: "hr" }];
14
+ },
15
+ renderHTML({ HTMLAttributes: n }) {
16
+ return ["hr", y(this.options.HTMLAttributes, n)];
17
+ },
18
+ markdownTokenName: "hr",
19
+ parseMarkdown: (n, o) => o.createNode("horizontalRule"),
20
+ renderMarkdown: () => "---",
21
+ addCommands() {
22
+ return {
23
+ setHorizontalRule: () => ({ chain: n, state: o }) => {
24
+ if (!h(o, o.schema.nodes[this.name]))
25
+ return !1;
26
+ const { selection: i } = o, { $to: l } = i, r = n();
27
+ return T(i) ? r.insertContentAt(l.pos, {
28
+ type: this.name
29
+ }) : r.insertContent({ type: this.name }), r.command(({ state: p, tr: e, dispatch: u }) => {
30
+ if (u) {
31
+ const { $to: t } = e.selection, a = t.end();
32
+ if (t.nodeAfter)
33
+ t.nodeAfter.isTextblock ? e.setSelection(s.create(e.doc, t.pos + 1)) : t.nodeAfter.isBlock ? e.setSelection(N.create(e.doc, t.pos)) : e.setSelection(s.create(e.doc, t.pos));
34
+ else {
35
+ const c = p.schema.nodes[this.options.nextNodeType] || t.parent.type.contentMatch.defaultType, d = c?.create();
36
+ d && (e.insert(a, d), e.setSelection(s.create(e.doc, a + 1)));
37
+ }
38
+ e.scrollIntoView();
39
+ }
40
+ return !0;
41
+ }).run();
42
+ }
43
+ };
44
+ },
45
+ addInputRules() {
46
+ return [
47
+ f({
48
+ find: /^(?:---|—-|___\s|\*\*\*\s)$/,
49
+ type: this.type
50
+ })
51
+ ];
52
+ }
53
+ });
54
+ export {
55
+ M as HorizontalRule
56
+ };