@therealtinhtute/baroiplayer 1.0.5 → 1.0.7

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 (611) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/package.json +1 -1
  3. package/dist/src/components/media-player-error.tsx +2 -2
  4. package/dist/src/components/media-player-fullscreen.tsx +2 -2
  5. package/dist/src/components/media-player-play.tsx +2 -2
  6. package/dist/src/components/media-player-seek.tsx +1 -1
  7. package/dist/src/components/media-player-tooltip.tsx +1 -1
  8. package/dist/src/components/media-player-volume.tsx +3 -3
  9. package/dist/src/components/react-player-wrapper.tsx +5 -5
  10. package/dist/src/hooks/use-touch-gestures.ts +1 -1
  11. package/package.json +1 -1
  12. package/src/components/media-player-error.tsx +2 -2
  13. package/src/components/media-player-fullscreen.tsx +2 -2
  14. package/src/components/media-player-play.tsx +2 -2
  15. package/src/components/media-player-seek.tsx +1 -1
  16. package/src/components/media-player-tooltip.tsx +1 -1
  17. package/src/components/media-player-volume.tsx +3 -3
  18. package/src/components/react-player-wrapper.tsx +5 -5
  19. package/src/hooks/use-touch-gestures.ts +1 -1
  20. package/dist/context/media.js +0 -2
  21. package/dist/context/media.js.map +0 -1
  22. package/dist/context/media.mjs +0 -15
  23. package/dist/context/media.mjs.map +0 -1
  24. package/dist/context/store.js +0 -2
  25. package/dist/context/store.js.map +0 -1
  26. package/dist/context/store.mjs +0 -5
  27. package/dist/context/store.mjs.map +0 -1
  28. package/dist/context-Af84FynT.js +0 -1179
  29. package/dist/context-Af84FynT.js.map +0 -1
  30. package/dist/context-CwZnPdz0.cjs +0 -23
  31. package/dist/context-CwZnPdz0.cjs.map +0 -1
  32. package/dist/core-events-B5W_j8yU.js +0 -480
  33. package/dist/core-events-B5W_j8yU.js.map +0 -1
  34. package/dist/core-events-CN0-Vhhq.cjs +0 -2
  35. package/dist/core-events-CN0-Vhhq.cjs.map +0 -1
  36. package/dist/core-plugins-Bq9KLany.js +0 -696
  37. package/dist/core-plugins-Bq9KLany.js.map +0 -1
  38. package/dist/core-plugins-CPDSHMiQ.cjs +0 -2
  39. package/dist/core-plugins-CPDSHMiQ.cjs.map +0 -1
  40. package/dist/core.js +0 -37
  41. package/dist/core.js.map +0 -1
  42. package/dist/core.mjs +0 -1217
  43. package/dist/core.mjs.map +0 -1
  44. package/dist/enhanced-components-CXnYiOt6.cjs +0 -2
  45. package/dist/enhanced-components-CXnYiOt6.cjs.map +0 -1
  46. package/dist/enhanced-components-Da0TSvKe.js +0 -1073
  47. package/dist/enhanced-components-Da0TSvKe.js.map +0 -1
  48. package/dist/hooks-BCMilGRf.cjs +0 -4
  49. package/dist/hooks-BCMilGRf.cjs.map +0 -1
  50. package/dist/hooks-BPtHV1ZT.js +0 -2042
  51. package/dist/hooks-BPtHV1ZT.js.map +0 -1
  52. package/dist/index.js.map +0 -1
  53. package/dist/index.mjs.map +0 -1
  54. package/dist/minimal-components-BHJMuaL7.cjs +0 -2
  55. package/dist/minimal-components-BHJMuaL7.cjs.map +0 -1
  56. package/dist/minimal-components-BmqRefl1.js +0 -2002
  57. package/dist/minimal-components-BmqRefl1.js.map +0 -1
  58. package/dist/mona-loading.gif +0 -0
  59. package/dist/performance-monitor--rzKTlbj.js +0 -302
  60. package/dist/performance-monitor--rzKTlbj.js.map +0 -1
  61. package/dist/performance-monitor-cjIvZE2D.cjs +0 -2
  62. package/dist/performance-monitor-cjIvZE2D.cjs.map +0 -1
  63. package/dist/src/adapters/videojs-adapter.d.ts.map +0 -1
  64. package/dist/src/adapters/videojs-adapter.js +0 -350
  65. package/dist/src/assets/mona-loading.gif +0 -0
  66. package/dist/src/components/AnimateLoading.d.ts.map +0 -1
  67. package/dist/src/components/AnimateLoading.js +0 -41
  68. package/dist/src/components/LoadingState.d.ts.map +0 -1
  69. package/dist/src/components/LoadingState.js +0 -111
  70. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  71. package/dist/src/components/accessibility/keyboard-help-overlay.js +0 -90
  72. package/dist/src/components/audio-player.d.ts.map +0 -1
  73. package/dist/src/components/audio-player.js +0 -31
  74. package/dist/src/components/basic/index.d.ts.map +0 -1
  75. package/dist/src/components/basic/index.js +0 -29
  76. package/dist/src/components/enhanced/advanced-features.d.ts.map +0 -1
  77. package/dist/src/components/enhanced/advanced-features.js +0 -64
  78. package/dist/src/components/enhanced/debug-panel.d.ts.map +0 -1
  79. package/dist/src/components/enhanced/debug-panel.js +0 -94
  80. package/dist/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  81. package/dist/src/components/enhanced/enhanced-controls.js +0 -233
  82. package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  83. package/dist/src/components/enhanced/enhanced-media-player.js +0 -316
  84. package/dist/src/components/enhanced/error-handling.d.ts.map +0 -1
  85. package/dist/src/components/enhanced/error-handling.js +0 -153
  86. package/dist/src/components/enhanced/index.d.ts.map +0 -1
  87. package/dist/src/components/enhanced/index.js +0 -10
  88. package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  89. package/dist/src/components/enhanced/media-player-enhanced.js +0 -250
  90. package/dist/src/components/examples/basic-video-player.d.ts.map +0 -1
  91. package/dist/src/components/examples/basic-video-player.js +0 -16
  92. package/dist/src/components/examples/custom-controls-example.d.ts.map +0 -1
  93. package/dist/src/components/examples/custom-controls-example.js +0 -12
  94. package/dist/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  95. package/dist/src/components/examples/enhanced-controls-example.js +0 -18
  96. package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  97. package/dist/src/components/examples/enhanced-media-player-example.js +0 -13
  98. package/dist/src/components/examples/loading-states-demo.d.ts.map +0 -1
  99. package/dist/src/components/examples/loading-states-demo.js +0 -41
  100. package/dist/src/components/examples/react-19-demo.d.ts.map +0 -1
  101. package/dist/src/components/examples/react-19-demo.js +0 -104
  102. package/dist/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  103. package/dist/src/components/examples/volume-orientation-demo.js +0 -31
  104. package/dist/src/components/icon-demo.d.ts.map +0 -1
  105. package/dist/src/components/icon-demo.js +0 -16
  106. package/dist/src/components/icons/index.d.ts.map +0 -1
  107. package/dist/src/components/icons/index.js +0 -59
  108. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  109. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  110. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  111. package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  112. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  113. package/dist/src/components/icons/svg-icons/AudioIcon.js +0 -4
  114. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  115. package/dist/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  116. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  117. package/dist/src/components/icons/svg-icons/CameraIcon.js +0 -4
  118. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  119. package/dist/src/components/icons/svg-icons/CheckIcon.js +0 -4
  120. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  121. package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  122. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  123. package/dist/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  124. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  125. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  126. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  127. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  128. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  129. package/dist/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  130. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  131. package/dist/src/components/icons/svg-icons/PauseIcon.js +0 -3
  132. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  133. package/dist/src/components/icons/svg-icons/PlayIcon.js +0 -3
  134. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  135. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  136. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  137. package/dist/src/components/icons/svg-icons/QualityIcon.js +0 -3
  138. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  139. package/dist/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  140. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  141. package/dist/src/components/icons/svg-icons/SliderIcon.js +0 -3
  142. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  143. package/dist/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  144. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  145. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  146. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  147. package/dist/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  148. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  149. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  150. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  151. package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  152. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  153. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  154. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  155. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  156. package/dist/src/components/legacy.d.ts.map +0 -1
  157. package/dist/src/components/legacy.js +0 -52
  158. package/dist/src/components/media-metadata-display.d.ts.map +0 -1
  159. package/dist/src/components/media-metadata-display.js +0 -20
  160. package/dist/src/components/media-player-audio.d.ts.map +0 -1
  161. package/dist/src/components/media-player-audio.js +0 -18
  162. package/dist/src/components/media-player-controls.d.ts.map +0 -1
  163. package/dist/src/components/media-player-controls.js +0 -150
  164. package/dist/src/components/media-player-error.d.ts.map +0 -1
  165. package/dist/src/components/media-player-error.js +0 -85
  166. package/dist/src/components/media-player-fullscreen.d.ts.map +0 -1
  167. package/dist/src/components/media-player-fullscreen.js +0 -68
  168. package/dist/src/components/media-player-hls.d.ts.map +0 -1
  169. package/dist/src/components/media-player-hls.js +0 -20
  170. package/dist/src/components/media-player-loading.d.ts.map +0 -1
  171. package/dist/src/components/media-player-loading.js +0 -53
  172. package/dist/src/components/media-player-play.d.ts.map +0 -1
  173. package/dist/src/components/media-player-play.js +0 -44
  174. package/dist/src/components/media-player-root.d.ts.map +0 -1
  175. package/dist/src/components/media-player-root.js +0 -243
  176. package/dist/src/components/media-player-seek.d.ts.map +0 -1
  177. package/dist/src/components/media-player-seek.js +0 -92
  178. package/dist/src/components/media-player-time.d.ts.map +0 -1
  179. package/dist/src/components/media-player-time.js +0 -57
  180. package/dist/src/components/media-player-tooltip.d.ts.map +0 -1
  181. package/dist/src/components/media-player-tooltip.js +0 -14
  182. package/dist/src/components/media-player-video.d.ts.map +0 -1
  183. package/dist/src/components/media-player-video.js +0 -18
  184. package/dist/src/components/media-player-volume.d.ts.map +0 -1
  185. package/dist/src/components/media-player-volume.js +0 -88
  186. package/dist/src/components/media-player.d.ts.map +0 -1
  187. package/dist/src/components/media-player.js +0 -67
  188. package/dist/src/components/media-suspense.d.ts.map +0 -1
  189. package/dist/src/components/media-suspense.js +0 -173
  190. package/dist/src/components/player-settings-form.d.ts.map +0 -1
  191. package/dist/src/components/player-settings-form.js +0 -46
  192. package/dist/src/components/react-player-wrapper.d.ts.map +0 -1
  193. package/dist/src/components/react-player-wrapper.js +0 -163
  194. package/dist/src/components/simple-video-player.d.ts.map +0 -1
  195. package/dist/src/components/simple-video-player.js +0 -41
  196. package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  197. package/dist/src/components/ui/enhanced-seek-bar.js +0 -112
  198. package/dist/src/components/ui/fullscreen-button.d.ts.map +0 -1
  199. package/dist/src/components/ui/fullscreen-button.js +0 -21
  200. package/dist/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  201. package/dist/src/components/ui/media-resource-preloader.js +0 -295
  202. package/dist/src/components/ui/play-button.d.ts.map +0 -1
  203. package/dist/src/components/ui/play-button.js +0 -26
  204. package/dist/src/components/ui/seek-bar.d.ts.map +0 -1
  205. package/dist/src/components/ui/seek-bar.js +0 -54
  206. package/dist/src/components/ui/time-display.d.ts.map +0 -1
  207. package/dist/src/components/ui/time-display.js +0 -18
  208. package/dist/src/components/ui/volume-control.d.ts.map +0 -1
  209. package/dist/src/components/ui/volume-control.js +0 -71
  210. package/dist/src/components/unified/base-media-player.d.ts.map +0 -1
  211. package/dist/src/components/unified/base-media-player.js +0 -104
  212. package/dist/src/components/unified/media-player.d.ts.map +0 -1
  213. package/dist/src/components/unified/media-player.js +0 -41
  214. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  215. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  216. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  217. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  218. package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  219. package/dist/src/components/variants/minimal/MinimalControls.js +0 -19
  220. package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  221. package/dist/src/components/variants/minimal/MinimalLoading.js +0 -6
  222. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  223. package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  224. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  225. package/dist/src/components/variants/minimal/MinimalOverlay.js +0 -15
  226. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  227. package/dist/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  228. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  229. package/dist/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  230. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  231. package/dist/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  232. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  233. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  234. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  235. package/dist/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  236. package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  237. package/dist/src/components/variants/minimal/components/ControlBar.js +0 -10
  238. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  239. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  240. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  241. package/dist/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  242. package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  243. package/dist/src/components/variants/minimal/components/RightControls.js +0 -40
  244. package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  245. package/dist/src/components/variants/minimal/components/SeekBar.js +0 -43
  246. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  247. package/dist/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  248. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  249. package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  250. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  251. package/dist/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  252. package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  253. package/dist/src/components/variants/minimal/components/VideoElement.js +0 -4
  254. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  255. package/dist/src/components/variants/minimal/components/VolumeControl.js +0 -99
  256. package/dist/src/components/variants/minimal/index.d.ts.map +0 -1
  257. package/dist/src/components/variants/minimal/index.js +0 -8
  258. package/dist/src/components/video-player.d.ts.map +0 -1
  259. package/dist/src/components/video-player.js +0 -38
  260. package/dist/src/context/error-handling.d.ts.map +0 -1
  261. package/dist/src/context/error-handling.js +0 -300
  262. package/dist/src/context/media-context.d.ts.map +0 -1
  263. package/dist/src/context/media-context.js +0 -121
  264. package/dist/src/context/media-provider.d.ts.map +0 -1
  265. package/dist/src/context/media-provider.js +0 -164
  266. package/dist/src/context/media-store.d.ts.map +0 -1
  267. package/dist/src/context/media-store.js +0 -273
  268. package/dist/src/context/persistence.d.ts.map +0 -1
  269. package/dist/src/context/persistence.js +0 -356
  270. package/dist/src/core/events/event-system.d.ts.map +0 -1
  271. package/dist/src/core/events/event-system.js +0 -288
  272. package/dist/src/core/events/hooks.d.ts.map +0 -1
  273. package/dist/src/core/events/hooks.js +0 -198
  274. package/dist/src/core/events/index.d.ts.map +0 -1
  275. package/dist/src/core/events/index.js +0 -7
  276. package/dist/src/core/events/middleware.d.ts.map +0 -1
  277. package/dist/src/core/events/middleware.js +0 -219
  278. package/dist/src/core/index.d.ts.map +0 -1
  279. package/dist/src/core/index.js +0 -15
  280. package/dist/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  281. package/dist/src/core/optimization/bundle-optimizer.js +0 -217
  282. package/dist/src/core/performance/cicd.d.ts.map +0 -1
  283. package/dist/src/core/performance/cicd.js +0 -83
  284. package/dist/src/core/performance/index.d.ts.map +0 -1
  285. package/dist/src/core/performance/index.js +0 -14
  286. package/dist/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  287. package/dist/src/core/performance/media-loading-optimizer.js +0 -404
  288. package/dist/src/core/performance/performance-budgets.d.ts.map +0 -1
  289. package/dist/src/core/performance/performance-budgets.js +0 -326
  290. package/dist/src/core/performance/performance-monitor.d.ts.map +0 -1
  291. package/dist/src/core/performance/performance-monitor.js +0 -297
  292. package/dist/src/core/performance/performance-testing.d.ts.map +0 -1
  293. package/dist/src/core/performance/performance-testing.js +0 -314
  294. package/dist/src/core/plugins/base-plugin.d.ts.map +0 -1
  295. package/dist/src/core/plugins/base-plugin.js +0 -151
  296. package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  297. package/dist/src/core/plugins/enhanced-plugin-system.js +0 -305
  298. package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  299. package/dist/src/core/plugins/examples/analytics-plugin.js +0 -191
  300. package/dist/src/core/plugins/index.d.ts.map +0 -1
  301. package/dist/src/core/plugins/index.js +0 -9
  302. package/dist/src/core/plugins/registry.d.ts.map +0 -1
  303. package/dist/src/core/plugins/registry.js +0 -261
  304. package/dist/src/core/plugins/types.d.ts.map +0 -1
  305. package/dist/src/core/plugins/types.js +0 -31
  306. package/dist/src/core/plugins/utils.d.ts.map +0 -1
  307. package/dist/src/core/plugins/utils.js +0 -274
  308. package/dist/src/core/progressive-loading.d.ts.map +0 -1
  309. package/dist/src/core/progressive-loading.js +0 -239
  310. package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  311. package/dist/src/core/providers/enhanced-hls-provider.js +0 -273
  312. package/dist/src/core/providers/service-provider.d.ts.map +0 -1
  313. package/dist/src/core/providers/service-provider.js +0 -105
  314. package/dist/src/core/utils.d.ts.map +0 -1
  315. package/dist/src/core/utils.js +0 -21
  316. package/dist/src/features/media-session/media-session-manager.d.ts.map +0 -1
  317. package/dist/src/features/media-session/media-session-manager.js +0 -331
  318. package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  319. package/dist/src/features/picture-in-picture/pip-manager.js +0 -353
  320. package/dist/src/features/playlist/playlist-manager.d.ts.map +0 -1
  321. package/dist/src/features/playlist/playlist-manager.js +0 -475
  322. package/dist/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  323. package/dist/src/features/subtitles/subtitle-manager.js +0 -335
  324. package/dist/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  325. package/dist/src/features/subtitles/subtitle-parser.js +0 -217
  326. package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  327. package/dist/src/features/thumbnails/thumbnail-generator.js +0 -388
  328. package/dist/src/hooks/accessibility/index.d.ts.map +0 -1
  329. package/dist/src/hooks/accessibility/index.js +0 -4
  330. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  331. package/dist/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  332. package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  333. package/dist/src/hooks/accessibility/use-focus-management.js +0 -142
  334. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  335. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  336. package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  337. package/dist/src/hooks/accessibility/use-screen-reader.js +0 -148
  338. package/dist/src/hooks/core/index.d.ts.map +0 -1
  339. package/dist/src/hooks/core/index.js +0 -19
  340. package/dist/src/hooks/legacy.d.ts.map +0 -1
  341. package/dist/src/hooks/legacy.js +0 -17
  342. package/dist/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  343. package/dist/src/hooks/use-enhanced-media-player.js +0 -395
  344. package/dist/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  345. package/dist/src/hooks/use-intelligent-preloading.js +0 -258
  346. package/dist/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  347. package/dist/src/hooks/use-keyboard-controls.js +0 -83
  348. package/dist/src/hooks/use-media-actions.d.ts.map +0 -1
  349. package/dist/src/hooks/use-media-actions.js +0 -121
  350. package/dist/src/hooks/use-media-metadata.d.ts.map +0 -1
  351. package/dist/src/hooks/use-media-metadata.js +0 -74
  352. package/dist/src/hooks/use-media-optimistic.d.ts.map +0 -1
  353. package/dist/src/hooks/use-media-optimistic.js +0 -205
  354. package/dist/src/hooks/use-media-player.d.ts.map +0 -1
  355. package/dist/src/hooks/use-media-player.js +0 -251
  356. package/dist/src/hooks/use-media-state.d.ts.map +0 -1
  357. package/dist/src/hooks/use-media-state.js +0 -162
  358. package/dist/src/hooks/use-memory-optimization.d.ts.map +0 -1
  359. package/dist/src/hooks/use-memory-optimization.js +0 -288
  360. package/dist/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  361. package/dist/src/hooks/use-optimistic-controls.js +0 -60
  362. package/dist/src/hooks/use-optimized-media.d.ts.map +0 -1
  363. package/dist/src/hooks/use-optimized-media.js +0 -211
  364. package/dist/src/hooks/use-touch-gestures.d.ts.map +0 -1
  365. package/dist/src/hooks/use-touch-gestures.js +0 -289
  366. package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  367. package/dist/src/hooks/useEnhancedSubtitles.js +0 -205
  368. package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  369. package/dist/src/hooks/useKeyboardShortcuts.js +0 -59
  370. package/dist/src/hooks/useMediaControls.d.ts.map +0 -1
  371. package/dist/src/hooks/useMediaControls.js +0 -44
  372. package/dist/src/hooks/useScreenshot.d.ts.map +0 -1
  373. package/dist/src/hooks/useScreenshot.js +0 -56
  374. package/dist/src/hooks/useSubtitles.d.ts.map +0 -1
  375. package/dist/src/hooks/useSubtitles.js +0 -73
  376. package/dist/src/hooks/useVideoPlayer.d.ts.map +0 -1
  377. package/dist/src/hooks/useVideoPlayer.js +0 -184
  378. package/dist/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  379. package/dist/src/icons/components/FullscreenIcon.js +0 -11
  380. package/dist/src/icons/components/SettingsIcon.d.ts.map +0 -1
  381. package/dist/src/icons/components/SettingsIcon.js +0 -11
  382. package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  383. package/dist/src/icons/components/animated/LoadingIcon.js +0 -11
  384. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  385. package/dist/src/icons/components/animated/PlayPauseIcon.js +0 -9
  386. package/dist/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  387. package/dist/src/icons/components/media/PauseIcon.js +0 -12
  388. package/dist/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  389. package/dist/src/icons/components/media/PlayIcon.js +0 -12
  390. package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  391. package/dist/src/icons/components/volume/VolumeIcon.js +0 -11
  392. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  393. package/dist/src/icons/components/volume/VolumeOffIcon.js +0 -11
  394. package/dist/src/icons/index.d.ts.map +0 -1
  395. package/dist/src/icons/index.js +0 -45
  396. package/dist/src/icons/provider.d.ts.map +0 -1
  397. package/dist/src/icons/provider.js +0 -37
  398. package/dist/src/icons/types.d.ts.map +0 -1
  399. package/dist/src/icons/types.js +0 -1
  400. package/dist/src/index-enhanced.d.ts.map +0 -1
  401. package/dist/src/index-enhanced.js +0 -16
  402. package/dist/src/index-legacy.d.ts.map +0 -1
  403. package/dist/src/index-legacy.js +0 -97
  404. package/dist/src/index.d.ts.map +0 -1
  405. package/dist/src/index.js +0 -90
  406. package/dist/src/index.minimal.d.ts.map +0 -1
  407. package/dist/src/index.minimal.js +0 -3
  408. package/dist/src/lib/deprecation.d.ts.map +0 -1
  409. package/dist/src/lib/deprecation.js +0 -31
  410. package/dist/src/lib/format-time.d.ts.map +0 -1
  411. package/dist/src/lib/format-time.js +0 -32
  412. package/dist/src/lib/index.d.ts.map +0 -1
  413. package/dist/src/lib/index.js +0 -3
  414. package/dist/src/lib/utils.d.ts.map +0 -1
  415. package/dist/src/lib/utils.js +0 -5
  416. package/dist/src/test/setup.d.ts.map +0 -1
  417. package/dist/src/test/setup.js +0 -65
  418. package/dist/src/types/events.d.ts.map +0 -1
  419. package/dist/src/types/events.js +0 -2
  420. package/dist/src/types/formats.d.ts.map +0 -1
  421. package/dist/src/types/formats.js +0 -63
  422. package/dist/src/types/index.d.ts.map +0 -1
  423. package/dist/src/types/index.js +0 -4
  424. package/dist/utils-Db13763z.cjs +0 -9
  425. package/dist/utils-Db13763z.cjs.map +0 -1
  426. package/dist/utils-nTO4AnHo.js +0 -2809
  427. package/dist/utils-nTO4AnHo.js.map +0 -1
  428. package/dist/utils.js +0 -2
  429. package/dist/utils.js.map +0 -1
  430. package/dist/utils.mjs +0 -7
  431. package/dist/utils.mjs.map +0 -1
  432. package/src/adapters/videojs-adapter.js +0 -350
  433. package/src/components/AnimateLoading.js +0 -41
  434. package/src/components/LoadingState.js +0 -111
  435. package/src/components/accessibility/keyboard-help-overlay.js +0 -90
  436. package/src/components/audio-player.js +0 -31
  437. package/src/components/basic/index.js +0 -29
  438. package/src/components/enhanced/advanced-features.js +0 -64
  439. package/src/components/enhanced/debug-panel.js +0 -94
  440. package/src/components/enhanced/enhanced-controls.js +0 -233
  441. package/src/components/enhanced/enhanced-media-player.js +0 -316
  442. package/src/components/enhanced/error-handling.js +0 -153
  443. package/src/components/enhanced/index.js +0 -10
  444. package/src/components/enhanced/media-player-enhanced.js +0 -250
  445. package/src/components/examples/basic-video-player.js +0 -16
  446. package/src/components/examples/custom-controls-example.js +0 -12
  447. package/src/components/examples/enhanced-controls-example.js +0 -18
  448. package/src/components/examples/enhanced-media-player-example.js +0 -13
  449. package/src/components/examples/loading-states-demo.js +0 -41
  450. package/src/components/examples/react-19-demo.js +0 -104
  451. package/src/components/examples/volume-orientation-demo.js +0 -31
  452. package/src/components/icon-demo.js +0 -16
  453. package/src/components/icons/index.js +0 -59
  454. package/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  455. package/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  456. package/src/components/icons/svg-icons/AudioIcon.js +0 -4
  457. package/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  458. package/src/components/icons/svg-icons/CameraIcon.js +0 -4
  459. package/src/components/icons/svg-icons/CheckIcon.js +0 -4
  460. package/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  461. package/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  462. package/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  463. package/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  464. package/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  465. package/src/components/icons/svg-icons/PauseIcon.js +0 -3
  466. package/src/components/icons/svg-icons/PlayIcon.js +0 -3
  467. package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  468. package/src/components/icons/svg-icons/QualityIcon.js +0 -3
  469. package/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  470. package/src/components/icons/svg-icons/SliderIcon.js +0 -3
  471. package/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  472. package/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  473. package/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  474. package/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  475. package/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  476. package/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  477. package/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  478. package/src/components/legacy.js +0 -52
  479. package/src/components/media-metadata-display.js +0 -20
  480. package/src/components/media-player-audio.js +0 -18
  481. package/src/components/media-player-controls.js +0 -150
  482. package/src/components/media-player-error.js +0 -85
  483. package/src/components/media-player-fullscreen.js +0 -68
  484. package/src/components/media-player-hls.js +0 -20
  485. package/src/components/media-player-loading.js +0 -53
  486. package/src/components/media-player-play.js +0 -44
  487. package/src/components/media-player-root.js +0 -243
  488. package/src/components/media-player-seek.js +0 -92
  489. package/src/components/media-player-time.js +0 -57
  490. package/src/components/media-player-tooltip.js +0 -14
  491. package/src/components/media-player-video.js +0 -18
  492. package/src/components/media-player-volume.js +0 -88
  493. package/src/components/media-player.js +0 -67
  494. package/src/components/media-suspense.js +0 -173
  495. package/src/components/player-settings-form.js +0 -46
  496. package/src/components/react-player-wrapper.js +0 -163
  497. package/src/components/simple-video-player.js +0 -41
  498. package/src/components/ui/enhanced-seek-bar.js +0 -112
  499. package/src/components/ui/fullscreen-button.js +0 -21
  500. package/src/components/ui/media-resource-preloader.js +0 -295
  501. package/src/components/ui/play-button.js +0 -26
  502. package/src/components/ui/seek-bar.js +0 -54
  503. package/src/components/ui/time-display.js +0 -18
  504. package/src/components/ui/volume-control.js +0 -71
  505. package/src/components/unified/base-media-player.js +0 -104
  506. package/src/components/unified/media-player.js +0 -41
  507. package/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  508. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  509. package/src/components/variants/minimal/MinimalControls.js +0 -19
  510. package/src/components/variants/minimal/MinimalLoading.js +0 -6
  511. package/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  512. package/src/components/variants/minimal/MinimalOverlay.js +0 -15
  513. package/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  514. package/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  515. package/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  516. package/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  517. package/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  518. package/src/components/variants/minimal/components/ControlBar.js +0 -10
  519. package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  520. package/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  521. package/src/components/variants/minimal/components/RightControls.js +0 -40
  522. package/src/components/variants/minimal/components/SeekBar.js +0 -43
  523. package/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  524. package/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  525. package/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  526. package/src/components/variants/minimal/components/VideoElement.js +0 -4
  527. package/src/components/variants/minimal/components/VolumeControl.js +0 -99
  528. package/src/components/variants/minimal/index.js +0 -8
  529. package/src/components/video-player.js +0 -38
  530. package/src/context/error-handling.js +0 -300
  531. package/src/context/media-context.js +0 -121
  532. package/src/context/media-provider.js +0 -164
  533. package/src/context/media-store.js +0 -273
  534. package/src/context/persistence.js +0 -356
  535. package/src/core/events/event-system.js +0 -288
  536. package/src/core/events/hooks.js +0 -198
  537. package/src/core/events/index.js +0 -7
  538. package/src/core/events/middleware.js +0 -219
  539. package/src/core/index.js +0 -15
  540. package/src/core/optimization/bundle-optimizer.js +0 -217
  541. package/src/core/performance/cicd.js +0 -83
  542. package/src/core/performance/index.js +0 -14
  543. package/src/core/performance/media-loading-optimizer.js +0 -404
  544. package/src/core/performance/performance-budgets.js +0 -326
  545. package/src/core/performance/performance-monitor.js +0 -297
  546. package/src/core/performance/performance-testing.js +0 -314
  547. package/src/core/plugins/base-plugin.js +0 -151
  548. package/src/core/plugins/enhanced-plugin-system.js +0 -305
  549. package/src/core/plugins/examples/analytics-plugin.js +0 -191
  550. package/src/core/plugins/index.js +0 -9
  551. package/src/core/plugins/registry.js +0 -261
  552. package/src/core/plugins/types.js +0 -31
  553. package/src/core/plugins/utils.js +0 -274
  554. package/src/core/progressive-loading.js +0 -239
  555. package/src/core/providers/enhanced-hls-provider.js +0 -273
  556. package/src/core/providers/service-provider.js +0 -105
  557. package/src/core/utils.js +0 -21
  558. package/src/features/media-session/media-session-manager.js +0 -331
  559. package/src/features/picture-in-picture/pip-manager.js +0 -353
  560. package/src/features/playlist/playlist-manager.js +0 -475
  561. package/src/features/subtitles/subtitle-manager.js +0 -335
  562. package/src/features/subtitles/subtitle-parser.js +0 -217
  563. package/src/features/thumbnails/thumbnail-generator.js +0 -388
  564. package/src/hooks/accessibility/index.js +0 -4
  565. package/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  566. package/src/hooks/accessibility/use-focus-management.js +0 -142
  567. package/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  568. package/src/hooks/accessibility/use-screen-reader.js +0 -148
  569. package/src/hooks/core/index.js +0 -19
  570. package/src/hooks/legacy.js +0 -17
  571. package/src/hooks/use-enhanced-media-player.js +0 -395
  572. package/src/hooks/use-intelligent-preloading.js +0 -258
  573. package/src/hooks/use-keyboard-controls.js +0 -83
  574. package/src/hooks/use-media-actions.js +0 -121
  575. package/src/hooks/use-media-metadata.js +0 -74
  576. package/src/hooks/use-media-optimistic.js +0 -205
  577. package/src/hooks/use-media-player.js +0 -251
  578. package/src/hooks/use-media-state.js +0 -162
  579. package/src/hooks/use-memory-optimization.js +0 -288
  580. package/src/hooks/use-optimistic-controls.js +0 -60
  581. package/src/hooks/use-optimized-media.js +0 -211
  582. package/src/hooks/use-touch-gestures.js +0 -289
  583. package/src/hooks/useEnhancedSubtitles.js +0 -205
  584. package/src/hooks/useKeyboardShortcuts.js +0 -59
  585. package/src/hooks/useMediaControls.js +0 -44
  586. package/src/hooks/useScreenshot.js +0 -56
  587. package/src/hooks/useSubtitles.js +0 -73
  588. package/src/hooks/useVideoPlayer.js +0 -184
  589. package/src/icons/components/FullscreenIcon.js +0 -11
  590. package/src/icons/components/SettingsIcon.js +0 -11
  591. package/src/icons/components/animated/LoadingIcon.js +0 -11
  592. package/src/icons/components/animated/PlayPauseIcon.js +0 -9
  593. package/src/icons/components/media/PauseIcon.js +0 -12
  594. package/src/icons/components/media/PlayIcon.js +0 -12
  595. package/src/icons/components/volume/VolumeIcon.js +0 -11
  596. package/src/icons/components/volume/VolumeOffIcon.js +0 -11
  597. package/src/icons/index.js +0 -45
  598. package/src/icons/provider.js +0 -37
  599. package/src/icons/types.js +0 -1
  600. package/src/index-enhanced.js +0 -16
  601. package/src/index-legacy.js +0 -97
  602. package/src/index.js +0 -90
  603. package/src/index.minimal.js +0 -3
  604. package/src/lib/deprecation.js +0 -31
  605. package/src/lib/format-time.js +0 -32
  606. package/src/lib/index.js +0 -3
  607. package/src/lib/utils.js +0 -5
  608. package/src/test/setup.js +0 -65
  609. package/src/types/events.js +0 -2
  610. package/src/types/formats.js +0 -63
  611. package/src/types/index.js +0 -4
