@therealtinhtute/baroiplayer 1.2.0 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/README.md +91 -73
  2. package/dist/components/icons/index.d.ts +36 -0
  3. package/dist/components/icons/index.d.ts.map +1 -0
  4. package/dist/components/icons/svg-icons/ArrowLeftIcon.d.ts +4 -0
  5. package/dist/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +1 -0
  6. package/dist/components/icons/svg-icons/ArrowRightIcon.d.ts +5 -0
  7. package/dist/components/icons/svg-icons/ArrowRightIcon.d.ts.map +1 -0
  8. package/dist/components/icons/svg-icons/AudioIcon.d.ts +5 -0
  9. package/dist/components/icons/svg-icons/AudioIcon.d.ts.map +1 -0
  10. package/dist/components/icons/svg-icons/BackwardIcon.d.ts +5 -0
  11. package/dist/components/icons/svg-icons/BackwardIcon.d.ts.map +1 -0
  12. package/dist/components/icons/svg-icons/CameraIcon.d.ts +5 -0
  13. package/dist/components/icons/svg-icons/CameraIcon.d.ts.map +1 -0
  14. package/dist/components/icons/svg-icons/CheckIcon.d.ts +5 -0
  15. package/dist/components/icons/svg-icons/CheckIcon.d.ts.map +1 -0
  16. package/dist/components/icons/svg-icons/EnablePiPIcon.d.ts +4 -0
  17. package/dist/components/icons/svg-icons/EnablePiPIcon.d.ts.map +1 -0
  18. package/dist/components/icons/svg-icons/ForwardIcon.d.ts +5 -0
  19. package/dist/components/icons/svg-icons/ForwardIcon.d.ts.map +1 -0
  20. package/dist/components/icons/svg-icons/FullscreenEnterIcon.d.ts +5 -0
  21. package/dist/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +1 -0
  22. package/dist/components/icons/svg-icons/FullscreenExitIcon.d.ts +5 -0
  23. package/dist/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +1 -0
  24. package/dist/components/icons/svg-icons/LoadingIcon.d.ts +5 -0
  25. package/dist/components/icons/svg-icons/LoadingIcon.d.ts.map +1 -0
  26. package/dist/components/icons/svg-icons/PauseIcon.d.ts +5 -0
  27. package/dist/components/icons/svg-icons/PauseIcon.d.ts.map +1 -0
  28. package/dist/components/icons/svg-icons/PlayIcon.d.ts +5 -0
  29. package/dist/components/icons/svg-icons/PlayIcon.d.ts.map +1 -0
  30. package/dist/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +5 -0
  31. package/dist/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +1 -0
  32. package/dist/components/icons/svg-icons/QualityIcon.d.ts +5 -0
  33. package/dist/components/icons/svg-icons/QualityIcon.d.ts.map +1 -0
  34. package/dist/components/icons/svg-icons/SettingsIcon.d.ts +5 -0
  35. package/dist/components/icons/svg-icons/SettingsIcon.d.ts.map +1 -0
  36. package/dist/components/icons/svg-icons/SliderIcon.d.ts +5 -0
  37. package/dist/components/icons/svg-icons/SliderIcon.d.ts.map +1 -0
  38. package/dist/components/icons/svg-icons/SubtitleIcon.d.ts +5 -0
  39. package/dist/components/icons/svg-icons/SubtitleIcon.d.ts.map +1 -0
  40. package/dist/components/icons/svg-icons/SubtitleOffIcon.d.ts +5 -0
  41. package/dist/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +1 -0
  42. package/dist/components/icons/svg-icons/UnPiPIcon.d.ts +4 -0
  43. package/dist/components/icons/svg-icons/UnPiPIcon.d.ts.map +1 -0
  44. package/dist/components/icons/svg-icons/VolumeMutedIcon.d.ts +5 -0
  45. package/dist/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +1 -0
  46. package/dist/components/icons/svg-icons/VolumeOneIcon.d.ts +5 -0
  47. package/dist/components/icons/svg-icons/VolumeOneIcon.d.ts.map +1 -0
  48. package/dist/components/icons/svg-icons/VolumeThreeIcon.d.ts +5 -0
  49. package/dist/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +1 -0
  50. package/dist/components/icons/svg-icons/VolumeTwoIcon.d.ts +5 -0
  51. package/dist/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +1 -0
  52. package/dist/components/variants/gradient/gradient-audio.d.ts +13 -0
  53. package/dist/components/variants/gradient/gradient-audio.d.ts.map +1 -0
  54. package/dist/components/variants/gradient/gradient-controls.d.ts +4 -0
  55. package/dist/components/variants/gradient/gradient-controls.d.ts.map +1 -0
  56. package/dist/components/variants/gradient/gradient-glyphs.d.ts +30 -0
  57. package/dist/components/variants/gradient/gradient-glyphs.d.ts.map +1 -0
  58. package/dist/components/variants/gradient/gradient-video.d.ts +16 -0
  59. package/dist/components/variants/gradient/gradient-video.d.ts.map +1 -0
  60. package/dist/index.css +1 -1
  61. package/dist/index.d.ts +5 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +2 -112
  64. package/dist/index.js.map +1 -1
  65. package/dist/index.mjs +786 -6271
  66. package/dist/index.mjs.map +1 -1
  67. package/dist/package.json +3 -0
  68. package/package.json +110 -108
  69. package/src/components/variants/gradient/gradient-audio.tsx +47 -0
  70. package/src/components/variants/gradient/gradient-controls.tsx +254 -0
  71. package/src/components/variants/gradient/gradient-glyphs.test.tsx +69 -0
  72. package/src/components/variants/gradient/gradient-glyphs.tsx +129 -0
  73. package/src/components/variants/gradient/gradient-skin.css +211 -0
  74. package/src/components/variants/gradient/gradient-video.tsx +70 -0
  75. package/src/index.ts +5 -198
  76. package/src/test/accessibility-utils.ts +0 -59
  77. package/dist/context/media.js +0 -2
  78. package/dist/context/media.js.map +0 -1
  79. package/dist/context/media.mjs +0 -15
  80. package/dist/context/media.mjs.map +0 -1
  81. package/dist/context/store.js +0 -2
  82. package/dist/context/store.js.map +0 -1
  83. package/dist/context/store.mjs +0 -5
  84. package/dist/context/store.mjs.map +0 -1
  85. package/dist/context-BYwDoSRX.js +0 -1172
  86. package/dist/context-BYwDoSRX.js.map +0 -1
  87. package/dist/context-eNS62_ac.cjs +0 -23
  88. package/dist/context-eNS62_ac.cjs.map +0 -1
  89. package/dist/core-events-B1iM2F46.cjs +0 -2
  90. package/dist/core-events-B1iM2F46.cjs.map +0 -1
  91. package/dist/core-events-DunPHKRE.js +0 -484
  92. package/dist/core-events-DunPHKRE.js.map +0 -1
  93. package/dist/core-plugins-By-4-kGs.cjs +0 -2
  94. package/dist/core-plugins-By-4-kGs.cjs.map +0 -1
  95. package/dist/core-plugins-DSBWcTuX.js +0 -821
  96. package/dist/core-plugins-DSBWcTuX.js.map +0 -1
  97. package/dist/core.js +0 -37
  98. package/dist/core.js.map +0 -1
  99. package/dist/core.mjs +0 -1233
  100. package/dist/core.mjs.map +0 -1
  101. package/dist/enhanced-components-B_l3cist.js +0 -1142
  102. package/dist/enhanced-components-B_l3cist.js.map +0 -1
  103. package/dist/enhanced-components-BspFs9OO.cjs +0 -2
  104. package/dist/enhanced-components-BspFs9OO.cjs.map +0 -1
  105. package/dist/hooks-BXwI8QG6.cjs +0 -4
  106. package/dist/hooks-BXwI8QG6.cjs.map +0 -1
  107. package/dist/hooks-Bpi-jDiO.js +0 -1816
  108. package/dist/hooks-Bpi-jDiO.js.map +0 -1
  109. package/dist/minimal-components-C4z900Ro.js +0 -1926
  110. package/dist/minimal-components-C4z900Ro.js.map +0 -1
  111. package/dist/minimal-components-v4qBp6jv.cjs +0 -2
  112. package/dist/minimal-components-v4qBp6jv.cjs.map +0 -1
  113. package/dist/minimal-components.css +0 -1
  114. package/dist/mona-loading.gif +0 -0
  115. package/dist/performance-monitor-C5k6FDXw.js +0 -301
  116. package/dist/performance-monitor-C5k6FDXw.js.map +0 -1
  117. package/dist/performance-monitor-lJmuUjQQ.cjs +0 -2
  118. package/dist/performance-monitor-lJmuUjQQ.cjs.map +0 -1
  119. package/dist/utils-CFOue_9K.cjs +0 -9
  120. package/dist/utils-CFOue_9K.cjs.map +0 -1
  121. package/dist/utils-Dzpl2ArK.js +0 -2844
  122. package/dist/utils-Dzpl2ArK.js.map +0 -1
  123. package/dist/utils.js +0 -2
  124. package/dist/utils.js.map +0 -1
  125. package/dist/utils.mjs +0 -11
  126. package/dist/utils.mjs.map +0 -1
  127. package/src/adapters/videojs-adapter.tsx +0 -470
  128. package/src/assets/mona-loading.gif +0 -0
  129. package/src/components/AnimateLoading.tsx +0 -107
  130. package/src/components/LoadingState.tsx +0 -239
  131. package/src/components/__tests__/media-player-accessibility.test.tsx +0 -510
  132. package/src/components/__tests__/media-player-react19.test.tsx +0 -457
  133. package/src/components/accessibility/keyboard-help-overlay.tsx +0 -207
  134. package/src/components/audio-player.tsx +0 -85
  135. package/src/components/basic/index.ts +0 -37
  136. package/src/components/enhanced/advanced-features.tsx +0 -311
  137. package/src/components/enhanced/debug-panel.tsx +0 -448
  138. package/src/components/enhanced/enhanced-controls.tsx +0 -597
  139. package/src/components/enhanced/enhanced-media-player.tsx +0 -566
  140. package/src/components/enhanced/error-handling.tsx +0 -338
  141. package/src/components/enhanced/index.ts +0 -39
  142. package/src/components/enhanced/media-player-enhanced.tsx +0 -383
  143. package/src/components/examples/basic-video-player.tsx +0 -50
  144. package/src/components/examples/custom-controls-example.tsx +0 -63
  145. package/src/components/examples/enhanced-controls-example.tsx +0 -100
  146. package/src/components/examples/enhanced-media-player-example.tsx +0 -302
  147. package/src/components/examples/loading-states-demo.tsx +0 -142
  148. package/src/components/examples/react-19-demo.tsx +0 -353
  149. package/src/components/examples/volume-orientation-demo.tsx +0 -106
  150. package/src/components/icon-demo.tsx +0 -196
  151. package/src/components/legacy.tsx +0 -87
  152. package/src/components/media-metadata-display.tsx +0 -99
  153. package/src/components/media-player-audio.tsx +0 -39
  154. package/src/components/media-player-controls.tsx +0 -223
  155. package/src/components/media-player-error.tsx +0 -163
  156. package/src/components/media-player-fullscreen.tsx +0 -109
  157. package/src/components/media-player-hls.tsx +0 -111
  158. package/src/components/media-player-loading.tsx +0 -76
  159. package/src/components/media-player-play.tsx +0 -75
  160. package/src/components/media-player-root.tsx +0 -338
  161. package/src/components/media-player-seek.tsx +0 -168
  162. package/src/components/media-player-time.tsx +0 -99
  163. package/src/components/media-player-tooltip.tsx +0 -58
  164. package/src/components/media-player-video.tsx +0 -54
  165. package/src/components/media-player-volume.tsx +0 -155
  166. package/src/components/media-player.tsx +0 -292
  167. package/src/components/media-suspense.tsx +0 -344
  168. package/src/components/player-settings-form.tsx +0 -158
  169. package/src/components/react-player-wrapper.tsx +0 -651
  170. package/src/components/simple-video-player.tsx +0 -62
  171. package/src/components/ui/blur-poster.tsx +0 -93
  172. package/src/components/ui/empty-state.tsx +0 -91
  173. package/src/components/ui/enhanced-seek-bar.tsx +0 -254
  174. package/src/components/ui/error-state.tsx +0 -124
  175. package/src/components/ui/fullscreen-button.tsx +0 -81
  176. package/src/components/ui/loading-skeleton.tsx +0 -107
  177. package/src/components/ui/media-resource-preloader.tsx +0 -458
  178. package/src/components/ui/offline-message.tsx +0 -98
  179. package/src/components/ui/play-button.tsx +0 -99
  180. package/src/components/ui/seek-bar.tsx +0 -191
  181. package/src/components/ui/time-display.tsx +0 -61
  182. package/src/components/ui/volume-control.tsx +0 -190
  183. package/src/components/unified/base-media-player.tsx +0 -252
  184. package/src/components/unified/media-player.tsx +0 -75
  185. package/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +0 -587
  186. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +0 -573
  187. package/src/components/variants/minimal/MinimalControls.tsx +0 -124
  188. package/src/components/variants/minimal/MinimalLoading.tsx +0 -28
  189. package/src/components/variants/minimal/MinimalMediaPlayer.tsx +0 -318
  190. package/src/components/variants/minimal/MinimalOverlay.tsx +0 -58
  191. package/src/components/variants/minimal/MinimalPlayButton.tsx +0 -56
  192. package/src/components/variants/minimal/MinimalSeekBar.tsx +0 -140
  193. package/src/components/variants/minimal/MinimalVolumeControl.tsx +0 -75
  194. package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -206
  195. package/src/components/variants/minimal/components/CenterPlayButton.tsx +0 -22
  196. package/src/components/variants/minimal/components/ControlBar.tsx +0 -142
  197. package/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +0 -412
  198. package/src/components/variants/minimal/components/PlaybackControls.tsx +0 -46
  199. package/src/components/variants/minimal/components/RightControls.tsx +0 -164
  200. package/src/components/variants/minimal/components/SeekBar.tsx +0 -127
  201. package/src/components/variants/minimal/components/SettingsDropdown.tsx +0 -68
  202. package/src/components/variants/minimal/components/SubtitleDisplay.tsx +0 -21
  203. package/src/components/variants/minimal/components/TimeDisplay.tsx +0 -15
  204. package/src/components/variants/minimal/components/VideoElement.tsx +0 -33
  205. package/src/components/variants/minimal/components/VolumeControl.tsx +0 -220
  206. package/src/components/variants/minimal/index.ts +0 -23
  207. package/src/components/video-player.tsx +0 -100
  208. package/src/context/__tests__/media-store.test.ts +0 -509
  209. package/src/context/error-handling.ts +0 -398
  210. package/src/context/media-context.tsx +0 -254
  211. package/src/context/media-provider.tsx +0 -264
  212. package/src/context/media-store.ts +0 -387
  213. package/src/context/persistence.ts +0 -462
  214. package/src/core/events/event-system.ts +0 -448
  215. package/src/core/events/hooks.ts +0 -325
  216. package/src/core/events/index.ts +0 -22
  217. package/src/core/events/middleware.ts +0 -286
  218. package/src/core/index.ts +0 -22
  219. package/src/core/optimization/bundle-optimizer.tsx +0 -312
  220. package/src/core/performance/cicd.ts +0 -98
  221. package/src/core/performance/index.ts +0 -38
  222. package/src/core/performance/media-loading-optimizer.ts +0 -544
  223. package/src/core/performance/performance-budgets.ts +0 -437
  224. package/src/core/performance/performance-monitor.tsx +0 -488
  225. package/src/core/performance/performance-testing.ts +0 -461
  226. package/src/core/plugins/__tests__/registry.test.ts +0 -595
  227. package/src/core/plugins/base-plugin.ts +0 -225
  228. package/src/core/plugins/enhanced-plugin-system.ts +0 -435
  229. package/src/core/plugins/examples/analytics-plugin.ts +0 -241
  230. package/src/core/plugins/index.ts +0 -39
  231. package/src/core/plugins/registry.ts +0 -546
  232. package/src/core/plugins/types.ts +0 -169
  233. package/src/core/plugins/utils.ts +0 -317
  234. package/src/core/progressive-loading.tsx +0 -331
  235. package/src/core/providers/enhanced-hls-provider.ts +0 -307
  236. package/src/core/providers/lazy-provider.tsx +0 -14
  237. package/src/core/providers/service-provider.tsx +0 -164
  238. package/src/core/utils.tsx +0 -34
  239. package/src/features/media-session/media-session-manager.ts +0 -411
  240. package/src/features/picture-in-picture/pip-manager.ts +0 -428
  241. package/src/features/playlist/playlist-manager.ts +0 -626
  242. package/src/features/subtitles/subtitle-manager.ts +0 -435
  243. package/src/features/subtitles/subtitle-parser.ts +0 -284
  244. package/src/features/thumbnails/thumbnail-generator.ts +0 -528
  245. package/src/hooks/__tests__/currentTime-fix.test.ts +0 -149
  246. package/src/hooks/__tests__/use-media-player.test.ts +0 -712
  247. package/src/hooks/__tests__/use-media-state.test.tsx +0 -316
  248. package/src/hooks/accessibility/index.ts +0 -27
  249. package/src/hooks/accessibility/use-accessibility-preferences.ts +0 -190
  250. package/src/hooks/accessibility/use-focus-management.ts +0 -183
  251. package/src/hooks/accessibility/use-keyboard-shortcuts.ts +0 -152
  252. package/src/hooks/accessibility/use-screen-reader.ts +0 -212
  253. package/src/hooks/core/index.ts +0 -47
  254. package/src/hooks/legacy.ts +0 -21
  255. package/src/hooks/use-buffer-health.ts +0 -218
  256. package/src/hooks/use-enhanced-media-player.ts +0 -575
  257. package/src/hooks/use-focus-trap.tsx +0 -162
  258. package/src/hooks/use-intelligent-preloading.ts +0 -387
  259. package/src/hooks/use-keyboard-controls.ts +0 -115
  260. package/src/hooks/use-keyboard-shortcuts.ts +0 -255
  261. package/src/hooks/use-media-actions.ts +0 -184
  262. package/src/hooks/use-media-metadata.ts +0 -91
  263. package/src/hooks/use-media-optimistic.ts +0 -264
  264. package/src/hooks/use-media-player.ts +0 -343
  265. package/src/hooks/use-media-state.ts +0 -194
  266. package/src/hooks/use-memory-optimization.ts +0 -360
  267. package/src/hooks/use-network-status.ts +0 -124
  268. package/src/hooks/use-optimistic-controls.ts +0 -95
  269. package/src/hooks/use-optimized-media.ts +0 -283
  270. package/src/hooks/use-smart-preload.ts +0 -229
  271. package/src/hooks/use-touch-gestures.ts +0 -461
  272. package/src/hooks/useEnhancedSubtitles.ts +0 -258
  273. package/src/hooks/useKeyboardShortcuts.ts +0 -106
  274. package/src/hooks/useMediaControls.ts +0 -52
  275. package/src/hooks/useScreenshot.ts +0 -61
  276. package/src/hooks/useSubtitles.ts +0 -91
  277. package/src/hooks/useVideoPlayer.ts +0 -278
  278. package/src/icons/components/FullscreenIcon.tsx +0 -36
  279. package/src/icons/components/SettingsIcon.tsx +0 -37
  280. package/src/icons/components/animated/LoadingIcon.tsx +0 -27
  281. package/src/icons/components/animated/PlayPauseIcon.tsx +0 -42
  282. package/src/icons/components/media/PauseIcon.tsx +0 -38
  283. package/src/icons/components/media/PlayIcon.tsx +0 -37
  284. package/src/icons/components/volume/VolumeIcon.tsx +0 -38
  285. package/src/icons/components/volume/VolumeOffIcon.tsx +0 -38
  286. package/src/icons/index.ts +0 -56
  287. package/src/icons/provider.tsx +0 -58
  288. package/src/icons/types.ts +0 -60
  289. package/src/index-enhanced.ts +0 -35
  290. package/src/index-legacy.ts +0 -324
  291. package/src/index.css +0 -102
  292. package/src/lib/__tests__/async-utils.test.ts +0 -291
  293. package/src/lib/async-utils.ts +0 -194
  294. package/src/lib/deprecation.ts +0 -51
  295. package/src/lib/format-time.ts +0 -37
  296. package/src/lib/index.ts +0 -4
  297. package/src/lib/utils.ts +0 -6
  298. package/src/styles/globals.css +0 -462
  299. package/src/styles/minimal-player.css +0 -621
  300. package/src/styles/pixel-art.css +0 -41
  301. package/src/styles/videojs.css +0 -100
  302. package/src/types/events.ts +0 -47
  303. package/src/types/formats.ts +0 -79
  304. package/src/types/index.ts +0 -203
  305. package/src/types/videojs-plugins.d.ts +0 -14
