@xiping/react-components 1.0.69 → 1.0.77

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 (209) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.js +1 -0
  2. package/dist/cjs/components/blur-fade/BlurFade.js +1 -1
  3. package/dist/cjs/components/blur-text/BlurText.js +1 -1
  4. package/dist/cjs/components/button/Button.css +1 -1
  5. package/dist/cjs/components/button/Button2.js +1 -0
  6. package/dist/cjs/components/comic-text/ComicText2.js +4 -0
  7. package/dist/cjs/components/confetti-button/index.js +1 -1
  8. package/dist/cjs/components/dock/Duck.css +1 -1
  9. package/dist/cjs/components/dock/Duck2.js +1 -0
  10. package/dist/cjs/components/flip-text/FlipText.css +1 -1
  11. package/dist/cjs/components/flip-text/FlipText2.js +1 -0
  12. package/dist/cjs/components/gradient-text/index.css +1 -1
  13. package/dist/cjs/components/gradient-text/index2.js +1 -0
  14. package/dist/cjs/components/hyper-text/HyperText.css +1 -1
  15. package/dist/cjs/components/hyper-text/index.js +1 -1
  16. package/dist/cjs/components/image-compare/ImageCompare.css +1 -1
  17. package/dist/cjs/components/image-compare/ImageCompare2.js +1 -0
  18. package/dist/cjs/components/image-viewer/ImageThumbnails.css +1 -1
  19. package/dist/cjs/components/image-viewer/ImageThumbnails2.js +1 -0
  20. package/dist/cjs/components/image-viewer/ImageViewer.css +1 -1
  21. package/dist/cjs/components/image-viewer/ImageViewer.d.ts +1 -1
  22. package/dist/cjs/components/image-viewer/ImageViewer2.js +1 -0
  23. package/dist/cjs/components/message/Message.css +1 -1
  24. package/dist/cjs/components/message/Message2.js +1 -0
  25. package/dist/cjs/components/pinch-content/PinchContent.js +1 -1
  26. package/dist/cjs/components/pinch-content/index.js +1 -1
  27. package/dist/cjs/components/pointer/Pointer.css +1 -1
  28. package/dist/cjs/components/pointer/Pointer2.js +1 -0
  29. package/dist/cjs/components/scratch-to-reveal/ScratchToReveal.css +1 -1
  30. package/dist/cjs/components/scratch-to-reveal/ScratchToReveal2.js +1 -0
  31. package/dist/cjs/components/shimmer-button/ShimmerButton.css +1 -1
  32. package/dist/cjs/components/shimmer-button/ShimmerButton2.js +1 -0
  33. package/dist/cjs/components/shiny-button/ShinyButton.css +1 -1
  34. package/dist/cjs/components/shiny-button/ShinyButton2.js +1 -0
  35. package/dist/cjs/components/shiny-text/ShinyText2.js +1 -0
  36. package/dist/cjs/components/sparkles-text/SparklesText.css +1 -1
  37. package/dist/cjs/components/sparkles-text/SparklesText2.js +1 -0
  38. package/dist/cjs/components/split-text/SplitText.css +1 -1
  39. package/dist/cjs/components/split-text/SplitText2.js +1 -0
  40. package/dist/cjs/components/subtitle-player/CurrentMode.css +1 -1
  41. package/dist/cjs/components/subtitle-player/CurrentMode2.js +2 -0
  42. package/dist/cjs/components/subtitle-player/LyricsMode.css +1 -1
  43. package/dist/cjs/components/subtitle-player/LyricsMode2.js +2 -0
  44. package/dist/cjs/components/subtitle-player/SubtitlePlayer.css +1 -1
  45. package/dist/cjs/components/subtitle-player/SubtitlePlayer2.js +1 -0
  46. package/dist/cjs/components/subtitle-player/utils.js +1 -1
  47. package/dist/cjs/components/text-animate/TextAnimate.css +1 -1
  48. package/dist/cjs/components/text-animate/TextAnimate2.js +2 -0
  49. package/dist/cjs/components/text-type/TextType.css +1 -1
  50. package/dist/cjs/components/text-type/TextType2.js +1 -0
  51. package/dist/cjs/components/txt-editor/TxtEditor.js +4 -4
  52. package/dist/cjs/components/txt-reader/TxtReader.js +1 -1
  53. package/dist/cjs/components/txt-reader/index.module.css +1 -1
  54. package/dist/cjs/components/txt-reader/index.module.js +1 -0
  55. package/dist/cjs/components/typing-animation/index.css +1 -1
  56. package/dist/cjs/components/typing-animation/index2.js +1 -0
  57. package/dist/cjs/components/variable-proximity/index.css +1 -1
  58. package/dist/cjs/components/variable-proximity/index2.js +1 -0
  59. package/dist/cjs/components/video-dialog/VideoDialog.css +1 -1
  60. package/dist/cjs/components/video-dialog/VideoDialog2.js +1 -0
  61. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayer.css +1 -1
  62. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayer.mobile.css +1 -1
  63. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayer.pc.css +1 -1
  64. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayer2.js +1 -0
  65. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayerMobile.js +1 -1
  66. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayerPC.js +1 -1
  67. package/dist/cjs/components/video-subtitle-player/layouts/VideoSubtitlePlayerLayoutMobile.js +1 -1
  68. package/dist/cjs/components/video-subtitle-player/layouts/VideoSubtitlePlayerLayoutPC.js +1 -1
  69. package/dist/cjs/components/video-subtitle-player/useVideoSubtitleStore.js +1 -1
  70. package/dist/cjs/components/video-subtitle-player/useXGPlayer.js +1 -1
  71. package/dist/cjs/hooks/useStayTimeReport.js +1 -1
  72. package/dist/cjs/index.js +1 -1
  73. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.24_core-js@3.47.0/node_modules/xgplayer/dist/index.min.css +1 -0
  74. package/dist/cjs/packages/subtitle/lib/index.js +1 -0
  75. package/dist/cjs/packages/subtitle/lib/src/json-converter.js +1 -1
  76. package/dist/cjs/packages/subtitle/lib/src/parser.js +5 -5
  77. package/dist/cjs/react-components.css +27 -27
  78. package/dist/es/components/blur-fade/BlurFade.js +37 -49
  79. package/dist/es/components/blur-text/BlurText.js +67 -76
  80. package/dist/es/components/button/Button.css +1 -1
  81. package/dist/es/components/button/Button2.js +48 -0
  82. package/dist/es/components/comic-text/ComicText2.js +55 -0
  83. package/dist/es/components/confetti-button/index.js +63 -75
  84. package/dist/es/components/dock/Duck.css +1 -1
  85. package/dist/es/components/dock/Duck2.js +60 -0
  86. package/dist/es/components/flip-text/FlipText.css +1 -1
  87. package/dist/es/components/flip-text/FlipText2.js +41 -0
  88. package/dist/es/components/gradient-text/index.css +1 -1
  89. package/dist/es/components/gradient-text/index2.js +29 -0
  90. package/dist/es/components/hyper-text/HyperText.css +1 -1
  91. package/dist/es/components/hyper-text/index.js +51 -79
  92. package/dist/es/components/image-compare/ImageCompare.css +1 -1
  93. package/dist/es/components/image-compare/ImageCompare2.js +96 -0
  94. package/dist/es/components/image-viewer/ImageThumbnails.css +1 -1
  95. package/dist/es/components/image-viewer/ImageThumbnails2.js +40 -0
  96. package/dist/es/components/image-viewer/ImageViewer.css +1 -1
  97. package/dist/es/components/image-viewer/ImageViewer.d.ts +1 -1
  98. package/dist/es/components/image-viewer/ImageViewer2.js +151 -0
  99. package/dist/es/components/message/Message.css +1 -1
  100. package/dist/es/components/message/Message2.js +189 -0
  101. package/dist/es/components/pinch-content/PinchContent.js +120 -127
  102. package/dist/es/components/pinch-content/index.js +5 -5
  103. package/dist/es/components/pointer/Pointer.css +1 -1
  104. package/dist/es/components/pointer/Pointer2.js +61 -0
  105. package/dist/es/components/react-force-graph-3d/index.js +2 -0
  106. package/dist/es/components/scratch-to-reveal/ScratchToReveal.css +1 -1
  107. package/dist/es/components/scratch-to-reveal/ScratchToReveal2.js +88 -0
  108. package/dist/es/components/shimmer-button/ShimmerButton.css +1 -1
  109. package/dist/es/components/shimmer-button/ShimmerButton2.js +33 -0
  110. package/dist/es/components/shiny-button/ShinyButton.css +1 -1
  111. package/dist/es/components/shiny-button/ShinyButton2.js +53 -0
  112. package/dist/es/components/shiny-text/ShinyText2.js +61 -0
  113. package/dist/es/components/sparkles-text/SparklesText.css +1 -1
  114. package/dist/es/components/sparkles-text/SparklesText2.js +90 -0
  115. package/dist/es/components/split-text/SplitText.css +1 -1
  116. package/dist/es/components/split-text/SplitText2.js +109 -0
  117. package/dist/es/components/subtitle-player/CurrentMode.css +1 -1
  118. package/dist/es/components/subtitle-player/CurrentMode2.js +44 -0
  119. package/dist/es/components/subtitle-player/LyricsMode.css +1 -1
  120. package/dist/es/components/subtitle-player/LyricsMode2.js +114 -0
  121. package/dist/es/components/subtitle-player/SubtitlePlayer.css +1 -1
  122. package/dist/es/components/subtitle-player/SubtitlePlayer2.js +169 -0
  123. package/dist/es/components/subtitle-player/utils.js +63 -69
  124. package/dist/es/components/text-animate/TextAnimate.css +1 -1
  125. package/dist/es/components/text-animate/TextAnimate2.js +312 -0
  126. package/dist/es/components/text-type/TextType.css +1 -1
  127. package/dist/es/components/text-type/TextType2.js +80 -0
  128. package/dist/es/components/txt-editor/TxtEditor.js +60 -95
  129. package/dist/es/components/txt-reader/TxtReader.js +45 -74
  130. package/dist/es/components/txt-reader/index.module.css +1 -1
  131. package/dist/es/components/txt-reader/index.module.js +10 -0
  132. package/dist/es/components/typing-animation/index.css +1 -1
  133. package/dist/es/components/typing-animation/index2.js +43 -0
  134. package/dist/es/components/variable-proximity/index.css +1 -1
  135. package/dist/es/components/variable-proximity/index2.js +179 -0
  136. package/dist/es/components/video-dialog/VideoDialog.css +1 -1
  137. package/dist/es/components/video-dialog/VideoDialog2.js +168 -0
  138. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayer.css +1 -1
  139. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayer.mobile.css +1 -1
  140. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayer.pc.css +1 -1
  141. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayer2.js +43 -0
  142. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayerMobile.js +29 -46
  143. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayerPC.js +94 -74
  144. package/dist/es/components/video-subtitle-player/layouts/VideoSubtitlePlayerLayoutMobile.js +24 -21
  145. package/dist/es/components/video-subtitle-player/layouts/VideoSubtitlePlayerLayoutPC.js +58 -50
  146. package/dist/es/components/video-subtitle-player/useVideoSubtitleStore.js +61 -56
  147. package/dist/es/components/video-subtitle-player/useXGPlayer.js +38 -35
  148. package/dist/es/hooks/useStayTimeReport.js +29 -29
  149. package/dist/es/index.js +33 -70
  150. package/dist/es/node_modules/.pnpm/xgplayer@3.0.24_core-js@3.47.0/node_modules/xgplayer/dist/index.min.css +1 -0
  151. package/dist/es/packages/subtitle/lib/index.js +2 -0
  152. package/dist/es/packages/subtitle/lib/src/json-converter.js +22 -23
  153. package/dist/es/packages/subtitle/lib/src/parser.js +41 -54
  154. package/dist/es/react-components.css +27 -27
  155. package/package.json +28 -29
  156. package/dist/cjs/components/button/Button.js +0 -1
  157. package/dist/cjs/components/comic-text/ComicText.js +0 -4
  158. package/dist/cjs/components/dock/Duck.js +0 -1
  159. package/dist/cjs/components/flip-text/FlipText.js +0 -1
  160. package/dist/cjs/components/gradient-text/index.js +0 -1
  161. package/dist/cjs/components/image-compare/ImageCompare.js +0 -1
  162. package/dist/cjs/components/image-viewer/ImageThumbnails.js +0 -1
  163. package/dist/cjs/components/image-viewer/ImageViewer.js +0 -1
  164. package/dist/cjs/components/message/Message.js +0 -1
  165. package/dist/cjs/components/pointer/Pointer.js +0 -1
  166. package/dist/cjs/components/scratch-to-reveal/ScratchToReveal.js +0 -1
  167. package/dist/cjs/components/shimmer-button/ShimmerButton.js +0 -1
  168. package/dist/cjs/components/shiny-button/ShinyButton.js +0 -1
  169. package/dist/cjs/components/shiny-text/ShinyText.js +0 -1
  170. package/dist/cjs/components/sparkles-text/SparklesText.js +0 -1
  171. package/dist/cjs/components/split-text/SplitText.js +0 -1
  172. package/dist/cjs/components/subtitle-player/CurrentMode.js +0 -2
  173. package/dist/cjs/components/subtitle-player/LyricsMode.js +0 -2
  174. package/dist/cjs/components/subtitle-player/SubtitlePlayer.js +0 -1
  175. package/dist/cjs/components/text-animate/TextAnimate.js +0 -2
  176. package/dist/cjs/components/text-type/TextType.js +0 -1
  177. package/dist/cjs/components/txt-reader/index.module.css.js +0 -1
  178. package/dist/cjs/components/typing-animation/index.js +0 -1
  179. package/dist/cjs/components/variable-proximity/index.js +0 -1
  180. package/dist/cjs/components/video-dialog/VideoDialog.js +0 -1
  181. package/dist/cjs/components/video-subtitle-player/VideoSubtitlePlayer.js +0 -1
  182. package/dist/cjs/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/dist/index.min.css +0 -1
  183. package/dist/es/components/button/Button.js +0 -72
  184. package/dist/es/components/comic-text/ComicText.js +0 -52
  185. package/dist/es/components/dock/Duck.js +0 -80
  186. package/dist/es/components/flip-text/FlipText.js +0 -38
  187. package/dist/es/components/gradient-text/index.js +0 -22
  188. package/dist/es/components/image-compare/ImageCompare.js +0 -127
  189. package/dist/es/components/image-viewer/ImageThumbnails.js +0 -73
  190. package/dist/es/components/image-viewer/ImageViewer.js +0 -141
  191. package/dist/es/components/message/Message.js +0 -220
  192. package/dist/es/components/pointer/Pointer.js +0 -75
  193. package/dist/es/components/scratch-to-reveal/ScratchToReveal.js +0 -97
  194. package/dist/es/components/shimmer-button/ShimmerButton.js +0 -42
  195. package/dist/es/components/shiny-button/ShinyButton.js +0 -61
  196. package/dist/es/components/shiny-text/ShinyText.js +0 -76
  197. package/dist/es/components/sparkles-text/SparklesText.js +0 -71
  198. package/dist/es/components/split-text/SplitText.js +0 -116
  199. package/dist/es/components/subtitle-player/CurrentMode.js +0 -78
  200. package/dist/es/components/subtitle-player/LyricsMode.js +0 -152
  201. package/dist/es/components/subtitle-player/SubtitlePlayer.js +0 -234
  202. package/dist/es/components/text-animate/TextAnimate.js +0 -310
  203. package/dist/es/components/text-type/TextType.js +0 -121
  204. package/dist/es/components/txt-reader/index.module.css.js +0 -10
  205. package/dist/es/components/typing-animation/index.js +0 -56
  206. package/dist/es/components/variable-proximity/index.js +0 -211
  207. package/dist/es/components/video-dialog/VideoDialog.js +0 -113
  208. package/dist/es/components/video-subtitle-player/VideoSubtitlePlayer.js +0 -74
  209. package/dist/es/node_modules/.pnpm/xgplayer@3.0.23_core-js@3.47.0/node_modules/xgplayer/dist/index.min.css +0 -1
