@therealtinhtute/baroiplayer 1.0.6 → 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 (595) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/package.json +1 -1
  3. package/package.json +1 -1
  4. package/dist/context/media.js +0 -2
  5. package/dist/context/media.js.map +0 -1
  6. package/dist/context/media.mjs +0 -15
  7. package/dist/context/media.mjs.map +0 -1
  8. package/dist/context/store.js +0 -2
  9. package/dist/context/store.js.map +0 -1
  10. package/dist/context/store.mjs +0 -5
  11. package/dist/context/store.mjs.map +0 -1
  12. package/dist/context-Af84FynT.js +0 -1179
  13. package/dist/context-Af84FynT.js.map +0 -1
  14. package/dist/context-CwZnPdz0.cjs +0 -23
  15. package/dist/context-CwZnPdz0.cjs.map +0 -1
  16. package/dist/core-events-B5W_j8yU.js +0 -480
  17. package/dist/core-events-B5W_j8yU.js.map +0 -1
  18. package/dist/core-events-CN0-Vhhq.cjs +0 -2
  19. package/dist/core-events-CN0-Vhhq.cjs.map +0 -1
  20. package/dist/core-plugins-Bq9KLany.js +0 -696
  21. package/dist/core-plugins-Bq9KLany.js.map +0 -1
  22. package/dist/core-plugins-CPDSHMiQ.cjs +0 -2
  23. package/dist/core-plugins-CPDSHMiQ.cjs.map +0 -1
  24. package/dist/core.js +0 -37
  25. package/dist/core.js.map +0 -1
  26. package/dist/core.mjs +0 -1217
  27. package/dist/core.mjs.map +0 -1
  28. package/dist/enhanced-components-CXnYiOt6.cjs +0 -2
  29. package/dist/enhanced-components-CXnYiOt6.cjs.map +0 -1
  30. package/dist/enhanced-components-Da0TSvKe.js +0 -1073
  31. package/dist/enhanced-components-Da0TSvKe.js.map +0 -1
  32. package/dist/hooks-BCMilGRf.cjs +0 -4
  33. package/dist/hooks-BCMilGRf.cjs.map +0 -1
  34. package/dist/hooks-BPtHV1ZT.js +0 -2042
  35. package/dist/hooks-BPtHV1ZT.js.map +0 -1
  36. package/dist/index.js.map +0 -1
  37. package/dist/index.mjs.map +0 -1
  38. package/dist/minimal-components-BHJMuaL7.cjs +0 -2
  39. package/dist/minimal-components-BHJMuaL7.cjs.map +0 -1
  40. package/dist/minimal-components-BmqRefl1.js +0 -2002
  41. package/dist/minimal-components-BmqRefl1.js.map +0 -1
  42. package/dist/mona-loading.gif +0 -0
  43. package/dist/performance-monitor--rzKTlbj.js +0 -302
  44. package/dist/performance-monitor--rzKTlbj.js.map +0 -1
  45. package/dist/performance-monitor-cjIvZE2D.cjs +0 -2
  46. package/dist/performance-monitor-cjIvZE2D.cjs.map +0 -1
  47. package/dist/src/adapters/videojs-adapter.d.ts.map +0 -1
  48. package/dist/src/adapters/videojs-adapter.js +0 -350
  49. package/dist/src/assets/mona-loading.gif +0 -0
  50. package/dist/src/components/AnimateLoading.d.ts.map +0 -1
  51. package/dist/src/components/AnimateLoading.js +0 -41
  52. package/dist/src/components/LoadingState.d.ts.map +0 -1
  53. package/dist/src/components/LoadingState.js +0 -111
  54. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
  55. package/dist/src/components/accessibility/keyboard-help-overlay.js +0 -90
  56. package/dist/src/components/audio-player.d.ts.map +0 -1
  57. package/dist/src/components/audio-player.js +0 -31
  58. package/dist/src/components/basic/index.d.ts.map +0 -1
  59. package/dist/src/components/basic/index.js +0 -29
  60. package/dist/src/components/enhanced/advanced-features.d.ts.map +0 -1
  61. package/dist/src/components/enhanced/advanced-features.js +0 -64
  62. package/dist/src/components/enhanced/debug-panel.d.ts.map +0 -1
  63. package/dist/src/components/enhanced/debug-panel.js +0 -94
  64. package/dist/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
  65. package/dist/src/components/enhanced/enhanced-controls.js +0 -233
  66. package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
  67. package/dist/src/components/enhanced/enhanced-media-player.js +0 -316
  68. package/dist/src/components/enhanced/error-handling.d.ts.map +0 -1
  69. package/dist/src/components/enhanced/error-handling.js +0 -153
  70. package/dist/src/components/enhanced/index.d.ts.map +0 -1
  71. package/dist/src/components/enhanced/index.js +0 -10
  72. package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
  73. package/dist/src/components/enhanced/media-player-enhanced.js +0 -250
  74. package/dist/src/components/examples/basic-video-player.d.ts.map +0 -1
  75. package/dist/src/components/examples/basic-video-player.js +0 -16
  76. package/dist/src/components/examples/custom-controls-example.d.ts.map +0 -1
  77. package/dist/src/components/examples/custom-controls-example.js +0 -12
  78. package/dist/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
  79. package/dist/src/components/examples/enhanced-controls-example.js +0 -18
  80. package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
  81. package/dist/src/components/examples/enhanced-media-player-example.js +0 -13
  82. package/dist/src/components/examples/loading-states-demo.d.ts.map +0 -1
  83. package/dist/src/components/examples/loading-states-demo.js +0 -41
  84. package/dist/src/components/examples/react-19-demo.d.ts.map +0 -1
  85. package/dist/src/components/examples/react-19-demo.js +0 -104
  86. package/dist/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
  87. package/dist/src/components/examples/volume-orientation-demo.js +0 -31
  88. package/dist/src/components/icon-demo.d.ts.map +0 -1
  89. package/dist/src/components/icon-demo.js +0 -16
  90. package/dist/src/components/icons/index.d.ts.map +0 -1
  91. package/dist/src/components/icons/index.js +0 -59
  92. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
  93. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  94. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
  95. package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  96. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
  97. package/dist/src/components/icons/svg-icons/AudioIcon.js +0 -4
  98. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
  99. package/dist/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  100. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
  101. package/dist/src/components/icons/svg-icons/CameraIcon.js +0 -4
  102. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
  103. package/dist/src/components/icons/svg-icons/CheckIcon.js +0 -4
  104. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
  105. package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  106. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
  107. package/dist/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  108. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
  109. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  110. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
  111. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  112. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
  113. package/dist/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  114. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
  115. package/dist/src/components/icons/svg-icons/PauseIcon.js +0 -3
  116. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
  117. package/dist/src/components/icons/svg-icons/PlayIcon.js +0 -3
  118. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
  119. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  120. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
  121. package/dist/src/components/icons/svg-icons/QualityIcon.js +0 -3
  122. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
  123. package/dist/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  124. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
  125. package/dist/src/components/icons/svg-icons/SliderIcon.js +0 -3
  126. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
  127. package/dist/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  128. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
  129. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  130. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
  131. package/dist/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  132. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
  133. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  134. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
  135. package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  136. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
  137. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  138. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
  139. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  140. package/dist/src/components/legacy.d.ts.map +0 -1
  141. package/dist/src/components/legacy.js +0 -52
  142. package/dist/src/components/media-metadata-display.d.ts.map +0 -1
  143. package/dist/src/components/media-metadata-display.js +0 -20
  144. package/dist/src/components/media-player-audio.d.ts.map +0 -1
  145. package/dist/src/components/media-player-audio.js +0 -18
  146. package/dist/src/components/media-player-controls.d.ts.map +0 -1
  147. package/dist/src/components/media-player-controls.js +0 -150
  148. package/dist/src/components/media-player-error.d.ts.map +0 -1
  149. package/dist/src/components/media-player-error.js +0 -85
  150. package/dist/src/components/media-player-fullscreen.d.ts.map +0 -1
  151. package/dist/src/components/media-player-fullscreen.js +0 -68
  152. package/dist/src/components/media-player-hls.d.ts.map +0 -1
  153. package/dist/src/components/media-player-hls.js +0 -20
  154. package/dist/src/components/media-player-loading.d.ts.map +0 -1
  155. package/dist/src/components/media-player-loading.js +0 -53
  156. package/dist/src/components/media-player-play.d.ts.map +0 -1
  157. package/dist/src/components/media-player-play.js +0 -44
  158. package/dist/src/components/media-player-root.d.ts.map +0 -1
  159. package/dist/src/components/media-player-root.js +0 -243
  160. package/dist/src/components/media-player-seek.d.ts.map +0 -1
  161. package/dist/src/components/media-player-seek.js +0 -92
  162. package/dist/src/components/media-player-time.d.ts.map +0 -1
  163. package/dist/src/components/media-player-time.js +0 -57
  164. package/dist/src/components/media-player-tooltip.d.ts.map +0 -1
  165. package/dist/src/components/media-player-tooltip.js +0 -14
  166. package/dist/src/components/media-player-video.d.ts.map +0 -1
  167. package/dist/src/components/media-player-video.js +0 -18
  168. package/dist/src/components/media-player-volume.d.ts.map +0 -1
  169. package/dist/src/components/media-player-volume.js +0 -88
  170. package/dist/src/components/media-player.d.ts.map +0 -1
  171. package/dist/src/components/media-player.js +0 -67
  172. package/dist/src/components/media-suspense.d.ts.map +0 -1
  173. package/dist/src/components/media-suspense.js +0 -173
  174. package/dist/src/components/player-settings-form.d.ts.map +0 -1
  175. package/dist/src/components/player-settings-form.js +0 -46
  176. package/dist/src/components/react-player-wrapper.d.ts.map +0 -1
  177. package/dist/src/components/react-player-wrapper.js +0 -163
  178. package/dist/src/components/simple-video-player.d.ts.map +0 -1
  179. package/dist/src/components/simple-video-player.js +0 -41
  180. package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
  181. package/dist/src/components/ui/enhanced-seek-bar.js +0 -112
  182. package/dist/src/components/ui/fullscreen-button.d.ts.map +0 -1
  183. package/dist/src/components/ui/fullscreen-button.js +0 -21
  184. package/dist/src/components/ui/media-resource-preloader.d.ts.map +0 -1
  185. package/dist/src/components/ui/media-resource-preloader.js +0 -295
  186. package/dist/src/components/ui/play-button.d.ts.map +0 -1
  187. package/dist/src/components/ui/play-button.js +0 -26
  188. package/dist/src/components/ui/seek-bar.d.ts.map +0 -1
  189. package/dist/src/components/ui/seek-bar.js +0 -54
  190. package/dist/src/components/ui/time-display.d.ts.map +0 -1
  191. package/dist/src/components/ui/time-display.js +0 -18
  192. package/dist/src/components/ui/volume-control.d.ts.map +0 -1
  193. package/dist/src/components/ui/volume-control.js +0 -71
  194. package/dist/src/components/unified/base-media-player.d.ts.map +0 -1
  195. package/dist/src/components/unified/base-media-player.js +0 -104
  196. package/dist/src/components/unified/media-player.d.ts.map +0 -1
  197. package/dist/src/components/unified/media-player.js +0 -41
  198. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
  199. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  200. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
  201. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  202. package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
  203. package/dist/src/components/variants/minimal/MinimalControls.js +0 -19
  204. package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
  205. package/dist/src/components/variants/minimal/MinimalLoading.js +0 -6
  206. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
  207. package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  208. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
  209. package/dist/src/components/variants/minimal/MinimalOverlay.js +0 -15
  210. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
  211. package/dist/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  212. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
  213. package/dist/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  214. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
  215. package/dist/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  216. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
  217. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  218. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
  219. package/dist/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  220. package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
  221. package/dist/src/components/variants/minimal/components/ControlBar.js +0 -10
  222. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
  223. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  224. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
  225. package/dist/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  226. package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
  227. package/dist/src/components/variants/minimal/components/RightControls.js +0 -40
  228. package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
  229. package/dist/src/components/variants/minimal/components/SeekBar.js +0 -43
  230. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
  231. package/dist/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  232. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
  233. package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  234. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
  235. package/dist/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  236. package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
  237. package/dist/src/components/variants/minimal/components/VideoElement.js +0 -4
  238. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
  239. package/dist/src/components/variants/minimal/components/VolumeControl.js +0 -99
  240. package/dist/src/components/variants/minimal/index.d.ts.map +0 -1
  241. package/dist/src/components/variants/minimal/index.js +0 -8
  242. package/dist/src/components/video-player.d.ts.map +0 -1
  243. package/dist/src/components/video-player.js +0 -38
  244. package/dist/src/context/error-handling.d.ts.map +0 -1
  245. package/dist/src/context/error-handling.js +0 -300
  246. package/dist/src/context/media-context.d.ts.map +0 -1
  247. package/dist/src/context/media-context.js +0 -121
  248. package/dist/src/context/media-provider.d.ts.map +0 -1
  249. package/dist/src/context/media-provider.js +0 -164
  250. package/dist/src/context/media-store.d.ts.map +0 -1
  251. package/dist/src/context/media-store.js +0 -273
  252. package/dist/src/context/persistence.d.ts.map +0 -1
  253. package/dist/src/context/persistence.js +0 -356
  254. package/dist/src/core/events/event-system.d.ts.map +0 -1
  255. package/dist/src/core/events/event-system.js +0 -288
  256. package/dist/src/core/events/hooks.d.ts.map +0 -1
  257. package/dist/src/core/events/hooks.js +0 -198
  258. package/dist/src/core/events/index.d.ts.map +0 -1
  259. package/dist/src/core/events/index.js +0 -7
  260. package/dist/src/core/events/middleware.d.ts.map +0 -1
  261. package/dist/src/core/events/middleware.js +0 -219
  262. package/dist/src/core/index.d.ts.map +0 -1
  263. package/dist/src/core/index.js +0 -15
  264. package/dist/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
  265. package/dist/src/core/optimization/bundle-optimizer.js +0 -217
  266. package/dist/src/core/performance/cicd.d.ts.map +0 -1
  267. package/dist/src/core/performance/cicd.js +0 -83
  268. package/dist/src/core/performance/index.d.ts.map +0 -1
  269. package/dist/src/core/performance/index.js +0 -14
  270. package/dist/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
  271. package/dist/src/core/performance/media-loading-optimizer.js +0 -404
  272. package/dist/src/core/performance/performance-budgets.d.ts.map +0 -1
  273. package/dist/src/core/performance/performance-budgets.js +0 -326
  274. package/dist/src/core/performance/performance-monitor.d.ts.map +0 -1
  275. package/dist/src/core/performance/performance-monitor.js +0 -297
  276. package/dist/src/core/performance/performance-testing.d.ts.map +0 -1
  277. package/dist/src/core/performance/performance-testing.js +0 -314
  278. package/dist/src/core/plugins/base-plugin.d.ts.map +0 -1
  279. package/dist/src/core/plugins/base-plugin.js +0 -151
  280. package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
  281. package/dist/src/core/plugins/enhanced-plugin-system.js +0 -305
  282. package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
  283. package/dist/src/core/plugins/examples/analytics-plugin.js +0 -191
  284. package/dist/src/core/plugins/index.d.ts.map +0 -1
  285. package/dist/src/core/plugins/index.js +0 -9
  286. package/dist/src/core/plugins/registry.d.ts.map +0 -1
  287. package/dist/src/core/plugins/registry.js +0 -261
  288. package/dist/src/core/plugins/types.d.ts.map +0 -1
  289. package/dist/src/core/plugins/types.js +0 -31
  290. package/dist/src/core/plugins/utils.d.ts.map +0 -1
  291. package/dist/src/core/plugins/utils.js +0 -274
  292. package/dist/src/core/progressive-loading.d.ts.map +0 -1
  293. package/dist/src/core/progressive-loading.js +0 -239
  294. package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
  295. package/dist/src/core/providers/enhanced-hls-provider.js +0 -273
  296. package/dist/src/core/providers/service-provider.d.ts.map +0 -1
  297. package/dist/src/core/providers/service-provider.js +0 -105
  298. package/dist/src/core/utils.d.ts.map +0 -1
  299. package/dist/src/core/utils.js +0 -21
  300. package/dist/src/features/media-session/media-session-manager.d.ts.map +0 -1
  301. package/dist/src/features/media-session/media-session-manager.js +0 -331
  302. package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
  303. package/dist/src/features/picture-in-picture/pip-manager.js +0 -353
  304. package/dist/src/features/playlist/playlist-manager.d.ts.map +0 -1
  305. package/dist/src/features/playlist/playlist-manager.js +0 -475
  306. package/dist/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
  307. package/dist/src/features/subtitles/subtitle-manager.js +0 -335
  308. package/dist/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
  309. package/dist/src/features/subtitles/subtitle-parser.js +0 -217
  310. package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
  311. package/dist/src/features/thumbnails/thumbnail-generator.js +0 -388
  312. package/dist/src/hooks/accessibility/index.d.ts.map +0 -1
  313. package/dist/src/hooks/accessibility/index.js +0 -4
  314. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
  315. package/dist/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  316. package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
  317. package/dist/src/hooks/accessibility/use-focus-management.js +0 -142
  318. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
  319. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  320. package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
  321. package/dist/src/hooks/accessibility/use-screen-reader.js +0 -148
  322. package/dist/src/hooks/core/index.d.ts.map +0 -1
  323. package/dist/src/hooks/core/index.js +0 -19
  324. package/dist/src/hooks/legacy.d.ts.map +0 -1
  325. package/dist/src/hooks/legacy.js +0 -17
  326. package/dist/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
  327. package/dist/src/hooks/use-enhanced-media-player.js +0 -395
  328. package/dist/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
  329. package/dist/src/hooks/use-intelligent-preloading.js +0 -258
  330. package/dist/src/hooks/use-keyboard-controls.d.ts.map +0 -1
  331. package/dist/src/hooks/use-keyboard-controls.js +0 -83
  332. package/dist/src/hooks/use-media-actions.d.ts.map +0 -1
  333. package/dist/src/hooks/use-media-actions.js +0 -121
  334. package/dist/src/hooks/use-media-metadata.d.ts.map +0 -1
  335. package/dist/src/hooks/use-media-metadata.js +0 -74
  336. package/dist/src/hooks/use-media-optimistic.d.ts.map +0 -1
  337. package/dist/src/hooks/use-media-optimistic.js +0 -205
  338. package/dist/src/hooks/use-media-player.d.ts.map +0 -1
  339. package/dist/src/hooks/use-media-player.js +0 -251
  340. package/dist/src/hooks/use-media-state.d.ts.map +0 -1
  341. package/dist/src/hooks/use-media-state.js +0 -162
  342. package/dist/src/hooks/use-memory-optimization.d.ts.map +0 -1
  343. package/dist/src/hooks/use-memory-optimization.js +0 -288
  344. package/dist/src/hooks/use-optimistic-controls.d.ts.map +0 -1
  345. package/dist/src/hooks/use-optimistic-controls.js +0 -60
  346. package/dist/src/hooks/use-optimized-media.d.ts.map +0 -1
  347. package/dist/src/hooks/use-optimized-media.js +0 -211
  348. package/dist/src/hooks/use-touch-gestures.d.ts.map +0 -1
  349. package/dist/src/hooks/use-touch-gestures.js +0 -289
  350. package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
  351. package/dist/src/hooks/useEnhancedSubtitles.js +0 -205
  352. package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  353. package/dist/src/hooks/useKeyboardShortcuts.js +0 -59
  354. package/dist/src/hooks/useMediaControls.d.ts.map +0 -1
  355. package/dist/src/hooks/useMediaControls.js +0 -44
  356. package/dist/src/hooks/useScreenshot.d.ts.map +0 -1
  357. package/dist/src/hooks/useScreenshot.js +0 -56
  358. package/dist/src/hooks/useSubtitles.d.ts.map +0 -1
  359. package/dist/src/hooks/useSubtitles.js +0 -73
  360. package/dist/src/hooks/useVideoPlayer.d.ts.map +0 -1
  361. package/dist/src/hooks/useVideoPlayer.js +0 -184
  362. package/dist/src/icons/components/FullscreenIcon.d.ts.map +0 -1
  363. package/dist/src/icons/components/FullscreenIcon.js +0 -11
  364. package/dist/src/icons/components/SettingsIcon.d.ts.map +0 -1
  365. package/dist/src/icons/components/SettingsIcon.js +0 -11
  366. package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
  367. package/dist/src/icons/components/animated/LoadingIcon.js +0 -11
  368. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
  369. package/dist/src/icons/components/animated/PlayPauseIcon.js +0 -9
  370. package/dist/src/icons/components/media/PauseIcon.d.ts.map +0 -1
  371. package/dist/src/icons/components/media/PauseIcon.js +0 -12
  372. package/dist/src/icons/components/media/PlayIcon.d.ts.map +0 -1
  373. package/dist/src/icons/components/media/PlayIcon.js +0 -12
  374. package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
  375. package/dist/src/icons/components/volume/VolumeIcon.js +0 -11
  376. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
  377. package/dist/src/icons/components/volume/VolumeOffIcon.js +0 -11
  378. package/dist/src/icons/index.d.ts.map +0 -1
  379. package/dist/src/icons/index.js +0 -45
  380. package/dist/src/icons/provider.d.ts.map +0 -1
  381. package/dist/src/icons/provider.js +0 -37
  382. package/dist/src/icons/types.d.ts.map +0 -1
  383. package/dist/src/icons/types.js +0 -1
  384. package/dist/src/index-enhanced.d.ts.map +0 -1
  385. package/dist/src/index-enhanced.js +0 -16
  386. package/dist/src/index-legacy.d.ts.map +0 -1
  387. package/dist/src/index-legacy.js +0 -97
  388. package/dist/src/index.d.ts.map +0 -1
  389. package/dist/src/index.js +0 -90
  390. package/dist/src/index.minimal.d.ts.map +0 -1
  391. package/dist/src/index.minimal.js +0 -3
  392. package/dist/src/lib/deprecation.d.ts.map +0 -1
  393. package/dist/src/lib/deprecation.js +0 -31
  394. package/dist/src/lib/format-time.d.ts.map +0 -1
  395. package/dist/src/lib/format-time.js +0 -32
  396. package/dist/src/lib/index.d.ts.map +0 -1
  397. package/dist/src/lib/index.js +0 -3
  398. package/dist/src/lib/utils.d.ts.map +0 -1
  399. package/dist/src/lib/utils.js +0 -5
  400. package/dist/src/test/setup.d.ts.map +0 -1
  401. package/dist/src/test/setup.js +0 -65
  402. package/dist/src/types/events.d.ts.map +0 -1
  403. package/dist/src/types/events.js +0 -2
  404. package/dist/src/types/formats.d.ts.map +0 -1
  405. package/dist/src/types/formats.js +0 -63
  406. package/dist/src/types/index.d.ts.map +0 -1
  407. package/dist/src/types/index.js +0 -4
  408. package/dist/utils-Db13763z.cjs +0 -9
  409. package/dist/utils-Db13763z.cjs.map +0 -1
  410. package/dist/utils-nTO4AnHo.js +0 -2809
  411. package/dist/utils-nTO4AnHo.js.map +0 -1
  412. package/dist/utils.js +0 -2
  413. package/dist/utils.js.map +0 -1
  414. package/dist/utils.mjs +0 -7
  415. package/dist/utils.mjs.map +0 -1
  416. package/src/adapters/videojs-adapter.js +0 -350
  417. package/src/components/AnimateLoading.js +0 -41
  418. package/src/components/LoadingState.js +0 -111
  419. package/src/components/accessibility/keyboard-help-overlay.js +0 -90
  420. package/src/components/audio-player.js +0 -31
  421. package/src/components/basic/index.js +0 -29
  422. package/src/components/enhanced/advanced-features.js +0 -64
  423. package/src/components/enhanced/debug-panel.js +0 -94
  424. package/src/components/enhanced/enhanced-controls.js +0 -233
  425. package/src/components/enhanced/enhanced-media-player.js +0 -316
  426. package/src/components/enhanced/error-handling.js +0 -153
  427. package/src/components/enhanced/index.js +0 -10
  428. package/src/components/enhanced/media-player-enhanced.js +0 -250
  429. package/src/components/examples/basic-video-player.js +0 -16
  430. package/src/components/examples/custom-controls-example.js +0 -12
  431. package/src/components/examples/enhanced-controls-example.js +0 -18
  432. package/src/components/examples/enhanced-media-player-example.js +0 -13
  433. package/src/components/examples/loading-states-demo.js +0 -41
  434. package/src/components/examples/react-19-demo.js +0 -104
  435. package/src/components/examples/volume-orientation-demo.js +0 -31
  436. package/src/components/icon-demo.js +0 -16
  437. package/src/components/icons/index.js +0 -59
  438. package/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
  439. package/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
  440. package/src/components/icons/svg-icons/AudioIcon.js +0 -4
  441. package/src/components/icons/svg-icons/BackwardIcon.js +0 -3
  442. package/src/components/icons/svg-icons/CameraIcon.js +0 -4
  443. package/src/components/icons/svg-icons/CheckIcon.js +0 -4
  444. package/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
  445. package/src/components/icons/svg-icons/ForwardIcon.js +0 -3
  446. package/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
  447. package/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
  448. package/src/components/icons/svg-icons/LoadingIcon.js +0 -3
  449. package/src/components/icons/svg-icons/PauseIcon.js +0 -3
  450. package/src/components/icons/svg-icons/PlayIcon.js +0 -3
  451. package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
  452. package/src/components/icons/svg-icons/QualityIcon.js +0 -3
  453. package/src/components/icons/svg-icons/SettingsIcon.js +0 -3
  454. package/src/components/icons/svg-icons/SliderIcon.js +0 -3
  455. package/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
  456. package/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
  457. package/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
  458. package/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
  459. package/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
  460. package/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
  461. package/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
  462. package/src/components/legacy.js +0 -52
  463. package/src/components/media-metadata-display.js +0 -20
  464. package/src/components/media-player-audio.js +0 -18
  465. package/src/components/media-player-controls.js +0 -150
  466. package/src/components/media-player-error.js +0 -85
  467. package/src/components/media-player-fullscreen.js +0 -68
  468. package/src/components/media-player-hls.js +0 -20
  469. package/src/components/media-player-loading.js +0 -53
  470. package/src/components/media-player-play.js +0 -44
  471. package/src/components/media-player-root.js +0 -243
  472. package/src/components/media-player-seek.js +0 -92
  473. package/src/components/media-player-time.js +0 -57
  474. package/src/components/media-player-tooltip.js +0 -14
  475. package/src/components/media-player-video.js +0 -18
  476. package/src/components/media-player-volume.js +0 -88
  477. package/src/components/media-player.js +0 -67
  478. package/src/components/media-suspense.js +0 -173
  479. package/src/components/player-settings-form.js +0 -46
  480. package/src/components/react-player-wrapper.js +0 -163
  481. package/src/components/simple-video-player.js +0 -41
  482. package/src/components/ui/enhanced-seek-bar.js +0 -112
  483. package/src/components/ui/fullscreen-button.js +0 -21
  484. package/src/components/ui/media-resource-preloader.js +0 -295
  485. package/src/components/ui/play-button.js +0 -26
  486. package/src/components/ui/seek-bar.js +0 -54
  487. package/src/components/ui/time-display.js +0 -18
  488. package/src/components/ui/volume-control.js +0 -71
  489. package/src/components/unified/base-media-player.js +0 -104
  490. package/src/components/unified/media-player.js +0 -41
  491. package/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
  492. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
  493. package/src/components/variants/minimal/MinimalControls.js +0 -19
  494. package/src/components/variants/minimal/MinimalLoading.js +0 -6
  495. package/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
  496. package/src/components/variants/minimal/MinimalOverlay.js +0 -15
  497. package/src/components/variants/minimal/MinimalPlayButton.js +0 -29
  498. package/src/components/variants/minimal/MinimalSeekBar.js +0 -73
  499. package/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
  500. package/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
  501. package/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
  502. package/src/components/variants/minimal/components/ControlBar.js +0 -10
  503. package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
  504. package/src/components/variants/minimal/components/PlaybackControls.js +0 -9
  505. package/src/components/variants/minimal/components/RightControls.js +0 -40
  506. package/src/components/variants/minimal/components/SeekBar.js +0 -43
  507. package/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
  508. package/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
  509. package/src/components/variants/minimal/components/TimeDisplay.js +0 -5
  510. package/src/components/variants/minimal/components/VideoElement.js +0 -4
  511. package/src/components/variants/minimal/components/VolumeControl.js +0 -99
  512. package/src/components/variants/minimal/index.js +0 -8
  513. package/src/components/video-player.js +0 -38
  514. package/src/context/error-handling.js +0 -300
  515. package/src/context/media-context.js +0 -121
  516. package/src/context/media-provider.js +0 -164
  517. package/src/context/media-store.js +0 -273
  518. package/src/context/persistence.js +0 -356
  519. package/src/core/events/event-system.js +0 -288
  520. package/src/core/events/hooks.js +0 -198
  521. package/src/core/events/index.js +0 -7
  522. package/src/core/events/middleware.js +0 -219
  523. package/src/core/index.js +0 -15
  524. package/src/core/optimization/bundle-optimizer.js +0 -217
  525. package/src/core/performance/cicd.js +0 -83
  526. package/src/core/performance/index.js +0 -14
  527. package/src/core/performance/media-loading-optimizer.js +0 -404
  528. package/src/core/performance/performance-budgets.js +0 -326
  529. package/src/core/performance/performance-monitor.js +0 -297
  530. package/src/core/performance/performance-testing.js +0 -314
  531. package/src/core/plugins/base-plugin.js +0 -151
  532. package/src/core/plugins/enhanced-plugin-system.js +0 -305
  533. package/src/core/plugins/examples/analytics-plugin.js +0 -191
  534. package/src/core/plugins/index.js +0 -9
  535. package/src/core/plugins/registry.js +0 -261
  536. package/src/core/plugins/types.js +0 -31
  537. package/src/core/plugins/utils.js +0 -274
  538. package/src/core/progressive-loading.js +0 -239
  539. package/src/core/providers/enhanced-hls-provider.js +0 -273
  540. package/src/core/providers/service-provider.js +0 -105
  541. package/src/core/utils.js +0 -21
  542. package/src/features/media-session/media-session-manager.js +0 -331
  543. package/src/features/picture-in-picture/pip-manager.js +0 -353
  544. package/src/features/playlist/playlist-manager.js +0 -475
  545. package/src/features/subtitles/subtitle-manager.js +0 -335
  546. package/src/features/subtitles/subtitle-parser.js +0 -217
  547. package/src/features/thumbnails/thumbnail-generator.js +0 -388
  548. package/src/hooks/accessibility/index.js +0 -4
  549. package/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
  550. package/src/hooks/accessibility/use-focus-management.js +0 -142
  551. package/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
  552. package/src/hooks/accessibility/use-screen-reader.js +0 -148
  553. package/src/hooks/core/index.js +0 -19
  554. package/src/hooks/legacy.js +0 -17
  555. package/src/hooks/use-enhanced-media-player.js +0 -395
  556. package/src/hooks/use-intelligent-preloading.js +0 -258
  557. package/src/hooks/use-keyboard-controls.js +0 -83
  558. package/src/hooks/use-media-actions.js +0 -121
  559. package/src/hooks/use-media-metadata.js +0 -74
  560. package/src/hooks/use-media-optimistic.js +0 -205
  561. package/src/hooks/use-media-player.js +0 -251
  562. package/src/hooks/use-media-state.js +0 -162
  563. package/src/hooks/use-memory-optimization.js +0 -288
  564. package/src/hooks/use-optimistic-controls.js +0 -60
  565. package/src/hooks/use-optimized-media.js +0 -211
  566. package/src/hooks/use-touch-gestures.js +0 -289
  567. package/src/hooks/useEnhancedSubtitles.js +0 -205
  568. package/src/hooks/useKeyboardShortcuts.js +0 -59
  569. package/src/hooks/useMediaControls.js +0 -44
  570. package/src/hooks/useScreenshot.js +0 -56
  571. package/src/hooks/useSubtitles.js +0 -73
  572. package/src/hooks/useVideoPlayer.js +0 -184
  573. package/src/icons/components/FullscreenIcon.js +0 -11
  574. package/src/icons/components/SettingsIcon.js +0 -11
  575. package/src/icons/components/animated/LoadingIcon.js +0 -11
  576. package/src/icons/components/animated/PlayPauseIcon.js +0 -9
  577. package/src/icons/components/media/PauseIcon.js +0 -12
  578. package/src/icons/components/media/PlayIcon.js +0 -12
  579. package/src/icons/components/volume/VolumeIcon.js +0 -11
  580. package/src/icons/components/volume/VolumeOffIcon.js +0 -11
  581. package/src/icons/index.js +0 -45
  582. package/src/icons/provider.js +0 -37
  583. package/src/icons/types.js +0 -1
  584. package/src/index-enhanced.js +0 -16
  585. package/src/index-legacy.js +0 -97
  586. package/src/index.js +0 -90
  587. package/src/index.minimal.js +0 -3
  588. package/src/lib/deprecation.js +0 -31
  589. package/src/lib/format-time.js +0 -32
  590. package/src/lib/index.js +0 -3
  591. package/src/lib/utils.js +0 -5
  592. package/src/test/setup.js +0 -65
  593. package/src/types/events.js +0 -2
  594. package/src/types/formats.js +0 -63
  595. 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