remons-render-markdown 1.0.0-beta.1

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.
@@ -0,0 +1,1889 @@
1
+ import { a as e, i as t, o as n, r, t as i } from "./RenderMarkdown-TzdhCUFl.js";
2
+ import a, { createContext as o, forwardRef as s, useCallback as c, useContext as l, useEffect as u, useMemo as d, useRef as f, useState as p } from "react";
3
+ import { CodeOutlined as m, DownOutlined as h, DownloadOutlined as g, ExportOutlined as _, FullscreenExitOutlined as v, FullscreenOutlined as y, ImportOutlined as ee, LoadingOutlined as te, MinusOutlined as b, PlusOutlined as x, ReloadOutlined as S, UpOutlined as C } from "@ant-design/icons";
4
+ import { createPortal as w } from "react-dom";
5
+ import { jsx as T, jsxs as E } from "react/jsx-runtime";
6
+ //#region src/utils/download.ts
7
+ function D(e, n) {
8
+ let r;
9
+ if (e instanceof Blob) r = URL.createObjectURL(e);
10
+ else if (typeof e == "string") r = e;
11
+ else {
12
+ t.error("不支持的下载格式");
13
+ return;
14
+ }
15
+ let i = document.createElement("a");
16
+ i.href = r, i.download = n, i.click(), URL.revokeObjectURL(r), t.success(`${n} 已下载`);
17
+ }
18
+ function ne(e, t = "image") {
19
+ D(new Blob([e], { type: "image/svg+xml;charset=utf-8" }), `${t}.svg`);
20
+ }
21
+ function O(e, n = "image", r = 2) {
22
+ let { w: i, h: a } = k(e), o = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e)))}`, s = new Image();
23
+ s.crossOrigin = "anonymous", s.src = o, s.onload = () => {
24
+ let e = document.createElement("canvas");
25
+ e.width = Math.max(1, Math.round(i * r)), e.height = Math.max(1, Math.round(a * r));
26
+ let o = e.getContext("2d");
27
+ o.fillStyle = "#ffffff", o.fillRect(0, 0, e.width, e.height), o.scale(r, r), o.drawImage(s, 0, 0, i, a), e.toBlob((e) => {
28
+ if (!e) {
29
+ t.error("PNG 生成失败");
30
+ return;
31
+ }
32
+ D(e, `${n}.png`);
33
+ }, "image/png");
34
+ }, s.onerror = () => {
35
+ t.error("PNG 生成失败:图片加载失败");
36
+ };
37
+ }
38
+ function k(e) {
39
+ let t = e.match(/viewBox=["']?([^"']+)["']/i), n = 0, r = 0;
40
+ if (t) {
41
+ let e = t[1].split(/[\s,]+/).map(Number);
42
+ e.length === 4 && (n = e[2], r = e[3]);
43
+ }
44
+ let i = e.match(/width=["']?\s*([\d.]+)\s*(?:px|pt|cm|mm|in|%)*["']/i), a = e.match(/height=["']?\s*([\d.]+)\s*(?:px|pt|cm|mm|in|%)*/i), o = i ? parseFloat(i[1]) : 0, s = a ? parseFloat(a[1]) : 0;
45
+ return n && r ? {
46
+ w: n,
47
+ h: r
48
+ } : {
49
+ w: o || n || 800,
50
+ h: s || r || 600
51
+ };
52
+ }
53
+ //#endregion
54
+ //#region src/hooks/useTheme.ts
55
+ var A = "app-theme-mode", j = "light", M = "dark", N = "system";
56
+ function re() {
57
+ return typeof window > "u" ? j : window.matchMedia("(prefers-color-scheme: dark)").matches ? M : j;
58
+ }
59
+ function P() {
60
+ try {
61
+ let e = localStorage.getItem(A);
62
+ if (e === "light" || e === "dark" || e === "system") return e;
63
+ } catch {}
64
+ return N;
65
+ }
66
+ function F(e) {
67
+ return e === "system" ? re() : e;
68
+ }
69
+ function I(e) {
70
+ typeof document > "u" || (document.documentElement.dataset.theme = e);
71
+ }
72
+ typeof window < "u" && I(F(P()));
73
+ var L = o(null);
74
+ function ie({ children: e }) {
75
+ let [t, n] = p(() => P()), [r, i] = p(() => F(t)), o = c((e) => {
76
+ n(e);
77
+ try {
78
+ localStorage.setItem(A, e), window.dispatchEvent(new Event("storage"));
79
+ } catch {}
80
+ }, []);
81
+ u(() => {
82
+ let e = F(t);
83
+ i(e), I(e);
84
+ }, [t]), u(() => {
85
+ if (t !== "system") return;
86
+ let e = window.matchMedia("(prefers-color-scheme: dark)"), n = (e) => {
87
+ let t = e.matches ? M : j;
88
+ i(t), I(t);
89
+ };
90
+ return e.addEventListener("change", n), () => e.removeEventListener("change", n);
91
+ }, [t]), u(() => {
92
+ let e = () => {
93
+ let e = P();
94
+ e !== t && n(e);
95
+ };
96
+ window.addEventListener("storage", e);
97
+ let a = new MutationObserver(() => {
98
+ let e = document.documentElement.dataset.theme;
99
+ if (e && e !== r) {
100
+ i(e);
101
+ let r = P();
102
+ r !== t && n(r);
103
+ }
104
+ });
105
+ return a.observe(document.documentElement, {
106
+ attributes: !0,
107
+ attributeFilter: ["data-theme"]
108
+ }), () => {
109
+ window.removeEventListener("storage", e), a.disconnect();
110
+ };
111
+ }, [t, r]);
112
+ let s = r === M, l = d(() => ({
113
+ theme: r,
114
+ mode: t,
115
+ isDark: s,
116
+ setMode: o
117
+ }), [
118
+ r,
119
+ t,
120
+ s,
121
+ o
122
+ ]);
123
+ return a.createElement(L.Provider, { value: l }, e);
124
+ }
125
+ function ae() {
126
+ let e = l(L);
127
+ if (!e) throw Error("useTheme must be used within a ThemeProvider");
128
+ return e;
129
+ }
130
+ //#endregion
131
+ //#region src/components/CustomTooltip/index.tsx
132
+ var R = e.bind({
133
+ tooltip: "_tooltip_1kuma_4",
134
+ "tooltip-trigger": "_tooltip-trigger_1kuma_7",
135
+ "tooltip-inner": "_tooltip-inner_1kuma_11",
136
+ "tooltip-inner-visible": "_tooltip-inner-visible_1kuma_27",
137
+ "tooltip-content": "_tooltip-content_1kuma_30",
138
+ "tooltip-arrow": "_tooltip-arrow_1kuma_36"
139
+ }), oe = ({ title: e, children: t, visible: n, onVisibleChange: r }) => {
140
+ let [i, a] = p(!1), o = f(null), s = f(null), [c, l] = p({
141
+ top: 0,
142
+ left: 0
143
+ }), d = n === void 0 ? i : n, m = () => {
144
+ if (s.current) {
145
+ let e = s.current.getBoundingClientRect();
146
+ l({
147
+ top: e.top - 8,
148
+ left: e.left + e.width / 2
149
+ });
150
+ }
151
+ }, h = () => {
152
+ m(), a(!0), r?.(!0);
153
+ }, g = () => {
154
+ a(!1), r?.(!1);
155
+ }, _ = () => {
156
+ o.current && window.clearTimeout(o.current), o.current = window.setTimeout(() => {
157
+ h();
158
+ }, 150);
159
+ }, v = () => {
160
+ o.current &&= (window.clearTimeout(o.current), null), g();
161
+ };
162
+ u(() => {
163
+ if (!d) return;
164
+ let e = () => m(), t = () => m();
165
+ return window.addEventListener("resize", e, { passive: !0 }), window.addEventListener("scroll", t, { passive: !0 }), m(), () => {
166
+ window.removeEventListener("resize", e), window.removeEventListener("scroll", t);
167
+ };
168
+ }, [d]), u(() => () => {
169
+ o.current && window.clearTimeout(o.current);
170
+ }, []);
171
+ let y = d && e ? w(/* @__PURE__ */ E("div", {
172
+ className: R("tooltip-inner", "tooltip-inner-visible"),
173
+ style: {
174
+ top: c.top,
175
+ left: c.left
176
+ },
177
+ children: [/* @__PURE__ */ T("span", {
178
+ className: R("tooltip-content"),
179
+ children: e
180
+ }), /* @__PURE__ */ T("span", { className: R("tooltip-arrow") })]
181
+ }), document.body) : null;
182
+ return /* @__PURE__ */ E("div", {
183
+ ref: s,
184
+ className: R("tooltip"),
185
+ onMouseEnter: _,
186
+ onMouseLeave: v,
187
+ children: [/* @__PURE__ */ T("div", {
188
+ className: R("tooltip-trigger"),
189
+ children: t
190
+ }), y]
191
+ });
192
+ }, z = e.bind({
193
+ dropdown: "_dropdown_x4h0x_4",
194
+ "dropdown-trigger": "_dropdown-trigger_x4h0x_8",
195
+ "dropdown-menu": "_dropdown-menu_x4h0x_12",
196
+ "dropdown-menu-visible": "_dropdown-menu-visible_x4h0x_27",
197
+ "dropdown-item": "_dropdown-item_x4h0x_31"
198
+ }), se = ({ items: e, children: t, onClick: n, className: r = "" }) => {
199
+ let [i, a] = p(!1), o = f(null), s = () => {
200
+ a((e) => !e);
201
+ }, c = () => {
202
+ a(!1);
203
+ }, l = (e) => {
204
+ n({ key: e.key }), c();
205
+ };
206
+ return u(() => {
207
+ let e = (e) => {
208
+ o.current && !o.current.contains(e.target) && c();
209
+ };
210
+ return i && document.addEventListener("mousedown", e), () => {
211
+ document.removeEventListener("mousedown", e);
212
+ };
213
+ }, [i]), /* @__PURE__ */ E("div", {
214
+ ref: o,
215
+ className: z("dropdown", r),
216
+ children: [/* @__PURE__ */ T("div", {
217
+ className: z("dropdown-trigger"),
218
+ onClick: s,
219
+ children: t
220
+ }), i && /* @__PURE__ */ T("div", {
221
+ className: z("dropdown-menu", "dropdown-menu-visible"),
222
+ children: e.map((e) => /* @__PURE__ */ T("div", {
223
+ className: z("dropdown-item"),
224
+ onClick: () => l(e),
225
+ children: e.label
226
+ }, e.key))
227
+ })]
228
+ });
229
+ }, B = e.bind({
230
+ "modal-mask": "_modal-mask_uwsht_4",
231
+ "modal-mask-visible": "_modal-mask-visible_uwsht_18",
232
+ modal: "_modal_uwsht_4",
233
+ "modal-header": "_modal-header_uwsht_34",
234
+ "modal-title": "_modal-title_uwsht_41",
235
+ "modal-close": "_modal-close_uwsht_46",
236
+ "modal-body": "_modal-body_uwsht_62",
237
+ "modal-footer": "_modal-footer_uwsht_67"
238
+ }), ce = ({ open: e, title: t, width: n = 520, onCancel: r, footer: i, destroyOnClose: a = !1, className: o = "", children: s }) => {
239
+ let c = () => {
240
+ r?.();
241
+ }, l = (e) => {
242
+ e.target === e.currentTarget && c();
243
+ }, d = (e) => {
244
+ e.stopPropagation();
245
+ };
246
+ if (u(() => {
247
+ if (!e) return;
248
+ let t = (e) => {
249
+ e.key === "Escape" && c();
250
+ };
251
+ return document.addEventListener("keydown", t), document.body.style.overflow = "hidden", () => {
252
+ document.removeEventListener("keydown", t), document.body.style.overflow = "";
253
+ };
254
+ }, [e]), !e) return null;
255
+ let f = a && !e ? null : s;
256
+ return w(/* @__PURE__ */ T("div", {
257
+ className: B("modal-mask", "modal-mask-visible"),
258
+ onClick: l,
259
+ children: /* @__PURE__ */ E("div", {
260
+ className: B("modal", o),
261
+ style: { width: n },
262
+ onClick: d,
263
+ children: [
264
+ /* @__PURE__ */ E("div", {
265
+ className: B("modal-header"),
266
+ children: [/* @__PURE__ */ T("span", {
267
+ className: B("modal-title"),
268
+ children: t
269
+ }), /* @__PURE__ */ T("div", {
270
+ className: B("modal-close"),
271
+ onClick: c,
272
+ children: "×"
273
+ })]
274
+ }),
275
+ /* @__PURE__ */ T("div", {
276
+ className: B("modal-body"),
277
+ children: f
278
+ }),
279
+ i != null && /* @__PURE__ */ T("div", {
280
+ className: B("modal-footer"),
281
+ children: i
282
+ })
283
+ ]
284
+ })
285
+ }), document.body);
286
+ }, V = [{
287
+ externalsName: "mermaid",
288
+ url: "https://registry.npmmirror.com/mermaid/11.16.0/files/dist/mermaid.min.js"
289
+ }].reduce((e, t) => (e[t.externalsName] = t.url, e), {}), H = null;
290
+ function U() {
291
+ return H ||= new Promise((e, t) => {
292
+ if (window.mermaid) {
293
+ e(window.mermaid);
294
+ return;
295
+ }
296
+ let n = document.createElement("script");
297
+ n.src = V.mermaid, n.onload = () => e(window.mermaid), n.onerror = () => t(/* @__PURE__ */ Error("Mermaid 脚本加载失败")), document.head.appendChild(n);
298
+ }), H;
299
+ }
300
+ function W() {
301
+ let [e, t] = p(null), [n, r] = p(!0), [i, a] = p(null);
302
+ return u(() => {
303
+ let e = !1;
304
+ return U().then((n) => {
305
+ e || (n.initialize({ startOnLoad: !1 }), t(() => n), r(!1));
306
+ }).catch((t) => {
307
+ e || (a(t), r(!1));
308
+ }), () => {
309
+ e = !0;
310
+ };
311
+ }, []), {
312
+ mermaid: e,
313
+ loading: n,
314
+ error: i
315
+ };
316
+ }
317
+ //#endregion
318
+ //#region src/components/MermaidRenderer/useMermaidRender.ts
319
+ var le = 0;
320
+ function ue({ source: e, debounceMs: t = 300, isDark: n }) {
321
+ let { mermaid: r, loading: i } = W(), [a, o] = p(""), [s, c] = p(""), l = f(0);
322
+ return u(() => {
323
+ r && r.initialize({
324
+ startOnLoad: !1,
325
+ theme: n ? "dark" : "default",
326
+ securityLevel: "loose"
327
+ });
328
+ }, [r, n]), u(() => {
329
+ if (!r) return;
330
+ let n = (e || "").trim();
331
+ if (!n) {
332
+ o(""), c("");
333
+ return;
334
+ }
335
+ c("");
336
+ let i = ++l.current, a = setTimeout(async () => {
337
+ let e = `mermaid-render-${le++}`;
338
+ try {
339
+ let { svg: t } = await r.render(e, n);
340
+ if (i !== l.current) return;
341
+ o(t), c("");
342
+ } catch (e) {
343
+ if (i !== l.current) return;
344
+ console.error("Mermaid render error:", e);
345
+ let t = e instanceof Error ? e.message : String(e);
346
+ c(t?.split("\n")[0] || t);
347
+ } finally {
348
+ let t = document.getElementById(e) || document.getElementById(`d${e}`);
349
+ t && t.parentNode && t.parentNode.removeChild(t);
350
+ }
351
+ }, t);
352
+ return () => clearTimeout(a);
353
+ }, [
354
+ e,
355
+ n,
356
+ r,
357
+ t
358
+ ]), {
359
+ svg: a,
360
+ error: s,
361
+ loading: i
362
+ };
363
+ }
364
+ //#endregion
365
+ //#region node_modules/.store/@panzoom+panzoom@4.6.2/node_modules/@panzoom/panzoom/dist/panzoom.es.js
366
+ typeof window < "u" && (window.NodeList && !NodeList.prototype.forEach && (NodeList.prototype.forEach = Array.prototype.forEach), typeof window.CustomEvent != "function" && (window.CustomEvent = function(e, t) {
367
+ t ||= {
368
+ bubbles: !1,
369
+ cancelable: !1,
370
+ detail: null
371
+ };
372
+ var n = document.createEvent("CustomEvent");
373
+ return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;
374
+ }));
375
+ var de = typeof document < "u" && !!document.documentMode, fe;
376
+ function G() {
377
+ return fe ||= document.createElement("div").style;
378
+ }
379
+ var pe = [
380
+ "webkit",
381
+ "moz",
382
+ "ms"
383
+ ], K = {};
384
+ function me(e) {
385
+ if (K[e]) return K[e];
386
+ let t = G();
387
+ if (e in t) return K[e] = e;
388
+ let n = e[0].toUpperCase() + e.slice(1), r = pe.length;
389
+ for (; r--;) {
390
+ let i = `${pe[r]}${n}`;
391
+ if (i in t) return K[e] = i;
392
+ }
393
+ }
394
+ function q(e, t) {
395
+ return parseFloat(t[me(e)]) || 0;
396
+ }
397
+ function J(e, t, n = window.getComputedStyle(e)) {
398
+ let r = t === "border" ? "Width" : "";
399
+ return {
400
+ left: q(`${t}Left${r}`, n),
401
+ right: q(`${t}Right${r}`, n),
402
+ top: q(`${t}Top${r}`, n),
403
+ bottom: q(`${t}Bottom${r}`, n)
404
+ };
405
+ }
406
+ function Y(e, t, n) {
407
+ e.style[me(t)] = n;
408
+ }
409
+ function he(e, t) {
410
+ Y(e, "transition", `${me("transform")} ${t.duration}ms ${t.easing}`);
411
+ }
412
+ function ge(e, { x: t, y: n, scale: r, isSVG: i }, a) {
413
+ if (Y(e, "transform", `scale(${r}) translate(${t}px, ${n}px)`), i && de) {
414
+ let t = window.getComputedStyle(e).getPropertyValue("transform");
415
+ e.setAttribute("transform", t);
416
+ }
417
+ }
418
+ function _e(e) {
419
+ let t = e.parentNode;
420
+ (!t || t.nodeType !== 1) && (t = document.documentElement);
421
+ let n = window.getComputedStyle(e), r = window.getComputedStyle(t), i = e.getBoundingClientRect(), a = t.getBoundingClientRect();
422
+ return {
423
+ elem: {
424
+ style: n,
425
+ width: i.width,
426
+ height: i.height,
427
+ top: i.top,
428
+ bottom: i.bottom,
429
+ left: i.left,
430
+ right: i.right,
431
+ margin: J(e, "margin", n),
432
+ border: J(e, "border", n)
433
+ },
434
+ parent: {
435
+ style: r,
436
+ width: a.width,
437
+ height: a.height,
438
+ top: a.top,
439
+ bottom: a.bottom,
440
+ left: a.left,
441
+ right: a.right,
442
+ padding: J(t, "padding", r),
443
+ border: J(t, "border", r)
444
+ }
445
+ };
446
+ }
447
+ var X = {
448
+ down: "mousedown",
449
+ move: "mousemove",
450
+ up: "mouseup mouseleave"
451
+ };
452
+ typeof window < "u" && (typeof window.PointerEvent == "function" ? X = {
453
+ down: "pointerdown",
454
+ move: "pointermove",
455
+ up: "pointerup pointerleave pointercancel"
456
+ } : typeof window.TouchEvent == "function" && (X = {
457
+ down: "touchstart",
458
+ move: "touchmove",
459
+ up: "touchend touchcancel"
460
+ }));
461
+ function ve(e, t, n, r) {
462
+ X[e].split(" ").forEach((e) => {
463
+ t.addEventListener(e, n, r);
464
+ });
465
+ }
466
+ function ye(e, t, n) {
467
+ X[e].split(" ").forEach((e) => {
468
+ t.removeEventListener(e, n);
469
+ });
470
+ }
471
+ function be(e, t) {
472
+ let n = e.length;
473
+ for (; n--;) if (e[n].pointerId === t.pointerId) return n;
474
+ return -1;
475
+ }
476
+ function xe(e, t) {
477
+ let n;
478
+ if (t.touches) {
479
+ n = 0;
480
+ for (let r of t.touches) r.pointerId = n++, xe(e, r);
481
+ return;
482
+ }
483
+ n = be(e, t), n > -1 && e.splice(n, 1), e.push(t);
484
+ }
485
+ function Se(e, t) {
486
+ if (t.touches) {
487
+ for (; e.length;) e.pop();
488
+ return;
489
+ }
490
+ let n = be(e, t);
491
+ n > -1 && e.splice(n, 1);
492
+ }
493
+ function Ce(e) {
494
+ e = e.slice(0);
495
+ let t = e.pop(), n;
496
+ for (; n = e.pop();) t = {
497
+ clientX: (n.clientX - t.clientX) / 2 + t.clientX,
498
+ clientY: (n.clientY - t.clientY) / 2 + t.clientY
499
+ };
500
+ return t;
501
+ }
502
+ function we(e) {
503
+ if (e.length < 2) return 0;
504
+ let t = e[0], n = e[1];
505
+ return Math.sqrt(Math.abs(n.clientX - t.clientX) ** 2 + Math.abs(n.clientY - t.clientY) ** 2);
506
+ }
507
+ function Te(e) {
508
+ let t = e;
509
+ for (; t && t.parentNode;) {
510
+ if (t.parentNode === document) return !0;
511
+ t = t.parentNode instanceof ShadowRoot ? t.parentNode.host : t.parentNode;
512
+ }
513
+ return !1;
514
+ }
515
+ function Ee(e) {
516
+ return (e.getAttribute("class") || "").trim();
517
+ }
518
+ function De(e, t) {
519
+ return e.nodeType === 1 && ` ${Ee(e)} `.indexOf(` ${t} `) > -1;
520
+ }
521
+ function Oe(e, t) {
522
+ for (let n = e; n != null; n = n.parentNode) if (De(n, t.excludeClass) || t.exclude.indexOf(n) > -1) return !0;
523
+ return !1;
524
+ }
525
+ var ke = /^http:[\w\.\/]+svg$/;
526
+ function Ae(e) {
527
+ return ke.test(e.namespaceURI) && e.nodeName.toLowerCase() !== "svg";
528
+ }
529
+ function je(e) {
530
+ let t = {};
531
+ for (let n in e) e.hasOwnProperty(n) && (t[n] = e[n]);
532
+ return t;
533
+ }
534
+ var Me = {
535
+ animate: !1,
536
+ canvas: !1,
537
+ cursor: "move",
538
+ disablePan: !1,
539
+ disableZoom: !1,
540
+ disableXAxis: !1,
541
+ disableYAxis: !1,
542
+ duration: 200,
543
+ easing: "ease-in-out",
544
+ exclude: [],
545
+ excludeClass: "panzoom-exclude",
546
+ handleStartEvent: (e) => {
547
+ e.preventDefault(), e.stopPropagation();
548
+ },
549
+ maxScale: 4,
550
+ minScale: .125,
551
+ overflow: "hidden",
552
+ panOnlyWhenZoomed: !1,
553
+ pinchAndPan: !1,
554
+ relative: !1,
555
+ setTransform: ge,
556
+ startX: 0,
557
+ startY: 0,
558
+ startScale: 1,
559
+ step: .3,
560
+ touchAction: "none"
561
+ };
562
+ function Ne(e, t) {
563
+ if (!e) throw Error("Panzoom requires an element as an argument");
564
+ if (e.nodeType !== 1) throw Error("Panzoom requires an element with a nodeType of 1");
565
+ if (!Te(e)) throw Error("Panzoom should be called on elements that have been attached to the DOM");
566
+ t = {
567
+ ...Me,
568
+ ...t
569
+ };
570
+ let n = Ae(e), r = e.parentNode;
571
+ r.style.overflow = t.overflow, r.style.userSelect = "none", r.style.touchAction = t.touchAction, (t.canvas ? r : e).style.cursor = t.cursor, e.style.userSelect = "none", e.style.touchAction = t.touchAction, Y(e, "transformOrigin", typeof t.origin == "string" ? t.origin : n ? "0 0" : "50% 50%");
572
+ function i() {
573
+ r.style.overflow = "", r.style.userSelect = "", r.style.touchAction = "", r.style.cursor = "", e.style.cursor = "", e.style.userSelect = "", e.style.touchAction = "", Y(e, "transformOrigin", "");
574
+ }
575
+ function a(n = {}) {
576
+ for (let e in n) n.hasOwnProperty(e) && (t[e] = n[e]);
577
+ (n.hasOwnProperty("cursor") || n.hasOwnProperty("canvas")) && (r.style.cursor = e.style.cursor = "", (t.canvas ? r : e).style.cursor = t.cursor), n.hasOwnProperty("overflow") && (r.style.overflow = n.overflow), n.hasOwnProperty("touchAction") && (r.style.touchAction = n.touchAction, e.style.touchAction = n.touchAction);
578
+ }
579
+ let o = 0, s = 0, c = 1, l = !1;
580
+ h(t.startScale, {
581
+ animate: !1,
582
+ force: !0
583
+ }), setTimeout(() => {
584
+ m(t.startX, t.startY, {
585
+ animate: !1,
586
+ force: !0
587
+ });
588
+ });
589
+ function u(t, n, r) {
590
+ if (r.silent) return;
591
+ let i = new CustomEvent(t, { detail: n });
592
+ e.dispatchEvent(i);
593
+ }
594
+ function d(t, r, i) {
595
+ let a = {
596
+ x: o,
597
+ y: s,
598
+ scale: c,
599
+ isSVG: n,
600
+ originalEvent: i
601
+ };
602
+ return requestAnimationFrame(() => {
603
+ typeof r.animate == "boolean" && (r.animate ? he(e, r) : Y(e, "transition", "none")), r.setTransform(e, a, r), u(t, a, r), u("panzoomchange", a, r);
604
+ }), a;
605
+ }
606
+ function f(n, r, i, a) {
607
+ let l = {
608
+ ...t,
609
+ ...a
610
+ }, u = {
611
+ x: o,
612
+ y: s,
613
+ opts: l
614
+ };
615
+ if (!a?.force && (l.disablePan || l.panOnlyWhenZoomed && c === l.startScale)) return u;
616
+ if (n = parseFloat(n), r = parseFloat(r), l.disableXAxis || (u.x = (l.relative ? o : 0) + n), l.disableYAxis || (u.y = (l.relative ? s : 0) + r), l.contain) {
617
+ let t = _e(e), n = t.elem.width / c, r = t.elem.height / c, a = n * i, o = r * i, s = (a - n) / 2, d = (o - r) / 2;
618
+ if (l.contain === "inside") {
619
+ let e = (-t.elem.margin.left - t.parent.padding.left + s) / i, n = (t.parent.width - a - t.parent.padding.left - t.elem.margin.left - t.parent.border.left - t.parent.border.right + s) / i;
620
+ u.x = Math.max(Math.min(u.x, n), e);
621
+ let r = (-t.elem.margin.top - t.parent.padding.top + d) / i, c = (t.parent.height - o - t.parent.padding.top - t.elem.margin.top - t.parent.border.top - t.parent.border.bottom + d) / i;
622
+ u.y = Math.max(Math.min(u.y, c), r);
623
+ } else if (l.contain === "outside") {
624
+ let e = (-(a - t.parent.width) - t.parent.padding.left - t.parent.border.left - t.parent.border.right + s) / i, n = (s - t.parent.padding.left) / i;
625
+ u.x = Math.max(Math.min(u.x, n), e);
626
+ let r = (-(o - t.parent.height) - t.parent.padding.top - t.parent.border.top - t.parent.border.bottom + d) / i, c = (d - t.parent.padding.top) / i;
627
+ u.y = Math.max(Math.min(u.y, c), r);
628
+ }
629
+ }
630
+ return l.roundPixels && (u.x = Math.round(u.x), u.y = Math.round(u.y)), u;
631
+ }
632
+ function p(n, r) {
633
+ let i = {
634
+ ...t,
635
+ ...r
636
+ }, a = {
637
+ scale: c,
638
+ opts: i
639
+ };
640
+ if (!r?.force && i.disableZoom) return a;
641
+ let o = t.minScale, s = t.maxScale;
642
+ if (i.contain) {
643
+ let n = _e(e), r = n.elem.width / c, i = n.elem.height / c;
644
+ if (r > 1 && i > 1) {
645
+ let e = n.parent.width - n.parent.border.left - n.parent.border.right, a = n.parent.height - n.parent.border.top - n.parent.border.bottom, c = e / r, l = a / i;
646
+ t.contain === "inside" ? s = Math.min(s, c, l) : t.contain === "outside" && (o = Math.max(o, c, l));
647
+ }
648
+ }
649
+ return a.scale = Math.min(Math.max(n, o), s), a;
650
+ }
651
+ function m(e, t, r, i) {
652
+ let a = f(e, t, c, r);
653
+ return o !== a.x || s !== a.y ? (o = a.x, s = a.y, d("panzoompan", a.opts, i)) : {
654
+ x: o,
655
+ y: s,
656
+ scale: c,
657
+ isSVG: n,
658
+ originalEvent: i
659
+ };
660
+ }
661
+ function h(e, t, n) {
662
+ let r = p(e, t), i = r.opts;
663
+ if (!t?.force && i.disableZoom) return;
664
+ e = r.scale;
665
+ let a = o, l = s;
666
+ if (i.focal) {
667
+ let t = i.focal;
668
+ a = (t.x / e - t.x / c + o * e) / e, l = (t.y / e - t.y / c + s * e) / e;
669
+ }
670
+ let u = f(a, l, e, {
671
+ relative: !1,
672
+ force: !0
673
+ });
674
+ return o = u.x, s = u.y, c = e, d("panzoomzoom", i, n);
675
+ }
676
+ function g(e, n) {
677
+ let r = {
678
+ ...t,
679
+ animate: !0,
680
+ ...n
681
+ };
682
+ return h(c * Math.exp((e ? 1 : -1) * r.step), r);
683
+ }
684
+ function _(e) {
685
+ return g(!0, e);
686
+ }
687
+ function v(e) {
688
+ return g(!1, e);
689
+ }
690
+ function y(t, r, i, a) {
691
+ let o = _e(e), s = {
692
+ width: o.parent.width - o.parent.padding.left - o.parent.padding.right - o.parent.border.left - o.parent.border.right,
693
+ height: o.parent.height - o.parent.padding.top - o.parent.padding.bottom - o.parent.border.top - o.parent.border.bottom
694
+ }, l = r.clientX - o.parent.left - o.parent.padding.left - o.parent.border.left - o.elem.margin.left, u = r.clientY - o.parent.top - o.parent.padding.top - o.parent.border.top - o.elem.margin.top;
695
+ n || (l -= o.elem.width / c / 2, u -= o.elem.height / c / 2);
696
+ let d = {
697
+ x: l / s.width * (s.width * t),
698
+ y: u / s.height * (s.height * t)
699
+ };
700
+ return h(t, {
701
+ ...i,
702
+ animate: !1,
703
+ focal: d
704
+ }, a);
705
+ }
706
+ function ee(e, n) {
707
+ e.preventDefault();
708
+ let r = {
709
+ ...t,
710
+ ...n,
711
+ animate: !1
712
+ }, i = (e.deltaY === 0 && e.deltaX ? e.deltaX : e.deltaY) < 0 ? 1 : -1, a = p(c * Math.exp(i * r.step / 3), r).scale;
713
+ return y(a, e, r, e);
714
+ }
715
+ function te(e) {
716
+ let n = {
717
+ ...t,
718
+ animate: !0,
719
+ force: !0,
720
+ ...e
721
+ };
722
+ c = p(n.startScale, n).scale;
723
+ let r = f(n.startX, n.startY, c, n);
724
+ return o = r.x, s = r.y, d("panzoomreset", n);
725
+ }
726
+ let b, x, S, C, w, T, E = [];
727
+ function D(e) {
728
+ if (Oe(e.target, t)) return;
729
+ xe(E, e), l = !0, t.handleStartEvent(e), b = o, x = s, u("panzoomstart", {
730
+ x: o,
731
+ y: s,
732
+ scale: c,
733
+ isSVG: n,
734
+ originalEvent: e
735
+ }, t);
736
+ let r = Ce(E);
737
+ S = r.clientX, C = r.clientY, w = c, T = we(E);
738
+ }
739
+ function ne(e) {
740
+ if (!l || b === void 0 || x === void 0 || S === void 0 || C === void 0) return;
741
+ xe(E, e);
742
+ let n = Ce(E), r = E.length > 1, i = c;
743
+ r && (T === 0 && (T = we(E)), i = p((we(E) - T) * t.step / 80 + w).scale, y(i, n, { animate: !1 }, e)), (!r || t.pinchAndPan) && m(b + (n.clientX - S) / i, x + (n.clientY - C) / i, { animate: !1 }, e);
744
+ }
745
+ function O(e) {
746
+ E.length === 1 && u("panzoomend", {
747
+ x: o,
748
+ y: s,
749
+ scale: c,
750
+ isSVG: n,
751
+ originalEvent: e
752
+ }, t), Se(E, e), l && (l = !1, b = x = S = C = void 0);
753
+ }
754
+ let k = !1;
755
+ function A() {
756
+ k || (k = !0, ve("down", t.canvas ? r : e, D), ve("move", document, ne, { passive: !0 }), ve("up", document, O, { passive: !0 }));
757
+ }
758
+ function j() {
759
+ k = !1, ye("down", t.canvas ? r : e, D), ye("move", document, ne), ye("up", document, O);
760
+ }
761
+ return t.noBind || A(), {
762
+ bind: A,
763
+ destroy: j,
764
+ eventNames: X,
765
+ getPan: () => ({
766
+ x: o,
767
+ y: s
768
+ }),
769
+ getScale: () => c,
770
+ getOptions: () => je(t),
771
+ handleDown: D,
772
+ handleMove: ne,
773
+ handleUp: O,
774
+ pan: m,
775
+ reset: te,
776
+ resetStyle: i,
777
+ setOptions: a,
778
+ setStyle: (t, n) => Y(e, t, n),
779
+ zoom: h,
780
+ zoomIn: _,
781
+ zoomOut: v,
782
+ zoomToPoint: y,
783
+ zoomWithWheel: ee
784
+ };
785
+ }
786
+ Ne.defaultOptions = Me;
787
+ //#endregion
788
+ //#region src/components/MermaidRenderer/usePanzoom.ts
789
+ function Pe({ contentRef: e, wrapperRef: t, enabled: n, svg: r, isFullscreen: i }) {
790
+ let a = f(null);
791
+ return u(() => {
792
+ if (!n || !e.current || !r) {
793
+ a.current &&= (a.current.destroy(), null);
794
+ return;
795
+ }
796
+ a.current &&= (a.current.destroy(), null);
797
+ let i = e.current, o = Ne(i, {
798
+ maxScale: 5,
799
+ minScale: .1,
800
+ startScale: 1,
801
+ contain: "outside"
802
+ });
803
+ a.current = {
804
+ destroy: () => o.destroy(),
805
+ zoomWithWheel: o.zoomWithWheel,
806
+ zoomIn: () => o.zoomIn(),
807
+ zoomOut: () => o.zoomOut(),
808
+ reset: () => o.reset()
809
+ };
810
+ let s = t.current, c = a.current.zoomWithWheel;
811
+ return s?.addEventListener("wheel", c), () => {
812
+ s?.removeEventListener("wheel", c), a.current &&= (a.current.destroy(), null);
813
+ };
814
+ }, [
815
+ r,
816
+ i,
817
+ n,
818
+ e,
819
+ t
820
+ ]), a;
821
+ }
822
+ var Z = {
823
+ previewArea: "_previewArea_d2mv6_2",
824
+ previewContent: "_previewContent_d2mv6_22",
825
+ errorTip: "_errorTip_d2mv6_38",
826
+ emptyTip: "_emptyTip_d2mv6_50"
827
+ }, Fe = r(), Ie = [
828
+ "pointerdown",
829
+ "mousedown",
830
+ "pointerup",
831
+ "mouseup",
832
+ "click"
833
+ ], Le = /* @__PURE__ */ new WeakMap();
834
+ function Re(e, t, n) {
835
+ ze(e);
836
+ let r = (r) => {
837
+ let i = r.target;
838
+ e.contains(i) && ((!n || n(i)) && (r.preventDefault(), r.stopPropagation(), r.stopImmediatePropagation()), r.type === "click" && t?.(r));
839
+ };
840
+ for (let e of Ie) document.addEventListener(e, r, !0);
841
+ Le.set(e, r);
842
+ }
843
+ function ze(e) {
844
+ let t = Le.get(e);
845
+ if (t) {
846
+ for (let e of Ie) document.removeEventListener(e, t, !0);
847
+ Le.delete(e);
848
+ }
849
+ }
850
+ function Be(e, t) {
851
+ let n = e.wrapper.getBoundingClientRect();
852
+ return {
853
+ width: n.width + t,
854
+ height: n.height + t,
855
+ realWidth: n.width,
856
+ realHeight: n.height
857
+ };
858
+ }
859
+ function Ve(e, t) {
860
+ let { elementDimensions: n, popoverDimensions: r, popoverPadding: i, popoverArrowDimensions: a } = t;
861
+ return e === "start" ? Math.max(Math.min(n.top - i, window.innerHeight - r.realHeight - a.width), a.width) : e === "end" ? Math.max(Math.min(n.top - r?.realHeight + n.height + i, window.innerHeight - r?.realHeight - a.width), a.width) : e === "center" ? Math.max(Math.min(n.top + n.height / 2 - r?.realHeight / 2, window.innerHeight - r?.realHeight - a.width), a.width) : 0;
862
+ }
863
+ function He(e, t) {
864
+ let { elementDimensions: n, popoverDimensions: r, popoverPadding: i, popoverArrowDimensions: a } = t;
865
+ return e === "start" ? Math.max(Math.min(n.left - i, window.innerWidth - r.realWidth - a.width), a.width) : e === "end" ? Math.max(Math.min(n.left - r?.realWidth + n.width + i, window.innerWidth - r?.realWidth - a.width), a.width) : e === "center" ? Math.max(Math.min(n.left + n.width / 2 - r?.realWidth / 2, window.innerWidth - r?.realWidth - a.width), a.width) : 0;
866
+ }
867
+ function Ue(e, t, n) {
868
+ let { align: r, side: i } = n, a = n.centered ? "over" : i, o = n.padding, s = Be(e, n.offset), c = e.arrow.getBoundingClientRect(), l = t.getBoundingClientRect(), u = l.top - s.height, d = u >= 0, f = window.innerHeight - (l.bottom + s.height), p = f >= 0, m = l.left - s.width, h = m >= 0, g = window.innerWidth - (l.right + s.width), _ = g >= 0, v = !d && !p && !h && !_, y = a;
869
+ if (a === "top" && d ? _ = h = p = !1 : a === "bottom" && p ? _ = h = d = !1 : a === "left" && h ? _ = d = p = !1 : a === "right" && _ && (h = d = p = !1), a === "over") {
870
+ let t = window.innerWidth / 2 - s.realWidth / 2, n = window.innerHeight / 2 - s.realHeight / 2;
871
+ e.wrapper.style.left = `${t}px`, e.wrapper.style.right = "auto", e.wrapper.style.top = `${n}px`, e.wrapper.style.bottom = "auto";
872
+ } else if (v) {
873
+ let t = window.innerWidth / 2 - s?.realWidth / 2;
874
+ e.wrapper.style.left = `${t}px`, e.wrapper.style.right = "auto", e.wrapper.style.bottom = "10px", e.wrapper.style.top = "auto";
875
+ } else if (h) {
876
+ let t = Math.min(m, window.innerWidth - s?.realWidth - c.width), n = Ve(r, {
877
+ elementDimensions: l,
878
+ popoverDimensions: s,
879
+ popoverPadding: o,
880
+ popoverArrowDimensions: c
881
+ });
882
+ e.wrapper.style.left = `${t}px`, e.wrapper.style.top = `${n}px`, e.wrapper.style.bottom = "auto", e.wrapper.style.right = "auto", y = "left";
883
+ } else if (_) {
884
+ let t = Math.min(g, window.innerWidth - s?.realWidth - c.width), n = Ve(r, {
885
+ elementDimensions: l,
886
+ popoverDimensions: s,
887
+ popoverPadding: o,
888
+ popoverArrowDimensions: c
889
+ });
890
+ e.wrapper.style.right = `${t}px`, e.wrapper.style.top = `${n}px`, e.wrapper.style.bottom = "auto", e.wrapper.style.left = "auto", y = "right";
891
+ } else if (d) {
892
+ let t = Math.min(u, window.innerHeight - s.realHeight - c.width), n = He(r, {
893
+ elementDimensions: l,
894
+ popoverDimensions: s,
895
+ popoverPadding: o,
896
+ popoverArrowDimensions: c
897
+ });
898
+ e.wrapper.style.top = `${t}px`, e.wrapper.style.left = `${n}px`, e.wrapper.style.bottom = "auto", e.wrapper.style.right = "auto", y = "top";
899
+ } else if (p) {
900
+ let t = Math.min(f, window.innerHeight - s?.realHeight - c.width), n = He(r, {
901
+ elementDimensions: l,
902
+ popoverDimensions: s,
903
+ popoverPadding: o,
904
+ popoverArrowDimensions: c
905
+ });
906
+ e.wrapper.style.left = `${n}px`, e.wrapper.style.bottom = `${t}px`, e.wrapper.style.top = "auto", e.wrapper.style.right = "auto", y = "bottom";
907
+ }
908
+ qe(e, v ? "over" : y, r, t), [...e.wrapper.classList].filter((e) => e.startsWith("driver-popover-side-") || e.startsWith("driver-popover-align-")).forEach((t) => e.wrapper.classList.remove(t)), e.wrapper.classList.add(`driver-popover-side-${y}`), e.wrapper.classList.add(`driver-popover-align-${r}`);
909
+ }
910
+ function We(e, t, n, r, i, a = 10) {
911
+ let o = r - n;
912
+ return e <= n && t >= r ? i === "start" ? 15 + a / 2 : i === "end" ? o - 15 - a / 2 : o / 2 : (Math.min(Math.max(e, n), r) + Math.min(Math.max(t, n), r)) / 2 - n;
913
+ }
914
+ function Ge(e, t, n = 10) {
915
+ let r = t - 15 - n;
916
+ if (r < 15) return Math.max(0, (t - n) / 2);
917
+ let i = e - n / 2;
918
+ return Math.min(Math.max(i, 15), r);
919
+ }
920
+ function Ke(e, t, n) {
921
+ return e === "left" || e === "right" ? t.bottom > n.top && t.top < n.bottom ? e : t.bottom <= n.top ? "bottom" : "top" : t.right > n.left && t.left < n.right ? e : t.right <= n.left ? "right" : "left";
922
+ }
923
+ function qe(e, t, n, r) {
924
+ let i = e.arrow;
925
+ if (i.className = "driver-popover-arrow", i.style.top = "", i.style.right = "", i.style.bottom = "", i.style.left = "", t === "over") {
926
+ i.classList.add("driver-popover-arrow-none");
927
+ return;
928
+ }
929
+ let a = r.getBoundingClientRect(), o = e.wrapper.getBoundingClientRect(), s = Ke(t, a, o);
930
+ i.classList.add(`driver-popover-arrow-side-${s}`);
931
+ let c = i.getBoundingClientRect().width || 10;
932
+ if (s === "left" || s === "right") {
933
+ let e = We(a.top, a.bottom, o.top, o.bottom, n, c);
934
+ i.style.top = `${Ge(e, o.height, c)}px`;
935
+ } else {
936
+ let e = We(a.left, a.right, o.left, o.right, n, c);
937
+ i.style.left = `${Ge(e, o.width, c)}px`;
938
+ }
939
+ }
940
+ function Q(e) {
941
+ return typeof e == "function" ? e() : typeof e == "string" ? document.querySelector(e) : e;
942
+ }
943
+ function Je(e) {
944
+ let t = window.getComputedStyle(e);
945
+ return [
946
+ t.overflow,
947
+ t.overflowX,
948
+ t.overflowY
949
+ ].some((e) => e === "auto" || e === "scroll");
950
+ }
951
+ function Ye(e, t, n, r) {
952
+ return (e /= r / 2) < 1 ? n / 2 * e * e + t : -n / 2 * (--e * (e - 2) - 1) + t;
953
+ }
954
+ function Xe(e) {
955
+ let t = "a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])";
956
+ return e.flatMap((e) => {
957
+ let n = e.matches(t), r = Array.from(e.querySelectorAll(t));
958
+ return [...n ? [e] : [], ...r];
959
+ }).filter((e) => getComputedStyle(e).pointerEvents !== "none" && et(e));
960
+ }
961
+ function Ze(e, t) {
962
+ if (!e || $e(e)) return;
963
+ let n = e.offsetHeight > window.innerHeight;
964
+ e.scrollIntoView({
965
+ behavior: !t || Qe(e) ? "auto" : "smooth",
966
+ inline: "center",
967
+ block: n ? "start" : "center"
968
+ });
969
+ }
970
+ function Qe(e) {
971
+ if (!e || !e.parentElement) return;
972
+ let t = e.parentElement;
973
+ return t.scrollHeight > t.clientHeight;
974
+ }
975
+ function $e(e) {
976
+ let t = e.getBoundingClientRect();
977
+ return t.top >= 0 && t.left >= 0 && t.bottom <= (window.innerHeight || document.documentElement.clientHeight) && t.right <= (window.innerWidth || document.documentElement.clientWidth);
978
+ }
979
+ function et(e) {
980
+ return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length);
981
+ }
982
+ function tt(e) {
983
+ e && (e.wrapper.style.display = "none");
984
+ }
985
+ function nt(e, t) {
986
+ let n = it();
987
+ document.body.appendChild(n.wrapper);
988
+ let { title: r, description: i, showButtons: a, disableButtons: o, showProgress: s, nextBtnText: c, prevBtnText: l, progressText: u } = t;
989
+ n.nextButton.innerHTML = c, n.previousButton.innerHTML = l, n.progress.innerHTML = u, t.doneButton && n.nextButton.classList.add("driver-popover-done-btn"), r ? (n.title.innerHTML = r, n.title.style.display = "block") : n.title.style.display = "none", i ? (n.description.innerHTML = i, n.description.style.display = "block") : n.description.style.display = "none";
990
+ let d = a.includes("next") || a.includes("previous") || s;
991
+ n.closeButton.style.display = a.includes("close") ? "block" : "none", d ? (n.footer.style.display = "flex", n.progress.style.display = s ? "block" : "none", n.nextButton.style.display = a.includes("next") ? "block" : "none", n.previousButton.style.display = a.includes("previous") ? "block" : "none") : n.footer.style.display = "none", o.includes("next") && (n.nextButton.disabled = !0, n.nextButton.classList.add("driver-popover-btn-disabled")), o.includes("previous") && (n.previousButton.disabled = !0, n.previousButton.classList.add("driver-popover-btn-disabled")), o.includes("close") && (n.closeButton.disabled = !0, n.closeButton.classList.add("driver-popover-btn-disabled"));
992
+ let f = n.wrapper;
993
+ f.style.display = "block", f.style.left = "", f.style.top = "", f.style.bottom = "", f.style.right = "", f.id = "driver-popover-content", f.setAttribute("role", "dialog"), f.setAttribute("aria-labelledby", "driver-popover-title"), f.setAttribute("aria-describedby", "driver-popover-description");
994
+ let p = n.arrow;
995
+ p.className = "driver-popover-arrow", f.className = `driver-popover ${t.popoverClass || ""}`.trim(), Re(n.wrapper, (e) => {
996
+ let n = e.target;
997
+ if (n.closest(".driver-popover-next-btn")) return t.onNextClick?.();
998
+ if (n.closest(".driver-popover-prev-btn")) return t.onPrevClick?.();
999
+ if (n.closest(".driver-popover-close-btn")) return t.onCloseClick?.();
1000
+ }, (e) => n.description.contains(e) || n.title.contains(e) ? !1 : !!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")), t.onRender?.(n), Ue(n, e, t.position), rt(n, e, t.position), Ze(f, t.smoothScroll);
1001
+ let m = Xe([f, e]);
1002
+ return m.length > 0 && m[0].focus(), n;
1003
+ }
1004
+ function rt(e, t, n) {
1005
+ e.wrapper.querySelectorAll("img").forEach((r) => {
1006
+ if (r.complete) return;
1007
+ let i = () => Ue(e, t, n);
1008
+ r.addEventListener("load", i, { once: !0 }), r.addEventListener("error", i, { once: !0 });
1009
+ });
1010
+ }
1011
+ function it() {
1012
+ let e = document.createElement("div");
1013
+ e.classList.add("driver-popover");
1014
+ let t = document.createElement("div");
1015
+ t.classList.add("driver-popover-arrow");
1016
+ let n = document.createElement("header");
1017
+ n.id = "driver-popover-title", n.classList.add("driver-popover-title"), n.style.display = "none", n.innerText = "Popover Title";
1018
+ let r = document.createElement("div");
1019
+ r.id = "driver-popover-description", r.classList.add("driver-popover-description"), r.style.display = "none", r.innerText = "Popover description is here";
1020
+ let i = document.createElement("button");
1021
+ i.type = "button", i.classList.add("driver-popover-close-btn"), i.setAttribute("aria-label", "Close"), i.innerHTML = "&times;";
1022
+ let a = document.createElement("footer");
1023
+ a.classList.add("driver-popover-footer");
1024
+ let o = document.createElement("span");
1025
+ o.classList.add("driver-popover-progress-text"), o.innerText = "";
1026
+ let s = document.createElement("span");
1027
+ s.classList.add("driver-popover-navigation-btns");
1028
+ let c = document.createElement("button");
1029
+ c.type = "button", c.classList.add("driver-popover-prev-btn", "driver-popover-footer-btn"), c.innerHTML = "Previous";
1030
+ let l = document.createElement("button");
1031
+ return l.type = "button", l.classList.add("driver-popover-next-btn", "driver-popover-footer-btn"), l.innerHTML = "Next", s.appendChild(c), s.appendChild(l), a.appendChild(o), a.appendChild(s), e.appendChild(i), e.appendChild(t), e.appendChild(n), e.appendChild(r), e.appendChild(a), {
1032
+ wrapper: e,
1033
+ arrow: t,
1034
+ title: n,
1035
+ description: r,
1036
+ footer: a,
1037
+ previousButton: c,
1038
+ nextButton: l,
1039
+ closeButton: i,
1040
+ footerButtons: s,
1041
+ progress: o
1042
+ };
1043
+ }
1044
+ function at(e) {
1045
+ e && (ze(e.wrapper), e.wrapper.parentElement?.removeChild(e.wrapper));
1046
+ }
1047
+ function ot(e, t) {
1048
+ let n = window.innerWidth, r = window.innerHeight, i = t.padding, a = t.radius, o = e.width + i * 2, s = e.height + i * 2, c = Math.min(a, o / 2, s / 2), l = Math.floor(Math.max(c, 0)), u = e.x - i + l, d = e.y - i, f = o - l * 2, p = s - l * 2;
1049
+ return `M${n},0L0,0L0,${r}L${n},${r}L${n},0Z
1050
+ M${u},${d} h${f} a${l},${l} 0 0 1 ${l},${l} v${p} a${l},${l} 0 0 1 -${l},${l} h-${f} a${l},${l} 0 0 1 -${l},-${l} v-${p} a${l},${l} 0 0 1 ${l},-${l} z`;
1051
+ }
1052
+ function st(e, t, n, r, i) {
1053
+ let a = e.getState("__activeStagePosition"), o = a || r.getBoundingClientRect(), s = i.getBoundingClientRect();
1054
+ a = {
1055
+ x: Ye(t, o.x, s.x - o.x, n),
1056
+ y: Ye(t, o.y, s.y - o.y, n),
1057
+ width: Ye(t, o.width, s.width - o.width, n),
1058
+ height: Ye(t, o.height, s.height - o.height, n)
1059
+ }, dt(e, a), e.setState("__activeStagePosition", a);
1060
+ }
1061
+ function ct(e, t) {
1062
+ if (!t) return;
1063
+ let n = t.getBoundingClientRect(), r = {
1064
+ x: n.x,
1065
+ y: n.y,
1066
+ width: n.width,
1067
+ height: n.height
1068
+ };
1069
+ e.setState("__activeStagePosition", r), dt(e, r);
1070
+ }
1071
+ function lt(e) {
1072
+ let t = e.getState("__activeStagePosition"), n = e.getState("__overlaySvg");
1073
+ if (!t) return;
1074
+ if (!n) {
1075
+ console.warn("No stage svg found.");
1076
+ return;
1077
+ }
1078
+ let r = window.innerWidth, i = window.innerHeight;
1079
+ n.setAttribute("viewBox", `0 0 ${r} ${i}`);
1080
+ }
1081
+ function ut(e, t) {
1082
+ let n = pt(e, t);
1083
+ document.body.appendChild(n), Re(n, (t) => {
1084
+ t.target.tagName === "path" && e.emit("overlayClick");
1085
+ }), e.setState("__overlaySvg", n);
1086
+ }
1087
+ function dt(e, t) {
1088
+ let n = e.getState("__overlaySvg");
1089
+ if (!n) {
1090
+ ut(e, t);
1091
+ return;
1092
+ }
1093
+ let r = n.firstElementChild;
1094
+ if (r?.tagName !== "path") throw Error("no path element found in stage svg");
1095
+ r.setAttribute("d", ot(t, ft(e)));
1096
+ }
1097
+ function ft(e) {
1098
+ return {
1099
+ padding: e.getConfig("stagePadding") || 0,
1100
+ radius: e.getConfig("stageRadius") || 0
1101
+ };
1102
+ }
1103
+ function pt(e, t) {
1104
+ let n = window.innerWidth, r = window.innerHeight, i = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1105
+ i.classList.add("driver-overlay", "driver-overlay-animated"), i.setAttribute("viewBox", `0 0 ${n} ${r}`), i.setAttribute("xmlSpace", "preserve"), i.setAttribute("xmlnsXlink", "http://www.w3.org/1999/xlink"), i.setAttribute("version", "1.1"), i.setAttribute("preserveAspectRatio", "xMinYMin slice"), i.style.fillRule = "evenodd", i.style.clipRule = "evenodd", i.style.strokeLinejoin = "round", i.style.strokeMiterlimit = "2", i.style.zIndex = "10000", i.style.position = "fixed", i.style.top = "0", i.style.left = "0", i.style.width = "100%", i.style.height = "100%";
1106
+ let a = document.createElementNS("http://www.w3.org/2000/svg", "path");
1107
+ return a.setAttribute("d", ot(t, ft(e))), a.style.fill = e.getConfig("overlayColor") || "rgb(0,0,0)", a.style.opacity = `${e.getConfig("overlayOpacity")}`, a.style.pointerEvents = "auto", a.style.cursor = "auto", i.appendChild(a), i;
1108
+ }
1109
+ function mt(e) {
1110
+ let t = e.getState("__overlaySvg");
1111
+ t && (ze(t), t.remove());
1112
+ }
1113
+ var ht = "{{current}} of {{total}}";
1114
+ function gt(e, t) {
1115
+ return !(t.skipMissingElement ?? e.getConfig("skipMissingElement")) || !t.element ? !1 : !Q(t.element);
1116
+ }
1117
+ function $(e, t, n) {
1118
+ let r = e.getConfig("steps") || [];
1119
+ for (let i = t; i >= 0 && i < r.length; i += n) if (!gt(e, r[i])) return i;
1120
+ }
1121
+ function _t(e, t) {
1122
+ let n = e.getState("activeIndex"), r = n !== void 0 && $(e, n + 1, 1) === void 0, i = t?.popover?.onDoneClick || e.getConfig("onDoneClick");
1123
+ return r && i ? i : t?.popover?.onNextClick || e.getConfig("onNextClick");
1124
+ }
1125
+ function vt(e, t) {
1126
+ return t?.popover?.onPrevClick || e.getConfig("onPrevClick");
1127
+ }
1128
+ function yt(e, t) {
1129
+ return t?.popover?.onCloseClick || e.getConfig("onCloseClick");
1130
+ }
1131
+ function bt(e, t, n) {
1132
+ let r = e.getConfig("steps") || [], i = r[t], a = i.popover || {}, o = $(e, t + 1, 1) !== void 0, s = $(e, t - 1, -1) !== void 0, c = a.doneBtnText || e.getConfig("doneBtnText") || "Done", l = e.getConfig("allowClose"), u = a.showProgress === void 0 ? e.getConfig("showProgress") : a.showProgress, d = (a.progressText || e.getConfig("progressText") || ht).replace("{{current}}", `${t + 1}`).replace("{{total}}", `${r.length}`), f = a.showButtons || e.getConfig("showButtons"), p = [
1133
+ "next",
1134
+ "previous",
1135
+ ...l ? ["close"] : []
1136
+ ].filter((e) => !f?.length || f.includes(e)), m = a.onNextClick || e.getConfig("onNextClick"), h = a.onPrevClick || e.getConfig("onPrevClick"), g = a.onCloseClick || e.getConfig("onCloseClick");
1137
+ return {
1138
+ ...i,
1139
+ popover: {
1140
+ showButtons: p,
1141
+ nextBtnText: o ? void 0 : c,
1142
+ disableButtons: [...s ? [] : ["previous"]],
1143
+ showProgress: u,
1144
+ onNextClick: m || n.onNextClick,
1145
+ onPrevClick: h || n.onPrevClick,
1146
+ onCloseClick: g || n.onCloseClick,
1147
+ ...a,
1148
+ progressText: d
1149
+ }
1150
+ };
1151
+ }
1152
+ function xt(e, t, n) {
1153
+ let r = e.getConfig("stagePadding") || 0;
1154
+ return {
1155
+ side: n.popover?.side || "bottom",
1156
+ align: n.popover?.align || "start",
1157
+ offset: r + (e.getConfig("popoverOffset") || 0),
1158
+ padding: r,
1159
+ centered: t.id === "driver-dummy-element"
1160
+ };
1161
+ }
1162
+ function St(e, t, n) {
1163
+ let r = n.popover || {}, i = e.getState("activeIndex"), a = i !== void 0 && $(e, i + 1, 1) === void 0;
1164
+ return {
1165
+ title: r.title,
1166
+ description: r.description,
1167
+ showButtons: r.showButtons || e.getConfig("showButtons"),
1168
+ disableButtons: r.disableButtons || e.getConfig("disableButtons") || [],
1169
+ showProgress: r.showProgress || e.getConfig("showProgress") || !1,
1170
+ progressText: r.progressText ?? (e.getConfig("progressText") || ht),
1171
+ nextBtnText: r.nextBtnText ?? (e.getConfig("nextBtnText") || "Next"),
1172
+ prevBtnText: r.prevBtnText ?? (e.getConfig("prevBtnText") || "Previous"),
1173
+ doneButton: a,
1174
+ popoverClass: r.popoverClass || e.getConfig("popoverClass") || "",
1175
+ smoothScroll: e.getConfig("smoothScroll"),
1176
+ onNextClick: () => {
1177
+ let r = _t(e, n);
1178
+ return r ? r(t, n, e.getHookOpts()) : e.emit("nextClick");
1179
+ },
1180
+ onPrevClick: () => {
1181
+ let r = vt(e, n);
1182
+ return r ? r(t, n, e.getHookOpts()) : e.emit("prevClick");
1183
+ },
1184
+ onCloseClick: () => {
1185
+ let r = yt(e, n);
1186
+ return r ? r(t, n, e.getHookOpts()) : e.emit("closeClick");
1187
+ },
1188
+ onRender: (t) => {
1189
+ e.setState("popover", t), (r.onPopoverRender || e.getConfig("onPopoverRender"))?.(t, e.getHookOpts());
1190
+ },
1191
+ position: xt(e, t, n)
1192
+ };
1193
+ }
1194
+ function Ct(e, t, n) {
1195
+ at(e.getState("popover")), nt(t, St(e, t, n));
1196
+ }
1197
+ function wt(e, t, n) {
1198
+ let r = e.getState("popover");
1199
+ r && Ue(r, t, xt(e, t, n));
1200
+ }
1201
+ function Tt() {
1202
+ let e = document.getElementById("driver-dummy-element");
1203
+ if (e) return e;
1204
+ let t = document.createElement("div");
1205
+ return t.id = "driver-dummy-element", t.style.width = "0", t.style.height = "0", t.style.pointerEvents = "none", t.style.opacity = "0", t.style.position = "fixed", t.style.top = "50%", t.style.left = "50%", document.body.appendChild(t), t;
1206
+ }
1207
+ function Et(e, t) {
1208
+ let n = Q(t.element);
1209
+ n ||= Tt(), Ot(e, n, t);
1210
+ }
1211
+ function Dt(e) {
1212
+ let t = e.getState("__activeElement"), n = e.getState("__activeStep");
1213
+ t && (ct(e, t), lt(e), wt(e, t, n));
1214
+ }
1215
+ function Ot(e, t, n) {
1216
+ let r = e.getConfig("duration") || 400, i = Date.now(), a = e.getState("__activeStep"), o = e.getState("__activeElement") || t, s = !o || o === t, c = t.id === "driver-dummy-element", l = o.id === "driver-dummy-element", u = e.getConfig("animate"), d = n.onHighlightStarted || e.getConfig("onHighlightStarted"), f = n?.onHighlighted || e.getConfig("onHighlighted"), p = a?.onDeselected || e.getConfig("onDeselected"), m = e.getHookOpts();
1217
+ !s && p && p(l ? void 0 : o, a, m), d && d(c ? void 0 : t, n, m);
1218
+ let h = !s && u, g = !1;
1219
+ tt(e.getState("popover")), e.setState("previousStep", a), e.setState("previousElement", o), e.setState("activeStep", n), e.setState("activeElement", t);
1220
+ let _ = () => {
1221
+ if (e.getState("__transitionCallback") !== _) return;
1222
+ let s = Date.now() - i, l = r - s <= r / 2;
1223
+ n.popover && l && !g && h && (Ct(e, t, n), g = !0), e.getConfig("animate") && s < r ? st(e, s, r, o, t) : (ct(e, t), f && f(c ? void 0 : t, n, e.getHookOpts()), e.setState("__transitionCallback", void 0), e.setState("__previousStep", a), e.setState("__previousElement", o), e.setState("__activeStep", n), e.setState("__activeElement", t)), window.requestAnimationFrame(_);
1224
+ };
1225
+ e.setState("__transitionCallback", _), window.requestAnimationFrame(_), Ze(t, e.getConfig("smoothScroll")), !h && n.popover && Ct(e, t, n), document.querySelectorAll(".driver-active-element-parent").forEach((e) => {
1226
+ e.classList.remove("driver-active-element-parent", "driver-active-element-parent-no-scroll");
1227
+ }), o.classList.remove("driver-active-element", "driver-no-interaction"), o.removeAttribute("aria-haspopup"), o.removeAttribute("aria-expanded"), o.removeAttribute("aria-controls"), (n.disableActiveInteraction ?? e.getConfig("disableActiveInteraction")) && t.classList.add("driver-no-interaction");
1228
+ let v = t.parentElement;
1229
+ v && v !== document.body && (v.classList.add("driver-active-element-parent"), Je(v) && v.classList.add("driver-active-element-parent-no-scroll")), t.classList.add("driver-active-element"), t.setAttribute("aria-haspopup", "dialog"), t.setAttribute("aria-expanded", "true"), t.setAttribute("aria-controls", "driver-popover-content");
1230
+ }
1231
+ function kt() {
1232
+ document.getElementById("driver-dummy-element")?.remove(), document.querySelectorAll(".driver-active-element").forEach((e) => {
1233
+ let t = e.parentElement;
1234
+ t && t !== document.body && t.classList.remove("driver-active-element-parent", "driver-active-element-parent-no-scroll"), e.classList.remove("driver-active-element", "driver-no-interaction"), e.removeAttribute("aria-haspopup"), e.removeAttribute("aria-expanded"), e.removeAttribute("aria-controls");
1235
+ });
1236
+ }
1237
+ function At(e) {
1238
+ let t = e.getState("__resizeTimeout");
1239
+ t && window.cancelAnimationFrame(t), e.setState("__resizeTimeout", window.requestAnimationFrame(() => Dt(e)));
1240
+ }
1241
+ function jt(e, t) {
1242
+ if (!e.getState("isInitialized") || !(t.key === "Tab" || t.keyCode === 9)) return;
1243
+ let n = e.getState("__activeElement"), r = e.getState("popover")?.wrapper, i = Xe([...r ? [r] : [], ...n ? [n] : []]), a = i[0], o = i[i.length - 1];
1244
+ t.preventDefault(), t.shiftKey ? (i[i.indexOf(document.activeElement) - 1] || o)?.focus() : (i[i.indexOf(document.activeElement) + 1] || a)?.focus();
1245
+ }
1246
+ function Mt(e, t) {
1247
+ (e.getConfig("allowKeyboardControl") ?? !0) && (t.key === "Escape" ? e.emit("escapePress") : t.key === "ArrowRight" ? e.emit("arrowRightPress") : t.key === "ArrowLeft" && e.emit("arrowLeftPress"));
1248
+ }
1249
+ function Nt(e, t) {
1250
+ let n = e.getState("__activeElement"), r = t.target;
1251
+ !n || !r || !n.contains(r) || e.emit("activeElementClick");
1252
+ }
1253
+ function Pt(e) {
1254
+ let t = (t) => Mt(e, t), n = (t) => jt(e, t), r = () => At(e), i = () => At(e), a = (t) => Nt(e, t);
1255
+ e.setState("__events", {
1256
+ onKeyup: t,
1257
+ onKeydown: n,
1258
+ onResize: r,
1259
+ onScroll: i,
1260
+ onClick: a
1261
+ }), window.addEventListener("keyup", t, !1), window.addEventListener("keydown", n, !1), window.addEventListener("resize", r), window.addEventListener("scroll", i), document.addEventListener("click", a, !1);
1262
+ }
1263
+ function Ft(e) {
1264
+ let t = e.getState("__events");
1265
+ t && (window.removeEventListener("keyup", t.onKeyup), window.removeEventListener("keydown", t.onKeydown), window.removeEventListener("resize", t.onResize), window.removeEventListener("scroll", t.onScroll), document.removeEventListener("click", t.onClick, !1));
1266
+ }
1267
+ function It() {
1268
+ let e = {};
1269
+ function t(t = {}) {
1270
+ e = {
1271
+ animate: !0,
1272
+ duration: 400,
1273
+ allowClose: !0,
1274
+ allowScroll: !0,
1275
+ overlayClickBehavior: "close",
1276
+ overlayOpacity: .7,
1277
+ smoothScroll: !1,
1278
+ disableActiveInteraction: !1,
1279
+ advanceOnClick: !1,
1280
+ skipMissingElement: !1,
1281
+ waitForElement: 0,
1282
+ showProgress: !1,
1283
+ stagePadding: 10,
1284
+ stageRadius: 5,
1285
+ popoverOffset: 10,
1286
+ showButtons: [
1287
+ "next",
1288
+ "previous",
1289
+ "close"
1290
+ ],
1291
+ disableButtons: [],
1292
+ overlayColor: "#000",
1293
+ ...t
1294
+ };
1295
+ }
1296
+ return t(), {
1297
+ getConfig: ((t) => t ? e[t] : e),
1298
+ configure: t
1299
+ };
1300
+ }
1301
+ function Lt() {
1302
+ let e = {}, t = ((t) => t ? e[t] : e), n = (t, n) => {
1303
+ e[t] = n;
1304
+ };
1305
+ function r() {
1306
+ e = {};
1307
+ }
1308
+ return {
1309
+ getState: t,
1310
+ setState: n,
1311
+ resetState: r
1312
+ };
1313
+ }
1314
+ function Rt() {
1315
+ let e = {};
1316
+ function t(t, n) {
1317
+ e[t] = n;
1318
+ }
1319
+ function n(t) {
1320
+ e[t]?.();
1321
+ }
1322
+ function r() {
1323
+ e = {};
1324
+ }
1325
+ return {
1326
+ listen: t,
1327
+ emit: n,
1328
+ reset: r
1329
+ };
1330
+ }
1331
+ function zt(e = {}) {
1332
+ let t = It();
1333
+ t.configure(e);
1334
+ let n = Lt(), r = Rt(), i;
1335
+ return {
1336
+ getConfig: t.getConfig,
1337
+ setConfig: t.configure,
1338
+ getState: n.getState,
1339
+ setState: n.setState,
1340
+ resetState: n.resetState,
1341
+ listen: r.listen,
1342
+ emit: r.emit,
1343
+ resetEmitter: r.reset,
1344
+ getDriver: () => i,
1345
+ setDriver: (e) => {
1346
+ i = e;
1347
+ },
1348
+ getHookOpts: (e) => {
1349
+ let r = e || n.getState();
1350
+ return {
1351
+ config: t.getConfig(),
1352
+ state: r,
1353
+ driver: i,
1354
+ index: r.activeIndex
1355
+ };
1356
+ }
1357
+ };
1358
+ }
1359
+ function Bt(e = {}) {
1360
+ let t = zt(e);
1361
+ function n() {
1362
+ t.getConfig("allowClose") && m();
1363
+ }
1364
+ function r() {
1365
+ let e = t.getConfig("overlayClickBehavior");
1366
+ if (t.getConfig("allowClose") && e === "close") {
1367
+ m();
1368
+ return;
1369
+ }
1370
+ if (typeof e == "function") {
1371
+ let n = t.getState("__activeStep");
1372
+ e(t.getState("__activeElement"), n, t.getHookOpts());
1373
+ return;
1374
+ }
1375
+ if (e === "nextStep") {
1376
+ let e = t.getState("activeStep"), n = t.getState("activeElement"), r = _t(t, e);
1377
+ if (r) {
1378
+ r(n, e, t.getHookOpts());
1379
+ return;
1380
+ }
1381
+ i();
1382
+ }
1383
+ }
1384
+ function i() {
1385
+ let e = t.getState("activeIndex"), n = t.getConfig("steps") || [];
1386
+ if (e === void 0) return;
1387
+ let r = e + 1;
1388
+ n[r] ? p(r) : m();
1389
+ }
1390
+ function a() {
1391
+ let e = t.getState("activeIndex"), n = t.getConfig("steps") || [];
1392
+ if (e === void 0) return;
1393
+ let r = e - 1;
1394
+ n[r] ? p(r) : m();
1395
+ }
1396
+ function o(e) {
1397
+ (t.getConfig("steps") || [])[e] ? p(e) : m();
1398
+ }
1399
+ function s() {
1400
+ if (t.getState("__transitionCallback")) return;
1401
+ let e = t.getState("__activeStep");
1402
+ if (!e || !(e.advanceOnClick ?? t.getConfig("advanceOnClick"))) return;
1403
+ let n = t.getState("__activeElement"), r = _t(t, e);
1404
+ if (r) {
1405
+ r(n, e, t.getHookOpts());
1406
+ return;
1407
+ }
1408
+ i();
1409
+ }
1410
+ function c() {
1411
+ if (t.getState("__transitionCallback")) return;
1412
+ let e = t.getState("activeIndex"), n = t.getState("__activeStep"), r = t.getState("__activeElement");
1413
+ if (e === void 0 || n === void 0 || !(t.getConfig("steps") || [])[e - 1]) return;
1414
+ let i = vt(t, n);
1415
+ if (i) return i(r, n, t.getHookOpts());
1416
+ a();
1417
+ }
1418
+ function l() {
1419
+ if (t.getState("__transitionCallback")) return;
1420
+ let e = t.getState("activeIndex"), n = t.getState("__activeStep"), r = t.getState("__activeElement");
1421
+ if (e === void 0 || n === void 0) return;
1422
+ let a = _t(t, n);
1423
+ if (a) return a(r, n, t.getHookOpts());
1424
+ i();
1425
+ }
1426
+ function u() {
1427
+ t.getState("isInitialized") || (t.setState("isInitialized", !0), document.body.classList.add("driver-active", t.getConfig("animate") ? "driver-fade" : "driver-simple"), t.getConfig("allowScroll") || document.body.classList.add("driver-no-scroll"), document.body.style.setProperty("--driver-animation-duration", `${t.getConfig("duration") || 400}ms`), Pt(t), t.listen("overlayClick", r), t.listen("activeElementClick", s), t.listen("escapePress", n), t.listen("closeClick", n), t.listen("arrowLeftPress", c), t.listen("arrowRightPress", l));
1428
+ }
1429
+ function d() {
1430
+ let e = t.getState("__pendingWaitCancel");
1431
+ e && (t.setState("__pendingWaitCancel", void 0), e());
1432
+ }
1433
+ function f(e, n, r) {
1434
+ let i = () => {
1435
+ a.disconnect(), window.clearTimeout(o), t.setState("__pendingWaitCancel", void 0), r();
1436
+ }, a = new MutationObserver(() => {
1437
+ Q(e.element) && i();
1438
+ }), o = window.setTimeout(i, n);
1439
+ t.setState("__pendingWaitCancel", () => {
1440
+ a.disconnect(), window.clearTimeout(o);
1441
+ }), a.observe(document.documentElement, {
1442
+ childList: !0,
1443
+ subtree: !0,
1444
+ attributes: !0
1445
+ });
1446
+ }
1447
+ function p(e = 0, n = !1) {
1448
+ d();
1449
+ let r = t.getConfig("steps");
1450
+ if (!r) {
1451
+ console.error("No steps to drive through"), m();
1452
+ return;
1453
+ }
1454
+ if (!r[e]) {
1455
+ m();
1456
+ return;
1457
+ }
1458
+ let i = r[e], a = i.waitForElement ?? t.getConfig("waitForElement") ?? 0;
1459
+ if (!n && a > 0 && i.element && !Q(i.element)) {
1460
+ f(i, a, () => p(e, !0));
1461
+ return;
1462
+ }
1463
+ if (gt(t, i)) {
1464
+ let n = t.getState("activeIndex"), i = typeof n == "number" && e < n ? -1 : 1;
1465
+ r[e + i] ? p(e + i) : i === 1 && m();
1466
+ return;
1467
+ }
1468
+ t.setState("__activeOnDestroyed", document.activeElement), t.setState("activeIndex", e);
1469
+ let o = r[e + 1];
1470
+ Et(t, bt(t, e, {
1471
+ onNextClick: () => {
1472
+ o ? p(e + 1) : m();
1473
+ },
1474
+ onPrevClick: () => {
1475
+ p(e - 1);
1476
+ },
1477
+ onCloseClick: () => {
1478
+ m();
1479
+ }
1480
+ }));
1481
+ }
1482
+ function m(e = !0) {
1483
+ let n = t.getState("__activeElement"), r = t.getState("__activeStep"), i = t.getState("__activeOnDestroyed"), a = t.getConfig("onDestroyStarted");
1484
+ if (e && a) {
1485
+ a(!n || n?.id === "driver-dummy-element" ? void 0 : n, r, t.getHookOpts());
1486
+ return;
1487
+ }
1488
+ let o = r?.onDeselected || t.getConfig("onDeselected"), s = t.getConfig("onDestroyed");
1489
+ document.body.classList.remove("driver-active", "driver-fade", "driver-simple", "driver-no-scroll"), document.body.style.removeProperty("--driver-animation-duration"), d(), Ft(t), at(t.getState("popover")), kt(), mt(t), t.resetEmitter();
1490
+ let c = t.getState();
1491
+ if (t.resetState(), n && r) {
1492
+ let e = n.id === "driver-dummy-element";
1493
+ o && o(e ? void 0 : n, r, t.getHookOpts(c)), s && s(e ? void 0 : n, r, t.getHookOpts(c));
1494
+ }
1495
+ i && i.focus();
1496
+ }
1497
+ let h = {
1498
+ isActive: () => t.getState("isInitialized") || !1,
1499
+ refresh: () => At(t),
1500
+ drive: (e = 0) => {
1501
+ u(), p(e);
1502
+ },
1503
+ setConfig: t.setConfig,
1504
+ setSteps: (e) => {
1505
+ d(), t.resetState(), t.setConfig({
1506
+ ...t.getConfig(),
1507
+ steps: e
1508
+ });
1509
+ },
1510
+ getConfig: t.getConfig,
1511
+ getState: t.getState,
1512
+ getActiveIndex: () => t.getState("activeIndex"),
1513
+ isFirstStep: () => {
1514
+ let e = t.getState("activeIndex");
1515
+ return e !== void 0 && $(t, e - 1, -1) === void 0;
1516
+ },
1517
+ isLastStep: () => {
1518
+ let e = t.getState("activeIndex");
1519
+ return e !== void 0 && $(t, e + 1, 1) === void 0;
1520
+ },
1521
+ getActiveStep: () => t.getState("activeStep"),
1522
+ getActiveElement: () => t.getState("activeElement"),
1523
+ getPreviousElement: () => t.getState("previousElement"),
1524
+ getPreviousStep: () => t.getState("previousStep"),
1525
+ getNextStep: () => {
1526
+ let e = t.getConfig("steps") || [], n = t.getState("activeIndex");
1527
+ if (n === void 0) return;
1528
+ let r = $(t, n + 1, 1);
1529
+ return r === void 0 ? void 0 : e[r];
1530
+ },
1531
+ moveNext: i,
1532
+ movePrevious: a,
1533
+ moveTo: o,
1534
+ hasNextStep: () => {
1535
+ let e = t.getState("activeIndex");
1536
+ return e !== void 0 && $(t, e + 1, 1) !== void 0;
1537
+ },
1538
+ hasPreviousStep: () => {
1539
+ let e = t.getState("activeIndex");
1540
+ return e !== void 0 && $(t, e - 1, -1) !== void 0;
1541
+ },
1542
+ highlight: (e) => {
1543
+ u(), Et(t, {
1544
+ ...e,
1545
+ popover: e.popover ? {
1546
+ showButtons: [],
1547
+ showProgress: !1,
1548
+ progressText: "",
1549
+ ...e.popover
1550
+ } : void 0
1551
+ });
1552
+ },
1553
+ destroy: () => {
1554
+ m(!1);
1555
+ }
1556
+ };
1557
+ return t.setDriver(h), h;
1558
+ }
1559
+ //#endregion
1560
+ //#region src/utils/driver.ts
1561
+ var Vt = null, Ht = [];
1562
+ function Ut(e) {
1563
+ if (Ht = e, Vt) return;
1564
+ let t = (e) => {
1565
+ let n = Ht;
1566
+ if (e >= n.length) {
1567
+ Vt = null;
1568
+ return;
1569
+ }
1570
+ let r = n[e];
1571
+ if (r.condition && !r.condition()) {
1572
+ t(e + 1);
1573
+ return;
1574
+ }
1575
+ r?.onOpen?.();
1576
+ let i = Bt({
1577
+ nextBtnText: "下一步",
1578
+ prevBtnText: "上一步",
1579
+ doneBtnText: "我知道了",
1580
+ showProgress: !0,
1581
+ allowClose: !1,
1582
+ progressText: "第 {{current}} 步,共 {{total}} 步",
1583
+ onDestroyed: () => {
1584
+ Vt = null, t(e + 1);
1585
+ },
1586
+ steps: r.steps
1587
+ });
1588
+ Vt = i, i.drive();
1589
+ };
1590
+ t(0);
1591
+ }
1592
+ //#endregion
1593
+ //#region src/components/MermaidRenderer/index.tsx
1594
+ var Wt = "docList-mermaid-driver", Gt = "docList-menu-driver", Kt = "docList-pc-menu-driver", qt = s(function({ source: n, debounceMs: r = 300, enablePanzoom: a = !0, showDownload: o = !0, showSourceView: s = !1, showCollapse: l = !1, defaultCollapsed: d = !0, className: w = "", minHeight: D = 200 }) {
1595
+ let k = n.match(/---\s*\n\s*title:\s*(.+)\s*\n\s*---/), A = k ? k[1].trim() : "mermaid 图表", { isDark: j } = ae(), { svg: M, error: N, loading: re } = ue({
1596
+ source: n,
1597
+ debounceMs: r,
1598
+ isDark: j
1599
+ }), [P, F] = p(!1), [I, L] = p(d), [ie, R] = p(!1), [z, B] = p(s), V = f(null), H = f(null), U = a && (P || !I || !l), W = Pe({
1600
+ contentRef: H,
1601
+ wrapperRef: V,
1602
+ enabled: U && !!M,
1603
+ svg: M,
1604
+ isFullscreen: P
1605
+ });
1606
+ u(() => {
1607
+ Ut([
1608
+ {
1609
+ id: Gt,
1610
+ condition: () => !localStorage[Gt] && s && !(0, Fe.IsPC)() && localStorage.docListMenuVisible !== "true",
1611
+ onOpen: () => localStorage[Gt] = 1,
1612
+ steps: [
1613
+ {
1614
+ element: ".docList-menu-anchor",
1615
+ popover: {
1616
+ title: "大纲",
1617
+ description: "点击此处您可查看大纲"
1618
+ }
1619
+ },
1620
+ {
1621
+ element: ".docList-menu-list",
1622
+ popover: {
1623
+ title: "列表",
1624
+ description: "点击此处您可查看当前分类下文章列表"
1625
+ }
1626
+ },
1627
+ {
1628
+ element: ".docList-menu-copyHtml",
1629
+ popover: {
1630
+ title: "复制",
1631
+ description: "点击此处您可复制 HTML 渲染的格式内容"
1632
+ }
1633
+ },
1634
+ {
1635
+ element: ".docList-menu-copyMarkdown",
1636
+ popover: {
1637
+ title: "复制",
1638
+ description: "点击此处您可复制 markdown 源码"
1639
+ }
1640
+ }
1641
+ ]
1642
+ },
1643
+ {
1644
+ id: Kt,
1645
+ condition: () => !localStorage[Kt] && (0, Fe.IsPC)() && s,
1646
+ onOpen: () => localStorage[Kt] = 1,
1647
+ steps: [{
1648
+ element: ".docList-menu-copyHtml",
1649
+ popover: {
1650
+ title: "复制",
1651
+ description: "点击此处您可复制 HTML 渲染的格式内容"
1652
+ }
1653
+ }, {
1654
+ element: ".docList-menu-copyMarkdown",
1655
+ popover: {
1656
+ title: "复制",
1657
+ description: "点击此处您可复制 markdown 源码"
1658
+ }
1659
+ }]
1660
+ },
1661
+ {
1662
+ id: Wt,
1663
+ condition: () => M && !localStorage[Wt] && s,
1664
+ onOpen: () => localStorage[Wt] = 1,
1665
+ steps: [
1666
+ {
1667
+ element: ".mermaid-react-root .mermaid-mini",
1668
+ popover: {
1669
+ title: "mermaid",
1670
+ description: "恭喜您解锁 Mermaid 渲染图表"
1671
+ }
1672
+ },
1673
+ {
1674
+ element: ".mermaid-react-root .mermaid-mini .mermaid-minimize-btn",
1675
+ popover: {
1676
+ title: "缩略图",
1677
+ description: "点击此处按钮可查看缩略图"
1678
+ }
1679
+ },
1680
+ {
1681
+ element: ".mermaid-react-root .mermaid-mini .mermaid-fullscreen-btn",
1682
+ popover: {
1683
+ title: "全屏",
1684
+ description: "点击此处按钮可切换为全屏展示"
1685
+ }
1686
+ },
1687
+ {
1688
+ element: ".mermaid-react-root .mermaid-mini .mermaid-showcode-btn",
1689
+ popover: {
1690
+ title: "源码",
1691
+ description: "点击此处按钮查看源码弹窗"
1692
+ }
1693
+ },
1694
+ {
1695
+ element: ".mermaid-react-root .mermaid-mini .mermaid-collapsed-btn",
1696
+ popover: {
1697
+ title: "展开",
1698
+ description: "点击此处按钮展开大图"
1699
+ }
1700
+ }
1701
+ ]
1702
+ }
1703
+ ]);
1704
+ }, [M]), u(() => {
1705
+ let e = () => {
1706
+ F(!!document.fullscreenElement), !document.fullscreenElement && l && L(!0);
1707
+ };
1708
+ return document.addEventListener("fullscreenchange", e), () => document.removeEventListener("fullscreenchange", e);
1709
+ }, [l]);
1710
+ let le = c(() => {
1711
+ if (!M) {
1712
+ t.warning("暂无图表");
1713
+ return;
1714
+ }
1715
+ ne(M, A);
1716
+ }, [M]), de = c(() => {
1717
+ if (!M) {
1718
+ t.warning("暂无图表");
1719
+ return;
1720
+ }
1721
+ O(M, A, 2);
1722
+ }, [M]), fe = {
1723
+ items: [{
1724
+ key: "svg",
1725
+ label: "下载 SVG"
1726
+ }, {
1727
+ key: "png",
1728
+ label: "下载 PNG"
1729
+ }],
1730
+ onClick: ({ key: e }) => e === "svg" ? le() : de()
1731
+ }, G = !!M;
1732
+ return /* @__PURE__ */ E("div", {
1733
+ ref: V,
1734
+ className: e.bind(Z)(l ? "mermaid-wrapper" : "", I && l && !z ? " mermaid-collapsed" : "", w, z && I && !P ? "mermaid-mini" : ""),
1735
+ style: {
1736
+ minHeight: z ? 0 : D,
1737
+ position: "relative",
1738
+ height: "100%"
1739
+ },
1740
+ children: [
1741
+ s && /* @__PURE__ */ E("div", {
1742
+ className: "mermaid-title",
1743
+ children: [/* @__PURE__ */ E("span", {
1744
+ className: "mermaid-title-tag",
1745
+ children: [/* @__PURE__ */ T("img", {
1746
+ src: "data:image/svg+xml,%3csvg%20t='1784097187016'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='5199'%20width='200'%20height='200'%3e%3cpath%20d='M0%200m125.754386%200l772.491228%200q125.754386%200%20125.754386%20125.754386l0%20772.491228q0%20125.754386-125.754386%20125.754386l-772.491228%200q-125.754386%200-125.754386-125.754386l0-772.491228q0-125.754386%20125.754386-125.754386Z'%20fill='%23FC366E'%20p-id='5200'%3e%3c/path%3e%3cpath%20d='M921.150877%20174.547088a417.091368%20417.091368%200%200%200-409.168842%20274.198456%20417.235088%20417.235088%200%200%200-409.150877-274.198456%20417.360842%20417.360842%200%200%200%20181.625263%20361.992982%20223.914667%20223.914667%200%200%201%2097.010526%20185.038597v128.143719h261.084071v-128.07186a223.914667%20223.914667%200%200%201%2097.010526-185.038596%20417.181193%20417.181193%200%200%200%20181.553403-361.921123z'%20fill='%23FFFFFF'%20p-id='5201'%3e%3c/path%3e%3c/svg%3e",
1747
+ alt: ""
1748
+ }), /* @__PURE__ */ T("span", {
1749
+ className: "mermaid-title-text",
1750
+ children: "Mermaid"
1751
+ })]
1752
+ }), A]
1753
+ }),
1754
+ !G && /* @__PURE__ */ E("div", {
1755
+ className: "mermaid-toolbar-loading",
1756
+ children: [/* @__PURE__ */ T(te, {}), " "]
1757
+ }),
1758
+ G && /* @__PURE__ */ T("div", {
1759
+ className: "mermaid-toolbar",
1760
+ children: [
1761
+ {
1762
+ isShow: s && I && !P,
1763
+ icon: T(z ? _ : ee, {}),
1764
+ tooltip: z ? "缩略图" : "最小化",
1765
+ onClick: () => B((e) => !e),
1766
+ className: "mermaid-minimize-btn"
1767
+ },
1768
+ {
1769
+ isShow: U,
1770
+ icon: /* @__PURE__ */ T(x, {}),
1771
+ tooltip: "放大",
1772
+ onClick: () => W.current?.zoomIn()
1773
+ },
1774
+ {
1775
+ isShow: U,
1776
+ icon: /* @__PURE__ */ T(b, {}),
1777
+ tooltip: "缩小",
1778
+ onClick: () => W.current?.zoomOut()
1779
+ },
1780
+ {
1781
+ isShow: U,
1782
+ icon: /* @__PURE__ */ T(S, {}),
1783
+ tooltip: "重置",
1784
+ onClick: () => W.current?.reset()
1785
+ },
1786
+ {
1787
+ isShow: o && U,
1788
+ icon: /* @__PURE__ */ T(g, {}),
1789
+ tooltip: "下载",
1790
+ dropdown: fe
1791
+ },
1792
+ {
1793
+ isShow: !0,
1794
+ icon: T(P ? v : y, {}),
1795
+ tooltip: P ? "退出全屏" : "全屏",
1796
+ onClick: () => {
1797
+ W.current?.reset(), document.fullscreenElement ? document.exitFullscreen() : V.current?.requestFullscreen?.();
1798
+ },
1799
+ className: "mermaid-fullscreen-btn"
1800
+ },
1801
+ {
1802
+ isShow: s && !P,
1803
+ icon: /* @__PURE__ */ T(m, {}),
1804
+ tooltip: "查看源码",
1805
+ onClick: () => R(!0),
1806
+ className: "mermaid-showcode-btn"
1807
+ },
1808
+ {
1809
+ isShow: l && !P,
1810
+ icon: T(I ? h : C, {}),
1811
+ tooltip: I ? "展开" : "收起",
1812
+ onClick: () => L((e) => !e),
1813
+ className: "mermaid-collapsed-btn"
1814
+ }
1815
+ ].filter(Boolean).map((e, t) => {
1816
+ if (e.isShow === !1) return null;
1817
+ let n = e.dropdown ? /* @__PURE__ */ T(se, {
1818
+ items: e.dropdown.items,
1819
+ onClick: e.dropdown.onClick,
1820
+ children: /* @__PURE__ */ T("div", {
1821
+ className: `circle ${e.className ? ` ${e.className}` : ""}`,
1822
+ children: e.icon
1823
+ })
1824
+ }, t) : /* @__PURE__ */ T("div", {
1825
+ className: `circle ${e.className ? ` ${e.className}` : ""}`,
1826
+ onClick: e.onClick,
1827
+ children: e.icon
1828
+ }, t);
1829
+ return e.tooltip && (0, Fe.IsPC)() ? /* @__PURE__ */ T(oe, {
1830
+ title: e.tooltip,
1831
+ children: n
1832
+ }, t) : n;
1833
+ })
1834
+ }),
1835
+ N && /* @__PURE__ */ E("div", {
1836
+ className: Z.errorTip,
1837
+ children: ["⚠️ ", N]
1838
+ }),
1839
+ /* @__PURE__ */ E("div", {
1840
+ className: Z.previewArea,
1841
+ style: { minHeight: G ? "auto" : D },
1842
+ children: [/* @__PURE__ */ T("div", {
1843
+ ref: H,
1844
+ className: Z.previewContent,
1845
+ dangerouslySetInnerHTML: { __html: M || "" }
1846
+ }), (!G && !N || re) && /* @__PURE__ */ T("div", {
1847
+ className: Z.emptyTip,
1848
+ children: n?.trim() ? "渲染中..." : "← 输入 Mermaid 源码"
1849
+ })]
1850
+ }),
1851
+ s && /* @__PURE__ */ T(ce, {
1852
+ open: ie,
1853
+ title: "Mermaid 源码",
1854
+ className: "mermaid-code-modal",
1855
+ width: 800,
1856
+ destroyOnClose: !0,
1857
+ onCancel: () => R(!1),
1858
+ footer: null,
1859
+ children: /* @__PURE__ */ T(i, {
1860
+ isShowCollapsed: !1,
1861
+ isSlotMermaid: !1,
1862
+ codeType: "mermaid",
1863
+ content: n
1864
+ })
1865
+ })
1866
+ ]
1867
+ });
1868
+ });
1869
+ async function Jt() {
1870
+ let e = document.querySelectorAll("code.language-mermaid");
1871
+ for (let t of e) {
1872
+ let e = t.parentElement;
1873
+ if (!e) return;
1874
+ let r = t.textContent.trim(), i = document.createElement("div");
1875
+ i.className = "mermaid-react-root", e.replaceWith(i), n(i).render(/* @__PURE__ */ T(a.StrictMode, { children: /* @__PURE__ */ T(ie, { children: /* @__PURE__ */ T(qt, {
1876
+ source: r,
1877
+ enablePanzoom: !0,
1878
+ showDownload: !0,
1879
+ showSourceView: !0,
1880
+ showCollapse: !0,
1881
+ defaultCollapsed: !0,
1882
+ minHeight: 200
1883
+ }) }) }));
1884
+ }
1885
+ }
1886
+ //#endregion
1887
+ export { Jt as renderMermaidWithControls };
1888
+
1889
+ //# sourceMappingURL=MermaidRenderer-DupOXIdE.js.map