@@ -1,76 +0,0 @@
1
- import { jsx as L } from "react/jsx-runtime";
2
- import { useState as W, useRef as d, useEffect as j, useCallback as y } from "react";
3
- import { useMotionValue as v, useAnimationFrame as z, useTransform as A, motion as B } from "motion/react";
4
- import './ShinyText.css';/* empty css */
5
- const G = ({
6
- text: T,
7
- disabled: k = !1,
8
- speed: $ = 2,
9
- className: x = "",
10
- color: u = "#b5b5b5",
11
- shineColor: h = "#ffffff",
12
- spread: C = 120,
13
- yoyo: M = !1,
14
- pauseOnHover: l = !1,
15
- direction: f = "left",
16
- delay: D = 0
17
- }) => {
18
- const [R, p] = W(!1), e = v(0), a = d(0), c = d(null), r = d(f === "left" ? 1 : -1), t = $ * 1e3, b = D * 1e3;
19
- z((o) => {
20
- if (k || R) {
21
- c.current = null;
22
- return;
23
- }
24
- if (c.current === null) {
25
- c.current = o;
26
- return;
27
- }
28
- const I = o - c.current;
29
- if (c.current = o, a.current += I, M) {
30
- const s = t + b, i = s * 2, n = a.current % i;
31
- if (n < t) {
32
- const m = n / t * 100;
33
- e.set(r.current === 1 ? m : 100 - m);
34
- } else if (n < s)
35
- e.set(r.current === 1 ? 100 : 0);
36
- else if (n < s + t) {
37
- const g = 100 - (n - s) / t * 100;
38
- e.set(r.current === 1 ? g : 100 - g);
39
- } else
40
- e.set(r.current === 1 ? 0 : 100);
41
- } else {
42
- const s = t + b, i = a.current % s;
43
- if (i < t) {
44
- const n = i / t * 100;
45
- e.set(r.current === 1 ? n : 100 - n);
46
- } else
47
- e.set(r.current === 1 ? 100 : 0);
48
- }
49
- }), j(() => {
50
- r.current = f === "left" ? 1 : -1, a.current = 0, e.set(0);
51
- }, [f]);
52
- const S = A(e, (o) => `${150 - o * 2}% center`), E = y(() => {
53
- l && p(!0);
54
- }, [l]), P = y(() => {
55
- l && p(!1);
56
- }, [l]), F = {
57
- backgroundImage: `linear-gradient(${C}deg, ${u} 0%, ${u} 35%, ${h} 50%, ${u} 65%, ${u} 100%)`,
58
- backgroundSize: "200% auto",
59
- WebkitBackgroundClip: "text",
60
- backgroundClip: "text",
61
- WebkitTextFillColor: "transparent"
62
- };
63
- return /* @__PURE__ */ L(
64
- B.span,
65
- {
66
- className: `shiny-text ${x}`,
67
- style: { ...F, backgroundPosition: S },
68
- onMouseEnter: E,
69
- onMouseLeave: P,
70
- children: T
71
- }
72
- );
73
- };
74
- export {
75
- G as default
76
- };
@@ -1,71 +0,0 @@
1
- "use client";
2
- import { jsx as r, jsxs as g } from "react/jsx-runtime";
3
- import { motion as k } from "motion/react";
4
- import { useState as L, useEffect as S } from "react";
5
- import y from "clsx";
6
- import './SparklesText.css';/* empty css */
7
- const M = ({ id: i, x: t, y: o, color: s, delay: l, scale: c }) => /* @__PURE__ */ r(
8
- k.svg,
9
- {
10
- className: "xiping-sparkle",
11
- initial: { opacity: 0, left: t, top: o },
12
- animate: {
13
- opacity: [0, 1, 0],
14
- scale: [0, c, 0],
15
- rotate: [75, 120, 150]
16
- },
17
- transition: { duration: 0.8, repeat: 1 / 0, delay: l },
18
- width: "21",
19
- height: "21",
20
- viewBox: "0 0 21 21",
21
- children: /* @__PURE__ */ r(
22
- "path",
23
- {
24
- d: "M9.82531 0.843845C10.0553 0.215178 10.9446 0.215178 11.1746 0.843845L11.8618 2.72026C12.4006 4.19229 12.3916 6.39157 13.5 7.5C14.6084 8.60843 16.8077 8.59935 18.2797 9.13822L20.1561 9.82534C20.7858 10.0553 20.7858 10.9447 20.1561 11.1747L18.2797 11.8618C16.8077 12.4007 14.6084 12.3916 13.5 13.5C12.3916 14.6084 12.4006 16.8077 11.8618 18.2798L11.1746 20.1562C10.9446 20.7858 10.0553 20.7858 9.82531 20.1562L9.13819 18.2798C8.59932 16.8077 8.60843 14.6084 7.5 13.5C6.39157 12.3916 4.19225 12.4007 2.72023 11.8618L0.843814 11.1747C0.215148 10.9447 0.215148 10.0553 0.843814 9.82534L2.72023 9.13822C4.19225 8.59935 6.39157 8.60843 7.5 7.5C8.60843 6.39157 8.59932 4.19229 9.13819 2.72026L9.82531 0.843845Z",
25
- fill: s
26
- }
27
- )
28
- },
29
- i
30
- ), I = ({
31
- children: i,
32
- colors: t = { first: "#9E7AFF", second: "#FE8BBB" },
33
- className: o,
34
- sparklesCount: s = 10,
35
- ...l
36
- }) => {
37
- const [c, p] = L([]);
38
- return S(() => {
39
- const n = () => {
40
- const e = `${Math.random() * 100}%`, a = `${Math.random() * 100}%`, h = Math.random() > 0.5 ? t.first : t.second, x = Math.random() * 2, C = Math.random() * 1 + 0.3, u = Math.random() * 10 + 5;
41
- return { id: `${e}-${a}-${Date.now()}`, x: e, y: a, color: h, delay: x, scale: C, lifespan: u };
42
- }, d = () => {
43
- const e = Array.from({ length: s }, n);
44
- p(e);
45
- }, m = () => {
46
- p(
47
- (e) => e.map((a) => a.lifespan <= 0 ? n() : { ...a, lifespan: a.lifespan - 0.1 })
48
- );
49
- };
50
- d();
51
- const f = setInterval(m, 100);
52
- return () => clearInterval(f);
53
- }, [t.first, t.second, s]), /* @__PURE__ */ r(
54
- "div",
55
- {
56
- className: y("xiping-sparkles-text", o),
57
- ...l,
58
- style: {
59
- "--sparkles-first-color": `${t.first}`,
60
- "--sparkles-second-color": `${t.second}`
61
- },
62
- children: /* @__PURE__ */ g("span", { className: "xiping-sparkles-text-wrapper", children: [
63
- c.map((n) => /* @__PURE__ */ r(M, { ...n }, n.id)),
64
- /* @__PURE__ */ r("strong", { children: i })
65
- ] })
66
- }
67
- );
68
- };
69
- export {
70
- I as SparklesText
71
- };
@@ -1,116 +0,0 @@
1
- import { jsx as E } from "react/jsx-runtime";
2
- import { useRef as m, useEffect as F } from "react";
3
- import { gsap as i } from "gsap";
4
- import { ScrollTrigger as N } from "gsap/ScrollTrigger";
5
- import { SplitText as S } from "gsap/SplitText";
6
- import j from "clsx";
7
- import './SplitText.css';/* empty css */
8
- i.registerPlugin(N, S);
9
- const A = ({
10
- text: l,
11
- className: C = "",
12
- delay: g = 100,
13
- duration: d = 0.6,
14
- ease: h = "power3.out",
15
- splitType: n = "chars",
16
- from: w = { opacity: 0, y: 40 },
17
- to: c = { opacity: 1, y: 0 },
18
- threshold: x = 0.1,
19
- rootMargin: y = "-100px",
20
- textAlign: R = "center",
21
- onLetterAnimationComplete: T
22
- }) => {
23
- const a = m(null), $ = m(!1), o = m(null);
24
- return F(() => {
25
- if (typeof window > "u" || !a.current || !l) return;
26
- const p = a.current;
27
- $.current = !1;
28
- const b = n === "lines";
29
- b && (p.style.position = "relative");
30
- let r;
31
- try {
32
- r = new S(p, {
33
- type: n,
34
- absolute: b,
35
- linesClass: "split-line"
36
- });
37
- } catch (t) {
38
- console.error("Failed to create SplitText:", t);
39
- return;
40
- }
41
- let e;
42
- switch (n) {
43
- case "lines":
44
- e = r.lines;
45
- break;
46
- case "words":
47
- e = r.words;
48
- break;
49
- case "chars":
50
- e = r.chars;
51
- break;
52
- default:
53
- e = r.chars;
54
- }
55
- if (!e || e.length === 0) {
56
- console.warn("No targets found for SplitText animation"), r.revert();
57
- return;
58
- }
59
- e.forEach((t) => {
60
- t.style.willChange = "transform, opacity";
61
- });
62
- const v = (1 - x) * 100, s = /^(-?\d+(?:\.\d+)?)(px|em|rem|%)?$/.exec(y), u = s ? parseFloat(s[1]) : 0, k = s && s[2] || "px", P = u < 0 ? `-=${Math.abs(u)}${k}` : `+=${u}${k}`, D = `top ${v}%${P}`, f = i.timeline({
63
- scrollTrigger: {
64
- trigger: p,
65
- start: D,
66
- toggleActions: "play none none none",
67
- once: !0,
68
- onToggle: (t) => {
69
- o.current = t;
70
- }
71
- },
72
- smoothChildTiming: !0,
73
- onComplete: () => {
74
- $.current = !0, i.set(e, {
75
- ...c,
76
- clearProps: "willChange",
77
- immediateRender: !0
78
- }), T?.();
79
- }
80
- });
81
- return f.set(e, { ...w, immediateRender: !1, force3D: !0 }), f.to(e, {
82
- ...c,
83
- duration: d,
84
- ease: h,
85
- stagger: g / 1e3,
86
- force3D: !0
87
- }), () => {
88
- f.kill(), o.current && (o.current.kill(), o.current = null), i.killTweensOf(e), r && r.revert();
89
- };
90
- }, [
91
- l,
92
- g,
93
- d,
94
- h,
95
- n,
96
- w,
97
- c,
98
- x,
99
- y,
100
- T
101
- ]), /* @__PURE__ */ E(
102
- "p",
103
- {
104
- ref: a,
105
- className: j("xiping-split-parent", C),
106
- style: {
107
- textAlign: R,
108
- wordWrap: "break-word"
109
- },
110
- children: l
111
- }
112
- );
113
- };
114
- export {
115
- A as SplitText
116
- };
@@ -1,78 +0,0 @@
1
- import { jsxs as u, Fragment as v, jsx as r } from "react/jsx-runtime";
2
- import { renderTextWithWords as g } from "./utils.js";
3
- import './CurrentMode.css';/* empty css */
4
- const C = ({
5
- currentEntries: l,
6
- wordHoverFactory: p,
7
- enableWordHover: o,
8
- overlayNode: a,
9
- onSubtitleClick: i,
10
- textAlign: x = "left"
11
- }) => l.some(({ entry: e }) => e !== null) ? /* @__PURE__ */ u(v, { children: [
12
- l.map(({ entry: e, label: n }) => {
13
- if (!e)
14
- return null;
15
- const h = e.text.split(`
16
- `), m = o ? p(e, n) : void 0, _ = h.reduce(
17
- (t, d, s) => {
18
- if (!e.words || e.words.length === 0)
19
- return t.content.push(
20
- /* @__PURE__ */ r(
21
- "div",
22
- {
23
- className: "xiping-subtitle-player__current-line",
24
- children: d
25
- },
26
- s
27
- )
28
- ), t;
29
- const c = g(
30
- d,
31
- e.words,
32
- t.nextWordIndex,
33
- s,
34
- m
35
- );
36
- return t.content.push(
37
- /* @__PURE__ */ r(
38
- "div",
39
- {
40
- className: "xiping-subtitle-player__current-line",
41
- children: c.nodes
42
- },
43
- s
44
- )
45
- ), {
46
- content: t.content,
47
- nextWordIndex: c.nextWordIndex
48
- };
49
- },
50
- { content: [], nextWordIndex: 0 }
51
- ).content;
52
- return /* @__PURE__ */ u(
53
- "div",
54
- {
55
- className: "xiping-subtitle-player__current-item",
56
- "data-label": n || void 0,
57
- onClick: i ? (t) => i(t, e, n) : void 0,
58
- style: i ? { cursor: "pointer" } : void 0,
59
- children: [
60
- n && /* @__PURE__ */ r("span", { className: "xiping-subtitle-player__current-label", children: n }),
61
- /* @__PURE__ */ r(
62
- "div",
63
- {
64
- className: "xiping-subtitle-player__current-text",
65
- style: { textAlign: x },
66
- children: _
67
- }
68
- )
69
- ]
70
- },
71
- `${e.index}-${n || ""}`
72
- );
73
- }),
74
- o && /* @__PURE__ */ r("div", { className: "xiping-subtitle-player__current-hover-layer", children: a })
75
- ] }) : null;
76
- export {
77
- C as CurrentMode
78
- };
@@ -1,152 +0,0 @@
1
- import { jsxs as $, Fragment as K, jsx as c } from "react/jsx-runtime";
2
- import { useRef as W, useMemo as I, useEffect as b, useCallback as j } from "react";
3
- import A from "clsx";
4
- import { secondsToTimeString as H, renderTextWithWords as L } from "./utils.js";
5
- import './LyricsMode.css';/* empty css */
6
- const M = ({
7
- entry: t,
8
- label: s,
9
- endTime: v,
10
- currentTime: _,
11
- isActive: y,
12
- isFirstItem: u,
13
- timeString: g,
14
- textAlign: N,
15
- enableWordHover: d,
16
- wordHoverFactory: h,
17
- onSubtitleClick: n,
18
- itemRef: e
19
- }) => {
20
- const r = _ > v, i = j(
21
- (m) => {
22
- n && n(m, t, s);
23
- },
24
- [n, t, s]
25
- ), o = I(
26
- () => d ? h(t, s) : void 0,
27
- [d, h, t, s]
28
- ), l = I(() => t.text.split(`
29
- `).reduce(
30
- (p, x, a) => {
31
- if (!t.words || t.words.length === 0)
32
- return p.content.push(
33
- /* @__PURE__ */ c(
34
- "div",
35
- {
36
- className: "xiping-subtitle-player__lyrics-line",
37
- children: x
38
- },
39
- a
40
- )
41
- ), p;
42
- const f = L(
43
- x,
44
- t.words,
45
- p.nextWordIndex,
46
- a,
47
- o
48
- );
49
- return p.content.push(
50
- /* @__PURE__ */ c(
51
- "div",
52
- {
53
- className: "xiping-subtitle-player__lyrics-line",
54
- children: f.nodes
55
- },
56
- a
57
- )
58
- ), {
59
- content: p.content,
60
- nextWordIndex: f.nextWordIndex
61
- };
62
- },
63
- { content: [], nextWordIndex: 0 }
64
- ).content, [t.text, t.words, o]);
65
- return /* @__PURE__ */ $(
66
- "div",
67
- {
68
- ref: e,
69
- className: A("xiping-subtitle-player__lyrics-item", {
70
- "xiping-subtitle-player__lyrics-item--active": y,
71
- "xiping-subtitle-player__lyrics-item--past": r
72
- }),
73
- "data-label": s || void 0,
74
- onClick: n ? i : void 0,
75
- style: n ? { cursor: "pointer" } : void 0,
76
- children: [
77
- u && g && /* @__PURE__ */ c("span", { className: "xiping-subtitle-player__lyrics-time", children: g }),
78
- s && /* @__PURE__ */ c("span", { className: "xiping-subtitle-player__lyrics-label", children: s }),
79
- /* @__PURE__ */ c(
80
- "div",
81
- {
82
- className: "xiping-subtitle-player__lyrics-text",
83
- style: { textAlign: N },
84
- children: l
85
- }
86
- )
87
- ]
88
- }
89
- );
90
- }, q = ({
91
- groupedEntriesByTime: t,
92
- currentTime: s,
93
- wordHoverFactory: v,
94
- enableWordHover: _,
95
- overlayNode: y,
96
- containerRef: u,
97
- onSubtitleClick: g,
98
- textAlign: N = "left"
99
- }) => {
100
- const d = W(null), h = W(null), n = I(() => {
101
- for (let e = 0; e < t.length; e++) {
102
- const r = t[e];
103
- for (let i = 0; i < r.length; i++) {
104
- const { startTime: o, endTime: l } = r[i];
105
- if (s >= o && s <= l)
106
- return `${e}-${i}`;
107
- }
108
- }
109
- return null;
110
- }, [t, s]);
111
- return b(() => {
112
- if (n && n !== h.current && d.current && u.current) {
113
- const e = u.current, r = d.current, i = r.offsetTop, o = e.clientHeight, l = r.clientHeight, m = i - o / 2 + l / 2;
114
- e.scrollTo({
115
- top: m,
116
- behavior: "smooth"
117
- }), h.current = n;
118
- }
119
- }, [n, u]), /* @__PURE__ */ $(K, { children: [
120
- t.map((e, r) => {
121
- const i = e[0];
122
- if (!i)
123
- return null;
124
- const o = H(i.startTime);
125
- return /* @__PURE__ */ c("div", { className: "xiping-subtitle-player__group", children: e.map(({ entry: l, label: m, startTime: p, endTime: x }, a) => {
126
- const f = s >= p && s <= x, w = `${r}-${a}`;
127
- return /* @__PURE__ */ c(
128
- M,
129
- {
130
- entry: l,
131
- label: m,
132
- endTime: x,
133
- currentTime: s,
134
- isActive: f,
135
- isFirstItem: a === 0,
136
- timeString: a === 0 ? o : void 0,
137
- textAlign: N,
138
- enableWordHover: _,
139
- wordHoverFactory: v,
140
- onSubtitleClick: g,
141
- itemRef: f ? d : void 0
142
- },
143
- w
144
- );
145
- }) }, r);
146
- }),
147
- _ && /* @__PURE__ */ c("div", { className: "xiping-subtitle-player__lyrics-hover-layer", children: y })
148
- ] });
149
- };
150
- export {
151
- q as LyricsMode
152
- };