@clevertask/scribe 0.1.8 → 0.1.10
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.
- package/README.md +10 -9
- package/dist/{BarMenu-BG_w4DVo.js → BarMenu-5S2vKAtc.js} +1 -1
- package/dist/components/Menu/BarMenu.js +1 -1
- package/dist/components/Menu/BubbleMenu.js +2 -2
- package/dist/components/Menu/LinkBubbleMenu.d.ts.map +1 -1
- package/dist/components/Menu/LinkBubbleMenu.js +58 -44
- package/dist/components/Menu/Mobile/ListOptionBar.js +1 -1
- package/dist/components/Menu/linkBubbleMenuPlugin.d.ts +1 -0
- package/dist/components/Menu/linkBubbleMenuPlugin.d.ts.map +1 -1
- package/dist/components/Menu/linkBubbleMenuPlugin.js +4 -2
- package/dist/components/Scribe/extension/emoji/suggest.js +1 -1
- package/dist/components/Scribe/extension/extension-link.js +1 -1
- package/dist/components/Scribe/extension/extension-markdown-paste.js +11 -11
- package/dist/components/Scribe/extension/extension-selectedText.js +1 -1
- package/dist/components/Scribe/extension/index.js +1 -1
- package/dist/components/Scribe/extension/slashCommand/index.js +1 -1
- package/dist/components/Scribe/extension/slashCommand/renderItems.js +1 -1
- package/dist/components/Scribe/extension/tableOfContents.js +4 -4
- package/dist/components/Scribe/index.js +3 -3
- package/dist/dist-DErUltkU.js +3245 -0
- package/dist/{dist-BgEySLwo.js → dist-wYqYXEOz.js} +1 -1
- package/dist/{extension-BVGWENts.js → extension-6I5t1ZxQ.js} +1744 -2294
- package/dist/{extension-link-CMRfHUc5.js → extension-link-DJy7XDoj.js} +62 -62
- package/dist/{menus-D9OsP28c.js → menus-m_EkiaUN.js} +66 -66
- package/dist/{slashCommand-B6Iz1i0d.js → slashCommand-DuSH9sXJ.js} +46 -45
- package/dist/utils/index.js +2 -2
- package/package.json +3 -2
- package/dist/dist-BMKyBtRa.js +0 -7023
- package/dist/dist-FrapLVQu.js +0 -3513
- package/dist/tables-CXpUVKdw.js +0 -1347
package/README.md
CHANGED
|
@@ -34,9 +34,12 @@ A versatile, block-based rich text editor for diverse applications, built with T
|
|
|
34
34
|
## Installation
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npm install @clevertask/scribe
|
|
37
|
+
npm install --save-exact @clevertask/scribe @tiptap/pm@3.29.2
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
Scribe shares this exact ProseMirror runtime with consumer extensions. Keeping one
|
|
41
|
+
installed version prevents identity conflicts between built-in and custom plugins.
|
|
42
|
+
|
|
40
43
|
## Usage
|
|
41
44
|
|
|
42
45
|
### Basic usage
|
|
@@ -297,15 +300,13 @@ We're excited about these upcoming features and welcome any feedback or contribu
|
|
|
297
300
|
|
|
298
301
|
## Release Process
|
|
299
302
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
1. Update the version in `package.json` according to semantic versioning rules.
|
|
303
|
-
2. Commit the version change: `git commit -am "Bump version to x.x.x"`
|
|
304
|
-
3. Create a new tag: `git tag x.x.x`
|
|
305
|
-
4. Push the changes and the tag: `git push && git push --tags`
|
|
306
|
-
5. Go to the GitHub repository and create a new release, selecting the tag you just created.
|
|
303
|
+
Publishing is split into two explicit GitHub Actions after a change reaches `main`:
|
|
307
304
|
|
|
308
|
-
|
|
305
|
+
1. Run **Create Release Version** from `main` and enter the version to release.
|
|
306
|
+
2. Wait for it to commit the version, create the tag, and create the GitHub release.
|
|
307
|
+
3. Run **Publish Package** from the immutable `v<version>` tag and choose the `latest` or
|
|
308
|
+
`next` npm tag.
|
|
309
|
+
4. Confirm the new version is available in the npm registry before updating consumers.
|
|
309
310
|
|
|
310
311
|
## License
|
|
311
312
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e } from "./dist-
|
|
1
|
+
import { a as e } from "./dist-wYqYXEOz.js";
|
|
2
2
|
import { getPopupMountTarget as t } from "./components/Scribe/extension/getPopupMountTarget.js";
|
|
3
3
|
import n from "./components/Menu/LinkEditor.js";
|
|
4
4
|
import { hideLinkBubbleMenu as r } from "./components/Menu/linkBubbleMenuPlugin.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../BarMenu-
|
|
1
|
+
import { t as e } from "../../BarMenu-5S2vKAtc.js";
|
|
2
2
|
export { e as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as e } from "../../dist-
|
|
1
|
+
import { a as e } from "../../dist-wYqYXEOz.js";
|
|
2
2
|
import { getPopupMountTarget as t } from "../Scribe/extension/getPopupMountTarget.js";
|
|
3
|
-
import { t as n } from "../../menus-
|
|
3
|
+
import { t as n } from "../../menus-m_EkiaUN.js";
|
|
4
4
|
import { Flex as r, IconButton as i } from "@radix-ui/themes";
|
|
5
5
|
import { useCallback as a } from "react";
|
|
6
6
|
import { jsx as o } from "react/jsx-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkBubbleMenu.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/LinkBubbleMenu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAkB,MAAM,eAAe,CAAC;AAKvD,OAAO,EAAE,EAAE,EAAqD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkBubbleMenu.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/LinkBubbleMenu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAkB,MAAM,eAAe,CAAC;AAKvD,OAAO,EAAE,EAAE,EAAqD,MAAM,OAAO,CAAC;AAS9E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA+J3C,CAAC;eAEa,cAAc"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { a as e } from "../../dist-
|
|
1
|
+
import { a as e } from "../../dist-wYqYXEOz.js";
|
|
2
2
|
import { getPopupMountTarget as t } from "../Scribe/extension/getPopupMountTarget.js";
|
|
3
3
|
import n from "./LinkEditor.js";
|
|
4
|
-
import { hideLinkBubbleMenu as r, linkBubbleMenuPluginKey as i } from "./linkBubbleMenuPlugin.js";
|
|
5
|
-
import { t as
|
|
6
|
-
import { Box as
|
|
7
|
-
import { useCallback as
|
|
8
|
-
import { jsx as
|
|
4
|
+
import { hideLinkBubbleMenu as r, linkBubbleMenuPluginKey as i, showLinkBubbleMenu as a } from "./linkBubbleMenuPlugin.js";
|
|
5
|
+
import { t as o } from "../../menus-m_EkiaUN.js";
|
|
6
|
+
import { Box as s } from "@radix-ui/themes";
|
|
7
|
+
import { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
8
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
9
9
|
//#region lib/components/Menu/LinkBubbleMenu.tsx
|
|
10
|
-
var
|
|
11
|
-
let [
|
|
12
|
-
editor:
|
|
10
|
+
var m = ({ editor: m }) => {
|
|
11
|
+
let [h, g] = f(""), _ = d(null), v = d(null), y = e({
|
|
12
|
+
editor: m,
|
|
13
13
|
selector: ({ editor: e }) => {
|
|
14
14
|
let { from: t, to: n } = e.state.selection;
|
|
15
15
|
return {
|
|
@@ -19,43 +19,57 @@ var p = ({ editor: p }) => {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
l(() => {
|
|
23
|
+
g(y.href);
|
|
24
24
|
}, [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
]),
|
|
29
|
-
|
|
30
|
-
}, [])
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
y.from,
|
|
26
|
+
y.href,
|
|
27
|
+
y.to
|
|
28
|
+
]), l(() => () => {
|
|
29
|
+
v.current !== null && window.cancelAnimationFrame(v.current);
|
|
30
|
+
}, []), l(() => {
|
|
31
|
+
if (m.isDestroyed) return;
|
|
32
|
+
let e = m.view.dom, t = null, n = !1, r = (r) => {
|
|
33
|
+
if (r.button !== 0 || !m.isEditable) return;
|
|
34
|
+
let i = r.target?.closest?.("a");
|
|
35
|
+
!i || !e.contains(i) || (t !== null && window.clearTimeout(t), t = window.setTimeout(() => {
|
|
36
|
+
if (t = null, n || m.isDestroyed || !m.isEditable || !r.defaultPrevented) return;
|
|
37
|
+
let { from: e, to: i } = m.state.selection;
|
|
38
|
+
e === i || !m.isActive("link") || a(m);
|
|
39
|
+
}));
|
|
40
|
+
};
|
|
41
|
+
return e.addEventListener("mouseup", r), () => {
|
|
42
|
+
n = !0, t !== null && window.clearTimeout(t), e.removeEventListener("mouseup", r);
|
|
43
|
+
};
|
|
44
|
+
}, [m]);
|
|
45
|
+
let b = c(() => {
|
|
46
|
+
if (m.isDestroyed) return;
|
|
47
|
+
let e = m.state.selection.to;
|
|
48
|
+
r(m), m.chain().setTextSelection(e).focus().run();
|
|
49
|
+
}, [m]), x = c(() => {
|
|
50
|
+
v.current !== null && window.cancelAnimationFrame(v.current), v.current = window.requestAnimationFrame(() => {
|
|
51
|
+
_.current?.focus(), _.current?.select(), v.current = null;
|
|
38
52
|
});
|
|
39
|
-
}, []),
|
|
40
|
-
let
|
|
41
|
-
return e.isEditable && n !== r && e.isActive("link") &&
|
|
42
|
-
}, []),
|
|
53
|
+
}, []), S = c(({ editor: e, element: t, from: n, to: r }) => {
|
|
54
|
+
let i = t.contains(t.ownerDocument.activeElement);
|
|
55
|
+
return e.isEditable && n !== r && e.isActive("link") && i;
|
|
56
|
+
}, []), C = c(() => t(m), [m]), w = u(() => ({
|
|
43
57
|
strategy: "fixed",
|
|
44
58
|
placement: "bottom",
|
|
45
59
|
offset: 8,
|
|
46
60
|
flip: {},
|
|
47
61
|
shift: { padding: 8 },
|
|
48
62
|
inline: !0,
|
|
49
|
-
onShow:
|
|
50
|
-
}), [
|
|
51
|
-
return /* @__PURE__ */
|
|
52
|
-
editor:
|
|
63
|
+
onShow: x
|
|
64
|
+
}), [x]);
|
|
65
|
+
return /* @__PURE__ */ p(o, {
|
|
66
|
+
editor: m,
|
|
53
67
|
pluginKey: i,
|
|
54
68
|
updateDelay: 0,
|
|
55
|
-
appendTo:
|
|
56
|
-
shouldShow:
|
|
57
|
-
options:
|
|
58
|
-
children: /* @__PURE__ */
|
|
69
|
+
appendTo: C,
|
|
70
|
+
shouldShow: S,
|
|
71
|
+
options: w,
|
|
72
|
+
children: /* @__PURE__ */ p(s, {
|
|
59
73
|
className: "scribe-link-popover",
|
|
60
74
|
role: "dialog",
|
|
61
75
|
"aria-label": "Edit link",
|
|
@@ -63,16 +77,16 @@ var p = ({ editor: p }) => {
|
|
|
63
77
|
maxWidth: "calc(100vw - 32px)",
|
|
64
78
|
width: 320
|
|
65
79
|
},
|
|
66
|
-
children: /* @__PURE__ */
|
|
67
|
-
editor:
|
|
68
|
-
existingHref:
|
|
69
|
-
inputRef:
|
|
70
|
-
onClose:
|
|
71
|
-
onValueChange:
|
|
72
|
-
value:
|
|
80
|
+
children: /* @__PURE__ */ p(n, {
|
|
81
|
+
editor: m,
|
|
82
|
+
existingHref: y.href,
|
|
83
|
+
inputRef: _,
|
|
84
|
+
onClose: b,
|
|
85
|
+
onValueChange: g,
|
|
86
|
+
value: h
|
|
73
87
|
})
|
|
74
88
|
})
|
|
75
89
|
});
|
|
76
90
|
};
|
|
77
91
|
//#endregion
|
|
78
|
-
export {
|
|
92
|
+
export { m as default };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PluginKey } from "@tiptap/pm/state";
|
|
2
2
|
import { Editor } from "@tiptap/react";
|
|
3
3
|
export declare const linkBubbleMenuPluginKey: PluginKey<any>;
|
|
4
|
+
export declare const showLinkBubbleMenu: (editor: Editor) => void;
|
|
4
5
|
export declare const hideLinkBubbleMenu: (editor: Editor) => void;
|
|
5
6
|
//# sourceMappingURL=linkBubbleMenuPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkBubbleMenuPlugin.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/linkBubbleMenuPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,eAAO,MAAM,uBAAuB,gBAAwC,CAAC;AAE7E,eAAO,MAAM,kBAAkB,WAAY,MAAM,SAMhD,CAAC"}
|
|
1
|
+
{"version":3,"file":"linkBubbleMenuPlugin.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/linkBubbleMenuPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,eAAO,MAAM,uBAAuB,gBAAwC,CAAC;AAE7E,eAAO,MAAM,kBAAkB,WAAY,MAAM,SAahD,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAY,MAAM,SAMhD,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PluginKey as e } from "@tiptap/pm/state";
|
|
2
2
|
//#region lib/components/Menu/linkBubbleMenuPlugin.ts
|
|
3
3
|
var t = new e("scribeLinkBubbleMenu"), n = (e) => {
|
|
4
|
+
e.isDestroyed || (e.view.dispatch(e.state.tr.setMeta(t, "show")), !e.isDestroyed && e.view.dispatch(e.state.tr.setMeta(t, "updatePosition")));
|
|
5
|
+
}, r = (e) => {
|
|
4
6
|
e.isDestroyed || e.view.dispatch(e.state.tr.setMeta(t, "hide"));
|
|
5
7
|
};
|
|
6
8
|
//#endregion
|
|
7
|
-
export {
|
|
9
|
+
export { r as hideLinkBubbleMenu, t as linkBubbleMenuPluginKey, n as showLinkBubbleMenu };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as e } from "../../../../dist-
|
|
1
|
+
import { n as e } from "../../../../dist-wYqYXEOz.js";
|
|
2
2
|
import { getPopupMountTarget as t } from "../getPopupMountTarget.js";
|
|
3
3
|
import { t as n } from "../../../../tippy.esm-DOXqN1Qm.js";
|
|
4
4
|
import { EmojiList as r } from "./EmojiList.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../../extension-link-
|
|
1
|
+
import { t as e } from "../../../extension-link-DJy7XDoj.js";
|
|
2
2
|
export { e as default };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n } from "../../../
|
|
3
|
-
import {
|
|
1
|
+
import { n as e } from "../../../dist-DErUltkU.js";
|
|
2
|
+
import { n as t, t as n } from "../../../markdown-to-html-DwSNqq2i.js";
|
|
3
|
+
import { Plugin as r, PluginKey as i } from "@tiptap/pm/state";
|
|
4
4
|
//#region lib/components/Scribe/extension/extension-markdown-paste.ts
|
|
5
|
-
var a = new
|
|
5
|
+
var a = new i("markdownPaste"), o = /* @__PURE__ */ new Set([
|
|
6
6
|
"blockquote",
|
|
7
7
|
"code",
|
|
8
8
|
"heading",
|
|
@@ -15,8 +15,8 @@ var a = new e("markdownPaste"), o = /* @__PURE__ */ new Set([
|
|
|
15
15
|
"em",
|
|
16
16
|
"strong"
|
|
17
17
|
]), c = (e) => e.type === "image" ? e.raw.startsWith("![") : e.type === "link" && e.raw.startsWith("["), l = (e) => e.some((e) => o.has(e.type) || s.has(e.type) || c(e) || "tokens" in e && Array.isArray(e.tokens) && l(e.tokens) ? !0 : "items" in e && Array.isArray(e.items) ? e.items.some((e) => l(e.tokens)) : !1), u = (e) => {
|
|
18
|
-
let
|
|
19
|
-
return
|
|
18
|
+
let n = e.trim();
|
|
19
|
+
return n ? l(t.lexer(n)) : !1;
|
|
20
20
|
}, d = (e) => {
|
|
21
21
|
let t = e.firstElementChild;
|
|
22
22
|
return !(t instanceof HTMLInputElement) || t.type !== "checkbox" ? null : t;
|
|
@@ -40,16 +40,16 @@ var a = new e("markdownPaste"), o = /* @__PURE__ */ new Set([
|
|
|
40
40
|
return e.someProp("transformPastedHTML", (t) => {
|
|
41
41
|
n = t(n, e);
|
|
42
42
|
}), n;
|
|
43
|
-
}, m =
|
|
43
|
+
}, m = e.create({
|
|
44
44
|
name: "markdownPaste",
|
|
45
45
|
addProseMirrorPlugins() {
|
|
46
|
-
return [new
|
|
46
|
+
return [new r({
|
|
47
47
|
key: a,
|
|
48
48
|
props: { handlePaste: (e, t) => {
|
|
49
|
-
let
|
|
50
|
-
if (!
|
|
49
|
+
let r = t.clipboardData?.getData("text/html"), i = t.clipboardData?.getData("text/plain");
|
|
50
|
+
if (!i || r || !u(i)) return !1;
|
|
51
51
|
t.preventDefault();
|
|
52
|
-
let a = f(i
|
|
52
|
+
let a = f(n(i));
|
|
53
53
|
return this.editor.chain().focus().insertContent(p(e, a)).run(), !0;
|
|
54
54
|
} }
|
|
55
55
|
})];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../../extension-
|
|
1
|
+
import { t as e } from "../../../extension-6I5t1ZxQ.js";
|
|
2
2
|
export { e as initExtensions };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../../../../slashCommand-
|
|
1
|
+
import { n as e, t } from "../../../../slashCommand-DuSH9sXJ.js";
|
|
2
2
|
export { t as SlashCommand, e as slashMenuPluginKey };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as e } from "../../../../dist-
|
|
1
|
+
import { n as e } from "../../../../dist-wYqYXEOz.js";
|
|
2
2
|
import { getPopupMountTarget as t } from "../getPopupMountTarget.js";
|
|
3
3
|
import { t as n } from "../../../../tippy.esm-DOXqN1Qm.js";
|
|
4
4
|
import { SlashCommandList as r } from "./SlashCommandList.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n } from "
|
|
1
|
+
import { n as e } from "../../../dist-DErUltkU.js";
|
|
2
|
+
import { Plugin as t, PluginKey as n } from "@tiptap/pm/state";
|
|
3
3
|
//#region lib/components/Scribe/extension/tableOfContents.ts
|
|
4
|
-
var r = "scribeTableOfContents", i = new
|
|
4
|
+
var r = "scribeTableOfContents", i = new n("scribeTableOfContents"), a = 10, o = (e) => e.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "heading", s = (e, t) => {
|
|
5
5
|
let n = t[t.length - 1], r = [...t].reverse().find((t) => t.originalLevel <= e.node.attrs.level)?.level || 1;
|
|
6
6
|
return e.node.attrs.level > (n?.originalLevel || 1) ? (n?.level || 1) + 1 : e.node.attrs.level < (n?.originalLevel || 1) ? r : n?.level || 1;
|
|
7
7
|
}, c = (e) => (e[e.length - 1]?.itemIndex || 0) + 1, l = (e, t, n) => {
|
|
@@ -81,7 +81,7 @@ var r = "scribeTableOfContents", i = new e("scribeTableOfContents"), a = 10, o =
|
|
|
81
81
|
}))), S = (e, t, n) => {
|
|
82
82
|
let r = x(n), i = !e.hasCreated;
|
|
83
83
|
e.anchors = n.map((e) => e.dom), e.content = n, !(!i && r === e.lastSignature) && (e.hasCreated = !0, e.lastSignature = r, t.onUpdate?.(n, i));
|
|
84
|
-
}, C =
|
|
84
|
+
}, C = e.create({
|
|
85
85
|
name: "scribeTableOfContents",
|
|
86
86
|
addOptions() {
|
|
87
87
|
return { anchorTypes: ["heading"] };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as e, t } from "../../BarMenu-
|
|
2
|
-
import { i as n, t as r } from "../../dist-
|
|
1
|
+
import { n as e, t } from "../../BarMenu-5S2vKAtc.js";
|
|
2
|
+
import { i as n, t as r } from "../../dist-wYqYXEOz.js";
|
|
3
3
|
import i from "../Menu/LinkBubbleMenu.js";
|
|
4
4
|
import { t as a } from "../../html-to-markdown-Cta7-ssO.js";
|
|
5
|
-
import { t as o } from "../../extension-
|
|
5
|
+
import { t as o } from "../../extension-6I5t1ZxQ.js";
|
|
6
6
|
import { SuggestionItemType as s } from "./extension/slashCommand/items.js";
|
|
7
7
|
import "./extension/tableOfContents.js";
|
|
8
8
|
import "../../utils/index.js";
|