bridgerte 0.9.16 → 0.9.18
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/dist/dom.cjs +1 -1
- package/dist/dom.js +2 -2
- package/dist/{index-09ZQ5n0I.js → index-8kI8r7zm.js} +876 -846
- package/dist/index-8kI8r7zm.js.map +1 -0
- package/dist/index-BTtX4aJu.cjs +4 -0
- package/dist/index-BTtX4aJu.cjs.map +1 -0
- package/dist/{index-PixgfP7_.js → index-Bit2Kbbe.js} +12 -12
- package/dist/index-Bit2Kbbe.js.map +1 -0
- package/dist/index-DBHtvXqM.cjs +36 -0
- package/dist/index-DBHtvXqM.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/webview.cjs +1 -1
- package/dist/webview.js +1 -1
- package/package.json +1 -1
- package/dist/index-09ZQ5n0I.js.map +0 -1
- package/dist/index-CKIFd9T9.cjs +0 -4
- package/dist/index-CKIFd9T9.cjs.map +0 -1
- package/dist/index-ClgxmJNW.cjs +0 -36
- package/dist/index-ClgxmJNW.cjs.map +0 -1
- package/dist/index-PixgfP7_.js.map +0 -1
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var Oe = (e, t, n) =>
|
|
4
|
-
import { BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS as
|
|
1
|
+
var or = Object.defineProperty;
|
|
2
|
+
var ar = (e, t, n) => t in e ? or(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
|
|
3
|
+
var Oe = (e, t, n) => ar(e, typeof t != "symbol" ? t + "" : t, n);
|
|
4
|
+
import { BRIDGE_CONTENT_CHANGE_DEBOUNCE_MS as sr, isBridgeMessage as ir, BRIDGE_HEIGHT_CHANGE_THROTTLE_MS as lr, defaultBridgeEventTiming as cr } from "./bridge.js";
|
|
5
5
|
import { B as Ie, b as Qt, a as Zt } from "./index-CuNKUHed.js";
|
|
6
|
-
import { DecoratorNode as en, $applyNodeReplacement as tt, $getRoot as H, $isElementNode as
|
|
7
|
-
import { $isHeadingNode as
|
|
8
|
-
import { $isCodeNode as
|
|
9
|
-
import { $isListNode as
|
|
10
|
-
import { $isTableSelection as
|
|
11
|
-
import { $isLinkNode as Te, $toggleLink as gt, formatUrl as
|
|
12
|
-
import { registerHistory as
|
|
13
|
-
import { $generateNodesFromDOM as
|
|
14
|
-
import { $getSelectionStyleValueForProperty as
|
|
15
|
-
import { $getNearestNodeOfType as
|
|
16
|
-
import { codeBlockLanguagePanel as
|
|
17
|
-
import { r as
|
|
18
|
-
import { computePosition as
|
|
19
|
-
import { normalizeCodeLanguage as
|
|
20
|
-
const yt = "bridgerte-media",
|
|
6
|
+
import { DecoratorNode as en, $applyNodeReplacement as tt, $getRoot as H, $isElementNode as ie, $createParagraphNode as F, KEY_BACKSPACE_COMMAND as tn, COMMAND_PRIORITY_HIGH as G, KEY_DELETE_COMMAND as nn, DELETE_CHARACTER_COMMAND as rn, $getSelection as I, $isNodeSelection as dr, $isRangeSelection as D, TextNode as Y, $isParagraphNode as ur, $insertNodes as W, FORMAT_ELEMENT_COMMAND as mr, $createTextNode as Re, FORMAT_TEXT_COMMAND as gr, REDO_COMMAND as hr, UNDO_COMMAND as pr, OUTDENT_CONTENT_COMMAND as fr, INDENT_CONTENT_COMMAND as br, SKIP_SCROLL_INTO_VIEW_TAG as yr, $getNodeByKey as he, $setSelection as vr, SELECTION_CHANGE_COMMAND as on, COMMAND_PRIORITY_LOW as j, KEY_ESCAPE_COMMAND as an, KEY_ARROW_DOWN_COMMAND as wr, KEY_ARROW_UP_COMMAND as Cr, KEY_ENTER_COMMAND as _r, mergeRegister as sn, INSERT_PARAGRAPH_COMMAND as kr, INSERT_LINE_BREAK_COMMAND as Er, $isLineBreakNode as ln, $getNearestNodeFromDOMNode as xr, CAN_UNDO_COMMAND as Mr, CAN_REDO_COMMAND as Tr, createEditor as Lr, CLEAR_HISTORY_COMMAND as Sr } from "lexical";
|
|
7
|
+
import { $isHeadingNode as Nr, $isQuoteNode as cn, $createQuoteNode as Pr, $createHeadingNode as Ir, registerRichText as Rr, HeadingNode as Ar, QuoteNode as Br } from "@lexical/rich-text";
|
|
8
|
+
import { $isCodeNode as X, $createCodeNode as Dr, $isCodeHighlightNode as Or, $createCodeHighlightNode as Hr, CodeNode as dn, CodeHighlightNode as $r } from "@lexical/code";
|
|
9
|
+
import { $isListNode as Fr, ListNode as un, INSERT_CHECK_LIST_COMMAND as zr, INSERT_UNORDERED_LIST_COMMAND as Wr, INSERT_ORDERED_LIST_COMMAND as Vr, $isListItemNode as Ur, registerList as jr, registerCheckList as Kr, ListItemNode as qr } from "@lexical/list";
|
|
10
|
+
import { $isTableSelection as mn, $findTableNode as Gr, $deleteTableColumnAtSelection as Xr, $deleteTableRowAtSelection as Yr, $insertTableColumnAtSelection as Jr, $insertTableRowAtSelection as Qr, INSERT_TABLE_COMMAND as Zr, $findCellNode as eo, TableNode as Ke, $isTableRowNode as to, $isTableCellNode as no, registerTablePlugin as ro, TableRowNode as oo, TableCellNode as ao, setScrollableTablesActive as so } from "@lexical/table";
|
|
11
|
+
import { $isLinkNode as Te, $toggleLink as gt, formatUrl as io, $createLinkNode as lo, registerAutoLink as co, createLinkMatcherWithRegExp as ht, LinkNode as uo, AutoLinkNode as mo } from "@lexical/link";
|
|
12
|
+
import { registerHistory as go, createEmptyHistoryState as ho } from "@lexical/history";
|
|
13
|
+
import { $generateNodesFromDOM as gn, $generateHtmlFromNodes as po } from "@lexical/html";
|
|
14
|
+
import { $getSelectionStyleValueForProperty as fo, $setBlocksType as He, $patchStyleText as pt, $trimTextContentFromAnchor as ft } from "@lexical/selection";
|
|
15
|
+
import { $getNearestNodeOfType as bo, $findMatchingParent as yo, $insertNodeToNearestRoot as hn } from "@lexical/utils";
|
|
16
|
+
import { codeBlockLanguagePanel as qe, isCommandStateForCommand as vo, resolveToolbarMenu as nt, defaultMenuSchema as Ae, tableHeaderMenuItems as wo } from "./native-spec.js";
|
|
17
|
+
import { r as pn } from "./index-sbZNOcCB.js";
|
|
18
|
+
import { computePosition as fn, platform as bn, offset as yn, flip as vn, shift as wn, autoUpdate as Co } from "@floating-ui/dom";
|
|
19
|
+
import { normalizeCodeLanguage as _o, getCodeLanguageOptions as ko, ShikiTokenizer as bt, isCodeLanguageLoaded as Cn, loadCodeLanguage as Eo, loadCodeTheme as xo, registerCodeHighlighting as Mo } from "@lexical/code-shiki";
|
|
20
|
+
const yt = "bridgerte-media", _n = "Loading", vt = (e, t) => `${e}:${t}`, oe = (e) => typeof e == "number" && Number.isFinite(e) && e > 0 ? Math.floor(e) : void 0, wt = (e) => typeof e == "number" && Number.isFinite(e) ? Math.min(Math.max(e, 0), 100) : void 0, To = (e) => e === 20 || e === 50 || e === 100, Ct = (e) => To(e) ? e : void 0, _t = (e) => e === "center" || e === "right" ? e : void 0, Lo = (e) => e.status === "error" ? e.errorMessage ?? "媒体加载失败" : _n, So = (e, t) => !t || e.status === void 0 || e.status === "success", $e = (e, t, n) => {
|
|
21
21
|
n && e.setAttribute(t, n);
|
|
22
22
|
}, kt = (e, t, n) => {
|
|
23
23
|
n !== void 0 && e.setAttribute(t, String(n));
|
|
24
24
|
};
|
|
25
|
-
class
|
|
25
|
+
class le extends en {
|
|
26
26
|
constructor(n, r) {
|
|
27
27
|
super(r);
|
|
28
28
|
Oe(this, "__payload");
|
|
29
29
|
this.__payload = {
|
|
30
30
|
...n,
|
|
31
31
|
assetId: n.assetId ?? vt(n.mediaType, n.url),
|
|
32
|
-
width:
|
|
33
|
-
height:
|
|
34
|
-
duration:
|
|
32
|
+
width: oe(n.width),
|
|
33
|
+
height: oe(n.height),
|
|
34
|
+
duration: oe(n.duration),
|
|
35
35
|
progress: wt(n.progress),
|
|
36
36
|
displayWidthPercent: Ct(n.displayWidthPercent),
|
|
37
37
|
align: _t(n.align)
|
|
@@ -41,7 +41,7 @@ class ie extends en {
|
|
|
41
41
|
return yt;
|
|
42
42
|
}
|
|
43
43
|
static clone(n) {
|
|
44
|
-
return new
|
|
44
|
+
return new le(n.__payload, n.__key);
|
|
45
45
|
}
|
|
46
46
|
createDOM(n) {
|
|
47
47
|
return this.createMediaElement(!0);
|
|
@@ -57,17 +57,17 @@ class ie extends en {
|
|
|
57
57
|
static importDOM() {
|
|
58
58
|
return {
|
|
59
59
|
img: () => ({
|
|
60
|
-
conversion:
|
|
60
|
+
conversion: No,
|
|
61
61
|
priority: 1
|
|
62
62
|
}),
|
|
63
63
|
video: () => ({
|
|
64
|
-
conversion:
|
|
64
|
+
conversion: Po,
|
|
65
65
|
priority: 1
|
|
66
66
|
})
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
static importJSON(n) {
|
|
70
|
-
return
|
|
70
|
+
return ce(n).updateFromJSON(n);
|
|
71
71
|
}
|
|
72
72
|
exportJSON() {
|
|
73
73
|
return {
|
|
@@ -105,9 +105,9 @@ class ie extends en {
|
|
|
105
105
|
r.__payload = {
|
|
106
106
|
...r.__payload,
|
|
107
107
|
...n,
|
|
108
|
-
width:
|
|
109
|
-
height:
|
|
110
|
-
duration:
|
|
108
|
+
width: oe(n.width ?? r.__payload.width),
|
|
109
|
+
height: oe(n.height ?? r.__payload.height),
|
|
110
|
+
duration: oe(n.duration ?? r.__payload.duration),
|
|
111
111
|
progress: wt(n.progress ?? r.__payload.progress),
|
|
112
112
|
displayWidthPercent: Object.prototype.hasOwnProperty.call(
|
|
113
113
|
n,
|
|
@@ -133,26 +133,26 @@ class ie extends en {
|
|
|
133
133
|
), a.addEventListener("error", () => {
|
|
134
134
|
o.dataset.loadState = "error";
|
|
135
135
|
}, { once: !0 }));
|
|
136
|
-
const l =
|
|
136
|
+
const l = So(r, n);
|
|
137
137
|
if (r.mediaType === "image" ? (l && a.setAttribute("src", r.url), a.setAttribute("loading", "lazy"), $e(a, "alt", r.alt ?? r.title)) : (l && a.setAttribute("src", r.url), a.setAttribute("controls", "true"), a.setAttribute("preload", "metadata"), $e(a, "poster", r.poster)), $e(a, "title", r.title), kt(a, "width", r.width), kt(a, "height", r.height), n) {
|
|
138
138
|
const d = document.createElement("div"), c = document.createElement("span"), h = document.createElement("span");
|
|
139
|
-
d.className = "bridgerte__media-placeholder", d.setAttribute("aria-hidden", "true"), c.className = "bridgerte__media-placeholder-icon", c.textContent = r.mediaType === "image" ? "IMG" : "VIDEO", h.className = "bridgerte__media-placeholder-text", h.textContent =
|
|
139
|
+
d.className = "bridgerte__media-placeholder", d.setAttribute("aria-hidden", "true"), c.className = "bridgerte__media-placeholder-icon", c.textContent = r.mediaType === "image" ? "IMG" : "VIDEO", h.className = "bridgerte__media-placeholder-text", h.textContent = Lo(r), d.append(c, h), o.append(d);
|
|
140
140
|
}
|
|
141
141
|
if (o.append(a), r.status === "uploading" || r.status === "error") {
|
|
142
142
|
const d = document.createElement("figcaption");
|
|
143
|
-
d.className = "bridgerte__media-status", d.textContent = r.status === "error" ? r.errorMessage ?? "上传失败" :
|
|
143
|
+
d.className = "bridgerte__media-status", d.textContent = r.status === "error" ? r.errorMessage ?? "上传失败" : _n, o.append(d);
|
|
144
144
|
}
|
|
145
145
|
return o;
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
const
|
|
148
|
+
const No = (e) => {
|
|
149
149
|
const t = e instanceof HTMLImageElement ? e : null;
|
|
150
150
|
return {
|
|
151
151
|
/*
|
|
152
152
|
* 外部 HTML 粘贴或 setContent 导入 img 时,只认带 src 的真实媒体。
|
|
153
153
|
* 状态统一设为 success,因为浏览器 DOM 不包含 BridgeRTE 上传任务信息。
|
|
154
154
|
*/
|
|
155
|
-
node: t != null && t.src ?
|
|
155
|
+
node: t != null && t.src ? ce({
|
|
156
156
|
mediaType: "image",
|
|
157
157
|
url: t.src,
|
|
158
158
|
alt: t.alt,
|
|
@@ -162,13 +162,13 @@ const To = (e) => {
|
|
|
162
162
|
status: "success"
|
|
163
163
|
}) : null
|
|
164
164
|
};
|
|
165
|
-
},
|
|
165
|
+
}, Po = (e) => {
|
|
166
166
|
const t = e instanceof HTMLVideoElement ? e : null;
|
|
167
167
|
return {
|
|
168
168
|
/*
|
|
169
169
|
* video 导入只保留可序列化的展示元信息;controls、preload 等播放属性由 createDOM 重建。
|
|
170
170
|
*/
|
|
171
|
-
node: t != null && t.src ?
|
|
171
|
+
node: t != null && t.src ? ce({
|
|
172
172
|
mediaType: "video",
|
|
173
173
|
url: t.src,
|
|
174
174
|
poster: t.poster,
|
|
@@ -178,7 +178,7 @@ const To = (e) => {
|
|
|
178
178
|
status: "success"
|
|
179
179
|
}) : null
|
|
180
180
|
};
|
|
181
|
-
},
|
|
181
|
+
}, ce = (e) => tt(new le(e)), Io = (e) => ce({
|
|
182
182
|
mediaType: "image",
|
|
183
183
|
url: e.url,
|
|
184
184
|
alt: e.alt,
|
|
@@ -189,7 +189,7 @@ const To = (e) => {
|
|
|
189
189
|
align: e.align,
|
|
190
190
|
assetId: e.assetId,
|
|
191
191
|
status: "success"
|
|
192
|
-
}),
|
|
192
|
+
}), Ro = (e) => ce({
|
|
193
193
|
mediaType: "video",
|
|
194
194
|
url: e.url,
|
|
195
195
|
poster: e.poster,
|
|
@@ -200,10 +200,10 @@ const To = (e) => {
|
|
|
200
200
|
align: e.align,
|
|
201
201
|
assetId: e.assetId,
|
|
202
202
|
status: "success"
|
|
203
|
-
}),
|
|
203
|
+
}), kn = (e) => e instanceof le, ge = (e) => {
|
|
204
204
|
const t = (n) => {
|
|
205
|
-
if (
|
|
206
|
-
if (!
|
|
205
|
+
if (kn(n) && n.getAsset().id === e) return n;
|
|
206
|
+
if (!ie(n)) return null;
|
|
207
207
|
for (const r of n.getChildren()) {
|
|
208
208
|
const o = t(r);
|
|
209
209
|
if (o) return o;
|
|
@@ -211,7 +211,7 @@ const To = (e) => {
|
|
|
211
211
|
return null;
|
|
212
212
|
};
|
|
213
213
|
return t(H());
|
|
214
|
-
},
|
|
214
|
+
}, En = {
|
|
215
215
|
root: {
|
|
216
216
|
type: "root",
|
|
217
217
|
version: 1,
|
|
@@ -221,41 +221,41 @@ const To = (e) => {
|
|
|
221
221
|
function Ge(e = {}) {
|
|
222
222
|
return {
|
|
223
223
|
html: e.html ?? "",
|
|
224
|
-
json: e.json ??
|
|
224
|
+
json: e.json ?? En,
|
|
225
225
|
plainText: e.plainText ?? "",
|
|
226
226
|
assets: e.assets ?? [],
|
|
227
227
|
version: e.version ?? Ie
|
|
228
228
|
};
|
|
229
229
|
}
|
|
230
|
-
const
|
|
230
|
+
const Ao = (e) => e.toJSON(), Bo = (e) => {
|
|
231
231
|
var t;
|
|
232
232
|
return ((t = e.root.children) == null ? void 0 : t.length) === 0;
|
|
233
|
-
},
|
|
233
|
+
}, Do = (e) => e.read(() => {
|
|
234
234
|
const t = /* @__PURE__ */ new Map(), n = (r) => {
|
|
235
|
-
|
|
236
|
-
if (
|
|
235
|
+
ie(r) && r.getChildren().forEach((o) => {
|
|
236
|
+
if (kn(o)) {
|
|
237
237
|
const a = o.getAsset();
|
|
238
238
|
t.set(a.id, a);
|
|
239
239
|
return;
|
|
240
240
|
}
|
|
241
|
-
|
|
241
|
+
ie(o) && n(o);
|
|
242
242
|
});
|
|
243
243
|
};
|
|
244
244
|
return n(H()), [...t.values()];
|
|
245
|
-
}),
|
|
246
|
-
const n = t.read(() =>
|
|
245
|
+
}), xn = (e, t) => {
|
|
246
|
+
const n = t.read(() => po(t)), r = e.read(() => H().getTextContent()), o = Do(e);
|
|
247
247
|
return {
|
|
248
248
|
html: n,
|
|
249
|
-
json:
|
|
249
|
+
json: Ao(e),
|
|
250
250
|
plainText: r,
|
|
251
251
|
assets: o,
|
|
252
252
|
version: Ie
|
|
253
253
|
};
|
|
254
|
-
},
|
|
254
|
+
}, Oo = (e, t) => {
|
|
255
255
|
const n = Ge(t);
|
|
256
|
-
return
|
|
257
|
-
},
|
|
258
|
-
if (t.json !==
|
|
256
|
+
return Mn(e, n), xn(e.getEditorState(), e);
|
|
257
|
+
}, Mn = (e, t) => {
|
|
258
|
+
if (t.json !== En && !Bo(t.json)) {
|
|
259
259
|
const o = t.json;
|
|
260
260
|
e.setEditorState(e.parseEditorState(o));
|
|
261
261
|
return;
|
|
@@ -273,12 +273,12 @@ const Po = (e) => e.toJSON(), Io = (e) => {
|
|
|
273
273
|
const r = new DOMParser().parseFromString(t.html, "text/html");
|
|
274
274
|
e.update(
|
|
275
275
|
() => {
|
|
276
|
-
const o = H(), a =
|
|
276
|
+
const o = H(), a = gn(e, r);
|
|
277
277
|
o.clear(), o.append(...a);
|
|
278
278
|
},
|
|
279
279
|
{ discrete: !0 }
|
|
280
280
|
);
|
|
281
|
-
},
|
|
281
|
+
}, Ho = "bridgerte-divider", Tn = (e) => (e == null ? void 0 : e.getType()) === Ho, $o = (e, t, n) => {
|
|
282
282
|
const r = H();
|
|
283
283
|
if (r.getChildrenSize() === 0) {
|
|
284
284
|
const o = F();
|
|
@@ -290,34 +290,34 @@ const Po = (e) => e.toJSON(), Io = (e) => {
|
|
|
290
290
|
return;
|
|
291
291
|
}
|
|
292
292
|
t == null || t.selectStart(), t || e == null || e.selectEnd();
|
|
293
|
-
},
|
|
293
|
+
}, Fo = (e, t) => {
|
|
294
294
|
const n = e.getPreviousSibling(), r = e.getNextSibling();
|
|
295
|
-
e.remove(),
|
|
296
|
-
},
|
|
297
|
-
const e =
|
|
298
|
-
if (!
|
|
295
|
+
e.remove(), $o(n, r, t);
|
|
296
|
+
}, zo = () => {
|
|
297
|
+
const e = I();
|
|
298
|
+
if (!dr(e)) return null;
|
|
299
299
|
const t = e.getNodes();
|
|
300
|
-
return t.length === 1 &&
|
|
301
|
-
},
|
|
302
|
-
const t =
|
|
300
|
+
return t.length === 1 && Tn(t[0]) ? t[0] : null;
|
|
301
|
+
}, Wo = (e) => e.getKey() === "root" ? null : e.getTopLevelElement(), Vo = (e) => {
|
|
302
|
+
const t = I();
|
|
303
303
|
if (!D(t) || !t.isCollapsed()) return null;
|
|
304
|
-
const n = t.anchor, r = n.getNode(), o =
|
|
305
|
-
if (!o || !
|
|
306
|
-
if (
|
|
304
|
+
const n = t.anchor, r = n.getNode(), o = Wo(r);
|
|
305
|
+
if (!o || !ie(o)) return null;
|
|
306
|
+
if (ie(r)) {
|
|
307
307
|
const l = r.isEmpty() && n.offset === 0, d = r === o && n.offset === 0, c = r === o && n.offset === o.getChildrenSize();
|
|
308
308
|
return l || (e ? d : c) ? o : null;
|
|
309
309
|
}
|
|
310
|
-
if (!(r instanceof
|
|
310
|
+
if (!(r instanceof Y)) return null;
|
|
311
311
|
const a = e ? o.getFirstDescendant() : o.getLastDescendant(), s = e ? 0 : r.getTextContentSize();
|
|
312
312
|
return a === r && n.offset === s ? o : null;
|
|
313
|
-
},
|
|
314
|
-
const t =
|
|
315
|
-
return
|
|
316
|
-
},
|
|
313
|
+
}, Uo = (e) => {
|
|
314
|
+
const t = Vo(e), n = e ? t == null ? void 0 : t.getPreviousSibling() : t == null ? void 0 : t.getNextSibling();
|
|
315
|
+
return Tn(n) ? n : null;
|
|
316
|
+
}, jo = (e, t) => {
|
|
317
317
|
const n = (o) => {
|
|
318
318
|
if (t()) return !1;
|
|
319
|
-
const a =
|
|
320
|
-
return a ? (
|
|
319
|
+
const a = zo() ?? Uo(o);
|
|
320
|
+
return a ? (Fo(a, o), !0) : !1;
|
|
321
321
|
}, r = (o, a) => {
|
|
322
322
|
const s = n(a);
|
|
323
323
|
return s && o.preventDefault(), s;
|
|
@@ -326,17 +326,17 @@ const Po = (e) => e.toJSON(), Io = (e) => {
|
|
|
326
326
|
e.registerCommand(
|
|
327
327
|
tn,
|
|
328
328
|
(o) => r(o, !0),
|
|
329
|
-
|
|
329
|
+
G
|
|
330
330
|
),
|
|
331
331
|
e.registerCommand(
|
|
332
332
|
nn,
|
|
333
333
|
(o) => r(o, !1),
|
|
334
|
-
|
|
334
|
+
G
|
|
335
335
|
),
|
|
336
336
|
e.registerCommand(
|
|
337
337
|
rn,
|
|
338
338
|
(o) => n(o),
|
|
339
|
-
|
|
339
|
+
G
|
|
340
340
|
)
|
|
341
341
|
];
|
|
342
342
|
};
|
|
@@ -364,7 +364,7 @@ class pe extends en {
|
|
|
364
364
|
static importDOM() {
|
|
365
365
|
return {
|
|
366
366
|
hr: () => ({
|
|
367
|
-
conversion:
|
|
367
|
+
conversion: Ko,
|
|
368
368
|
priority: 0
|
|
369
369
|
})
|
|
370
370
|
};
|
|
@@ -386,14 +386,14 @@ class pe extends en {
|
|
|
386
386
|
return !1;
|
|
387
387
|
}
|
|
388
388
|
}
|
|
389
|
-
const
|
|
389
|
+
const Ko = (e) => ({
|
|
390
390
|
node: rt()
|
|
391
|
-
}), rt = () => tt(new pe()), Et = "bridgerte-mention", ot = "mention",
|
|
391
|
+
}), rt = () => tt(new pe()), Et = "bridgerte-mention", ot = "mention", Ln = (e) => e.label.startsWith("@") ? e.label : `@${e.label}`, qo = (e) => {
|
|
392
392
|
const t = document.createElement("span");
|
|
393
|
-
return t.className = "bridgerte__mention", t.dataset.type = ot, t.dataset.id = e.id, t.dataset.value = e.value, t.contentEditable = "false", t.textContent =
|
|
393
|
+
return t.className = "bridgerte__mention", t.dataset.type = ot, t.dataset.id = e.id, t.dataset.value = e.value, t.contentEditable = "false", t.textContent = Ln(e), e.description && (t.dataset.description = e.description), t;
|
|
394
394
|
};
|
|
395
|
-
class ye extends
|
|
396
|
-
constructor(n, r =
|
|
395
|
+
class ye extends Y {
|
|
396
|
+
constructor(n, r = Ln(n), o) {
|
|
397
397
|
super(r, o);
|
|
398
398
|
Oe(this, "__item");
|
|
399
399
|
this.__item = n;
|
|
@@ -412,12 +412,12 @@ class ye extends X {
|
|
|
412
412
|
return super.updateDOM(n, r, o) ? !0 : (r.dataset.id = this.__item.id, r.dataset.value = this.__item.value, this.__item.description ? r.dataset.description = this.__item.description : delete r.dataset.description, !1);
|
|
413
413
|
}
|
|
414
414
|
exportDOM(n) {
|
|
415
|
-
return { element:
|
|
415
|
+
return { element: qo(this.__item) };
|
|
416
416
|
}
|
|
417
417
|
static importDOM() {
|
|
418
418
|
return {
|
|
419
419
|
span: () => ({
|
|
420
|
-
conversion:
|
|
420
|
+
conversion: Go,
|
|
421
421
|
priority: 2
|
|
422
422
|
})
|
|
423
423
|
};
|
|
@@ -442,7 +442,7 @@ class ye extends X {
|
|
|
442
442
|
return this.__item;
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
|
-
const
|
|
445
|
+
const Go = (e) => {
|
|
446
446
|
var a;
|
|
447
447
|
const t = e instanceof HTMLElement ? e : null;
|
|
448
448
|
if (!t || t.dataset.type !== ot)
|
|
@@ -456,19 +456,19 @@ const jo = (e) => {
|
|
|
456
456
|
description: t.dataset.description
|
|
457
457
|
})
|
|
458
458
|
};
|
|
459
|
-
}, at = (e) => tt(new ye(e).setMode("token")), xt = (e) => e instanceof ye,
|
|
459
|
+
}, at = (e) => tt(new ye(e).setMode("token")), xt = (e) => e instanceof ye, Xo = "请输入内容", Yo = () => {
|
|
460
460
|
const t = H().getChildren();
|
|
461
461
|
if (t.length === 0) return !0;
|
|
462
462
|
if (t.length > 1) return !1;
|
|
463
463
|
const n = t[0];
|
|
464
|
-
return
|
|
465
|
-
},
|
|
464
|
+
return ur(n) && n.getChildrenSize() === 0;
|
|
465
|
+
}, Jo = ({
|
|
466
466
|
editor: e,
|
|
467
467
|
contentElement: t
|
|
468
468
|
}) => {
|
|
469
|
-
const n = e.getEditorState().read(
|
|
469
|
+
const n = e.getEditorState().read(Yo);
|
|
470
470
|
t.dataset.empty = String(n);
|
|
471
|
-
},
|
|
471
|
+
}, Qo = ({
|
|
472
472
|
editor: e,
|
|
473
473
|
contentElement: t,
|
|
474
474
|
isReadonly: n
|
|
@@ -483,7 +483,7 @@ const jo = (e) => {
|
|
|
483
483
|
return t.addEventListener("pointerdown", r), () => {
|
|
484
484
|
t.removeEventListener("pointerdown", r);
|
|
485
485
|
};
|
|
486
|
-
},
|
|
486
|
+
}, Zo = [
|
|
487
487
|
{ command: "format.bold", format: "bold" },
|
|
488
488
|
{ command: "format.italic", format: "italic" },
|
|
489
489
|
{ command: "format.underline", format: "underline" },
|
|
@@ -491,86 +491,86 @@ const jo = (e) => {
|
|
|
491
491
|
{ command: "format.inlineCode", format: "code" },
|
|
492
492
|
{ command: "format.superscript", format: "superscript" },
|
|
493
493
|
{ command: "format.subscript", format: "subscript" }
|
|
494
|
-
],
|
|
494
|
+
], ea = [
|
|
495
495
|
{ command: "format.color", property: "color" },
|
|
496
496
|
{ command: "format.backgroundColor", property: "background-color" },
|
|
497
497
|
{ command: "format.fontSize", property: "font-size" },
|
|
498
498
|
{ command: "format.fontFamily", property: "font-family" },
|
|
499
499
|
{ command: "format.lineHeight", property: "line-height" }
|
|
500
|
-
],
|
|
500
|
+
], ta = [
|
|
501
501
|
{ command: "list.ordered", listType: "ordered" },
|
|
502
502
|
{ command: "list.unordered", listType: "unordered" },
|
|
503
503
|
{ command: "list.todo", listType: "todo" }
|
|
504
|
-
],
|
|
504
|
+
], na = [
|
|
505
505
|
"media.pickImage",
|
|
506
506
|
"media.pickVideo"
|
|
507
|
-
],
|
|
508
|
-
const e =
|
|
507
|
+
], Sn = () => {
|
|
508
|
+
const e = I();
|
|
509
509
|
if (!D(e)) return null;
|
|
510
510
|
const t = e.anchor.getNode();
|
|
511
511
|
return t.getKey() === "root" ? t : t.getTopLevelElementOrThrow();
|
|
512
|
-
},
|
|
513
|
-
const e =
|
|
512
|
+
}, ra = () => {
|
|
513
|
+
const e = Sn();
|
|
514
514
|
if (!e) return null;
|
|
515
|
-
if (
|
|
515
|
+
if (Nr(e)) {
|
|
516
516
|
const t = Number(e.getTag().replace("h", ""));
|
|
517
517
|
return {
|
|
518
518
|
command: "block.heading",
|
|
519
519
|
value: Number.isNaN(t) ? void 0 : t
|
|
520
520
|
};
|
|
521
521
|
}
|
|
522
|
-
if (
|
|
522
|
+
if (cn(e))
|
|
523
523
|
return {
|
|
524
524
|
command: "block.quote"
|
|
525
525
|
};
|
|
526
|
-
if (
|
|
526
|
+
if (X(e)) {
|
|
527
527
|
const t = e.getLatest();
|
|
528
528
|
return {
|
|
529
529
|
command: "block.code",
|
|
530
|
-
value:
|
|
530
|
+
value: X(t) ? t.getLanguage() ?? "" : ""
|
|
531
531
|
};
|
|
532
532
|
}
|
|
533
533
|
return {
|
|
534
534
|
command: "block.paragraph"
|
|
535
535
|
};
|
|
536
|
-
},
|
|
537
|
-
const e =
|
|
536
|
+
}, oa = () => {
|
|
537
|
+
const e = Sn();
|
|
538
538
|
if (!e || !("getFormatType" in e)) return;
|
|
539
539
|
const t = e.getFormatType();
|
|
540
540
|
return t === "" ? void 0 : t;
|
|
541
|
-
},
|
|
542
|
-
const e =
|
|
541
|
+
}, aa = () => {
|
|
542
|
+
const e = I();
|
|
543
543
|
if (!D(e)) return null;
|
|
544
|
-
const t = e.anchor.getNode(), n =
|
|
544
|
+
const t = e.anchor.getNode(), n = Fr(t) ? t : bo(t, un);
|
|
545
545
|
return n ? n.getListType() === "check" ? "todo" : n.getTag() === "ol" ? "ordered" : "unordered" : null;
|
|
546
|
-
},
|
|
547
|
-
const t =
|
|
546
|
+
}, sa = (e) => {
|
|
547
|
+
const t = I();
|
|
548
548
|
if (!D(t)) return;
|
|
549
|
-
const n =
|
|
549
|
+
const n = fo(t, e);
|
|
550
550
|
return n === "" ? void 0 : n;
|
|
551
|
-
},
|
|
552
|
-
const e =
|
|
551
|
+
}, ia = () => {
|
|
552
|
+
const e = I();
|
|
553
553
|
if (!D(e)) return !1;
|
|
554
554
|
const t = e.anchor.getNode(), n = t.getParent();
|
|
555
555
|
return Te(t) || Te(n);
|
|
556
|
-
},
|
|
557
|
-
const t =
|
|
556
|
+
}, la = (e) => {
|
|
557
|
+
const t = I(), n = D(t), r = ra(), o = aa(), a = oa(), s = ia(), l = e.readonly || !n, d = Zo.map((w) => ({
|
|
558
558
|
command: w.command,
|
|
559
559
|
active: n && t.hasFormat(w.format),
|
|
560
560
|
disabled: l
|
|
561
|
-
})), c =
|
|
562
|
-
const T =
|
|
561
|
+
})), c = ea.map((w) => {
|
|
562
|
+
const T = sa(w.property);
|
|
563
563
|
return {
|
|
564
564
|
command: w.command,
|
|
565
565
|
active: T !== void 0,
|
|
566
566
|
disabled: l,
|
|
567
567
|
value: T
|
|
568
568
|
};
|
|
569
|
-
}), h =
|
|
569
|
+
}), h = ta.map((w) => ({
|
|
570
570
|
command: w.command,
|
|
571
571
|
active: o === w.listType,
|
|
572
572
|
disabled: l
|
|
573
|
-
})), y =
|
|
573
|
+
})), y = na.map((w) => ({
|
|
574
574
|
command: w,
|
|
575
575
|
active: !1,
|
|
576
576
|
disabled: e.readonly || !e.canUploadMedia
|
|
@@ -669,69 +669,69 @@ const jo = (e) => {
|
|
|
669
669
|
disabled: !1
|
|
670
670
|
}
|
|
671
671
|
];
|
|
672
|
-
},
|
|
672
|
+
}, ca = (e, t) => e.length === t.length && e.every((n, r) => {
|
|
673
673
|
const o = t[r];
|
|
674
674
|
return o !== void 0 && n.command === o.command && n.active === o.active && n.disabled === o.disabled && n.value === o.value;
|
|
675
|
-
}),
|
|
675
|
+
}), K = (e, t, n, r) => {
|
|
676
676
|
var o;
|
|
677
677
|
try {
|
|
678
678
|
(o = e.onError) == null || o.call(e, { code: t, message: n, cause: r });
|
|
679
679
|
} catch (a) {
|
|
680
680
|
console.error("[BridgeRTE] onError callback failed.", a);
|
|
681
681
|
}
|
|
682
|
-
},
|
|
682
|
+
}, da = (e, t) => {
|
|
683
683
|
var n;
|
|
684
684
|
try {
|
|
685
685
|
(n = e.onChange) == null || n.call(e, t);
|
|
686
686
|
} catch (r) {
|
|
687
|
-
|
|
687
|
+
K(e, "callback.onChange", "onChange callback failed.", r);
|
|
688
688
|
}
|
|
689
|
-
},
|
|
689
|
+
}, ua = (e, t) => {
|
|
690
690
|
var n;
|
|
691
691
|
try {
|
|
692
692
|
(n = e.onContentChange) == null || n.call(e, t);
|
|
693
693
|
} catch (r) {
|
|
694
|
-
|
|
694
|
+
K(
|
|
695
695
|
e,
|
|
696
696
|
"callback.onContentChange",
|
|
697
697
|
"onContentChange callback failed.",
|
|
698
698
|
r
|
|
699
699
|
);
|
|
700
700
|
}
|
|
701
|
-
},
|
|
701
|
+
}, ma = (e, t) => {
|
|
702
702
|
var n;
|
|
703
703
|
try {
|
|
704
704
|
(n = e.onCommandStateChange) == null || n.call(e, [...t]);
|
|
705
705
|
} catch (r) {
|
|
706
|
-
|
|
706
|
+
K(
|
|
707
707
|
e,
|
|
708
708
|
"callback.onCommandStateChange",
|
|
709
709
|
"onCommandStateChange callback failed.",
|
|
710
710
|
r
|
|
711
711
|
);
|
|
712
712
|
}
|
|
713
|
-
},
|
|
713
|
+
}, ga = (e) => {
|
|
714
714
|
var t;
|
|
715
715
|
try {
|
|
716
716
|
(t = e.onFocus) == null || t.call(e);
|
|
717
717
|
} catch (n) {
|
|
718
|
-
|
|
718
|
+
K(e, "callback.onFocus", "onFocus callback failed.", n);
|
|
719
719
|
}
|
|
720
|
-
},
|
|
720
|
+
}, ha = (e) => {
|
|
721
721
|
var t;
|
|
722
722
|
try {
|
|
723
723
|
(t = e.onBlur) == null || t.call(e);
|
|
724
724
|
} catch (n) {
|
|
725
|
-
|
|
725
|
+
K(e, "callback.onBlur", "onBlur callback failed.", n);
|
|
726
726
|
}
|
|
727
|
-
},
|
|
727
|
+
}, pa = (e, t) => {
|
|
728
728
|
var n;
|
|
729
729
|
try {
|
|
730
730
|
(n = e.onReady) == null || n.call(e, t);
|
|
731
731
|
} catch (r) {
|
|
732
|
-
|
|
732
|
+
K(e, "callback.onReady", "onReady callback failed.", r);
|
|
733
733
|
}
|
|
734
|
-
},
|
|
734
|
+
}, fa = ({
|
|
735
735
|
lexicalEditor: e,
|
|
736
736
|
options: t,
|
|
737
737
|
isDestroyed: n,
|
|
@@ -745,7 +745,7 @@ const jo = (e) => {
|
|
|
745
745
|
try {
|
|
746
746
|
w(y);
|
|
747
747
|
} catch (T) {
|
|
748
|
-
|
|
748
|
+
K(
|
|
749
749
|
t,
|
|
750
750
|
"callback.commandStateSubscriber",
|
|
751
751
|
"Command state subscriber failed.",
|
|
@@ -757,13 +757,13 @@ const jo = (e) => {
|
|
|
757
757
|
if (n()) return;
|
|
758
758
|
const w = l;
|
|
759
759
|
e.getEditorState().read(() => {
|
|
760
|
-
l =
|
|
760
|
+
l = la({
|
|
761
761
|
canUndo: a,
|
|
762
762
|
canRedo: s,
|
|
763
763
|
readonly: o(),
|
|
764
764
|
canUploadMedia: r()
|
|
765
765
|
});
|
|
766
|
-
}), y && !
|
|
766
|
+
}), y && !ca(w, l) && (ma(t, l), c());
|
|
767
767
|
};
|
|
768
768
|
return {
|
|
769
769
|
refreshCommandStates: h,
|
|
@@ -789,14 +789,14 @@ const jo = (e) => {
|
|
|
789
789
|
d.clear();
|
|
790
790
|
}
|
|
791
791
|
};
|
|
792
|
-
},
|
|
792
|
+
}, ba = (e) => `upload:${e}:${Date.now()}:${Math.random().toString(36).slice(2)}`, ya = (e) => typeof URL.createObjectURL == "function" ? URL.createObjectURL(e) : e.name, ve = (e) => {
|
|
793
793
|
typeof URL.revokeObjectURL == "function" && e.startsWith("blob:") && URL.revokeObjectURL(e);
|
|
794
794
|
}, Mt = (e) => ({
|
|
795
795
|
name: e.name,
|
|
796
796
|
mimeType: e.type || void 0,
|
|
797
797
|
size: e.size,
|
|
798
798
|
data: e
|
|
799
|
-
}),
|
|
799
|
+
}), va = (e) => typeof DOMException < "u" && e instanceof DOMException && e.name === "AbortError", wa = (e) => new Promise((t) => {
|
|
800
800
|
const n = new Image(), r = () => {
|
|
801
801
|
n.onload = null, n.onerror = null;
|
|
802
802
|
};
|
|
@@ -809,7 +809,7 @@ const jo = (e) => {
|
|
|
809
809
|
}, n.onerror = () => {
|
|
810
810
|
r(), t({});
|
|
811
811
|
}, n.src = e;
|
|
812
|
-
}),
|
|
812
|
+
}), Ca = (e) => new Promise((t) => {
|
|
813
813
|
const n = document.createElement("video"), r = () => {
|
|
814
814
|
n.removeAttribute("src"), n.load(), n.onloadedmetadata = null, n.onerror = null;
|
|
815
815
|
};
|
|
@@ -823,12 +823,12 @@ const jo = (e) => {
|
|
|
823
823
|
}, n.onerror = () => {
|
|
824
824
|
r(), t({});
|
|
825
825
|
}, n.src = e, n.load();
|
|
826
|
-
}),
|
|
826
|
+
}), _a = (e, t) => t.startsWith("blob:") ? e === "image" ? wa(t) : Ca(t) : Promise.resolve({}), ka = (e, t) => ({
|
|
827
827
|
...e,
|
|
828
828
|
width: e.width ?? t.width,
|
|
829
829
|
height: e.height ?? t.height,
|
|
830
830
|
duration: e.duration ?? t.duration
|
|
831
|
-
}),
|
|
831
|
+
}), Ea = ({
|
|
832
832
|
container: e,
|
|
833
833
|
lexicalEditor: t,
|
|
834
834
|
options: n,
|
|
@@ -839,12 +839,12 @@ const jo = (e) => {
|
|
|
839
839
|
const s = (m, p) => {
|
|
840
840
|
t.update(() => {
|
|
841
841
|
var k;
|
|
842
|
-
(k =
|
|
842
|
+
(k = ge(m)) == null || k.updatePayload(p);
|
|
843
843
|
});
|
|
844
844
|
}, l = (m) => {
|
|
845
845
|
let p = null;
|
|
846
846
|
return t.update(() => {
|
|
847
|
-
const k =
|
|
847
|
+
const k = ge(m);
|
|
848
848
|
if (!k) return;
|
|
849
849
|
const _ = k.getAsset();
|
|
850
850
|
p = {
|
|
@@ -876,7 +876,7 @@ const jo = (e) => {
|
|
|
876
876
|
}, y = (m, p, k, _) => {
|
|
877
877
|
t.update(
|
|
878
878
|
() => {
|
|
879
|
-
const P =
|
|
879
|
+
const P = ce({
|
|
880
880
|
mediaType: m,
|
|
881
881
|
url: _,
|
|
882
882
|
assetId: k,
|
|
@@ -885,8 +885,8 @@ const jo = (e) => {
|
|
|
885
885
|
title: p.name,
|
|
886
886
|
mimeType: p.type || void 0,
|
|
887
887
|
size: p.size
|
|
888
|
-
}),
|
|
889
|
-
|
|
888
|
+
}), R = F();
|
|
889
|
+
I() || H().selectEnd(), W([P, R]), R.selectStart();
|
|
890
890
|
},
|
|
891
891
|
{ discrete: !0 }
|
|
892
892
|
);
|
|
@@ -906,7 +906,7 @@ const jo = (e) => {
|
|
|
906
906
|
}), ve(k);
|
|
907
907
|
}, T = (m, p, k) => {
|
|
908
908
|
var _;
|
|
909
|
-
|
|
909
|
+
va(k) || (s(p, {
|
|
910
910
|
mediaType: m,
|
|
911
911
|
status: "error",
|
|
912
912
|
errorMessage: "上传失败"
|
|
@@ -931,8 +931,8 @@ const jo = (e) => {
|
|
|
931
931
|
});
|
|
932
932
|
}
|
|
933
933
|
};
|
|
934
|
-
let
|
|
935
|
-
const L =
|
|
934
|
+
let R = {};
|
|
935
|
+
const L = _a(m.type, m.previewUrl);
|
|
936
936
|
let C;
|
|
937
937
|
try {
|
|
938
938
|
C = m.type === "image" ? p.uploadImage(Mt(m.file), P) : p.uploadVideo(Mt(m.file), P);
|
|
@@ -941,7 +941,7 @@ const jo = (e) => {
|
|
|
941
941
|
return;
|
|
942
942
|
}
|
|
943
943
|
L.then((i) => {
|
|
944
|
-
|
|
944
|
+
R = i, !(r() || !d(m.assetId, _)) && (i.width === void 0 && i.height === void 0 || s(m.assetId, {
|
|
945
945
|
mediaType: m.type,
|
|
946
946
|
width: i.width,
|
|
947
947
|
height: i.height,
|
|
@@ -952,14 +952,14 @@ const jo = (e) => {
|
|
|
952
952
|
m.type,
|
|
953
953
|
m.assetId,
|
|
954
954
|
m.previewUrl,
|
|
955
|
-
|
|
955
|
+
ka(i, R)
|
|
956
956
|
), o.delete(m.assetId));
|
|
957
957
|
}).catch((i) => {
|
|
958
958
|
r() || !d(m.assetId, _) || T(m.type, m.assetId, i);
|
|
959
959
|
});
|
|
960
960
|
}, v = (m, p) => {
|
|
961
961
|
if (!n.uploadAdapter) return;
|
|
962
|
-
const k =
|
|
962
|
+
const k = ba(m), _ = ya(p), P = {
|
|
963
963
|
assetId: k,
|
|
964
964
|
type: m,
|
|
965
965
|
file: p,
|
|
@@ -1000,14 +1000,14 @@ const jo = (e) => {
|
|
|
1000
1000
|
}), o.clear();
|
|
1001
1001
|
}
|
|
1002
1002
|
};
|
|
1003
|
-
},
|
|
1003
|
+
}, Nn = (e) => Dr(e), xa = {
|
|
1004
1004
|
1: "h1",
|
|
1005
1005
|
2: "h2",
|
|
1006
1006
|
3: "h3",
|
|
1007
1007
|
4: "h4",
|
|
1008
1008
|
5: "h5",
|
|
1009
1009
|
6: "h6"
|
|
1010
|
-
},
|
|
1010
|
+
}, Ma = {
|
|
1011
1011
|
code: "bridgerte__code-block",
|
|
1012
1012
|
codeHighlight: {
|
|
1013
1013
|
attr: "bridgerte__code-token bridgerte__code-token--attr",
|
|
@@ -1068,23 +1068,23 @@ const jo = (e) => {
|
|
|
1068
1068
|
tableCellHeader: "bridgerte__table-cell bridgerte__table-cell--header",
|
|
1069
1069
|
tableRow: "bridgerte__table-row",
|
|
1070
1070
|
tableScrollableWrapper: "bridgerte__table-wrapper"
|
|
1071
|
-
},
|
|
1071
|
+
}, Ta = (e) => ({
|
|
1072
1072
|
setBlockHeading: (c) => {
|
|
1073
1073
|
e.update(() => {
|
|
1074
|
-
const h =
|
|
1075
|
-
D(h) && He(h, () =>
|
|
1074
|
+
const h = I();
|
|
1075
|
+
D(h) && He(h, () => Ir(xa[c]));
|
|
1076
1076
|
});
|
|
1077
1077
|
},
|
|
1078
1078
|
setParagraphBlock: () => {
|
|
1079
1079
|
e.update(() => {
|
|
1080
|
-
const c =
|
|
1080
|
+
const c = I();
|
|
1081
1081
|
D(c) && He(c, () => F());
|
|
1082
1082
|
});
|
|
1083
1083
|
},
|
|
1084
1084
|
setQuoteBlock: () => {
|
|
1085
1085
|
e.update(() => {
|
|
1086
|
-
const c =
|
|
1087
|
-
D(c) && He(c, () =>
|
|
1086
|
+
const c = I();
|
|
1087
|
+
D(c) && He(c, () => Pr());
|
|
1088
1088
|
});
|
|
1089
1089
|
},
|
|
1090
1090
|
insertDividerBlock: () => {
|
|
@@ -1095,16 +1095,16 @@ const jo = (e) => {
|
|
|
1095
1095
|
},
|
|
1096
1096
|
insertCodeBlock: (c) => {
|
|
1097
1097
|
e.update(() => {
|
|
1098
|
-
const h =
|
|
1098
|
+
const h = Nn(c), y = F();
|
|
1099
1099
|
W([h, y]), h.selectEnd();
|
|
1100
1100
|
});
|
|
1101
1101
|
},
|
|
1102
1102
|
setSelectedCodeBlockLanguage: (c) => {
|
|
1103
1103
|
e.update(() => {
|
|
1104
|
-
const h =
|
|
1104
|
+
const h = I();
|
|
1105
1105
|
if (!D(h)) return;
|
|
1106
1106
|
const y = h.anchor.getNode(), w = y.getKey() === "root" ? y : y.getTopLevelElementOrThrow();
|
|
1107
|
-
|
|
1107
|
+
X(w) && w.setLanguage(c);
|
|
1108
1108
|
});
|
|
1109
1109
|
},
|
|
1110
1110
|
clearContent: () => {
|
|
@@ -1114,15 +1114,15 @@ const jo = (e) => {
|
|
|
1114
1114
|
});
|
|
1115
1115
|
},
|
|
1116
1116
|
formatAlign: (c) => {
|
|
1117
|
-
e.dispatchCommand(
|
|
1117
|
+
e.dispatchCommand(mr, c);
|
|
1118
1118
|
}
|
|
1119
|
-
}),
|
|
1119
|
+
}), La = (e) => ({
|
|
1120
1120
|
setLink: (o, a) => {
|
|
1121
1121
|
e.update(() => {
|
|
1122
|
-
const s =
|
|
1122
|
+
const s = I(), l = io(o), d = (a == null ? void 0 : a.trim()) || o.trim();
|
|
1123
1123
|
if (!(!D(s) || !o.trim())) {
|
|
1124
1124
|
if (s.isCollapsed()) {
|
|
1125
|
-
const c =
|
|
1125
|
+
const c = lo(l, {
|
|
1126
1126
|
rel: "noreferrer noopener",
|
|
1127
1127
|
target: "_blank"
|
|
1128
1128
|
});
|
|
@@ -1144,9 +1144,9 @@ const jo = (e) => {
|
|
|
1144
1144
|
openSelectedLink: () => {
|
|
1145
1145
|
if (typeof window > "u") return;
|
|
1146
1146
|
const o = e.getEditorState().read(() => {
|
|
1147
|
-
const a =
|
|
1147
|
+
const a = I();
|
|
1148
1148
|
if (!D(a)) return null;
|
|
1149
|
-
const s = a.anchor.getNode(), l = Te(s) ? s :
|
|
1149
|
+
const s = a.anchor.getNode(), l = Te(s) ? s : yo(s, Te);
|
|
1150
1150
|
return l ? {
|
|
1151
1151
|
target: l.getTarget() ?? "_blank",
|
|
1152
1152
|
url: l.sanitizeUrl(l.getURL())
|
|
@@ -1154,23 +1154,23 @@ const jo = (e) => {
|
|
|
1154
1154
|
});
|
|
1155
1155
|
o && window.open(o.url, o.target, "noopener,noreferrer");
|
|
1156
1156
|
}
|
|
1157
|
-
}),
|
|
1157
|
+
}), Sa = (e) => ({
|
|
1158
1158
|
insertImage: (s) => {
|
|
1159
1159
|
s.url.trim() && e.update(() => {
|
|
1160
1160
|
const l = F();
|
|
1161
|
-
W([
|
|
1161
|
+
W([Io(s), l]), l.selectStart();
|
|
1162
1162
|
});
|
|
1163
1163
|
},
|
|
1164
1164
|
insertVideo: (s) => {
|
|
1165
1165
|
s.url.trim() && e.update(() => {
|
|
1166
1166
|
const l = F();
|
|
1167
|
-
W([
|
|
1167
|
+
W([Ro(s), l]), l.selectStart();
|
|
1168
1168
|
});
|
|
1169
1169
|
},
|
|
1170
1170
|
resizeMedia: (s) => {
|
|
1171
1171
|
e.update(() => {
|
|
1172
1172
|
var l;
|
|
1173
|
-
(l =
|
|
1173
|
+
(l = ge(s.assetId)) == null || l.updatePayload({
|
|
1174
1174
|
displayWidthPercent: s.widthPercent
|
|
1175
1175
|
});
|
|
1176
1176
|
});
|
|
@@ -1178,7 +1178,7 @@ const jo = (e) => {
|
|
|
1178
1178
|
resetMediaSize: (s) => {
|
|
1179
1179
|
e.update(() => {
|
|
1180
1180
|
var l;
|
|
1181
|
-
(l =
|
|
1181
|
+
(l = ge(s)) == null || l.updatePayload({
|
|
1182
1182
|
displayWidthPercent: void 0
|
|
1183
1183
|
});
|
|
1184
1184
|
});
|
|
@@ -1186,25 +1186,25 @@ const jo = (e) => {
|
|
|
1186
1186
|
alignMedia: (s) => {
|
|
1187
1187
|
e.update(() => {
|
|
1188
1188
|
var l;
|
|
1189
|
-
(l =
|
|
1189
|
+
(l = ge(s.assetId)) == null || l.updatePayload({
|
|
1190
1190
|
align: s.value === "left" ? void 0 : s.value
|
|
1191
1191
|
});
|
|
1192
1192
|
});
|
|
1193
1193
|
}
|
|
1194
|
-
}),
|
|
1194
|
+
}), Na = (e) => ({
|
|
1195
1195
|
insertMention: (n) => {
|
|
1196
1196
|
e.update(() => {
|
|
1197
|
-
const r =
|
|
1197
|
+
const r = I();
|
|
1198
1198
|
D(r) && W([
|
|
1199
1199
|
at(n),
|
|
1200
1200
|
Re(" ")
|
|
1201
1201
|
]);
|
|
1202
1202
|
});
|
|
1203
1203
|
}
|
|
1204
|
-
}),
|
|
1204
|
+
}), Pa = (e) => ({
|
|
1205
1205
|
clearSelectionFormat: () => {
|
|
1206
1206
|
e.update(() => {
|
|
1207
|
-
const r =
|
|
1207
|
+
const r = I();
|
|
1208
1208
|
D(r) && (r.setFormat(0), pt(r, {
|
|
1209
1209
|
color: null,
|
|
1210
1210
|
"background-color": null,
|
|
@@ -1216,19 +1216,19 @@ const jo = (e) => {
|
|
|
1216
1216
|
},
|
|
1217
1217
|
setSelectionStyle: (r, o) => {
|
|
1218
1218
|
e.update(() => {
|
|
1219
|
-
const a =
|
|
1219
|
+
const a = I();
|
|
1220
1220
|
D(a) && pt(a, {
|
|
1221
1221
|
[r]: o === "" ? null : o
|
|
1222
1222
|
});
|
|
1223
1223
|
});
|
|
1224
1224
|
}
|
|
1225
|
-
}),
|
|
1226
|
-
const e =
|
|
1227
|
-
return !D(e) && !
|
|
1228
|
-
},
|
|
1225
|
+
}), Ia = 20, Tt = (e, t) => Number.isFinite(e) && e > 0 ? Math.min(Math.floor(e), t) : 1, we = (e) => Number.isFinite(e) && (e ?? 0) > 0 ? Math.min(Math.floor(e ?? 1), Ia) : 1, Ce = () => {
|
|
1226
|
+
const e = I();
|
|
1227
|
+
return !D(e) && !mn(e) ? !1 : eo(e.anchor.getNode()) !== null;
|
|
1228
|
+
}, Ra = (e) => ({
|
|
1229
1229
|
insertTable: (l, d) => {
|
|
1230
1230
|
const c = Tt(l, Qt), h = Tt(d, Zt);
|
|
1231
|
-
e.dispatchCommand(
|
|
1231
|
+
e.dispatchCommand(Zr, {
|
|
1232
1232
|
rows: String(c),
|
|
1233
1233
|
columns: String(h),
|
|
1234
1234
|
/*
|
|
@@ -1246,7 +1246,7 @@ const jo = (e) => {
|
|
|
1246
1246
|
if (!Ce()) return;
|
|
1247
1247
|
const d = we(l.count);
|
|
1248
1248
|
for (let c = 0; c < d; c += 1)
|
|
1249
|
-
|
|
1249
|
+
Qr(l.direction !== "before");
|
|
1250
1250
|
});
|
|
1251
1251
|
},
|
|
1252
1252
|
insertTableColumn: (l) => {
|
|
@@ -1254,7 +1254,7 @@ const jo = (e) => {
|
|
|
1254
1254
|
if (!Ce()) return;
|
|
1255
1255
|
const d = we(l.count);
|
|
1256
1256
|
for (let c = 0; c < d; c += 1)
|
|
1257
|
-
|
|
1257
|
+
Jr(l.direction !== "before");
|
|
1258
1258
|
});
|
|
1259
1259
|
},
|
|
1260
1260
|
deleteTableRow: (l) => {
|
|
@@ -1262,7 +1262,7 @@ const jo = (e) => {
|
|
|
1262
1262
|
const d = we(l.count);
|
|
1263
1263
|
for (let c = 0; c < d; c += 1) {
|
|
1264
1264
|
if (!Ce()) return;
|
|
1265
|
-
|
|
1265
|
+
Yr();
|
|
1266
1266
|
}
|
|
1267
1267
|
});
|
|
1268
1268
|
},
|
|
@@ -1271,22 +1271,22 @@ const jo = (e) => {
|
|
|
1271
1271
|
const d = we(l.count);
|
|
1272
1272
|
for (let c = 0; c < d; c += 1) {
|
|
1273
1273
|
if (!Ce()) return;
|
|
1274
|
-
|
|
1274
|
+
Xr();
|
|
1275
1275
|
}
|
|
1276
1276
|
});
|
|
1277
1277
|
},
|
|
1278
1278
|
deleteTable: () => {
|
|
1279
1279
|
e.update(() => {
|
|
1280
|
-
const l =
|
|
1281
|
-
if (!D(l) && !
|
|
1282
|
-
const d =
|
|
1280
|
+
const l = I();
|
|
1281
|
+
if (!D(l) && !mn(l)) return;
|
|
1282
|
+
const d = Gr(l.anchor.getNode());
|
|
1283
1283
|
if (!d) return;
|
|
1284
1284
|
const c = F();
|
|
1285
1285
|
d.insertAfter(c), d.remove(), c.selectStart();
|
|
1286
1286
|
});
|
|
1287
1287
|
}
|
|
1288
|
-
}),
|
|
1289
|
-
const t =
|
|
1288
|
+
}), Aa = (e) => {
|
|
1289
|
+
const t = Ra(e);
|
|
1290
1290
|
return {
|
|
1291
1291
|
insertTable: (n) => {
|
|
1292
1292
|
t.insertTable(n.rows, n.cols);
|
|
@@ -1307,7 +1307,7 @@ const jo = (e) => {
|
|
|
1307
1307
|
t.deleteTable();
|
|
1308
1308
|
}
|
|
1309
1309
|
};
|
|
1310
|
-
},
|
|
1310
|
+
}, Ba = {
|
|
1311
1311
|
"format.bold": "bold",
|
|
1312
1312
|
"format.italic": "italic",
|
|
1313
1313
|
"format.underline": "underline",
|
|
@@ -1315,22 +1315,22 @@ const jo = (e) => {
|
|
|
1315
1315
|
"format.inlineCode": "code",
|
|
1316
1316
|
"format.superscript": "superscript",
|
|
1317
1317
|
"format.subscript": "subscript"
|
|
1318
|
-
},
|
|
1319
|
-
"list.ordered":
|
|
1320
|
-
"list.unordered":
|
|
1321
|
-
"list.todo":
|
|
1322
|
-
},
|
|
1323
|
-
"indent.increase":
|
|
1324
|
-
"indent.decrease":
|
|
1325
|
-
"history.undo":
|
|
1326
|
-
"history.redo":
|
|
1327
|
-
},
|
|
1318
|
+
}, Da = {
|
|
1319
|
+
"list.ordered": Vr,
|
|
1320
|
+
"list.unordered": Wr,
|
|
1321
|
+
"list.todo": zr
|
|
1322
|
+
}, Oa = {
|
|
1323
|
+
"indent.increase": br,
|
|
1324
|
+
"indent.decrease": fr,
|
|
1325
|
+
"history.undo": pr,
|
|
1326
|
+
"history.redo": hr
|
|
1327
|
+
}, Ha = {
|
|
1328
1328
|
"format.color": "color",
|
|
1329
1329
|
"format.backgroundColor": "background-color",
|
|
1330
1330
|
"format.fontSize": "font-size",
|
|
1331
1331
|
"format.fontFamily": "font-family",
|
|
1332
1332
|
"format.lineHeight": "line-height"
|
|
1333
|
-
},
|
|
1333
|
+
}, $a = ({
|
|
1334
1334
|
container: e,
|
|
1335
1335
|
lexicalEditor: t,
|
|
1336
1336
|
options: n,
|
|
@@ -1338,12 +1338,12 @@ const jo = (e) => {
|
|
|
1338
1338
|
isReadonly: o,
|
|
1339
1339
|
reportError: a
|
|
1340
1340
|
}) => {
|
|
1341
|
-
const s =
|
|
1341
|
+
const s = Ea({
|
|
1342
1342
|
container: e,
|
|
1343
1343
|
lexicalEditor: t,
|
|
1344
1344
|
options: n,
|
|
1345
1345
|
isDestroyed: r
|
|
1346
|
-
}), l =
|
|
1346
|
+
}), l = Ta(t), d = La(t), c = Sa(t), h = Na(t), y = Pa(t), w = Aa(t), T = () => {
|
|
1347
1347
|
var x, m;
|
|
1348
1348
|
if (document.fullscreenElement) {
|
|
1349
1349
|
(x = document.exitFullscreen) == null || x.call(document).catch((p) => {
|
|
@@ -1356,22 +1356,22 @@ const jo = (e) => {
|
|
|
1356
1356
|
});
|
|
1357
1357
|
}, b = ((v) => {
|
|
1358
1358
|
if (r() || o()) return;
|
|
1359
|
-
const x =
|
|
1359
|
+
const x = Ba[v.type];
|
|
1360
1360
|
if (x) {
|
|
1361
|
-
t.dispatchCommand(
|
|
1361
|
+
t.dispatchCommand(gr, x);
|
|
1362
1362
|
return;
|
|
1363
1363
|
}
|
|
1364
|
-
const m =
|
|
1364
|
+
const m = Da[v.type];
|
|
1365
1365
|
if (m) {
|
|
1366
1366
|
t.dispatchCommand(m, void 0);
|
|
1367
1367
|
return;
|
|
1368
1368
|
}
|
|
1369
|
-
const p =
|
|
1369
|
+
const p = Oa[v.type];
|
|
1370
1370
|
if (p) {
|
|
1371
1371
|
t.dispatchCommand(p, void 0);
|
|
1372
1372
|
return;
|
|
1373
1373
|
}
|
|
1374
|
-
const k =
|
|
1374
|
+
const k = Ha[v.type];
|
|
1375
1375
|
if (k && "value" in v) {
|
|
1376
1376
|
y.setSelectionStyle(k, v.value);
|
|
1377
1377
|
return;
|
|
@@ -1469,18 +1469,18 @@ const jo = (e) => {
|
|
|
1469
1469
|
return b.uploadMediaFile = s.uploadMediaFile, b.destroy = () => {
|
|
1470
1470
|
s.destroy();
|
|
1471
1471
|
}, b;
|
|
1472
|
-
},
|
|
1472
|
+
}, Fa = 300, za = "BridgeRTE", Lt = ({
|
|
1473
1473
|
editor: e,
|
|
1474
1474
|
overflowLength: t
|
|
1475
1475
|
}) => {
|
|
1476
1476
|
if (t <= 0) return !1;
|
|
1477
|
-
const n =
|
|
1477
|
+
const n = I();
|
|
1478
1478
|
if (D(n))
|
|
1479
1479
|
return ft(e, n.anchor, t), !0;
|
|
1480
1480
|
H().selectEnd();
|
|
1481
|
-
const r =
|
|
1481
|
+
const r = I();
|
|
1482
1482
|
return D(r) ? (ft(e, r.anchor, t), !0) : !1;
|
|
1483
|
-
},
|
|
1483
|
+
}, Wa = ({
|
|
1484
1484
|
lexicalEditor: e,
|
|
1485
1485
|
options: t,
|
|
1486
1486
|
isDestroyed: n,
|
|
@@ -1492,8 +1492,8 @@ const jo = (e) => {
|
|
|
1492
1492
|
s && (clearTimeout(s), s = null);
|
|
1493
1493
|
}, d = (m) => {
|
|
1494
1494
|
if (n()) return;
|
|
1495
|
-
const p =
|
|
1496
|
-
r(p), m &&
|
|
1495
|
+
const p = xn(e.getEditorState(), e);
|
|
1496
|
+
r(p), m && da(t, p);
|
|
1497
1497
|
}, c = (m) => {
|
|
1498
1498
|
const p = t.maxLength !== void 0 && t.maxLength >= 0 ? t.maxLength : void 0;
|
|
1499
1499
|
return {
|
|
@@ -1504,11 +1504,11 @@ const jo = (e) => {
|
|
|
1504
1504
|
isOverMaxLength: p === void 0 ? !1 : m > p
|
|
1505
1505
|
};
|
|
1506
1506
|
}, h = (m) => {
|
|
1507
|
-
|
|
1507
|
+
ua(t, c(m));
|
|
1508
1508
|
}, y = () => {
|
|
1509
1509
|
t.onChange && (l(), s = setTimeout(() => {
|
|
1510
1510
|
d(!0);
|
|
1511
|
-
},
|
|
1511
|
+
}, sr));
|
|
1512
1512
|
}, w = (m) => {
|
|
1513
1513
|
if (a > 0) {
|
|
1514
1514
|
a -= 1;
|
|
@@ -1539,14 +1539,14 @@ const jo = (e) => {
|
|
|
1539
1539
|
o(), w(m);
|
|
1540
1540
|
}
|
|
1541
1541
|
};
|
|
1542
|
-
}, Be = "data-language",
|
|
1542
|
+
}, Be = "data-language", Pn = "纯文本", Va = "language", Ua = /* @__PURE__ */ new Set(["plain", "plaintext", "text", "txt"]), ja = new Set(ko().map(([e]) => e)), Ka = [
|
|
1543
1543
|
Be,
|
|
1544
1544
|
"data-lang",
|
|
1545
1545
|
"data-code-language",
|
|
1546
1546
|
"data-highlight-language",
|
|
1547
1547
|
"lang",
|
|
1548
1548
|
"language"
|
|
1549
|
-
],
|
|
1549
|
+
], qa = /^[a-z][a-z0-9_+#.-]{0,31}$/i, Ga = /^(?:language|lang)-([a-z][a-z0-9_+#.-]{0,31})$/i, Xa = /^brush:\s*([a-z][a-z0-9_+#.-]{0,31})$/i, Ya = /* @__PURE__ */ new Map([
|
|
1550
1550
|
["dockerfile", "docker"],
|
|
1551
1551
|
["shell", "shellscript"],
|
|
1552
1552
|
["sh", "shellscript"],
|
|
@@ -1559,56 +1559,56 @@ const jo = (e) => {
|
|
|
1559
1559
|
["ts", "typescript"],
|
|
1560
1560
|
["tsx", "tsx"],
|
|
1561
1561
|
["yml", "yaml"]
|
|
1562
|
-
]),
|
|
1562
|
+
]), Ja = (e) => e.type === "select", St = (e) => e.find((t) => t.name === Va && Ja(t)), ne = (e) => {
|
|
1563
1563
|
const t = e == null ? void 0 : e.trim().toLowerCase();
|
|
1564
|
-
if (!t || !
|
|
1565
|
-
if (
|
|
1566
|
-
const n =
|
|
1567
|
-
return
|
|
1568
|
-
},
|
|
1569
|
-
for (const t of
|
|
1570
|
-
const n =
|
|
1564
|
+
if (!t || !qa.test(t)) return null;
|
|
1565
|
+
if (Ua.has(t)) return "";
|
|
1566
|
+
const n = Ya.get(t) ?? _o(t);
|
|
1567
|
+
return ja.has(n) ? n : null;
|
|
1568
|
+
}, Qa = (e) => {
|
|
1569
|
+
for (const t of Ka) {
|
|
1570
|
+
const n = ne(e.getAttribute(t));
|
|
1571
1571
|
if (n) return n;
|
|
1572
1572
|
}
|
|
1573
1573
|
return null;
|
|
1574
|
-
},
|
|
1575
|
-
const [, t] = e.match(
|
|
1574
|
+
}, Za = (e) => {
|
|
1575
|
+
const [, t] = e.match(Xa) ?? [], n = ne(t);
|
|
1576
1576
|
if (n) return n;
|
|
1577
1577
|
for (const r of e.split(/\s+/)) {
|
|
1578
|
-
const [, o] = r.match(
|
|
1578
|
+
const [, o] = r.match(Ga) ?? [], a = ne(o);
|
|
1579
1579
|
if (a) return a;
|
|
1580
1580
|
}
|
|
1581
1581
|
return null;
|
|
1582
|
-
},
|
|
1582
|
+
}, In = (e = qe) => {
|
|
1583
1583
|
var t, n;
|
|
1584
|
-
return ((t =
|
|
1585
|
-
},
|
|
1584
|
+
return ((t = St(e.fields)) == null ? void 0 : t.options) ?? ((n = St(qe.fields)) == null ? void 0 : n.options) ?? [{ label: Pn, value: "" }];
|
|
1585
|
+
}, Rn = (e, t) => {
|
|
1586
1586
|
var n, r, o;
|
|
1587
|
-
return ((n = e.find((a) => a.value === t)) == null ? void 0 : n.label) ?? ((r = e.find((a) =>
|
|
1587
|
+
return ((n = e.find((a) => a.value === t)) == null ? void 0 : n.label) ?? ((r = e.find((a) => ne(a.value) === ne(t))) == null ? void 0 : r.label) ?? ((o = e[0]) == null ? void 0 : o.label) ?? Pn;
|
|
1588
1588
|
};
|
|
1589
|
-
|
|
1590
|
-
const
|
|
1589
|
+
In();
|
|
1590
|
+
const es = (e) => {
|
|
1591
1591
|
[...e.querySelectorAll("pre,code")].forEach((t) => {
|
|
1592
|
-
const n =
|
|
1592
|
+
const n = Qa(t) ?? Za(t.className), r = t.tagName === "PRE" ? t : t.closest("pre");
|
|
1593
1593
|
r && n && r.setAttribute(Be, n);
|
|
1594
1594
|
});
|
|
1595
|
-
},
|
|
1595
|
+
}, ts = (e) => {
|
|
1596
1596
|
e.querySelectorAll("pre").forEach((t) => {
|
|
1597
1597
|
[...t.children].forEach((r) => {
|
|
1598
1598
|
r.tagName === "CODE" && r.replaceWith(...r.childNodes);
|
|
1599
1599
|
});
|
|
1600
1600
|
});
|
|
1601
|
-
},
|
|
1601
|
+
}, ns = (e, t) => {
|
|
1602
1602
|
const n = [...t.querySelectorAll("pre[data-language]")];
|
|
1603
1603
|
let r = 0;
|
|
1604
1604
|
e.forEach((o) => {
|
|
1605
|
-
if (!
|
|
1605
|
+
if (!X(o)) return;
|
|
1606
1606
|
const a = n[r];
|
|
1607
1607
|
if (r += 1, !a) return;
|
|
1608
1608
|
const s = a.getAttribute(Be);
|
|
1609
1609
|
s && !o.getLanguage() && o.setLanguage(s);
|
|
1610
1610
|
});
|
|
1611
|
-
},
|
|
1611
|
+
}, An = "one-light", Q = {
|
|
1612
1612
|
keyword: "#a626a4",
|
|
1613
1613
|
function: "#4078f2",
|
|
1614
1614
|
operator: "#0184bc",
|
|
@@ -1616,33 +1616,33 @@ const Ja = (e) => {
|
|
|
1616
1616
|
property: "#e45649",
|
|
1617
1617
|
string: "#50a14f",
|
|
1618
1618
|
attrName: "#986801"
|
|
1619
|
-
},
|
|
1620
|
-
[
|
|
1621
|
-
[
|
|
1622
|
-
[
|
|
1623
|
-
[
|
|
1624
|
-
[
|
|
1625
|
-
[
|
|
1626
|
-
[
|
|
1627
|
-
},
|
|
1619
|
+
}, rs = {
|
|
1620
|
+
[Q.keyword]: "keyword",
|
|
1621
|
+
[Q.function]: "function",
|
|
1622
|
+
[Q.operator]: "operator",
|
|
1623
|
+
[Q.tag]: "tag",
|
|
1624
|
+
[Q.property]: "property",
|
|
1625
|
+
[Q.string]: "string",
|
|
1626
|
+
[Q.attrName]: "attr-name"
|
|
1627
|
+
}, os = (e) => {
|
|
1628
1628
|
const [, t] = e.match(/(?:^|;)color:\s*(#[0-9a-f]{3,8})/i) ?? [];
|
|
1629
|
-
return t ?
|
|
1630
|
-
},
|
|
1629
|
+
return t ? rs[t.toLowerCase()] : void 0;
|
|
1630
|
+
}, as = {
|
|
1631
1631
|
...bt,
|
|
1632
1632
|
defaultLanguage: null,
|
|
1633
|
-
defaultTheme:
|
|
1633
|
+
defaultTheme: An,
|
|
1634
1634
|
$tokenize(e, t) {
|
|
1635
1635
|
const n = bt.$tokenize.call(this, e, t);
|
|
1636
|
-
return e.getStyle() && e.setStyle(""), n.map((r) =>
|
|
1636
|
+
return e.getStyle() && e.setStyle(""), n.map((r) => Or(r) ? Hr(
|
|
1637
1637
|
r.getTextContent(),
|
|
1638
|
-
|
|
1638
|
+
os(r.getStyle())
|
|
1639
1639
|
) : r);
|
|
1640
1640
|
}
|
|
1641
|
-
},
|
|
1642
|
-
let
|
|
1643
|
-
const
|
|
1641
|
+
}, ss = 1200, fe = /* @__PURE__ */ new Set(), Le = /* @__PURE__ */ new Set(), Xe = /* @__PURE__ */ new Set(), Se = [];
|
|
1642
|
+
let Z = 0, ae = null, _e = !1, ke = null, Nt = !1;
|
|
1643
|
+
const is = (e) => "requestIdleCallback" in window ? {
|
|
1644
1644
|
id: window.requestIdleCallback(e, {
|
|
1645
|
-
timeout:
|
|
1645
|
+
timeout: ss
|
|
1646
1646
|
}),
|
|
1647
1647
|
kind: "idle"
|
|
1648
1648
|
} : {
|
|
@@ -1653,37 +1653,37 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1653
1653
|
});
|
|
1654
1654
|
}, 0),
|
|
1655
1655
|
kind: "timeout"
|
|
1656
|
-
},
|
|
1656
|
+
}, ls = (e) => {
|
|
1657
1657
|
if (e.kind === "idle") {
|
|
1658
1658
|
window.cancelIdleCallback(e.id);
|
|
1659
1659
|
return;
|
|
1660
1660
|
}
|
|
1661
1661
|
globalThis.clearTimeout(e.id);
|
|
1662
|
-
},
|
|
1663
|
-
|
|
1664
|
-
if (fe.has(t) || Le.has(t) || Xe.has(t) ||
|
|
1662
|
+
}, cs = (e) => e.map((t) => t.value).filter((t) => t !== ""), ds = (e) => {
|
|
1663
|
+
cs(e).forEach((t) => {
|
|
1664
|
+
if (fe.has(t) || Le.has(t) || Xe.has(t) || Cn(t)) {
|
|
1665
1665
|
fe.add(t);
|
|
1666
1666
|
return;
|
|
1667
1667
|
}
|
|
1668
|
-
Xe.add(t),
|
|
1668
|
+
Xe.add(t), Se.push(t);
|
|
1669
1669
|
});
|
|
1670
|
-
},
|
|
1671
|
-
for (;
|
|
1672
|
-
const e =
|
|
1670
|
+
}, us = () => {
|
|
1671
|
+
for (; Se.length > 0; ) {
|
|
1672
|
+
const e = Se.shift();
|
|
1673
1673
|
if (e && (Xe.delete(e), !(fe.has(e) || Le.has(e)))) {
|
|
1674
|
-
if (
|
|
1674
|
+
if (Cn(e)) {
|
|
1675
1675
|
fe.add(e);
|
|
1676
1676
|
continue;
|
|
1677
1677
|
}
|
|
1678
1678
|
return e;
|
|
1679
1679
|
}
|
|
1680
1680
|
}
|
|
1681
|
-
},
|
|
1682
|
-
if (!
|
|
1681
|
+
}, ms = async () => {
|
|
1682
|
+
if (!Nt) {
|
|
1683
1683
|
if (!ke) {
|
|
1684
|
-
const e =
|
|
1684
|
+
const e = xo(An);
|
|
1685
1685
|
ke = Promise.resolve(e ?? void 0).then(() => {
|
|
1686
|
-
|
|
1686
|
+
Nt = !0;
|
|
1687
1687
|
}).catch(() => {
|
|
1688
1688
|
}).finally(() => {
|
|
1689
1689
|
ke = null;
|
|
@@ -1691,16 +1691,16 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1691
1691
|
}
|
|
1692
1692
|
await ke;
|
|
1693
1693
|
}
|
|
1694
|
-
},
|
|
1695
|
-
|
|
1694
|
+
}, gs = (e) => {
|
|
1695
|
+
Z += 1, ds(e);
|
|
1696
1696
|
const t = async () => {
|
|
1697
|
-
if (!(
|
|
1697
|
+
if (!(Z <= 0 || _e)) {
|
|
1698
1698
|
_e = !0;
|
|
1699
1699
|
try {
|
|
1700
|
-
if (await
|
|
1701
|
-
const r =
|
|
1700
|
+
if (await ms(), Z <= 0) return;
|
|
1701
|
+
const r = us();
|
|
1702
1702
|
if (!r) return;
|
|
1703
|
-
Le.add(r), await Promise.resolve(
|
|
1703
|
+
Le.add(r), await Promise.resolve(Eo(r) ?? void 0).then(() => {
|
|
1704
1704
|
fe.add(r);
|
|
1705
1705
|
}).catch(() => {
|
|
1706
1706
|
}).finally(() => {
|
|
@@ -1711,14 +1711,14 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1711
1711
|
}
|
|
1712
1712
|
}
|
|
1713
1713
|
}, n = () => {
|
|
1714
|
-
|
|
1715
|
-
|
|
1714
|
+
Z <= 0 || ae !== null || _e || Se.length === 0 || (ae = is(() => {
|
|
1715
|
+
ae = null, t();
|
|
1716
1716
|
}));
|
|
1717
1717
|
};
|
|
1718
1718
|
return n(), () => {
|
|
1719
|
-
|
|
1719
|
+
Z = Math.max(0, Z - 1), Z === 0 && ae !== null && (ls(ae), ae = null);
|
|
1720
1720
|
};
|
|
1721
|
-
}, z = 12,
|
|
1721
|
+
}, z = 12, hs = 6, Ne = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), Bn = () => {
|
|
1722
1722
|
const e = window.visualViewport;
|
|
1723
1723
|
return {
|
|
1724
1724
|
left: (e == null ? void 0 : e.offsetLeft) ?? 0,
|
|
@@ -1726,7 +1726,7 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1726
1726
|
width: (e == null ? void 0 : e.width) ?? window.innerWidth,
|
|
1727
1727
|
height: (e == null ? void 0 : e.height) ?? window.innerHeight
|
|
1728
1728
|
};
|
|
1729
|
-
},
|
|
1729
|
+
}, ps = (e, t) => ({
|
|
1730
1730
|
/*
|
|
1731
1731
|
* dialog request 里传的是 viewport 坐标。用 virtual reference 交给 floating-ui,
|
|
1732
1732
|
* 让 dialog 和 toolbar group、hoverbar 等轻浮层复用同一套翻转和边界避让逻辑。
|
|
@@ -1742,21 +1742,21 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1742
1742
|
width: t.width,
|
|
1743
1743
|
height: t.height
|
|
1744
1744
|
})
|
|
1745
|
-
}),
|
|
1746
|
-
const n = e.getBoundingClientRect(), r =
|
|
1745
|
+
}), fs = (e, t) => {
|
|
1746
|
+
const n = e.getBoundingClientRect(), r = Bn(), o = t.getBoundingClientRect(), a = o.left + z, s = o.top + z, l = r.left + z, d = r.top + z, c = r.left + r.width - n.width - z, h = r.top + r.height - n.height - z;
|
|
1747
1747
|
return {
|
|
1748
|
-
left:
|
|
1749
|
-
top:
|
|
1748
|
+
left: Ne(a, l, c),
|
|
1749
|
+
top: Ne(s, d, h),
|
|
1750
1750
|
viewportHeight: r.height
|
|
1751
1751
|
};
|
|
1752
|
-
},
|
|
1753
|
-
const r = e.getBoundingClientRect(), o =
|
|
1752
|
+
}, bs = (e, t, n) => {
|
|
1753
|
+
const r = e.getBoundingClientRect(), o = Bn(), a = o.left + z, s = o.top + z, l = o.left + o.width - r.width - z, d = o.top + o.height - r.height - z;
|
|
1754
1754
|
return {
|
|
1755
|
-
left:
|
|
1756
|
-
top:
|
|
1755
|
+
left: Ne(t, a, l),
|
|
1756
|
+
top: Ne(n, s, d),
|
|
1757
1757
|
viewportHeight: o.height
|
|
1758
1758
|
};
|
|
1759
|
-
},
|
|
1759
|
+
}, Dn = (e) => {
|
|
1760
1760
|
var c, h;
|
|
1761
1761
|
const t = document.createElement("div"), n = document.createElement("div"), r = document.createElement("div");
|
|
1762
1762
|
let o;
|
|
@@ -1769,24 +1769,24 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1769
1769
|
);
|
|
1770
1770
|
}, l = async () => {
|
|
1771
1771
|
if (!o) {
|
|
1772
|
-
const T =
|
|
1772
|
+
const T = fs(n, e.root);
|
|
1773
1773
|
s(T.left, T.top, T.viewportHeight);
|
|
1774
1774
|
return;
|
|
1775
1775
|
}
|
|
1776
|
-
const y = await
|
|
1777
|
-
|
|
1776
|
+
const y = await fn(
|
|
1777
|
+
ps(e.root, o),
|
|
1778
1778
|
n,
|
|
1779
1779
|
{
|
|
1780
1780
|
placement: "bottom-start",
|
|
1781
1781
|
strategy: "fixed",
|
|
1782
|
-
platform:
|
|
1782
|
+
platform: bn,
|
|
1783
1783
|
middleware: [
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1784
|
+
yn(hs),
|
|
1785
|
+
vn(),
|
|
1786
|
+
wn({ padding: z })
|
|
1787
1787
|
]
|
|
1788
1788
|
}
|
|
1789
|
-
), w =
|
|
1789
|
+
), w = bs(n, y.x, y.y);
|
|
1790
1790
|
s(
|
|
1791
1791
|
w.left,
|
|
1792
1792
|
w.top,
|
|
@@ -1835,36 +1835,36 @@ const os = (e) => "requestIdleCallback" in window ? {
|
|
|
1835
1835
|
return e.addEventListener("pointerdown", o), e.addEventListener("pointerup", a), e.addEventListener("pointercancel", a), e.addEventListener("lostpointercapture", a), () => {
|
|
1836
1836
|
a(), e.removeEventListener("pointerdown", o), e.removeEventListener("pointerup", a), e.removeEventListener("pointercancel", a), e.removeEventListener("lostpointercapture", a);
|
|
1837
1837
|
};
|
|
1838
|
-
},
|
|
1838
|
+
}, ys = (e, t, n) => {
|
|
1839
1839
|
e.update(
|
|
1840
1840
|
t,
|
|
1841
1841
|
{
|
|
1842
|
-
tag:
|
|
1842
|
+
tag: yr,
|
|
1843
1843
|
onUpdate: n
|
|
1844
1844
|
}
|
|
1845
1845
|
);
|
|
1846
|
-
}, Pt = "language",
|
|
1846
|
+
}, Pt = "language", vs = "bridgerte-code-block-language", It = 8;
|
|
1847
1847
|
let Rt = 0;
|
|
1848
|
-
const
|
|
1848
|
+
const ws = () => (Rt += 1, `${vs}-${Rt}`), Cs = (e, t, n) => {
|
|
1849
1849
|
const r = e.querySelector(".bridgerte__code-block-control-label");
|
|
1850
|
-
e.dataset.language = n ?? "", r && (r.textContent =
|
|
1851
|
-
},
|
|
1850
|
+
e.dataset.language = n ?? "", r && (r.textContent = Rn(t, n));
|
|
1851
|
+
}, _s = (e, t) => {
|
|
1852
1852
|
const n = document.createElement("button"), r = document.createElement("span"), o = document.createElement("span");
|
|
1853
|
-
return n.type = "button", n.className = "bridgerte__code-block-control", n.contentEditable = "false", n.dataset.language = t ?? "", n.setAttribute("aria-label", "选择代码块语言"), r.className = "bridgerte__code-block-control-label", r.textContent =
|
|
1854
|
-
},
|
|
1855
|
-
const t = document.createElement("div"), n = e.root.querySelector(".bridgerte__content") ?? e.root, r =
|
|
1856
|
-
e.languagePanel ??
|
|
1853
|
+
return n.type = "button", n.className = "bridgerte__code-block-control", n.contentEditable = "false", n.dataset.language = t ?? "", n.setAttribute("aria-label", "选择代码块语言"), r.className = "bridgerte__code-block-control-label", r.textContent = Rn(e, t), o.className = "bridgerte__code-block-control-arrow", n.append(r, o), n;
|
|
1854
|
+
}, ks = (e) => {
|
|
1855
|
+
const t = document.createElement("div"), n = e.root.querySelector(".bridgerte__content") ?? e.root, r = pn(
|
|
1856
|
+
e.languagePanel ?? qe,
|
|
1857
1857
|
e.payloadPanelConfig
|
|
1858
|
-
), o =
|
|
1858
|
+
), o = In(r);
|
|
1859
1859
|
let a = null, s = null, l = null;
|
|
1860
1860
|
const d = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), h = () => {
|
|
1861
|
-
l ?? (l =
|
|
1861
|
+
l ?? (l = gs(o));
|
|
1862
1862
|
}, y = () => {
|
|
1863
1863
|
a == null || a.close();
|
|
1864
1864
|
}, w = (i, u) => {
|
|
1865
|
-
e.isReadonly() ||
|
|
1865
|
+
e.isReadonly() || ys(e.editor, () => {
|
|
1866
1866
|
const g = he(i);
|
|
1867
|
-
|
|
1867
|
+
X(g) && g.setLanguage(u);
|
|
1868
1868
|
});
|
|
1869
1869
|
}, T = (i, u) => {
|
|
1870
1870
|
Pe(() => {
|
|
@@ -1873,7 +1873,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
1873
1873
|
}, b = (i, u, g) => {
|
|
1874
1874
|
var f;
|
|
1875
1875
|
return ((f = e.onRequest) == null ? void 0 : f.call(e, {
|
|
1876
|
-
id:
|
|
1876
|
+
id: ws(),
|
|
1877
1877
|
readonly: e.isReadonly(),
|
|
1878
1878
|
menuId: "code-block-language",
|
|
1879
1879
|
command: { type: "block.setCodeLanguage", language: g },
|
|
@@ -1905,11 +1905,11 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
1905
1905
|
h(), u.dataset.lexicalKey = i;
|
|
1906
1906
|
const g = u.getAttribute("data-language"), f = d.get(i);
|
|
1907
1907
|
if (f) {
|
|
1908
|
-
|
|
1908
|
+
Cs(f, o, g), v(f, u);
|
|
1909
1909
|
return;
|
|
1910
1910
|
}
|
|
1911
|
-
const M =
|
|
1912
|
-
M.dataset.lexicalKey = i, d.set(i, M), c.set(M,
|
|
1911
|
+
const M = _s(o, g), N = V(M);
|
|
1912
|
+
M.dataset.lexicalKey = i, d.set(i, M), c.set(M, N), t.append(M), v(M, u);
|
|
1913
1913
|
}, m = () => {
|
|
1914
1914
|
s = null, d.forEach((i, u) => {
|
|
1915
1915
|
x(u);
|
|
@@ -1923,18 +1923,18 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
1923
1923
|
y();
|
|
1924
1924
|
return;
|
|
1925
1925
|
}
|
|
1926
|
-
a || (a =
|
|
1926
|
+
a || (a = Dn({
|
|
1927
1927
|
root: e.root,
|
|
1928
1928
|
className: "bridgerte__code-block-menu",
|
|
1929
1929
|
onBackdropClick: y
|
|
1930
1930
|
}));
|
|
1931
1931
|
const M = document.createElement("div");
|
|
1932
|
-
a.content.replaceChildren(), a.element.style.minWidth = "180px", M.className = "bridgerte__code-block-menu-list", o.forEach((
|
|
1932
|
+
a.content.replaceChildren(), a.element.style.minWidth = "180px", M.className = "bridgerte__code-block-menu-list", o.forEach((N) => {
|
|
1933
1933
|
const A = document.createElement("button");
|
|
1934
|
-
A.type = "button", A.className = "bridgerte__menu-item bridgerte__code-block-menu-item", A.textContent =
|
|
1934
|
+
A.type = "button", A.className = "bridgerte__menu-item bridgerte__code-block-menu-item", A.textContent = N.label, V(A), A.addEventListener("pointerdown", (O) => {
|
|
1935
1935
|
O.preventDefault();
|
|
1936
1936
|
}), A.addEventListener("click", () => {
|
|
1937
|
-
y(), T(u,
|
|
1937
|
+
y(), T(u, N.value);
|
|
1938
1938
|
}), M.append(A);
|
|
1939
1939
|
}), a.content.append(M), a.open({
|
|
1940
1940
|
x: g.left,
|
|
@@ -1945,7 +1945,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
1945
1945
|
};
|
|
1946
1946
|
t.className = "bridgerte__code-block-controls-layer", e.root.append(t);
|
|
1947
1947
|
const _ = e.editor.registerMutationListener(
|
|
1948
|
-
|
|
1948
|
+
dn,
|
|
1949
1949
|
(i) => {
|
|
1950
1950
|
i.forEach((u, g) => {
|
|
1951
1951
|
if (u === "destroyed") {
|
|
@@ -1960,7 +1960,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
1960
1960
|
x(g);
|
|
1961
1961
|
});
|
|
1962
1962
|
}
|
|
1963
|
-
), P = e.editor.registerUpdateListener(p),
|
|
1963
|
+
), P = e.editor.registerUpdateListener(p), R = (i) => {
|
|
1964
1964
|
const u = i.target;
|
|
1965
1965
|
if (!(u instanceof HTMLElement)) return;
|
|
1966
1966
|
const g = u.closest(".bridgerte__code-block-control");
|
|
@@ -1982,18 +1982,18 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
1982
1982
|
const f = g.dataset.lexicalKey;
|
|
1983
1983
|
f && (e.editor.update(() => {
|
|
1984
1984
|
const M = he(f);
|
|
1985
|
-
|
|
1985
|
+
X(M) && M.selectEnd();
|
|
1986
1986
|
}), e.editor.focus());
|
|
1987
1987
|
};
|
|
1988
|
-
return t.addEventListener("pointerdown", L), t.addEventListener("click",
|
|
1988
|
+
return t.addEventListener("pointerdown", L), t.addEventListener("click", R), n.addEventListener("pointerdown", C), n.addEventListener("scroll", p, { passive: !0 }), window.addEventListener("resize", p), {
|
|
1989
1989
|
destroy() {
|
|
1990
|
-
_(), P(), l == null || l(), l = null, s !== null && (st(s), s = null), t.removeEventListener("pointerdown", L), t.removeEventListener("click",
|
|
1990
|
+
_(), P(), l == null || l(), l = null, s !== null && (st(s), s = null), t.removeEventListener("pointerdown", L), t.removeEventListener("click", R), n.removeEventListener("pointerdown", C), n.removeEventListener("scroll", p), window.removeEventListener("resize", p), d.forEach((i) => {
|
|
1991
1991
|
var u;
|
|
1992
1992
|
(u = c.get(i)) == null || u(), i.remove();
|
|
1993
1993
|
}), d.clear(), c.clear(), t.remove(), a == null || a.destroy(), a = null;
|
|
1994
1994
|
}
|
|
1995
1995
|
};
|
|
1996
|
-
},
|
|
1996
|
+
}, On = (e) => {
|
|
1997
1997
|
const t = (o) => {
|
|
1998
1998
|
const a = e.getBlockFromTarget(o.target);
|
|
1999
1999
|
if (a) {
|
|
@@ -2015,17 +2015,17 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2015
2015
|
};
|
|
2016
2016
|
}, it = (e, t = {}) => e.map((n) => {
|
|
2017
2017
|
var a;
|
|
2018
|
-
const r = (a = t.menuLabels) == null ? void 0 : a[n.id], o = n.payloadPanel ?
|
|
2018
|
+
const r = (a = t.menuLabels) == null ? void 0 : a[n.id], o = n.payloadPanel ? pn(n.payloadPanel, t.payloadPanelConfig) : void 0;
|
|
2019
2019
|
return {
|
|
2020
2020
|
...n,
|
|
2021
2021
|
...r === void 0 ? {} : { label: r },
|
|
2022
2022
|
...o === void 0 ? {} : { payloadPanel: o }
|
|
2023
2023
|
};
|
|
2024
|
-
}),
|
|
2024
|
+
}), Es = (e, t) => {
|
|
2025
2025
|
const n = t.find((r) => r.command === e.command.type);
|
|
2026
2026
|
return (n == null ? void 0 : n.value) === void 0 ? void 0 : { value: String(n.value) };
|
|
2027
|
-
},
|
|
2028
|
-
const n = t.find((o) =>
|
|
2027
|
+
}, xs = (e, t) => {
|
|
2028
|
+
const n = t.find((o) => vo(e.command, o)), r = t.find((o) => o.command === e.command.type);
|
|
2029
2029
|
return {
|
|
2030
2030
|
active: (n == null ? void 0 : n.active) === !0,
|
|
2031
2031
|
disabled: e.payloadPanel ? (r == null ? void 0 : r.disabled) === !0 : (n == null ? void 0 : n.disabled) === !0 || (r == null ? void 0 : r.disabled) === !0
|
|
@@ -2034,7 +2034,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2034
2034
|
"media-resize-20",
|
|
2035
2035
|
"media-resize-50",
|
|
2036
2036
|
"media-resize-100"
|
|
2037
|
-
],
|
|
2037
|
+
], Ms = [
|
|
2038
2038
|
"media-align-left",
|
|
2039
2039
|
"media-align-center",
|
|
2040
2040
|
"media-align-right",
|
|
@@ -2042,11 +2042,11 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2042
2042
|
...be,
|
|
2043
2043
|
"|",
|
|
2044
2044
|
"media-remove"
|
|
2045
|
-
],
|
|
2045
|
+
], Ts = [
|
|
2046
2046
|
"media-retry",
|
|
2047
2047
|
"|",
|
|
2048
2048
|
"media-remove"
|
|
2049
|
-
],
|
|
2049
|
+
], Ls = [
|
|
2050
2050
|
{
|
|
2051
2051
|
id: "media-align-left",
|
|
2052
2052
|
command: { type: "media.align", assetId: "", value: "left" },
|
|
@@ -2095,7 +2095,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2095
2095
|
label: "删除",
|
|
2096
2096
|
icon: "trash-2"
|
|
2097
2097
|
}
|
|
2098
|
-
],
|
|
2098
|
+
], Hn = (e) => be.includes(e), Ss = (e) => typeof e == "object" && Array.isArray(e.menuKeys), Ns = (e) => new Set(e.flatMap((t) => t === "|" ? [] : typeof t == "string" ? [t] : Ss(t) ? [t.key, ...t.menuKeys] : [])), Fe = (e) => typeof e == "string" && Hn(e), Ps = (e) => {
|
|
2099
2099
|
const t = e.findIndex((r) => r === "media-remove"), n = t === -1 ? e.length : t;
|
|
2100
2100
|
return [
|
|
2101
2101
|
...e.slice(0, n),
|
|
@@ -2104,24 +2104,24 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2104
2104
|
"|",
|
|
2105
2105
|
...e.slice(n)
|
|
2106
2106
|
];
|
|
2107
|
-
},
|
|
2108
|
-
const t =
|
|
2107
|
+
}, Is = (e) => {
|
|
2108
|
+
const t = Ns(e);
|
|
2109
2109
|
if (be.filter((o) => !t.has(o)).length === 0) return e;
|
|
2110
2110
|
const r = e.findIndex(Fe);
|
|
2111
|
-
return r === -1 ?
|
|
2111
|
+
return r === -1 ? Ps(e) : [
|
|
2112
2112
|
...e.slice(0, r).filter((o) => !Fe(o)),
|
|
2113
2113
|
...be,
|
|
2114
2114
|
...e.slice(r + 1).filter((o) => !Fe(o))
|
|
2115
2115
|
];
|
|
2116
|
-
},
|
|
2116
|
+
}, Rs = (e) => {
|
|
2117
2117
|
var r;
|
|
2118
|
-
const t = (e == null ? void 0 : e.toolbarKeys) ??
|
|
2118
|
+
const t = (e == null ? void 0 : e.toolbarKeys) ?? Ms;
|
|
2119
2119
|
return {
|
|
2120
2120
|
...e,
|
|
2121
|
-
toolbarKeys:
|
|
2122
|
-
excludeKeys: (r = e == null ? void 0 : e.excludeKeys) == null ? void 0 : r.filter((o) => !
|
|
2121
|
+
toolbarKeys: Is(t),
|
|
2122
|
+
excludeKeys: (r = e == null ? void 0 : e.excludeKeys) == null ? void 0 : r.filter((o) => !Hn(o))
|
|
2123
2123
|
};
|
|
2124
|
-
},
|
|
2124
|
+
}, As = (e, t) => {
|
|
2125
2125
|
switch (e.command.type) {
|
|
2126
2126
|
case "media.retry":
|
|
2127
2127
|
return { ...e.command, assetId: t };
|
|
@@ -2134,53 +2134,53 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2134
2134
|
default:
|
|
2135
2135
|
return null;
|
|
2136
2136
|
}
|
|
2137
|
-
},
|
|
2138
|
-
const n = it(
|
|
2137
|
+
}, Bs = (e, t, n) => e.command.type === "media.resize" ? e.command.widthPercent === t : e.command.type === "media.align" && e.command.value === n, $n = (e, t = {}) => {
|
|
2138
|
+
const n = it(Ls, {
|
|
2139
2139
|
menuLabels: t.menuLabels
|
|
2140
|
-
}), r = e === "error" ? { toolbarKeys:
|
|
2140
|
+
}), r = e === "error" ? { toolbarKeys: Ts } : Rs(t.config);
|
|
2141
2141
|
return nt(r, n);
|
|
2142
|
-
},
|
|
2142
|
+
}, se = 8, de = "bridgerte__media-controls-button", Ds = (e) => e.querySelector(".bridgerte__content") ?? e, Os = (e) => e instanceof Element ? e.closest(".bridgerte__media") : null, Hs = (e, t = !1) => {
|
|
2143
2143
|
const n = document.createElement("button");
|
|
2144
|
-
return n.type = "button", n.className =
|
|
2145
|
-
},
|
|
2144
|
+
return n.type = "button", n.className = de, n.textContent = e.label, n.dataset.menuItemId = e.id, n.dataset.action = e.id.replace(/^media-/, ""), t && (n.dataset.active = "true"), n.setAttribute("aria-label", e.label), n;
|
|
2145
|
+
}, Fn = (e) => e.flatMap((t) => t.type === "button" ? [t.item] : t.type === "group" ? t.items : []), $s = (e, t, n, r) => {
|
|
2146
2146
|
if (t.type === "separator") {
|
|
2147
2147
|
const a = document.createElement("span");
|
|
2148
2148
|
a.className = "bridgerte__media-controls-separator", a.dataset.separatorId = t.key, a.setAttribute("aria-hidden", "true"), e.append(a);
|
|
2149
2149
|
return;
|
|
2150
2150
|
}
|
|
2151
2151
|
(t.type === "button" ? [t.item] : t.items).forEach((a) => {
|
|
2152
|
-
e.append(
|
|
2152
|
+
e.append(Hs(
|
|
2153
2153
|
a,
|
|
2154
|
-
|
|
2154
|
+
Bs(a, n, r)
|
|
2155
2155
|
));
|
|
2156
2156
|
});
|
|
2157
|
-
},
|
|
2157
|
+
}, Fs = (e, t, n) => {
|
|
2158
2158
|
const r = document.createElement("div"), o = e.dataset.status, a = Number(
|
|
2159
2159
|
e.dataset.displayWidthPercent ?? t
|
|
2160
|
-
), s = e.dataset.align ?? "left", l =
|
|
2160
|
+
), s = e.dataset.align ?? "left", l = $n(o, {
|
|
2161
2161
|
config: n.mediaControlsConfig,
|
|
2162
2162
|
menuLabels: n.menuLabels
|
|
2163
2163
|
});
|
|
2164
|
-
return r.className = "bridgerte__media-controls", r.contentEditable = "false", r.setAttribute("aria-label", "媒体操作"), r.dataset.status = o ?? "success", r.dataset.displayWidthPercent = e.dataset.displayWidthPercent ?? "", r.dataset.align = e.dataset.align ?? "", r.dataset.menuItemIds =
|
|
2165
|
-
|
|
2164
|
+
return r.className = "bridgerte__media-controls", r.contentEditable = "false", r.setAttribute("aria-label", "媒体操作"), r.dataset.status = o ?? "success", r.dataset.displayWidthPercent = e.dataset.displayWidthPercent ?? "", r.dataset.align = e.dataset.align ?? "", r.dataset.menuItemIds = Fn(l).map((d) => d.id).join("|"), l.forEach((d) => {
|
|
2165
|
+
$s(r, d, a, s);
|
|
2166
2166
|
}), r;
|
|
2167
|
-
},
|
|
2168
|
-
const t = document.createElement("div"), n =
|
|
2167
|
+
}, zs = (e) => {
|
|
2168
|
+
const t = document.createElement("div"), n = Ds(e.root), r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
|
|
2169
2169
|
let s = null, l = null, d = !1, c = null;
|
|
2170
2170
|
const h = (i) => {
|
|
2171
2171
|
var g;
|
|
2172
2172
|
const u = r.get(i);
|
|
2173
2173
|
u && ((g = o.get(u)) == null || g(), o.delete(u), u.remove(), r.delete(i), c === i && (c = null));
|
|
2174
2174
|
}, y = (i, u) => u.dataset.status === "error" || c === i, w = (i, u) => {
|
|
2175
|
-
const g = e.root.getBoundingClientRect(), f = u.getBoundingClientRect(), M = f.bottom < g.top || f.top > g.bottom,
|
|
2176
|
-
|
|
2177
|
-
g.width - i.offsetWidth -
|
|
2175
|
+
const g = e.root.getBoundingClientRect(), f = u.getBoundingClientRect(), M = f.bottom < g.top || f.top > g.bottom, N = Math.max(
|
|
2176
|
+
se,
|
|
2177
|
+
g.width - i.offsetWidth - se
|
|
2178
2178
|
), A = Math.min(
|
|
2179
|
-
Math.max(f.left - g.left +
|
|
2180
|
-
|
|
2179
|
+
Math.max(f.left - g.left + se, se),
|
|
2180
|
+
N
|
|
2181
2181
|
), O = Math.max(
|
|
2182
|
-
|
|
2183
|
-
f.top - g.top - i.offsetHeight -
|
|
2182
|
+
se,
|
|
2183
|
+
f.top - g.top - i.offsetHeight - se
|
|
2184
2184
|
);
|
|
2185
2185
|
i.hidden = M, i.style.transform = `translate(${A}px, ${O}px)`;
|
|
2186
2186
|
}, T = (i) => {
|
|
@@ -2196,15 +2196,15 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2196
2196
|
return;
|
|
2197
2197
|
}
|
|
2198
2198
|
if (g) {
|
|
2199
|
-
const
|
|
2200
|
-
if (
|
|
2199
|
+
const N = u.dataset.status === "error", A = g.querySelector('[data-action="retry"]') !== null, O = u.dataset.displayWidthPercent ?? "", U = u.dataset.align ?? "";
|
|
2200
|
+
if (N === A && g.dataset.displayWidthPercent === O && g.dataset.align === U) {
|
|
2201
2201
|
w(g, u);
|
|
2202
2202
|
return;
|
|
2203
2203
|
}
|
|
2204
2204
|
h(i);
|
|
2205
2205
|
}
|
|
2206
|
-
const f =
|
|
2207
|
-
targetSelector: `.${
|
|
2206
|
+
const f = Fs(u, e.defaultWidthPercent, e), M = V(f, {
|
|
2207
|
+
targetSelector: `.${de}`
|
|
2208
2208
|
});
|
|
2209
2209
|
f.dataset.lexicalKey = i, f.dataset.assetId = u.dataset.assetId, r.set(i, f), o.set(f, M), t.append(f), w(f, u);
|
|
2210
2210
|
}, b = () => {
|
|
@@ -2219,12 +2219,12 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2219
2219
|
}, v = () => {
|
|
2220
2220
|
s === null && (s = Pe(b));
|
|
2221
2221
|
}, x = (i, u) => {
|
|
2222
|
-
const g = u.dataset.assetId, f =
|
|
2222
|
+
const g = u.dataset.assetId, f = Fn($n(u.dataset.status, {
|
|
2223
2223
|
config: e.mediaControlsConfig,
|
|
2224
2224
|
menuLabels: e.menuLabels
|
|
2225
|
-
})).find((
|
|
2225
|
+
})).find((N) => N.id === i.dataset.menuItemId);
|
|
2226
2226
|
if (!g || !f) return;
|
|
2227
|
-
const M =
|
|
2227
|
+
const M = As(f, g);
|
|
2228
2228
|
M && e.executeCommand(M);
|
|
2229
2229
|
}, m = (i) => {
|
|
2230
2230
|
if (!i) {
|
|
@@ -2239,11 +2239,11 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2239
2239
|
}, p = (i) => {
|
|
2240
2240
|
const u = i.target;
|
|
2241
2241
|
if (!(u instanceof HTMLElement)) return;
|
|
2242
|
-
const g = u.closest(`.${
|
|
2242
|
+
const g = u.closest(`.${de}`);
|
|
2243
2243
|
g && (i.preventDefault(), l = i.pointerType === "mouse" ? null : g);
|
|
2244
2244
|
}, k = (i) => {
|
|
2245
2245
|
if (i.pointerType === "mouse" || !l) return;
|
|
2246
|
-
const u = i.target, g = u instanceof HTMLElement ? u.closest(".bridgerte__media-controls") : null, f = u instanceof HTMLElement ? u.closest(`.${
|
|
2246
|
+
const u = i.target, g = u instanceof HTMLElement ? u.closest(".bridgerte__media-controls") : null, f = u instanceof HTMLElement ? u.closest(`.${de}`) : null;
|
|
2247
2247
|
f === l && g && (i.preventDefault(), i.stopPropagation(), x(f, g), d = !0), l = null;
|
|
2248
2248
|
}, _ = () => {
|
|
2249
2249
|
l = null;
|
|
@@ -2254,10 +2254,10 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2254
2254
|
}
|
|
2255
2255
|
const u = i.target;
|
|
2256
2256
|
if (!(u instanceof HTMLElement)) return;
|
|
2257
|
-
const g = u.closest(`.${
|
|
2257
|
+
const g = u.closest(`.${de}`), f = u.closest(".bridgerte__media-controls");
|
|
2258
2258
|
!g || !f || (i.preventDefault(), i.stopPropagation(), x(g, f));
|
|
2259
|
-
},
|
|
2260
|
-
|
|
2259
|
+
}, R = e.editor.registerMutationListener(
|
|
2260
|
+
le,
|
|
2261
2261
|
(i) => {
|
|
2262
2262
|
i.forEach((u, g) => {
|
|
2263
2263
|
if (u === "destroyed") {
|
|
@@ -2267,36 +2267,36 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2267
2267
|
T(g);
|
|
2268
2268
|
});
|
|
2269
2269
|
}
|
|
2270
|
-
), L = e.editor.registerUpdateListener(v), C =
|
|
2270
|
+
), L = e.editor.registerUpdateListener(v), C = On({
|
|
2271
2271
|
root: e.root,
|
|
2272
2272
|
content: n,
|
|
2273
|
-
getBlockFromTarget:
|
|
2273
|
+
getBlockFromTarget: Os,
|
|
2274
2274
|
activateBlock: m,
|
|
2275
2275
|
clearBlock: () => m(null)
|
|
2276
2276
|
});
|
|
2277
2277
|
return t.className = "bridgerte__media-controls-layer", e.root.append(t), t.addEventListener("pointerdown", p), t.addEventListener("pointerup", k), t.addEventListener("pointercancel", _), t.addEventListener("click", P), n.addEventListener("scroll", v, { passive: !0 }), window.addEventListener("resize", v), {
|
|
2278
2278
|
destroy() {
|
|
2279
|
-
|
|
2279
|
+
R(), L(), s !== null && (st(s), s = null), t.removeEventListener("pointerdown", p), t.removeEventListener("pointerup", k), t.removeEventListener("pointercancel", _), t.removeEventListener("click", P), C.destroy(), n.removeEventListener("scroll", v), window.removeEventListener("resize", v), r.forEach((i) => {
|
|
2280
2280
|
var u;
|
|
2281
2281
|
(u = o.get(i)) == null || u(), i.remove();
|
|
2282
2282
|
}), r.clear(), o.clear(), a.clear(), t.remove();
|
|
2283
2283
|
}
|
|
2284
2284
|
};
|
|
2285
|
-
},
|
|
2285
|
+
}, Ws = ["width", "height"], q = (e, t) => {
|
|
2286
2286
|
var r;
|
|
2287
2287
|
const n = (r = e[t]) == null ? void 0 : r.trim();
|
|
2288
2288
|
return n || void 0;
|
|
2289
2289
|
}, Ye = (e, t) => {
|
|
2290
2290
|
const n = Number.parseInt(e[t] ?? "", 10);
|
|
2291
2291
|
return Number.isFinite(n) && n > 0 ? n : void 0;
|
|
2292
|
-
}, At = (e, t) =>
|
|
2292
|
+
}, At = (e, t) => Ws.reduce((n, r) => {
|
|
2293
2293
|
const o = Ye(t, r);
|
|
2294
2294
|
return o === void 0 ? n : { ...n, [r]: o };
|
|
2295
|
-
}, e),
|
|
2295
|
+
}, e), Vs = (e, t) => {
|
|
2296
2296
|
if (e.type === "format.color" || e.type === "format.backgroundColor" || e.type === "format.fontSize" || e.type === "format.fontFamily" || e.type === "format.lineHeight")
|
|
2297
2297
|
return t.value !== void 0 ? { ...e, value: t.value } : e;
|
|
2298
2298
|
if (e.type === "link.set") {
|
|
2299
|
-
const n =
|
|
2299
|
+
const n = q(t, "href"), r = q(t, "text");
|
|
2300
2300
|
return n ? { ...e, href: n, text: r } : null;
|
|
2301
2301
|
}
|
|
2302
2302
|
if (e.type === "block.code")
|
|
@@ -2308,25 +2308,25 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2308
2308
|
return n && r ? { type: "table.insert", rows: n, cols: r } : null;
|
|
2309
2309
|
}
|
|
2310
2310
|
if (e.type === "media.insertImage") {
|
|
2311
|
-
const n =
|
|
2311
|
+
const n = q(t, "url");
|
|
2312
2312
|
return n ? At({
|
|
2313
2313
|
...e,
|
|
2314
2314
|
url: n,
|
|
2315
|
-
alt:
|
|
2316
|
-
title:
|
|
2315
|
+
alt: q(t, "alt"),
|
|
2316
|
+
title: q(t, "title")
|
|
2317
2317
|
}, t) : null;
|
|
2318
2318
|
}
|
|
2319
2319
|
if (e.type === "media.insertVideo") {
|
|
2320
|
-
const n =
|
|
2320
|
+
const n = q(t, "url");
|
|
2321
2321
|
return n ? At({
|
|
2322
2322
|
...e,
|
|
2323
2323
|
url: n,
|
|
2324
|
-
poster:
|
|
2325
|
-
title:
|
|
2324
|
+
poster: q(t, "poster"),
|
|
2325
|
+
title: q(t, "title")
|
|
2326
2326
|
}, t) : null;
|
|
2327
2327
|
}
|
|
2328
2328
|
return e;
|
|
2329
|
-
},
|
|
2329
|
+
}, ee = (e) => Math.min(Math.max(Math.round(e), 0), 255), Je = ({ r: e, g: t, b: n }) => `#${[e, t, n].map((r) => ee(r).toString(16).padStart(2, "0")).join("")}`, zn = (e) => {
|
|
2330
2330
|
const n = e.trim().match(/^#([0-9a-f]{6})$/i);
|
|
2331
2331
|
if (!n) return null;
|
|
2332
2332
|
const r = n[1] ?? "";
|
|
@@ -2335,18 +2335,18 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2335
2335
|
g: Number.parseInt(r.slice(2, 4), 16),
|
|
2336
2336
|
b: Number.parseInt(r.slice(4, 6), 16)
|
|
2337
2337
|
};
|
|
2338
|
-
},
|
|
2338
|
+
}, Us = (e) => {
|
|
2339
2339
|
const t = e.trim().match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i);
|
|
2340
2340
|
return t ? {
|
|
2341
|
-
r:
|
|
2342
|
-
g:
|
|
2343
|
-
b:
|
|
2341
|
+
r: ee(Number(t[1])),
|
|
2342
|
+
g: ee(Number(t[2])),
|
|
2343
|
+
b: ee(Number(t[3]))
|
|
2344
2344
|
} : null;
|
|
2345
2345
|
}, ze = (e) => {
|
|
2346
|
-
const t =
|
|
2346
|
+
const t = zn(e) ?? Us(e);
|
|
2347
2347
|
return t ? Je(t) : null;
|
|
2348
|
-
},
|
|
2349
|
-
const r =
|
|
2348
|
+
}, Wn = (e) => Math.min(Math.max(e, 0), 1), js = ({ r: e, g: t, b: n }) => {
|
|
2349
|
+
const r = ee(e) / 255, o = ee(t) / 255, a = ee(n) / 255, s = Math.max(r, o, a), l = Math.min(r, o, a), d = s - l;
|
|
2350
2350
|
let c = 0;
|
|
2351
2351
|
return d !== 0 && (s === r ? c = 60 * ((o - a) / d % 6) : s === o ? c = 60 * ((a - r) / d + 2) : c = 60 * ((r - o) / d + 4)), {
|
|
2352
2352
|
h: c < 0 ? c + 360 : c,
|
|
@@ -2365,8 +2365,8 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2365
2365
|
g: (l + a) * 255,
|
|
2366
2366
|
b: (d + a) * 255
|
|
2367
2367
|
};
|
|
2368
|
-
},
|
|
2369
|
-
const n = e * Math.PI / 180, r =
|
|
2368
|
+
}, Ks = ({ h: e, s: t }) => {
|
|
2369
|
+
const n = e * Math.PI / 180, r = Wn(t) * 50;
|
|
2370
2370
|
return {
|
|
2371
2371
|
x: 50 + Math.cos(n) * r,
|
|
2372
2372
|
y: 50 + Math.sin(n) * r
|
|
@@ -2375,20 +2375,20 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2375
2375
|
const n = t.getBoundingClientRect(), r = n.left + n.width / 2, o = n.top + n.height / 2, a = e.clientX - r, s = e.clientY - o, l = Math.min(Math.sqrt(a * a + s * s), n.width / 2), d = Math.atan2(s, a) * 180 / Math.PI;
|
|
2376
2376
|
return {
|
|
2377
2377
|
h: d < 0 ? d + 360 : d,
|
|
2378
|
-
s:
|
|
2378
|
+
s: Wn(l / (n.width / 2)),
|
|
2379
2379
|
v: 1
|
|
2380
2380
|
};
|
|
2381
|
-
},
|
|
2381
|
+
}, qs = [
|
|
2382
2382
|
"#000000",
|
|
2383
2383
|
"#ffffff"
|
|
2384
|
-
],
|
|
2384
|
+
], Gs = (e) => {
|
|
2385
2385
|
var t;
|
|
2386
|
-
return (t = e.options) != null && t.length ? e.options :
|
|
2387
|
-
},
|
|
2386
|
+
return (t = e.options) != null && t.length ? e.options : qs.map((n) => ({ label: n, value: n }));
|
|
2387
|
+
}, Vn = () => {
|
|
2388
2388
|
const e = document.createElement("section");
|
|
2389
2389
|
return e.className = "bridgerte__payload-panel-field", e;
|
|
2390
|
-
},
|
|
2391
|
-
const r =
|
|
2390
|
+
}, Xs = (e, t, n) => {
|
|
2391
|
+
const r = Vn(), o = document.createElement("div");
|
|
2392
2392
|
return o.className = "bridgerte__payload-panel-option-list", e.options.forEach((a) => {
|
|
2393
2393
|
const s = document.createElement("button");
|
|
2394
2394
|
s.type = "button", s.className = "bridgerte__payload-panel-option", s.textContent = a.label, s.dataset.bridgertePayloadOption = a.value, s.dataset.active = t[e.name] === a.value ? "true" : "false", V(s), s.addEventListener("pointerdown", (l) => {
|
|
@@ -2400,8 +2400,8 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2400
2400
|
});
|
|
2401
2401
|
}), o.append(s);
|
|
2402
2402
|
}), r.append(o), r;
|
|
2403
|
-
},
|
|
2404
|
-
const r =
|
|
2403
|
+
}, Ys = (e, t, n) => {
|
|
2404
|
+
const r = Vn(), o = document.createElement("div"), a = document.createElement("div"), s = document.createElement("span"), l = document.createElement("div"), d = document.createElement("div"), c = Gs(e), h = c.length === 2;
|
|
2405
2405
|
let y = { h: 0, s: 0, v: 1 }, w = null;
|
|
2406
2406
|
const T = (m) => {
|
|
2407
2407
|
const p = ze(m);
|
|
@@ -2409,8 +2409,8 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2409
2409
|
}, b = (m, p = !0) => {
|
|
2410
2410
|
const k = ze(m);
|
|
2411
2411
|
if (!k) return;
|
|
2412
|
-
t[e.name] = k, d.style.background = k, y =
|
|
2413
|
-
const _ =
|
|
2412
|
+
t[e.name] = k, d.style.background = k, y = js(zn(k) ?? { r: 255, g: 255, b: 255 });
|
|
2413
|
+
const _ = Ks(y);
|
|
2414
2414
|
a.dataset.active = p ? "true" : "false", d.dataset.empty = "false", p && (s.style.left = `${_.x}%`, s.style.top = `${_.y}%`);
|
|
2415
2415
|
}, v = () => {
|
|
2416
2416
|
const m = t[e.name];
|
|
@@ -2437,35 +2437,35 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2437
2437
|
});
|
|
2438
2438
|
const x = t[e.name];
|
|
2439
2439
|
return x && b(x, !(h && T(x))), o.append(a, l), r.append(o, d), r;
|
|
2440
|
-
},
|
|
2440
|
+
}, Js = (e, t, n) => {
|
|
2441
2441
|
const r = document.createElement("label"), o = document.createElement("input");
|
|
2442
2442
|
return r.className = "bridgerte__payload-panel-text-field", r.textContent = e.label, o.type = e.name === "href" || e.name === "url" ? "url" : "text", o.className = "bridgerte__payload-panel-text-input", o.value = t[e.name] ?? "", o.placeholder = e.placeholder ?? "", o.spellcheck = !1, o.addEventListener("input", () => {
|
|
2443
2443
|
t[e.name] = o.value;
|
|
2444
2444
|
}), o.addEventListener("keydown", (a) => {
|
|
2445
2445
|
a.key === "Enter" && (a.preventDefault(), n(t));
|
|
2446
2446
|
}), r.append(o), r;
|
|
2447
|
-
},
|
|
2447
|
+
}, Qs = (e, t, n) => {
|
|
2448
2448
|
const r = document.createElement("label"), o = document.createElement("input");
|
|
2449
2449
|
return r.className = "bridgerte__payload-panel-text-field", r.textContent = e.label, o.type = "number", o.className = "bridgerte__payload-panel-text-input", o.value = t[e.name] ?? "", o.placeholder = e.placeholder ?? "", e.min !== void 0 && (o.min = String(e.min)), e.max !== void 0 && (o.max = String(e.max)), e.step !== void 0 && (o.step = String(e.step)), o.addEventListener("input", () => {
|
|
2450
2450
|
t[e.name] = o.value;
|
|
2451
2451
|
}), o.addEventListener("keydown", (a) => {
|
|
2452
2452
|
a.key === "Enter" && (a.preventDefault(), n(t));
|
|
2453
2453
|
}), r.append(o), r;
|
|
2454
|
-
},
|
|
2454
|
+
}, Zs = ({
|
|
2455
2455
|
field: e,
|
|
2456
2456
|
values: t,
|
|
2457
2457
|
onSubmit: n
|
|
2458
|
-
}) => e.type === "color" ?
|
|
2458
|
+
}) => e.type === "color" ? Ys(e, t, n) : e.type === "text" ? Js(e, t, n) : e.type === "number" ? Qs(e, t, n) : Xs(e, t, n), ei = (e) => {
|
|
2459
2459
|
var t, n, r;
|
|
2460
2460
|
return e.defaultValue ?? (e.type === "select" ? (t = e.options[0]) == null ? void 0 : t.value : void 0) ?? (e.type === "color" ? (r = (n = e.options) == null ? void 0 : n[0]) == null ? void 0 : r.value : void 0) ?? "";
|
|
2461
|
-
},
|
|
2461
|
+
}, ti = (e, t) => (t == null ? void 0 : t[e.name]) ?? (e.type === "color" ? "" : ei(e)), Ot = (e) => e.some((t) => t.type === "text" || t.type === "number"), ni = (e) => {
|
|
2462
2462
|
const t = e.querySelector(
|
|
2463
2463
|
".bridgerte__payload-panel-text-input"
|
|
2464
2464
|
);
|
|
2465
2465
|
queueMicrotask(() => {
|
|
2466
2466
|
t == null || t.focus(), t == null || t.select();
|
|
2467
2467
|
});
|
|
2468
|
-
},
|
|
2468
|
+
}, ri = (e, t, n) => {
|
|
2469
2469
|
const r = document.createElement("div"), o = document.createElement("span"), a = (n == null ? void 0 : n(e)) ?? null;
|
|
2470
2470
|
if (r.className = "bridgerte__payload-panel-title", o.textContent = e.panel.title, r.append(o), a) {
|
|
2471
2471
|
const s = document.createElement("button");
|
|
@@ -2476,20 +2476,20 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2476
2476
|
}), r.append(s);
|
|
2477
2477
|
}
|
|
2478
2478
|
return r;
|
|
2479
|
-
},
|
|
2479
|
+
}, oi = (e) => (
|
|
2480
2480
|
/*
|
|
2481
2481
|
* 字体类面板只需要紧凑候选列表,颜色面板需要保留一点横向空间给圆盘和黑白按钮。
|
|
2482
2482
|
* 输入型面板保留默认宽度;table-insert 会按 schema 网格列数单独计算。
|
|
2483
2483
|
*/
|
|
2484
2484
|
e === "font-size" || e === "font-family" || e === "line-height" ? "180px" : "220px"
|
|
2485
|
-
),
|
|
2485
|
+
), ai = 3, si = 3, ii = 10, Un = 10, li = 16, ci = 2, di = 24, ui = () => {
|
|
2486
2486
|
var e;
|
|
2487
2487
|
return typeof window < "u" && ((e = window.matchMedia) == null ? void 0 : e.call(window, "(hover: hover) and (pointer: fine)").matches) === !0;
|
|
2488
|
-
},
|
|
2488
|
+
}, ue = (e, t) => {
|
|
2489
2489
|
const n = Number.parseInt(e ?? "", 10);
|
|
2490
2490
|
return Number.isFinite(n) ? Math.min(Math.max(n, t.min), t.max) : t.defaultValue;
|
|
2491
|
-
},
|
|
2492
|
-
const o = e.find((h) =>
|
|
2491
|
+
}, mi = (e, t) => e.type === "number" && e.name === t, Ht = (e, t) => typeof e == "number" && Number.isFinite(e) && e > 0 ? Math.floor(e) : t, $t = (e, t, n, r) => {
|
|
2492
|
+
const o = e.find((h) => mi(h, t)), a = Ht(o == null ? void 0 : o.min, 1), s = Ht(o == null ? void 0 : o.max, n), l = Math.max(a, s), d = Math.min(Math.max(r, a), l), c = ue(o == null ? void 0 : o.defaultValue, {
|
|
2493
2493
|
min: a,
|
|
2494
2494
|
max: l,
|
|
2495
2495
|
defaultValue: d
|
|
@@ -2499,28 +2499,28 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2499
2499
|
max: l,
|
|
2500
2500
|
defaultValue: c
|
|
2501
2501
|
};
|
|
2502
|
-
},
|
|
2502
|
+
}, jn = (e) => ({
|
|
2503
2503
|
rows: $t(
|
|
2504
2504
|
e,
|
|
2505
2505
|
"rows",
|
|
2506
2506
|
Qt,
|
|
2507
|
-
|
|
2507
|
+
ai
|
|
2508
2508
|
),
|
|
2509
2509
|
cols: $t(
|
|
2510
2510
|
e,
|
|
2511
2511
|
"cols",
|
|
2512
2512
|
Zt,
|
|
2513
|
-
|
|
2513
|
+
si
|
|
2514
2514
|
)
|
|
2515
|
-
}),
|
|
2516
|
-
const t = Math.min(e.cols.max,
|
|
2517
|
-
return `${t *
|
|
2518
|
-
},
|
|
2515
|
+
}), gi = (e) => {
|
|
2516
|
+
const t = Math.min(e.cols.max, Un);
|
|
2517
|
+
return `${t * li + Math.max(t - 1, 0) * ci + di}px`;
|
|
2518
|
+
}, hi = ({
|
|
2519
2519
|
fields: e,
|
|
2520
2520
|
values: t,
|
|
2521
2521
|
onSubmit: n
|
|
2522
2522
|
}) => {
|
|
2523
|
-
const r =
|
|
2523
|
+
const r = jn(e), o = document.createElement("section"), a = document.createElement("div"), s = document.createElement("div"), l = [], d = ui(), c = Math.min(r.rows.max, ii), h = Math.min(r.cols.max, Un), y = {
|
|
2524
2524
|
...r.rows,
|
|
2525
2525
|
max: c,
|
|
2526
2526
|
defaultValue: Math.min(r.rows.defaultValue, c)
|
|
@@ -2529,10 +2529,10 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2529
2529
|
max: h,
|
|
2530
2530
|
defaultValue: Math.min(r.cols.defaultValue, h)
|
|
2531
2531
|
};
|
|
2532
|
-
let T =
|
|
2532
|
+
let T = ue(
|
|
2533
2533
|
t.rows,
|
|
2534
2534
|
y
|
|
2535
|
-
), b =
|
|
2535
|
+
), b = ue(
|
|
2536
2536
|
t.cols,
|
|
2537
2537
|
w
|
|
2538
2538
|
), v = null;
|
|
@@ -2546,10 +2546,10 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2546
2546
|
return ((C = document.elementFromPoint(L.clientX, L.clientY)) == null ? void 0 : C.closest(".bridgerte__payload-panel-table-cell")) ?? null;
|
|
2547
2547
|
}, p = (L) => {
|
|
2548
2548
|
if (!L) return;
|
|
2549
|
-
const C =
|
|
2549
|
+
const C = ue(
|
|
2550
2550
|
L.dataset.rows,
|
|
2551
2551
|
y
|
|
2552
|
-
), i =
|
|
2552
|
+
), i = ue(
|
|
2553
2553
|
L.dataset.cols,
|
|
2554
2554
|
w
|
|
2555
2555
|
);
|
|
@@ -2564,7 +2564,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2564
2564
|
v = null;
|
|
2565
2565
|
}, P = () => {
|
|
2566
2566
|
window.setTimeout(_, 0);
|
|
2567
|
-
},
|
|
2567
|
+
}, R = (L, C) => {
|
|
2568
2568
|
if (L.detail > 0 && v !== C) {
|
|
2569
2569
|
L.preventDefault(), L.stopPropagation();
|
|
2570
2570
|
return;
|
|
@@ -2577,7 +2577,7 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2577
2577
|
i.type = "button", i.className = "bridgerte__payload-panel-table-cell", i.dataset.rows = String(L), i.dataset.cols = String(C), i.setAttribute("aria-label", `插入 ${L} 行 ${C} 列表格`), V(i), i.addEventListener("pointerdown", (u) => {
|
|
2578
2578
|
v = i, p(i), u.preventDefault();
|
|
2579
2579
|
}), i.addEventListener("pointerup", P), i.addEventListener("pointercancel", _), i.addEventListener("click", (u) => {
|
|
2580
|
-
|
|
2580
|
+
R(u, i);
|
|
2581
2581
|
}), d && i.addEventListener("pointerenter", () => {
|
|
2582
2582
|
p(i);
|
|
2583
2583
|
}), l.push(i), a.append(i);
|
|
@@ -2588,18 +2588,18 @@ const bs = () => (Rt += 1, `${fs}-${Rt}`), ys = (e, t, n) => {
|
|
|
2588
2588
|
), s.className = "bridgerte__payload-panel-table-status", s.setAttribute("aria-live", "polite"), a.addEventListener("pointermove", (L) => {
|
|
2589
2589
|
d || p(m(L));
|
|
2590
2590
|
}), x(T, b), o.append(a, s), o;
|
|
2591
|
-
},
|
|
2591
|
+
}, pi = "bridgerte-payload-panel";
|
|
2592
2592
|
let Ft = 0;
|
|
2593
|
-
const
|
|
2593
|
+
const fi = () => (Ft += 1, `${pi}-${Ft}`), Ee = (e) => e.panel.id === "table-insert", bi = (e, t) => {
|
|
2594
2594
|
const n = document.createElement("button");
|
|
2595
2595
|
return n.type = "button", n.className = "bridgerte__payload-panel-submit", n.textContent = "应用", V(n), n.addEventListener("pointerdown", (r) => {
|
|
2596
2596
|
r.preventDefault();
|
|
2597
2597
|
}), n.addEventListener("click", () => {
|
|
2598
2598
|
t(e);
|
|
2599
2599
|
}), n;
|
|
2600
|
-
},
|
|
2600
|
+
}, yi = (e) => {
|
|
2601
2601
|
let t = null, n = {};
|
|
2602
|
-
const r =
|
|
2602
|
+
const r = Dn({
|
|
2603
2603
|
root: e.editorRoot,
|
|
2604
2604
|
className: "bridgerte__payload-panel",
|
|
2605
2605
|
onBackdropClick: () => {
|
|
@@ -2612,7 +2612,7 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2612
2612
|
const a = (c) => {
|
|
2613
2613
|
var y;
|
|
2614
2614
|
if (!t || t.readonly || e.isReadonly()) return;
|
|
2615
|
-
const h =
|
|
2615
|
+
const h = Vs(t.command, c);
|
|
2616
2616
|
h && ((y = e.restoreEditorFocus) == null || y.call(e, () => {
|
|
2617
2617
|
o(), e.isReadonly() || e.executeCommand(h);
|
|
2618
2618
|
}));
|
|
@@ -2622,19 +2622,19 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2622
2622
|
o(), e.isReadonly() || e.executeCommand(c);
|
|
2623
2623
|
});
|
|
2624
2624
|
}, l = (c) => {
|
|
2625
|
-
n = c.panel.fields.reduce((y, w) => (y[w.name] =
|
|
2626
|
-
const h = Ee(c) ?
|
|
2627
|
-
r.element.style.width = `min(${h}, calc(100vw - 24px))`, r.content.append(
|
|
2625
|
+
n = c.panel.fields.reduce((y, w) => (y[w.name] = ti(w, c.currentValues), y), {});
|
|
2626
|
+
const h = Ee(c) ? gi(jn(c.panel.fields)) : oi(c.panel.id);
|
|
2627
|
+
r.element.style.width = `min(${h}, calc(100vw - 24px))`, r.content.append(ri(c, s, e.getClearCommand)), Ee(c) ? r.content.append(hi({
|
|
2628
2628
|
fields: c.panel.fields,
|
|
2629
2629
|
values: n,
|
|
2630
2630
|
onSubmit: a
|
|
2631
2631
|
})) : c.panel.fields.forEach((y) => {
|
|
2632
|
-
r.content.append(
|
|
2632
|
+
r.content.append(Zs({
|
|
2633
2633
|
field: y,
|
|
2634
2634
|
values: n,
|
|
2635
2635
|
onSubmit: a
|
|
2636
2636
|
}));
|
|
2637
|
-
}), !Ee(c) && Ot(c.panel.fields) && r.content.append(
|
|
2637
|
+
}), !Ee(c) && Ot(c.panel.fields) && r.content.append(bi(n, a)), r.open(c.anchorRect), !Ee(c) && Ot(c.panel.fields) && ni(r.content);
|
|
2638
2638
|
};
|
|
2639
2639
|
return {
|
|
2640
2640
|
open: (c) => {
|
|
@@ -2642,7 +2642,7 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2642
2642
|
o();
|
|
2643
2643
|
const h = {
|
|
2644
2644
|
...c,
|
|
2645
|
-
id:
|
|
2645
|
+
id: fi(),
|
|
2646
2646
|
readonly: e.isReadonly(),
|
|
2647
2647
|
submit: a,
|
|
2648
2648
|
cancel: o
|
|
@@ -2660,46 +2660,46 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2660
2660
|
o(), r.destroy();
|
|
2661
2661
|
}
|
|
2662
2662
|
};
|
|
2663
|
-
},
|
|
2663
|
+
}, me = "bridgerte__table-controls-button", vi = [
|
|
2664
2664
|
"table-insert-row-after",
|
|
2665
2665
|
"table-delete-row",
|
|
2666
2666
|
"table-insert-column-after",
|
|
2667
2667
|
"table-delete-column",
|
|
2668
2668
|
"table-delete"
|
|
2669
|
-
],
|
|
2669
|
+
], wi = () => {
|
|
2670
2670
|
const e = new Map(Ae.map((t) => [t.id, t]));
|
|
2671
|
-
return
|
|
2672
|
-
},
|
|
2671
|
+
return vi.map((t) => wo.find((n) => n.id === t) ?? e.get(t)).filter((t) => t !== void 0);
|
|
2672
|
+
}, Kn = wi(), Ci = new Map(
|
|
2673
2673
|
/*
|
|
2674
2674
|
* Controls 按钮用 MenuItem.id 查完整 command,同类命令的不同 payload 不能用 command.type 合并。
|
|
2675
2675
|
* 后续加入插入前/后、合并/拆分等表格菜单时,只要 id 稳定,就不会互相覆盖。
|
|
2676
2676
|
*/
|
|
2677
|
-
|
|
2678
|
-
),
|
|
2677
|
+
Kn.map((e) => [e.id, e])
|
|
2678
|
+
), _i = (e) => e.matches(".bridgerte__table") ? e : e.querySelector(".bridgerte__table") ?? e, ki = (e, t) => e.classList.contains("bridgerte__table-wrapper") ? e : t.parentElement instanceof HTMLElement ? t.parentElement : t, Ei = (e) => e.querySelector(".bridgerte__content") ?? e, xi = (e) => e instanceof Element ? e.closest(".bridgerte__table-wrapper") : null, Mi = (e) => {
|
|
2679
2679
|
const t = e.getFirstChild();
|
|
2680
|
-
if (!
|
|
2680
|
+
if (!to(t)) return null;
|
|
2681
2681
|
const n = t.getFirstChild();
|
|
2682
|
-
return
|
|
2683
|
-
},
|
|
2682
|
+
return no(n) ? n : null;
|
|
2683
|
+
}, Ti = (e) => {
|
|
2684
2684
|
const t = document.createElement("button");
|
|
2685
|
-
return t.type = "button", t.className =
|
|
2686
|
-
},
|
|
2685
|
+
return t.type = "button", t.className = me, t.textContent = e.label, t.dataset.menuItemId = e.id, t.setAttribute("aria-label", e.label), t;
|
|
2686
|
+
}, Li = () => {
|
|
2687
2687
|
const e = document.createElement("div");
|
|
2688
|
-
return e.className = "bridgerte__table-controls", e.contentEditable = "false", e.setAttribute("aria-label", "表格操作"),
|
|
2689
|
-
e.append(
|
|
2688
|
+
return e.className = "bridgerte__table-controls", e.contentEditable = "false", e.setAttribute("aria-label", "表格操作"), Kn.forEach((t) => {
|
|
2689
|
+
e.append(Ti(t));
|
|
2690
2690
|
}), e;
|
|
2691
|
-
},
|
|
2692
|
-
const t = document.createElement("div"), n =
|
|
2691
|
+
}, Si = (e) => {
|
|
2692
|
+
const t = document.createElement("div"), n = Ei(e.root), r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
|
|
2693
2693
|
let s = null, l = null, d = !1, c = null;
|
|
2694
2694
|
const h = (g, f) => {
|
|
2695
|
-
const M = e.root.getBoundingClientRect(),
|
|
2695
|
+
const M = e.root.getBoundingClientRect(), N = f.getBoundingClientRect(), A = N.bottom < M.top || N.top > M.bottom, O = Math.max(
|
|
2696
2696
|
8,
|
|
2697
2697
|
M.width - g.offsetWidth - 8
|
|
2698
2698
|
), U = Math.min(
|
|
2699
|
-
Math.max(
|
|
2699
|
+
Math.max(N.left - M.left + 8, 8),
|
|
2700
2700
|
O
|
|
2701
|
-
),
|
|
2702
|
-
g.hidden = A, g.style.transform = `translate(${U}px, ${
|
|
2701
|
+
), S = Math.max(8, N.top - M.top - g.offsetHeight - 8);
|
|
2702
|
+
g.hidden = A, g.style.transform = `translate(${U}px, ${S}px)`;
|
|
2703
2703
|
}, y = (g) => c === g, w = (g) => {
|
|
2704
2704
|
const f = e.editor.getElementByKey(g);
|
|
2705
2705
|
if (!f) {
|
|
@@ -2707,21 +2707,21 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2707
2707
|
return;
|
|
2708
2708
|
}
|
|
2709
2709
|
f.dataset.lexicalKey = g;
|
|
2710
|
-
const M =
|
|
2711
|
-
a.set(
|
|
2710
|
+
const M = _i(f), N = ki(f, M);
|
|
2711
|
+
a.set(N, g);
|
|
2712
2712
|
const A = r.get(g);
|
|
2713
2713
|
if (!y(g)) {
|
|
2714
2714
|
T(g);
|
|
2715
2715
|
return;
|
|
2716
2716
|
}
|
|
2717
2717
|
if (A) {
|
|
2718
|
-
h(A,
|
|
2718
|
+
h(A, N);
|
|
2719
2719
|
return;
|
|
2720
2720
|
}
|
|
2721
|
-
const O =
|
|
2722
|
-
targetSelector: `.${
|
|
2721
|
+
const O = Li(), U = V(O, {
|
|
2722
|
+
targetSelector: `.${me}`
|
|
2723
2723
|
});
|
|
2724
|
-
O.dataset.lexicalKey = g, r.set(g, O), o.set(O, U), t.append(O), h(O,
|
|
2724
|
+
O.dataset.lexicalKey = g, r.set(g, O), o.set(O, U), t.append(O), h(O, N);
|
|
2725
2725
|
}, T = (g) => {
|
|
2726
2726
|
var M;
|
|
2727
2727
|
const f = r.get(g);
|
|
@@ -2741,17 +2741,17 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2741
2741
|
e.editor.update(() => {
|
|
2742
2742
|
var M;
|
|
2743
2743
|
const f = he(g);
|
|
2744
|
-
f instanceof
|
|
2744
|
+
f instanceof Ke && ((M = Mi(f)) == null || M.selectStart());
|
|
2745
2745
|
}), e.editor.focus();
|
|
2746
2746
|
}, m = (g, f) => {
|
|
2747
2747
|
x(g), e.executeCommand(f);
|
|
2748
2748
|
}, p = (g, f) => {
|
|
2749
|
-
const M = f.dataset.lexicalKey,
|
|
2749
|
+
const M = f.dataset.lexicalKey, N = g.dataset.menuItemId, A = N ? Ci.get(N) : void 0;
|
|
2750
2750
|
!M || !A || m(M, A.command);
|
|
2751
2751
|
}, k = (g) => {
|
|
2752
2752
|
if (!g) {
|
|
2753
|
-
const
|
|
2754
|
-
c = null,
|
|
2753
|
+
const N = c;
|
|
2754
|
+
c = null, N !== null && w(N);
|
|
2755
2755
|
return;
|
|
2756
2756
|
}
|
|
2757
2757
|
const f = g.dataset.lexicalKey ? g.dataset.lexicalKey : a.get(g) ?? null;
|
|
@@ -2761,13 +2761,13 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2761
2761
|
}, _ = (g) => {
|
|
2762
2762
|
const f = g.target;
|
|
2763
2763
|
if (!(f instanceof HTMLElement)) return;
|
|
2764
|
-
const M = f.closest(`.${
|
|
2764
|
+
const M = f.closest(`.${me}`);
|
|
2765
2765
|
M && (g.preventDefault(), l = g.pointerType === "mouse" ? null : M);
|
|
2766
2766
|
}, P = (g) => {
|
|
2767
2767
|
if (g.pointerType === "mouse" || !l) return;
|
|
2768
|
-
const f = g.target, M = f instanceof HTMLElement ? f.closest(".bridgerte__table-controls") : null,
|
|
2769
|
-
|
|
2770
|
-
},
|
|
2768
|
+
const f = g.target, M = f instanceof HTMLElement ? f.closest(".bridgerte__table-controls") : null, N = f instanceof HTMLElement ? f.closest(`.${me}`) : null;
|
|
2769
|
+
N === l && M && (g.preventDefault(), g.stopPropagation(), p(N, M), d = !0), l = null;
|
|
2770
|
+
}, R = () => {
|
|
2771
2771
|
l = null;
|
|
2772
2772
|
}, L = (g) => {
|
|
2773
2773
|
if (d) {
|
|
@@ -2776,10 +2776,10 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2776
2776
|
}
|
|
2777
2777
|
const f = g.target;
|
|
2778
2778
|
if (!(f instanceof HTMLElement)) return;
|
|
2779
|
-
const M = f.closest(`.${
|
|
2780
|
-
!M || !
|
|
2779
|
+
const M = f.closest(`.${me}`), N = f.closest(".bridgerte__table-controls");
|
|
2780
|
+
!M || !N || (g.preventDefault(), g.stopPropagation(), p(M, N));
|
|
2781
2781
|
}, C = e.editor.registerMutationListener(
|
|
2782
|
-
|
|
2782
|
+
Ke,
|
|
2783
2783
|
(g) => {
|
|
2784
2784
|
g.forEach((f, M) => {
|
|
2785
2785
|
if (f === "destroyed") {
|
|
@@ -2789,41 +2789,41 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2789
2789
|
w(M);
|
|
2790
2790
|
});
|
|
2791
2791
|
}
|
|
2792
|
-
), i = e.editor.registerUpdateListener(v), u =
|
|
2792
|
+
), i = e.editor.registerUpdateListener(v), u = On({
|
|
2793
2793
|
root: e.root,
|
|
2794
2794
|
content: n,
|
|
2795
|
-
getBlockFromTarget:
|
|
2795
|
+
getBlockFromTarget: xi,
|
|
2796
2796
|
activateBlock: k,
|
|
2797
2797
|
clearBlock: () => k(null)
|
|
2798
2798
|
});
|
|
2799
|
-
return t.className = "bridgerte__table-controls-layer", e.root.append(t), t.addEventListener("pointerdown", _), t.addEventListener("pointerup", P), t.addEventListener("pointercancel",
|
|
2799
|
+
return t.className = "bridgerte__table-controls-layer", e.root.append(t), t.addEventListener("pointerdown", _), t.addEventListener("pointerup", P), t.addEventListener("pointercancel", R), t.addEventListener("click", L), n.addEventListener("scroll", v, { passive: !0 }), window.addEventListener("resize", v), {
|
|
2800
2800
|
destroy() {
|
|
2801
|
-
C(), i(), s !== null && (st(s), s = null), t.removeEventListener("pointerdown", _), t.removeEventListener("pointerup", P), t.removeEventListener("pointercancel",
|
|
2801
|
+
C(), i(), s !== null && (st(s), s = null), t.removeEventListener("pointerdown", _), t.removeEventListener("pointerup", P), t.removeEventListener("pointercancel", R), t.removeEventListener("click", L), u.destroy(), n.removeEventListener("scroll", v), window.removeEventListener("resize", v), r.forEach((g) => {
|
|
2802
2802
|
var f;
|
|
2803
2803
|
(f = o.get(g)) == null || f(), g.remove();
|
|
2804
2804
|
}), r.clear(), o.clear(), a.clear(), t.remove();
|
|
2805
2805
|
}
|
|
2806
2806
|
};
|
|
2807
|
-
},
|
|
2808
|
-
const t =
|
|
2807
|
+
}, Ni = (e) => {
|
|
2808
|
+
const t = yi({
|
|
2809
2809
|
editorRoot: e.editorRoot,
|
|
2810
2810
|
isReadonly: e.isReadonly,
|
|
2811
2811
|
restoreEditorFocus: e.restoreEditorFocus,
|
|
2812
2812
|
executeCommand: e.executeCommand,
|
|
2813
2813
|
getClearCommand: e.getClearCommand,
|
|
2814
2814
|
onRequest: e.onRequest
|
|
2815
|
-
}), n =
|
|
2815
|
+
}), n = ks({
|
|
2816
2816
|
editor: e.lexicalEditor,
|
|
2817
2817
|
root: e.editorRoot,
|
|
2818
2818
|
isReadonly: e.isReadonly,
|
|
2819
2819
|
languagePanel: e.codeBlockLanguagePanel,
|
|
2820
2820
|
payloadPanelConfig: e.payloadPanelConfig,
|
|
2821
2821
|
onRequest: e.onRequest
|
|
2822
|
-
}), r =
|
|
2822
|
+
}), r = Si({
|
|
2823
2823
|
editor: e.lexicalEditor,
|
|
2824
2824
|
root: e.editorRoot,
|
|
2825
2825
|
executeCommand: e.executeCommand
|
|
2826
|
-
}), o =
|
|
2826
|
+
}), o = zs({
|
|
2827
2827
|
editor: e.lexicalEditor,
|
|
2828
2828
|
root: e.editorRoot,
|
|
2829
2829
|
defaultWidthPercent: e.defaultMediaWidthPercent,
|
|
@@ -2840,14 +2840,14 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2840
2840
|
t.destroy(), n.destroy(), r.destroy(), o.destroy();
|
|
2841
2841
|
}
|
|
2842
2842
|
};
|
|
2843
|
-
},
|
|
2843
|
+
}, Pi = (e, t) => {
|
|
2844
2844
|
const n = document.createElement("div"), r = document.createElement("div"), o = document.createElement("div");
|
|
2845
2845
|
return e.classList.add("bridgerte"), e.textContent = "", n.className = "bridgerte__editor", r.className = "bridgerte__body", o.className = "bridgerte__content", o.dataset.placeholder = t.placeholder, o.setAttribute("role", "textbox"), o.setAttribute("aria-multiline", "true"), r.append(o), n.append(r), e.append(n), {
|
|
2846
2846
|
rootElement: n,
|
|
2847
2847
|
bodyElement: r,
|
|
2848
2848
|
contentElement: o
|
|
2849
2849
|
};
|
|
2850
|
-
},
|
|
2850
|
+
}, Ii = ({
|
|
2851
2851
|
editor: e
|
|
2852
2852
|
}) => {
|
|
2853
2853
|
let t = null;
|
|
@@ -2855,28 +2855,28 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2855
2855
|
capture() {
|
|
2856
2856
|
e.getEditorState().read(() => {
|
|
2857
2857
|
var n;
|
|
2858
|
-
t = ((n =
|
|
2858
|
+
t = ((n = I()) == null ? void 0 : n.clone()) ?? null;
|
|
2859
2859
|
});
|
|
2860
2860
|
},
|
|
2861
2861
|
restore() {
|
|
2862
2862
|
t && e.update(() => {
|
|
2863
|
-
|
|
2863
|
+
vr((t == null ? void 0 : t.clone()) ?? null);
|
|
2864
2864
|
});
|
|
2865
2865
|
},
|
|
2866
2866
|
clear() {
|
|
2867
2867
|
t = null;
|
|
2868
2868
|
}
|
|
2869
2869
|
};
|
|
2870
|
-
},
|
|
2870
|
+
}, Ri = /((https?:\/\/|www\.)[^\s<>()]+[^\s<>().,;:!?])/i, Ai = /([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})/i, Bi = {
|
|
2871
2871
|
changeHandlers: [],
|
|
2872
2872
|
excludeParents: [],
|
|
2873
2873
|
matchers: [
|
|
2874
|
-
ht(
|
|
2875
|
-
ht(
|
|
2874
|
+
ht(Ri, (e) => e.startsWith("http://") || e.startsWith("https://") ? e : `https://${e}`),
|
|
2875
|
+
ht(Ai, (e) => `mailto:${e}`)
|
|
2876
2876
|
]
|
|
2877
|
-
},
|
|
2877
|
+
}, Di = ({
|
|
2878
2878
|
editor: e
|
|
2879
|
-
}) =>
|
|
2879
|
+
}) => co(e, Bi), Oi = [
|
|
2880
2880
|
".bridgerte__code-header",
|
|
2881
2881
|
".bridgerte__code-block-control",
|
|
2882
2882
|
".bridgerte__code-block-controls-layer",
|
|
@@ -2888,32 +2888,32 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2888
2888
|
".bridgerte__dialog-backdrop",
|
|
2889
2889
|
".bridgerte__dialog",
|
|
2890
2890
|
".bridgerte__payload-panel"
|
|
2891
|
-
].join(","),
|
|
2891
|
+
].join(","), Hi = (e, t) => {
|
|
2892
2892
|
const n = e.anchorNode, r = e.focusNode;
|
|
2893
2893
|
return n !== null && r !== null && t.contains(n) && t.contains(r);
|
|
2894
|
-
},
|
|
2895
|
-
e.querySelectorAll(
|
|
2894
|
+
}, $i = (e) => {
|
|
2895
|
+
e.querySelectorAll(Oi).forEach((t) => {
|
|
2896
2896
|
t.remove();
|
|
2897
2897
|
}), e.querySelectorAll('[contenteditable="false"]').forEach((t) => {
|
|
2898
2898
|
t.classList.contains("bridgerte__media") || t.remove();
|
|
2899
2899
|
});
|
|
2900
|
-
},
|
|
2900
|
+
}, Fi = (e) => {
|
|
2901
2901
|
const t = e.ownerDocument.getSelection();
|
|
2902
|
-
if (!t || t.rangeCount === 0 || !
|
|
2902
|
+
if (!t || t.rangeCount === 0 || !Hi(t, e))
|
|
2903
2903
|
return null;
|
|
2904
2904
|
const n = t.getRangeAt(0).cloneContents();
|
|
2905
|
-
|
|
2905
|
+
$i(n);
|
|
2906
2906
|
const r = e.ownerDocument.createElement("div");
|
|
2907
2907
|
return r.append(n), {
|
|
2908
2908
|
html: r.innerHTML,
|
|
2909
2909
|
text: r.textContent ?? ""
|
|
2910
2910
|
};
|
|
2911
|
-
},
|
|
2911
|
+
}, zi = ({
|
|
2912
2912
|
target: e,
|
|
2913
2913
|
isReadonly: t
|
|
2914
2914
|
}) => {
|
|
2915
2915
|
const n = (o) => {
|
|
2916
|
-
const a =
|
|
2916
|
+
const a = Fi(e);
|
|
2917
2917
|
!a || !o.clipboardData || (o.clipboardData.setData("text/html", a.html), o.clipboardData.setData("text/plain", a.text), o.preventDefault(), o.stopImmediatePropagation());
|
|
2918
2918
|
}, r = (o) => {
|
|
2919
2919
|
if (t()) {
|
|
@@ -2925,7 +2925,7 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2925
2925
|
return e.addEventListener("copy", n, { capture: !0 }), e.addEventListener("cut", r, { capture: !0 }), () => {
|
|
2926
2926
|
e.removeEventListener("copy", n, { capture: !0 }), e.removeEventListener("cut", r, { capture: !0 });
|
|
2927
2927
|
};
|
|
2928
|
-
}, xe = 8,
|
|
2928
|
+
}, xe = 8, Wi = () => {
|
|
2929
2929
|
const e = window.visualViewport;
|
|
2930
2930
|
return {
|
|
2931
2931
|
left: (e == null ? void 0 : e.offsetLeft) ?? 0,
|
|
@@ -2934,23 +2934,23 @@ const gi = () => (Ft += 1, `${mi}-${Ft}`), Ee = (e) => e.panel.id === "table-ins
|
|
|
2934
2934
|
height: (e == null ? void 0 : e.height) ?? window.innerHeight
|
|
2935
2935
|
};
|
|
2936
2936
|
}, zt = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n));
|
|
2937
|
-
function
|
|
2937
|
+
function qn(e, t, n = {}) {
|
|
2938
2938
|
const r = n.placement ?? "bottom-start", o = n.offset ?? 8, a = n.shiftPadding ?? 8, s = n.strategy ?? "absolute";
|
|
2939
2939
|
let l = null, d = !1;
|
|
2940
2940
|
const c = () => {
|
|
2941
2941
|
t.style.position = s, t.style.left = "0px", t.style.top = "0px", t.style.opacity = "0", t.style.pointerEvents = "none";
|
|
2942
2942
|
}, h = (b, v) => {
|
|
2943
|
-
const x =
|
|
2943
|
+
const x = Wi(), m = t.getBoundingClientRect(), p = x.left + xe, k = x.top + xe, _ = x.left + x.width - m.width - xe, P = x.top + x.height - m.height - xe;
|
|
2944
2944
|
t.style.left = `${zt(b, p, _)}px`, t.style.top = `${zt(v, k, P)}px`, t.style.opacity = "", t.style.pointerEvents = "";
|
|
2945
2945
|
}, y = async () => {
|
|
2946
|
-
const b = await
|
|
2946
|
+
const b = await fn(e, t, {
|
|
2947
2947
|
placement: r,
|
|
2948
2948
|
strategy: s,
|
|
2949
|
-
platform:
|
|
2949
|
+
platform: bn,
|
|
2950
2950
|
middleware: [
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2951
|
+
yn(o),
|
|
2952
|
+
vn(),
|
|
2953
|
+
wn({ padding: a })
|
|
2954
2954
|
]
|
|
2955
2955
|
});
|
|
2956
2956
|
h(b.x, b.y);
|
|
@@ -2959,7 +2959,7 @@ function jn(e, t, n = {}) {
|
|
|
2959
2959
|
}, T = (b) => {
|
|
2960
2960
|
if (d !== b) {
|
|
2961
2961
|
if (d = b, w(), d) {
|
|
2962
|
-
c(), t.hidden = !1, l =
|
|
2962
|
+
c(), t.hidden = !1, l = Co(e, t, y), y();
|
|
2963
2963
|
return;
|
|
2964
2964
|
}
|
|
2965
2965
|
t.hidden = !0, t.style.opacity = "", t.style.pointerEvents = "";
|
|
@@ -2973,7 +2973,7 @@ function jn(e, t, n = {}) {
|
|
|
2973
2973
|
}
|
|
2974
2974
|
};
|
|
2975
2975
|
}
|
|
2976
|
-
const
|
|
2976
|
+
const Gn = {
|
|
2977
2977
|
// 居中对齐菜单使用,和 align 命令的 center value 对应。
|
|
2978
2978
|
"align-center": '<svg aria-hidden="true" class="lucide lucide-align-center" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 5H3" /> <path d="M17 12H7" /> <path d="M19 19H5" /> </svg>',
|
|
2979
2979
|
// 两端对齐菜单使用,保留段落排版语义,不和普通居中/左右对齐混用。
|
|
@@ -2988,8 +2988,8 @@ const qn = {
|
|
|
2988
2988
|
bold: '<svg aria-hidden="true" class="lucide lucide-bold" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" /> </svg>',
|
|
2989
2989
|
// 字号菜单使用,表示 format.fontSize,baseline 三角+基线笔画粗细统一视觉一致。
|
|
2990
2990
|
"case-sensitive": '<svg aria-hidden="true" class="lucide lucide-baseline" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 20h16" /> <path d="m6 16 6-12 6 12" /> <path d="M8 12h8" /> </svg>',
|
|
2991
|
-
// 行内代码菜单和 hoverbar 行内代码按钮共用,表示 format.inlineCode
|
|
2992
|
-
code: '<svg aria-hidden="true" class="lucide lucide-code" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="
|
|
2991
|
+
// 行内代码菜单和 hoverbar 行内代码按钮共用,表示 format.inlineCode,code-xml `</>` 比纯尖括号更直观。
|
|
2992
|
+
code: '<svg aria-hidden="true" class="lucide lucide-code-xml" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m18 16 4-4-4-4" /> <path d="m6 8-4 4 4 4" /> <path d="m14.5 4-5 16" /> </svg>',
|
|
2993
2993
|
// 表格删除列入口使用,图形保持列方向,和 rows-minus 区分。
|
|
2994
2994
|
"columns-minus": '<svg aria-hidden="true" class="lucide lucide-between-vertical-end" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="7" height="13" x="3" y="3" rx="1" /> <path d="m9 22 3-3 3 3" /> <rect width="7" height="13" x="14" y="3" rx="1" /> </svg>',
|
|
2995
2995
|
// 表格插入列入口使用,图形保持列方向,和 rows-plus 区分。
|
|
@@ -3066,19 +3066,19 @@ const qn = {
|
|
|
3066
3066
|
"upload-video": '<svg aria-hidden="true" class="lucide lucide-film" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <rect width="18" height="18" x="3" y="3" rx="2" /> <path d="M7 3v18" /> <path d="M3 7.5h4" /> <path d="M3 12h18" /> <path d="M3 16.5h4" /> <path d="M17 3v18" /> <path d="M17 7.5h4" /> <path d="M17 16.5h4" /> </svg>',
|
|
3067
3067
|
// 行高菜单使用,表示 format.lineHeight。
|
|
3068
3068
|
"wrap-text": '<svg aria-hidden="true" class="lucide lucide-wrap-text" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="m16 16-3 3 3 3" /> <path d="M3 12h14.5a1 1 0 0 1 0 7H13" /> <path d="M3 19h6" /> <path d="M3 5h18" /> </svg>'
|
|
3069
|
-
},
|
|
3069
|
+
}, Vi = (e) => {
|
|
3070
3070
|
const t = document.createElement("span");
|
|
3071
3071
|
return t.className = "bridgerte__menu-icon-text", t.textContent = e, t;
|
|
3072
|
-
},
|
|
3072
|
+
}, Xn = (e, t, n) => {
|
|
3073
3073
|
if (t) {
|
|
3074
3074
|
e.innerHTML = t;
|
|
3075
3075
|
return;
|
|
3076
3076
|
}
|
|
3077
|
-
e.append(
|
|
3077
|
+
e.append(Vi(n));
|
|
3078
3078
|
}, Qe = () => {
|
|
3079
3079
|
const e = window.getSelection(), t = e != null && e.rangeCount ? e.getRangeAt(0) : null, n = t == null ? void 0 : t.getBoundingClientRect();
|
|
3080
3080
|
return !n || n.width === 0 && n.height === 0 ? null : n;
|
|
3081
|
-
},
|
|
3081
|
+
}, Ui = 160, ji = {
|
|
3082
3082
|
toolbarKeys: [
|
|
3083
3083
|
"bold",
|
|
3084
3084
|
"italic",
|
|
@@ -3093,16 +3093,16 @@ const qn = {
|
|
|
3093
3093
|
"font-family",
|
|
3094
3094
|
"line-height"
|
|
3095
3095
|
]
|
|
3096
|
-
},
|
|
3097
|
-
const e =
|
|
3096
|
+
}, Ki = () => {
|
|
3097
|
+
const e = I();
|
|
3098
3098
|
return D(e) && !e.isCollapsed();
|
|
3099
|
-
}, Wt = (e, t) => e.target instanceof Node && t.contains(e.target), Vt = (e) => e instanceof Element ? e.closest(".bridgerte__hoverbar-button") : null,
|
|
3099
|
+
}, Wt = (e, t) => e.target instanceof Node && t.contains(e.target), Vt = (e) => e instanceof Element ? e.closest(".bridgerte__hoverbar-button") : null, qi = (e) => e.flatMap((t) => t.type === "button" ? [t.item] : t.type === "group" ? t.items : []), Gi = (e) => {
|
|
3100
3100
|
const t = document.createElement("span");
|
|
3101
3101
|
return t.className = "bridgerte__hoverbar-separator", t.dataset.separatorId = e.key, t.setAttribute("aria-hidden", "true"), t;
|
|
3102
|
-
},
|
|
3103
|
-
const r =
|
|
3104
|
-
return o.type = "button", o.className = "bridgerte__hoverbar-button", o.dataset.hoverbarItemId = e.id, o.dataset.active = String(r.active), o.disabled = r.disabled, o.setAttribute("aria-label", e.label), o.setAttribute("aria-pressed", String(r.active)),
|
|
3105
|
-
},
|
|
3102
|
+
}, Xi = (e, t, n) => {
|
|
3103
|
+
const r = xs(e, t), o = document.createElement("button");
|
|
3104
|
+
return o.type = "button", o.className = "bridgerte__hoverbar-button", o.dataset.hoverbarItemId = e.id, o.dataset.active = String(r.active), o.disabled = r.disabled, o.setAttribute("aria-label", e.label), o.setAttribute("aria-pressed", String(r.active)), Xn(o, n[e.icon] ?? Gn[e.icon], e.label), o;
|
|
3105
|
+
}, Yi = ({
|
|
3106
3106
|
editorRoot: e,
|
|
3107
3107
|
contentElement: t,
|
|
3108
3108
|
editor: n,
|
|
@@ -3119,48 +3119,48 @@ const qn = {
|
|
|
3119
3119
|
const w = it(l ?? Ae, {
|
|
3120
3120
|
menuLabels: c,
|
|
3121
3121
|
payloadPanelConfig: h
|
|
3122
|
-
}), T = nt(d ??
|
|
3122
|
+
}), T = nt(d ?? ji, w), b = qi(T), v = document.createElement("span"), x = document.createElement("div");
|
|
3123
3123
|
let m = null, p = !1, k = null;
|
|
3124
3124
|
const _ = V(x, {
|
|
3125
3125
|
targetSelector: ".bridgerte__hoverbar-button"
|
|
3126
3126
|
});
|
|
3127
|
-
v.className = "bridgerte__hoverbar-anchor", v.setAttribute("aria-hidden", "true"), x.className = "bridgerte__floating-menu bridgerte__hoverbar", x.setAttribute("role", "toolbar"), x.setAttribute("aria-label", "BridgeRTE hoverbar"), e.append(v, x), m =
|
|
3127
|
+
v.className = "bridgerte__hoverbar-anchor", v.setAttribute("aria-hidden", "true"), x.className = "bridgerte__floating-menu bridgerte__hoverbar", x.setAttribute("role", "toolbar"), x.setAttribute("aria-label", "BridgeRTE hoverbar"), e.append(v, x), m = qn(v, x, {
|
|
3128
3128
|
placement: "top",
|
|
3129
3129
|
offset: 8,
|
|
3130
3130
|
strategy: "fixed"
|
|
3131
3131
|
});
|
|
3132
3132
|
const P = () => {
|
|
3133
3133
|
k && (window.clearTimeout(k), k = null);
|
|
3134
|
-
},
|
|
3134
|
+
}, R = () => {
|
|
3135
3135
|
P(), p = !1, x.replaceChildren(), x.dataset.visible = "false", m == null || m.setOpen(!1);
|
|
3136
3136
|
}, L = () => {
|
|
3137
|
-
const
|
|
3138
|
-
v.style.left = `${(
|
|
3137
|
+
const S = Qe(), E = t.getBoundingClientRect();
|
|
3138
|
+
v.style.left = `${(S == null ? void 0 : S.left) ?? E.left}px`, v.style.top = `${(S == null ? void 0 : S.top) ?? E.top}px`, v.style.width = `${(S == null ? void 0 : S.width) || 1}px`, v.style.height = `${(S == null ? void 0 : S.height) || 1}px`;
|
|
3139
3139
|
}, C = () => {
|
|
3140
|
-
const
|
|
3141
|
-
x.replaceChildren(...T.flatMap((E) => E.type === "separator" ? [
|
|
3142
|
-
}, i = () => r() ? !1 : n.getEditorState().read(
|
|
3140
|
+
const S = s();
|
|
3141
|
+
x.replaceChildren(...T.flatMap((E) => E.type === "separator" ? [Gi(E)] : (E.type === "button" ? [E.item] : E.items).map(($) => Xi($, S, y)))), L(), p = !0, x.dataset.visible = "true", m == null || m.setOpen(!0), m == null || m.update();
|
|
3142
|
+
}, i = () => r() ? !1 : n.getEditorState().read(Ki), u = (S = !1) => {
|
|
3143
3143
|
if (P(), !i()) {
|
|
3144
|
-
|
|
3144
|
+
R();
|
|
3145
3145
|
return;
|
|
3146
3146
|
}
|
|
3147
|
-
if (
|
|
3147
|
+
if (S) {
|
|
3148
3148
|
C();
|
|
3149
3149
|
return;
|
|
3150
3150
|
}
|
|
3151
|
-
p &&
|
|
3151
|
+
p && R(), k = window.setTimeout(() => {
|
|
3152
3152
|
k = null, i() && C();
|
|
3153
|
-
},
|
|
3154
|
-
}, g = (
|
|
3155
|
-
const E = b.find((B) => B.id ===
|
|
3156
|
-
if (!(!E ||
|
|
3153
|
+
}, Ui);
|
|
3154
|
+
}, g = (S) => {
|
|
3155
|
+
const E = b.find((B) => B.id === S.dataset.hoverbarItemId);
|
|
3156
|
+
if (!(!E || S.disabled)) {
|
|
3157
3157
|
if (E.payloadPanel) {
|
|
3158
|
-
const B =
|
|
3158
|
+
const B = S.getBoundingClientRect();
|
|
3159
3159
|
a({
|
|
3160
3160
|
menuId: E.id,
|
|
3161
3161
|
command: E.command,
|
|
3162
3162
|
panel: E.payloadPanel,
|
|
3163
|
-
currentValues:
|
|
3163
|
+
currentValues: Es(E, s()),
|
|
3164
3164
|
anchorRect: {
|
|
3165
3165
|
x: B.left,
|
|
3166
3166
|
y: B.top,
|
|
@@ -3172,13 +3172,13 @@ const qn = {
|
|
|
3172
3172
|
}
|
|
3173
3173
|
o(E.command), u(!0);
|
|
3174
3174
|
}
|
|
3175
|
-
}, f = (
|
|
3176
|
-
Vt(
|
|
3177
|
-
}, M = (
|
|
3178
|
-
const E = Vt(
|
|
3179
|
-
E && (
|
|
3180
|
-
},
|
|
3181
|
-
!p || Wt(
|
|
3175
|
+
}, f = (S) => {
|
|
3176
|
+
Vt(S.target) && S.preventDefault();
|
|
3177
|
+
}, M = (S) => {
|
|
3178
|
+
const E = Vt(S.target);
|
|
3179
|
+
E && (S.preventDefault(), g(E));
|
|
3180
|
+
}, N = (S) => {
|
|
3181
|
+
!p || Wt(S, x) || Wt(S, t) || R();
|
|
3182
3182
|
}, A = n.registerCommand(
|
|
3183
3183
|
on,
|
|
3184
3184
|
() => (u(), !1),
|
|
@@ -3187,24 +3187,24 @@ const qn = {
|
|
|
3187
3187
|
u();
|
|
3188
3188
|
}), U = n.registerCommand(
|
|
3189
3189
|
an,
|
|
3190
|
-
(
|
|
3190
|
+
(S) => p ? (S == null || S.preventDefault(), R(), !0) : !1,
|
|
3191
3191
|
j
|
|
3192
3192
|
);
|
|
3193
|
-
return x.addEventListener("pointerdown", f), x.addEventListener("click", M), document.addEventListener("pointerdown",
|
|
3194
|
-
P(), A(), O(), U(), x.removeEventListener("pointerdown", f), x.removeEventListener("click", M), document.removeEventListener("pointerdown",
|
|
3193
|
+
return x.addEventListener("pointerdown", f), x.addEventListener("click", M), document.addEventListener("pointerdown", N, !0), () => {
|
|
3194
|
+
P(), A(), O(), U(), x.removeEventListener("pointerdown", f), x.removeEventListener("click", M), document.removeEventListener("pointerdown", N, !0), _(), m == null || m.destroy(), v.remove(), x.remove();
|
|
3195
3195
|
};
|
|
3196
|
-
},
|
|
3196
|
+
}, Ji = (e) => e.metaKey || e.ctrlKey, Qi = {
|
|
3197
3197
|
b: { type: "format.bold" },
|
|
3198
3198
|
i: { type: "format.italic" },
|
|
3199
3199
|
u: { type: "format.underline" },
|
|
3200
3200
|
"\\": { type: "format.clear" }
|
|
3201
|
-
},
|
|
3201
|
+
}, Zi = {
|
|
3202
3202
|
x: { type: "format.strike" },
|
|
3203
3203
|
l: { type: "align", value: "left" },
|
|
3204
3204
|
e: { type: "align", value: "center" },
|
|
3205
3205
|
r: { type: "align", value: "right" },
|
|
3206
3206
|
j: { type: "align", value: "justify" }
|
|
3207
|
-
},
|
|
3207
|
+
}, el = {
|
|
3208
3208
|
0: { type: "block.paragraph" },
|
|
3209
3209
|
1: { type: "block.heading", level: 1 },
|
|
3210
3210
|
2: { type: "block.heading", level: 2 },
|
|
@@ -3212,30 +3212,30 @@ const qn = {
|
|
|
3212
3212
|
4: { type: "block.heading", level: 4 },
|
|
3213
3213
|
5: { type: "block.heading", level: 5 },
|
|
3214
3214
|
6: { type: "block.heading", level: 6 }
|
|
3215
|
-
},
|
|
3215
|
+
}, tl = (e) => {
|
|
3216
3216
|
const t = e.key.toLowerCase(), n = e.code;
|
|
3217
|
-
if (!e.metaKey && !e.ctrlKey && !e.altKey && !e.shiftKey || !
|
|
3217
|
+
if (!e.metaKey && !e.ctrlKey && !e.altKey && !e.shiftKey || !Ji(e)) return null;
|
|
3218
3218
|
if (e.altKey) {
|
|
3219
3219
|
if (e.shiftKey) return null;
|
|
3220
3220
|
if (t === "c" || n === "KeyC") return { type: "block.code" };
|
|
3221
3221
|
const r = n.startsWith("Digit") ? n.slice(5) : t;
|
|
3222
|
-
return
|
|
3222
|
+
return el[r] ?? null;
|
|
3223
3223
|
}
|
|
3224
|
-
return e.shiftKey ? t === "z" ? { type: "history.redo" } : t === "." || t === ">" || n === "Period" ? { type: "block.quote" } : t === "7" || t === "&" || n === "Digit7" ? { type: "list.ordered" } : t === "8" || t === "*" || n === "Digit8" ? { type: "list.unordered" } : t === "9" || t === "(" || n === "Digit9" ? { type: "list.todo" } : t === "-" || t === "_" || n === "Minus" ? { type: "block.divider" } :
|
|
3225
|
-
},
|
|
3224
|
+
return e.shiftKey ? t === "z" ? { type: "history.redo" } : t === "." || t === ">" || n === "Period" ? { type: "block.quote" } : t === "7" || t === "&" || n === "Digit7" ? { type: "list.ordered" } : t === "8" || t === "*" || n === "Digit8" ? { type: "list.unordered" } : t === "9" || t === "(" || n === "Digit9" ? { type: "list.todo" } : t === "-" || t === "_" || n === "Minus" ? { type: "block.divider" } : Zi[t] ?? null : t === "z" ? { type: "history.undo" } : t === "y" && e.ctrlKey && !e.metaKey ? { type: "history.redo" } : t === "`" || t === "~" || n === "Backquote" ? { type: "format.inlineCode" } : Qi[t] ?? null;
|
|
3225
|
+
}, nl = ({
|
|
3226
3226
|
target: e,
|
|
3227
3227
|
isReadonly: t,
|
|
3228
3228
|
executeCommand: n
|
|
3229
3229
|
}) => {
|
|
3230
3230
|
const r = (o) => {
|
|
3231
3231
|
if (t()) return;
|
|
3232
|
-
const a =
|
|
3232
|
+
const a = tl(o);
|
|
3233
3233
|
a && (o.preventDefault(), n(a));
|
|
3234
3234
|
};
|
|
3235
3235
|
return e.addEventListener("keydown", r), () => {
|
|
3236
3236
|
e.removeEventListener("keydown", r);
|
|
3237
3237
|
};
|
|
3238
|
-
},
|
|
3238
|
+
}, rl = (e, t) => {
|
|
3239
3239
|
const n = t.offsetTop, r = n + t.offsetHeight, o = e.scrollTop, a = o + e.clientHeight;
|
|
3240
3240
|
if (n < o) {
|
|
3241
3241
|
e.scrollTop = n;
|
|
@@ -3250,7 +3250,7 @@ const qn = {
|
|
|
3250
3250
|
if (o) return o;
|
|
3251
3251
|
}
|
|
3252
3252
|
return null;
|
|
3253
|
-
},
|
|
3253
|
+
}, Yn = ({
|
|
3254
3254
|
editorRoot: e,
|
|
3255
3255
|
contentElement: t,
|
|
3256
3256
|
editor: n,
|
|
@@ -3269,7 +3269,7 @@ const qn = {
|
|
|
3269
3269
|
let b = null, v = 0;
|
|
3270
3270
|
const x = V(o, {
|
|
3271
3271
|
targetSelector: s
|
|
3272
|
-
}), m =
|
|
3272
|
+
}), m = qn(a, o, {
|
|
3273
3273
|
placement: "bottom-start",
|
|
3274
3274
|
offset: 2,
|
|
3275
3275
|
strategy: "fixed"
|
|
@@ -3285,8 +3285,8 @@ const qn = {
|
|
|
3285
3285
|
b = null, o.dataset.visible = "false", E && o.replaceChildren(), m.setOpen(!1);
|
|
3286
3286
|
}, P = () => {
|
|
3287
3287
|
const E = o.querySelector(`${s}[data-active="true"]`);
|
|
3288
|
-
E &&
|
|
3289
|
-
},
|
|
3288
|
+
E && rl(o, E);
|
|
3289
|
+
}, R = (E, B) => {
|
|
3290
3290
|
!b || b.requestId !== B.requestId || (_(), T(E, B.trigger));
|
|
3291
3291
|
}, L = () => {
|
|
3292
3292
|
if (!b) {
|
|
@@ -3297,36 +3297,36 @@ const qn = {
|
|
|
3297
3297
|
if ((w == null ? void 0 : w(E, {
|
|
3298
3298
|
anchorRect: B,
|
|
3299
3299
|
close: _,
|
|
3300
|
-
selectItem: (
|
|
3300
|
+
selectItem: (re) => R(re, E)
|
|
3301
3301
|
})) === !0) {
|
|
3302
3302
|
o.replaceChildren(), o.dataset.visible = "false", m.setOpen(!1);
|
|
3303
3303
|
return;
|
|
3304
3304
|
}
|
|
3305
3305
|
if (E.status === "success")
|
|
3306
3306
|
o.replaceChildren(
|
|
3307
|
-
...E.items.map((
|
|
3307
|
+
...E.items.map((re, mt) => h(re, mt, mt === E.activeIndex))
|
|
3308
3308
|
);
|
|
3309
3309
|
else {
|
|
3310
|
-
const
|
|
3310
|
+
const re = y == null ? void 0 : y(
|
|
3311
3311
|
E.status,
|
|
3312
3312
|
E.trigger.query,
|
|
3313
3313
|
E.error
|
|
3314
3314
|
);
|
|
3315
|
-
o.replaceChildren(...
|
|
3315
|
+
o.replaceChildren(...re ? [re] : []);
|
|
3316
3316
|
}
|
|
3317
|
-
const
|
|
3318
|
-
o.dataset.visible = String(
|
|
3317
|
+
const J = o.children.length > 0;
|
|
3318
|
+
o.dataset.visible = String(J), k(), m.setOpen(J), P(), m.update();
|
|
3319
3319
|
}, C = async (E, B) => {
|
|
3320
3320
|
let $;
|
|
3321
3321
|
try {
|
|
3322
3322
|
$ = await Promise.resolve(c(E));
|
|
3323
|
-
} catch (
|
|
3323
|
+
} catch (J) {
|
|
3324
3324
|
(b == null ? void 0 : b.requestId) === B && (b = {
|
|
3325
3325
|
...b,
|
|
3326
3326
|
items: [],
|
|
3327
3327
|
activeIndex: 0,
|
|
3328
3328
|
status: "error",
|
|
3329
|
-
error:
|
|
3329
|
+
error: J
|
|
3330
3330
|
}, L());
|
|
3331
3331
|
return;
|
|
3332
3332
|
}
|
|
@@ -3363,26 +3363,26 @@ const qn = {
|
|
|
3363
3363
|
...b,
|
|
3364
3364
|
activeIndex: (b.activeIndex + E + b.items.length) % b.items.length
|
|
3365
3365
|
}, L(), !0), f = (E) => {
|
|
3366
|
-
const B = E.target, $ = B instanceof HTMLElement ? B.closest(s) : null,
|
|
3367
|
-
!b || b.status !== "success" || Number.isNaN(
|
|
3366
|
+
const B = E.target, $ = B instanceof HTMLElement ? B.closest(s) : null, J = $ != null && $.dataset.index ? Number.parseInt($.dataset.index, 10) : Number.NaN;
|
|
3367
|
+
!b || b.status !== "success" || Number.isNaN(J) || (b = { ...b, activeIndex: J }, E.preventDefault(), u());
|
|
3368
3368
|
}, M = (E) => {
|
|
3369
3369
|
const B = E.target;
|
|
3370
3370
|
B instanceof HTMLElement && B.closest(s) && E.preventDefault();
|
|
3371
|
-
},
|
|
3371
|
+
}, N = n.registerUpdateListener(() => {
|
|
3372
3372
|
i();
|
|
3373
3373
|
}), A = n.registerCommand(
|
|
3374
|
-
|
|
3374
|
+
wr,
|
|
3375
3375
|
(E) => g(1) ? (E == null || E.preventDefault(), !0) : !1,
|
|
3376
3376
|
j
|
|
3377
3377
|
), O = n.registerCommand(
|
|
3378
|
-
|
|
3378
|
+
Cr,
|
|
3379
3379
|
(E) => g(-1) ? (E == null || E.preventDefault(), !0) : !1,
|
|
3380
3380
|
j
|
|
3381
3381
|
), U = n.registerCommand(
|
|
3382
|
-
|
|
3382
|
+
_r,
|
|
3383
3383
|
(E) => u() ? (E == null || E.preventDefault(), !0) : !1,
|
|
3384
3384
|
j
|
|
3385
|
-
),
|
|
3385
|
+
), S = n.registerCommand(
|
|
3386
3386
|
an,
|
|
3387
3387
|
(E) => b ? (E == null || E.preventDefault(), _(), !0) : !1,
|
|
3388
3388
|
j
|
|
@@ -3390,10 +3390,10 @@ const qn = {
|
|
|
3390
3390
|
return o.addEventListener("click", f), o.addEventListener("pointerdown", M), {
|
|
3391
3391
|
close: _,
|
|
3392
3392
|
destroy() {
|
|
3393
|
-
|
|
3393
|
+
N(), A(), O(), U(), S(), o.removeEventListener("click", f), o.removeEventListener("pointerdown", M), x(), m.destroy(), a.remove(), o.remove();
|
|
3394
3394
|
}
|
|
3395
3395
|
};
|
|
3396
|
-
},
|
|
3396
|
+
}, ol = {
|
|
3397
3397
|
labelField: "label",
|
|
3398
3398
|
descriptionField: "description",
|
|
3399
3399
|
avatarField: "avatar",
|
|
@@ -3404,53 +3404,53 @@ const qn = {
|
|
|
3404
3404
|
loadingText: "加载中",
|
|
3405
3405
|
emptyText: "没有匹配的提及",
|
|
3406
3406
|
errorText: "提及加载失败"
|
|
3407
|
-
},
|
|
3408
|
-
...
|
|
3407
|
+
}, al = (e) => ({
|
|
3408
|
+
...ol,
|
|
3409
3409
|
...e
|
|
3410
|
-
}),
|
|
3410
|
+
}), sl = (e, t) => {
|
|
3411
3411
|
var o;
|
|
3412
3412
|
const n = t.slice(5), r = (o = e.data) == null ? void 0 : o[n];
|
|
3413
3413
|
return typeof r == "string" && r ? r : void 0;
|
|
3414
3414
|
}, Me = (e, t) => {
|
|
3415
|
-
if (t.startsWith("data.")) return
|
|
3415
|
+
if (t.startsWith("data.")) return sl(e, t);
|
|
3416
3416
|
const n = t === "id" ? e.id : t === "label" ? e.label : t === "value" ? e.value : t === "avatar" ? e.avatar : e.description;
|
|
3417
3417
|
return typeof n == "string" && n ? n : void 0;
|
|
3418
|
-
},
|
|
3418
|
+
}, il = (e) => e.startsWith("@") ? e : `@${e}`, Jn = (e, t) => {
|
|
3419
3419
|
const n = Me(e, t.labelField) ?? e.label ?? e.value ?? e.id, r = t.showDescription ? Me(e, t.descriptionField) ?? e.description : void 0, o = t.showAvatar ? Me(e, t.avatarField) ?? e.avatar : void 0, a = t.showIcon && !o ? Me(e, t.iconField) : void 0;
|
|
3420
3420
|
return {
|
|
3421
3421
|
item: e,
|
|
3422
|
-
label:
|
|
3422
|
+
label: il(n),
|
|
3423
3423
|
...r ? { description: r } : {},
|
|
3424
3424
|
...o ? { avatar: o } : {},
|
|
3425
3425
|
...a ? { icon: a } : {}
|
|
3426
3426
|
};
|
|
3427
|
-
},
|
|
3427
|
+
}, ll = (e, t) => e.map((n) => Jn(n, t)), Ze = (e) => e instanceof Y && e.getTextContent().startsWith(" "), cl = (e) => {
|
|
3428
3428
|
const n = e.getTextContent().slice(1);
|
|
3429
3429
|
if (!n) {
|
|
3430
3430
|
e.remove();
|
|
3431
3431
|
return;
|
|
3432
3432
|
}
|
|
3433
3433
|
e.setTextContent(n);
|
|
3434
|
-
},
|
|
3434
|
+
}, dl = (e, t) => {
|
|
3435
3435
|
const n = e.getPreviousSibling(), r = e.getNextSibling(), o = Ze(r) ? r.getNextSibling() : r;
|
|
3436
|
-
if (Ze(r) &&
|
|
3436
|
+
if (Ze(r) && cl(r), e.remove(), t) {
|
|
3437
3437
|
n == null || n.selectEnd();
|
|
3438
3438
|
return;
|
|
3439
3439
|
}
|
|
3440
3440
|
o == null || o.selectStart();
|
|
3441
|
-
},
|
|
3442
|
-
const t =
|
|
3441
|
+
}, ul = (e) => {
|
|
3442
|
+
const t = I();
|
|
3443
3443
|
if (!D(t) || !t.isCollapsed()) return null;
|
|
3444
3444
|
const n = t.anchor, r = n.getNode();
|
|
3445
3445
|
if (xt(r)) return r;
|
|
3446
|
-
if (!(r instanceof
|
|
3446
|
+
if (!(r instanceof Y)) return null;
|
|
3447
3447
|
const o = r.getTextContentSize(), a = r.getPreviousSibling(), s = r.getNextSibling(), l = Ze(r) && n.offset === 1, d = e ? n.offset === 0 || l ? a : null : n.offset === o ? s : null;
|
|
3448
3448
|
return xt(d) ? d : null;
|
|
3449
|
-
},
|
|
3449
|
+
}, ml = (e, t, n) => {
|
|
3450
3450
|
const r = (a) => {
|
|
3451
3451
|
if (t()) return !1;
|
|
3452
|
-
const s =
|
|
3453
|
-
return s ? (
|
|
3452
|
+
const s = ul(a);
|
|
3453
|
+
return s ? (dl(s, a), n(), !0) : !1;
|
|
3454
3454
|
}, o = (a, s) => {
|
|
3455
3455
|
const l = r(s);
|
|
3456
3456
|
return l && a.preventDefault(), l;
|
|
@@ -3459,32 +3459,32 @@ const qn = {
|
|
|
3459
3459
|
e.registerCommand(
|
|
3460
3460
|
tn,
|
|
3461
3461
|
(a) => o(a, !0),
|
|
3462
|
-
|
|
3462
|
+
G
|
|
3463
3463
|
),
|
|
3464
3464
|
e.registerCommand(
|
|
3465
3465
|
nn,
|
|
3466
3466
|
(a) => o(a, !1),
|
|
3467
|
-
|
|
3467
|
+
G
|
|
3468
3468
|
),
|
|
3469
3469
|
e.registerCommand(
|
|
3470
3470
|
rn,
|
|
3471
3471
|
(a) => r(a),
|
|
3472
|
-
|
|
3472
|
+
G
|
|
3473
3473
|
)
|
|
3474
3474
|
];
|
|
3475
|
-
},
|
|
3475
|
+
}, gl = /(?:^|\s)@([\p{L}\p{N}_-]*)$/u, Ut = [
|
|
3476
3476
|
{ id: "bridgerte-team", label: "BridgeRTE Team", value: "bridgerte-team" },
|
|
3477
3477
|
{ id: "frontend", label: "Frontend", value: "frontend" },
|
|
3478
3478
|
{ id: "designer", label: "Designer", value: "designer" }
|
|
3479
|
-
],
|
|
3480
|
-
const t =
|
|
3481
|
-
return t ? Ut.filter((n) =>
|
|
3482
|
-
},
|
|
3483
|
-
const e =
|
|
3479
|
+
], hl = (e) => e.trim().toLowerCase(), pl = (e) => [e.label, e.value, e.description].filter(Boolean).join(" ").toLowerCase(), fl = (e) => {
|
|
3480
|
+
const t = hl(e);
|
|
3481
|
+
return t ? Ut.filter((n) => pl(n).includes(t)) : Ut;
|
|
3482
|
+
}, bl = () => {
|
|
3483
|
+
const e = I();
|
|
3484
3484
|
if (!D(e) || !e.isCollapsed()) return null;
|
|
3485
3485
|
const t = e.anchor, n = t.getNode();
|
|
3486
|
-
if (!(n instanceof
|
|
3487
|
-
const o = n.getTextContent().slice(0, t.offset).match(
|
|
3486
|
+
if (!(n instanceof Y)) return null;
|
|
3487
|
+
const o = n.getTextContent().slice(0, t.offset).match(gl);
|
|
3488
3488
|
if (!o) return null;
|
|
3489
3489
|
const a = o[1] ?? "", s = o[0] ?? "", l = s.startsWith("@") ? 0 : 1, d = t.offset - s.length + l;
|
|
3490
3490
|
return {
|
|
@@ -3493,19 +3493,19 @@ const qn = {
|
|
|
3493
3493
|
startOffset: d,
|
|
3494
3494
|
endOffset: t.offset
|
|
3495
3495
|
};
|
|
3496
|
-
},
|
|
3496
|
+
}, yl = () => {
|
|
3497
3497
|
const e = document.createElement("div");
|
|
3498
3498
|
return e.className = "bridgerte__floating-menu bridgerte__mention-menu", e.dataset.visible = "false", e;
|
|
3499
|
-
},
|
|
3499
|
+
}, vl = () => {
|
|
3500
3500
|
const e = document.createElement("span");
|
|
3501
3501
|
return e.className = "bridgerte__mention-anchor", e.setAttribute("aria-hidden", "true"), e;
|
|
3502
|
-
},
|
|
3502
|
+
}, wl = (e, t) => {
|
|
3503
3503
|
var s;
|
|
3504
3504
|
const n = e.getElementByKey(t.nodeKey), r = lt(n, t.startOffset + 1);
|
|
3505
3505
|
if (!(r instanceof Text)) return null;
|
|
3506
3506
|
const o = document.createRange(), a = Math.min(t.startOffset + 1, ((s = r.textContent) == null ? void 0 : s.length) ?? 0);
|
|
3507
3507
|
return a <= t.startOffset ? null : (o.setStart(r, t.startOffset), o.setEnd(r, a), o.getBoundingClientRect());
|
|
3508
|
-
},
|
|
3508
|
+
}, Cl = (e, t, n) => {
|
|
3509
3509
|
const r = document.createElement("button"), o = document.createElement("span");
|
|
3510
3510
|
if (r.type = "button", r.className = "bridgerte__menu-item bridgerte__mention-item", r.dataset.mentionId = e.item.id, r.dataset.index = String(t), r.dataset.active = String(n), e.avatar) {
|
|
3511
3511
|
const a = document.createElement("img");
|
|
@@ -3519,10 +3519,10 @@ const qn = {
|
|
|
3519
3519
|
a.className = "bridgerte__mention-item-description", a.textContent = e.description, r.append(a);
|
|
3520
3520
|
}
|
|
3521
3521
|
return r;
|
|
3522
|
-
},
|
|
3522
|
+
}, _l = (e, t) => {
|
|
3523
3523
|
const n = document.createElement("div");
|
|
3524
3524
|
return n.className = "bridgerte__mention-status", n.dataset.status = e, n.textContent = t, n;
|
|
3525
|
-
},
|
|
3525
|
+
}, kl = (e, t) => {
|
|
3526
3526
|
switch (e) {
|
|
3527
3527
|
case "loading":
|
|
3528
3528
|
return t.loadingText;
|
|
@@ -3531,12 +3531,12 @@ const qn = {
|
|
|
3531
3531
|
case "error":
|
|
3532
3532
|
return t.errorText;
|
|
3533
3533
|
}
|
|
3534
|
-
},
|
|
3534
|
+
}, El = (e) => e ? {
|
|
3535
3535
|
x: e.x,
|
|
3536
3536
|
y: e.y,
|
|
3537
3537
|
width: e.width,
|
|
3538
3538
|
height: e.height
|
|
3539
|
-
} : void 0,
|
|
3539
|
+
} : void 0, xl = ({
|
|
3540
3540
|
editorRoot: e,
|
|
3541
3541
|
contentElement: t,
|
|
3542
3542
|
editor: n,
|
|
@@ -3546,12 +3546,12 @@ const qn = {
|
|
|
3546
3546
|
mentionMenuConfig: s,
|
|
3547
3547
|
onMentionMenuRequest: l
|
|
3548
3548
|
}) => {
|
|
3549
|
-
const d =
|
|
3549
|
+
const d = yl(), c = vl(), h = al(s), y = (b, v) => {
|
|
3550
3550
|
n.update(() => {
|
|
3551
3551
|
const x = he(v.nodeKey);
|
|
3552
|
-
x instanceof
|
|
3552
|
+
x instanceof Y && (x.spliceText(v.startOffset, v.endOffset - v.startOffset, ""), x.select(v.startOffset, v.startOffset));
|
|
3553
3553
|
}), o({ type: "mention.insert", item: b });
|
|
3554
|
-
}, w =
|
|
3554
|
+
}, w = Yn({
|
|
3555
3555
|
editorRoot: e,
|
|
3556
3556
|
contentElement: t,
|
|
3557
3557
|
editor: n,
|
|
@@ -3559,18 +3559,18 @@ const qn = {
|
|
|
3559
3559
|
menu: d,
|
|
3560
3560
|
anchor: c,
|
|
3561
3561
|
itemSelector: ".bridgerte__mention-item",
|
|
3562
|
-
getCurrentTrigger:
|
|
3563
|
-
getTriggerRect: (b) =>
|
|
3562
|
+
getCurrentTrigger: bl,
|
|
3563
|
+
getTriggerRect: (b) => wl(n, b),
|
|
3564
3564
|
resolveItems: async (b) => {
|
|
3565
3565
|
const v = await Promise.resolve(
|
|
3566
|
-
a ? a(b) :
|
|
3566
|
+
a ? a(b) : fl(b)
|
|
3567
3567
|
);
|
|
3568
|
-
return
|
|
3568
|
+
return ll(v, h);
|
|
3569
3569
|
},
|
|
3570
|
-
renderItem:
|
|
3571
|
-
renderStatus: (b) =>
|
|
3570
|
+
renderItem: Cl,
|
|
3571
|
+
renderStatus: (b) => _l(
|
|
3572
3572
|
b,
|
|
3573
|
-
|
|
3573
|
+
kl(b, h)
|
|
3574
3574
|
),
|
|
3575
3575
|
onStateChange: l ? (b, v) => l({
|
|
3576
3576
|
id: `bridgerte-mention-menu-${b.requestId}`,
|
|
@@ -3579,21 +3579,21 @@ const qn = {
|
|
|
3579
3579
|
items: b.items,
|
|
3580
3580
|
config: h,
|
|
3581
3581
|
readonly: r(),
|
|
3582
|
-
anchorRect:
|
|
3582
|
+
anchorRect: El(v.anchorRect),
|
|
3583
3583
|
...b.error ? { error: b.error } : {},
|
|
3584
3584
|
submit: (x) => v.selectItem(
|
|
3585
|
-
|
|
3585
|
+
Jn(x, h)
|
|
3586
3586
|
),
|
|
3587
3587
|
cancel: v.close
|
|
3588
3588
|
}) : void 0,
|
|
3589
3589
|
onSelect: (b, v) => y(b.item, v)
|
|
3590
3590
|
}), T = sn(
|
|
3591
|
-
...
|
|
3591
|
+
...ml(n, r, () => w.close(!1))
|
|
3592
3592
|
);
|
|
3593
3593
|
return () => {
|
|
3594
3594
|
T(), w.destroy();
|
|
3595
3595
|
};
|
|
3596
|
-
},
|
|
3596
|
+
}, Ml = [
|
|
3597
3597
|
"script",
|
|
3598
3598
|
"style",
|
|
3599
3599
|
"iframe",
|
|
@@ -3610,7 +3610,7 @@ const qn = {
|
|
|
3610
3610
|
"button",
|
|
3611
3611
|
"select",
|
|
3612
3612
|
"textarea"
|
|
3613
|
-
].join(","),
|
|
3613
|
+
].join(","), Tl = [
|
|
3614
3614
|
".bridgerte__code-header",
|
|
3615
3615
|
".bridgerte__code-block-control",
|
|
3616
3616
|
".bridgerte__code-block-controls-layer",
|
|
@@ -3623,7 +3623,7 @@ const qn = {
|
|
|
3623
3623
|
".bridgerte__dialog",
|
|
3624
3624
|
".bridgerte__payload-panel",
|
|
3625
3625
|
'[data-bridgerte-clipboard-ui="true"]'
|
|
3626
|
-
].join(","),
|
|
3626
|
+
].join(","), Ll = /* @__PURE__ */ new Set([
|
|
3627
3627
|
"A",
|
|
3628
3628
|
"B",
|
|
3629
3629
|
"BLOCKQUOTE",
|
|
@@ -3660,16 +3660,16 @@ const qn = {
|
|
|
3660
3660
|
"TT",
|
|
3661
3661
|
"U",
|
|
3662
3662
|
"UL"
|
|
3663
|
-
]),
|
|
3663
|
+
]), Sl = /* @__PURE__ */ new Set(["http:", "https:", "mailto:"]), Nl = "p,div,blockquote,pre,h1,h2,h3,h4,h5,h6,ul,ol,table", Pl = "p,blockquote,pre,h1,h2,h3,h4,h5,h6,ul,ol,table", Il = /* @__PURE__ */ new Set(["colspan", "rowspan"]), Rl = /* @__PURE__ */ new Set(["TD", "TH"]), Al = /* @__PURE__ */ new Set(["M", "O", "V", "W"]), Bl = /* @__PURE__ */ new Set(["SPAN"]), Dl = /* @__PURE__ */ new Set(["color", "background-color"]), Ol = /^#([\da-f]{3}|[\da-f]{6}|[\da-f]{8})$/i, jt = /* @__PURE__ */ new Map([
|
|
3664
3664
|
["B", "strong"],
|
|
3665
3665
|
["DEL", "s"],
|
|
3666
3666
|
["I", "em"],
|
|
3667
3667
|
["STRIKE", "s"],
|
|
3668
3668
|
["TT", "code"]
|
|
3669
|
-
]),
|
|
3669
|
+
]), Hl = (e) => {
|
|
3670
3670
|
try {
|
|
3671
3671
|
const t = new URL(e, window.location.href);
|
|
3672
|
-
return
|
|
3672
|
+
return Sl.has(t.protocol);
|
|
3673
3673
|
} catch {
|
|
3674
3674
|
return !1;
|
|
3675
3675
|
}
|
|
@@ -3678,18 +3678,18 @@ const qn = {
|
|
|
3678
3678
|
}, dt = (e, t) => {
|
|
3679
3679
|
const n = e.ownerDocument.createElement(t);
|
|
3680
3680
|
return n.append(...e.childNodes), e.replaceWith(n), n;
|
|
3681
|
-
},
|
|
3681
|
+
}, $l = (e) => {
|
|
3682
3682
|
const t = e.tagName.split(":")[0] ?? "";
|
|
3683
|
-
return e.tagName.includes(":") &&
|
|
3684
|
-
},
|
|
3683
|
+
return e.tagName.includes(":") && Al.has(t);
|
|
3684
|
+
}, Qn = (e) => {
|
|
3685
3685
|
[...e.childNodes].forEach((t) => {
|
|
3686
3686
|
if (t.nodeType === Node.COMMENT_NODE) {
|
|
3687
3687
|
t.remove();
|
|
3688
3688
|
return;
|
|
3689
3689
|
}
|
|
3690
|
-
|
|
3690
|
+
Qn(t);
|
|
3691
3691
|
});
|
|
3692
|
-
},
|
|
3692
|
+
}, Zn = (e) => {
|
|
3693
3693
|
[...e.childNodes].forEach((t) => {
|
|
3694
3694
|
if (t.nodeType === Node.TEXT_NODE) {
|
|
3695
3695
|
const n = t.parentElement, r = !!(n != null && n.closest("pre,code,textarea")), o = (t.textContent ?? "").replace(/[\u200B-\u200D\uFEFF]/g, "").replace(/\u00A0/g, r ? " " : " ");
|
|
@@ -3701,24 +3701,24 @@ const qn = {
|
|
|
3701
3701
|
t.previousSibling || (a = a.trimStart()), t.nextSibling || (a = a.trimEnd()), t.textContent = a;
|
|
3702
3702
|
return;
|
|
3703
3703
|
}
|
|
3704
|
-
|
|
3704
|
+
Zn(t);
|
|
3705
3705
|
});
|
|
3706
|
-
},
|
|
3707
|
-
const t = e.trim().toLowerCase(), [, n] = t.match(
|
|
3706
|
+
}, Fl = (e) => /^[1-9]\d*$/.test(e.trim()), ut = (e) => {
|
|
3707
|
+
const t = e.trim().toLowerCase(), [, n] = t.match(Ol) ?? [];
|
|
3708
3708
|
return n ? n.length === 8 ? `#${n.slice(2)}` : t : null;
|
|
3709
|
-
},
|
|
3710
|
-
if (!
|
|
3709
|
+
}, zl = (e, t) => {
|
|
3710
|
+
if (!Bl.has(e)) return null;
|
|
3711
3711
|
const n = t.split(";").flatMap((r) => {
|
|
3712
3712
|
const [o, ...a] = r.split(":"), s = o == null ? void 0 : o.trim().toLowerCase(), l = ut(a.join(":"));
|
|
3713
|
-
return !s || !l || !
|
|
3713
|
+
return !s || !l || !Dl.has(s) ? [] : [`${s}: ${l}`];
|
|
3714
3714
|
});
|
|
3715
3715
|
return n.length > 0 ? `${n.join("; ")};` : null;
|
|
3716
|
-
},
|
|
3717
|
-
if (
|
|
3716
|
+
}, Wl = (e) => {
|
|
3717
|
+
if ($l(e)) {
|
|
3718
3718
|
e.remove();
|
|
3719
3719
|
return;
|
|
3720
3720
|
}
|
|
3721
|
-
if (!
|
|
3721
|
+
if (!Ll.has(e.tagName)) {
|
|
3722
3722
|
ct(e);
|
|
3723
3723
|
return;
|
|
3724
3724
|
}
|
|
@@ -3729,7 +3729,7 @@ const qn = {
|
|
|
3729
3729
|
return;
|
|
3730
3730
|
}
|
|
3731
3731
|
if (n === "style") {
|
|
3732
|
-
const r =
|
|
3732
|
+
const r = zl(e.tagName, t.value);
|
|
3733
3733
|
if (r) {
|
|
3734
3734
|
e.setAttribute(t.name, r);
|
|
3735
3735
|
return;
|
|
@@ -3738,13 +3738,13 @@ const qn = {
|
|
|
3738
3738
|
return;
|
|
3739
3739
|
}
|
|
3740
3740
|
if (e.tagName === "A" && n === "href") {
|
|
3741
|
-
if (
|
|
3741
|
+
if (Hl(t.value)) return;
|
|
3742
3742
|
e.removeAttribute(t.name);
|
|
3743
3743
|
return;
|
|
3744
3744
|
}
|
|
3745
3745
|
if (!(e.tagName === "A" && ["target", "rel", "title"].includes(n))) {
|
|
3746
3746
|
if (e.tagName === "PRE" && n === Be) {
|
|
3747
|
-
const r =
|
|
3747
|
+
const r = ne(t.value);
|
|
3748
3748
|
if (r) {
|
|
3749
3749
|
e.setAttribute(t.name, r);
|
|
3750
3750
|
return;
|
|
@@ -3757,39 +3757,39 @@ const qn = {
|
|
|
3757
3757
|
e.removeAttribute(t.name);
|
|
3758
3758
|
return;
|
|
3759
3759
|
}
|
|
3760
|
-
|
|
3760
|
+
Rl.has(e.tagName) && Il.has(n) && Fl(t.value) || e.removeAttribute(t.name);
|
|
3761
3761
|
}
|
|
3762
3762
|
});
|
|
3763
|
-
},
|
|
3763
|
+
}, Vl = (e) => {
|
|
3764
3764
|
[...e.querySelectorAll("font")].forEach((t) => {
|
|
3765
3765
|
const n = t.getAttribute("color"), r = n ? ut(n) : null, o = dt(t, "span");
|
|
3766
3766
|
r && o.setAttribute("style", `color: ${r};`);
|
|
3767
3767
|
});
|
|
3768
|
-
},
|
|
3768
|
+
}, Ul = (e) => {
|
|
3769
3769
|
[...e.querySelectorAll([...jt.keys()].join(","))].forEach((t) => {
|
|
3770
3770
|
const n = jt.get(t.tagName);
|
|
3771
3771
|
n && dt(t, n);
|
|
3772
3772
|
});
|
|
3773
|
-
},
|
|
3773
|
+
}, jl = (e) => {
|
|
3774
3774
|
[...e.querySelectorAll("div")].reverse().forEach((t) => {
|
|
3775
|
-
if (t.querySelector(
|
|
3775
|
+
if (t.querySelector(Pl)) {
|
|
3776
3776
|
ct(t);
|
|
3777
3777
|
return;
|
|
3778
3778
|
}
|
|
3779
3779
|
dt(t, "p");
|
|
3780
3780
|
});
|
|
3781
|
-
},
|
|
3781
|
+
}, Kl = (e) => {
|
|
3782
3782
|
[...e.querySelectorAll("span")].forEach((t) => {
|
|
3783
3783
|
t.attributes.length === 0 && ct(t);
|
|
3784
3784
|
});
|
|
3785
|
-
},
|
|
3785
|
+
}, ql = (e) => !["P", "DIV", "SPAN"].includes(e.tagName) || e.querySelector("br,table,ul,ol") ? !1 : !(e.textContent ?? "").trim(), Kt = (e) => {
|
|
3786
3786
|
[...e.querySelectorAll("p,div,span")].reverse().forEach((t) => {
|
|
3787
|
-
|
|
3787
|
+
ql(t) && t.remove();
|
|
3788
3788
|
});
|
|
3789
|
-
},
|
|
3789
|
+
}, Gl = (e) => {
|
|
3790
3790
|
var t;
|
|
3791
|
-
return e.nodeType === Node.TEXT_NODE ? !!((t = e.textContent) != null && t.trim()) : e.nodeType !== Node.ELEMENT_NODE ? !1 : !e.matches(
|
|
3792
|
-
},
|
|
3791
|
+
return e.nodeType === Node.TEXT_NODE ? !!((t = e.textContent) != null && t.trim()) : e.nodeType !== Node.ELEMENT_NODE ? !1 : !e.matches(Nl);
|
|
3792
|
+
}, Xl = (e) => {
|
|
3793
3793
|
let t = [];
|
|
3794
3794
|
const n = () => {
|
|
3795
3795
|
if (t.length === 0) return;
|
|
@@ -3804,47 +3804,47 @@ const qn = {
|
|
|
3804
3804
|
r.remove();
|
|
3805
3805
|
return;
|
|
3806
3806
|
}
|
|
3807
|
-
if (
|
|
3807
|
+
if (Gl(r)) {
|
|
3808
3808
|
t.push(r);
|
|
3809
3809
|
return;
|
|
3810
3810
|
}
|
|
3811
3811
|
n();
|
|
3812
3812
|
}), n();
|
|
3813
|
-
},
|
|
3813
|
+
}, Yl = (e) => {
|
|
3814
3814
|
const t = document.createElement("template");
|
|
3815
|
-
t.innerHTML = e, t.content.querySelectorAll(
|
|
3815
|
+
t.innerHTML = e, t.content.querySelectorAll(Ml).forEach((r) => {
|
|
3816
3816
|
r.remove();
|
|
3817
|
-
}), t.content.querySelectorAll(
|
|
3817
|
+
}), t.content.querySelectorAll(Tl).forEach((r) => {
|
|
3818
3818
|
r.remove();
|
|
3819
|
-
}),
|
|
3819
|
+
}), Qn(t.content), es(t.content), [...t.content.querySelectorAll("*")].forEach(Wl), Zn(t.content), Vl(t.content), Ul(t.content), jl(t.content), Kl(t.content), Kt(t.content);
|
|
3820
3820
|
const n = document.createElement("div");
|
|
3821
|
-
return n.append(t.content.cloneNode(!0)),
|
|
3822
|
-
},
|
|
3821
|
+
return n.append(t.content.cloneNode(!0)), Xl(n), Kt(n), n.innerHTML;
|
|
3822
|
+
}, Jl = /^https?:\/\/[^\s<>"']+\.[^\s<>"']+$/i, Ql = /^www\.[^\s<>"']+\.[^\s<>"']+$/i, Zl = new RegExp(
|
|
3823
3823
|
`^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+(?:/[^\\s<>"']*)?$`,
|
|
3824
3824
|
"i"
|
|
3825
|
-
),
|
|
3826
|
-
const n =
|
|
3825
|
+
), ec = /^[^\s@]+@[^\s@]+\.[^\s@]+$/i, tc = /^\s*```([a-z0-9_+#.-]+)\s*\n([\s\S]*?)\n?```\s*$/i, nc = (e) => e.type.startsWith("image/") ? "image" : e.type.startsWith("video/") ? "video" : null, er = (e) => e ? [...e].flatMap((t) => {
|
|
3826
|
+
const n = nc(t);
|
|
3827
3827
|
return n ? [{ type: n, file: t }] : [];
|
|
3828
3828
|
}) : [], De = (e) => ({
|
|
3829
3829
|
text: (e == null ? void 0 : e.getData("text/plain")) ?? "",
|
|
3830
3830
|
html: (e == null ? void 0 : e.getData("text/html")) ?? "",
|
|
3831
3831
|
files: e != null && e.files ? [...e.files] : []
|
|
3832
|
-
}),
|
|
3832
|
+
}), rc = (e) => ({
|
|
3833
3833
|
name: e.name,
|
|
3834
3834
|
mimeType: e.type || void 0,
|
|
3835
3835
|
size: e.size,
|
|
3836
3836
|
data: e
|
|
3837
|
-
}),
|
|
3837
|
+
}), oc = (e) => {
|
|
3838
3838
|
const [, t, n] = e.replace(/\r\n/g, `
|
|
3839
|
-
`).match(
|
|
3839
|
+
`).match(tc) ?? [], r = ne(t);
|
|
3840
3840
|
return n !== void 0 && r !== null ? { code: n, language: r } : null;
|
|
3841
|
-
},
|
|
3841
|
+
}, ac = (e) => {
|
|
3842
3842
|
const t = e.trim();
|
|
3843
|
-
return !t || /\s/.test(t) || t.includes("<") || t.includes(">") || /^[a-z][a-z0-9+.-]*:/i.test(t) && !/^https?:\/\//i.test(t) ||
|
|
3844
|
-
},
|
|
3843
|
+
return !t || /\s/.test(t) || t.includes("<") || t.includes(">") || /^[a-z][a-z0-9+.-]*:/i.test(t) && !/^https?:\/\//i.test(t) || ec.test(t) ? !1 : Jl.test(t) || Ql.test(t) || Zl.test(t);
|
|
3844
|
+
}, tr = (e, {
|
|
3845
3845
|
isReadonly: t,
|
|
3846
3846
|
executeCommand: n
|
|
3847
|
-
}) => t() || !
|
|
3847
|
+
}) => t() || !ac(e.text) ? !1 : (n({
|
|
3848
3848
|
type: "link.set",
|
|
3849
3849
|
href: e.text.trim()
|
|
3850
3850
|
}), !0), et = (e, {
|
|
@@ -3853,86 +3853,86 @@ const qn = {
|
|
|
3853
3853
|
uploadMediaFile: r
|
|
3854
3854
|
}) => {
|
|
3855
3855
|
if (t() || !n()) return !1;
|
|
3856
|
-
const o =
|
|
3856
|
+
const o = er(e.files);
|
|
3857
3857
|
return o.length === 0 ? !1 : (o.forEach(({ type: a, file: s }) => {
|
|
3858
3858
|
r(a, s);
|
|
3859
3859
|
}), !0);
|
|
3860
|
-
},
|
|
3860
|
+
}, sc = (e, t) => {
|
|
3861
3861
|
const r = new DOMParser().parseFromString(t, "text/html");
|
|
3862
|
-
|
|
3863
|
-
const o =
|
|
3864
|
-
return
|
|
3865
|
-
},
|
|
3866
|
-
const n =
|
|
3862
|
+
ts(r.body);
|
|
3863
|
+
const o = gn(e, r);
|
|
3864
|
+
return ns(o, r.body), o;
|
|
3865
|
+
}, ic = (e, t) => {
|
|
3866
|
+
const n = sc(e, t);
|
|
3867
3867
|
if (n.length === 0) return !1;
|
|
3868
|
-
if (
|
|
3868
|
+
if (I() || H().selectEnd(), n.some(X)) {
|
|
3869
3869
|
n.forEach((o) => {
|
|
3870
|
-
|
|
3870
|
+
hn(o);
|
|
3871
3871
|
});
|
|
3872
3872
|
const r = n[n.length - 1];
|
|
3873
|
-
return r &&
|
|
3873
|
+
return r && X(r) && W([F()]), !0;
|
|
3874
3874
|
}
|
|
3875
3875
|
return W(n), !0;
|
|
3876
|
-
},
|
|
3876
|
+
}, lc = (e, {
|
|
3877
3877
|
editor: t,
|
|
3878
3878
|
isReadonly: n
|
|
3879
3879
|
}) => {
|
|
3880
3880
|
if (n()) return !1;
|
|
3881
|
-
if (!e.html.trim()) return
|
|
3882
|
-
const r =
|
|
3881
|
+
if (!e.html.trim()) return dc(e, { editor: t, isReadonly: n });
|
|
3882
|
+
const r = Yl(e.html);
|
|
3883
3883
|
return r.trim() ? (t.update(() => {
|
|
3884
|
-
|
|
3884
|
+
ic(t, r);
|
|
3885
3885
|
}), !0) : !1;
|
|
3886
|
-
},
|
|
3886
|
+
}, cc = (e, {
|
|
3887
3887
|
editor: t,
|
|
3888
3888
|
isReadonly: n
|
|
3889
3889
|
}) => {
|
|
3890
3890
|
if (n() || e.html.trim() || !e.text.trim()) return !1;
|
|
3891
|
-
const r =
|
|
3891
|
+
const r = oc(e.text);
|
|
3892
3892
|
return r ? (t.update(() => {
|
|
3893
|
-
const o =
|
|
3894
|
-
|
|
3893
|
+
const o = Nn(r.language || void 0), a = F();
|
|
3894
|
+
I() || H().selectEnd(), o.append(Re(r.code)), hn(o), W([a]), a.selectStart();
|
|
3895
3895
|
}), !0) : !1;
|
|
3896
|
-
},
|
|
3896
|
+
}, dc = (e, {
|
|
3897
3897
|
editor: t,
|
|
3898
3898
|
isReadonly: n
|
|
3899
3899
|
}) => n() || e.html.trim() || !e.text ? !1 : (t.update(() => {
|
|
3900
|
-
|
|
3901
|
-
}), !0),
|
|
3900
|
+
I() || H().selectEnd(), W([Re(e.text)]);
|
|
3901
|
+
}), !0), nr = (e, t) => cc(e, t) || lc(e, t), te = (e) => {
|
|
3902
3902
|
e.preventDefault(), e.stopImmediatePropagation();
|
|
3903
|
-
},
|
|
3903
|
+
}, uc = (e, t) => et(e, t) || tr(e, t) || nr(e, t), mc = (e) => {
|
|
3904
3904
|
const t = (n) => {
|
|
3905
|
-
n.defaultPrevented ||
|
|
3905
|
+
n.defaultPrevented || tr(De(n.clipboardData), e) && te(n);
|
|
3906
3906
|
};
|
|
3907
3907
|
return e.target.addEventListener("paste", t, { capture: !0 }), () => {
|
|
3908
3908
|
e.target.removeEventListener("paste", t, { capture: !0 });
|
|
3909
3909
|
};
|
|
3910
|
-
},
|
|
3910
|
+
}, gc = (e) => {
|
|
3911
3911
|
const t = (o) => {
|
|
3912
|
-
o.defaultPrevented || et(De(o.clipboardData), e) &&
|
|
3912
|
+
o.defaultPrevented || et(De(o.clipboardData), e) && te(o);
|
|
3913
3913
|
}, n = (o) => {
|
|
3914
3914
|
var s;
|
|
3915
3915
|
if (e.isReadonly() || !e.canUploadMedia()) return;
|
|
3916
3916
|
const a = (s = o.dataTransfer) != null && s.files ? [...o.dataTransfer.files] : [];
|
|
3917
|
-
|
|
3917
|
+
er(a).length !== 0 && (o.preventDefault(), o.dataTransfer && (o.dataTransfer.dropEffect = "copy"));
|
|
3918
3918
|
}, r = (o) => {
|
|
3919
3919
|
var s;
|
|
3920
3920
|
const a = {
|
|
3921
3921
|
files: (s = o.dataTransfer) != null && s.files ? [...o.dataTransfer.files] : []
|
|
3922
3922
|
};
|
|
3923
|
-
et(a, e) &&
|
|
3923
|
+
et(a, e) && te(o);
|
|
3924
3924
|
};
|
|
3925
3925
|
return e.target.addEventListener("paste", t, { capture: !0 }), e.target.addEventListener("dragover", n), e.target.addEventListener("drop", r), () => {
|
|
3926
3926
|
e.target.removeEventListener("paste", t, { capture: !0 }), e.target.removeEventListener("dragover", n), e.target.removeEventListener("drop", r);
|
|
3927
3927
|
};
|
|
3928
|
-
},
|
|
3928
|
+
}, hc = (e) => {
|
|
3929
3929
|
const t = (n) => {
|
|
3930
|
-
n.defaultPrevented || !
|
|
3930
|
+
n.defaultPrevented || !nr(De(n.clipboardData), e) || te(n);
|
|
3931
3931
|
};
|
|
3932
3932
|
return e.target.addEventListener("paste", t, { capture: !0 }), () => {
|
|
3933
3933
|
e.target.removeEventListener("paste", t, { capture: !0 });
|
|
3934
3934
|
};
|
|
3935
|
-
},
|
|
3935
|
+
}, pc = ({
|
|
3936
3936
|
target: e,
|
|
3937
3937
|
isReadonly: t,
|
|
3938
3938
|
onPaste: n,
|
|
@@ -3941,7 +3941,7 @@ const qn = {
|
|
|
3941
3941
|
executeCommand: a,
|
|
3942
3942
|
editor: s
|
|
3943
3943
|
}) => {
|
|
3944
|
-
const l = (c, h) =>
|
|
3944
|
+
const l = (c, h) => uc({
|
|
3945
3945
|
text: h.text ?? c.text,
|
|
3946
3946
|
html: h.html ?? c.html,
|
|
3947
3947
|
files: c.files
|
|
@@ -3956,24 +3956,53 @@ const qn = {
|
|
|
3956
3956
|
const h = De(c.clipboardData), y = n({
|
|
3957
3957
|
text: h.text,
|
|
3958
3958
|
html: h.html,
|
|
3959
|
-
files: h.files.map(
|
|
3959
|
+
files: h.files.map(rc)
|
|
3960
3960
|
});
|
|
3961
3961
|
if (y instanceof Promise) {
|
|
3962
|
-
|
|
3962
|
+
te(c), y.then((w) => {
|
|
3963
3963
|
w !== !0 && w && l(h, w);
|
|
3964
3964
|
});
|
|
3965
3965
|
return;
|
|
3966
3966
|
}
|
|
3967
3967
|
if (y === !0) {
|
|
3968
|
-
|
|
3968
|
+
te(c);
|
|
3969
3969
|
return;
|
|
3970
3970
|
}
|
|
3971
|
-
y && (
|
|
3971
|
+
y && (te(c), l(h, y));
|
|
3972
3972
|
};
|
|
3973
3973
|
return e.addEventListener("paste", d, { capture: !0 }), () => {
|
|
3974
3974
|
e.removeEventListener("paste", d, { capture: !0 });
|
|
3975
3975
|
};
|
|
3976
|
-
},
|
|
3976
|
+
}, fc = (e) => e.getKey() === "root" ? null : e.getTopLevelElement(), bc = (e, t, n) => {
|
|
3977
|
+
const r = e.getLastDescendant();
|
|
3978
|
+
return ie(t) ? t === e && n === e.getChildrenSize() : r ? t === r && n === t.getTextContentSize() : !0;
|
|
3979
|
+
}, yc = (e) => {
|
|
3980
|
+
const t = e.getLastChild();
|
|
3981
|
+
return ln(t);
|
|
3982
|
+
}, vc = (e) => {
|
|
3983
|
+
const t = F(), n = e.getLastChild();
|
|
3984
|
+
ln(n) && n.remove(), e.insertAfter(t), t.selectStart();
|
|
3985
|
+
}, wc = (e, t) => {
|
|
3986
|
+
const n = () => {
|
|
3987
|
+
if (t()) return !1;
|
|
3988
|
+
const r = I();
|
|
3989
|
+
if (!D(r) || !r.isCollapsed()) return !1;
|
|
3990
|
+
const o = r.anchor, a = o.getNode(), s = fc(a);
|
|
3991
|
+
return !cn(s) || !bc(s, a, o.offset) ? !1 : yc(s) ? (vc(s), !0) : (r.insertLineBreak(), !0);
|
|
3992
|
+
};
|
|
3993
|
+
return [
|
|
3994
|
+
e.registerCommand(
|
|
3995
|
+
kr,
|
|
3996
|
+
n,
|
|
3997
|
+
G
|
|
3998
|
+
),
|
|
3999
|
+
e.registerCommand(
|
|
4000
|
+
Er,
|
|
4001
|
+
(r) => r ? !1 : n(),
|
|
4002
|
+
G
|
|
4003
|
+
)
|
|
4004
|
+
];
|
|
4005
|
+
}, Cc = [
|
|
3977
4006
|
"paragraph",
|
|
3978
4007
|
"heading-1",
|
|
3979
4008
|
"heading-2",
|
|
@@ -3987,18 +4016,18 @@ const qn = {
|
|
|
3987
4016
|
"upload-image",
|
|
3988
4017
|
"upload-video",
|
|
3989
4018
|
"table"
|
|
3990
|
-
],
|
|
4019
|
+
], _c = {
|
|
3991
4020
|
showIcon: !0,
|
|
3992
4021
|
loadingText: "加载中",
|
|
3993
4022
|
emptyText: "没有匹配的命令",
|
|
3994
4023
|
errorText: "命令加载失败"
|
|
3995
|
-
},
|
|
3996
|
-
...
|
|
4024
|
+
}, kc = (e) => ({
|
|
4025
|
+
..._c,
|
|
3997
4026
|
...e
|
|
3998
|
-
}),
|
|
4027
|
+
}), Ec = (e) => e.flatMap((t) => t.type === "button" ? [t.item] : t.type === "group" ? t.items : []), xc = (e) => ({
|
|
3999
4028
|
...e,
|
|
4000
|
-
toolbarKeys: (e == null ? void 0 : e.toolbarKeys) ??
|
|
4001
|
-
}),
|
|
4029
|
+
toolbarKeys: (e == null ? void 0 : e.toolbarKeys) ?? Cc
|
|
4030
|
+
}), Mc = (e) => ({
|
|
4002
4031
|
id: e.id,
|
|
4003
4032
|
label: e.label,
|
|
4004
4033
|
command: e.command,
|
|
@@ -4006,24 +4035,24 @@ const qn = {
|
|
|
4006
4035
|
requiresPayload: e.requiresPayload,
|
|
4007
4036
|
payloadPanel: e.payloadPanel,
|
|
4008
4037
|
source: "schema"
|
|
4009
|
-
}),
|
|
4010
|
-
|
|
4038
|
+
}), Tc = (e, t) => Ec(nt(
|
|
4039
|
+
xc(t),
|
|
4011
4040
|
e
|
|
4012
|
-
)).map(
|
|
4041
|
+
)).map(Mc), rr = (e) => ({
|
|
4013
4042
|
...e,
|
|
4014
4043
|
source: "provider"
|
|
4015
|
-
}),
|
|
4016
|
-
const n =
|
|
4017
|
-
return n ? e.filter((r) =>
|
|
4018
|
-
},
|
|
4044
|
+
}), Lc = /(?:^|\s)\/([\p{L}\p{N}_-]*)$/u, Sc = (e) => e.trim().toLowerCase(), Nc = (e) => [e.label, e.id, e.description, ...e.keywords ?? []].filter(Boolean).join(" ").toLowerCase(), Pc = (e, t) => {
|
|
4045
|
+
const n = Sc(t);
|
|
4046
|
+
return n ? e.filter((r) => Nc(r).includes(n)) : e;
|
|
4047
|
+
}, Ic = async (e, t) => (await Promise.resolve((t == null ? void 0 : t(e)) ?? [])).map(rr), Rc = (e) => "source" in e ? e : rr(e), Ac = ({
|
|
4019
4048
|
menuSchema: e,
|
|
4020
4049
|
slashCommandConfig: t
|
|
4021
|
-
}) => e !== void 0 || t !== void 0,
|
|
4022
|
-
const e =
|
|
4050
|
+
}) => e !== void 0 || t !== void 0, Bc = () => {
|
|
4051
|
+
const e = I();
|
|
4023
4052
|
if (!D(e) || !e.isCollapsed()) return null;
|
|
4024
4053
|
const t = e.anchor, n = t.getNode();
|
|
4025
|
-
if (!(n instanceof
|
|
4026
|
-
const o = n.getTextContent().slice(0, t.offset).match(
|
|
4054
|
+
if (!(n instanceof Y)) return null;
|
|
4055
|
+
const o = n.getTextContent().slice(0, t.offset).match(Lc);
|
|
4027
4056
|
if (!o) return null;
|
|
4028
4057
|
const a = o[1] ?? "", s = o[0] ?? "", l = s.startsWith("/") ? 0 : 1, d = t.offset - s.length + l;
|
|
4029
4058
|
return {
|
|
@@ -4032,33 +4061,33 @@ const qn = {
|
|
|
4032
4061
|
startOffset: d,
|
|
4033
4062
|
endOffset: t.offset
|
|
4034
4063
|
};
|
|
4035
|
-
},
|
|
4064
|
+
}, Dc = () => {
|
|
4036
4065
|
const e = document.createElement("div");
|
|
4037
4066
|
return e.className = "bridgerte__floating-menu bridgerte__slash-command-menu", e.dataset.visible = "false", e;
|
|
4038
|
-
},
|
|
4067
|
+
}, Oc = () => {
|
|
4039
4068
|
const e = document.createElement("span");
|
|
4040
4069
|
return e.className = "bridgerte__slash-command-anchor", e.setAttribute("aria-hidden", "true"), e;
|
|
4041
|
-
},
|
|
4070
|
+
}, qt = (e, t) => {
|
|
4042
4071
|
var s;
|
|
4043
4072
|
const n = e.getElementByKey(t.nodeKey), r = lt(n, t.startOffset + 1);
|
|
4044
4073
|
if (!(r instanceof Text)) return null;
|
|
4045
4074
|
const o = document.createRange(), a = Math.min(t.startOffset + 1, ((s = r.textContent) == null ? void 0 : s.length) ?? 0);
|
|
4046
4075
|
return a <= t.startOffset ? null : (o.setStart(r, t.startOffset), o.setEnd(r, a), o.getBoundingClientRect());
|
|
4047
|
-
},
|
|
4076
|
+
}, Hc = (e, t, n, r, o) => {
|
|
4048
4077
|
const a = document.createElement("button"), s = document.createElement("span");
|
|
4049
4078
|
if (a.type = "button", a.className = "bridgerte__menu-item bridgerte__slash-command-item", a.dataset.commandId = e.id, a.dataset.index = String(t), a.dataset.active = String(n), r.showIcon && e.icon) {
|
|
4050
4079
|
const l = document.createElement("span");
|
|
4051
|
-
l.className = "bridgerte__slash-command-item-icon", l.setAttribute("aria-hidden", "true"),
|
|
4080
|
+
l.className = "bridgerte__slash-command-item-icon", l.setAttribute("aria-hidden", "true"), Xn(l, o[e.icon] ?? Gn[e.icon], e.label), a.append(l);
|
|
4052
4081
|
}
|
|
4053
4082
|
if (s.className = "bridgerte__slash-command-item-title", s.textContent = e.label, a.append(s), e.description) {
|
|
4054
4083
|
const l = document.createElement("span");
|
|
4055
4084
|
l.className = "bridgerte__slash-command-item-description", l.textContent = e.description, a.append(l);
|
|
4056
4085
|
}
|
|
4057
4086
|
return a;
|
|
4058
|
-
},
|
|
4087
|
+
}, $c = (e, t) => {
|
|
4059
4088
|
const n = document.createElement("div");
|
|
4060
4089
|
return n.className = "bridgerte__slash-command-status", n.dataset.status = e, n.textContent = t, n;
|
|
4061
|
-
},
|
|
4090
|
+
}, Fc = (e, t) => {
|
|
4062
4091
|
switch (e) {
|
|
4063
4092
|
case "loading":
|
|
4064
4093
|
return t.loadingText;
|
|
@@ -4072,7 +4101,7 @@ const qn = {
|
|
|
4072
4101
|
y: e.y,
|
|
4073
4102
|
width: e.width,
|
|
4074
4103
|
height: e.height
|
|
4075
|
-
} : void 0,
|
|
4104
|
+
} : void 0, zc = ({
|
|
4076
4105
|
editorRoot: e,
|
|
4077
4106
|
contentElement: t,
|
|
4078
4107
|
editor: n,
|
|
@@ -4088,19 +4117,19 @@ const qn = {
|
|
|
4088
4117
|
onSlashCommandMenuRequest: w,
|
|
4089
4118
|
slashCommandProvider: T
|
|
4090
4119
|
}) => {
|
|
4091
|
-
const b =
|
|
4120
|
+
const b = Dc(), v = Oc(), x = kc(y), m = it(s ?? Ae, {
|
|
4092
4121
|
menuLabels: c,
|
|
4093
4122
|
payloadPanelConfig: h
|
|
4094
|
-
}), p =
|
|
4123
|
+
}), p = Tc(m, l), k = new Map(m.map((i) => [i.id, i])), _ = Ac({
|
|
4095
4124
|
menuSchema: s,
|
|
4096
4125
|
slashCommandConfig: l
|
|
4097
4126
|
}), P = (i) => {
|
|
4098
4127
|
n.update(() => {
|
|
4099
4128
|
const u = he(i.nodeKey);
|
|
4100
|
-
u instanceof
|
|
4129
|
+
u instanceof Y && (u.spliceText(i.startOffset, i.endOffset - i.startOffset, ""), u.select(i.startOffset, i.startOffset));
|
|
4101
4130
|
});
|
|
4102
4131
|
};
|
|
4103
|
-
return
|
|
4132
|
+
return Yn({
|
|
4104
4133
|
editorRoot: e,
|
|
4105
4134
|
contentElement: t,
|
|
4106
4135
|
editor: n,
|
|
@@ -4108,28 +4137,28 @@ const qn = {
|
|
|
4108
4137
|
menu: b,
|
|
4109
4138
|
anchor: v,
|
|
4110
4139
|
itemSelector: ".bridgerte__slash-command-item",
|
|
4111
|
-
getCurrentTrigger:
|
|
4112
|
-
getTriggerRect: (i) =>
|
|
4140
|
+
getCurrentTrigger: Bc,
|
|
4141
|
+
getTriggerRect: (i) => qt(n, i),
|
|
4113
4142
|
resolveItems: async (i) => {
|
|
4114
|
-
const u = _ || !T ?
|
|
4143
|
+
const u = _ || !T ? Pc(p, i) : [];
|
|
4115
4144
|
try {
|
|
4116
|
-
const g = await
|
|
4145
|
+
const g = await Ic(i, T);
|
|
4117
4146
|
return [...u, ...g];
|
|
4118
4147
|
} catch (g) {
|
|
4119
4148
|
if (u.length > 0) return u;
|
|
4120
4149
|
throw g;
|
|
4121
4150
|
}
|
|
4122
4151
|
},
|
|
4123
|
-
renderItem: (i, u, g) =>
|
|
4152
|
+
renderItem: (i, u, g) => Hc(
|
|
4124
4153
|
i,
|
|
4125
4154
|
u,
|
|
4126
4155
|
g,
|
|
4127
4156
|
x,
|
|
4128
4157
|
d
|
|
4129
4158
|
),
|
|
4130
|
-
renderStatus: (i) =>
|
|
4159
|
+
renderStatus: (i) => $c(
|
|
4131
4160
|
i,
|
|
4132
|
-
|
|
4161
|
+
Fc(i, x)
|
|
4133
4162
|
),
|
|
4134
4163
|
onStateChange: w ? (i, u) => w({
|
|
4135
4164
|
id: `bridgerte-slash-command-menu-${i.requestId}`,
|
|
@@ -4140,14 +4169,14 @@ const qn = {
|
|
|
4140
4169
|
readonly: r(),
|
|
4141
4170
|
anchorRect: Gt(u.anchorRect),
|
|
4142
4171
|
...i.error ? { error: i.error } : {},
|
|
4143
|
-
submit: (g) => u.selectItem(
|
|
4172
|
+
submit: (g) => u.selectItem(Rc(g)),
|
|
4144
4173
|
cancel: u.close
|
|
4145
4174
|
}) : void 0,
|
|
4146
4175
|
onSelect: (i, u) => {
|
|
4147
4176
|
P(u);
|
|
4148
4177
|
const g = i.source === "schema" ? k.get(i.id) : void 0;
|
|
4149
4178
|
if (g != null && g.payloadPanel) {
|
|
4150
|
-
const f =
|
|
4179
|
+
const f = qt(n, u);
|
|
4151
4180
|
a({
|
|
4152
4181
|
menuId: g.id,
|
|
4153
4182
|
command: g.command,
|
|
@@ -4162,12 +4191,12 @@ const qn = {
|
|
|
4162
4191
|
}, Xt = 32, We = (e) => {
|
|
4163
4192
|
var t;
|
|
4164
4193
|
return e instanceof HTMLElement && e.getAttribute("role") === "checkbox" && ((t = e.parentElement) == null ? void 0 : t.classList.contains("bridgerte__list--todo")) === !0;
|
|
4165
|
-
}, Ve = (e) => e instanceof HTMLElement ? e.closest('[role="checkbox"]') : null,
|
|
4194
|
+
}, Ve = (e) => e instanceof HTMLElement ? e.closest('[role="checkbox"]') : null, Wc = (e) => xr(e), Yt = (e) => e.button === 0, Ue = (e, t) => {
|
|
4166
4195
|
const n = t.getBoundingClientRect();
|
|
4167
4196
|
return t.dir === "rtl" ? e.clientX >= n.right - Xt && e.clientX <= n.right : e.clientX >= n.left && e.clientX <= n.left + Xt;
|
|
4168
4197
|
}, Jt = (e) => {
|
|
4169
4198
|
e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation();
|
|
4170
|
-
},
|
|
4199
|
+
}, Vc = ({
|
|
4171
4200
|
contentElement: e,
|
|
4172
4201
|
editor: t,
|
|
4173
4202
|
isReadonly: n
|
|
@@ -4179,8 +4208,8 @@ const qn = {
|
|
|
4179
4208
|
!c || !We(c) || Ue(d, c) && Jt(d);
|
|
4180
4209
|
}, a = (d, c) => {
|
|
4181
4210
|
Jt(d), t.update(() => {
|
|
4182
|
-
const h =
|
|
4183
|
-
|
|
4211
|
+
const h = Wc(c);
|
|
4212
|
+
Ur(h) && h.toggleChecked();
|
|
4184
4213
|
});
|
|
4185
4214
|
}, s = (d) => {
|
|
4186
4215
|
if (n() || !Yt(d) || Date.now() - r < 700) return;
|
|
@@ -4197,7 +4226,7 @@ const qn = {
|
|
|
4197
4226
|
}, je = (e, t) => {
|
|
4198
4227
|
var n;
|
|
4199
4228
|
return ((n = e.floatingMenus) == null ? void 0 : n[t]) !== !1;
|
|
4200
|
-
},
|
|
4229
|
+
}, Uc = ({
|
|
4201
4230
|
options: e,
|
|
4202
4231
|
lexicalEditor: t,
|
|
4203
4232
|
editorRoot: n,
|
|
@@ -4220,7 +4249,7 @@ const qn = {
|
|
|
4220
4249
|
* 业务自定义 paste hook 最先看到原始剪贴板摘要;返回 undefined 时完全不拦截,
|
|
4221
4250
|
* 继续走 BridgeRTE 内置媒体、URL 和 HTML 清洗链路。
|
|
4222
4251
|
*/
|
|
4223
|
-
|
|
4252
|
+
pc({
|
|
4224
4253
|
target: r,
|
|
4225
4254
|
isReadonly: a,
|
|
4226
4255
|
onPaste: e.onPaste,
|
|
@@ -4233,7 +4262,7 @@ const qn = {
|
|
|
4233
4262
|
* 媒体文件粘贴/拖拽优先于 URL 粘贴快速路径;剪贴板里有文件时直接进入上传管线,
|
|
4234
4263
|
* 没有文件再交给纯文本 URL 链接处理或 Lexical 默认粘贴。
|
|
4235
4264
|
*/
|
|
4236
|
-
|
|
4265
|
+
gc({
|
|
4237
4266
|
target: r,
|
|
4238
4267
|
isReadonly: a,
|
|
4239
4268
|
canUploadMedia: c,
|
|
@@ -4243,7 +4272,7 @@ const qn = {
|
|
|
4243
4272
|
* URL 粘贴是 BridgeRTE 的高意图快捷路径,必须先于 Lexical 默认 paste 监听注册。
|
|
4244
4273
|
* 否则 Lexical 会先把 URL 当普通文本插入,后续就失去“选区变链接”的语义。
|
|
4245
4274
|
*/
|
|
4246
|
-
|
|
4275
|
+
mc({
|
|
4247
4276
|
target: r,
|
|
4248
4277
|
isReadonly: a,
|
|
4249
4278
|
executeCommand: s
|
|
@@ -4252,31 +4281,32 @@ const qn = {
|
|
|
4252
4281
|
* HTML 清洗放在媒体和纯文本 URL 之后、Lexical 默认 rich text paste 之前。
|
|
4253
4282
|
* 这样外部网页/办公软件片段会先进入 BridgeRTE 白名单清洗,再转成 Lexical 节点。
|
|
4254
4283
|
*/
|
|
4255
|
-
|
|
4284
|
+
hc({
|
|
4256
4285
|
target: r,
|
|
4257
4286
|
editor: t,
|
|
4258
4287
|
isReadonly: a
|
|
4259
4288
|
}),
|
|
4260
|
-
|
|
4289
|
+
zi({
|
|
4261
4290
|
target: r,
|
|
4262
4291
|
isReadonly: a
|
|
4263
4292
|
}),
|
|
4264
|
-
|
|
4293
|
+
Rr(t),
|
|
4265
4294
|
/*
|
|
4266
4295
|
* 代码块高亮一刀切使用 Lexical 官方 Shiki 管线。BridgeRTE tokenizer 只保留稳定 class,
|
|
4267
4296
|
* 不把 Shiki theme 的 inline style 写进内容 HTML。
|
|
4268
4297
|
*/
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
...
|
|
4274
|
-
|
|
4298
|
+
Mo(t, as),
|
|
4299
|
+
go(t, o, Fa),
|
|
4300
|
+
jr(t),
|
|
4301
|
+
Kr(t),
|
|
4302
|
+
...wc(t, a),
|
|
4303
|
+
...jo(t, a),
|
|
4304
|
+
Vc({
|
|
4275
4305
|
contentElement: r,
|
|
4276
4306
|
editor: t,
|
|
4277
4307
|
isReadonly: a
|
|
4278
4308
|
}),
|
|
4279
|
-
x ?
|
|
4309
|
+
x ? xl({
|
|
4280
4310
|
editorRoot: n,
|
|
4281
4311
|
contentElement: r,
|
|
4282
4312
|
editor: t,
|
|
@@ -4287,7 +4317,7 @@ const qn = {
|
|
|
4287
4317
|
onMentionMenuRequest: e.onMentionMenuRequest
|
|
4288
4318
|
}) : () => {
|
|
4289
4319
|
},
|
|
4290
|
-
p ?
|
|
4320
|
+
p ? Yi({
|
|
4291
4321
|
editorRoot: n,
|
|
4292
4322
|
contentElement: r,
|
|
4293
4323
|
editor: t,
|
|
@@ -4302,9 +4332,9 @@ const qn = {
|
|
|
4302
4332
|
payloadPanelConfig: e.payloadPanelConfig
|
|
4303
4333
|
}) : () => {
|
|
4304
4334
|
},
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
m ?
|
|
4335
|
+
ro(t),
|
|
4336
|
+
Di({ editor: t }),
|
|
4337
|
+
m ? zc({
|
|
4308
4338
|
editorRoot: n,
|
|
4309
4339
|
contentElement: r,
|
|
4310
4340
|
editor: t,
|
|
@@ -4321,12 +4351,12 @@ const qn = {
|
|
|
4321
4351
|
slashCommandProvider: e.slashCommandProvider
|
|
4322
4352
|
}) : () => {
|
|
4323
4353
|
},
|
|
4324
|
-
|
|
4354
|
+
Qo({
|
|
4325
4355
|
editor: t,
|
|
4326
4356
|
contentElement: r,
|
|
4327
4357
|
isReadonly: a
|
|
4328
4358
|
}),
|
|
4329
|
-
v ?
|
|
4359
|
+
v ? nl({
|
|
4330
4360
|
target: r,
|
|
4331
4361
|
isReadonly: a,
|
|
4332
4362
|
executeCommand: s
|
|
@@ -4341,12 +4371,12 @@ const qn = {
|
|
|
4341
4371
|
j
|
|
4342
4372
|
),
|
|
4343
4373
|
t.registerCommand(
|
|
4344
|
-
|
|
4374
|
+
Mr,
|
|
4345
4375
|
(_) => (T(_), !1),
|
|
4346
4376
|
j
|
|
4347
4377
|
),
|
|
4348
4378
|
t.registerCommand(
|
|
4349
|
-
|
|
4379
|
+
Tr,
|
|
4350
4380
|
(_) => (b(_), !1),
|
|
4351
4381
|
j
|
|
4352
4382
|
)
|
|
@@ -4357,39 +4387,39 @@ const qn = {
|
|
|
4357
4387
|
}
|
|
4358
4388
|
};
|
|
4359
4389
|
};
|
|
4360
|
-
function
|
|
4361
|
-
const n =
|
|
4362
|
-
placeholder: t.placeholder ??
|
|
4390
|
+
function jc(e, t = {}) {
|
|
4391
|
+
const n = ho(), r = t.mediaDefaultWidthPercent ?? 50, { contentElement: o } = Pi(e, {
|
|
4392
|
+
placeholder: t.placeholder ?? Xo
|
|
4363
4393
|
}), a = t.keyboardShortcuts === !0;
|
|
4364
4394
|
let s = t.readonly ?? !1, l = !1, d = Ge(t.value);
|
|
4365
|
-
const c =
|
|
4366
|
-
namespace:
|
|
4395
|
+
const c = Lr({
|
|
4396
|
+
namespace: za,
|
|
4367
4397
|
editable: !s,
|
|
4368
4398
|
nodes: [
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4399
|
+
Ar,
|
|
4400
|
+
Br,
|
|
4401
|
+
dn,
|
|
4402
|
+
$r,
|
|
4403
|
+
un,
|
|
4404
|
+
qr,
|
|
4405
|
+
Ke,
|
|
4406
|
+
oo,
|
|
4407
|
+
ao,
|
|
4408
|
+
uo,
|
|
4409
|
+
mo,
|
|
4380
4410
|
pe,
|
|
4381
|
-
|
|
4411
|
+
le,
|
|
4382
4412
|
ye
|
|
4383
4413
|
],
|
|
4384
|
-
theme:
|
|
4414
|
+
theme: Ma,
|
|
4385
4415
|
onError: (i) => {
|
|
4386
|
-
|
|
4416
|
+
K(t, "lexical.runtime", "Lexical runtime error.", i);
|
|
4387
4417
|
}
|
|
4388
4418
|
});
|
|
4389
|
-
|
|
4419
|
+
so(c, !0);
|
|
4390
4420
|
const h = () => l, y = () => s, w = () => {
|
|
4391
|
-
h() ||
|
|
4392
|
-
}, T =
|
|
4421
|
+
h() || Jo({ editor: c, contentElement: o });
|
|
4422
|
+
}, T = Ii({ editor: c }), b = Wa({
|
|
4393
4423
|
lexicalEditor: c,
|
|
4394
4424
|
options: t,
|
|
4395
4425
|
isDestroyed: h,
|
|
@@ -4397,22 +4427,22 @@ function Oc(e, t = {}) {
|
|
|
4397
4427
|
d = i;
|
|
4398
4428
|
},
|
|
4399
4429
|
syncPlaceholder: w
|
|
4400
|
-
}), v =
|
|
4430
|
+
}), v = fa({
|
|
4401
4431
|
lexicalEditor: c,
|
|
4402
4432
|
options: t,
|
|
4403
4433
|
isDestroyed: h,
|
|
4404
4434
|
canUploadMedia: () => t.uploadAdapter !== void 0,
|
|
4405
4435
|
isReadonly: y
|
|
4406
|
-
}), x =
|
|
4436
|
+
}), x = $a({
|
|
4407
4437
|
container: e,
|
|
4408
4438
|
lexicalEditor: c,
|
|
4409
4439
|
options: t,
|
|
4410
4440
|
isDestroyed: h,
|
|
4411
4441
|
isReadonly: y,
|
|
4412
|
-
reportError:
|
|
4442
|
+
reportError: K
|
|
4413
4443
|
}), m = () => {
|
|
4414
4444
|
o.contentEditable = String(!s), c.setEditable(!s);
|
|
4415
|
-
}, k =
|
|
4445
|
+
}, k = Ni({
|
|
4416
4446
|
editorRoot: e,
|
|
4417
4447
|
lexicalEditor: c,
|
|
4418
4448
|
isReadonly: y,
|
|
@@ -4438,14 +4468,14 @@ function Oc(e, t = {}) {
|
|
|
4438
4468
|
menuLabels: t.menuLabels,
|
|
4439
4469
|
onRequest: t.onPayloadPanelRequest,
|
|
4440
4470
|
defaultMediaWidthPercent: r
|
|
4441
|
-
}), _ = () =>
|
|
4471
|
+
}), _ = () => ga(t), P = () => ha(t), R = (i) => {
|
|
4442
4472
|
h() || (T.capture(), k.payloadPanelController.open(i));
|
|
4443
4473
|
};
|
|
4444
4474
|
e.dataset.readonly = String(s), e.addEventListener("focusin", _), e.addEventListener("focusout", P), e.style.setProperty(
|
|
4445
4475
|
"--bridgerte-media-display-width",
|
|
4446
4476
|
`${r}%`
|
|
4447
4477
|
);
|
|
4448
|
-
const L =
|
|
4478
|
+
const L = Uc({
|
|
4449
4479
|
options: t,
|
|
4450
4480
|
lexicalEditor: c,
|
|
4451
4481
|
editorRoot: e,
|
|
@@ -4453,7 +4483,7 @@ function Oc(e, t = {}) {
|
|
|
4453
4483
|
historyState: n,
|
|
4454
4484
|
isReadonly: y,
|
|
4455
4485
|
executeCommand: x,
|
|
4456
|
-
requestPayloadPanel:
|
|
4486
|
+
requestPayloadPanel: R,
|
|
4457
4487
|
uploadMediaFile: x.uploadMediaFile,
|
|
4458
4488
|
canUploadMedia: () => t.uploadAdapter !== void 0,
|
|
4459
4489
|
syncAfterEditorUpdate: b.syncAfterEditorUpdate,
|
|
@@ -4463,18 +4493,18 @@ function Oc(e, t = {}) {
|
|
|
4463
4493
|
setCanRedo: v.setCanRedo,
|
|
4464
4494
|
enableKeyboardShortcuts: a
|
|
4465
4495
|
});
|
|
4466
|
-
c.setRootElement(o), b.suppressNextChange(), d =
|
|
4496
|
+
c.setRootElement(o), b.suppressNextChange(), d = Oo(c, t.value), m();
|
|
4467
4497
|
const C = {
|
|
4468
4498
|
getContent() {
|
|
4469
4499
|
return h() || (b.clearContentChangeTimer(), b.syncContent(!1)), d;
|
|
4470
4500
|
},
|
|
4471
4501
|
setContent(i) {
|
|
4472
|
-
h() || (b.clearContentChangeTimer(), d = Ge(i), b.suppressNextChange(),
|
|
4502
|
+
h() || (b.clearContentChangeTimer(), d = Ge(i), b.suppressNextChange(), Mn(c, d), b.enforceCurrentMaxLength(), w(), c.dispatchCommand(Sr, void 0), v.setHistoryAvailability(!1, !1), b.syncContent(!0));
|
|
4473
4503
|
},
|
|
4474
4504
|
executeCommand(i) {
|
|
4475
4505
|
x(i);
|
|
4476
4506
|
},
|
|
4477
|
-
requestPayloadPanel:
|
|
4507
|
+
requestPayloadPanel: R,
|
|
4478
4508
|
getCommandStates: v.getCommandStates,
|
|
4479
4509
|
subscribeCommandStateChange: v.subscribeCommandStateChange,
|
|
4480
4510
|
setReadonly(i) {
|
|
@@ -4490,17 +4520,17 @@ function Oc(e, t = {}) {
|
|
|
4490
4520
|
h() || (l = !0, b.clearContentChangeTimer(), k.destroy(), x.destroy(), v.destroy(), T.clear(), L.destroy(), c.setRootElement(null), e.removeEventListener("focusin", _), e.removeEventListener("focusout", P), e.classList.remove("bridgerte"), e.textContent = "", delete e.dataset.readonly);
|
|
4491
4521
|
}
|
|
4492
4522
|
};
|
|
4493
|
-
return b.syncContent(!1), w(), v.refreshCommandStates(),
|
|
4523
|
+
return b.syncContent(!1), w(), v.refreshCommandStates(), pa(t, C), C;
|
|
4494
4524
|
}
|
|
4495
|
-
const
|
|
4525
|
+
const Kc = (e) => !ir(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.type === "editor.executeCommand" || e.type === "editor.setContent" || e.type === "editor.setReadonly" || e.type === "editor.requestContent" || e.type === "editor.payloadPanelResolved" || e.type === "editor.payloadPanelCanceled" || e.type === "editor.uploadResolved" || e.type === "editor.uploadRejected", qc = (e) => ({
|
|
4496
4526
|
id: e,
|
|
4497
4527
|
type: "editor.ready",
|
|
4498
4528
|
payload: {
|
|
4499
4529
|
menuSchema: Ae,
|
|
4500
|
-
eventTiming:
|
|
4530
|
+
eventTiming: cr,
|
|
4501
4531
|
version: Ie
|
|
4502
4532
|
}
|
|
4503
|
-
}),
|
|
4533
|
+
}), Gc = (e) => `native-upload:${e}:${Date.now()}:${Math.random().toString(36).slice(2)}`, md = ({
|
|
4504
4534
|
container: e,
|
|
4505
4535
|
transport: t
|
|
4506
4536
|
}) => {
|
|
@@ -4518,7 +4548,7 @@ const Hc = (e) => !ar(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.ty
|
|
|
4518
4548
|
type: "editor.heightChange",
|
|
4519
4549
|
payload: { height: C }
|
|
4520
4550
|
}));
|
|
4521
|
-
},
|
|
4551
|
+
}, lr);
|
|
4522
4552
|
}, T = (C) => {
|
|
4523
4553
|
if (!n) return;
|
|
4524
4554
|
const i = n.getContent();
|
|
@@ -4580,7 +4610,7 @@ const Hc = (e) => !ar(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.ty
|
|
|
4580
4610
|
}
|
|
4581
4611
|
});
|
|
4582
4612
|
}), m = (C) => {
|
|
4583
|
-
const i =
|
|
4613
|
+
const i = Gc(C);
|
|
4584
4614
|
d.set(i, {
|
|
4585
4615
|
type: C,
|
|
4586
4616
|
assetId: i,
|
|
@@ -4600,7 +4630,7 @@ const Hc = (e) => !ar(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.ty
|
|
|
4600
4630
|
const i = c.get(C.payload.requestId);
|
|
4601
4631
|
i && (c.delete(C.payload.requestId), i.request.cancel());
|
|
4602
4632
|
}, _ = (C, i) => {
|
|
4603
|
-
n == null || n.destroy(), o == null || o(), d.clear(), c.clear(), n =
|
|
4633
|
+
n == null || n.destroy(), o == null || o(), d.clear(), c.clear(), n = jc(e, {
|
|
4604
4634
|
...i,
|
|
4605
4635
|
uploadAdapter: {
|
|
4606
4636
|
uploadImage(u, g) {
|
|
@@ -4645,7 +4675,7 @@ const Hc = (e) => !ar(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.ty
|
|
|
4645
4675
|
type: "editor.commandStateChange",
|
|
4646
4676
|
payload: u
|
|
4647
4677
|
});
|
|
4648
|
-
}), h(
|
|
4678
|
+
}), h(qc(C)), w();
|
|
4649
4679
|
}, P = (C) => {
|
|
4650
4680
|
if (C.type === "media.pickImage") {
|
|
4651
4681
|
m("image");
|
|
@@ -4656,8 +4686,8 @@ const Hc = (e) => !ar(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.ty
|
|
|
4656
4686
|
return;
|
|
4657
4687
|
}
|
|
4658
4688
|
n == null || n.executeCommand(C);
|
|
4659
|
-
},
|
|
4660
|
-
if (!(r || !
|
|
4689
|
+
}, R = (C) => {
|
|
4690
|
+
if (!(r || !Kc(C)))
|
|
4661
4691
|
switch (C.type) {
|
|
4662
4692
|
case "editor.init":
|
|
4663
4693
|
_(C.id, C.payload);
|
|
@@ -4688,22 +4718,22 @@ const Hc = (e) => !ar(e) || !("id" in e) ? !1 : e.type === "editor.init" || e.ty
|
|
|
4688
4718
|
return;
|
|
4689
4719
|
}
|
|
4690
4720
|
};
|
|
4691
|
-
return a = ((L = t.addMessageListener) == null ? void 0 : L.call(t,
|
|
4692
|
-
receive:
|
|
4721
|
+
return a = ((L = t.addMessageListener) == null ? void 0 : L.call(t, R)) ?? null, {
|
|
4722
|
+
receive: R,
|
|
4693
4723
|
destroy() {
|
|
4694
4724
|
r || (r = !0, y(), a == null || a(), o == null || o(), d.clear(), c.clear(), n == null || n.destroy(), n = null);
|
|
4695
4725
|
}
|
|
4696
4726
|
};
|
|
4697
4727
|
};
|
|
4698
4728
|
export {
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
|
|
4729
|
+
jc as a,
|
|
4730
|
+
md as b,
|
|
4731
|
+
qn as c,
|
|
4732
|
+
Gn as d,
|
|
4733
|
+
Xn as e,
|
|
4704
4734
|
V as f,
|
|
4705
|
-
|
|
4706
|
-
|
|
4735
|
+
xs as g,
|
|
4736
|
+
Es as h,
|
|
4707
4737
|
it as r
|
|
4708
4738
|
};
|
|
4709
|
-
//# sourceMappingURL=index-
|
|
4739
|
+
//# sourceMappingURL=index-8kI8r7zm.js.map
|