remons-render-markdown 1.0.0-beta.2 → 1.0.0

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.
@@ -1,1889 +0,0 @@
1
- import { a as e, i as t, o as n, s as r, t as i } from "./RenderMarkdown-Br1PK06M.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(t, n) {
8
- let r;
9
- if (t instanceof Blob) r = URL.createObjectURL(t);
10
- else if (typeof t == "string") r = t;
11
- else {
12
- e.error("不支持的下载格式");
13
- return;
14
- }
15
- let i = document.createElement("a");
16
- i.href = r, i.download = n, i.click(), URL.revokeObjectURL(r), e.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(t, n = "image", r = 2) {
22
- let { w: i, h: a } = k(t), o = `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(t)))}`, s = new Image();
23
- s.crossOrigin = "anonymous", s.src = o, s.onload = () => {
24
- let t = document.createElement("canvas");
25
- t.width = Math.max(1, Math.round(i * r)), t.height = Math.max(1, Math.round(a * r));
26
- let o = t.getContext("2d");
27
- o.fillStyle = "#ffffff", o.fillRect(0, 0, t.width, t.height), o.scale(r, r), o.drawImage(s, 0, 0, i, a), t.toBlob((t) => {
28
- if (!t) {
29
- e.error("PNG 生成失败");
30
- return;
31
- }
32
- D(t, `${n}.png`);
33
- }, "image/png");
34
- }, s.onerror = () => {
35
- e.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 = n.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 = n.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 = n.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 = t(), 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: t, 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 = t.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: t,
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
- e.warning("暂无图表");
1713
- return;
1714
- }
1715
- ne(M, A);
1716
- }, [M]), de = c(() => {
1717
- if (!M) {
1718
- e.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: n.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: t?.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: t
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 n = t.textContent.trim(), i = document.createElement("div");
1875
- i.className = "mermaid-react-root", e.replaceWith(i), r(i).render(/* @__PURE__ */ T(a.StrictMode, { children: /* @__PURE__ */ T(ie, { children: /* @__PURE__ */ T(qt, {
1876
- source: n,
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-D1jOKZ4Z.js.map