@clevertask/scribe 0.1.0 → 0.1.2
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 +60 -16
- package/dist/{BarMenu-BDtEfu-R.js → BarMenu-DaKIz3zZ.js} +1 -1
- package/dist/assets/index.css +1 -1
- package/dist/components/Menu/BarMenu.js +2 -2
- package/dist/components/Menu/BubbleMenu.js +78 -74
- package/dist/components/Menu/Mobile/ListOptionBar.js +1 -1
- 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 +2 -2
- package/dist/components/Scribe/extension/extension-selectedText.js +1 -1
- package/dist/components/Scribe/extension/index.d.ts +17 -2
- package/dist/components/Scribe/extension/index.d.ts.map +1 -1
- package/dist/components/Scribe/extension/index.js +2655 -2580
- package/dist/components/Scribe/extension/slashCommand/SlashCommandList.js +1616 -1618
- package/dist/components/Scribe/extension/slashCommand/index.js +2 -2
- package/dist/components/Scribe/extension/slashCommand/renderItems.js +1 -1
- package/dist/components/Scribe/extension/tableOfContents.d.ts +49 -0
- package/dist/components/Scribe/extension/tableOfContents.d.ts.map +1 -0
- package/dist/components/Scribe/extension/tableOfContents.js +181 -0
- package/dist/components/Scribe/index.d.ts +12 -0
- package/dist/components/Scribe/index.d.ts.map +1 -1
- package/dist/components/Scribe/index.js +108 -65
- package/dist/{extension-link-D3eyOFkn.js → extension-link-Ch_T7WWG.js} +1 -1
- package/dist/{index-hHvpW2H6.js → index-BiBV5TQx.js} +1287 -1250
- package/dist/{index-FY_iYS6i.js → index-CqzMmrnw.js} +1 -1
- package/dist/{index-PJNQPLn5.js → index-DxF-1P4n.js} +196 -203
- package/dist/index-V-gN11Y9.js +249 -0
- package/dist/main.js +1 -1
- package/dist/{markdown-to-html-BwS08CTi.js → markdown-to-html-pL7ckd-m.js} +14 -14
- package/dist/purify.es-exIQuqhb.js +595 -0
- package/dist/utils/create-scribe-editor.js +3 -3
- package/dist/utils/html-to-markdown.js +226 -306
- package/dist/utils/index.js +1 -1
- package/dist/utils/markdown-to-html.js +2 -2
- package/package.json +30 -30
- package/dist/index-DZylq4Bc.js +0 -232
- package/dist/purify.es-BPDBzHtc.js +0 -552
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../../../index-
|
|
2
|
-
import {
|
|
1
|
+
import "../../../../index-BiBV5TQx.js";
|
|
2
|
+
import { a as o, s as e } from "../../../../index-V-gN11Y9.js";
|
|
3
3
|
export {
|
|
4
4
|
o as SlashCommand,
|
|
5
5
|
e as slashMenuPluginKey
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as o } from "../../../../index-
|
|
1
|
+
import { R as o } from "../../../../index-DxF-1P4n.js";
|
|
2
2
|
import { t as s } from "../../../../tippy.esm-DLHdsnfG.js";
|
|
3
3
|
import { getPopupMountTarget as a } from "../getPopupMountTarget.js";
|
|
4
4
|
import { SlashCommandList as l } from "./SlashCommandList.js";
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Editor, Extension } from "@tiptap/core";
|
|
2
|
+
import { Node as TiptapNode } from "@tiptap/pm/model";
|
|
3
|
+
export declare const SCRIBE_TABLE_OF_CONTENTS_META = "scribeTableOfContents";
|
|
4
|
+
type ScrollParent = HTMLElement | Window;
|
|
5
|
+
export type ScribeTableOfContentsItem = {
|
|
6
|
+
dom: HTMLElement;
|
|
7
|
+
editor: Editor;
|
|
8
|
+
id: string;
|
|
9
|
+
isActive: boolean;
|
|
10
|
+
isScrolledOver: boolean;
|
|
11
|
+
itemIndex: number;
|
|
12
|
+
level: number;
|
|
13
|
+
node: TiptapNode;
|
|
14
|
+
originalLevel: number;
|
|
15
|
+
pos: number;
|
|
16
|
+
textContent: string;
|
|
17
|
+
};
|
|
18
|
+
export type ScribeTableOfContentsChangeHandler = (items: ScribeTableOfContentsItem[], isCreate?: boolean) => void;
|
|
19
|
+
export type ScribeTableOfContentsScrollTarget = ScribeTableOfContentsItem | string;
|
|
20
|
+
type ScribeTableOfContentsOptions = {
|
|
21
|
+
anchorTypes: string[];
|
|
22
|
+
onUpdate?: ScribeTableOfContentsChangeHandler;
|
|
23
|
+
};
|
|
24
|
+
type ScribeTableOfContentsStorage = {
|
|
25
|
+
anchors: HTMLElement[];
|
|
26
|
+
content: ScribeTableOfContentsItem[];
|
|
27
|
+
hasCreated: boolean;
|
|
28
|
+
lastSignature: string;
|
|
29
|
+
layoutRefreshRetries: number;
|
|
30
|
+
rafId: number | null;
|
|
31
|
+
refresh: () => void;
|
|
32
|
+
scheduleRefresh: () => void;
|
|
33
|
+
scrollHandler: () => void;
|
|
34
|
+
scrollParent: ScrollParent | null;
|
|
35
|
+
updateScrollParent: () => void;
|
|
36
|
+
};
|
|
37
|
+
declare module "@tiptap/core" {
|
|
38
|
+
interface Commands<ReturnType> {
|
|
39
|
+
scribeTableOfContents: {
|
|
40
|
+
updateScribeTableOfContents: () => ReturnType;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
interface Storage {
|
|
44
|
+
scribeTableOfContents: ScribeTableOfContentsStorage;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export declare const ScribeTableOfContents: Extension<ScribeTableOfContentsOptions, ScribeTableOfContentsStorage>;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=tableOfContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableOfContents.d.ts","sourceRoot":"","sources":["../../../../lib/components/Scribe/extension/tableOfContents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGtD,eAAO,MAAM,6BAA6B,0BAA0B,CAAC;AAErE,KAAK,YAAY,GAAG,WAAW,GAAG,MAAM,CAAC;AAOzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,CAC/C,KAAK,EAAE,yBAAyB,EAAE,EAClC,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;AAEV,MAAM,MAAM,iCAAiC,GAAG,yBAAyB,GAAG,MAAM,CAAC;AAEnF,KAAK,4BAA4B,GAAG;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,kCAAkC,CAAC;CAC/C,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC,CAAC;AAyQF,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,qBAAqB,EAAE;YACrB,2BAA2B,EAAE,MAAM,UAAU,CAAC;SAC/C,CAAC;KACH;IAED,UAAU,OAAO;QACf,qBAAqB,EAAE,4BAA4B,CAAC;KACrD;CACF;AAED,eAAO,MAAM,qBAAqB,uEA8KhC,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { P as v, a as C, b as w } from "../../../index-BiBV5TQx.js";
|
|
2
|
+
const u = "scribeTableOfContents", S = new v("scribeTableOfContents"), T = 10, b = (e) => e.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "heading", m = (e, t) => {
|
|
3
|
+
const n = t[t.length - 1], s = [...t].reverse().find((r) => r.originalLevel <= e.node.attrs.level)?.level || 1;
|
|
4
|
+
return e.node.attrs.level > (n?.originalLevel || 1) ? (n?.level || 1) + 1 : e.node.attrs.level < (n?.originalLevel || 1) ? s : n?.level || 1;
|
|
5
|
+
}, y = (e) => (e[e.length - 1]?.itemIndex || 0) + 1, H = (e, t, n) => {
|
|
6
|
+
if (e.textContent.length === 0)
|
|
7
|
+
return null;
|
|
8
|
+
const o = b(e.textContent), s = (t.get(o) || 0) + 1, r = s === 1 ? o : `${o}-${s}`;
|
|
9
|
+
return t.set(o, s), n === r ? n : r;
|
|
10
|
+
}, d = (e, t) => {
|
|
11
|
+
const n = e.tr, o = /* @__PURE__ */ new Map();
|
|
12
|
+
let s = !1;
|
|
13
|
+
return e.doc.descendants((r, a) => {
|
|
14
|
+
if (!t.includes(r.type.name))
|
|
15
|
+
return;
|
|
16
|
+
const i = r.attrs["data-toc-id"], l = H(r, o, i);
|
|
17
|
+
i !== l && (n.setNodeMarkup(a, void 0, {
|
|
18
|
+
...r.attrs,
|
|
19
|
+
"data-toc-id": l
|
|
20
|
+
}), s = !0);
|
|
21
|
+
}), s ? n.setMeta(u, !0).setMeta("addToHistory", !1) : null;
|
|
22
|
+
}, R = (e) => {
|
|
23
|
+
const { overflowY: t } = window.getComputedStyle(e);
|
|
24
|
+
return /(auto|scroll|overlay)/.test(t) && e.scrollHeight > e.clientHeight;
|
|
25
|
+
}, A = (e) => {
|
|
26
|
+
let t = e.parentElement;
|
|
27
|
+
for (; t; ) {
|
|
28
|
+
if (R(t))
|
|
29
|
+
return t;
|
|
30
|
+
t = t.parentElement;
|
|
31
|
+
}
|
|
32
|
+
return window;
|
|
33
|
+
}, h = (e) => typeof Window < "u" && e instanceof Window, E = (e) => h(e) ? 32 : e.getBoundingClientRect().top + 32, c = (e) => e.isConnected && e.getClientRects().length > 0, I = (e, t) => {
|
|
34
|
+
const n = e.view.nodeDOM(t);
|
|
35
|
+
return n instanceof HTMLElement ? n : null;
|
|
36
|
+
}, O = (e, t) => {
|
|
37
|
+
const n = [];
|
|
38
|
+
return e.state.doc.descendants((o, s) => {
|
|
39
|
+
!t.includes(o.type.name) || o.textContent.length === 0 || n.push({ node: o, pos: s });
|
|
40
|
+
}), n;
|
|
41
|
+
}, g = (e, t) => e.length === 0 ? !0 : !t || !e.every((n) => c(n.dom)) ? !1 : h(t) || c(t), L = (e, t) => {
|
|
42
|
+
if (!g(e, t))
|
|
43
|
+
return e;
|
|
44
|
+
const n = E(t), o = /* @__PURE__ */ new Set();
|
|
45
|
+
let s = null;
|
|
46
|
+
return e.forEach((r) => {
|
|
47
|
+
r.dom.getBoundingClientRect().top <= n && (s = r.id, o.add(r.id));
|
|
48
|
+
}), e.map((r) => ({
|
|
49
|
+
...r,
|
|
50
|
+
isActive: r.id === s,
|
|
51
|
+
isScrolledOver: o.has(r.id)
|
|
52
|
+
}));
|
|
53
|
+
}, x = (e, t, n) => {
|
|
54
|
+
const o = O(e, t), s = [];
|
|
55
|
+
return o.forEach((r) => {
|
|
56
|
+
const a = r.node.attrs["data-toc-id"], i = I(e, r.pos);
|
|
57
|
+
if (!a || !i)
|
|
58
|
+
return;
|
|
59
|
+
const l = Number(r.node.attrs.level) || 1, f = m(r, s), p = y(s);
|
|
60
|
+
s.push({
|
|
61
|
+
dom: i,
|
|
62
|
+
editor: e,
|
|
63
|
+
id: a,
|
|
64
|
+
isActive: !1,
|
|
65
|
+
isScrolledOver: !1,
|
|
66
|
+
itemIndex: p,
|
|
67
|
+
level: f,
|
|
68
|
+
node: r.node,
|
|
69
|
+
originalLevel: l,
|
|
70
|
+
pos: r.pos,
|
|
71
|
+
textContent: r.node.textContent
|
|
72
|
+
});
|
|
73
|
+
}), L(s, n);
|
|
74
|
+
}, M = (e) => JSON.stringify(
|
|
75
|
+
e.map((t) => ({
|
|
76
|
+
id: t.id,
|
|
77
|
+
isActive: t.isActive,
|
|
78
|
+
isScrolledOver: t.isScrolledOver,
|
|
79
|
+
itemIndex: t.itemIndex,
|
|
80
|
+
level: t.level,
|
|
81
|
+
originalLevel: t.originalLevel,
|
|
82
|
+
pos: t.pos,
|
|
83
|
+
textContent: t.textContent
|
|
84
|
+
}))
|
|
85
|
+
), P = (e, t, n) => {
|
|
86
|
+
const o = M(n), s = !e.hasCreated;
|
|
87
|
+
e.anchors = n.map((r) => r.dom), e.content = n, !(!s && o === e.lastSignature) && (e.hasCreated = !0, e.lastSignature = o, t.onUpdate?.(n, s));
|
|
88
|
+
}, F = C.create({
|
|
89
|
+
name: "scribeTableOfContents",
|
|
90
|
+
addOptions() {
|
|
91
|
+
return {
|
|
92
|
+
anchorTypes: ["heading"]
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
addStorage() {
|
|
96
|
+
return {
|
|
97
|
+
anchors: [],
|
|
98
|
+
content: [],
|
|
99
|
+
hasCreated: !1,
|
|
100
|
+
lastSignature: "",
|
|
101
|
+
layoutRefreshRetries: 0,
|
|
102
|
+
rafId: null,
|
|
103
|
+
refresh: () => null,
|
|
104
|
+
scheduleRefresh: () => null,
|
|
105
|
+
scrollHandler: () => null,
|
|
106
|
+
scrollParent: null,
|
|
107
|
+
updateScrollParent: () => null
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
addGlobalAttributes() {
|
|
111
|
+
return [
|
|
112
|
+
{
|
|
113
|
+
types: this.options.anchorTypes,
|
|
114
|
+
attributes: {
|
|
115
|
+
"data-toc-id": {
|
|
116
|
+
default: null,
|
|
117
|
+
renderHTML: (e) => {
|
|
118
|
+
const t = e["data-toc-id"];
|
|
119
|
+
return t ? { "data-toc-id": t } : {};
|
|
120
|
+
},
|
|
121
|
+
parseHTML: (e) => e.getAttribute("data-toc-id")
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
];
|
|
126
|
+
},
|
|
127
|
+
addCommands() {
|
|
128
|
+
return {
|
|
129
|
+
updateScribeTableOfContents: () => ({ dispatch: e }) => (e && this.storage.refresh(), !0)
|
|
130
|
+
};
|
|
131
|
+
},
|
|
132
|
+
addProseMirrorPlugins() {
|
|
133
|
+
return [
|
|
134
|
+
new w({
|
|
135
|
+
key: S,
|
|
136
|
+
appendTransaction: (e, t, n) => typeof window > "u" || e.some(
|
|
137
|
+
(s) => s.getMeta(u) || s.getMeta("composition")
|
|
138
|
+
) || !e.some((s) => s.docChanged) ? null : d(n, this.options.anchorTypes)
|
|
139
|
+
})
|
|
140
|
+
];
|
|
141
|
+
},
|
|
142
|
+
onCreate() {
|
|
143
|
+
if (typeof window > "u" || !this.editor.view)
|
|
144
|
+
return;
|
|
145
|
+
this.storage.scrollHandler = () => {
|
|
146
|
+
this.storage.refresh();
|
|
147
|
+
}, this.storage.updateScrollParent = () => {
|
|
148
|
+
const t = A(this.editor.view.dom);
|
|
149
|
+
this.storage.scrollParent !== t && (this.storage.scrollParent?.removeEventListener("scroll", this.storage.scrollHandler), this.storage.scrollParent = t, this.storage.scrollParent.addEventListener("scroll", this.storage.scrollHandler));
|
|
150
|
+
}, this.storage.refresh = () => {
|
|
151
|
+
if (this.editor.isDestroyed)
|
|
152
|
+
return;
|
|
153
|
+
this.storage.updateScrollParent();
|
|
154
|
+
const t = x(
|
|
155
|
+
this.editor,
|
|
156
|
+
this.options.anchorTypes,
|
|
157
|
+
this.storage.scrollParent
|
|
158
|
+
), n = this.editor.view.dom.isConnected && g(t, this.storage.scrollParent);
|
|
159
|
+
n && (this.storage.layoutRefreshRetries = 0), P(this.storage, this.options, t), !n && this.storage.layoutRefreshRetries < T && (this.storage.layoutRefreshRetries += 1, this.storage.scheduleRefresh());
|
|
160
|
+
}, this.storage.scheduleRefresh = () => {
|
|
161
|
+
this.storage.rafId !== null && window.cancelAnimationFrame(this.storage.rafId), this.storage.rafId = window.requestAnimationFrame(() => {
|
|
162
|
+
this.storage.rafId = null, this.storage.refresh();
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
const e = d(
|
|
166
|
+
this.editor.state,
|
|
167
|
+
this.options.anchorTypes
|
|
168
|
+
);
|
|
169
|
+
e && this.editor.view.dispatch(e), this.storage.scheduleRefresh();
|
|
170
|
+
},
|
|
171
|
+
onTransaction({ transaction: e }) {
|
|
172
|
+
e.docChanged && this.storage.scheduleRefresh();
|
|
173
|
+
},
|
|
174
|
+
onDestroy() {
|
|
175
|
+
typeof window < "u" && this.storage.rafId !== null && window.cancelAnimationFrame(this.storage.rafId), this.storage.scrollParent?.removeEventListener("scroll", this.storage.scrollHandler);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
export {
|
|
179
|
+
u as SCRIBE_TABLE_OF_CONTENTS_META,
|
|
180
|
+
F as ScribeTableOfContents
|
|
181
|
+
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import "katex/dist/katex.css";
|
|
2
2
|
import { ClassValue } from "clsx";
|
|
3
|
+
import type { ScribeTableOfContentsChangeHandler, ScribeTableOfContentsScrollTarget } from "./extension/tableOfContents";
|
|
3
4
|
import { Content, Editor, Extension, JSONContent, UseEditorOptions } from "@tiptap/react";
|
|
4
5
|
import { KeyboardEventHandler } from "react";
|
|
6
|
+
export type { ScribeTableOfContentsChangeHandler, ScribeTableOfContentsItem, ScribeTableOfContentsScrollTarget, } from "./extension/tableOfContents";
|
|
5
7
|
export type ScribeOnChangeContents = {
|
|
6
8
|
jsonContent: Content;
|
|
7
9
|
htmlContent: Content;
|
|
@@ -12,10 +14,16 @@ export interface ScribeRef {
|
|
|
12
14
|
resetContent: () => void;
|
|
13
15
|
getContent: (contentType: "html" | "json" | "markdown") => string | JSONContent | undefined;
|
|
14
16
|
setContent: (content: Content) => void;
|
|
17
|
+
/** @experimental The table of contents API may change while we stabilize this behavior. */
|
|
18
|
+
scrollToTableOfContentsItem: (target: ScribeTableOfContentsScrollTarget) => void;
|
|
15
19
|
editor: Editor;
|
|
16
20
|
}
|
|
17
21
|
export interface ScribeProps {
|
|
18
22
|
onContentChange?: (content: ScribeOnChangeContents) => void;
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated Controlled content updates are being phased out. Prefer
|
|
25
|
+
* `ScribeRef.setContent` for programmatic updates after mount.
|
|
26
|
+
*/
|
|
19
27
|
content?: string;
|
|
20
28
|
editable?: boolean;
|
|
21
29
|
autoFocus?: boolean;
|
|
@@ -30,6 +38,10 @@ export interface ScribeProps {
|
|
|
30
38
|
mainContainerClassName?: ClassValue;
|
|
31
39
|
onKeyDown?: KeyboardEventHandler;
|
|
32
40
|
mobile?: boolean;
|
|
41
|
+
/** @experimental Enables Scribe's app-owned table-of-contents API. */
|
|
42
|
+
enableTableOfContents?: boolean;
|
|
43
|
+
/** @experimental Receives the current table-of-contents items when they change. */
|
|
44
|
+
onTableOfContentsChange?: ScribeTableOfContentsChangeHandler;
|
|
33
45
|
}
|
|
34
46
|
export declare const Scribe: import("react").ForwardRefExoticComponent<ScribeProps & import("react").RefAttributes<ScribeRef>>;
|
|
35
47
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/components/Scribe/index.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/components/Scribe/index.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;AAIxC,OAAO,KAAK,EACV,kCAAkC,EAElC,iCAAiC,EAClC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,OAAO,EACP,MAAM,EAGN,SAAS,EACT,WAAW,EACX,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,oBAAoB,EAMrB,MAAM,OAAO,CAAC;AAGf,YAAY,EACV,kCAAkC,EAClC,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,KAAK,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5F,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,2FAA2F;IAC3F,2BAA2B,EAAE,CAAC,MAAM,EAAE,iCAAiC,KAAK,IAAI,CAAC;IACjF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC5D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACzC,sBAAsB,CAAC,EAAE,UAAU,CAAC;IACpC,kBAAkB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACzC,sBAAsB,CAAC,EAAE,UAAU,CAAC;IACpC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mFAAmF;IACnF,uBAAuB,CAAC,EAAE,kCAAkC,CAAC;CAC9D;AAED,eAAO,MAAM,MAAM,mGAyMjB,CAAC"}
|
|
@@ -1,109 +1,152 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { B as
|
|
3
|
-
import { html2md as
|
|
4
|
-
import "../../markdown-to-html-
|
|
5
|
-
import "../../purify.es-
|
|
6
|
-
import { E as
|
|
7
|
-
import { initExtensions as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
1
|
+
import { jsxs as x, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { B as A, c as b } from "../../BarMenu-DaKIz3zZ.js";
|
|
3
|
+
import { html2md as I } from "../../utils/html-to-markdown.js";
|
|
4
|
+
import "../../markdown-to-html-pL7ckd-m.js";
|
|
5
|
+
import "../../purify.es-exIQuqhb.js";
|
|
6
|
+
import { E as F } from "../../index-BiBV5TQx.js";
|
|
7
|
+
import { initExtensions as J } from "./extension/index.js";
|
|
8
|
+
import { SCRIBE_TABLE_OF_CONTENTS_META as U } from "./extension/tableOfContents.js";
|
|
9
|
+
import { E as V } from "../../index-DxF-1P4n.js";
|
|
10
|
+
import { forwardRef as K, useRef as E, useEffect as c, useCallback as r, useState as q, useImperativeHandle as G } from "react";
|
|
11
|
+
import { ListOptionBar as Q } from "../Menu/Mobile/ListOptionBar.js";
|
|
12
|
+
import '../../assets/index.css';const it = K((h, B) => {
|
|
12
13
|
const {
|
|
13
|
-
autoFocus:
|
|
14
|
-
content:
|
|
14
|
+
autoFocus: g = !1,
|
|
15
|
+
content: i,
|
|
15
16
|
editable: o = !0,
|
|
16
|
-
editorProps:
|
|
17
|
-
extensions:
|
|
18
|
-
onContentChange:
|
|
19
|
-
showBarMenu:
|
|
20
|
-
editorContentStyle:
|
|
21
|
-
editorContentClassName:
|
|
22
|
-
mainContainerStyle:
|
|
23
|
-
mainContainerClassName:
|
|
24
|
-
onKeyDown:
|
|
25
|
-
externalEditor:
|
|
26
|
-
mobile:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
17
|
+
editorProps: d,
|
|
18
|
+
extensions: L,
|
|
19
|
+
onContentChange: l,
|
|
20
|
+
showBarMenu: R = !0,
|
|
21
|
+
editorContentStyle: j,
|
|
22
|
+
editorContentClassName: H,
|
|
23
|
+
mainContainerStyle: P,
|
|
24
|
+
mainContainerClassName: k,
|
|
25
|
+
onKeyDown: _,
|
|
26
|
+
externalEditor: T,
|
|
27
|
+
mobile: D,
|
|
28
|
+
onTableOfContentsChange: f
|
|
29
|
+
} = h, O = E(!T && i !== void 0), y = E([]), M = E(f);
|
|
30
|
+
c(() => {
|
|
31
|
+
M.current = f;
|
|
32
|
+
}, [f]);
|
|
33
|
+
const z = r(
|
|
34
|
+
(e, s) => {
|
|
35
|
+
y.current = e, M.current?.(e, s);
|
|
36
|
+
},
|
|
37
|
+
[]
|
|
38
|
+
), u = r(
|
|
39
|
+
({ editor: e, transaction: s }) => {
|
|
40
|
+
if (s.getMeta(U))
|
|
41
|
+
return;
|
|
42
|
+
const n = e.getHTML(), m = e.getJSON(), p = !o;
|
|
43
|
+
l && l({
|
|
44
|
+
jsonContent: e.isEmpty ? "" : m,
|
|
45
|
+
htmlContent: e.isEmpty ? "" : n,
|
|
46
|
+
markdownContent: e.isEmpty ? "" : I(n),
|
|
47
|
+
source: p ? "programmatic" : "user"
|
|
35
48
|
});
|
|
36
49
|
},
|
|
37
|
-
[o,
|
|
38
|
-
), [t] =
|
|
39
|
-
...
|
|
50
|
+
[o, l]
|
|
51
|
+
), [t] = q(() => T ?? new F({
|
|
52
|
+
...d,
|
|
53
|
+
content: i ?? d?.content,
|
|
40
54
|
editable: o,
|
|
41
|
-
extensions: [
|
|
55
|
+
extensions: [
|
|
56
|
+
...J({
|
|
57
|
+
...h,
|
|
58
|
+
onTableOfContentsChange: z
|
|
59
|
+
}),
|
|
60
|
+
...L ?? []
|
|
61
|
+
],
|
|
42
62
|
editorProps: {
|
|
43
63
|
attributes: {
|
|
44
64
|
class: "scribe"
|
|
45
65
|
},
|
|
46
|
-
...
|
|
66
|
+
...d?.editorProps
|
|
47
67
|
}
|
|
48
|
-
})),
|
|
68
|
+
})), v = r(() => {
|
|
49
69
|
t.commands.setContent("");
|
|
50
|
-
}, [t]),
|
|
70
|
+
}, [t]), w = r(
|
|
51
71
|
(e) => {
|
|
52
72
|
const s = {
|
|
53
73
|
html: () => t.getHTML(),
|
|
54
74
|
json: () => t.getJSON(),
|
|
55
|
-
markdown: () =>
|
|
75
|
+
markdown: () => I(t.getHTML())
|
|
56
76
|
};
|
|
57
77
|
return t.isEmpty ? "" : s[e]?.();
|
|
58
78
|
},
|
|
59
79
|
[t]
|
|
60
|
-
),
|
|
80
|
+
), N = r(
|
|
61
81
|
(e) => {
|
|
62
82
|
t.commands.setContent(e);
|
|
63
83
|
},
|
|
64
84
|
[t]
|
|
85
|
+
), S = r(
|
|
86
|
+
(e) => {
|
|
87
|
+
const s = typeof e == "string" ? e : e.id, n = y.current.find((C) => C.id === s) ?? (typeof e == "string" ? void 0 : e);
|
|
88
|
+
if (!n || t.isDestroyed)
|
|
89
|
+
return;
|
|
90
|
+
const m = t.view.nodeDOM(n.pos), p = m instanceof HTMLElement ? m : n.dom;
|
|
91
|
+
if (t.isEditable) {
|
|
92
|
+
const C = Math.max(
|
|
93
|
+
0,
|
|
94
|
+
Math.min(n.pos + n.node.nodeSize - 1, t.state.doc.content.size)
|
|
95
|
+
);
|
|
96
|
+
t.commands.focus(C, { scrollIntoView: !1 });
|
|
97
|
+
}
|
|
98
|
+
p.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
99
|
+
},
|
|
100
|
+
[t]
|
|
65
101
|
);
|
|
66
|
-
return
|
|
67
|
-
resetContent:
|
|
68
|
-
setContent:
|
|
69
|
-
getContent:
|
|
102
|
+
return G(B, () => ({
|
|
103
|
+
resetContent: v,
|
|
104
|
+
setContent: N,
|
|
105
|
+
getContent: w,
|
|
106
|
+
scrollToTableOfContentsItem: S,
|
|
70
107
|
editor: t
|
|
71
|
-
}), [t,
|
|
72
|
-
|
|
73
|
-
|
|
108
|
+
}), [t, w, v, S, N]), c(() => {
|
|
109
|
+
if (i !== void 0) {
|
|
110
|
+
if (O.current) {
|
|
111
|
+
O.current = !1;
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
t.commands.setContent(i, { emitUpdate: !1 });
|
|
115
|
+
}
|
|
116
|
+
}, [i, t]), c(() => {
|
|
74
117
|
t.setEditable(!!o);
|
|
75
|
-
}, [o, t]),
|
|
76
|
-
t.off("update",
|
|
77
|
-
}), [t,
|
|
78
|
-
|
|
79
|
-
}, [
|
|
118
|
+
}, [o, t]), c(() => (t.off("update"), t.on("update", u), () => {
|
|
119
|
+
t.off("update", u);
|
|
120
|
+
}), [t, u]), c(() => {
|
|
121
|
+
g && t.commands.focus("end");
|
|
122
|
+
}, [g, t]), /* @__PURE__ */ x(
|
|
80
123
|
"div",
|
|
81
124
|
{
|
|
82
|
-
className:
|
|
125
|
+
className: b("scribe-wrapper", "scribe-root", k),
|
|
83
126
|
"data-scribe-root": !0,
|
|
84
|
-
style:
|
|
127
|
+
style: P,
|
|
85
128
|
children: [
|
|
86
|
-
/* @__PURE__ */
|
|
87
|
-
t &&
|
|
88
|
-
/* @__PURE__ */
|
|
129
|
+
/* @__PURE__ */ x("div", { className: b("scribe-frame", o && "scribe-frame--editable"), children: [
|
|
130
|
+
t && R ? /* @__PURE__ */ a(A, { editor: t }) : null,
|
|
131
|
+
/* @__PURE__ */ a(
|
|
89
132
|
"div",
|
|
90
133
|
{
|
|
91
|
-
className:
|
|
134
|
+
className: b(
|
|
92
135
|
"scribe-content",
|
|
93
136
|
o && "scribe-content--editable",
|
|
94
|
-
|
|
137
|
+
H
|
|
95
138
|
),
|
|
96
|
-
style:
|
|
97
|
-
children: /* @__PURE__ */
|
|
139
|
+
style: j,
|
|
140
|
+
children: /* @__PURE__ */ a(V, { editor: t, onKeyDown: _ })
|
|
98
141
|
}
|
|
99
142
|
),
|
|
100
|
-
|
|
143
|
+
D ? /* @__PURE__ */ a(Q, { editor: t }) : null
|
|
101
144
|
] }),
|
|
102
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ a("div", { className: "scribe-popup-root", "data-scribe-popup-root": !0 })
|
|
103
146
|
]
|
|
104
147
|
}
|
|
105
148
|
);
|
|
106
149
|
});
|
|
107
150
|
export {
|
|
108
|
-
|
|
151
|
+
it as Scribe
|
|
109
152
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as Pe, m as Ne, h as le, b as qt, P as Jt, i as Ie, j as we, l as ve, n as He, o as xe } from "./index-
|
|
1
|
+
import { M as Pe, m as Ne, h as le, b as qt, P as Jt, i as Ie, j as we, l as ve, n as He, o as xe } from "./index-BiBV5TQx.js";
|
|
2
2
|
const Ue = "aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2", De = "ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2", zt = "numeric", Wt = "ascii", Ft = "alpha", K = "asciinumeric", F = "alphanumeric", Kt = "domain", ge = "emoji", Me = "scheme", je = "slashscheme", xt = "whitespace";
|
|
3
3
|
function Be(t, n) {
|
|
4
4
|
return t in n || (n[t] = []), n[t];
|