@@ -1,194 +0,0 @@
1
- /**
2
- * Async utilities for performance optimization
3
- * Provides throttle and debounce functions for controlling event frequency
4
- */
5
-
6
- /**
7
- * Throttle function that ensures a function is only called at most once
8
- * within a specified time period. Includes options for leading and trailing calls.
9
- *
10
- * @param func - The function to throttle
11
- * @param limit - The time limit in milliseconds
12
- * @param options - Options for leading/trailing edge calls
13
- * @returns The throttled function
14
- *
15
- * @example
16
- * // Throttle a click handler to at most once per 250ms
17
- * const throttledClick = throttle(handleClick, 250);
18
- *
19
- * // For timeupdate events with leading edge disabled
20
- * const throttledUpdate = throttle(handleUpdate, 250, { leading: false });
21
- */
22
- export function throttle<T extends (...args: Parameters<T>) => ReturnType<T>>(
23
- func: T,
24
- limit: number,
25
- options: { leading?: boolean; trailing?: boolean } = {
26
- leading: true,
27
- trailing: true
28
- }
29
- ): T {
30
- let lastResult: ReturnType<T> | undefined
31
- let lastCallTime = 0
32
- let timeoutId: ReturnType<typeof setTimeout> | null = null
33
- const { leading = true, trailing = true } = options
34
-
35
- return ((...args: Parameters<T>): ReturnType<T> => {
36
- const now = Date.now()
37
- const remaining = limit - (now - lastCallTime)
38
-
39
- const call = () => {
40
- lastCallTime = Date.now()
41
- timeoutId = null
42
- lastResult = func(...args)
43
- }
44
-
45
- if (!lastCallTime) {
46
- // First call - respect leading option
47
- if (leading) {
48
- lastResult = func(...args)
49
- }
50
- lastCallTime = now
51
- } else if (remaining <= 0) {
52
- // Time limit reached
53
- if (timeoutId) {
54
- clearTimeout(timeoutId)
55
- timeoutId = null
56
- }
57
- lastResult = func(...args)
58
- lastCallTime = now
59
- } else if (trailing && !timeoutId) {
60
- // Schedule trailing call
61
- timeoutId = setTimeout(() => call(), remaining)
62
- }
63
-
64
- return lastResult as ReturnType<T>
65
- }) as T
66
- }
67
-
68
- /**
69
- * Debounce function that delays calling a function until after a specified
70
- * wait period has elapsed since the last time the debounced function was called.
71
- *
72
- * @param func - The function to debounce
73
- * @param wait - The wait period in milliseconds
74
- * @param options - Options for immediate invocation
75
- * @returns The debounced function
76
- *
77
- * @example
78
- * // Debounce a resize handler
79
- * const debouncedResize = debounce(handleResize, 150);
80
- *
81
- * // Debounce with immediate option for form validation
82
- * const immediateValidate = debounce(validateForm, 300, { immediate: true });
83
- */
84
- export function debounce<T extends (...args: Parameters<T>) => ReturnType<T>>(
85
- func: T,
86
- wait: number,
87
- options: { immediate?: boolean } = {}
88
- ): T {
89
- let timeoutId: ReturnType<typeof setTimeout> | null = null
90
- const { immediate = false } = options
91
-
92
- return ((...args: Parameters<T>): ReturnType<T> => {
93
- const call = () => {
94
- timeoutId = null
95
- return func(...args)
96
- }
97
-
98
- const later = () => {
99
- timeoutId = null
100
- if (!immediate) {
101
- return func(...args)
102
- }
103
- }
104
-
105
- const callNow = immediate && !timeoutId
106
- const result = callNow ? func(...args) : undefined
107
-
108
- if (timeoutId) {
109
- clearTimeout(timeoutId)
110
- }
111
-
112
- timeoutId = setTimeout(immediate ? later : call, wait)
113
-
114
- return result as ReturnType<T>
115
- }) as T
116
- }
117
-
118
- /**
119
- * Creates a throttled callback that only updates the value at most once
120
- * per interval, but always returns the latest value when called.
121
- * Useful for UI updates that should be throttled but need to show final state.
122
- *
123
- * @param initialValue - The initial value
124
- * @param limit - The time limit in milliseconds
125
- * @returns An object with update function and getter functions
126
- *
127
- * @example
128
- * const { update, getThrottledValue, getLatestValue } = createThrottledValue(0, 250);
129
- */
130
- export function createThrottledValue<T>(initialValue: T, limit: number) {
131
- let latestValue = initialValue
132
- let lastUpdateTime = 0
133
- let throttledValue = initialValue
134
-
135
- const update = (value: T) => {
136
- latestValue = value
137
- const now = Date.now()
138
- if (now - lastUpdateTime >= limit) {
139
- throttledValue = value
140
- lastUpdateTime = now
141
- }
142
- }
143
-
144
- const getThrottledValue = () => throttledValue
145
- const getLatestValue = () => latestValue
146
- const forceUpdate = () => {
147
- throttledValue = latestValue
148
- lastUpdateTime = Date.now()
149
- }
150
-
151
- return { update, getThrottledValue, getLatestValue, forceUpdate }
152
- }
153
-
154
- /**
155
- * Batch multiple rapid calls into a single call at the end of the event loop.
156
- * Useful for React state updates that should be batched.
157
- *
158
- * @param func - The function to call with batched arguments
159
- * @returns A function that batches arguments and calls the original function once
160
- *
161
- * @example
162
- * const batchUpdate = batch((updates) => {
163
- * updates.forEach(update => setState(prev => ({ ...prev, ...update })));
164
- * });
165
- *
166
- * // Multiple rapid calls will be batched
167
- * batchUpdate({ a: 1 });
168
- * batchUpdate({ a: 2 });
169
- * batchUpdate({ a: 3 });
170
- */
171
- export function batch<T extends (...args: Parameters<T>) => void>(
172
- func: (args: Parameters<T>[]) => void
173
- ): (...args: Parameters<T>) => void {
174
- let batchedArgs: Parameters<T>[] = []
175
- let scheduled = false
176
-
177
- const flush = () => {
178
- if (batchedArgs.length > 0) {
179
- func(batchedArgs)
180
- batchedArgs = []
181
- }
182
- scheduled = false
183
- }
184
-
185
- return (...args: Parameters<T>) => {
186
- batchedArgs.push(args)
187
- if (!scheduled) {
188
- scheduled = true
189
- // Use setImmediate/setTimeout pattern for cross-environment compatibility
190
- // In browsers this schedules as a macrotask, in tests with fake timers it will fire
191
- setTimeout(() => flush(), 0)
192
- }
193
- }
194
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * Deprecation warning utility
3
- * Shows console warnings for deprecated components and hooks
4
- */
5
-
6
- const deprecationWarnings = new Set<string>()
7
-
8
- export function showDeprecationWarning(
9
- itemName: string,
10
- replacement: string,
11
- version: string = "2.0"
12
- ) {
13
- const key = `${itemName}-${replacement}-${version}`
14
-
15
- if (deprecationWarnings.has(key)) {
16
- return // Already shown this warning
17
- }
18
-
19
- deprecationWarnings.add(key)
20
-
21
- console.warn(
22
- `⚠️ [BaroiPlayer] DEPRECATION WARNING: ${itemName} is deprecated and will be removed in v${version}.` +
23
- `\n Please replace it with: ${replacement}` +
24
- `\n See https://github.com/baroi/baroiplayer/blob/main/MIGRATION.md for migration guide.`
25
- )
26
- }
27
-
28
- export function createDeprecatedComponent<T>(
29
- ComponentName: string,
30
- replacement: string,
31
- component: T
32
- ): T {
33
- const DeprecatedComponent = component as any
34
-
35
- // Add deprecation warning to the component
36
- if (typeof DeprecatedComponent === "function") {
37
- const originalComponent = DeprecatedComponent
38
- const WrappedComponent = function (props: any) {
39
- showDeprecationWarning(ComponentName, replacement)
40
- return originalComponent(props)
41
- }
42
-
43
- // Copy over displayName and other properties
44
- Object.setPrototypeOf(WrappedComponent, originalComponent)
45
- WrappedComponent.displayName = `Deprecated(${ComponentName})`
46
-
47
- return WrappedComponent as T
48
- }
49
-
50
- return component
51
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * Formats time in seconds to a human-readable string (MM:SS or HH:MM:SS)
3
- */
4
- export function formatTime(seconds: number): string {
5
- if (isNaN(seconds) || !isFinite(seconds)) {
6
- return "0:00"
7
- }
8
-
9
- const hours = Math.floor(seconds / 3600)
10
- const minutes = Math.floor((seconds % 3600) / 60)
11
- const secs = Math.floor(seconds % 60)
12
-
13
- if (hours > 0) {
14
- return `${hours}:${minutes.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`
15
- }
16
-
17
- return `${minutes}:${secs.toString().padStart(2, "0")}`
18
- }
19
-
20
- /**
21
- * Parses a time string (MM:SS or HH:MM:SS) to seconds
22
- */
23
- export function parseTime(timeString: string): number {
24
- const parts = timeString.split(":").map(Number)
25
-
26
- if (parts.length === 2) {
27
- // MM:SS format
28
- const [minutes = 0, seconds = 0] = parts
29
- return minutes * 60 + seconds
30
- } else if (parts.length === 3) {
31
- // HH:MM:SS format
32
- const [hours = 0, minutes = 0, seconds = 0] = parts
33
- return hours * 3600 + minutes * 60 + seconds
34
- }
35
-
36
- return 0
37
- }
package/src/lib/index.ts DELETED
@@ -1,4 +0,0 @@
1
- // Utility functions
2
- export { formatTime, parseTime } from "./format-time"
3
- export { cn } from "./utils"
4
- export { throttle, debounce, createThrottledValue, batch } from "./async-utils"
package/src/lib/utils.ts DELETED
@@ -1,6 +0,0 @@
1
- import { type ClassValue, clsx } from "clsx"
2
- import { twMerge } from "tailwind-merge"
3
-
4
- export function cn(...inputs: ClassValue[]) {
5
- return twMerge(clsx(inputs))
6
- }