@xiping/react-components 1.0.43 → 1.0.45

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.
Files changed (33) hide show
  1. package/dist/cjs/components/shimmer-button/ShimmerButton.js +1 -1
  2. package/dist/cjs/components/shiny-button/ShinyButton.js +1 -1
  3. package/dist/cjs/components/sparkles-text/SparklesText.js +1 -1
  4. package/dist/cjs/components/subtitle-player/SubtitlePlayer.d.ts +30 -0
  5. package/dist/cjs/components/subtitle-player/SubtitlePlayer.js +3 -0
  6. package/dist/cjs/components/subtitle-player/index.d.ts +2 -0
  7. package/dist/cjs/components/txt-editor/TxtEditor.d.ts +5 -4
  8. package/dist/cjs/components/txt-editor/TxtEditor.js +32 -1
  9. package/dist/cjs/components/txt-reader/TxtReader.js +1 -1
  10. package/dist/cjs/components/txt-reader/index.module.css.js +1 -1
  11. package/dist/cjs/components/variable-proximity/index.d.ts +10 -0
  12. package/dist/cjs/components/variable-proximity/index.js +1 -1
  13. package/dist/cjs/index.d.ts +1 -0
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/cjs/react-components.css +1 -1
  16. package/dist/cjs/subtitle/lib/src/parser.js +5 -0
  17. package/dist/es/components/shimmer-button/ShimmerButton.js +29 -62
  18. package/dist/es/components/shiny-button/ShinyButton.js +15 -17
  19. package/dist/es/components/sparkles-text/SparklesText.js +30 -29
  20. package/dist/es/components/subtitle-player/SubtitlePlayer.d.ts +30 -0
  21. package/dist/es/components/subtitle-player/SubtitlePlayer.js +103 -0
  22. package/dist/es/components/subtitle-player/index.d.ts +2 -0
  23. package/dist/es/components/txt-editor/TxtEditor.d.ts +5 -4
  24. package/dist/es/components/txt-editor/TxtEditor.js +102 -43
  25. package/dist/es/components/txt-reader/TxtReader.js +48 -55
  26. package/dist/es/components/txt-reader/index.module.css.js +6 -2
  27. package/dist/es/components/variable-proximity/index.d.ts +10 -0
  28. package/dist/es/components/variable-proximity/index.js +166 -94
  29. package/dist/es/index.d.ts +1 -0
  30. package/dist/es/index.js +12 -10
  31. package/dist/es/react-components.css +1 -1
  32. package/dist/es/subtitle/lib/src/parser.js +56 -0
  33. package/package.json +9 -5
