@clevertask/scribe 0.1.13 → 0.1.14
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 +50 -0
- package/dist/{BarMenu-O2IVhHXx.js → BarMenu-x4sf3ECS.js} +1 -1
- package/dist/components/Menu/BarMenu.js +1 -1
- package/dist/components/Menu/BubbleMenu.js +2 -2
- package/dist/components/Menu/CalloutBubbleMenu.js +2 -2
- package/dist/components/Menu/ExternalLinkDisplayOptions.d.ts +13 -0
- package/dist/components/Menu/ExternalLinkDisplayOptions.d.ts.map +1 -0
- package/dist/components/Menu/ExternalLinkDisplayOptions.js +90 -0
- package/dist/components/Menu/LinkBubbleMenu.d.ts.map +1 -1
- package/dist/components/Menu/LinkBubbleMenu.js +161 -61
- package/dist/components/Menu/LinkEditor.d.ts +9 -0
- package/dist/components/Menu/LinkEditor.d.ts.map +1 -1
- package/dist/components/Menu/LinkEditor.js +117 -64
- package/dist/components/Menu/Mobile/ListOptionBar.js +1 -1
- package/dist/components/Menu/TableBubbleMenu.js +2 -2
- package/dist/components/Menu/contextualMenuOwner.d.ts +1 -1
- package/dist/components/Menu/contextualMenuOwner.d.ts.map +1 -1
- package/dist/components/Menu/contextualMenuOwner.js +9 -6
- package/dist/components/Menu/linkBubbleMenuPlugin.d.ts +24 -1
- package/dist/components/Menu/linkBubbleMenuPlugin.d.ts.map +1 -1
- package/dist/components/Menu/linkBubbleMenuPlugin.js +43 -6
- package/dist/components/Scribe/extension/callout.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/external-link-preview/attributes.d.ts +18 -0
- package/dist/components/Scribe/extension/external-link-preview/attributes.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/attributes.js +82 -0
- package/dist/components/Scribe/extension/external-link-preview/commands.d.ts +53 -0
- package/dist/components/Scribe/extension/external-link-preview/commands.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/commands.js +134 -0
- package/dist/components/Scribe/extension/external-link-preview/index.d.ts +13 -0
- package/dist/components/Scribe/extension/external-link-preview/index.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/index.js +138 -0
- package/dist/components/Scribe/extension/external-link-preview/node-view.d.ts +3 -0
- package/dist/components/Scribe/extension/external-link-preview/node-view.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/node-view.js +97 -0
- package/dist/components/Scribe/extension/external-link-preview/normalization.d.ts +7 -0
- package/dist/components/Scribe/extension/external-link-preview/normalization.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/normalization.js +21 -0
- package/dist/components/Scribe/extension/external-link-preview/paste.d.ts +8 -0
- package/dist/components/Scribe/extension/external-link-preview/paste.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/paste.js +54 -0
- package/dist/components/Scribe/extension/external-link-preview/policy.d.ts +7 -0
- package/dist/components/Scribe/extension/external-link-preview/policy.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/policy.js +38 -0
- package/dist/components/Scribe/extension/external-link-preview/render-html.d.ts +7 -0
- package/dist/components/Scribe/extension/external-link-preview/render-html.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/render-html.js +62 -0
- package/dist/components/Scribe/extension/external-link-preview/resolver.d.ts +23 -0
- package/dist/components/Scribe/extension/external-link-preview/resolver.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/resolver.js +118 -0
- package/dist/components/Scribe/extension/external-link-preview/serialization.d.ts +10 -0
- package/dist/components/Scribe/extension/external-link-preview/serialization.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/serialization.js +69 -0
- package/dist/components/Scribe/extension/external-link-preview/types.d.ts +53 -0
- package/dist/components/Scribe/extension/external-link-preview/types.d.ts.map +1 -0
- package/dist/components/Scribe/extension/external-link-preview/types.js +4 -0
- package/dist/components/Scribe/extension/index.d.ts +1 -1
- package/dist/components/Scribe/extension/index.d.ts.map +1 -1
- package/dist/components/Scribe/extension/index.js +1 -1
- package/dist/components/Scribe/extension/resizable-table.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 +1 -1
- package/dist/components/Scribe/index.d.ts +14 -0
- package/dist/components/Scribe/index.d.ts.map +1 -1
- package/dist/components/Scribe/index.js +5 -5
- package/dist/{dist-BoYfa2nz.js → dist-DDjaA1Pn.js} +309 -150
- package/dist/{dist-W9E-K577.js → dist-tNcpTcFT.js} +738 -637
- package/dist/{extension-D5WIAWhc.js → extension-dRUfQQo6.js} +1940 -1938
- package/dist/{extension-link-D8Zi7OSa.js → extension-link-RYtPpHwt.js} +28 -27
- package/dist/{html-to-markdown-C920nQtn.js → html-to-markdown-nbQ6qHyO.js} +173 -162
- package/dist/main.css +148 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +12 -9
- package/dist/{markdown-to-html-CW0Nb9Ye.js → markdown-to-html-B-KKCZRs.js} +115 -111
- package/dist/{menus-B1Zz0GjH.js → menus-U2HdvQnu.js} +11 -11
- package/dist/{resizable-table-Bf-fb9iv.js → resizable-table-m0AzovsZ.js} +14 -14
- package/dist/{slashCommand-47omO4ob.js → slashCommand-CtvgnL0Z.js} +1 -1
- package/dist/utils/create-scribe-editor.d.ts +4 -1
- package/dist/utils/create-scribe-editor.d.ts.map +1 -1
- package/dist/utils/html-to-markdown.d.ts.map +1 -1
- package/dist/utils/html-to-markdown.js +1 -1
- package/dist/utils/index.js +7 -7
- package/dist/utils/markdown-to-html.d.ts.map +1 -1
- package/dist/utils/markdown-to-html.js +1 -1
- package/package.json +1 -1
|
@@ -1,132 +1,185 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import e from "./ExternalLinkDisplayOptions.js";
|
|
2
|
+
import { normalizeLinkUrl as t } from "./linkUrl.js";
|
|
3
|
+
import { Box as n, Button as r, Flex as i, Text as a, TextField as o } from "@radix-ui/themes";
|
|
4
|
+
import { useCallback as s, useEffect as c, useId as l, useState as u } from "react";
|
|
5
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
5
6
|
//#region lib/components/Menu/LinkEditor.tsx
|
|
6
|
-
var
|
|
7
|
-
let [
|
|
8
|
-
|
|
9
|
-
}, [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}, [
|
|
13
|
-
let
|
|
14
|
-
|
|
15
|
-
}, [
|
|
16
|
-
|
|
17
|
-
let n =
|
|
7
|
+
var p = ({ canRefreshPreview: p = !1, currentDisplay: m = "plain", editor: h, existingHref: g, inputRef: _, onClose: v, onRefreshPreview: y, onValueChange: b, previewStatus: x = "idle", previewStatusLabel: S, resetToken: C, selectTextblockEndAfterSave: w = !1, targetPosition: T, value: E }) => {
|
|
8
|
+
let [D, O] = u(null), k = l(), A = t(E), j = s(() => {
|
|
9
|
+
O(null), v();
|
|
10
|
+
}, [v]);
|
|
11
|
+
c(() => {
|
|
12
|
+
O(null);
|
|
13
|
+
}, [g, C]);
|
|
14
|
+
let M = s((e) => {
|
|
15
|
+
O(null), b(e);
|
|
16
|
+
}, [b]), N = s((e) => {
|
|
17
|
+
e.preventDefault();
|
|
18
|
+
let n = m !== "plain" && E === g ? g : t(E);
|
|
18
19
|
if (!n) {
|
|
19
|
-
|
|
20
|
+
O("Enter a valid web address or root-relative path.");
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
if (m !== "plain") {
|
|
24
|
+
if (!(h.can().updateExternalLinkPreview({ href: n }, T) && h.chain().focus().updateExternalLinkPreview({ href: n }, T).run())) {
|
|
25
|
+
O("This URL can't be used as a preview. Choose Plain link to keep this destination.");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
j();
|
|
25
29
|
return;
|
|
26
30
|
}
|
|
27
|
-
|
|
31
|
+
let r = h.chain().focus().extendMarkRange("link").setLink({ href: n });
|
|
32
|
+
if (w && r.selectTextblockEnd(), !r.run()) {
|
|
33
|
+
O("Scribe could not save this link.");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
j();
|
|
28
37
|
}, [
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
m,
|
|
39
|
+
h,
|
|
40
|
+
g,
|
|
41
|
+
j,
|
|
42
|
+
w,
|
|
43
|
+
T,
|
|
44
|
+
E
|
|
45
|
+
]), P = s(() => {
|
|
46
|
+
if (!h.chain().focus().extendMarkRange("link").unsetLink().run()) {
|
|
47
|
+
O("Scribe could not remove this link.");
|
|
36
48
|
return;
|
|
37
49
|
}
|
|
38
|
-
|
|
39
|
-
}, [
|
|
40
|
-
|
|
41
|
-
}, [
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
j();
|
|
51
|
+
}, [h, j]), F = E !== g, I = x === "loading" || F, L = s(() => {
|
|
52
|
+
I || y?.();
|
|
53
|
+
}, [I, y]), R = s((e) => {
|
|
54
|
+
let n = t(E);
|
|
55
|
+
if (!n) return O("Enter a valid external web address before changing its display."), !1;
|
|
56
|
+
let r = !1;
|
|
57
|
+
return r = m === "plain" ? h.chain().focus().extendMarkRange("link").setLink({ href: n }).setExternalLinkDisplay(e).run() : e === "plain" ? h.commands.convertExternalLinkPreviewToPlain(n, T) : h.can().updateExternalLinkPreview({ href: n }, T) && h.chain().focus().updateExternalLinkPreview({ href: n }, T).setExternalLinkDisplay(e, T).run(), r ? !0 : (O(e === "plain" ? "Scribe could not update this link." : "This link can't use Compact or Preview card."), !1);
|
|
58
|
+
}, [
|
|
59
|
+
m,
|
|
60
|
+
h,
|
|
61
|
+
T,
|
|
62
|
+
E
|
|
63
|
+
]), z = s((e) => {
|
|
64
|
+
e.key === "Escape" && (e.preventDefault(), e.stopPropagation(), j());
|
|
65
|
+
}, [j]);
|
|
66
|
+
return /* @__PURE__ */ d("form", {
|
|
67
|
+
onKeyDown: z,
|
|
68
|
+
onSubmit: N,
|
|
69
|
+
children: /* @__PURE__ */ f(i, {
|
|
46
70
|
direction: "column",
|
|
47
71
|
gap: "4",
|
|
48
72
|
children: [
|
|
49
|
-
/* @__PURE__ */
|
|
73
|
+
/* @__PURE__ */ f(n, { children: [/* @__PURE__ */ d(a, {
|
|
50
74
|
as: "p",
|
|
51
75
|
size: "3",
|
|
52
76
|
weight: "medium",
|
|
53
77
|
children: "Link"
|
|
54
|
-
}), /* @__PURE__ */
|
|
78
|
+
}), /* @__PURE__ */ d(a, {
|
|
55
79
|
as: "p",
|
|
56
80
|
size: "2",
|
|
57
81
|
color: "gray",
|
|
58
82
|
children: "Add or update a link for the current selection."
|
|
59
83
|
})] }),
|
|
60
|
-
/* @__PURE__ */
|
|
84
|
+
/* @__PURE__ */ d("label", { children: /* @__PURE__ */ f(i, {
|
|
61
85
|
direction: "column",
|
|
62
86
|
gap: "2",
|
|
63
|
-
children: [/* @__PURE__ */
|
|
87
|
+
children: [/* @__PURE__ */ d(a, {
|
|
64
88
|
as: "span",
|
|
65
89
|
size: "2",
|
|
66
90
|
weight: "medium",
|
|
67
91
|
children: "URL"
|
|
68
|
-
}), /* @__PURE__ */
|
|
69
|
-
ref:
|
|
70
|
-
"aria-describedby":
|
|
71
|
-
"aria-invalid": !!
|
|
72
|
-
autoFocus: !
|
|
92
|
+
}), /* @__PURE__ */ d(o.Root, {
|
|
93
|
+
ref: _,
|
|
94
|
+
"aria-describedby": D ? k : void 0,
|
|
95
|
+
"aria-invalid": !!D,
|
|
96
|
+
autoFocus: !_,
|
|
73
97
|
placeholder: "https://example.com",
|
|
74
|
-
value:
|
|
75
|
-
onChange: (e) =>
|
|
98
|
+
value: E,
|
|
99
|
+
onChange: (e) => M(e.target.value)
|
|
76
100
|
})]
|
|
77
101
|
}) }),
|
|
78
|
-
|
|
79
|
-
id:
|
|
102
|
+
D ? /* @__PURE__ */ d(a, {
|
|
103
|
+
id: k,
|
|
80
104
|
as: "p",
|
|
81
105
|
role: "alert",
|
|
82
106
|
size: "2",
|
|
83
107
|
color: "red",
|
|
84
|
-
children:
|
|
108
|
+
children: D
|
|
85
109
|
}) : null,
|
|
86
|
-
/* @__PURE__ */ d(
|
|
110
|
+
/* @__PURE__ */ d(e, {
|
|
111
|
+
currentDisplay: m,
|
|
112
|
+
editor: h,
|
|
113
|
+
executeDisplayChange: F ? R : void 0,
|
|
114
|
+
onDisplayChange: j,
|
|
115
|
+
targetPosition: T
|
|
116
|
+
}),
|
|
117
|
+
m === "plain" ? null : /* @__PURE__ */ f(i, {
|
|
118
|
+
align: "center",
|
|
119
|
+
justify: "between",
|
|
120
|
+
gap: "2",
|
|
121
|
+
wrap: "wrap",
|
|
122
|
+
children: [/* @__PURE__ */ d(a, {
|
|
123
|
+
as: "span",
|
|
124
|
+
role: "status",
|
|
125
|
+
"aria-live": "polite",
|
|
126
|
+
size: "1",
|
|
127
|
+
color: x === "error" ? "red" : "gray",
|
|
128
|
+
children: x === "loading" ? "Loading preview…" : x === "error" ? "Preview unavailable" : S
|
|
129
|
+
}), p && y ? /* @__PURE__ */ d(r, {
|
|
130
|
+
type: "button",
|
|
131
|
+
color: "gray",
|
|
132
|
+
variant: "soft",
|
|
133
|
+
"aria-disabled": I,
|
|
134
|
+
"data-disabled": I ? "" : void 0,
|
|
135
|
+
onClick: L,
|
|
136
|
+
children: "Refresh preview"
|
|
137
|
+
}) : null]
|
|
138
|
+
}),
|
|
139
|
+
/* @__PURE__ */ f(i, {
|
|
87
140
|
justify: "between",
|
|
88
141
|
gap: "3",
|
|
89
142
|
wrap: "wrap",
|
|
90
|
-
children: [/* @__PURE__ */
|
|
143
|
+
children: [m === "plain" ? /* @__PURE__ */ d(r, {
|
|
91
144
|
type: "button",
|
|
92
145
|
color: "red",
|
|
93
146
|
variant: "soft",
|
|
94
|
-
disabled: !
|
|
95
|
-
onClick:
|
|
147
|
+
disabled: !g,
|
|
148
|
+
onClick: P,
|
|
96
149
|
children: "Remove link"
|
|
97
|
-
}), /* @__PURE__ */
|
|
150
|
+
}) : null, /* @__PURE__ */ f(i, {
|
|
98
151
|
gap: "2",
|
|
99
152
|
justify: "end",
|
|
100
153
|
style: { marginLeft: "auto" },
|
|
101
154
|
wrap: "wrap",
|
|
102
155
|
children: [
|
|
103
|
-
|
|
156
|
+
A ? /* @__PURE__ */ d(r, {
|
|
104
157
|
asChild: !0,
|
|
105
158
|
variant: "soft",
|
|
106
159
|
color: "gray",
|
|
107
|
-
children: /* @__PURE__ */
|
|
108
|
-
href:
|
|
160
|
+
children: /* @__PURE__ */ d("a", {
|
|
161
|
+
href: A,
|
|
109
162
|
target: "_blank",
|
|
110
163
|
rel: "noopener noreferrer",
|
|
111
164
|
children: "Open link"
|
|
112
165
|
})
|
|
113
|
-
}) : /* @__PURE__ */
|
|
166
|
+
}) : /* @__PURE__ */ d(r, {
|
|
114
167
|
type: "button",
|
|
115
168
|
variant: "soft",
|
|
116
169
|
color: "gray",
|
|
117
170
|
disabled: !0,
|
|
118
171
|
children: "Open link"
|
|
119
172
|
}),
|
|
120
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ d(r, {
|
|
121
174
|
type: "button",
|
|
122
175
|
variant: "soft",
|
|
123
176
|
color: "gray",
|
|
124
|
-
onClick:
|
|
177
|
+
onClick: j,
|
|
125
178
|
children: "Cancel"
|
|
126
179
|
}),
|
|
127
|
-
/* @__PURE__ */
|
|
180
|
+
/* @__PURE__ */ d(r, {
|
|
128
181
|
type: "submit",
|
|
129
|
-
disabled:
|
|
182
|
+
disabled: E.trim().length === 0,
|
|
130
183
|
children: "Save"
|
|
131
184
|
})
|
|
132
185
|
]
|
|
@@ -137,4 +190,4 @@ var f = ({ editor: f, existingHref: p, inputRef: m, onClose: h, onValueChange: g
|
|
|
137
190
|
});
|
|
138
191
|
};
|
|
139
192
|
//#endregion
|
|
140
|
-
export {
|
|
193
|
+
export { p as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { s as e } from "../../dist-DDjaA1Pn.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-U2HdvQnu.js";
|
|
4
4
|
import { getSelectionTableContext as r, tableBubbleMenuPluginKey as i } from "./tableBubbleMenuPlugin.js";
|
|
5
5
|
import { getSelectionContextualMenuOwner as a } from "./contextualMenuOwner.js";
|
|
6
6
|
import { Flex as o, IconButton as s, Separator as c } from "@radix-ui/themes";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { EditorState } from "@tiptap/pm/state";
|
|
2
|
-
export type ContextualMenuOwner = "callout" | "table";
|
|
2
|
+
export type ContextualMenuOwner = "callout" | "link" | "table";
|
|
3
3
|
export declare const getSelectionContextualMenuOwner: (state: EditorState) => ContextualMenuOwner | null;
|
|
4
4
|
//# sourceMappingURL=contextualMenuOwner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextualMenuOwner.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/contextualMenuOwner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"contextualMenuOwner.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/contextualMenuOwner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D,eAAO,MAAM,+BAA+B,UAAW,WAAW,KAAG,mBAAmB,GAAG,IAyB1F,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getSelectionLinkContext as e } from "./linkBubbleMenuPlugin.js";
|
|
2
|
+
import { getSelectionCalloutContext as t } from "./calloutBubbleMenuPlugin.js";
|
|
3
|
+
import { getSelectionTableContext as n } from "./tableBubbleMenuPlugin.js";
|
|
3
4
|
//#region lib/components/Menu/contextualMenuOwner.ts
|
|
4
|
-
var
|
|
5
|
-
let
|
|
6
|
-
|
|
5
|
+
var r = (r) => {
|
|
6
|
+
let i = e(r);
|
|
7
|
+
if (i?.kind === "preview" || i?.kind === "plain" && !r.selection.empty && r.selection.from === i.from && r.selection.to === i.to) return "link";
|
|
8
|
+
let a = t(r), o = n(r);
|
|
9
|
+
return a ? o ? a.position > o.position ? "callout" : "table" : "callout" : o ? "table" : null;
|
|
7
10
|
};
|
|
8
11
|
//#endregion
|
|
9
|
-
export {
|
|
12
|
+
export { r as getSelectionContextualMenuOwner };
|
|
@@ -1,6 +1,29 @@
|
|
|
1
|
+
import type { EditorState } from "@tiptap/pm/state";
|
|
1
2
|
import { PluginKey } from "@tiptap/pm/state";
|
|
2
3
|
import { Editor } from "@tiptap/react";
|
|
4
|
+
import type { ExternalLinkPreviewAttributes, ExternalLinkPreviewDisplay } from "../Scribe/extension/external-link-preview/types";
|
|
5
|
+
export type LinkBubbleMenuFocusTarget = "dialog" | "url";
|
|
6
|
+
export type LinkBubbleMenuContext = {
|
|
7
|
+
display: "plain";
|
|
8
|
+
from: number;
|
|
9
|
+
href: string;
|
|
10
|
+
kind: "plain";
|
|
11
|
+
to: number;
|
|
12
|
+
} | {
|
|
13
|
+
attributes: ExternalLinkPreviewAttributes;
|
|
14
|
+
display: ExternalLinkPreviewDisplay;
|
|
15
|
+
from: number;
|
|
16
|
+
href: string;
|
|
17
|
+
kind: "preview";
|
|
18
|
+
position: number;
|
|
19
|
+
to: number;
|
|
20
|
+
};
|
|
3
21
|
export declare const linkBubbleMenuPluginKey: PluginKey<any>;
|
|
4
|
-
export declare const
|
|
22
|
+
export declare const getPlainLinkContextAtPosition: (state: EditorState, position: number) => Extract<LinkBubbleMenuContext, {
|
|
23
|
+
kind: "plain";
|
|
24
|
+
}> | null;
|
|
25
|
+
export declare const getSelectionLinkContext: (state: EditorState) => LinkBubbleMenuContext | null;
|
|
26
|
+
export declare const consumeLinkBubbleMenuFocusTarget: (editor: Editor) => LinkBubbleMenuFocusTarget;
|
|
27
|
+
export declare const showLinkBubbleMenu: (editor: Editor, focusTarget?: LinkBubbleMenuFocusTarget) => void;
|
|
5
28
|
export declare const hideLinkBubbleMenu: (editor: Editor) => void;
|
|
6
29
|
//# sourceMappingURL=linkBubbleMenuPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkBubbleMenuPlugin.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/linkBubbleMenuPlugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linkBubbleMenuPlugin.d.ts","sourceRoot":"","sources":["../../../lib/components/Menu/linkBubbleMenuPlugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAiB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC3B,MAAM,iDAAiD,CAAC;AAEzD,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAC7B;IACE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,UAAU,EAAE,6BAA6B,CAAC;IAC1C,OAAO,EAAE,0BAA0B,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEN,eAAO,MAAM,uBAAuB,gBAAwC,CAAC;AAG7E,eAAO,MAAM,6BAA6B,UACjC,WAAW,YACR,MAAM,KACf,OAAO,CAAC,qBAAqB,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAqCtD,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAAW,WAAW,KAAG,qBAAqB,GAAG,IAiCpF,CAAC;AAEF,eAAO,MAAM,gCAAgC,WAAY,MAAM,8BAM9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,WACrB,MAAM,gBACD,yBAAyB,SAevC,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAY,MAAM,SAMhD,CAAC"}
|
|
@@ -1,9 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { v as e } from "../../dist-tNcpTcFT.js";
|
|
2
|
+
import { normalizeExternalLinkPreviewAttributes as t } from "../Scribe/extension/external-link-preview/attributes.js";
|
|
3
|
+
import { NodeSelection as n, PluginKey as r } from "@tiptap/pm/state";
|
|
2
4
|
//#region lib/components/Menu/linkBubbleMenuPlugin.ts
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
var i = new r("scribeLinkBubbleMenu"), a = /* @__PURE__ */ new WeakMap(), o = (t, n) => {
|
|
6
|
+
let r = t.schema.marks.link;
|
|
7
|
+
if (!r || !Number.isInteger(n) || n < 0 || n > t.doc.content.size) return null;
|
|
8
|
+
let i = t.doc.resolve(n);
|
|
9
|
+
if (!i.parent.isTextblock) return null;
|
|
10
|
+
let a = e(i, r);
|
|
11
|
+
if (!a) return null;
|
|
12
|
+
let o = t.doc.nodeAt(a.from)?.marks.find((e) => e.type === r), s = typeof o?.attrs.href == "string" ? o.attrs.href : "";
|
|
13
|
+
return s ? {
|
|
14
|
+
display: "plain",
|
|
15
|
+
from: a.from,
|
|
16
|
+
href: s,
|
|
17
|
+
kind: "plain",
|
|
18
|
+
to: a.to
|
|
19
|
+
} : null;
|
|
20
|
+
}, s = (e) => {
|
|
21
|
+
let { selection: r } = e;
|
|
22
|
+
if (r instanceof n && r.node.type.name === "externalLinkPreview") {
|
|
23
|
+
let e = t(r.node.attrs);
|
|
24
|
+
return e ? {
|
|
25
|
+
attributes: e,
|
|
26
|
+
display: e.display,
|
|
27
|
+
from: r.from,
|
|
28
|
+
href: e.href,
|
|
29
|
+
kind: "preview",
|
|
30
|
+
position: r.from,
|
|
31
|
+
to: r.to
|
|
32
|
+
} : null;
|
|
33
|
+
}
|
|
34
|
+
if (!r.$from.sameParent(r.$to)) return null;
|
|
35
|
+
let i = o(e, r.from);
|
|
36
|
+
return !i || r.from < i.from || r.to > i.to ? null : i;
|
|
37
|
+
}, c = (e) => {
|
|
38
|
+
let t = a.get(e) ?? "url";
|
|
39
|
+
return a.delete(e), t;
|
|
40
|
+
}, l = (e, t = "url") => {
|
|
41
|
+
e.isDestroyed || (a.set(e, t), e.view.dispatch(e.state.tr.setMeta(i, "show")), !e.isDestroyed && e.view.dispatch(e.state.tr.setMeta(i, "updatePosition")));
|
|
42
|
+
}, u = (e) => {
|
|
43
|
+
e.isDestroyed || e.view.dispatch(e.state.tr.setMeta(i, "hide"));
|
|
7
44
|
};
|
|
8
45
|
//#endregion
|
|
9
|
-
export {
|
|
46
|
+
export { c as consumeLinkBubbleMenuFocusTarget, o as getPlainLinkContextAtPosition, s as getSelectionLinkContext, u as hideLinkBubbleMenu, i as linkBubbleMenuPluginKey, l as showLinkBubbleMenu };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as e } from "../../../../dist-DDjaA1Pn.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-RYtPpHwt.js";
|
|
2
2
|
export { e as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as e } from "../../../dist-
|
|
2
|
-
import { n as t, t as n } from "../../../markdown-to-html-
|
|
1
|
+
import { n as e } from "../../../dist-tNcpTcFT.js";
|
|
2
|
+
import { n as t, t as n } from "../../../markdown-to-html-B-KKCZRs.js";
|
|
3
3
|
import { Plugin as r, PluginKey as i } from "@tiptap/pm/state";
|
|
4
4
|
//#region lib/components/Scribe/extension/extension-markdown-paste.ts
|
|
5
5
|
var a = new i("markdownPaste"), o = /* @__PURE__ */ new Set([
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ExternalLinkPreviewAttributes, type ExternalLinkPreviewDisplay, type ExternalLinkPreviewMetadata } from "./types";
|
|
2
|
+
/** @experimental Part of Scribe's evolving external-link-preview contract. */
|
|
3
|
+
export declare const EXTERNAL_LINK_PREVIEW_NODE_NAME = "externalLinkPreview";
|
|
4
|
+
export declare const EXTERNAL_LINK_PREVIEW_SELECTOR = "span[data-type=\"external-link-preview\"]";
|
|
5
|
+
export declare const EXTERNAL_LINK_PREVIEW_TARGET_SELECTOR = "a[data-link-preview-target]";
|
|
6
|
+
export declare const isExternalLinkPreviewDisplay: (value: unknown) => value is ExternalLinkPreviewDisplay;
|
|
7
|
+
export declare const normalizeExternalLinkPreviewLinkText: (value: unknown) => string | null;
|
|
8
|
+
/** Validate an authored preview destination without canonicalizing or removing query parameters. */
|
|
9
|
+
export declare const normalizeExternalLinkPreviewHref: (value: unknown) => string | null;
|
|
10
|
+
/** Preview media may be proxied by a consumer through a strict root-relative path. */
|
|
11
|
+
export declare const normalizeExternalLinkPreviewMediaUrl: (value: unknown) => string | null;
|
|
12
|
+
export declare const normalizeExternalLinkPreviewMetadata: (metadata: ExternalLinkPreviewMetadata | Record<string, unknown> | null | undefined) => Required<ExternalLinkPreviewMetadata>;
|
|
13
|
+
/** Normalize only metadata fields that a resolver deliberately returned. */
|
|
14
|
+
export declare const normalizeExternalLinkPreviewMetadataPatch: (metadata: ExternalLinkPreviewMetadata) => Partial<Required<ExternalLinkPreviewMetadata>>;
|
|
15
|
+
export declare const normalizeExternalLinkPreviewAttributes: (input: Partial<Record<keyof ExternalLinkPreviewAttributes, unknown>>) => ExternalLinkPreviewAttributes | null;
|
|
16
|
+
export declare const getExternalLinkPreviewHostname: (href: string) => string;
|
|
17
|
+
export declare const getExternalLinkPreviewTitle: (attributes: Pick<ExternalLinkPreviewAttributes, "href" | "pageTitle" | "siteName">) => string;
|
|
18
|
+
//# sourceMappingURL=attributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,SAAS,CAAC;AA8CjB,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AACrE,eAAO,MAAM,8BAA8B,8CAA4C,CAAC;AACxF,eAAO,MAAM,qCAAqC,gCAAgC,CAAC;AAEnF,eAAO,MAAM,4BAA4B,UAAW,OAAO,KAAG,KAAK,IAAI,0BAC2B,CAAC;AAwBnG,eAAO,MAAM,oCAAoC,UAAW,OAAO,KAAG,MAAM,GAAG,IACE,CAAC;AAElF,oGAAoG;AACpG,eAAO,MAAM,gCAAgC,UAAW,OAAO,KAAG,MAAM,GAAG,IAuB1E,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,oCAAoC,UAAW,OAAO,KAAG,MAAM,GAAG,IAwB9E,CAAC;AAcF,eAAO,MAAM,oCAAoC,aACrC,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KACjF,QAAQ,CAAC,2BAA2B,CAOrC,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,yCAAyC,aAC1C,2BAA2B,KACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAW/C,CAAC;AAEF,eAAO,MAAM,sCAAsC,UAC1C,OAAO,CAAC,MAAM,CAAC,MAAM,6BAA6B,EAAE,OAAO,CAAC,CAAC,KACnE,6BAA6B,GAAG,IAgBlC,CAAC;AAEF,eAAO,MAAM,8BAA8B,SAAU,MAAM,WAM1D,CAAC;AAEF,eAAO,MAAM,2BAA2B,eAC1B,IAAI,CAAC,6BAA6B,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC,WACe,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { EXTERNAL_LINK_PREVIEW_DISPLAYS as e } from "./types.js";
|
|
2
|
+
//#region lib/components/Scribe/extension/external-link-preview/attributes.ts
|
|
3
|
+
var t = /^\/(?![\\/])/, n = /^https?:\/\//i, r = 16384, i = 16384, a = 512, o = 2048, s = 256, c = 16384, l = 128, u = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/, d = [
|
|
4
|
+
"pageTitle",
|
|
5
|
+
"description",
|
|
6
|
+
"siteName",
|
|
7
|
+
"faviconUrl",
|
|
8
|
+
"imageUrl",
|
|
9
|
+
"fetchedAt"
|
|
10
|
+
], f = (e) => {
|
|
11
|
+
for (let t of e) {
|
|
12
|
+
let e = t.charCodeAt(0);
|
|
13
|
+
if (e <= 31 || e === 127) return !0;
|
|
14
|
+
}
|
|
15
|
+
return !1;
|
|
16
|
+
}, p = (e) => {
|
|
17
|
+
let t = e.indexOf("//") + 2, n = [
|
|
18
|
+
"/",
|
|
19
|
+
"?",
|
|
20
|
+
"#"
|
|
21
|
+
].map((n) => e.indexOf(n, t)).filter((e) => e >= 0), r = n.length ? Math.min(...n) : e.length;
|
|
22
|
+
return e.slice(t, r).includes("@");
|
|
23
|
+
}, m = "externalLinkPreview", h = "span[data-type=\"external-link-preview\"]", g = "a[data-link-preview-target]", _ = (t) => typeof t == "string" && e.some((e) => e === t), v = (e, t, { preserveWhitespace: n = !1 } = {}) => {
|
|
24
|
+
if (typeof e != "string") return null;
|
|
25
|
+
let r = n ? e : e.trim();
|
|
26
|
+
return !r.trim() || r.length > t || f(r) ? null : r;
|
|
27
|
+
}, y = (e) => v(e, i, { preserveWhitespace: !0 }), b = (e) => {
|
|
28
|
+
let t = v(e, r);
|
|
29
|
+
if (!t || t.includes("\\") || !n.test(t) || p(t)) return null;
|
|
30
|
+
try {
|
|
31
|
+
let e = new URL(t);
|
|
32
|
+
return e.protocol !== "http:" && e.protocol !== "https:" || e.username || e.password ? null : t;
|
|
33
|
+
} catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}, x = (e) => {
|
|
37
|
+
let r = v(e, c);
|
|
38
|
+
if (!r || r.includes("\\")) return null;
|
|
39
|
+
if (t.test(r)) return r;
|
|
40
|
+
if (!n.test(r) || p(r)) return null;
|
|
41
|
+
try {
|
|
42
|
+
let e = new URL(r);
|
|
43
|
+
return (e.protocol === "http:" || e.protocol === "https:") && !e.username && !e.password ? r : null;
|
|
44
|
+
} catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}, S = (e) => {
|
|
48
|
+
let t = v(e, l);
|
|
49
|
+
if (!t || !u.test(t)) return null;
|
|
50
|
+
let n = new Date(t);
|
|
51
|
+
return Number.isNaN(n.getTime()) ? null : n.toISOString();
|
|
52
|
+
}, C = (e) => ({
|
|
53
|
+
pageTitle: v(e?.pageTitle, a),
|
|
54
|
+
description: v(e?.description, o),
|
|
55
|
+
siteName: v(e?.siteName, s),
|
|
56
|
+
faviconUrl: x(e?.faviconUrl),
|
|
57
|
+
imageUrl: x(e?.imageUrl),
|
|
58
|
+
fetchedAt: S(e?.fetchedAt)
|
|
59
|
+
}), w = (e) => {
|
|
60
|
+
let t = C(e), n = {};
|
|
61
|
+
return d.forEach((r) => {
|
|
62
|
+
Object.prototype.hasOwnProperty.call(e, r) && e[r] !== void 0 && (n[r] = t[r]);
|
|
63
|
+
}), n;
|
|
64
|
+
}, T = (e) => {
|
|
65
|
+
let t = b(e.href);
|
|
66
|
+
if (!t) return null;
|
|
67
|
+
let n = C(e);
|
|
68
|
+
return {
|
|
69
|
+
href: t,
|
|
70
|
+
linkText: y(e.linkText) ?? t,
|
|
71
|
+
display: _(e.display) ? e.display : "compact",
|
|
72
|
+
...n
|
|
73
|
+
};
|
|
74
|
+
}, E = (e) => {
|
|
75
|
+
try {
|
|
76
|
+
return new URL(e).hostname;
|
|
77
|
+
} catch {
|
|
78
|
+
return e;
|
|
79
|
+
}
|
|
80
|
+
}, D = (e) => e.pageTitle || e.siteName || E(e.href);
|
|
81
|
+
//#endregion
|
|
82
|
+
export { m as EXTERNAL_LINK_PREVIEW_NODE_NAME, h as EXTERNAL_LINK_PREVIEW_SELECTOR, g as EXTERNAL_LINK_PREVIEW_TARGET_SELECTOR, E as getExternalLinkPreviewHostname, D as getExternalLinkPreviewTitle, _ as isExternalLinkPreviewDisplay, T as normalizeExternalLinkPreviewAttributes, b as normalizeExternalLinkPreviewHref, y as normalizeExternalLinkPreviewLinkText, x as normalizeExternalLinkPreviewMediaUrl, C as normalizeExternalLinkPreviewMetadata, w as normalizeExternalLinkPreviewMetadataPatch };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Node as ProseMirrorNode } from "@tiptap/pm/model";
|
|
2
|
+
import type { Transaction } from "@tiptap/pm/state";
|
|
3
|
+
import type { ExternalLinkDisplay, ExternalLinkPreviewAttributes, InsertExternalLinkPreviewOptions, UpdateExternalLinkPreviewOptions } from "./types";
|
|
4
|
+
declare module "@tiptap/core" {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
|
+
externalLinkPreview: {
|
|
7
|
+
/** Insert an enhanced external link at the current selection. */
|
|
8
|
+
insertExternalLinkPreview: (options: InsertExternalLinkPreviewOptions) => ReturnType;
|
|
9
|
+
/** Convert the selected enhanced link or full-line Link mark to another presentation. */
|
|
10
|
+
setExternalLinkDisplay: (display: ExternalLinkDisplay, targetPosition?: number) => ReturnType;
|
|
11
|
+
/** Atomically convert a preview to a Plain link while applying its edited destination. */
|
|
12
|
+
convertExternalLinkPreviewToPlain: (href: string, targetPosition?: number) => ReturnType;
|
|
13
|
+
/** Explicitly refresh metadata for the selected enhanced link. */
|
|
14
|
+
refreshExternalLinkPreview: (targetPosition?: number) => ReturnType;
|
|
15
|
+
/** Safely update the selected preview's destination, fallback text, or metadata. */
|
|
16
|
+
updateExternalLinkPreview: (options: UpdateExternalLinkPreviewOptions, targetPosition?: number) => ReturnType;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
interface PreviewContext {
|
|
21
|
+
attributes: ExternalLinkPreviewAttributes;
|
|
22
|
+
node: ProseMirrorNode;
|
|
23
|
+
position: number;
|
|
24
|
+
isSoleTextblockContent: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare const getSelectedExternalLinkPreview: (transaction: Transaction, targetPosition?: number) => PreviewContext | null;
|
|
27
|
+
export declare const createExternalLinkPreviewCommands: ({ resolveMetadata, shouldPreview, }: {
|
|
28
|
+
resolveMetadata: boolean;
|
|
29
|
+
shouldPreview?: (href: string) => boolean;
|
|
30
|
+
}) => {
|
|
31
|
+
insertExternalLinkPreview: (options: InsertExternalLinkPreviewOptions) => ({ dispatch, tr }: {
|
|
32
|
+
dispatch?: (args?: unknown) => unknown;
|
|
33
|
+
tr: Transaction;
|
|
34
|
+
}) => boolean;
|
|
35
|
+
setExternalLinkDisplay: (display: ExternalLinkDisplay, targetPosition?: number) => ({ dispatch, tr }: {
|
|
36
|
+
dispatch?: (args?: unknown) => unknown;
|
|
37
|
+
tr: Transaction;
|
|
38
|
+
}) => boolean;
|
|
39
|
+
convertExternalLinkPreviewToPlain: (requestedHref: string, targetPosition?: number) => ({ dispatch, tr }: {
|
|
40
|
+
dispatch?: (args?: unknown) => unknown;
|
|
41
|
+
tr: Transaction;
|
|
42
|
+
}) => boolean;
|
|
43
|
+
refreshExternalLinkPreview: (targetPosition?: number) => ({ dispatch, tr }: {
|
|
44
|
+
dispatch?: (args?: unknown) => unknown;
|
|
45
|
+
tr: Transaction;
|
|
46
|
+
}) => boolean;
|
|
47
|
+
updateExternalLinkPreview: (options: UpdateExternalLinkPreviewOptions, targetPosition?: number) => ({ dispatch, tr }: {
|
|
48
|
+
dispatch?: (args?: unknown) => unknown;
|
|
49
|
+
tr: Transaction;
|
|
50
|
+
}) => boolean;
|
|
51
|
+
};
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,IAAI,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AASpD,OAAO,KAAK,EACV,mBAAmB,EACnB,6BAA6B,EAE7B,gCAAgC,EAChC,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAEjB,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,mBAAmB,EAAE;YACnB,iEAAiE;YACjE,yBAAyB,EAAE,CAAC,OAAO,EAAE,gCAAgC,KAAK,UAAU,CAAC;YACrF,yFAAyF;YACzF,sBAAsB,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;YAC9F,0FAA0F;YAC1F,iCAAiC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;YACzF,kEAAkE;YAClE,0BAA0B,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;YACpE,oFAAoF;YACpF,yBAAyB,EAAE,CACzB,OAAO,EAAE,gCAAgC,EACzC,cAAc,CAAC,EAAE,MAAM,KACpB,UAAU,CAAC;SACjB,CAAC;KACH;CACF;AAED,UAAU,cAAc;IACtB,UAAU,EAAE,6BAA6B,CAAC;IAC1C,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAWD,eAAO,MAAM,8BAA8B,gBAC5B,WAAW,mBACP,MAAM,KACtB,cAAc,GAAG,IAyCnB,CAAC;AAkHF,eAAO,MAAM,iCAAiC,wCAG3C;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C;IACC,yBAAyB,YACb,gCAAgC,wBACvB;QAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAC,EAAE,EAAE,WAAW,CAAA;KAAE;IA4ChF,sBAAsB,YACV,mBAAmB,mBAAmB,MAAM,wBACnC;QAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAC,EAAE,EAAE,WAAW,CAAA;KAAE;IAiFhF,iCAAiC,kBACf,MAAM,mBAAmB,MAAM,wBAC5B;QAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAC,EAAE,EAAE,WAAW,CAAA;KAAE;IA+BhF,0BAA0B,oBACN,MAAM,wBACL;QAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAC,EAAE,EAAE,WAAW,CAAA;KAAE;IAqBhF,yBAAyB,YACb,gCAAgC,mBAAmB,MAAM,wBAChD;QAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAC,EAAE,EAAE,WAAW,CAAA;KAAE;CAsEhF,CAAC"}
|