@@ -1,480 +0,0 @@
1
- var v = Object.defineProperty;
2
- var T = (s, e, t) => e in s ? v(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
- var a = (s, e, t) => T(s, typeof e != "symbol" ? e + "" : e, t);
4
- import { useRef as m, useEffect as d, useCallback as p, useMemo as H, useState as x } from "react";
5
- class E {
6
- constructor() {
7
- a(this, "listeners", /* @__PURE__ */ new Map());
8
- a(this, "eventQueue", []);
9
- a(this, "isProcessing", !1);
10
- a(this, "middlewares", []);
11
- a(this, "eventHistory", []);
12
- a(this, "maxHistorySize", 1e3);
13
- }
14
- // Subscribe to events
15
- on(e, t, r = {}) {
16
- return this.addEventListener(e, t, r);
17
- }
18
- // Subscribe to events (one-time)
19
- once(e, t, r = {}) {
20
- return this.addEventListener(e, t, { ...r, once: !0 });
21
- }
22
- // Subscribe to events with wildcard support
23
- addEventListener(e, t, r = {}) {
24
- const n = this.generateId(), o = { handler: t, options: r, id: n };
25
- this.listeners.has(e) || this.listeners.set(e, []);
26
- const i = this.listeners.get(e), u = r.priority || "normal", l = { high: 2, normal: 1, low: 0 }[u];
27
- let h = i.length;
28
- for (let c = 0; c < i.length; c++) {
29
- const g = i[c];
30
- if (!g) continue;
31
- const w = g.options.priority || "normal";
32
- if (l > { high: 2, normal: 1, low: 0 }[w]) {
33
- h = c;
34
- break;
35
- }
36
- }
37
- return i.splice(h, 0, o), () => {
38
- const c = i.findIndex((g) => g.id === n);
39
- c !== -1 && i.splice(c, 1), i.length === 0 && this.listeners.delete(e);
40
- };
41
- }
42
- // Remove event listener
43
- removeEventListener(e, t) {
44
- const r = this.listeners.get(e);
45
- if (r) {
46
- if (t) {
47
- const n = r.findIndex((o) => o.handler === t);
48
- n !== -1 && r.splice(n, 1);
49
- } else
50
- this.listeners.delete(e);
51
- r && r.length === 0 && this.listeners.delete(e);
52
- }
53
- }
54
- // Emit events
55
- emit(e, t, r) {
56
- const n = {
57
- type: e,
58
- timestamp: Date.now(),
59
- detail: t,
60
- bubbles: !0,
61
- cancelable: !0,
62
- defaultPrevented: !1,
63
- ...r
64
- };
65
- return this.dispatchEvent(n);
66
- }
67
- // Dispatch event
68
- dispatchEvent(e) {
69
- let t = e;
70
- for (const r of this.middlewares)
71
- if (t = r(t), !t)
72
- return !1;
73
- return this.addToHistory(t), this.eventQueue.push(t), this.isProcessing || this.processEventQueue(), !t.defaultPrevented;
74
- }
75
- // Process event queue with React 19 concurrent scheduling
76
- processEventQueue() {
77
- if (this.isProcessing) return;
78
- this.isProcessing = !0;
79
- const e = typeof window < "u" && "scheduler" in window ? window.scheduler.postTask : (r) => setTimeout(r, 0), t = () => {
80
- if (this.eventQueue.length === 0) {
81
- this.isProcessing = !1;
82
- return;
83
- }
84
- const r = Math.min(this.eventQueue.length, 5), n = this.eventQueue.splice(0, r);
85
- Promise.all(n.map((o) => this.processEvent(o).catch(console.error))).then(() => {
86
- e(t);
87
- }).catch(() => {
88
- this.isProcessing = !1;
89
- });
90
- };
91
- e(t);
92
- }
93
- // Process individual event
94
- async processEvent(e) {
95
- const { type: t } = e, r = this.listeners.get(t) || [], n = [];
96
- for (const [u, l] of this.listeners.entries())
97
- u.includes("*") && this.matchPattern(t, u) && n.push(...l);
98
- const o = [...r, ...n].sort((u, l) => {
99
- const h = { high: 2, normal: 1, low: 0 }[u.options.priority || "normal"];
100
- return { high: 2, normal: 1, low: 0 }[l.options.priority || "normal"] - h;
101
- }), i = [];
102
- for (const u of o)
103
- if (!(u.options.filter && !u.options.filter(e)))
104
- try {
105
- if (await Promise.resolve(u.handler(e)), u.options.once && i.push(u.id), e.defaultPrevented && !e.bubbles)
106
- break;
107
- } catch (l) {
108
- console.error(`Error in event handler for ${t}:`, l), console.error(`Event handler error for ${t}:`, l);
109
- }
110
- for (const u of i)
111
- for (const [l, h] of this.listeners.entries()) {
112
- const c = h.findIndex((g) => g.id === u);
113
- if (c !== -1) {
114
- h.splice(c, 1), h.length === 0 && this.listeners.delete(l);
115
- break;
116
- }
117
- }
118
- }
119
- // Add middleware
120
- use(e) {
121
- return this.middlewares.push(e), () => {
122
- const t = this.middlewares.indexOf(e);
123
- t !== -1 && this.middlewares.splice(t, 1);
124
- };
125
- }
126
- // Event history management
127
- addToHistory(e) {
128
- this.eventHistory.push(e), this.eventHistory.length > this.maxHistorySize && this.eventHistory.shift();
129
- }
130
- // Get event history
131
- getHistory(e) {
132
- return e ? this.eventHistory.filter(e) : [...this.eventHistory];
133
- }
134
- // Clear event history
135
- clearHistory() {
136
- this.eventHistory = [];
137
- }
138
- // Pattern matching for wildcards
139
- matchPattern(e, t) {
140
- return new RegExp(
141
- "^" + t.replace(/\*/g, ".*").replace(/\?/g, ".") + "$"
142
- ).test(e);
143
- }
144
- // Generate unique ID
145
- generateId() {
146
- return `event_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
147
- }
148
- // Get listener count
149
- getListenerCount(e) {
150
- return e ? this.listeners.get(e)?.length || 0 : Array.from(this.listeners.values()).reduce((t, r) => t + r.length, 0);
151
- }
152
- // Get all event types
153
- getEventTypes() {
154
- return Array.from(this.listeners.keys());
155
- }
156
- // Clear all listeners
157
- removeAllListeners(e) {
158
- e ? this.listeners.delete(e) : this.listeners.clear();
159
- }
160
- // Destroy event bus
161
- destroy() {
162
- this.listeners.clear(), this.eventQueue = [], this.middlewares = [], this.eventHistory = [], this.isProcessing = !1;
163
- }
164
- }
165
- const k = new E();
166
- class S {
167
- constructor(e, t) {
168
- a(this, "eventBus");
169
- a(this, "element");
170
- a(this, "delegatedEvents", /* @__PURE__ */ new Set());
171
- this.eventBus = e, this.element = t;
172
- }
173
- // Delegate DOM events to event bus
174
- delegate(e, t) {
175
- if (this.delegatedEvents.has(e)) return;
176
- const r = (n) => {
177
- this.eventBus.emit(t || `dom:${e}`, {
178
- originalEvent: n,
179
- target: n.target?.tagName.toLowerCase(),
180
- currentTarget: n.currentTarget?.tagName.toLowerCase()
181
- });
182
- };
183
- this.element.addEventListener(e, r, { passive: !0 }), this.delegatedEvents.add(e);
184
- }
185
- // Setup common delegations
186
- setupCommonDelegations() {
187
- this.delegate("click", "user:click"), this.delegate("mouseenter", "user:hover"), this.delegate("mouseleave", "user:hover"), this.delegate("focus", "user:focus"), this.delegate("blur", "user:focus"), this.delegate("keydown", "user:keyboard"), this.delegate("keyup", "user:keyboard");
188
- }
189
- destroy() {
190
- this.delegatedEvents.clear();
191
- }
192
- }
193
- const f = {
194
- // Logging middleware
195
- logger: (s = "[Event]") => (e) => (process.env.NODE_ENV === "development" && console.log(`${s} ${e.type}`, e.detail), e),
196
- // Throttling middleware
197
- throttle: (s, e = 100) => {
198
- const t = /* @__PURE__ */ new Map();
199
- return (r) => {
200
- if (s.includes(r.type)) {
201
- const n = t.get(r.type) || 0, o = r.timestamp;
202
- if (o - n < e)
203
- return null;
204
- t.set(r.type, o);
205
- }
206
- return r;
207
- };
208
- },
209
- // Debouncing middleware
210
- debounce: (s, e = 100) => {
211
- const t = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
212
- return (n) => {
213
- if (s.includes(n.type)) {
214
- const o = t.get(n.type);
215
- o && clearTimeout(o), r.set(n.type, n);
216
- const i = setTimeout(() => {
217
- r.get(n.type) && (r.delete(n.type), t.delete(n.type));
218
- }, e);
219
- return t.set(n.type, i), null;
220
- }
221
- return n;
222
- };
223
- },
224
- // Filtering middleware
225
- filter: (s) => (e) => s(e) ? e : null,
226
- // Event transformation middleware
227
- transform: (s) => (e) => {
228
- try {
229
- return s(e);
230
- } catch (t) {
231
- return console.error("Error in event transformer:", t), e;
232
- }
233
- },
234
- // Performance monitoring middleware
235
- performance: () => {
236
- const s = /* @__PURE__ */ new Map();
237
- return (e) => {
238
- const t = performance.now(), r = s.get(e.type) || { count: 0, totalTime: 0 };
239
- if (r.count++, r.totalTime += performance.now() - t, s.set(e.type, r), r.count % 100 === 0) {
240
- const n = r.totalTime / r.count;
241
- console.log(`Event ${e.type}: ${r.count} calls, avg ${n.toFixed(2)}ms`);
242
- }
243
- return e;
244
- };
245
- },
246
- // Error handling middleware
247
- errorHandler: (s) => (e) => {
248
- try {
249
- if (!e.type || typeof e.type != "string")
250
- throw new Error("Invalid event: missing or invalid type");
251
- if (!e.timestamp || typeof e.timestamp != "number")
252
- throw new Error("Invalid event: missing or invalid timestamp");
253
- return e;
254
- } catch (t) {
255
- return s ? s(t, e) : console.error("Event validation error:", t), null;
256
- }
257
- },
258
- // Security middleware (prevent certain events or sanitize data)
259
- security: (s = {}) => (e) => {
260
- const { blockedEventTypes: t = [], sanitizeDetail: r = !0, maxDetailSize: n = 1e4 } = s;
261
- if (t.includes(e.type))
262
- return console.warn(`Blocked event type: ${e.type}`), null;
263
- if (r && e.detail)
264
- try {
265
- JSON.stringify(e.detail).length > n && (console.warn(`Event detail too large, truncating: ${e.type}`), e.detail = { ...e.detail, _truncated: !0 });
266
- } catch {
267
- console.warn(`Failed to serialize event detail: ${e.type}`), e.detail = { _serializationError: !0 };
268
- }
269
- return e;
270
- },
271
- // Conditional middleware
272
- when: (s, e) => (t) => s(t) ? e(t) : t,
273
- // Chain multiple middleware
274
- chain: (...s) => (e) => {
275
- let t = e;
276
- for (const r of s) {
277
- if (t === null) break;
278
- t = r(t);
279
- }
280
- return t;
281
- }
282
- };
283
- class L {
284
- constructor() {
285
- a(this, "middlewares", []);
286
- }
287
- // Add middleware
288
- use(e) {
289
- return this.middlewares.push(e), this;
290
- }
291
- // Add logging
292
- log(e) {
293
- return this.use(f.logger(e));
294
- }
295
- // Add throttling
296
- throttle(e, t) {
297
- return this.use(f.throttle(e, t));
298
- }
299
- // Add debouncing
300
- debounce(e, t) {
301
- return this.use(f.debounce(e, t));
302
- }
303
- // Add filtering
304
- filter(e) {
305
- return this.use(f.filter(e));
306
- }
307
- // Add transformation
308
- transform(e) {
309
- return this.use(f.transform(e));
310
- }
311
- // Add performance monitoring
312
- performance() {
313
- return this.use(f.performance());
314
- }
315
- // Add error handling
316
- errorHandler(e) {
317
- return this.use(f.errorHandler(e));
318
- }
319
- // Add security
320
- security(e) {
321
- return this.use(f.security(e));
322
- }
323
- // Add conditional middleware
324
- when(e, t) {
325
- return this.use(f.when(e, t));
326
- }
327
- // Build the final middleware
328
- build() {
329
- return f.chain(...this.middlewares);
330
- }
331
- }
332
- const y = () => new L(), P = {
333
- // Development middleware stack
334
- development: () => y().log("[Dev Event]").performance().errorHandler().build(),
335
- // Production middleware stack
336
- production: () => y().security().errorHandler().throttle(["media:timeupdate", "user:mousemove"], 16).build(),
337
- // Testing middleware stack
338
- testing: () => y().errorHandler((s, e) => {
339
- throw new Error(`Event error in test: ${s.message} for event ${e.type}`);
340
- }).build()
341
- };
342
- function D(s) {
343
- const e = m(null);
344
- return e.current || (e.current = s || new E()), d(() => {
345
- const t = e.current;
346
- return () => {
347
- t.destroy();
348
- };
349
- }, []), e.current;
350
- }
351
- function b(s, e, t, r, n) {
352
- const o = m(t), i = m(r);
353
- d(() => {
354
- o.current = t, i.current = r;
355
- }), d(() => s.on(e, o.current, i.current), [s, e, ...n || []]);
356
- }
357
- function I(s) {
358
- return p((e, t, r) => s.emit(e, t, r), [s]);
359
- }
360
- function R(s, e, t, r) {
361
- b(s, e, t, { once: !0 }, r);
362
- }
363
- function C(s) {
364
- const e = m([]), t = p((n, o, i) => {
365
- const u = s.on(n, o, i);
366
- return e.current.push(u), u;
367
- }, [s]), r = p(() => {
368
- e.current.forEach((n) => n()), e.current = [];
369
- }, []);
370
- return d(() => r, [r]), {
371
- on: t,
372
- removeAll: r
373
- };
374
- }
375
- function Q(s, e, t = 100) {
376
- const r = m([]);
377
- d(() => s.addEventListener("*", (i) => {
378
- (!e || e(i)) && (r.current.push(i), r.current.length > t && r.current.shift());
379
- }), [s, e, t]);
380
- const n = p(() => {
381
- r.current = [];
382
- }, []);
383
- return {
384
- history: r.current,
385
- clearHistory: n
386
- };
387
- }
388
- function N(s) {
389
- const e = m(/* @__PURE__ */ new Map());
390
- d(() => {
391
- const n = (i) => {
392
- const u = e.current.get(i.type) || {
393
- count: 0,
394
- lastTimestamp: 0,
395
- frequency: 0
396
- };
397
- if (u.count++, u.lastTimestamp > 0) {
398
- const l = (i.timestamp - u.lastTimestamp) / 1e3;
399
- u.frequency = l > 0 ? 1 / l : 0;
400
- }
401
- u.lastTimestamp = i.timestamp, e.current.set(i.type, u);
402
- };
403
- return s.addEventListener("*", n);
404
- }, [s]);
405
- const t = p(() => Object.fromEntries(e.current.entries()), []), r = p(() => {
406
- e.current.clear();
407
- }, []);
408
- return {
409
- getMetrics: t,
410
- resetMetrics: r
411
- };
412
- }
413
- function O(s, e = {}) {
414
- const { logEvents: t = !0, logMetrics: r = !1, filterEventTypes: n } = e;
415
- d(() => t ? s.addEventListener("*", (i) => {
416
- n && !n.includes(i.type) || (console.group(`🎯 Event: ${i.type}`), console.log("Timestamp:", new Date(i.timestamp).toISOString()), console.log("Detail:", i.detail), console.log("Bubbles:", i.bubbles), console.log("Cancelable:", i.cancelable), console.groupEnd());
417
- }) : void 0, [s, t, n]), d(() => {
418
- if (!r) return;
419
- const o = setInterval(() => {
420
- const i = s.getListenerCount(), u = s.getEventTypes();
421
- console.group("📊 Event Metrics"), console.log("Total Listeners:", i), console.log("Event Types:", u.length), console.log("Active Types:", u), console.groupEnd();
422
- }, 5e3);
423
- return () => clearInterval(o);
424
- }, [s, r]);
425
- }
426
- function A(s, e, t, r, n, o) {
427
- const i = H(() => typeof r == "function" ? r() : r, [r, ...o || []]);
428
- d(() => i ? s.on(e, t, n) : void 0, [s, e, i, ...o || []]);
429
- }
430
- function _(s, e, t) {
431
- const [r, n] = x(e);
432
- return d(() => {
433
- const o = [];
434
- return Object.entries(t).forEach(([i, u]) => {
435
- const l = s.addEventListener(i, (h) => {
436
- n((c) => u(h.detail, c));
437
- });
438
- o.push(l);
439
- }), () => {
440
- o.forEach((i) => i());
441
- };
442
- }, [s, t]), r;
443
- }
444
- function z(s, e, t, r) {
445
- const n = m(void 0);
446
- b(
447
- s,
448
- e,
449
- p((o) => {
450
- typeof n.current == "function" && n.current(), n.current = t(o.detail);
451
- }, r || []),
452
- void 0,
453
- r
454
- ), d(() => () => {
455
- typeof n.current == "function" && n.current();
456
- }, []);
457
- }
458
- const q = "1.0.0";
459
- export {
460
- E,
461
- L as M,
462
- q as a,
463
- S as b,
464
- y as c,
465
- k as d,
466
- f as e,
467
- P as f,
468
- b as g,
469
- I as h,
470
- R as i,
471
- C as j,
472
- Q as k,
473
- N as l,
474
- O as m,
475
- A as n,
476
- _ as o,
477
- z as p,
478
- D as u
479
- };
480
- //# sourceMappingURL=core-events-B5W_j8yU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-events-B5W_j8yU.js","sources":["../src/core/events/event-system.ts","../src/core/events/middleware.ts","../src/core/events/hooks.ts","../src/core/events/index.ts"],"sourcesContent":["// Event system types\nexport interface MediaPlayerEvent {\n type: string\n timestamp: number\n target?: string\n detail?: any\n bubbles?: boolean\n cancelable?: boolean\n defaultPrevented?: boolean\n}\n\nexport type EventHandler<T = any> = (event: MediaPlayerEvent & { detail: T }) => void\nexport type EventUnsubscriber = () => void\n\nexport interface EventOptions {\n once?: boolean\n passive?: boolean\n priority?: 'high' | 'normal' | 'low'\n filter?: (event: MediaPlayerEvent) => boolean\n}\n\n// Event categories for organization\nexport type EventCategory = \n | 'media' // Media playback events\n | 'user' // User interaction events \n | 'system' // System/internal events\n | 'plugin' // Plugin events\n | 'error' // Error events\n | 'performance' // Performance events\n\n// Standard media events\nexport interface MediaEvents {\n // Playback events\n 'media:loadstart': { src: string }\n 'media:loadeddata': { duration: number }\n 'media:canplay': {}\n 'media:canplaythrough': {}\n 'media:play': { currentTime: number }\n 'media:pause': { currentTime: number }\n 'media:ended': { duration: number }\n 'media:seeking': { currentTime: number, targetTime: number }\n 'media:seeked': { currentTime: number, previousTime: number }\n 'media:timeupdate': { currentTime: number, duration: number }\n 'media:durationchange': { duration: number }\n 'media:volumechange': { volume: number, muted: boolean }\n 'media:ratechange': { playbackRate: number }\n \n // Loading events\n 'media:loadedmetadata': { src: string }\n 'media:progress': { buffered: TimeRanges }\n 'media:suspend': {}\n 'media:abort': {}\n 'media:error': { error: Error }\n 'media:stalled': {}\n 'media:waiting': {}\n \n // User interaction events \n 'user:click': { x: number, y: number, element: string }\n 'user:hover': { element: string }\n 'user:focus': { element: string }\n 'user:keyboard': { key: string, code: string, altKey: boolean, ctrlKey: boolean, shiftKey: boolean }\n 'user:gesture': { type: string, data: any }\n \n // System events\n 'system:ready': {}\n 'system:resize': { width: number, height: number }\n 'system:fullscreen': { isFullscreen: boolean }\n 'system:pip': { isPictureInPicture: boolean }\n 'system:visibility': { isVisible: boolean }\n \n // Plugin events\n 'plugin:loaded': { name: string }\n 'plugin:enabled': { name: string }\n 'plugin:disabled': { name: string }\n 'plugin:error': { name: string, error: Error }\n \n // Performance events\n 'performance:fps': { fps: number }\n 'performance:memory': { used: number, total: number }\n 'performance:load': { loadTime: number }\n}\n\n// Event bus implementation\nexport class EventBus {\n private listeners = new Map<string, Array<{\n handler: EventHandler\n options: EventOptions\n id: string\n }>>()\n \n private eventQueue: MediaPlayerEvent[] = []\n private isProcessing = false\n private middlewares: Array<(event: MediaPlayerEvent) => MediaPlayerEvent | null> = []\n private eventHistory: MediaPlayerEvent[] = []\n private maxHistorySize = 1000\n\n // Subscribe to events\n on<K extends keyof MediaEvents>(\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options: EventOptions = {}\n ): EventUnsubscriber {\n return this.addEventListener(type, handler as EventHandler, options)\n }\n\n // Subscribe to events (one-time)\n once<K extends keyof MediaEvents>(\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options: EventOptions = {}\n ): EventUnsubscriber {\n return this.addEventListener(type, handler as EventHandler, { ...options, once: true })\n }\n\n // Subscribe to events with wildcard support\n addEventListener(\n type: string,\n handler: EventHandler,\n options: EventOptions = {}\n ): EventUnsubscriber {\n const id = this.generateId()\n const listener = { handler, options, id }\n\n if (!this.listeners.has(type)) {\n this.listeners.set(type, [])\n }\n\n const listeners = this.listeners.get(type)!\n \n // Insert based on priority\n const priority = options.priority || 'normal'\n const priorityValue = { high: 2, normal: 1, low: 0 }[priority]\n \n let insertIndex = listeners.length\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i]\n if (!listener) continue\n const listenerPriority = listener.options.priority || 'normal'\n if (priorityValue > { high: 2, normal: 1, low: 0 }[listenerPriority]) {\n insertIndex = i\n break\n }\n }\n \n listeners.splice(insertIndex, 0, listener)\n\n // Return unsubscriber\n return () => {\n const index = listeners.findIndex(l => l.id === id)\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n if (listeners.length === 0) {\n this.listeners.delete(type)\n }\n }\n }\n\n // Remove event listener\n removeEventListener(type: string, handler?: EventHandler): void {\n const listeners = this.listeners.get(type)\n if (!listeners) return\n\n if (handler) {\n const index = listeners.findIndex(l => l.handler === handler)\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n } else {\n this.listeners.delete(type)\n }\n\n if (listeners && listeners.length === 0) {\n this.listeners.delete(type)\n }\n }\n\n // Emit events\n emit<K extends keyof MediaEvents>(\n type: K,\n detail?: MediaEvents[K],\n options?: Partial<MediaPlayerEvent>\n ): boolean {\n const event: MediaPlayerEvent = {\n type,\n timestamp: Date.now(),\n detail,\n bubbles: true,\n cancelable: true,\n defaultPrevented: false,\n ...options\n }\n\n return this.dispatchEvent(event)\n }\n\n // Dispatch event\n dispatchEvent(event: MediaPlayerEvent): boolean {\n // Apply middlewares\n let processedEvent: MediaPlayerEvent | null = event\n for (const middleware of this.middlewares) {\n processedEvent = middleware(processedEvent)\n if (!processedEvent) {\n return false // Event was cancelled by middleware\n }\n }\n\n // Add to history\n this.addToHistory(processedEvent)\n\n // Queue event for processing\n this.eventQueue.push(processedEvent)\n \n if (!this.isProcessing) {\n this.processEventQueue()\n }\n\n return !processedEvent.defaultPrevented\n }\n\n // Process event queue with React 19 concurrent scheduling\n private processEventQueue(): void {\n if (this.isProcessing) return\n\n this.isProcessing = true\n\n // Use scheduler for non-blocking event processing\n const schedule = (typeof window !== 'undefined' && 'scheduler' in window)\n ? (window as any).scheduler.postTask\n : (cb: () => void) => setTimeout(cb, 0)\n\n const processNext = () => {\n if (this.eventQueue.length === 0) {\n this.isProcessing = false\n return\n }\n\n const batchSize = Math.min(this.eventQueue.length, 5) // Process max 5 events per frame\n const events = this.eventQueue.splice(0, batchSize)\n\n // Process events in parallel using Promise.all\n Promise.all(events.map(event => this.processEvent(event).catch(console.error)))\n .then(() => {\n // Schedule next batch in next frame\n schedule(processNext)\n })\n .catch(() => {\n this.isProcessing = false\n })\n }\n\n schedule(processNext)\n }\n\n // Process individual event\n private async processEvent(event: MediaPlayerEvent): Promise<void> {\n const { type } = event\n\n // Get exact matches\n const exactListeners = this.listeners.get(type) || []\n \n // Get wildcard matches\n const wildcardListeners: typeof exactListeners = []\n for (const [pattern, listeners] of this.listeners.entries()) {\n if (pattern.includes('*') && this.matchPattern(type, pattern)) {\n wildcardListeners.push(...listeners)\n }\n }\n\n // Combine and sort by priority\n const allListeners = [...exactListeners, ...wildcardListeners]\n .sort((a, b) => {\n const priorityA = { high: 2, normal: 1, low: 0 }[a.options.priority || 'normal']\n const priorityB = { high: 2, normal: 1, low: 0 }[b.options.priority || 'normal']\n return priorityB - priorityA\n })\n\n // Execute listeners\n const listenersToRemove: string[] = []\n\n for (const listener of allListeners) {\n // Apply filter if present\n if (listener.options.filter && !listener.options.filter(event)) {\n continue\n }\n\n try {\n // Execute handler\n await Promise.resolve(listener.handler(event as any))\n\n // Mark for removal if once\n if (listener.options.once) {\n listenersToRemove.push(listener.id)\n }\n\n // Stop propagation if event was cancelled\n if (event.defaultPrevented && !event.bubbles) {\n break\n }\n } catch (error) {\n console.error(`Error in event handler for ${type}:`, error)\n \n // Log error instead\n console.error(`Event handler error for ${type}:`, error)\n }\n }\n\n // Remove one-time listeners\n for (const id of listenersToRemove) {\n for (const [eventType, listeners] of this.listeners.entries()) {\n const index = listeners.findIndex(l => l.id === id)\n if (index !== -1) {\n listeners.splice(index, 1)\n if (listeners.length === 0) {\n this.listeners.delete(eventType)\n }\n break\n }\n }\n }\n }\n\n // Add middleware\n use(middleware: (event: MediaPlayerEvent) => MediaPlayerEvent | null): () => void {\n this.middlewares.push(middleware)\n return () => {\n const index = this.middlewares.indexOf(middleware)\n if (index !== -1) {\n this.middlewares.splice(index, 1)\n }\n }\n }\n\n // Event history management\n private addToHistory(event: MediaPlayerEvent): void {\n this.eventHistory.push(event)\n if (this.eventHistory.length > this.maxHistorySize) {\n this.eventHistory.shift()\n }\n }\n\n // Get event history\n getHistory(filter?: (event: MediaPlayerEvent) => boolean): MediaPlayerEvent[] {\n return filter ? this.eventHistory.filter(filter) : [...this.eventHistory]\n }\n\n // Clear event history\n clearHistory(): void {\n this.eventHistory = []\n }\n\n // Pattern matching for wildcards\n private matchPattern(eventType: string, pattern: string): boolean {\n const regex = new RegExp(\n '^' + pattern.replace(/\\*/g, '.*').replace(/\\?/g, '.') + '$'\n )\n return regex.test(eventType)\n }\n\n // Generate unique ID\n private generateId(): string {\n return `event_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n // Get listener count\n getListenerCount(type?: string): number {\n if (type) {\n return this.listeners.get(type)?.length || 0\n }\n return Array.from(this.listeners.values()).reduce((sum, listeners) => sum + listeners.length, 0)\n }\n\n // Get all event types\n getEventTypes(): string[] {\n return Array.from(this.listeners.keys())\n }\n\n // Clear all listeners\n removeAllListeners(type?: string): void {\n if (type) {\n this.listeners.delete(type)\n } else {\n this.listeners.clear()\n }\n }\n\n // Destroy event bus\n destroy(): void {\n this.listeners.clear()\n this.eventQueue = []\n this.middlewares = []\n this.eventHistory = []\n this.isProcessing = false\n }\n}\n\n// Default event bus instance\nexport const defaultEventBus = new EventBus()\n\n// Event delegation helper\nexport class EventDelegator {\n private eventBus: EventBus\n private element: HTMLElement\n private delegatedEvents = new Set<string>()\n\n constructor(eventBus: EventBus, element: HTMLElement) {\n this.eventBus = eventBus\n this.element = element\n }\n\n // Delegate DOM events to event bus\n delegate(domEvent: string, mediaEvent?: string): void {\n if (this.delegatedEvents.has(domEvent)) return\n\n const handler = (e: Event) => {\n this.eventBus.emit(mediaEvent || `dom:${domEvent}` as any, {\n originalEvent: e,\n target: (e.target as HTMLElement)?.tagName.toLowerCase(),\n currentTarget: (e.currentTarget as HTMLElement)?.tagName.toLowerCase()\n })\n }\n\n this.element.addEventListener(domEvent, handler, { passive: true })\n this.delegatedEvents.add(domEvent)\n }\n\n // Setup common delegations\n setupCommonDelegations(): void {\n this.delegate('click', 'user:click')\n this.delegate('mouseenter', 'user:hover')\n this.delegate('mouseleave', 'user:hover')\n this.delegate('focus', 'user:focus')\n this.delegate('blur', 'user:focus')\n this.delegate('keydown', 'user:keyboard')\n this.delegate('keyup', 'user:keyboard')\n }\n\n destroy(): void {\n this.delegatedEvents.clear()\n }\n}\n\n","import type { MediaPlayerEvent } from './event-system'\n\n// Middleware function type\nexport type EventMiddleware = (event: MediaPlayerEvent) => MediaPlayerEvent | null\n\n// Common middleware implementations\nexport const eventMiddlewares = {\n // Logging middleware\n logger: (prefix = '[Event]'): EventMiddleware => (event) => {\n if (process.env.NODE_ENV === 'development') {\n console.log(`${prefix} ${event.type}`, event.detail)\n }\n return event\n },\n\n // Throttling middleware\n throttle: (eventTypes: string[], delay = 100): EventMiddleware => {\n const lastTimes = new Map<string, number>()\n \n return (event) => {\n if (eventTypes.includes(event.type)) {\n const lastTime = lastTimes.get(event.type) || 0\n const now = event.timestamp\n \n if (now - lastTime < delay) {\n return null // Throttle this event\n }\n \n lastTimes.set(event.type, now)\n }\n \n return event\n }\n },\n\n // Debouncing middleware\n debounce: (eventTypes: string[], delay = 100): EventMiddleware => {\n const timeouts = new Map<string, NodeJS.Timeout>()\n const eventQueue = new Map<string, MediaPlayerEvent>()\n \n return (event) => {\n if (eventTypes.includes(event.type)) {\n // Clear existing timeout\n const existingTimeout = timeouts.get(event.type)\n if (existingTimeout) {\n clearTimeout(existingTimeout)\n }\n \n // Store the latest event\n eventQueue.set(event.type, event)\n \n // Set new timeout\n const timeout = setTimeout(() => {\n const queuedEvent = eventQueue.get(event.type)\n if (queuedEvent) {\n // Process the debounced event\n // Note: This is a simplified approach - in a real implementation,\n // you'd need to re-inject the event into the processing pipeline\n eventQueue.delete(event.type)\n timeouts.delete(event.type)\n }\n }, delay)\n \n timeouts.set(event.type, timeout)\n \n return null // Don't process immediately\n }\n \n return event\n }\n },\n\n // Filtering middleware\n filter: (predicate: (event: MediaPlayerEvent) => boolean): EventMiddleware => (event) => {\n return predicate(event) ? event : null\n },\n\n // Event transformation middleware\n transform: (transformer: (event: MediaPlayerEvent) => MediaPlayerEvent): EventMiddleware => (event) => {\n try {\n return transformer(event)\n } catch (error) {\n console.error('Error in event transformer:', error)\n return event\n }\n },\n\n // Performance monitoring middleware\n performance: (): EventMiddleware => {\n const metrics = new Map<string, { count: number; totalTime: number }>()\n \n return (event) => {\n const startTime = performance.now()\n \n // Update metrics\n const existing = metrics.get(event.type) || { count: 0, totalTime: 0 }\n existing.count++\n existing.totalTime += performance.now() - startTime\n metrics.set(event.type, existing)\n \n // Log metrics periodically (every 100 events)\n if (existing.count % 100 === 0) {\n const avgTime = existing.totalTime / existing.count\n console.log(`Event ${event.type}: ${existing.count} calls, avg ${avgTime.toFixed(2)}ms`)\n }\n \n return event\n }\n },\n\n // Error handling middleware\n errorHandler: (onError?: (error: Error, event: MediaPlayerEvent) => void): EventMiddleware => (event) => {\n try {\n // Validate event structure\n if (!event.type || typeof event.type !== 'string') {\n throw new Error('Invalid event: missing or invalid type')\n }\n \n if (!event.timestamp || typeof event.timestamp !== 'number') {\n throw new Error('Invalid event: missing or invalid timestamp')\n }\n \n return event\n } catch (error) {\n if (onError) {\n onError(error as Error, event)\n } else {\n console.error('Event validation error:', error)\n }\n return null\n }\n },\n\n // Security middleware (prevent certain events or sanitize data)\n security: (options: {\n blockedEventTypes?: string[]\n sanitizeDetail?: boolean\n maxDetailSize?: number\n } = {}): EventMiddleware => (event) => {\n const { blockedEventTypes = [], sanitizeDetail = true, maxDetailSize = 10000 } = options\n \n // Block certain event types\n if (blockedEventTypes.includes(event.type)) {\n console.warn(`Blocked event type: ${event.type}`)\n return null\n }\n \n // Sanitize detail if needed\n if (sanitizeDetail && event.detail) {\n try {\n const detailStr = JSON.stringify(event.detail)\n if (detailStr.length > maxDetailSize) {\n console.warn(`Event detail too large, truncating: ${event.type}`)\n event.detail = { ...event.detail, _truncated: true }\n }\n } catch (error) {\n console.warn(`Failed to serialize event detail: ${event.type}`)\n event.detail = { _serializationError: true }\n }\n }\n \n return event\n },\n\n // Conditional middleware\n when: (condition: (event: MediaPlayerEvent) => boolean, middleware: EventMiddleware): EventMiddleware => (event) => {\n return condition(event) ? middleware(event) : event\n },\n\n // Chain multiple middleware\n chain: (...middlewares: EventMiddleware[]): EventMiddleware => (event) => {\n let currentEvent: MediaPlayerEvent | null = event\n \n for (const middleware of middlewares) {\n if (currentEvent === null) break\n currentEvent = middleware(currentEvent)\n }\n \n return currentEvent\n }\n}\n\n// Middleware builder class\nexport class MiddlewareBuilder {\n private middlewares: EventMiddleware[] = []\n\n // Add middleware\n use(middleware: EventMiddleware): this {\n this.middlewares.push(middleware)\n return this\n }\n\n // Add logging\n log(prefix?: string): this {\n return this.use(eventMiddlewares.logger(prefix))\n }\n\n // Add throttling\n throttle(eventTypes: string[], delay?: number): this {\n return this.use(eventMiddlewares.throttle(eventTypes, delay))\n }\n\n // Add debouncing\n debounce(eventTypes: string[], delay?: number): this {\n return this.use(eventMiddlewares.debounce(eventTypes, delay))\n }\n\n // Add filtering\n filter(predicate: (event: MediaPlayerEvent) => boolean): this {\n return this.use(eventMiddlewares.filter(predicate))\n }\n\n // Add transformation\n transform(transformer: (event: MediaPlayerEvent) => MediaPlayerEvent): this {\n return this.use(eventMiddlewares.transform(transformer))\n }\n\n // Add performance monitoring\n performance(): this {\n return this.use(eventMiddlewares.performance())\n }\n\n // Add error handling\n errorHandler(onError?: (error: Error, event: MediaPlayerEvent) => void): this {\n return this.use(eventMiddlewares.errorHandler(onError))\n }\n\n // Add security\n security(options?: Parameters<typeof eventMiddlewares.security>[0]): this {\n return this.use(eventMiddlewares.security(options))\n }\n\n // Add conditional middleware\n when(condition: (event: MediaPlayerEvent) => boolean, middleware: EventMiddleware): this {\n return this.use(eventMiddlewares.when(condition, middleware))\n }\n\n // Build the final middleware\n build(): EventMiddleware {\n return eventMiddlewares.chain(...this.middlewares)\n }\n}\n\n// Helper to create middleware builder\nexport const createMiddleware = () => new MiddlewareBuilder()\n\n// Export commonly used middleware combinations\nexport const commonMiddlewares = {\n // Development middleware stack\n development: () => createMiddleware()\n .log('[Dev Event]')\n .performance()\n .errorHandler()\n .build(),\n\n // Production middleware stack\n production: () => createMiddleware()\n .security()\n .errorHandler()\n .throttle(['media:timeupdate', 'user:mousemove'], 16) // ~60fps\n .build(),\n\n // Testing middleware stack\n testing: () => createMiddleware()\n .errorHandler((error, event) => {\n throw new Error(`Event error in test: ${error.message} for event ${event.type}`)\n })\n .build()\n}","import React, { useEffect, useRef, useCallback, useMemo, useState } from 'react'\nimport { EventBus, type EventHandler, type EventUnsubscriber, type EventOptions, type MediaEvents } from './event-system'\n\n// Hook to use event bus with React\nexport function useEventBus(eventBus?: EventBus): EventBus {\n const eventBusRef = useRef<EventBus | null>(null)\n \n if (!eventBusRef.current) {\n eventBusRef.current = eventBus || new EventBus()\n }\n \n useEffect(() => {\n const currentEventBus = eventBusRef.current!\n \n return () => {\n // Cleanup on unmount\n currentEventBus.destroy()\n }\n }, [])\n \n return eventBusRef.current\n}\n\n// Hook to listen to events\nexport function useEventListener<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options?: EventOptions,\n deps?: React.DependencyList\n): void {\n const handlerRef = useRef(handler)\n const optionsRef = useRef(options)\n \n // Update refs when dependencies change\n useEffect(() => {\n handlerRef.current = handler\n optionsRef.current = options\n })\n \n useEffect(() => {\n const unsubscribe = eventBus.on(type, handlerRef.current, optionsRef.current)\n return unsubscribe\n }, [eventBus, type, ...(deps || [])])\n}\n\n// Hook to emit events\nexport function useEventEmitter(eventBus: EventBus) {\n return useCallback(<K extends keyof MediaEvents>(\n type: K,\n detail?: MediaEvents[K],\n options?: Partial<MediaEvents[K]>\n ) => {\n return eventBus.emit(type, detail, options)\n }, [eventBus])\n}\n\n// Hook for one-time event listeners\nexport function useEventOnce<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n deps?: React.DependencyList\n): void {\n useEventListener(eventBus, type, handler, { once: true }, deps)\n}\n\n// Hook to create event handlers with automatic cleanup\nexport function useEventHandlers(eventBus: EventBus) {\n const handlersRef = useRef<EventUnsubscriber[]>([])\n \n const addHandler = useCallback(<K extends keyof MediaEvents>(\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options?: EventOptions\n ) => {\n const unsubscribe = eventBus.on(type, handler, options)\n handlersRef.current.push(unsubscribe)\n return unsubscribe\n }, [eventBus])\n \n const removeAllHandlers = useCallback(() => {\n handlersRef.current.forEach(unsubscribe => unsubscribe())\n handlersRef.current = []\n }, [])\n \n useEffect(() => {\n return removeAllHandlers\n }, [removeAllHandlers])\n \n return {\n on: addHandler,\n removeAll: removeAllHandlers\n }\n}\n\n// Hook for event history\nexport function useEventHistory(\n eventBus: EventBus,\n filter?: (event: any) => boolean,\n maxSize = 100\n) {\n const historyRef = useRef<any[]>([])\n \n useEffect(() => {\n const unsubscribe = eventBus.addEventListener('*', (event) => {\n if (!filter || filter(event)) {\n historyRef.current.push(event)\n \n // Limit history size\n if (historyRef.current.length > maxSize) {\n historyRef.current.shift()\n }\n }\n })\n \n return unsubscribe\n }, [eventBus, filter, maxSize])\n \n const clearHistory = useCallback(() => {\n historyRef.current = []\n }, [])\n \n return {\n history: historyRef.current,\n clearHistory\n }\n}\n\n// Hook for event metrics/analytics\nexport function useEventMetrics(eventBus: EventBus) {\n const metricsRef = useRef<Map<string, {\n count: number\n lastTimestamp: number\n frequency: number // events per second\n }>>(new Map())\n \n useEffect(() => {\n const updateMetrics = (event: any) => {\n const existing = metricsRef.current.get(event.type) || {\n count: 0,\n lastTimestamp: 0,\n frequency: 0\n }\n \n existing.count++\n \n if (existing.lastTimestamp > 0) {\n const timeDiff = (event.timestamp - existing.lastTimestamp) / 1000 // seconds\n existing.frequency = timeDiff > 0 ? 1 / timeDiff : 0\n }\n \n existing.lastTimestamp = event.timestamp\n metricsRef.current.set(event.type, existing)\n }\n \n const unsubscribe = eventBus.addEventListener('*', updateMetrics)\n return unsubscribe\n }, [eventBus])\n \n const getMetrics = useCallback(() => {\n return Object.fromEntries(metricsRef.current.entries())\n }, [])\n \n const resetMetrics = useCallback(() => {\n metricsRef.current.clear()\n }, [])\n \n return {\n getMetrics,\n resetMetrics\n }\n}\n\n// Hook for event debugging\nexport function useEventDebugger(\n eventBus: EventBus, \n options: {\n logEvents?: boolean\n logMetrics?: boolean\n filterEventTypes?: string[]\n } = {}\n) {\n const { logEvents = true, logMetrics = false, filterEventTypes } = options\n \n useEffect(() => {\n if (!logEvents) return\n \n const unsubscribe = eventBus.addEventListener('*', (event) => {\n if (filterEventTypes && !filterEventTypes.includes(event.type)) {\n return\n }\n \n console.group(`🎯 Event: ${event.type}`)\n console.log('Timestamp:', new Date(event.timestamp).toISOString())\n console.log('Detail:', event.detail)\n console.log('Bubbles:', event.bubbles)\n console.log('Cancelable:', event.cancelable)\n console.groupEnd()\n })\n \n return unsubscribe\n }, [eventBus, logEvents, filterEventTypes])\n \n useEffect(() => {\n if (!logMetrics) return\n \n const interval = setInterval(() => {\n const listenerCount = eventBus.getListenerCount()\n const eventTypes = eventBus.getEventTypes()\n \n console.group('📊 Event Metrics')\n console.log('Total Listeners:', listenerCount)\n console.log('Event Types:', eventTypes.length)\n console.log('Active Types:', eventTypes)\n console.groupEnd()\n }, 5000)\n \n return () => clearInterval(interval)\n }, [eventBus, logMetrics])\n}\n\n// Hook for conditional event handling\nexport function useConditionalEventListener<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n condition: boolean | (() => boolean),\n options?: EventOptions,\n deps?: React.DependencyList\n): void {\n const shouldListen = useMemo(() => {\n return typeof condition === 'function' ? condition() : condition\n }, [condition, ...(deps || [])])\n \n useEffect(() => {\n if (!shouldListen) return\n \n const unsubscribe = eventBus.on(type, handler, options)\n return unsubscribe\n }, [eventBus, type, shouldListen, ...(deps || [])])\n}\n\n// Hook for event state synchronization\nexport function useEventState<T>(\n eventBus: EventBus,\n initialValue: T,\n eventMapping: Record<string, (detail: any, currentValue: T) => T>\n) {\n const [state, setState] = useState<T>(initialValue)\n \n useEffect(() => {\n const unsubscribers: EventUnsubscriber[] = []\n \n Object.entries(eventMapping).forEach(([eventType, updater]) => {\n const unsubscribe = eventBus.addEventListener(eventType, (event) => {\n setState(current => updater(event.detail, current))\n })\n unsubscribers.push(unsubscribe)\n })\n \n return () => {\n unsubscribers.forEach(unsubscribe => unsubscribe())\n }\n }, [eventBus, eventMapping])\n \n return state\n}\n\n// Hook for creating event-driven effects\nexport function useEventEffect<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n effect: (detail: MediaEvents[K]) => void | (() => void),\n deps?: React.DependencyList\n): void {\n const cleanupRef = useRef<(() => void) | void>(undefined)\n \n useEventListener(\n eventBus,\n type,\n useCallback((event) => {\n // Clean up previous effect\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current()\n }\n \n // Run new effect\n cleanupRef.current = effect(event.detail)\n }, deps || []),\n undefined,\n deps\n )\n \n useEffect(() => {\n return () => {\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current()\n }\n }\n }, [])\n}","// Event system exports\nexport {\n EventBus,\n EventDelegator,\n defaultEventBus\n} from './event-system'\n\nexport type {\n MediaPlayerEvent,\n EventHandler,\n EventUnsubscriber,\n EventOptions,\n EventCategory,\n MediaEvents\n} from './event-system'\n\n// Event utilities\nexport * from './middleware'\nexport * from './hooks'\n\n// Version\nexport const EVENT_SYSTEM_VERSION = '1.0.0'"],"names":["EventBus","__publicField","type","handler","options","id","listener","listeners","priority","priorityValue","insertIndex","i","listenerPriority","index","l","detail","event","processedEvent","middleware","schedule","cb","processNext","batchSize","events","exactListeners","wildcardListeners","pattern","allListeners","a","b","priorityA","listenersToRemove","error","eventType","filter","sum","defaultEventBus","EventDelegator","eventBus","element","domEvent","mediaEvent","e","eventMiddlewares","prefix","eventTypes","delay","lastTimes","lastTime","now","timeouts","eventQueue","existingTimeout","timeout","predicate","transformer","metrics","startTime","existing","avgTime","onError","blockedEventTypes","sanitizeDetail","maxDetailSize","condition","middlewares","currentEvent","MiddlewareBuilder","createMiddleware","commonMiddlewares","useEventBus","eventBusRef","useRef","useEffect","currentEventBus","useEventListener","deps","handlerRef","optionsRef","useEventEmitter","useCallback","useEventOnce","useEventHandlers","handlersRef","addHandler","unsubscribe","removeAllHandlers","useEventHistory","maxSize","historyRef","clearHistory","useEventMetrics","metricsRef","updateMetrics","timeDiff","getMetrics","resetMetrics","useEventDebugger","logEvents","logMetrics","filterEventTypes","interval","listenerCount","useConditionalEventListener","shouldListen","useMemo","useEventState","initialValue","eventMapping","state","setState","useState","unsubscribers","updater","current","useEventEffect","effect","cleanupRef","EVENT_SYSTEM_VERSION"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";var b=Object.defineProperty;var w=(s,e,t)=>e in s?b(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var d=(s,e,t)=>w(s,typeof e!="symbol"?e+"":e,t);const c=require("react");class g{constructor(){d(this,"listeners",new Map);d(this,"eventQueue",[]);d(this,"isProcessing",!1);d(this,"middlewares",[]);d(this,"eventHistory",[]);d(this,"maxHistorySize",1e3)}on(e,t,r={}){return this.addEventListener(e,t,r)}once(e,t,r={}){return this.addEventListener(e,t,{...r,once:!0})}addEventListener(e,t,r={}){const n=this.generateId(),o={handler:t,options:r,id:n};this.listeners.has(e)||this.listeners.set(e,[]);const i=this.listeners.get(e),u=r.priority||"normal",l={high:2,normal:1,low:0}[u];let h=i.length;for(let a=0;a<i.length;a++){const m=i[a];if(!m)continue;const v=m.options.priority||"normal";if(l>{high:2,normal:1,low:0}[v]){h=a;break}}return i.splice(h,0,o),()=>{const a=i.findIndex(m=>m.id===n);a!==-1&&i.splice(a,1),i.length===0&&this.listeners.delete(e)}}removeEventListener(e,t){const r=this.listeners.get(e);if(r){if(t){const n=r.findIndex(o=>o.handler===t);n!==-1&&r.splice(n,1)}else this.listeners.delete(e);r&&r.length===0&&this.listeners.delete(e)}}emit(e,t,r){const n={type:e,timestamp:Date.now(),detail:t,bubbles:!0,cancelable:!0,defaultPrevented:!1,...r};return this.dispatchEvent(n)}dispatchEvent(e){let t=e;for(const r of this.middlewares)if(t=r(t),!t)return!1;return this.addToHistory(t),this.eventQueue.push(t),this.isProcessing||this.processEventQueue(),!t.defaultPrevented}processEventQueue(){if(this.isProcessing)return;this.isProcessing=!0;const e=typeof window<"u"&&"scheduler"in window?window.scheduler.postTask:r=>setTimeout(r,0),t=()=>{if(this.eventQueue.length===0){this.isProcessing=!1;return}const r=Math.min(this.eventQueue.length,5),n=this.eventQueue.splice(0,r);Promise.all(n.map(o=>this.processEvent(o).catch(console.error))).then(()=>{e(t)}).catch(()=>{this.isProcessing=!1})};e(t)}async processEvent(e){const{type:t}=e,r=this.listeners.get(t)||[],n=[];for(const[u,l]of this.listeners.entries())u.includes("*")&&this.matchPattern(t,u)&&n.push(...l);const o=[...r,...n].sort((u,l)=>{const h={high:2,normal:1,low:0}[u.options.priority||"normal"];return{high:2,normal:1,low:0}[l.options.priority||"normal"]-h}),i=[];for(const u of o)if(!(u.options.filter&&!u.options.filter(e)))try{if(await Promise.resolve(u.handler(e)),u.options.once&&i.push(u.id),e.defaultPrevented&&!e.bubbles)break}catch(l){console.error(`Error in event handler for ${t}:`,l),console.error(`Event handler error for ${t}:`,l)}for(const u of i)for(const[l,h]of this.listeners.entries()){const a=h.findIndex(m=>m.id===u);if(a!==-1){h.splice(a,1),h.length===0&&this.listeners.delete(l);break}}}use(e){return this.middlewares.push(e),()=>{const t=this.middlewares.indexOf(e);t!==-1&&this.middlewares.splice(t,1)}}addToHistory(e){this.eventHistory.push(e),this.eventHistory.length>this.maxHistorySize&&this.eventHistory.shift()}getHistory(e){return e?this.eventHistory.filter(e):[...this.eventHistory]}clearHistory(){this.eventHistory=[]}matchPattern(e,t){return new RegExp("^"+t.replace(/\*/g,".*").replace(/\?/g,".")+"$").test(e)}generateId(){return`event_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getListenerCount(e){return e?this.listeners.get(e)?.length||0:Array.from(this.listeners.values()).reduce((t,r)=>t+r.length,0)}getEventTypes(){return Array.from(this.listeners.keys())}removeAllListeners(e){e?this.listeners.delete(e):this.listeners.clear()}destroy(){this.listeners.clear(),this.eventQueue=[],this.middlewares=[],this.eventHistory=[],this.isProcessing=!1}}const T=new g;class H{constructor(e,t){d(this,"eventBus");d(this,"element");d(this,"delegatedEvents",new Set);this.eventBus=e,this.element=t}delegate(e,t){if(this.delegatedEvents.has(e))return;const r=n=>{this.eventBus.emit(t||`dom:${e}`,{originalEvent:n,target:n.target?.tagName.toLowerCase(),currentTarget:n.currentTarget?.tagName.toLowerCase()})};this.element.addEventListener(e,r,{passive:!0}),this.delegatedEvents.add(e)}setupCommonDelegations(){this.delegate("click","user:click"),this.delegate("mouseenter","user:hover"),this.delegate("mouseleave","user:hover"),this.delegate("focus","user:focus"),this.delegate("blur","user:focus"),this.delegate("keydown","user:keyboard"),this.delegate("keyup","user:keyboard")}destroy(){this.delegatedEvents.clear()}}const f={logger:(s="[Event]")=>e=>(process.env.NODE_ENV==="development"&&console.log(`${s} ${e.type}`,e.detail),e),throttle:(s,e=100)=>{const t=new Map;return r=>{if(s.includes(r.type)){const n=t.get(r.type)||0,o=r.timestamp;if(o-n<e)return null;t.set(r.type,o)}return r}},debounce:(s,e=100)=>{const t=new Map,r=new Map;return n=>{if(s.includes(n.type)){const o=t.get(n.type);o&&clearTimeout(o),r.set(n.type,n);const i=setTimeout(()=>{r.get(n.type)&&(r.delete(n.type),t.delete(n.type))},e);return t.set(n.type,i),null}return n}},filter:s=>e=>s(e)?e:null,transform:s=>e=>{try{return s(e)}catch(t){return console.error("Error in event transformer:",t),e}},performance:()=>{const s=new Map;return e=>{const t=performance.now(),r=s.get(e.type)||{count:0,totalTime:0};if(r.count++,r.totalTime+=performance.now()-t,s.set(e.type,r),r.count%100===0){const n=r.totalTime/r.count;console.log(`Event ${e.type}: ${r.count} calls, avg ${n.toFixed(2)}ms`)}return e}},errorHandler:s=>e=>{try{if(!e.type||typeof e.type!="string")throw new Error("Invalid event: missing or invalid type");if(!e.timestamp||typeof e.timestamp!="number")throw new Error("Invalid event: missing or invalid timestamp");return e}catch(t){return s?s(t,e):console.error("Event validation error:",t),null}},security:(s={})=>e=>{const{blockedEventTypes:t=[],sanitizeDetail:r=!0,maxDetailSize:n=1e4}=s;if(t.includes(e.type))return console.warn(`Blocked event type: ${e.type}`),null;if(r&&e.detail)try{JSON.stringify(e.detail).length>n&&(console.warn(`Event detail too large, truncating: ${e.type}`),e.detail={...e.detail,_truncated:!0})}catch{console.warn(`Failed to serialize event detail: ${e.type}`),e.detail={_serializationError:!0}}return e},when:(s,e)=>t=>s(t)?e(t):t,chain:(...s)=>e=>{let t=e;for(const r of s){if(t===null)break;t=r(t)}return t}};class y{constructor(){d(this,"middlewares",[])}use(e){return this.middlewares.push(e),this}log(e){return this.use(f.logger(e))}throttle(e,t){return this.use(f.throttle(e,t))}debounce(e,t){return this.use(f.debounce(e,t))}filter(e){return this.use(f.filter(e))}transform(e){return this.use(f.transform(e))}performance(){return this.use(f.performance())}errorHandler(e){return this.use(f.errorHandler(e))}security(e){return this.use(f.security(e))}when(e,t){return this.use(f.when(e,t))}build(){return f.chain(...this.middlewares)}}const p=()=>new y,M={development:()=>p().log("[Dev Event]").performance().errorHandler().build(),production:()=>p().security().errorHandler().throttle(["media:timeupdate","user:mousemove"],16).build(),testing:()=>p().errorHandler((s,e)=>{throw new Error(`Event error in test: ${s.message} for event ${e.type}`)}).build()};function L(s){const e=c.useRef(null);return e.current||(e.current=s||new g),c.useEffect(()=>{const t=e.current;return()=>{t.destroy()}},[]),e.current}function E(s,e,t,r,n){const o=c.useRef(t),i=c.useRef(r);c.useEffect(()=>{o.current=t,i.current=r}),c.useEffect(()=>s.on(e,o.current,i.current),[s,e,...n||[]])}function k(s){return c.useCallback((e,t,r)=>s.emit(e,t,r),[s])}function x(s,e,t,r){E(s,e,t,{once:!0},r)}function S(s){const e=c.useRef([]),t=c.useCallback((n,o,i)=>{const u=s.on(n,o,i);return e.current.push(u),u},[s]),r=c.useCallback(()=>{e.current.forEach(n=>n()),e.current=[]},[]);return c.useEffect(()=>r,[r]),{on:t,removeAll:r}}function R(s,e,t=100){const r=c.useRef([]);c.useEffect(()=>s.addEventListener("*",i=>{(!e||e(i))&&(r.current.push(i),r.current.length>t&&r.current.shift())}),[s,e,t]);const n=c.useCallback(()=>{r.current=[]},[]);return{history:r.current,clearHistory:n}}function $(s){const e=c.useRef(new Map);c.useEffect(()=>{const n=i=>{const u=e.current.get(i.type)||{count:0,lastTimestamp:0,frequency:0};if(u.count++,u.lastTimestamp>0){const l=(i.timestamp-u.lastTimestamp)/1e3;u.frequency=l>0?1/l:0}u.lastTimestamp=i.timestamp,e.current.set(i.type,u)};return s.addEventListener("*",n)},[s]);const t=c.useCallback(()=>Object.fromEntries(e.current.entries()),[]),r=c.useCallback(()=>{e.current.clear()},[]);return{getMetrics:t,resetMetrics:r}}function C(s,e={}){const{logEvents:t=!0,logMetrics:r=!1,filterEventTypes:n}=e;c.useEffect(()=>t?s.addEventListener("*",i=>{n&&!n.includes(i.type)||(console.group(`🎯 Event: ${i.type}`),console.log("Timestamp:",new Date(i.timestamp).toISOString()),console.log("Detail:",i.detail),console.log("Bubbles:",i.bubbles),console.log("Cancelable:",i.cancelable),console.groupEnd())}):void 0,[s,t,n]),c.useEffect(()=>{if(!r)return;const o=setInterval(()=>{const i=s.getListenerCount(),u=s.getEventTypes();console.group("📊 Event Metrics"),console.log("Total Listeners:",i),console.log("Event Types:",u.length),console.log("Active Types:",u),console.groupEnd()},5e3);return()=>clearInterval(o)},[s,r])}function P(s,e,t,r,n,o){const i=c.useMemo(()=>typeof r=="function"?r():r,[r,...o||[]]);c.useEffect(()=>i?s.on(e,t,n):void 0,[s,e,i,...o||[]])}function D(s,e,t){const[r,n]=c.useState(e);return c.useEffect(()=>{const o=[];return Object.entries(t).forEach(([i,u])=>{const l=s.addEventListener(i,h=>{n(a=>u(h.detail,a))});o.push(l)}),()=>{o.forEach(i=>i())}},[s,t]),r}function I(s,e,t,r){const n=c.useRef(void 0);E(s,e,c.useCallback(o=>{typeof n.current=="function"&&n.current(),n.current=t(o.detail)},r||[]),void 0,r),c.useEffect(()=>()=>{typeof n.current=="function"&&n.current()},[])}const N="1.0.0";exports.EVENT_SYSTEM_VERSION=N;exports.EventBus=g;exports.EventDelegator=H;exports.MiddlewareBuilder=y;exports.commonMiddlewares=M;exports.createMiddleware=p;exports.defaultEventBus=T;exports.eventMiddlewares=f;exports.useConditionalEventListener=P;exports.useEventBus=L;exports.useEventDebugger=C;exports.useEventEffect=I;exports.useEventEmitter=k;exports.useEventHandlers=S;exports.useEventHistory=R;exports.useEventListener=E;exports.useEventMetrics=$;exports.useEventOnce=x;exports.useEventState=D;
2
- //# sourceMappingURL=core-events-CN0-Vhhq.cjs.map