@@ -1,83 +1,76 @@
1
- import { jsxs as w, Fragment as E, jsx as e } from "react/jsx-runtime";
2
- import { useRef as n } from "react";
3
- import t from "clsx";
4
- import { useScroll as F, useTransform as _, useMotionTemplate as v, motion as i } from "motion/react";
5
- import y from "./index.module.css.js";
6
- const I = 16, L = 1.5, R = "normal", k = ({
7
- content: c,
8
- lineHeight: a = L,
9
- fontSize: f = I,
10
- fontWeight: m = R,
11
- className: p = "",
12
- style: d = {},
1
+ import { jsxs as h, Fragment as v, jsx as t } from "react/jsx-runtime";
2
+ import { useRef as c } from "react";
3
+ import r from "clsx";
4
+ import { useScroll as y, useTransform as I, useMotionTemplate as L, motion as l } from "motion/react";
5
+ import e from "./index.module.css.js";
6
+ const R = 16, S = 1.5, A = "normal", O = ({
7
+ content: a,
8
+ lineHeight: m = S,
9
+ fontSize: p = R,
10
+ fontWeight: d = A,
11
+ className: f = "",
12
+ style: g = {},
13
13
  onProgressChange: u,
14
- initialScrollPosition: S,
15
- cacheKey: A,
16
- showTopProgress: h = !0,
17
- topProgressClassName: x,
18
- showBottomProgress: g = !0,
19
- bottomProgressClassName: T
14
+ initialScrollPosition: D,
15
+ cacheKey: H,
16
+ showTopProgress: x = !0,
17
+ topProgressClassName: T,
18
+ showBottomProgress: N = !0,
19
+ bottomProgressClassName: E
20
20
  }) => {
21
- const r = n(null), o = n(null), { scrollYProgress: l } = F({
22
- container: r,
23
- target: o
24
- }), s = _(() => (l.get() * 100).toFixed(2).replace(/\.0*$/, "")), N = v`${s}%`;
25
- return s.on("change", (b) => {
26
- u?.(Number(b));
27
- }), /* @__PURE__ */ w(E, { children: [
28
- h && /* @__PURE__ */ e(
29
- i.div,
21
+ const o = c(null), n = c(null), { scrollYProgress: s } = y({
22
+ container: o,
23
+ target: n
24
+ }), i = I(() => (s.get() * 100).toFixed(2).replace(/\.0*$/, "")), F = L`${i}%`;
25
+ return i.on("change", (_) => {
26
+ u?.(Number(_));
27
+ }), /* @__PURE__ */ h(v, { children: [
28
+ x && /* @__PURE__ */ t(
29
+ l.div,
30
30
  {
31
31
  id: "scroll-indicator",
32
- className: t(
33
- "fixed left-0 top-0 right-0 bg-[#ff0088] h-2.5",
34
- x
35
- ),
32
+ className: r(e["xiping-top-progress"], T),
36
33
  style: {
37
- scaleX: l,
34
+ scaleX: s,
38
35
  originX: 0
39
36
  }
40
37
  }
41
38
  ),
42
- /* @__PURE__ */ e(
39
+ /* @__PURE__ */ t(
43
40
  "div",
44
41
  {
45
- className: t(
46
- "relative w-full h-full overflow-y-auto",
47
- y.textContent
48
- // "scrollbar-thumb-rounded-full scrollbar-track-rounded-full scrollbar scrollbar-thumb-slate-700 scrollbar-track-slate-300",
49
- ),
50
- ref: r,
51
- children: /* @__PURE__ */ e(
42
+ className: r(e["xiping-container"], e.textContent),
43
+ ref: o,
44
+ children: /* @__PURE__ */ t(
52
45
  "div",
53
46
  {
54
- ref: o,
55
- className: t("w-full whitespace-pre-wrap break-words", p),
47
+ ref: n,
48
+ className: r(e["xiping-content"], f),
56
49
  style: {
57
- fontSize: `${f}px`,
58
- lineHeight: a,
59
- fontWeight: m,
60
- ...d
50
+ fontSize: `${p}px`,
51
+ lineHeight: m,
52
+ fontWeight: d,
53
+ ...g
61
54
  },
62
- children: c
55
+ children: a
63
56
  }
64
57
  )
65
58
  }
66
59
  ),
67
- g && /* @__PURE__ */ e(
68
- i.div,
60
+ N && /* @__PURE__ */ t(
61
+ l.div,
69
62
  {
70
63
  id: "scroll-present",
71
- className: t(
72
- "fixed text-white rounded text-sm bg-black/70 pl-2 pr-2 pb-1 pt-1 right-5 bottom-5",
73
- T
64
+ className: r(
65
+ e["xiping-bottom-progress"],
66
+ E
74
67
  ),
75
- children: N
68
+ children: F
76
69
  }
77
70
  )
78
71
  ] });
79
72
  };
80
73
  export {
81
- k as TxtReader,
82
- k as default
74
+ O as TxtReader,
75
+ O as default
83
76
  };
@@ -1,7 +1,11 @@
1
- const t = "_textContent_8n59h_23", e = {
1
+ const t = "_textContent_yv2bi_63", n = {
2
+ "xiping-top-progress": "_xiping-top-progress_yv2bi_23",
3
+ "xiping-container": "_xiping-container_yv2bi_33",
4
+ "xiping-content": "_xiping-content_yv2bi_41",
5
+ "xiping-bottom-progress": "_xiping-bottom-progress_yv2bi_48",
2
6
  textContent: t
3
7
  };
4
8
  export {
5
- e as default,
9
+ n as default,
6
10
  t as textContent
7
11
  };
@@ -9,6 +9,16 @@ interface VariableProximityProps extends HTMLAttributes<HTMLSpanElement> {
9
9
  className?: string;
10
10
  onClick?: () => void;
11
11
  style?: React.CSSProperties;
12
+ /**
13
+ * 自定义字体族,如果不提供则使用默认的可变字体
14
+ * 例如: "'Custom Font', 'Roboto Flex', sans-serif"
15
+ */
16
+ fontFamily?: string;
17
+ /**
18
+ * 是否自动加载默认字体(当 fontFamily 未提供时)
19
+ * @default true
20
+ */
21
+ autoLoadFonts?: boolean;
12
22
  }
13
23
  declare const VariableProximity: import('react').ForwardRefExoticComponent<VariableProximityProps & import('react').RefAttributes<HTMLSpanElement>>;
14
24
  export { VariableProximity };
@@ -1,140 +1,212 @@
1
- import { jsxs as $, jsx as C } from "react/jsx-runtime";
2
- import { forwardRef as k, useRef as d, useMemo as D, useEffect as F } from "react";
3
- import { motion as T } from "motion/react";
1
+ import { jsxs as G, jsx as k } from "react/jsx-runtime";
2
+ import { forwardRef as H, useRef as y, useMemo as N, useEffect as w } from "react";
3
+ import { motion as J } from "motion/react";
4
4
  /* empty css */
5
- function z(c) {
6
- F(() => {
7
- let i;
8
- const s = () => {
9
- c(), i = requestAnimationFrame(s);
5
+ const l = {
6
+ robotoFlex: !1,
7
+ notoSansSC: !1,
8
+ loading: !1
9
+ };
10
+ function V(n) {
11
+ if (typeof document > "u") return !1;
12
+ try {
13
+ return document.fonts.check(`1em "${n}"`);
14
+ } catch {
15
+ return !0;
16
+ }
17
+ }
18
+ function K() {
19
+ if (l.loading || l.robotoFlex && l.notoSansSC) return;
20
+ l.loading = !0;
21
+ const n = V("Roboto Flex"), r = V("Noto Sans SC");
22
+ if (n && (l.robotoFlex = !0), r && (l.notoSansSC = !0), n && r) {
23
+ l.loading = !1;
24
+ return;
25
+ }
26
+ const i = (t, s) => {
27
+ if (document.querySelector(`link[href="${t}"]`)) {
28
+ s?.();
29
+ return;
30
+ }
31
+ const c = document.createElement("link");
32
+ c.rel = "stylesheet", c.href = t, c.onload = () => s?.(), document.head.appendChild(c);
33
+ }, f = [
34
+ // 国内镜像(优先)
35
+ {
36
+ roboto: "https://fonts.loli.net/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap",
37
+ noto: "https://fonts.loli.net/css2?family=Noto+Sans+SC:wght@100..900&display=swap"
38
+ },
39
+ // Google Fonts(备选)
40
+ {
41
+ roboto: "https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap",
42
+ noto: "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap"
43
+ }
44
+ ], d = (t) => {
45
+ if (t >= f.length) {
46
+ l.loading = !1;
47
+ return;
48
+ }
49
+ const s = f[t];
50
+ let m = 0;
51
+ const c = () => {
52
+ m++, m === 2 && (l.loading = !1);
53
+ };
54
+ n ? c() : i(s.roboto, () => {
55
+ l.robotoFlex = !0, c();
56
+ }), r ? c() : i(s.noto, () => {
57
+ l.notoSansSC = !0, c();
58
+ }), setTimeout(() => {
59
+ (!l.robotoFlex || !l.notoSansSC) && d(t + 1);
60
+ }, 3e3);
61
+ };
62
+ d(0);
63
+ }
64
+ function O(n = !0) {
65
+ w(() => {
66
+ n && typeof document < "u" && K();
67
+ }, [n]);
68
+ }
69
+ function Q(n) {
70
+ w(() => {
71
+ let r;
72
+ const i = () => {
73
+ n(), r = requestAnimationFrame(i);
10
74
  };
11
- return i = requestAnimationFrame(s), () => cancelAnimationFrame(i);
12
- }, [c]);
75
+ return r = requestAnimationFrame(i), () => cancelAnimationFrame(r);
76
+ }, [n]);
13
77
  }
14
- function G(c) {
15
- const i = d({ x: 0, y: 0 });
16
- return F(() => {
17
- const s = (r, a) => {
18
- if (c?.current) {
19
- const p = c.current.getBoundingClientRect();
20
- i.current = { x: r - p.left, y: a - p.top };
78
+ function W(n) {
79
+ const r = y({ x: 0, y: 0 });
80
+ return w(() => {
81
+ const i = (t, s) => {
82
+ if (n?.current) {
83
+ const m = n.current.getBoundingClientRect();
84
+ r.current = { x: t - m.left, y: s - m.top };
21
85
  } else
22
- i.current = { x: r, y: a };
23
- }, u = (r) => s(r.clientX, r.clientY), f = (r) => {
24
- const a = r.touches[0];
25
- s(a.clientX, a.clientY);
86
+ r.current = { x: t, y: s };
87
+ }, f = (t) => i(t.clientX, t.clientY), d = (t) => {
88
+ const s = t.touches[0];
89
+ i(s.clientX, s.clientY);
26
90
  };
27
- return window.addEventListener("mousemove", u), window.addEventListener("touchmove", f), () => {
28
- window.removeEventListener("mousemove", u), window.removeEventListener("touchmove", f);
91
+ return window.addEventListener("mousemove", f), window.addEventListener("touchmove", d), () => {
92
+ window.removeEventListener("mousemove", f), window.removeEventListener("touchmove", d);
29
93
  };
30
- }, [c]), i;
94
+ }, [n]), r;
31
95
  }
32
- const H = k(
33
- (c, i) => {
96
+ const Z = H(
97
+ (n, r) => {
34
98
  const {
35
- label: s,
36
- fromFontVariationSettings: u,
37
- toFontVariationSettings: f,
38
- containerRef: r,
39
- radius: a = 50,
40
- falloff: p = "linear",
41
- className: R = "",
42
- onClick: V,
43
- style: P,
44
- ...E
45
- } = c, x = d([]), v = d([]), h = G(r), g = d({
99
+ label: i,
100
+ fromFontVariationSettings: f,
101
+ toFontVariationSettings: d,
102
+ containerRef: t,
103
+ radius: s = 50,
104
+ falloff: m = "linear",
105
+ className: c = "",
106
+ onClick: E,
107
+ style: C,
108
+ fontFamily: g,
109
+ autoLoadFonts: P = !0,
110
+ ...A
111
+ } = n;
112
+ O(P && !g);
113
+ const b = y([]), v = y([]), S = W(t), F = y({
46
114
  x: null,
47
115
  y: null
48
- }), A = D(() => {
49
- const e = (t) => new Map(
50
- t.split(",").map((l) => l.trim()).map((l) => {
51
- const [m, y] = l.split(" ");
52
- return [m.replace(/['"]/g, ""), parseFloat(y)];
116
+ }), $ = N(() => {
117
+ const e = (o) => new Map(
118
+ o.split(",").map((p) => p.trim()).map((p) => {
119
+ const [h, x] = p.split(" ");
120
+ return [h.replace(/['"]/g, ""), parseFloat(x)];
53
121
  })
54
- ), n = e(u), o = e(f);
55
- return Array.from(n.entries()).map(([t, l]) => ({
56
- axis: t,
57
- fromValue: l,
58
- toValue: o.get(t) ?? l
122
+ ), a = e(f), u = e(d);
123
+ return Array.from(a.entries()).map(([o, p]) => ({
124
+ axis: o,
125
+ fromValue: p,
126
+ toValue: u.get(o) ?? p
59
127
  }));
60
- }, [u, f]), L = (e, n, o, t) => Math.sqrt((o - e) ** 2 + (t - n) ** 2), b = (e) => {
61
- const n = Math.min(Math.max(1 - e / a, 0), 1);
62
- switch (p) {
128
+ }, [f, d]), q = (e, a, u, o) => Math.sqrt((u - e) ** 2 + (o - a) ** 2), I = (e) => {
129
+ const a = Math.min(Math.max(1 - e / s, 0), 1);
130
+ switch (m) {
63
131
  case "exponential":
64
- return n ** 2;
132
+ return a ** 2;
65
133
  case "gaussian":
66
- return Math.exp(-((e / (a / 2)) ** 2) / 2);
134
+ return Math.exp(-((e / (s / 2)) ** 2) / 2);
67
135
  case "linear":
68
136
  default:
69
- return n;
137
+ return a;
70
138
  }
71
139
  };
72
- z(() => {
73
- if (!r?.current) return;
74
- const { x: e, y: n } = h.current;
75
- if (g.current.x === e && g.current.y === n)
140
+ Q(() => {
141
+ if (!t?.current) return;
142
+ const { x: e, y: a } = S.current;
143
+ if (F.current.x === e && F.current.y === a)
76
144
  return;
77
- g.current = { x: e, y: n };
78
- const o = r.current.getBoundingClientRect();
79
- x.current.forEach((t, l) => {
80
- if (!t) return;
81
- const m = t.getBoundingClientRect(), y = m.left + m.width / 2 - o.left, q = m.top + m.height / 2 - o.top, w = L(
82
- h.current.x,
83
- h.current.y,
84
- y,
85
- q
145
+ F.current = { x: e, y: a };
146
+ const u = t.current.getBoundingClientRect();
147
+ b.current.forEach((o, p) => {
148
+ if (!o) return;
149
+ const h = o.getBoundingClientRect(), x = h.left + h.width / 2 - u.left, Y = h.top + h.height / 2 - u.top, L = q(
150
+ S.current.x,
151
+ S.current.y,
152
+ x,
153
+ Y
86
154
  );
87
- if (w >= a) {
88
- t.style.fontVariationSettings = u;
155
+ if (L >= s) {
156
+ o.style.fontVariationSettings = f;
89
157
  return;
90
158
  }
91
- const B = b(w), M = A.map(({ axis: I, fromValue: S, toValue: X }) => {
92
- const Y = S + (X - S) * B;
93
- return `'${I}' ${Y}`;
159
+ const z = I(L), M = $.map(({ axis: T, fromValue: R, toValue: D }) => {
160
+ const U = R + (D - R) * z;
161
+ return `'${T}' ${U}`;
94
162
  }).join(", ");
95
- v.current[l] = M, t.style.fontVariationSettings = M;
163
+ v.current[p] = M, o.style.fontVariationSettings = M;
96
164
  });
97
165
  });
98
- const N = /[\u4e00-\u9fa5]/.test(s) ? s.split("") : s.split(" ").flatMap((e, n, o) => {
99
- const t = e.split("");
100
- return n < o.length - 1 ? [...t, " "] : t;
166
+ const j = /[\u4e00-\u9fa5]/.test(i) ? i.split("") : i.split(" ").flatMap((e, a, u) => {
167
+ const o = e.split("");
168
+ return a < u.length - 1 ? [...o, " "] : o;
101
169
  });
102
- let j = 0;
103
- return /* @__PURE__ */ $(
170
+ let B = 0;
171
+ const X = N(() => {
172
+ const e = { display: "inline", ...C };
173
+ return g && (e.fontFamily = g), e;
174
+ }, [g, C]);
175
+ return /* @__PURE__ */ G(
104
176
  "span",
105
177
  {
106
- ref: i,
107
- className: `${R} variable-proximity`,
108
- onClick: V,
109
- style: { display: "inline", ...P },
110
- ...E,
178
+ ref: r,
179
+ className: `${c} variable-proximity`,
180
+ onClick: E,
181
+ style: X,
182
+ ...A,
111
183
  children: [
112
- N.map((e, n) => {
113
- const o = j++;
114
- return /* @__PURE__ */ C(
115
- T.span,
184
+ j.map((e, a) => {
185
+ const u = B++;
186
+ return /* @__PURE__ */ k(
187
+ J.span,
116
188
  {
117
- ref: (t) => {
118
- x.current[o] = t;
189
+ ref: (o) => {
190
+ b.current[u] = o;
119
191
  },
120
192
  style: {
121
193
  display: e === " " ? "inline" : "inline-block",
122
- fontVariationSettings: v.current[o]
194
+ fontVariationSettings: v.current[u]
123
195
  },
124
196
  "aria-hidden": "true",
125
197
  children: e
126
198
  },
127
- n
199
+ a
128
200
  );
129
201
  }),
130
- /* @__PURE__ */ C("span", { className: "sr-only", children: s })
202
+ /* @__PURE__ */ k("span", { className: "sr-only", children: i })
131
203
  ]
132
204
  }
133
205
  );
134
206
  }
135
207
  );
136
- H.displayName = "VariableProximity";
208
+ Z.displayName = "VariableProximity";
137
209
  export {
138
- H as VariableProximity,
139
- H as default
210
+ Z as VariableProximity,
211
+ Z as default
140
212
  };
@@ -27,4 +27,5 @@ export * from './components/dome-gallery';
27
27
  export * from './components/text-type';
28
28
  export * from './components/gradient-text';
29
29
  export * from './components/variable-proximity';
30
+ export * from './components/subtitle-player';
30
31
  export * from './hooks/useStayTimeReport';
package/dist/es/index.js CHANGED
@@ -4,16 +4,16 @@ import { TxtReader as x } from "./components/txt-reader/TxtReader.js";
4
4
  import { HyperText as p } from "./components/hyper-text/index.js";
5
5
  import { TypingAnimation as i } from "./components/typing-animation/index.js";
6
6
  import { QRCode as d } from "./components/qr-code/index.js";
7
- import { Confetti as s, ConfettiButton as T } from "./components/confetti-button/index.js";
7
+ import { Confetti as s, ConfettiButton as u } from "./components/confetti-button/index.js";
8
8
  import { default as c } from "./components/gradient-text/index.js";
9
- import { VariableProximity as C } from "./components/variable-proximity/index.js";
9
+ import { VariableProximity as S } from "./components/variable-proximity/index.js";
10
10
  import { useStayTimeReport as g } from "./hooks/useStayTimeReport.js";
11
11
  import { default as B } from "./components/pinch-content/PinchContent.js";
12
12
  import { default as A } from "./components/image-viewer/ImageViewer.js";
13
13
  import { ShimmerButton as I } from "./components/shimmer-button/ShimmerButton.js";
14
- import { default as V } from "./components/image-compare/ImageCompare.js";
15
- import { default as P } from "./components/text-type/TextType.js";
16
- import { TextAnimate as L } from "./components/text-animate/TextAnimate.js";
14
+ import { default as R } from "./components/image-compare/ImageCompare.js";
15
+ import { default as F } from "./components/text-type/TextType.js";
16
+ import { TextAnimate as G } from "./components/text-animate/TextAnimate.js";
17
17
  import { Dock as v, DockIcon as w, dockVariants as E } from "./components/dock/Duck.js";
18
18
  import { TxtEditor as M } from "./components/txt-editor/TxtEditor.js";
19
19
  import { Message as j } from "./components/message/Message.js";
@@ -29,6 +29,7 @@ import { AnimatedList as mo, AnimatedListItem as xo } from "./components/animate
29
29
  import { ShinyButton as po } from "./components/shiny-button/ShinyButton.js";
30
30
  import { ScratchToReveal as io } from "./components/scratch-to-reveal/ScratchToReveal.js";
31
31
  import { SplitText as lo } from "./components/split-text/SplitText.js";
32
+ import { SubtitlePlayer as uo } from "./components/subtitle-player/SubtitlePlayer.js";
32
33
  export {
33
34
  mo as AnimatedList,
34
35
  xo as AnimatedListItem,
@@ -36,14 +37,14 @@ export {
36
37
  r as Button,
37
38
  oo as ComicText,
38
39
  s as Confetti,
39
- T as ConfettiButton,
40
+ u as ConfettiButton,
40
41
  v as Dock,
41
42
  w as DockIcon,
42
43
  eo as FlipText,
43
44
  z as ForceGraph3D,
44
45
  c as GradientText,
45
46
  p as HyperText,
46
- V as ImageCompare,
47
+ R as ImageCompare,
47
48
  A as ImageViewer,
48
49
  j as Message,
49
50
  B as PinchContent,
@@ -54,12 +55,13 @@ export {
54
55
  po as ShinyButton,
55
56
  W as SparklesText,
56
57
  lo as SplitText,
57
- L as TextAnimate,
58
- P as TextType,
58
+ uo as SubtitlePlayer,
59
+ G as TextAnimate,
60
+ F as TextType,
59
61
  M as TxtEditor,
60
62
  x as TxtReader,
61
63
  i as TypingAnimation,
62
- C as VariableProximity,
64
+ S as VariableProximity,
63
65
  _ as VideoDialog,
64
66
  K as confetti,
65
67
  E as dockVariants,