@therealtinhtute/baroiplayer 1.0.0 → 1.0.2

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 (1330) hide show
  1. package/dist/context/media.js +1 -1
  2. package/dist/context/media.mjs +5 -5
  3. package/dist/context/store.js +1 -1
  4. package/dist/context/store.mjs +1 -1
  5. package/dist/{context-BMteAJDN.js → context-Af84FynT.js} +304 -265
  6. package/dist/context-Af84FynT.js.map +1 -0
  7. package/dist/context-CwZnPdz0.cjs +23 -0
  8. package/dist/context-CwZnPdz0.cjs.map +1 -0
  9. package/dist/core.js +2 -2
  10. package/dist/core.mjs +27 -27
  11. package/dist/{enhanced-components-DTIObgB7.cjs → enhanced-components-CXnYiOt6.cjs} +2 -2
  12. package/dist/{enhanced-components-DTIObgB7.cjs.map → enhanced-components-CXnYiOt6.cjs.map} +1 -1
  13. package/dist/{enhanced-components-DHv0MFvG.js → enhanced-components-Da0TSvKe.js} +158 -158
  14. package/dist/{enhanced-components-DHv0MFvG.js.map → enhanced-components-Da0TSvKe.js.map} +1 -1
  15. package/dist/hooks-BhW_i-9L.js +2013 -0
  16. package/dist/hooks-BhW_i-9L.js.map +1 -0
  17. package/dist/hooks-DTXeB5Z-.cjs +4 -0
  18. package/dist/hooks-DTXeB5Z-.cjs.map +1 -0
  19. package/dist/index.css +102 -1
  20. package/dist/index.d.ts +1388 -0
  21. package/dist/index.js +27 -112
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +17 -6126
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/{minimal-components-DSq5sQpy.js → minimal-components-B0bILe18.js} +236 -236
  26. package/dist/{minimal-components-DSq5sQpy.js.map → minimal-components-B0bILe18.js.map} +1 -1
  27. package/dist/{minimal-components-DflWiihN.cjs → minimal-components-BsqodtY8.cjs} +2 -2
  28. package/dist/{minimal-components-DflWiihN.cjs.map → minimal-components-BsqodtY8.cjs.map} +1 -1
  29. package/dist/minimal-components.css +589 -1
  30. package/dist/package.json +28 -0
  31. package/dist/{performance-monitor-rMW1RgV3.js → performance-monitor--rzKTlbj.js} +2 -2
  32. package/dist/{performance-monitor-rMW1RgV3.js.map → performance-monitor--rzKTlbj.js.map} +1 -1
  33. package/dist/{performance-monitor-CUW6f5ll.cjs → performance-monitor-cjIvZE2D.cjs} +2 -2
  34. package/dist/{performance-monitor-CUW6f5ll.cjs.map → performance-monitor-cjIvZE2D.cjs.map} +1 -1
  35. package/dist/src/adapters/videojs-adapter.d.ts +38 -0
  36. package/dist/src/adapters/videojs-adapter.d.ts.map +1 -0
  37. package/dist/src/adapters/videojs-adapter.js +350 -0
  38. package/dist/src/adapters/videojs-adapter.tsx +470 -0
  39. package/dist/src/assets/mona-loading.gif +0 -0
  40. package/dist/src/components/AnimateLoading.d.ts +9 -0
  41. package/dist/src/components/AnimateLoading.d.ts.map +1 -0
  42. package/dist/src/components/AnimateLoading.js +41 -0
  43. package/dist/src/components/AnimateLoading.tsx +115 -0
  44. package/dist/src/components/LoadingState.d.ts +33 -0
  45. package/dist/src/components/LoadingState.d.ts.map +1 -0
  46. package/dist/src/components/LoadingState.js +111 -0
  47. package/dist/src/components/LoadingState.tsx +248 -0
  48. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts +17 -0
  49. package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +1 -0
  50. package/dist/src/components/accessibility/keyboard-help-overlay.js +90 -0
  51. package/dist/src/components/accessibility/keyboard-help-overlay.tsx +213 -0
  52. package/dist/src/components/audio-player.d.ts +3 -0
  53. package/dist/src/components/audio-player.d.ts.map +1 -0
  54. package/dist/src/components/audio-player.js +31 -0
  55. package/dist/src/components/audio-player.tsx +85 -0
  56. package/dist/src/components/basic/index.d.ts +26 -0
  57. package/dist/src/components/basic/index.d.ts.map +1 -0
  58. package/dist/src/components/basic/index.js +29 -0
  59. package/dist/src/components/basic/index.ts +37 -0
  60. package/dist/src/components/enhanced/advanced-features.d.ts +45 -0
  61. package/dist/src/components/enhanced/advanced-features.d.ts.map +1 -0
  62. package/dist/src/components/enhanced/advanced-features.js +64 -0
  63. package/dist/src/components/enhanced/advanced-features.tsx +316 -0
  64. package/dist/src/components/enhanced/debug-panel.d.ts +70 -0
  65. package/dist/src/components/enhanced/debug-panel.d.ts.map +1 -0
  66. package/dist/src/components/enhanced/debug-panel.js +94 -0
  67. package/dist/src/components/enhanced/debug-panel.tsx +422 -0
  68. package/dist/src/components/enhanced/enhanced-controls.d.ts +50 -0
  69. package/dist/src/components/enhanced/enhanced-controls.d.ts.map +1 -0
  70. package/dist/src/components/enhanced/enhanced-controls.js +233 -0
  71. package/dist/src/components/enhanced/enhanced-controls.tsx +600 -0
  72. package/dist/src/components/enhanced/enhanced-media-player.d.ts +26 -0
  73. package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +1 -0
  74. package/dist/src/components/enhanced/enhanced-media-player.js +316 -0
  75. package/dist/src/components/enhanced/enhanced-media-player.tsx +509 -0
  76. package/dist/src/components/enhanced/error-handling.d.ts +36 -0
  77. package/dist/src/components/enhanced/error-handling.d.ts.map +1 -0
  78. package/dist/src/components/enhanced/error-handling.js +153 -0
  79. package/dist/src/components/enhanced/error-handling.tsx +345 -0
  80. package/dist/src/components/enhanced/index.d.ts +7 -0
  81. package/dist/src/components/enhanced/index.d.ts.map +1 -0
  82. package/dist/src/components/enhanced/index.js +10 -0
  83. package/dist/src/components/enhanced/index.ts +39 -0
  84. package/dist/src/components/enhanced/media-player-enhanced.d.ts +21 -0
  85. package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +1 -0
  86. package/dist/src/components/enhanced/media-player-enhanced.js +250 -0
  87. package/dist/src/components/enhanced/media-player-enhanced.tsx +349 -0
  88. package/dist/src/components/examples/basic-video-player.d.ts +10 -0
  89. package/dist/src/components/examples/basic-video-player.d.ts.map +1 -0
  90. package/dist/src/components/examples/basic-video-player.js +16 -0
  91. package/dist/src/components/examples/basic-video-player.tsx +55 -0
  92. package/dist/src/components/examples/custom-controls-example.d.ts +10 -0
  93. package/dist/src/components/examples/custom-controls-example.d.ts.map +1 -0
  94. package/dist/src/components/examples/custom-controls-example.js +12 -0
  95. package/dist/src/components/examples/custom-controls-example.tsx +63 -0
  96. package/dist/src/components/examples/enhanced-controls-example.d.ts +9 -0
  97. package/dist/src/components/examples/enhanced-controls-example.d.ts.map +1 -0
  98. package/dist/src/components/examples/enhanced-controls-example.js +18 -0
  99. package/dist/src/components/examples/enhanced-controls-example.tsx +114 -0
  100. package/dist/src/components/examples/enhanced-media-player-example.d.ts +9 -0
  101. package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +1 -0
  102. package/dist/src/components/examples/enhanced-media-player-example.js +13 -0
  103. package/dist/src/components/examples/enhanced-media-player-example.tsx +293 -0
  104. package/dist/src/components/examples/loading-states-demo.d.ts +2 -0
  105. package/dist/src/components/examples/loading-states-demo.d.ts.map +1 -0
  106. package/dist/src/components/examples/loading-states-demo.js +41 -0
  107. package/dist/src/components/examples/loading-states-demo.tsx +142 -0
  108. package/dist/src/components/examples/react-19-demo.d.ts +10 -0
  109. package/dist/src/components/examples/react-19-demo.d.ts.map +1 -0
  110. package/dist/src/components/examples/react-19-demo.js +104 -0
  111. package/dist/src/components/examples/react-19-demo.tsx +381 -0
  112. package/dist/src/components/examples/volume-orientation-demo.d.ts +2 -0
  113. package/dist/src/components/examples/volume-orientation-demo.d.ts.map +1 -0
  114. package/dist/src/components/examples/volume-orientation-demo.js +31 -0
  115. package/dist/src/components/examples/volume-orientation-demo.tsx +114 -0
  116. package/dist/src/components/icon-demo.d.ts +2 -0
  117. package/dist/src/components/icon-demo.d.ts.map +1 -0
  118. package/dist/src/components/icon-demo.js +16 -0
  119. package/dist/src/components/icon-demo.tsx +209 -0
  120. package/dist/src/components/icons/index.d.ts +36 -0
  121. package/dist/src/components/icons/index.d.ts.map +1 -0
  122. package/dist/src/components/icons/index.js +59 -0
  123. package/dist/src/components/icons/index.tsx +166 -0
  124. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +4 -0
  125. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +1 -0
  126. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +3 -0
  127. package/dist/src/components/icons/svg-icons/ArrowLeftIcon.tsx +18 -0
  128. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts +4 -0
  129. package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +1 -0
  130. package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +3 -0
  131. package/dist/src/components/icons/svg-icons/ArrowRightIcon.tsx +18 -0
  132. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts +4 -0
  133. package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +1 -0
  134. package/dist/src/components/icons/svg-icons/AudioIcon.js +4 -0
  135. package/dist/src/components/icons/svg-icons/AudioIcon.tsx +22 -0
  136. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts +4 -0
  137. package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +1 -0
  138. package/dist/src/components/icons/svg-icons/BackwardIcon.js +3 -0
  139. package/dist/src/components/icons/svg-icons/BackwardIcon.tsx +12 -0
  140. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts +4 -0
  141. package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +1 -0
  142. package/dist/src/components/icons/svg-icons/CameraIcon.js +4 -0
  143. package/dist/src/components/icons/svg-icons/CameraIcon.tsx +19 -0
  144. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts +4 -0
  145. package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +1 -0
  146. package/dist/src/components/icons/svg-icons/CheckIcon.js +4 -0
  147. package/dist/src/components/icons/svg-icons/CheckIcon.tsx +19 -0
  148. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts +4 -0
  149. package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +1 -0
  150. package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +5 -0
  151. package/dist/src/components/icons/svg-icons/EnablePiPIcon.tsx +17 -0
  152. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts +4 -0
  153. package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +1 -0
  154. package/dist/src/components/icons/svg-icons/ForwardIcon.js +3 -0
  155. package/dist/src/components/icons/svg-icons/ForwardIcon.tsx +12 -0
  156. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +4 -0
  157. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +1 -0
  158. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +3 -0
  159. package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +23 -0
  160. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +4 -0
  161. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +1 -0
  162. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +3 -0
  163. package/dist/src/components/icons/svg-icons/FullscreenExitIcon.tsx +23 -0
  164. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts +4 -0
  165. package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +1 -0
  166. package/dist/src/components/icons/svg-icons/LoadingIcon.js +3 -0
  167. package/dist/src/components/icons/svg-icons/LoadingIcon.tsx +32 -0
  168. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts +4 -0
  169. package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +1 -0
  170. package/dist/src/components/icons/svg-icons/PauseIcon.js +3 -0
  171. package/dist/src/components/icons/svg-icons/PauseIcon.tsx +23 -0
  172. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts +4 -0
  173. package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +1 -0
  174. package/dist/src/components/icons/svg-icons/PlayIcon.js +3 -0
  175. package/dist/src/components/icons/svg-icons/PlayIcon.tsx +21 -0
  176. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +4 -0
  177. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +1 -0
  178. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +3 -0
  179. package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +23 -0
  180. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts +4 -0
  181. package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +1 -0
  182. package/dist/src/components/icons/svg-icons/QualityIcon.js +3 -0
  183. package/dist/src/components/icons/svg-icons/QualityIcon.tsx +21 -0
  184. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts +4 -0
  185. package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +1 -0
  186. package/dist/src/components/icons/svg-icons/SettingsIcon.js +3 -0
  187. package/dist/src/components/icons/svg-icons/SettingsIcon.tsx +12 -0
  188. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts +4 -0
  189. package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +1 -0
  190. package/dist/src/components/icons/svg-icons/SliderIcon.js +3 -0
  191. package/dist/src/components/icons/svg-icons/SliderIcon.tsx +21 -0
  192. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts +4 -0
  193. package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +1 -0
  194. package/dist/src/components/icons/svg-icons/SubtitleIcon.js +3 -0
  195. package/dist/src/components/icons/svg-icons/SubtitleIcon.tsx +21 -0
  196. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +4 -0
  197. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +1 -0
  198. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +3 -0
  199. package/dist/src/components/icons/svg-icons/SubtitleOffIcon.tsx +25 -0
  200. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts +4 -0
  201. package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +1 -0
  202. package/dist/src/components/icons/svg-icons/UnPiPIcon.js +5 -0
  203. package/dist/src/components/icons/svg-icons/UnPiPIcon.tsx +17 -0
  204. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +4 -0
  205. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +1 -0
  206. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +3 -0
  207. package/dist/src/components/icons/svg-icons/VolumeMutedIcon.tsx +16 -0
  208. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts +4 -0
  209. package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +1 -0
  210. package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +3 -0
  211. package/dist/src/components/icons/svg-icons/VolumeOneIcon.tsx +22 -0
  212. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +4 -0
  213. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +1 -0
  214. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +3 -0
  215. package/dist/src/components/icons/svg-icons/VolumeThreeIcon.tsx +16 -0
  216. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +4 -0
  217. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +1 -0
  218. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +3 -0
  219. package/dist/src/components/icons/svg-icons/VolumeTwoIcon.tsx +16 -0
  220. package/dist/src/components/legacy.d.ts +13 -0
  221. package/dist/src/components/legacy.d.ts.map +1 -0
  222. package/dist/src/components/legacy.js +52 -0
  223. package/dist/src/components/legacy.tsx +93 -0
  224. package/dist/src/components/media-metadata-display.d.ts +11 -0
  225. package/dist/src/components/media-metadata-display.d.ts.map +1 -0
  226. package/dist/src/components/media-metadata-display.js +20 -0
  227. package/dist/src/components/media-metadata-display.tsx +100 -0
  228. package/dist/src/components/media-player-audio.d.ts +9 -0
  229. package/dist/src/components/media-player-audio.d.ts.map +1 -0
  230. package/dist/src/components/media-player-audio.js +18 -0
  231. package/dist/src/components/media-player-audio.tsx +39 -0
  232. package/dist/src/components/media-player-controls.d.ts +23 -0
  233. package/dist/src/components/media-player-controls.d.ts.map +1 -0
  234. package/dist/src/components/media-player-controls.js +150 -0
  235. package/dist/src/components/media-player-controls.tsx +226 -0
  236. package/dist/src/components/media-player-error.d.ts +16 -0
  237. package/dist/src/components/media-player-error.d.ts.map +1 -0
  238. package/dist/src/components/media-player-error.js +85 -0
  239. package/dist/src/components/media-player-error.tsx +163 -0
  240. package/dist/src/components/media-player-fullscreen.d.ts +12 -0
  241. package/dist/src/components/media-player-fullscreen.d.ts.map +1 -0
  242. package/dist/src/components/media-player-fullscreen.js +68 -0
  243. package/dist/src/components/media-player-fullscreen.tsx +109 -0
  244. package/dist/src/components/media-player-hls.d.ts +23 -0
  245. package/dist/src/components/media-player-hls.d.ts.map +1 -0
  246. package/dist/src/components/media-player-hls.js +20 -0
  247. package/dist/src/components/media-player-hls.tsx +111 -0
  248. package/dist/src/components/media-player-loading.d.ts +12 -0
  249. package/dist/src/components/media-player-loading.d.ts.map +1 -0
  250. package/dist/src/components/media-player-loading.js +53 -0
  251. package/dist/src/components/media-player-loading.tsx +76 -0
  252. package/dist/src/components/media-player-play.d.ts +11 -0
  253. package/dist/src/components/media-player-play.d.ts.map +1 -0
  254. package/dist/src/components/media-player-play.js +44 -0
  255. package/dist/src/components/media-player-play.tsx +75 -0
  256. package/dist/src/components/media-player-root.d.ts +28 -0
  257. package/dist/src/components/media-player-root.d.ts.map +1 -0
  258. package/dist/src/components/media-player-root.js +243 -0
  259. package/dist/src/components/media-player-root.tsx +340 -0
  260. package/dist/src/components/media-player-seek.d.ts +15 -0
  261. package/dist/src/components/media-player-seek.d.ts.map +1 -0
  262. package/dist/src/components/media-player-seek.js +92 -0
  263. package/dist/src/components/media-player-seek.tsx +168 -0
  264. package/dist/src/components/media-player-time.d.ts +12 -0
  265. package/dist/src/components/media-player-time.d.ts.map +1 -0
  266. package/dist/src/components/media-player-time.js +57 -0
  267. package/dist/src/components/media-player-time.tsx +99 -0
  268. package/dist/src/components/media-player-tooltip.d.ts +13 -0
  269. package/dist/src/components/media-player-tooltip.d.ts.map +1 -0
  270. package/dist/src/components/media-player-tooltip.js +14 -0
  271. package/dist/src/components/media-player-tooltip.tsx +58 -0
  272. package/dist/src/components/media-player-video.d.ts +9 -0
  273. package/dist/src/components/media-player-video.d.ts.map +1 -0
  274. package/dist/src/components/media-player-video.js +18 -0
  275. package/dist/src/components/media-player-video.tsx +39 -0
  276. package/dist/src/components/media-player-volume.d.ts +13 -0
  277. package/dist/src/components/media-player-volume.d.ts.map +1 -0
  278. package/dist/src/components/media-player-volume.js +88 -0
  279. package/dist/src/components/media-player-volume.tsx +155 -0
  280. package/dist/src/components/media-player.d.ts +3 -0
  281. package/dist/src/components/media-player.d.ts.map +1 -0
  282. package/dist/src/components/media-player.js +67 -0
  283. package/dist/src/components/media-player.tsx +257 -0
  284. package/dist/src/components/media-suspense.d.ts +78 -0
  285. package/dist/src/components/media-suspense.d.ts.map +1 -0
  286. package/dist/src/components/media-suspense.js +173 -0
  287. package/dist/src/components/media-suspense.tsx +362 -0
  288. package/dist/src/components/player-settings-form.d.ts +8 -0
  289. package/dist/src/components/player-settings-form.d.ts.map +1 -0
  290. package/dist/src/components/player-settings-form.js +46 -0
  291. package/dist/src/components/player-settings-form.tsx +163 -0
  292. package/dist/src/components/react-player-wrapper.d.ts +64 -0
  293. package/dist/src/components/react-player-wrapper.d.ts.map +1 -0
  294. package/dist/src/components/react-player-wrapper.js +163 -0
  295. package/dist/src/components/react-player-wrapper.tsx +651 -0
  296. package/dist/src/components/simple-video-player.d.ts +9 -0
  297. package/dist/src/components/simple-video-player.d.ts.map +1 -0
  298. package/dist/src/components/simple-video-player.js +41 -0
  299. package/dist/src/components/simple-video-player.tsx +60 -0
  300. package/dist/src/components/ui/enhanced-seek-bar.d.ts +3 -0
  301. package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +1 -0
  302. package/dist/src/components/ui/enhanced-seek-bar.js +112 -0
  303. package/dist/src/components/ui/enhanced-seek-bar.tsx +235 -0
  304. package/dist/src/components/ui/fullscreen-button.d.ts +3 -0
  305. package/dist/src/components/ui/fullscreen-button.d.ts.map +1 -0
  306. package/dist/src/components/ui/fullscreen-button.js +21 -0
  307. package/dist/src/components/ui/fullscreen-button.tsx +60 -0
  308. package/dist/src/components/ui/media-resource-preloader.d.ts +21 -0
  309. package/dist/src/components/ui/media-resource-preloader.d.ts.map +1 -0
  310. package/dist/src/components/ui/media-resource-preloader.js +295 -0
  311. package/dist/src/components/ui/media-resource-preloader.tsx +393 -0
  312. package/dist/src/components/ui/play-button.d.ts +3 -0
  313. package/dist/src/components/ui/play-button.d.ts.map +1 -0
  314. package/dist/src/components/ui/play-button.js +26 -0
  315. package/dist/src/components/ui/play-button.tsx +107 -0
  316. package/dist/src/components/ui/seek-bar.d.ts +3 -0
  317. package/dist/src/components/ui/seek-bar.d.ts.map +1 -0
  318. package/dist/src/components/ui/seek-bar.js +54 -0
  319. package/dist/src/components/ui/seek-bar.tsx +161 -0
  320. package/dist/src/components/ui/time-display.d.ts +3 -0
  321. package/dist/src/components/ui/time-display.d.ts.map +1 -0
  322. package/dist/src/components/ui/time-display.js +18 -0
  323. package/dist/src/components/ui/time-display.tsx +40 -0
  324. package/dist/src/components/ui/volume-control.d.ts +3 -0
  325. package/dist/src/components/ui/volume-control.d.ts.map +1 -0
  326. package/dist/src/components/ui/volume-control.js +71 -0
  327. package/dist/src/components/ui/volume-control.tsx +143 -0
  328. package/dist/src/components/unified/base-media-player.d.ts +18 -0
  329. package/dist/src/components/unified/base-media-player.d.ts.map +1 -0
  330. package/dist/src/components/unified/base-media-player.js +104 -0
  331. package/dist/src/components/unified/base-media-player.tsx +246 -0
  332. package/dist/src/components/unified/media-player.d.ts +37 -0
  333. package/dist/src/components/unified/media-player.d.ts.map +1 -0
  334. package/dist/src/components/unified/media-player.js +41 -0
  335. package/dist/src/components/unified/media-player.tsx +75 -0
  336. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +42 -0
  337. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +1 -0
  338. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +322 -0
  339. package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +561 -0
  340. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +44 -0
  341. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +1 -0
  342. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +280 -0
  343. package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +552 -0
  344. package/dist/src/components/variants/minimal/MinimalControls.d.ts +19 -0
  345. package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +1 -0
  346. package/dist/src/components/variants/minimal/MinimalControls.js +19 -0
  347. package/dist/src/components/variants/minimal/MinimalControls.tsx +142 -0
  348. package/dist/src/components/variants/minimal/MinimalLoading.d.ts +10 -0
  349. package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +1 -0
  350. package/dist/src/components/variants/minimal/MinimalLoading.js +6 -0
  351. package/dist/src/components/variants/minimal/MinimalLoading.tsx +32 -0
  352. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts +38 -0
  353. package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +1 -0
  354. package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +135 -0
  355. package/dist/src/components/variants/minimal/MinimalMediaPlayer.tsx +315 -0
  356. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts +11 -0
  357. package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +1 -0
  358. package/dist/src/components/variants/minimal/MinimalOverlay.js +15 -0
  359. package/dist/src/components/variants/minimal/MinimalOverlay.tsx +64 -0
  360. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts +9 -0
  361. package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +1 -0
  362. package/dist/src/components/variants/minimal/MinimalPlayButton.js +29 -0
  363. package/dist/src/components/variants/minimal/MinimalPlayButton.tsx +65 -0
  364. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts +7 -0
  365. package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +1 -0
  366. package/dist/src/components/variants/minimal/MinimalSeekBar.js +73 -0
  367. package/dist/src/components/variants/minimal/MinimalSeekBar.tsx +150 -0
  368. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts +7 -0
  369. package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +1 -0
  370. package/dist/src/components/variants/minimal/MinimalVolumeControl.js +29 -0
  371. package/dist/src/components/variants/minimal/MinimalVolumeControl.tsx +80 -0
  372. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +22 -0
  373. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +1 -0
  374. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +51 -0
  375. package/dist/src/components/variants/minimal/SimpleMinimalPlayer.tsx +209 -0
  376. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts +7 -0
  377. package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +1 -0
  378. package/dist/src/components/variants/minimal/components/CenterPlayButton.js +8 -0
  379. package/dist/src/components/variants/minimal/components/CenterPlayButton.tsx +22 -0
  380. package/dist/src/components/variants/minimal/components/ControlBar.d.ts +43 -0
  381. package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +1 -0
  382. package/dist/src/components/variants/minimal/components/ControlBar.js +10 -0
  383. package/dist/src/components/variants/minimal/components/ControlBar.tsx +146 -0
  384. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +24 -0
  385. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +1 -0
  386. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +68 -0
  387. package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +361 -0
  388. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts +9 -0
  389. package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +1 -0
  390. package/dist/src/components/variants/minimal/components/PlaybackControls.js +9 -0
  391. package/dist/src/components/variants/minimal/components/PlaybackControls.tsx +51 -0
  392. package/dist/src/components/variants/minimal/components/RightControls.d.ts +25 -0
  393. package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +1 -0
  394. package/dist/src/components/variants/minimal/components/RightControls.js +40 -0
  395. package/dist/src/components/variants/minimal/components/RightControls.tsx +173 -0
  396. package/dist/src/components/variants/minimal/components/SeekBar.d.ts +11 -0
  397. package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +1 -0
  398. package/dist/src/components/variants/minimal/components/SeekBar.js +43 -0
  399. package/dist/src/components/variants/minimal/components/SeekBar.tsx +131 -0
  400. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts +9 -0
  401. package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +1 -0
  402. package/dist/src/components/variants/minimal/components/SettingsDropdown.js +18 -0
  403. package/dist/src/components/variants/minimal/components/SettingsDropdown.tsx +70 -0
  404. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts +7 -0
  405. package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +1 -0
  406. package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +6 -0
  407. package/dist/src/components/variants/minimal/components/SubtitleDisplay.tsx +21 -0
  408. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts +7 -0
  409. package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +1 -0
  410. package/dist/src/components/variants/minimal/components/TimeDisplay.js +5 -0
  411. package/dist/src/components/variants/minimal/components/TimeDisplay.tsx +18 -0
  412. package/dist/src/components/variants/minimal/components/VideoElement.d.ts +13 -0
  413. package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +1 -0
  414. package/dist/src/components/variants/minimal/components/VideoElement.js +4 -0
  415. package/dist/src/components/variants/minimal/components/VideoElement.tsx +40 -0
  416. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts +13 -0
  417. package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +1 -0
  418. package/dist/src/components/variants/minimal/components/VolumeControl.js +99 -0
  419. package/dist/src/components/variants/minimal/components/VolumeControl.tsx +217 -0
  420. package/dist/src/components/variants/minimal/index.d.ts +17 -0
  421. package/dist/src/components/variants/minimal/index.d.ts.map +1 -0
  422. package/dist/src/components/variants/minimal/index.js +8 -0
  423. package/dist/src/components/variants/minimal/index.ts +23 -0
  424. package/dist/src/components/video-player.d.ts +3 -0
  425. package/dist/src/components/video-player.d.ts.map +1 -0
  426. package/dist/src/components/video-player.js +38 -0
  427. package/dist/src/components/video-player.tsx +100 -0
  428. package/dist/src/context/error-handling.d.ts +72 -0
  429. package/dist/src/context/error-handling.d.ts.map +1 -0
  430. package/dist/src/context/error-handling.js +300 -0
  431. package/dist/src/context/error-handling.ts +394 -0
  432. package/dist/src/context/media-context.d.ts +104 -0
  433. package/dist/src/context/media-context.d.ts.map +1 -0
  434. package/dist/src/context/media-context.js +121 -0
  435. package/dist/src/context/media-context.tsx +208 -0
  436. package/dist/src/context/media-provider.d.ts +26 -0
  437. package/dist/src/context/media-provider.d.ts.map +1 -0
  438. package/dist/src/context/media-provider.js +164 -0
  439. package/dist/src/context/media-provider.tsx +265 -0
  440. package/dist/src/context/media-store.d.ts +33 -0
  441. package/dist/src/context/media-store.d.ts.map +1 -0
  442. package/dist/src/context/media-store.js +273 -0
  443. package/dist/src/context/media-store.ts +379 -0
  444. package/dist/src/context/persistence.d.ts +83 -0
  445. package/dist/src/context/persistence.d.ts.map +1 -0
  446. package/dist/src/context/persistence.js +356 -0
  447. package/dist/src/context/persistence.ts +453 -0
  448. package/dist/src/core/events/event-system.d.ts +170 -0
  449. package/dist/src/core/events/event-system.d.ts.map +1 -0
  450. package/dist/src/core/events/event-system.js +288 -0
  451. package/dist/src/core/events/event-system.ts +442 -0
  452. package/dist/src/core/events/hooks.d.ts +33 -0
  453. package/dist/src/core/events/hooks.d.ts.map +1 -0
  454. package/dist/src/core/events/hooks.js +198 -0
  455. package/dist/src/core/events/hooks.ts +302 -0
  456. package/dist/src/core/events/index.d.ts +6 -0
  457. package/dist/src/core/events/index.d.ts.map +1 -0
  458. package/dist/src/core/events/index.js +7 -0
  459. package/dist/src/core/events/index.ts +22 -0
  460. package/dist/src/core/events/middleware.d.ts +39 -0
  461. package/dist/src/core/events/middleware.d.ts.map +1 -0
  462. package/dist/src/core/events/middleware.js +219 -0
  463. package/dist/src/core/events/middleware.ts +269 -0
  464. package/dist/src/core/index.d.ts +8 -0
  465. package/dist/src/core/index.d.ts.map +1 -0
  466. package/dist/src/core/index.js +15 -0
  467. package/dist/src/core/index.ts +22 -0
  468. package/dist/src/core/optimization/bundle-optimizer.d.ts +44 -0
  469. package/dist/src/core/optimization/bundle-optimizer.d.ts.map +1 -0
  470. package/dist/src/core/optimization/bundle-optimizer.js +217 -0
  471. package/dist/src/core/optimization/bundle-optimizer.tsx +308 -0
  472. package/dist/src/core/performance/cicd.d.ts +8 -0
  473. package/dist/src/core/performance/cicd.d.ts.map +1 -0
  474. package/dist/src/core/performance/cicd.js +83 -0
  475. package/dist/src/core/performance/cicd.ts +96 -0
  476. package/dist/src/core/performance/index.d.ts +10 -0
  477. package/dist/src/core/performance/index.d.ts.map +1 -0
  478. package/dist/src/core/performance/index.js +14 -0
  479. package/dist/src/core/performance/index.ts +38 -0
  480. package/dist/src/core/performance/media-loading-optimizer.d.ts +105 -0
  481. package/dist/src/core/performance/media-loading-optimizer.d.ts.map +1 -0
  482. package/dist/src/core/performance/media-loading-optimizer.js +404 -0
  483. package/dist/src/core/performance/media-loading-optimizer.ts +538 -0
  484. package/dist/src/core/performance/performance-budgets.d.ts +68 -0
  485. package/dist/src/core/performance/performance-budgets.d.ts.map +1 -0
  486. package/dist/src/core/performance/performance-budgets.js +326 -0
  487. package/dist/src/core/performance/performance-budgets.ts +432 -0
  488. package/dist/src/core/performance/performance-monitor.d.ts +95 -0
  489. package/dist/src/core/performance/performance-monitor.d.ts.map +1 -0
  490. package/dist/src/core/performance/performance-monitor.js +297 -0
  491. package/dist/src/core/performance/performance-monitor.tsx +476 -0
  492. package/dist/src/core/performance/performance-testing.d.ts +69 -0
  493. package/dist/src/core/performance/performance-testing.d.ts.map +1 -0
  494. package/dist/src/core/performance/performance-testing.js +314 -0
  495. package/dist/src/core/performance/performance-testing.ts +459 -0
  496. package/dist/src/core/plugins/base-plugin.d.ts +52 -0
  497. package/dist/src/core/plugins/base-plugin.d.ts.map +1 -0
  498. package/dist/src/core/plugins/base-plugin.js +151 -0
  499. package/dist/src/core/plugins/base-plugin.ts +224 -0
  500. package/dist/src/core/plugins/enhanced-plugin-system.d.ts +160 -0
  501. package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +1 -0
  502. package/dist/src/core/plugins/enhanced-plugin-system.js +305 -0
  503. package/dist/src/core/plugins/enhanced-plugin-system.ts +417 -0
  504. package/dist/src/core/plugins/examples/analytics-plugin.d.ts +30 -0
  505. package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +1 -0
  506. package/dist/src/core/plugins/examples/analytics-plugin.js +191 -0
  507. package/dist/src/core/plugins/examples/analytics-plugin.ts +242 -0
  508. package/dist/src/core/plugins/index.d.ts +8 -0
  509. package/dist/src/core/plugins/index.d.ts.map +1 -0
  510. package/dist/src/core/plugins/index.js +9 -0
  511. package/dist/src/core/plugins/index.ts +39 -0
  512. package/dist/src/core/plugins/registry.d.ts +31 -0
  513. package/dist/src/core/plugins/registry.d.ts.map +1 -0
  514. package/dist/src/core/plugins/registry.js +261 -0
  515. package/dist/src/core/plugins/registry.ts +327 -0
  516. package/dist/src/core/plugins/types.d.ts +101 -0
  517. package/dist/src/core/plugins/types.d.ts.map +1 -0
  518. package/dist/src/core/plugins/types.js +31 -0
  519. package/dist/src/core/plugins/types.ts +159 -0
  520. package/dist/src/core/plugins/utils.d.ts +38 -0
  521. package/dist/src/core/plugins/utils.d.ts.map +1 -0
  522. package/dist/src/core/plugins/utils.js +274 -0
  523. package/dist/src/core/plugins/utils.ts +316 -0
  524. package/dist/src/core/progressive-loading.d.ts +88 -0
  525. package/dist/src/core/progressive-loading.d.ts.map +1 -0
  526. package/dist/src/core/progressive-loading.js +239 -0
  527. package/dist/src/core/progressive-loading.tsx +322 -0
  528. package/dist/src/core/providers/enhanced-hls-provider.d.ts +50 -0
  529. package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +1 -0
  530. package/dist/src/core/providers/enhanced-hls-provider.js +273 -0
  531. package/dist/src/core/providers/enhanced-hls-provider.ts +308 -0
  532. package/dist/src/core/providers/service-provider.d.ts +49 -0
  533. package/dist/src/core/providers/service-provider.d.ts.map +1 -0
  534. package/dist/src/core/providers/service-provider.js +105 -0
  535. package/dist/src/core/providers/service-provider.tsx +168 -0
  536. package/dist/src/core/utils.d.ts +25 -0
  537. package/dist/src/core/utils.d.ts.map +1 -0
  538. package/dist/src/core/utils.js +21 -0
  539. package/dist/src/core/utils.tsx +38 -0
  540. package/dist/src/features/media-session/media-session-manager.d.ts +132 -0
  541. package/dist/src/features/media-session/media-session-manager.d.ts.map +1 -0
  542. package/dist/src/features/media-session/media-session-manager.js +331 -0
  543. package/dist/src/features/media-session/media-session-manager.ts +429 -0
  544. package/dist/src/features/picture-in-picture/pip-manager.d.ts +94 -0
  545. package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +1 -0
  546. package/dist/src/features/picture-in-picture/pip-manager.js +353 -0
  547. package/dist/src/features/picture-in-picture/pip-manager.ts +429 -0
  548. package/dist/src/features/playlist/playlist-manager.d.ts +208 -0
  549. package/dist/src/features/playlist/playlist-manager.d.ts.map +1 -0
  550. package/dist/src/features/playlist/playlist-manager.js +475 -0
  551. package/dist/src/features/playlist/playlist-manager.ts +606 -0
  552. package/dist/src/features/subtitles/subtitle-manager.d.ts +136 -0
  553. package/dist/src/features/subtitles/subtitle-manager.d.ts.map +1 -0
  554. package/dist/src/features/subtitles/subtitle-manager.js +335 -0
  555. package/dist/src/features/subtitles/subtitle-manager.ts +441 -0
  556. package/dist/src/features/subtitles/subtitle-parser.d.ts +60 -0
  557. package/dist/src/features/subtitles/subtitle-parser.d.ts.map +1 -0
  558. package/dist/src/features/subtitles/subtitle-parser.js +217 -0
  559. package/dist/src/features/subtitles/subtitle-parser.ts +280 -0
  560. package/dist/src/features/thumbnails/thumbnail-generator.d.ts +136 -0
  561. package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +1 -0
  562. package/dist/src/features/thumbnails/thumbnail-generator.js +388 -0
  563. package/dist/src/features/thumbnails/thumbnail-generator.ts +519 -0
  564. package/dist/src/hooks/accessibility/index.d.ts +5 -0
  565. package/dist/src/hooks/accessibility/index.d.ts.map +1 -0
  566. package/dist/src/hooks/accessibility/index.js +4 -0
  567. package/dist/src/hooks/accessibility/index.ts +27 -0
  568. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts +14 -0
  569. package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +1 -0
  570. package/dist/src/hooks/accessibility/use-accessibility-preferences.js +156 -0
  571. package/dist/src/hooks/accessibility/use-accessibility-preferences.ts +188 -0
  572. package/dist/src/hooks/accessibility/use-focus-management.d.ts +31 -0
  573. package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +1 -0
  574. package/dist/src/hooks/accessibility/use-focus-management.js +142 -0
  575. package/dist/src/hooks/accessibility/use-focus-management.ts +176 -0
  576. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +38 -0
  577. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +1 -0
  578. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +101 -0
  579. package/dist/src/hooks/accessibility/use-keyboard-shortcuts.ts +144 -0
  580. package/dist/src/hooks/accessibility/use-screen-reader.d.ts +22 -0
  581. package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +1 -0
  582. package/dist/src/hooks/accessibility/use-screen-reader.js +148 -0
  583. package/dist/src/hooks/accessibility/use-screen-reader.ts +182 -0
  584. package/dist/src/hooks/core/index.d.ts +18 -0
  585. package/dist/src/hooks/core/index.d.ts.map +1 -0
  586. package/dist/src/hooks/core/index.js +19 -0
  587. package/dist/src/hooks/core/index.ts +47 -0
  588. package/dist/src/hooks/legacy.d.ts +18 -0
  589. package/dist/src/hooks/legacy.d.ts.map +1 -0
  590. package/dist/src/hooks/legacy.js +17 -0
  591. package/dist/src/hooks/legacy.ts +27 -0
  592. package/dist/src/hooks/use-enhanced-media-player.d.ts +88 -0
  593. package/dist/src/hooks/use-enhanced-media-player.d.ts.map +1 -0
  594. package/dist/src/hooks/use-enhanced-media-player.js +395 -0
  595. package/dist/src/hooks/use-enhanced-media-player.ts +485 -0
  596. package/dist/src/hooks/use-intelligent-preloading.d.ts +66 -0
  597. package/dist/src/hooks/use-intelligent-preloading.d.ts.map +1 -0
  598. package/dist/src/hooks/use-intelligent-preloading.js +258 -0
  599. package/dist/src/hooks/use-intelligent-preloading.ts +358 -0
  600. package/dist/src/hooks/use-keyboard-controls.d.ts +13 -0
  601. package/dist/src/hooks/use-keyboard-controls.d.ts.map +1 -0
  602. package/dist/src/hooks/use-keyboard-controls.js +83 -0
  603. package/dist/src/hooks/use-keyboard-controls.ts +115 -0
  604. package/dist/src/hooks/use-media-actions.d.ts +62 -0
  605. package/dist/src/hooks/use-media-actions.d.ts.map +1 -0
  606. package/dist/src/hooks/use-media-actions.js +121 -0
  607. package/dist/src/hooks/use-media-actions.ts +175 -0
  608. package/dist/src/hooks/use-media-metadata.d.ts +11 -0
  609. package/dist/src/hooks/use-media-metadata.d.ts.map +1 -0
  610. package/dist/src/hooks/use-media-metadata.js +74 -0
  611. package/dist/src/hooks/use-media-metadata.ts +89 -0
  612. package/dist/src/hooks/use-media-optimistic.d.ts +36 -0
  613. package/dist/src/hooks/use-media-optimistic.d.ts.map +1 -0
  614. package/dist/src/hooks/use-media-optimistic.js +205 -0
  615. package/dist/src/hooks/use-media-optimistic.ts +270 -0
  616. package/dist/src/hooks/use-media-player.d.ts +31 -0
  617. package/dist/src/hooks/use-media-player.d.ts.map +1 -0
  618. package/dist/src/hooks/use-media-player.js +251 -0
  619. package/dist/src/hooks/use-media-player.ts +312 -0
  620. package/dist/src/hooks/use-media-state.d.ts +17 -0
  621. package/dist/src/hooks/use-media-state.d.ts.map +1 -0
  622. package/dist/src/hooks/use-media-state.js +162 -0
  623. package/dist/src/hooks/use-media-state.ts +190 -0
  624. package/dist/src/hooks/use-memory-optimization.d.ts +40 -0
  625. package/dist/src/hooks/use-memory-optimization.d.ts.map +1 -0
  626. package/dist/src/hooks/use-memory-optimization.js +288 -0
  627. package/dist/src/hooks/use-memory-optimization.ts +358 -0
  628. package/dist/src/hooks/use-optimistic-controls.d.ts +22 -0
  629. package/dist/src/hooks/use-optimistic-controls.d.ts.map +1 -0
  630. package/dist/src/hooks/use-optimistic-controls.js +60 -0
  631. package/dist/src/hooks/use-optimistic-controls.ts +92 -0
  632. package/dist/src/hooks/use-optimized-media.d.ts +46 -0
  633. package/dist/src/hooks/use-optimized-media.d.ts.map +1 -0
  634. package/dist/src/hooks/use-optimized-media.js +211 -0
  635. package/dist/src/hooks/use-optimized-media.ts +263 -0
  636. package/dist/src/hooks/use-touch-gestures.d.ts +47 -0
  637. package/dist/src/hooks/use-touch-gestures.d.ts.map +1 -0
  638. package/dist/src/hooks/use-touch-gestures.js +289 -0
  639. package/dist/src/hooks/use-touch-gestures.ts +417 -0
  640. package/dist/src/hooks/useEnhancedSubtitles.d.ts +39 -0
  641. package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +1 -0
  642. package/dist/src/hooks/useEnhancedSubtitles.js +205 -0
  643. package/dist/src/hooks/useEnhancedSubtitles.ts +258 -0
  644. package/dist/src/hooks/useKeyboardShortcuts.d.ts +10 -0
  645. package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  646. package/dist/src/hooks/useKeyboardShortcuts.js +59 -0
  647. package/dist/src/hooks/useKeyboardShortcuts.ts +74 -0
  648. package/dist/src/hooks/useMediaControls.d.ts +9 -0
  649. package/dist/src/hooks/useMediaControls.d.ts.map +1 -0
  650. package/dist/src/hooks/useMediaControls.js +44 -0
  651. package/dist/src/hooks/useMediaControls.ts +52 -0
  652. package/dist/src/hooks/useScreenshot.d.ts +4 -0
  653. package/dist/src/hooks/useScreenshot.d.ts.map +1 -0
  654. package/dist/src/hooks/useScreenshot.js +56 -0
  655. package/dist/src/hooks/useScreenshot.ts +57 -0
  656. package/dist/src/hooks/useSubtitles.d.ts +8 -0
  657. package/dist/src/hooks/useSubtitles.d.ts.map +1 -0
  658. package/dist/src/hooks/useSubtitles.js +73 -0
  659. package/dist/src/hooks/useSubtitles.ts +91 -0
  660. package/dist/src/hooks/useVideoPlayer.d.ts +32 -0
  661. package/dist/src/hooks/useVideoPlayer.d.ts.map +1 -0
  662. package/dist/src/hooks/useVideoPlayer.js +184 -0
  663. package/dist/src/hooks/useVideoPlayer.ts +232 -0
  664. package/dist/src/icons/components/FullscreenIcon.d.ts +3 -0
  665. package/dist/src/icons/components/FullscreenIcon.d.ts.map +1 -0
  666. package/dist/src/icons/components/FullscreenIcon.js +11 -0
  667. package/dist/src/icons/components/FullscreenIcon.tsx +37 -0
  668. package/dist/src/icons/components/SettingsIcon.d.ts +3 -0
  669. package/dist/src/icons/components/SettingsIcon.d.ts.map +1 -0
  670. package/dist/src/icons/components/SettingsIcon.js +11 -0
  671. package/dist/src/icons/components/SettingsIcon.tsx +38 -0
  672. package/dist/src/icons/components/animated/LoadingIcon.d.ts +3 -0
  673. package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +1 -0
  674. package/dist/src/icons/components/animated/LoadingIcon.js +11 -0
  675. package/dist/src/icons/components/animated/LoadingIcon.tsx +43 -0
  676. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts +7 -0
  677. package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +1 -0
  678. package/dist/src/icons/components/animated/PlayPauseIcon.js +9 -0
  679. package/dist/src/icons/components/animated/PlayPauseIcon.tsx +50 -0
  680. package/dist/src/icons/components/media/PauseIcon.d.ts +3 -0
  681. package/dist/src/icons/components/media/PauseIcon.d.ts.map +1 -0
  682. package/dist/src/icons/components/media/PauseIcon.js +12 -0
  683. package/dist/src/icons/components/media/PauseIcon.tsx +39 -0
  684. package/dist/src/icons/components/media/PlayIcon.d.ts +3 -0
  685. package/dist/src/icons/components/media/PlayIcon.d.ts.map +1 -0
  686. package/dist/src/icons/components/media/PlayIcon.js +12 -0
  687. package/dist/src/icons/components/media/PlayIcon.tsx +38 -0
  688. package/dist/src/icons/components/volume/VolumeIcon.d.ts +3 -0
  689. package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +1 -0
  690. package/dist/src/icons/components/volume/VolumeIcon.js +11 -0
  691. package/dist/src/icons/components/volume/VolumeIcon.tsx +39 -0
  692. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts +3 -0
  693. package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +1 -0
  694. package/dist/src/icons/components/volume/VolumeOffIcon.js +11 -0
  695. package/dist/src/icons/components/volume/VolumeOffIcon.tsx +39 -0
  696. package/dist/src/icons/index.d.ts +28 -0
  697. package/dist/src/icons/index.d.ts.map +1 -0
  698. package/dist/src/icons/index.js +45 -0
  699. package/dist/src/icons/index.ts +56 -0
  700. package/dist/src/icons/provider.d.ts +13 -0
  701. package/dist/src/icons/provider.d.ts.map +1 -0
  702. package/dist/src/icons/provider.js +37 -0
  703. package/dist/src/icons/provider.tsx +64 -0
  704. package/dist/src/icons/types.d.ts +18 -0
  705. package/dist/src/icons/types.d.ts.map +1 -0
  706. package/dist/src/icons/types.js +1 -0
  707. package/dist/src/icons/types.ts +40 -0
  708. package/dist/src/index-enhanced.d.ts +13 -0
  709. package/dist/src/index-enhanced.d.ts.map +1 -0
  710. package/dist/src/index-enhanced.js +16 -0
  711. package/dist/src/index-enhanced.ts +35 -0
  712. package/dist/src/index-legacy.d.ts +81 -0
  713. package/dist/src/index-legacy.d.ts.map +1 -0
  714. package/dist/src/index-legacy.js +97 -0
  715. package/dist/src/index-legacy.ts +326 -0
  716. package/dist/src/index.css +102 -0
  717. package/dist/src/index.d.ts +38 -0
  718. package/dist/src/index.d.ts.map +1 -0
  719. package/dist/src/index.js +90 -0
  720. package/dist/src/index.minimal.d.ts +2 -0
  721. package/dist/src/index.minimal.d.ts.map +1 -0
  722. package/dist/src/index.minimal.js +3 -0
  723. package/dist/src/index.minimal.ts +4 -0
  724. package/dist/src/index.ts +216 -0
  725. package/dist/src/lib/deprecation.d.ts +7 -0
  726. package/dist/src/lib/deprecation.d.ts.map +1 -0
  727. package/dist/src/lib/deprecation.js +31 -0
  728. package/dist/src/lib/deprecation.ts +51 -0
  729. package/dist/src/lib/format-time.d.ts +9 -0
  730. package/dist/src/lib/format-time.d.ts.map +1 -0
  731. package/dist/src/lib/format-time.js +32 -0
  732. package/dist/src/lib/format-time.ts +37 -0
  733. package/dist/src/lib/index.d.ts +3 -0
  734. package/dist/src/lib/index.d.ts.map +1 -0
  735. package/dist/src/lib/index.js +3 -0
  736. package/dist/src/lib/index.ts +3 -0
  737. package/dist/src/lib/utils.d.ts +3 -0
  738. package/dist/src/lib/utils.d.ts.map +1 -0
  739. package/dist/src/lib/utils.js +5 -0
  740. package/dist/src/lib/utils.ts +6 -0
  741. package/dist/src/styles/globals.css +462 -0
  742. package/dist/src/styles/minimal-player.css +589 -0
  743. package/dist/src/styles/pixel-art.css +46 -0
  744. package/dist/src/styles/videojs.css +100 -0
  745. package/dist/src/test/setup.d.ts +2 -0
  746. package/dist/src/test/setup.d.ts.map +1 -0
  747. package/dist/src/test/setup.js +65 -0
  748. package/dist/src/test/setup.ts +79 -0
  749. package/dist/src/types/events.d.ts +41 -0
  750. package/dist/src/types/events.d.ts.map +1 -0
  751. package/dist/src/types/events.js +2 -0
  752. package/dist/src/types/events.ts +47 -0
  753. package/dist/src/types/formats.d.ts +45 -0
  754. package/dist/src/types/formats.d.ts.map +1 -0
  755. package/dist/src/types/formats.js +63 -0
  756. package/dist/src/types/formats.ts +95 -0
  757. package/dist/src/types/index.d.ts +128 -0
  758. package/dist/src/types/index.d.ts.map +1 -0
  759. package/dist/src/types/index.js +4 -0
  760. package/dist/src/types/index.ts +225 -0
  761. package/dist/src/types/videojs-plugins.d.ts +14 -0
  762. package/dist/styles/minimal-player.css +589 -0
  763. package/dist/utils-Db13763z.cjs +9 -0
  764. package/dist/utils-Db13763z.cjs.map +1 -0
  765. package/dist/{utils-BnscpYYd.js → utils-nTO4AnHo.js} +210 -199
  766. package/dist/utils-nTO4AnHo.js.map +1 -0
  767. package/dist/utils.js +1 -1
  768. package/dist/utils.mjs +1 -1
  769. package/package.json +7 -4
  770. package/src/adapters/videojs-adapter.d.ts +38 -0
  771. package/src/adapters/videojs-adapter.d.ts.map +1 -0
  772. package/src/adapters/videojs-adapter.js +350 -0
  773. package/src/components/AnimateLoading.d.ts +9 -0
  774. package/src/components/AnimateLoading.d.ts.map +1 -0
  775. package/src/components/AnimateLoading.js +41 -0
  776. package/src/components/AnimateLoading.tsx +1 -1
  777. package/src/components/LoadingState.d.ts +33 -0
  778. package/src/components/LoadingState.d.ts.map +1 -0
  779. package/src/components/LoadingState.js +111 -0
  780. package/src/components/accessibility/keyboard-help-overlay.d.ts +17 -0
  781. package/src/components/accessibility/keyboard-help-overlay.d.ts.map +1 -0
  782. package/src/components/accessibility/keyboard-help-overlay.js +90 -0
  783. package/src/components/audio-player.d.ts +3 -0
  784. package/src/components/audio-player.d.ts.map +1 -0
  785. package/src/components/audio-player.js +31 -0
  786. package/src/components/basic/index.d.ts +26 -0
  787. package/src/components/basic/index.d.ts.map +1 -0
  788. package/src/components/basic/index.js +29 -0
  789. package/src/components/enhanced/advanced-features.d.ts +45 -0
  790. package/src/components/enhanced/advanced-features.d.ts.map +1 -0
  791. package/src/components/enhanced/advanced-features.js +64 -0
  792. package/src/components/enhanced/debug-panel.d.ts +70 -0
  793. package/src/components/enhanced/debug-panel.d.ts.map +1 -0
  794. package/src/components/enhanced/debug-panel.js +94 -0
  795. package/src/components/enhanced/debug-panel.tsx +1 -1
  796. package/src/components/enhanced/enhanced-controls.d.ts +50 -0
  797. package/src/components/enhanced/enhanced-controls.d.ts.map +1 -0
  798. package/src/components/enhanced/enhanced-controls.js +233 -0
  799. package/src/components/enhanced/enhanced-media-player.d.ts +26 -0
  800. package/src/components/enhanced/enhanced-media-player.d.ts.map +1 -0
  801. package/src/components/enhanced/enhanced-media-player.js +316 -0
  802. package/src/components/enhanced/error-handling.d.ts +36 -0
  803. package/src/components/enhanced/error-handling.d.ts.map +1 -0
  804. package/src/components/enhanced/error-handling.js +153 -0
  805. package/src/components/enhanced/index.d.ts +7 -0
  806. package/src/components/enhanced/index.d.ts.map +1 -0
  807. package/src/components/enhanced/index.js +10 -0
  808. package/src/components/enhanced/media-player-enhanced.d.ts +21 -0
  809. package/src/components/enhanced/media-player-enhanced.d.ts.map +1 -0
  810. package/src/components/enhanced/media-player-enhanced.js +250 -0
  811. package/src/components/examples/basic-video-player.d.ts +10 -0
  812. package/src/components/examples/basic-video-player.d.ts.map +1 -0
  813. package/src/components/examples/basic-video-player.js +16 -0
  814. package/src/components/examples/custom-controls-example.d.ts +10 -0
  815. package/src/components/examples/custom-controls-example.d.ts.map +1 -0
  816. package/src/components/examples/custom-controls-example.js +12 -0
  817. package/src/components/examples/enhanced-controls-example.d.ts +9 -0
  818. package/src/components/examples/enhanced-controls-example.d.ts.map +1 -0
  819. package/src/components/examples/enhanced-controls-example.js +18 -0
  820. package/src/components/examples/enhanced-media-player-example.d.ts +9 -0
  821. package/src/components/examples/enhanced-media-player-example.d.ts.map +1 -0
  822. package/src/components/examples/enhanced-media-player-example.js +13 -0
  823. package/src/components/examples/loading-states-demo.d.ts +2 -0
  824. package/src/components/examples/loading-states-demo.d.ts.map +1 -0
  825. package/src/components/examples/loading-states-demo.js +41 -0
  826. package/src/components/examples/react-19-demo.d.ts +10 -0
  827. package/src/components/examples/react-19-demo.d.ts.map +1 -0
  828. package/src/components/examples/react-19-demo.js +104 -0
  829. package/src/components/examples/volume-orientation-demo.d.ts +2 -0
  830. package/src/components/examples/volume-orientation-demo.d.ts.map +1 -0
  831. package/src/components/examples/volume-orientation-demo.js +31 -0
  832. package/src/components/icon-demo.d.ts +2 -0
  833. package/src/components/icon-demo.d.ts.map +1 -0
  834. package/src/components/icon-demo.js +16 -0
  835. package/src/components/icons/index.d.ts +36 -0
  836. package/src/components/icons/index.d.ts.map +1 -0
  837. package/src/components/icons/index.js +59 -0
  838. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +4 -0
  839. package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +1 -0
  840. package/src/components/icons/svg-icons/ArrowLeftIcon.js +3 -0
  841. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts +4 -0
  842. package/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +1 -0
  843. package/src/components/icons/svg-icons/ArrowRightIcon.js +3 -0
  844. package/src/components/icons/svg-icons/AudioIcon.d.ts +4 -0
  845. package/src/components/icons/svg-icons/AudioIcon.d.ts.map +1 -0
  846. package/src/components/icons/svg-icons/AudioIcon.js +4 -0
  847. package/src/components/icons/svg-icons/BackwardIcon.d.ts +4 -0
  848. package/src/components/icons/svg-icons/BackwardIcon.d.ts.map +1 -0
  849. package/src/components/icons/svg-icons/BackwardIcon.js +3 -0
  850. package/src/components/icons/svg-icons/CameraIcon.d.ts +4 -0
  851. package/src/components/icons/svg-icons/CameraIcon.d.ts.map +1 -0
  852. package/src/components/icons/svg-icons/CameraIcon.js +4 -0
  853. package/src/components/icons/svg-icons/CheckIcon.d.ts +4 -0
  854. package/src/components/icons/svg-icons/CheckIcon.d.ts.map +1 -0
  855. package/src/components/icons/svg-icons/CheckIcon.js +4 -0
  856. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts +4 -0
  857. package/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +1 -0
  858. package/src/components/icons/svg-icons/EnablePiPIcon.js +5 -0
  859. package/src/components/icons/svg-icons/ForwardIcon.d.ts +4 -0
  860. package/src/components/icons/svg-icons/ForwardIcon.d.ts.map +1 -0
  861. package/src/components/icons/svg-icons/ForwardIcon.js +3 -0
  862. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +4 -0
  863. package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +1 -0
  864. package/src/components/icons/svg-icons/FullscreenEnterIcon.js +3 -0
  865. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +4 -0
  866. package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +1 -0
  867. package/src/components/icons/svg-icons/FullscreenExitIcon.js +3 -0
  868. package/src/components/icons/svg-icons/LoadingIcon.d.ts +4 -0
  869. package/src/components/icons/svg-icons/LoadingIcon.d.ts.map +1 -0
  870. package/src/components/icons/svg-icons/LoadingIcon.js +3 -0
  871. package/src/components/icons/svg-icons/PauseIcon.d.ts +4 -0
  872. package/src/components/icons/svg-icons/PauseIcon.d.ts.map +1 -0
  873. package/src/components/icons/svg-icons/PauseIcon.js +3 -0
  874. package/src/components/icons/svg-icons/PlayIcon.d.ts +4 -0
  875. package/src/components/icons/svg-icons/PlayIcon.d.ts.map +1 -0
  876. package/src/components/icons/svg-icons/PlayIcon.js +3 -0
  877. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +4 -0
  878. package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +1 -0
  879. package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +3 -0
  880. package/src/components/icons/svg-icons/QualityIcon.d.ts +4 -0
  881. package/src/components/icons/svg-icons/QualityIcon.d.ts.map +1 -0
  882. package/src/components/icons/svg-icons/QualityIcon.js +3 -0
  883. package/src/components/icons/svg-icons/SettingsIcon.d.ts +4 -0
  884. package/src/components/icons/svg-icons/SettingsIcon.d.ts.map +1 -0
  885. package/src/components/icons/svg-icons/SettingsIcon.js +3 -0
  886. package/src/components/icons/svg-icons/SliderIcon.d.ts +4 -0
  887. package/src/components/icons/svg-icons/SliderIcon.d.ts.map +1 -0
  888. package/src/components/icons/svg-icons/SliderIcon.js +3 -0
  889. package/src/components/icons/svg-icons/SubtitleIcon.d.ts +4 -0
  890. package/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +1 -0
  891. package/src/components/icons/svg-icons/SubtitleIcon.js +3 -0
  892. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +4 -0
  893. package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +1 -0
  894. package/src/components/icons/svg-icons/SubtitleOffIcon.js +3 -0
  895. package/src/components/icons/svg-icons/UnPiPIcon.d.ts +4 -0
  896. package/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +1 -0
  897. package/src/components/icons/svg-icons/UnPiPIcon.js +5 -0
  898. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +4 -0
  899. package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +1 -0
  900. package/src/components/icons/svg-icons/VolumeMutedIcon.js +3 -0
  901. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts +4 -0
  902. package/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +1 -0
  903. package/src/components/icons/svg-icons/VolumeOneIcon.js +3 -0
  904. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +4 -0
  905. package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +1 -0
  906. package/src/components/icons/svg-icons/VolumeThreeIcon.js +3 -0
  907. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +4 -0
  908. package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +1 -0
  909. package/src/components/icons/svg-icons/VolumeTwoIcon.js +3 -0
  910. package/src/components/legacy.d.ts +13 -0
  911. package/src/components/legacy.d.ts.map +1 -0
  912. package/src/components/legacy.js +52 -0
  913. package/src/components/media-metadata-display.d.ts +11 -0
  914. package/src/components/media-metadata-display.d.ts.map +1 -0
  915. package/src/components/media-metadata-display.js +20 -0
  916. package/src/components/media-player-audio.d.ts +9 -0
  917. package/src/components/media-player-audio.d.ts.map +1 -0
  918. package/src/components/media-player-audio.js +18 -0
  919. package/src/components/media-player-controls.d.ts +23 -0
  920. package/src/components/media-player-controls.d.ts.map +1 -0
  921. package/src/components/media-player-controls.js +150 -0
  922. package/src/components/media-player-error.d.ts +16 -0
  923. package/src/components/media-player-error.d.ts.map +1 -0
  924. package/src/components/media-player-error.js +85 -0
  925. package/src/components/media-player-fullscreen.d.ts +12 -0
  926. package/src/components/media-player-fullscreen.d.ts.map +1 -0
  927. package/src/components/media-player-fullscreen.js +68 -0
  928. package/src/components/media-player-hls.d.ts +23 -0
  929. package/src/components/media-player-hls.d.ts.map +1 -0
  930. package/src/components/media-player-hls.js +20 -0
  931. package/src/components/media-player-loading.d.ts +12 -0
  932. package/src/components/media-player-loading.d.ts.map +1 -0
  933. package/src/components/media-player-loading.js +53 -0
  934. package/src/components/media-player-play.d.ts +11 -0
  935. package/src/components/media-player-play.d.ts.map +1 -0
  936. package/src/components/media-player-play.js +44 -0
  937. package/src/components/media-player-root.d.ts +28 -0
  938. package/src/components/media-player-root.d.ts.map +1 -0
  939. package/src/components/media-player-root.js +243 -0
  940. package/src/components/media-player-seek.d.ts +15 -0
  941. package/src/components/media-player-seek.d.ts.map +1 -0
  942. package/src/components/media-player-seek.js +92 -0
  943. package/src/components/media-player-time.d.ts +12 -0
  944. package/src/components/media-player-time.d.ts.map +1 -0
  945. package/src/components/media-player-time.js +57 -0
  946. package/src/components/media-player-tooltip.d.ts +13 -0
  947. package/src/components/media-player-tooltip.d.ts.map +1 -0
  948. package/src/components/media-player-tooltip.js +14 -0
  949. package/src/components/media-player-video.d.ts +9 -0
  950. package/src/components/media-player-video.d.ts.map +1 -0
  951. package/src/components/media-player-video.js +18 -0
  952. package/src/components/media-player-volume.d.ts +13 -0
  953. package/src/components/media-player-volume.d.ts.map +1 -0
  954. package/src/components/media-player-volume.js +88 -0
  955. package/src/components/media-player.d.ts +3 -0
  956. package/src/components/media-player.d.ts.map +1 -0
  957. package/src/components/media-player.js +67 -0
  958. package/src/components/media-player.tsx +2 -2
  959. package/src/components/media-suspense.d.ts +78 -0
  960. package/src/components/media-suspense.d.ts.map +1 -0
  961. package/src/components/media-suspense.js +173 -0
  962. package/src/components/player-settings-form.d.ts +8 -0
  963. package/src/components/player-settings-form.d.ts.map +1 -0
  964. package/src/components/player-settings-form.js +46 -0
  965. package/src/components/react-player-wrapper.d.ts +64 -0
  966. package/src/components/react-player-wrapper.d.ts.map +1 -0
  967. package/src/components/react-player-wrapper.js +163 -0
  968. package/src/components/simple-video-player.d.ts +9 -0
  969. package/src/components/simple-video-player.d.ts.map +1 -0
  970. package/src/components/simple-video-player.js +41 -0
  971. package/src/components/ui/enhanced-seek-bar.d.ts +3 -0
  972. package/src/components/ui/enhanced-seek-bar.d.ts.map +1 -0
  973. package/src/components/ui/enhanced-seek-bar.js +112 -0
  974. package/src/components/ui/fullscreen-button.d.ts +3 -0
  975. package/src/components/ui/fullscreen-button.d.ts.map +1 -0
  976. package/src/components/ui/fullscreen-button.js +21 -0
  977. package/src/components/ui/media-resource-preloader.d.ts +21 -0
  978. package/src/components/ui/media-resource-preloader.d.ts.map +1 -0
  979. package/src/components/ui/media-resource-preloader.js +295 -0
  980. package/src/components/ui/media-resource-preloader.tsx +9 -11
  981. package/src/components/ui/play-button.d.ts +3 -0
  982. package/src/components/ui/play-button.d.ts.map +1 -0
  983. package/src/components/ui/play-button.js +26 -0
  984. package/src/components/ui/seek-bar.d.ts +3 -0
  985. package/src/components/ui/seek-bar.d.ts.map +1 -0
  986. package/src/components/ui/seek-bar.js +54 -0
  987. package/src/components/ui/seek-bar.tsx +1 -1
  988. package/src/components/ui/time-display.d.ts +3 -0
  989. package/src/components/ui/time-display.d.ts.map +1 -0
  990. package/src/components/ui/time-display.js +18 -0
  991. package/src/components/ui/volume-control.d.ts +3 -0
  992. package/src/components/ui/volume-control.d.ts.map +1 -0
  993. package/src/components/ui/volume-control.js +71 -0
  994. package/src/components/unified/base-media-player.d.ts +18 -0
  995. package/src/components/unified/base-media-player.d.ts.map +1 -0
  996. package/src/components/unified/base-media-player.js +104 -0
  997. package/src/components/unified/media-player.d.ts +37 -0
  998. package/src/components/unified/media-player.d.ts.map +1 -0
  999. package/src/components/unified/media-player.js +41 -0
  1000. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +42 -0
  1001. package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +1 -0
  1002. package/src/components/variants/minimal/AccessibleMinimalPlayer.js +322 -0
  1003. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +44 -0
  1004. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +1 -0
  1005. package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +280 -0
  1006. package/src/components/variants/minimal/MinimalControls.d.ts +19 -0
  1007. package/src/components/variants/minimal/MinimalControls.d.ts.map +1 -0
  1008. package/src/components/variants/minimal/MinimalControls.js +19 -0
  1009. package/src/components/variants/minimal/MinimalLoading.d.ts +10 -0
  1010. package/src/components/variants/minimal/MinimalLoading.d.ts.map +1 -0
  1011. package/src/components/variants/minimal/MinimalLoading.js +6 -0
  1012. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts +38 -0
  1013. package/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +1 -0
  1014. package/src/components/variants/minimal/MinimalMediaPlayer.js +135 -0
  1015. package/src/components/variants/minimal/MinimalOverlay.d.ts +11 -0
  1016. package/src/components/variants/minimal/MinimalOverlay.d.ts.map +1 -0
  1017. package/src/components/variants/minimal/MinimalOverlay.js +15 -0
  1018. package/src/components/variants/minimal/MinimalPlayButton.d.ts +9 -0
  1019. package/src/components/variants/minimal/MinimalPlayButton.d.ts.map +1 -0
  1020. package/src/components/variants/minimal/MinimalPlayButton.js +29 -0
  1021. package/src/components/variants/minimal/MinimalSeekBar.d.ts +7 -0
  1022. package/src/components/variants/minimal/MinimalSeekBar.d.ts.map +1 -0
  1023. package/src/components/variants/minimal/MinimalSeekBar.js +73 -0
  1024. package/src/components/variants/minimal/MinimalVolumeControl.d.ts +7 -0
  1025. package/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +1 -0
  1026. package/src/components/variants/minimal/MinimalVolumeControl.js +29 -0
  1027. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +22 -0
  1028. package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +1 -0
  1029. package/src/components/variants/minimal/SimpleMinimalPlayer.js +51 -0
  1030. package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -1
  1031. package/src/components/variants/minimal/components/CenterPlayButton.d.ts +7 -0
  1032. package/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +1 -0
  1033. package/src/components/variants/minimal/components/CenterPlayButton.js +8 -0
  1034. package/src/components/variants/minimal/components/ControlBar.d.ts +43 -0
  1035. package/src/components/variants/minimal/components/ControlBar.d.ts.map +1 -0
  1036. package/src/components/variants/minimal/components/ControlBar.js +10 -0
  1037. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +24 -0
  1038. package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +1 -0
  1039. package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +68 -0
  1040. package/src/components/variants/minimal/components/PlaybackControls.d.ts +9 -0
  1041. package/src/components/variants/minimal/components/PlaybackControls.d.ts.map +1 -0
  1042. package/src/components/variants/minimal/components/PlaybackControls.js +9 -0
  1043. package/src/components/variants/minimal/components/RightControls.d.ts +25 -0
  1044. package/src/components/variants/minimal/components/RightControls.d.ts.map +1 -0
  1045. package/src/components/variants/minimal/components/RightControls.js +40 -0
  1046. package/src/components/variants/minimal/components/SeekBar.d.ts +11 -0
  1047. package/src/components/variants/minimal/components/SeekBar.d.ts.map +1 -0
  1048. package/src/components/variants/minimal/components/SeekBar.js +43 -0
  1049. package/src/components/variants/minimal/components/SettingsDropdown.d.ts +9 -0
  1050. package/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +1 -0
  1051. package/src/components/variants/minimal/components/SettingsDropdown.js +18 -0
  1052. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts +7 -0
  1053. package/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +1 -0
  1054. package/src/components/variants/minimal/components/SubtitleDisplay.js +6 -0
  1055. package/src/components/variants/minimal/components/TimeDisplay.d.ts +7 -0
  1056. package/src/components/variants/minimal/components/TimeDisplay.d.ts.map +1 -0
  1057. package/src/components/variants/minimal/components/TimeDisplay.js +5 -0
  1058. package/src/components/variants/minimal/components/VideoElement.d.ts +13 -0
  1059. package/src/components/variants/minimal/components/VideoElement.d.ts.map +1 -0
  1060. package/src/components/variants/minimal/components/VideoElement.js +4 -0
  1061. package/src/components/variants/minimal/components/VolumeControl.d.ts +13 -0
  1062. package/src/components/variants/minimal/components/VolumeControl.d.ts.map +1 -0
  1063. package/src/components/variants/minimal/components/VolumeControl.js +99 -0
  1064. package/src/components/variants/minimal/index.d.ts +17 -0
  1065. package/src/components/variants/minimal/index.d.ts.map +1 -0
  1066. package/src/components/variants/minimal/index.js +8 -0
  1067. package/src/components/video-player.d.ts +3 -0
  1068. package/src/components/video-player.d.ts.map +1 -0
  1069. package/src/components/video-player.js +38 -0
  1070. package/src/context/error-handling.d.ts +72 -0
  1071. package/src/context/error-handling.d.ts.map +1 -0
  1072. package/src/context/error-handling.js +300 -0
  1073. package/src/context/media-context.d.ts +104 -0
  1074. package/src/context/media-context.d.ts.map +1 -0
  1075. package/src/context/media-context.js +121 -0
  1076. package/src/context/media-provider.d.ts +26 -0
  1077. package/src/context/media-provider.d.ts.map +1 -0
  1078. package/src/context/media-provider.js +164 -0
  1079. package/src/context/media-store.d.ts +33 -0
  1080. package/src/context/media-store.d.ts.map +1 -0
  1081. package/src/context/media-store.js +273 -0
  1082. package/src/context/persistence.d.ts +83 -0
  1083. package/src/context/persistence.d.ts.map +1 -0
  1084. package/src/context/persistence.js +356 -0
  1085. package/src/core/events/event-system.d.ts +170 -0
  1086. package/src/core/events/event-system.d.ts.map +1 -0
  1087. package/src/core/events/event-system.js +288 -0
  1088. package/src/core/events/hooks.d.ts +33 -0
  1089. package/src/core/events/hooks.d.ts.map +1 -0
  1090. package/src/core/events/hooks.js +198 -0
  1091. package/src/core/events/index.d.ts +6 -0
  1092. package/src/core/events/index.d.ts.map +1 -0
  1093. package/src/core/events/index.js +7 -0
  1094. package/src/core/events/middleware.d.ts +39 -0
  1095. package/src/core/events/middleware.d.ts.map +1 -0
  1096. package/src/core/events/middleware.js +219 -0
  1097. package/src/core/index.d.ts +8 -0
  1098. package/src/core/index.d.ts.map +1 -0
  1099. package/src/core/index.js +15 -0
  1100. package/src/core/optimization/bundle-optimizer.d.ts +44 -0
  1101. package/src/core/optimization/bundle-optimizer.d.ts.map +1 -0
  1102. package/src/core/optimization/bundle-optimizer.js +217 -0
  1103. package/src/core/performance/cicd.d.ts +8 -0
  1104. package/src/core/performance/cicd.d.ts.map +1 -0
  1105. package/src/core/performance/cicd.js +83 -0
  1106. package/src/core/performance/index.d.ts +10 -0
  1107. package/src/core/performance/index.d.ts.map +1 -0
  1108. package/src/core/performance/index.js +14 -0
  1109. package/src/core/performance/media-loading-optimizer.d.ts +105 -0
  1110. package/src/core/performance/media-loading-optimizer.d.ts.map +1 -0
  1111. package/src/core/performance/media-loading-optimizer.js +404 -0
  1112. package/src/core/performance/performance-budgets.d.ts +68 -0
  1113. package/src/core/performance/performance-budgets.d.ts.map +1 -0
  1114. package/src/core/performance/performance-budgets.js +326 -0
  1115. package/src/core/performance/performance-monitor.d.ts +95 -0
  1116. package/src/core/performance/performance-monitor.d.ts.map +1 -0
  1117. package/src/core/performance/performance-monitor.js +297 -0
  1118. package/src/core/performance/performance-testing.d.ts +69 -0
  1119. package/src/core/performance/performance-testing.d.ts.map +1 -0
  1120. package/src/core/performance/performance-testing.js +314 -0
  1121. package/src/core/plugins/base-plugin.d.ts +52 -0
  1122. package/src/core/plugins/base-plugin.d.ts.map +1 -0
  1123. package/src/core/plugins/base-plugin.js +151 -0
  1124. package/src/core/plugins/enhanced-plugin-system.d.ts +160 -0
  1125. package/src/core/plugins/enhanced-plugin-system.d.ts.map +1 -0
  1126. package/src/core/plugins/enhanced-plugin-system.js +305 -0
  1127. package/src/core/plugins/enhanced-plugin-system.ts +14 -8
  1128. package/src/core/plugins/examples/analytics-plugin.d.ts +30 -0
  1129. package/src/core/plugins/examples/analytics-plugin.d.ts.map +1 -0
  1130. package/src/core/plugins/examples/analytics-plugin.js +191 -0
  1131. package/src/core/plugins/index.d.ts +8 -0
  1132. package/src/core/plugins/index.d.ts.map +1 -0
  1133. package/src/core/plugins/index.js +9 -0
  1134. package/src/core/plugins/registry.d.ts +31 -0
  1135. package/src/core/plugins/registry.d.ts.map +1 -0
  1136. package/src/core/plugins/registry.js +261 -0
  1137. package/src/core/plugins/types.d.ts +101 -0
  1138. package/src/core/plugins/types.d.ts.map +1 -0
  1139. package/src/core/plugins/types.js +31 -0
  1140. package/src/core/plugins/utils.d.ts +38 -0
  1141. package/src/core/plugins/utils.d.ts.map +1 -0
  1142. package/src/core/plugins/utils.js +274 -0
  1143. package/src/core/progressive-loading.d.ts +88 -0
  1144. package/src/core/progressive-loading.d.ts.map +1 -0
  1145. package/src/core/progressive-loading.js +239 -0
  1146. package/src/core/providers/enhanced-hls-provider.d.ts +50 -0
  1147. package/src/core/providers/enhanced-hls-provider.d.ts.map +1 -0
  1148. package/src/core/providers/enhanced-hls-provider.js +273 -0
  1149. package/src/core/providers/enhanced-hls-provider.ts +22 -53
  1150. package/src/core/providers/service-provider.d.ts +49 -0
  1151. package/src/core/providers/service-provider.d.ts.map +1 -0
  1152. package/src/core/providers/service-provider.js +105 -0
  1153. package/src/core/utils.d.ts +25 -0
  1154. package/src/core/utils.d.ts.map +1 -0
  1155. package/src/core/utils.js +21 -0
  1156. package/src/features/media-session/media-session-manager.d.ts +132 -0
  1157. package/src/features/media-session/media-session-manager.d.ts.map +1 -0
  1158. package/src/features/media-session/media-session-manager.js +331 -0
  1159. package/src/features/picture-in-picture/pip-manager.d.ts +94 -0
  1160. package/src/features/picture-in-picture/pip-manager.d.ts.map +1 -0
  1161. package/src/features/picture-in-picture/pip-manager.js +353 -0
  1162. package/src/features/playlist/playlist-manager.d.ts +208 -0
  1163. package/src/features/playlist/playlist-manager.d.ts.map +1 -0
  1164. package/src/features/playlist/playlist-manager.js +475 -0
  1165. package/src/features/subtitles/subtitle-manager.d.ts +136 -0
  1166. package/src/features/subtitles/subtitle-manager.d.ts.map +1 -0
  1167. package/src/features/subtitles/subtitle-manager.js +335 -0
  1168. package/src/features/subtitles/subtitle-parser.d.ts +60 -0
  1169. package/src/features/subtitles/subtitle-parser.d.ts.map +1 -0
  1170. package/src/features/subtitles/subtitle-parser.js +217 -0
  1171. package/src/features/thumbnails/thumbnail-generator.d.ts +136 -0
  1172. package/src/features/thumbnails/thumbnail-generator.d.ts.map +1 -0
  1173. package/src/features/thumbnails/thumbnail-generator.js +388 -0
  1174. package/src/hooks/accessibility/index.d.ts +5 -0
  1175. package/src/hooks/accessibility/index.d.ts.map +1 -0
  1176. package/src/hooks/accessibility/index.js +4 -0
  1177. package/src/hooks/accessibility/use-accessibility-preferences.d.ts +14 -0
  1178. package/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +1 -0
  1179. package/src/hooks/accessibility/use-accessibility-preferences.js +156 -0
  1180. package/src/hooks/accessibility/use-focus-management.d.ts +31 -0
  1181. package/src/hooks/accessibility/use-focus-management.d.ts.map +1 -0
  1182. package/src/hooks/accessibility/use-focus-management.js +142 -0
  1183. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +38 -0
  1184. package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +1 -0
  1185. package/src/hooks/accessibility/use-keyboard-shortcuts.js +101 -0
  1186. package/src/hooks/accessibility/use-screen-reader.d.ts +22 -0
  1187. package/src/hooks/accessibility/use-screen-reader.d.ts.map +1 -0
  1188. package/src/hooks/accessibility/use-screen-reader.js +148 -0
  1189. package/src/hooks/core/index.d.ts +18 -0
  1190. package/src/hooks/core/index.d.ts.map +1 -0
  1191. package/src/hooks/core/index.js +19 -0
  1192. package/src/hooks/legacy.d.ts +18 -0
  1193. package/src/hooks/legacy.d.ts.map +1 -0
  1194. package/src/hooks/legacy.js +17 -0
  1195. package/src/hooks/use-enhanced-media-player.d.ts +88 -0
  1196. package/src/hooks/use-enhanced-media-player.d.ts.map +1 -0
  1197. package/src/hooks/use-enhanced-media-player.js +395 -0
  1198. package/src/hooks/use-enhanced-media-player.ts +19 -2
  1199. package/src/hooks/use-intelligent-preloading.d.ts +66 -0
  1200. package/src/hooks/use-intelligent-preloading.d.ts.map +1 -0
  1201. package/src/hooks/use-intelligent-preloading.js +258 -0
  1202. package/src/hooks/use-keyboard-controls.d.ts +13 -0
  1203. package/src/hooks/use-keyboard-controls.d.ts.map +1 -0
  1204. package/src/hooks/use-keyboard-controls.js +83 -0
  1205. package/src/hooks/use-media-actions.d.ts +62 -0
  1206. package/src/hooks/use-media-actions.d.ts.map +1 -0
  1207. package/src/hooks/use-media-actions.js +121 -0
  1208. package/src/hooks/use-media-metadata.d.ts +11 -0
  1209. package/src/hooks/use-media-metadata.d.ts.map +1 -0
  1210. package/src/hooks/use-media-metadata.js +74 -0
  1211. package/src/hooks/use-media-optimistic.d.ts +36 -0
  1212. package/src/hooks/use-media-optimistic.d.ts.map +1 -0
  1213. package/src/hooks/use-media-optimistic.js +205 -0
  1214. package/src/hooks/use-media-player.d.ts +31 -0
  1215. package/src/hooks/use-media-player.d.ts.map +1 -0
  1216. package/src/hooks/use-media-player.js +251 -0
  1217. package/src/hooks/use-media-state.d.ts +17 -0
  1218. package/src/hooks/use-media-state.d.ts.map +1 -0
  1219. package/src/hooks/use-media-state.js +162 -0
  1220. package/src/hooks/use-memory-optimization.d.ts +40 -0
  1221. package/src/hooks/use-memory-optimization.d.ts.map +1 -0
  1222. package/src/hooks/use-memory-optimization.js +288 -0
  1223. package/src/hooks/use-optimistic-controls.d.ts +22 -0
  1224. package/src/hooks/use-optimistic-controls.d.ts.map +1 -0
  1225. package/src/hooks/use-optimistic-controls.js +60 -0
  1226. package/src/hooks/use-optimized-media.d.ts +46 -0
  1227. package/src/hooks/use-optimized-media.d.ts.map +1 -0
  1228. package/src/hooks/use-optimized-media.js +211 -0
  1229. package/src/hooks/use-touch-gestures.d.ts +47 -0
  1230. package/src/hooks/use-touch-gestures.d.ts.map +1 -0
  1231. package/src/hooks/use-touch-gestures.js +289 -0
  1232. package/src/hooks/useEnhancedSubtitles.d.ts +39 -0
  1233. package/src/hooks/useEnhancedSubtitles.d.ts.map +1 -0
  1234. package/src/hooks/useEnhancedSubtitles.js +205 -0
  1235. package/src/hooks/useKeyboardShortcuts.d.ts +10 -0
  1236. package/src/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  1237. package/src/hooks/useKeyboardShortcuts.js +59 -0
  1238. package/src/hooks/useMediaControls.d.ts +9 -0
  1239. package/src/hooks/useMediaControls.d.ts.map +1 -0
  1240. package/src/hooks/useMediaControls.js +44 -0
  1241. package/src/hooks/useScreenshot.d.ts +4 -0
  1242. package/src/hooks/useScreenshot.d.ts.map +1 -0
  1243. package/src/hooks/useScreenshot.js +56 -0
  1244. package/src/hooks/useSubtitles.d.ts +8 -0
  1245. package/src/hooks/useSubtitles.d.ts.map +1 -0
  1246. package/src/hooks/useSubtitles.js +73 -0
  1247. package/src/hooks/useVideoPlayer.d.ts +32 -0
  1248. package/src/hooks/useVideoPlayer.d.ts.map +1 -0
  1249. package/src/hooks/useVideoPlayer.js +184 -0
  1250. package/src/icons/components/FullscreenIcon.d.ts +3 -0
  1251. package/src/icons/components/FullscreenIcon.d.ts.map +1 -0
  1252. package/src/icons/components/FullscreenIcon.js +11 -0
  1253. package/src/icons/components/SettingsIcon.d.ts +3 -0
  1254. package/src/icons/components/SettingsIcon.d.ts.map +1 -0
  1255. package/src/icons/components/SettingsIcon.js +11 -0
  1256. package/src/icons/components/animated/LoadingIcon.d.ts +3 -0
  1257. package/src/icons/components/animated/LoadingIcon.d.ts.map +1 -0
  1258. package/src/icons/components/animated/LoadingIcon.js +11 -0
  1259. package/src/icons/components/animated/PlayPauseIcon.d.ts +7 -0
  1260. package/src/icons/components/animated/PlayPauseIcon.d.ts.map +1 -0
  1261. package/src/icons/components/animated/PlayPauseIcon.js +9 -0
  1262. package/src/icons/components/media/PauseIcon.d.ts +3 -0
  1263. package/src/icons/components/media/PauseIcon.d.ts.map +1 -0
  1264. package/src/icons/components/media/PauseIcon.js +12 -0
  1265. package/src/icons/components/media/PlayIcon.d.ts +3 -0
  1266. package/src/icons/components/media/PlayIcon.d.ts.map +1 -0
  1267. package/src/icons/components/media/PlayIcon.js +12 -0
  1268. package/src/icons/components/volume/VolumeIcon.d.ts +3 -0
  1269. package/src/icons/components/volume/VolumeIcon.d.ts.map +1 -0
  1270. package/src/icons/components/volume/VolumeIcon.js +11 -0
  1271. package/src/icons/components/volume/VolumeOffIcon.d.ts +3 -0
  1272. package/src/icons/components/volume/VolumeOffIcon.d.ts.map +1 -0
  1273. package/src/icons/components/volume/VolumeOffIcon.js +11 -0
  1274. package/src/icons/index.d.ts +28 -0
  1275. package/src/icons/index.d.ts.map +1 -0
  1276. package/src/icons/index.js +45 -0
  1277. package/src/icons/provider.d.ts +13 -0
  1278. package/src/icons/provider.d.ts.map +1 -0
  1279. package/src/icons/provider.js +37 -0
  1280. package/src/icons/types.d.ts +18 -0
  1281. package/src/icons/types.d.ts.map +1 -0
  1282. package/src/icons/types.js +1 -0
  1283. package/src/index-enhanced.d.ts +13 -0
  1284. package/src/index-enhanced.d.ts.map +1 -0
  1285. package/src/index-enhanced.js +16 -0
  1286. package/src/index-legacy.d.ts +81 -0
  1287. package/src/index-legacy.d.ts.map +1 -0
  1288. package/src/index-legacy.js +97 -0
  1289. package/src/index.d.ts +38 -0
  1290. package/src/index.d.ts.map +1 -0
  1291. package/src/index.js +90 -0
  1292. package/src/index.minimal.d.ts +2 -0
  1293. package/src/index.minimal.d.ts.map +1 -0
  1294. package/src/index.minimal.js +3 -0
  1295. package/src/index.minimal.ts +4 -0
  1296. package/src/lib/deprecation.d.ts +7 -0
  1297. package/src/lib/deprecation.d.ts.map +1 -0
  1298. package/src/lib/deprecation.js +31 -0
  1299. package/src/lib/format-time.d.ts +9 -0
  1300. package/src/lib/format-time.d.ts.map +1 -0
  1301. package/src/lib/format-time.js +32 -0
  1302. package/src/lib/index.d.ts +3 -0
  1303. package/src/lib/index.d.ts.map +1 -0
  1304. package/src/lib/index.js +3 -0
  1305. package/src/lib/utils.d.ts +3 -0
  1306. package/src/lib/utils.d.ts.map +1 -0
  1307. package/src/lib/utils.js +5 -0
  1308. package/src/test/setup.d.ts +2 -0
  1309. package/src/test/setup.d.ts.map +1 -0
  1310. package/src/test/setup.js +65 -0
  1311. package/src/types/events.d.ts +41 -0
  1312. package/src/types/events.d.ts.map +1 -0
  1313. package/src/types/events.js +2 -0
  1314. package/src/types/formats.d.ts +45 -0
  1315. package/src/types/formats.d.ts.map +1 -0
  1316. package/src/types/formats.js +63 -0
  1317. package/src/types/index.d.ts +128 -0
  1318. package/src/types/index.d.ts.map +1 -0
  1319. package/src/types/index.js +4 -0
  1320. package/src/types/index.ts +40 -5
  1321. package/dist/context-BMteAJDN.js.map +0 -1
  1322. package/dist/context-DCJ_scmO.cjs +0 -23
  1323. package/dist/context-DCJ_scmO.cjs.map +0 -1
  1324. package/dist/hooks-C_r8wexn.cjs +0 -4
  1325. package/dist/hooks-C_r8wexn.cjs.map +0 -1
  1326. package/dist/hooks-Da2wVXlF.js +0 -1630
  1327. package/dist/hooks-Da2wVXlF.js.map +0 -1
  1328. package/dist/utils-BnscpYYd.js.map +0 -1
  1329. package/dist/utils-D_czS_0K.cjs +0 -9
  1330. package/dist/utils-D_czS_0K.cjs.map +0 -1
@@ -0,0 +1,45 @@
1
+ export declare const SUPPORTED_VIDEO_FORMATS: readonly ["mp4", "webm", "ogv", "mov", "avi", "m4v", "mkv"];
2
+ export declare const SUPPORTED_AUDIO_FORMATS: readonly ["mp3", "aac", "ogg", "wav", "flac", "m4a", "weba"];
3
+ export declare const VIDEO_MIME_TYPES: {
4
+ readonly mp4: "video/mp4";
5
+ readonly webm: "video/webm";
6
+ readonly ogv: "video/ogg";
7
+ readonly mov: "video/quicktime";
8
+ readonly avi: "video/x-msvideo";
9
+ readonly m4v: "video/x-m4v";
10
+ readonly mkv: "video/x-matroska";
11
+ };
12
+ export declare const AUDIO_MIME_TYPES: {
13
+ readonly mp3: "audio/mpeg";
14
+ readonly aac: "audio/aac";
15
+ readonly ogg: "audio/ogg";
16
+ readonly wav: "audio/wav";
17
+ readonly flac: "audio/flac";
18
+ readonly m4a: "audio/mp4";
19
+ readonly weba: "audio/webm";
20
+ };
21
+ export type VideoFormat = typeof SUPPORTED_VIDEO_FORMATS[number];
22
+ export type AudioFormat = typeof SUPPORTED_AUDIO_FORMATS[number];
23
+ export type MediaFormat = VideoFormat | AudioFormat;
24
+ export type VideoMimeType = typeof VIDEO_MIME_TYPES[keyof typeof VIDEO_MIME_TYPES];
25
+ export type AudioMimeType = typeof AUDIO_MIME_TYPES[keyof typeof AUDIO_MIME_TYPES];
26
+ export type MediaMimeType = VideoMimeType | AudioMimeType;
27
+ export interface MediaSource {
28
+ src: string;
29
+ type?: MediaMimeType;
30
+ media?: string;
31
+ }
32
+ export interface MediaCapabilities {
33
+ canPlayType: (type: string) => '' | 'maybe' | 'probably';
34
+ supportsFormat: (format: MediaFormat) => boolean;
35
+ supportsMimeType: (mimeType: MediaMimeType) => boolean;
36
+ }
37
+ /**
38
+ * Utility function to detect media type from file extension
39
+ */
40
+ export declare function getMediaTypeFromUrl(url: string): 'video' | 'audio' | 'unknown';
41
+ /**
42
+ * Utility function to get MIME type from file extension
43
+ */
44
+ export declare function getMimeTypeFromUrl(url: string): MediaMimeType | undefined;
45
+ //# sourceMappingURL=formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["formats.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,6DAQ1B,CAAC;AAEX,eAAO,MAAM,uBAAuB,8DAQ1B,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;CAQnB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;CAQnB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG,OAAO,gBAAgB,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AACnF,MAAM,MAAM,aAAa,GAAG,OAAO,gBAAgB,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AACnF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE,GAAG,OAAO,GAAG,UAAU,CAAC;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;IACjD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAY9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAYzE"}
@@ -0,0 +1,63 @@
1
+ // Supported media formats and MIME types
2
+ export const SUPPORTED_VIDEO_FORMATS = [
3
+ 'mp4',
4
+ 'webm',
5
+ 'ogv',
6
+ 'mov',
7
+ 'avi',
8
+ 'm4v',
9
+ 'mkv',
10
+ ];
11
+ export const SUPPORTED_AUDIO_FORMATS = [
12
+ 'mp3',
13
+ 'aac',
14
+ 'ogg',
15
+ 'wav',
16
+ 'flac',
17
+ 'm4a',
18
+ 'weba',
19
+ ];
20
+ export const VIDEO_MIME_TYPES = {
21
+ mp4: 'video/mp4',
22
+ webm: 'video/webm',
23
+ ogv: 'video/ogg',
24
+ mov: 'video/quicktime',
25
+ avi: 'video/x-msvideo',
26
+ m4v: 'video/x-m4v',
27
+ mkv: 'video/x-matroska',
28
+ };
29
+ export const AUDIO_MIME_TYPES = {
30
+ mp3: 'audio/mpeg',
31
+ aac: 'audio/aac',
32
+ ogg: 'audio/ogg',
33
+ wav: 'audio/wav',
34
+ flac: 'audio/flac',
35
+ m4a: 'audio/mp4',
36
+ weba: 'audio/webm',
37
+ };
38
+ /**
39
+ * Utility function to detect media type from file extension
40
+ */
41
+ export function getMediaTypeFromUrl(url) {
42
+ const extension = url.split('.').pop()?.toLowerCase();
43
+ if (extension && SUPPORTED_VIDEO_FORMATS.includes(extension)) {
44
+ return 'video';
45
+ }
46
+ if (extension && SUPPORTED_AUDIO_FORMATS.includes(extension)) {
47
+ return 'audio';
48
+ }
49
+ return 'unknown';
50
+ }
51
+ /**
52
+ * Utility function to get MIME type from file extension
53
+ */
54
+ export function getMimeTypeFromUrl(url) {
55
+ const extension = url.split('.').pop()?.toLowerCase();
56
+ if (extension && extension in VIDEO_MIME_TYPES) {
57
+ return VIDEO_MIME_TYPES[extension];
58
+ }
59
+ if (extension && extension in AUDIO_MIME_TYPES) {
60
+ return AUDIO_MIME_TYPES[extension];
61
+ }
62
+ return undefined;
63
+ }
@@ -0,0 +1,128 @@
1
+ import type { ReactNode } from "react";
2
+ export type { MediaErrorEvent, MediaEventMap, MediaEventType, MediaProgressEvent, MediaTimeUpdateEvent, MediaVolumeChangeEvent } from "./events";
3
+ export { AUDIO_MIME_TYPES, getMediaTypeFromUrl, getMimeTypeFromUrl, SUPPORTED_AUDIO_FORMATS, SUPPORTED_VIDEO_FORMATS, VIDEO_MIME_TYPES } from "./formats";
4
+ export type { AudioFormat, AudioMimeType, MediaCapabilities, MediaFormat, MediaMimeType, MediaSource, VideoFormat, VideoMimeType } from "./formats";
5
+ export type { LoadingVariant, LoadingContext, LoadingSize, LoadingStateProps, CustomLoadingProps } from "../components/LoadingState";
6
+ export { AnimateLoadingWrapper } from "../components/LoadingState";
7
+ export type { BufferedRange, VideoState as EnhancedVideoState, VideoControls } from "../hooks/useVideoPlayer";
8
+ export interface MediaPlayerState {
9
+ isPlaying: boolean;
10
+ currentTime: number;
11
+ duration: number;
12
+ volume: number;
13
+ isMuted: boolean;
14
+ isLoading: boolean;
15
+ isFullscreen: boolean;
16
+ error: string | null;
17
+ buffered: TimeRanges | null;
18
+ isSeeking?: boolean;
19
+ isBuffering?: boolean;
20
+ bufferedRanges?: BufferedRange[];
21
+ }
22
+ export interface MediaPlayerControls {
23
+ play: () => void;
24
+ pause: () => void;
25
+ toggle: () => void;
26
+ seek: (time: number) => void;
27
+ setVolume: (volume: number) => void;
28
+ mute: () => void;
29
+ unmute: () => void;
30
+ toggleMute: () => void;
31
+ enterFullscreen: () => void;
32
+ exitFullscreen: () => void;
33
+ toggleFullscreen: () => void;
34
+ }
35
+ export interface MediaPlayerConfig {
36
+ autoPlay?: boolean;
37
+ loop?: boolean;
38
+ muted?: boolean;
39
+ volume?: number;
40
+ preload?: "none" | "metadata" | "auto";
41
+ crossOrigin?: "anonymous" | "use-credentials";
42
+ playbackRates?: number[];
43
+ keyboardControls?: boolean;
44
+ showControls?: boolean;
45
+ customControls?: boolean;
46
+ }
47
+ export interface MediaPlayerProps extends MediaPlayerConfig {
48
+ src: string | string[];
49
+ poster?: string;
50
+ className?: string;
51
+ children?: ReactNode | ((props: {
52
+ state: MediaPlayerState;
53
+ controls: MediaPlayerControls;
54
+ }) => ReactNode);
55
+ onPlay?: () => void;
56
+ onPause?: () => void;
57
+ onTimeUpdate?: (currentTime: number) => void;
58
+ onDurationChange?: (duration: number) => void;
59
+ onVolumeChange?: (volume: number) => void;
60
+ onError?: (error: string) => void;
61
+ onLoadStart?: () => void;
62
+ onLoadedData?: () => void;
63
+ onEnded?: () => void;
64
+ }
65
+ export interface VideoPlayerProps extends MediaPlayerProps {
66
+ width?: number | string;
67
+ height?: number | string;
68
+ aspectRatio?: string;
69
+ }
70
+ export interface AudioPlayerProps extends MediaPlayerProps {
71
+ }
72
+ export interface SupportedFormats {
73
+ video: string[];
74
+ audio: string[];
75
+ }
76
+ export interface PlayButtonProps {
77
+ isPlaying: boolean;
78
+ onToggle: () => void;
79
+ disabled?: boolean;
80
+ size?: "sm" | "md" | "lg" | "xl";
81
+ className?: string;
82
+ }
83
+ export interface VolumeControlProps {
84
+ volume: number;
85
+ isMuted: boolean;
86
+ onVolumeChange: (volume: number) => void;
87
+ onToggleMute: () => void;
88
+ size?: "md" | "lg" | "xl";
89
+ className?: string;
90
+ }
91
+ export interface SeekBarProps {
92
+ currentTime: number;
93
+ duration: number;
94
+ buffered?: TimeRanges | null;
95
+ onSeek: (time: number) => void;
96
+ size?: "md" | "lg" | "xl";
97
+ className?: string;
98
+ }
99
+ export interface TimeDisplayProps {
100
+ currentTime: number;
101
+ duration: number;
102
+ showRemaining?: boolean;
103
+ size?: "sm" | "md" | "lg" | "xl";
104
+ className?: string;
105
+ }
106
+ export interface FullscreenButtonProps {
107
+ isFullscreen: boolean;
108
+ onToggle: () => void;
109
+ disabled?: boolean;
110
+ size?: "md" | "lg" | "xl";
111
+ className?: string;
112
+ }
113
+ export interface SubtitleTrack {
114
+ id: string;
115
+ label: string;
116
+ language?: string;
117
+ src?: string;
118
+ kind?: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata";
119
+ default?: boolean;
120
+ }
121
+ export interface CustomLoadingComponentProps {
122
+ context: "initial" | "seeking" | "buffering";
123
+ message?: string;
124
+ progress?: number;
125
+ }
126
+ export type VolumeOrientation = "horizontal" | "vertical";
127
+ import type { BufferedRange } from "../hooks/useVideoPlayer";
128
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // Re-export format types
2
+ export { AUDIO_MIME_TYPES, getMediaTypeFromUrl, getMimeTypeFromUrl, SUPPORTED_AUDIO_FORMATS, SUPPORTED_VIDEO_FORMATS, VIDEO_MIME_TYPES } from "./formats";
3
+ // Re-export AnimateLoadingWrapper for external use
4
+ export { AnimateLoadingWrapper } from "../components/LoadingState";
@@ -65,19 +65,50 @@ export interface MediaPlayerState {
65
65
  }
66
66
 
67
67
  export interface MediaPlayerControls {
68
- play: () => void
68
+ play: () => Promise<void>
69
69
  pause: () => void
70
70
  toggle: () => void
71
71
  seek: (time: number) => void
72
72
  setVolume: (volume: number) => void
73
- mute: () => void
74
- unmute: () => void
75
73
  toggleMute: () => void
76
- enterFullscreen: () => void
77
- exitFullscreen: () => void
74
+ enterFullscreen: () => Promise<void>
75
+ exitFullscreen: () => Promise<void>
78
76
  toggleFullscreen: () => void
79
77
  }
80
78
 
79
+ export interface MediaPlayerInstance {
80
+ // Basic media element
81
+ element: HTMLMediaElement
82
+
83
+ // Player state
84
+ state: MediaPlayerState
85
+
86
+ // Controls
87
+ controls: MediaPlayerControls
88
+
89
+ // Configuration
90
+ config: MediaPlayerConfig
91
+
92
+ // Core methods
93
+ play: () => Promise<void>
94
+ pause: () => void
95
+ toggle: () => void
96
+ seek: (time: number) => void
97
+ setVolume: (volume: number) => void
98
+ toggleMute: () => void
99
+ enterFullscreen: () => Promise<void>
100
+ exitFullscreen: () => Promise<void>
101
+ toggleFullscreen: () => void
102
+
103
+ // Event listeners
104
+ on: (event: string, callback: Function) => void
105
+ off: (event: string, callback: Function) => void
106
+ one: (event: string, callback: Function) => void
107
+
108
+ // Plugin integration
109
+ plugins: Map<string, any>
110
+ }
111
+
81
112
  export interface MediaPlayerConfig {
82
113
  autoPlay?: boolean
83
114
  loop?: boolean
@@ -89,6 +120,10 @@ export interface MediaPlayerConfig {
89
120
  keyboardControls?: boolean
90
121
  showControls?: boolean
91
122
  customControls?: boolean
123
+ enablePerformanceMonitoring?: boolean
124
+ bufferingStrategy?: "adaptive" | "conservative" | "aggressive"
125
+ preloadStrategy?: "progressive" | "lazy" | "eager"
126
+ enableOptimizations?: boolean
92
127
  }
93
128
 
94
129
  export interface MediaPlayerProps extends MediaPlayerConfig {
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-BMteAJDN.js","sources":["../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/jsx-runtime.js","../src/context/media-context.tsx","../src/context/media-store.ts","../src/context/persistence.ts","../src/context/error-handling.ts","../src/context/media-provider.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(\n type,\n key,\n self,\n source,\n owner,\n props,\n debugStack,\n debugTask\n ) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n self,\n source,\n getOwner(),\n maybeKey,\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n \"react-stack-bottom-frame\": function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey, source, self) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n source,\n self,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\"\n\nimport React from \"react\"\n\n// Media action types\nexport const MediaActionTypes = {\n\tPLAY: \"PLAY\",\n\tPAUSE: \"PAUSE\",\n\tSEEK: \"SEEK\",\n\tSET_VOLUME: \"SET_VOLUME\",\n\tMUTE: \"MUTE\",\n\tUNMUTE: \"UNMUTE\",\n\tTOGGLE_MUTE: \"TOGGLE_MUTE\",\n\tSET_DURATION: \"SET_DURATION\",\n\tSET_CURRENT_TIME: \"SET_CURRENT_TIME\",\n\tSET_BUFFERED: \"SET_BUFFERED\",\n\tSET_LOADING: \"SET_LOADING\",\n\tSET_ERROR: \"SET_ERROR\",\n\tENTER_FULLSCREEN: \"ENTER_FULLSCREEN\",\n\tEXIT_FULLSCREEN: \"EXIT_FULLSCREEN\",\n\tENTER_PIP: \"ENTER_PIP\",\n\tEXIT_PIP: \"EXIT_PIP\",\n\tSET_PLAYBACK_RATE: \"SET_PLAYBACK_RATE\",\n\tSET_SUBTITLE_TRACK: \"SET_SUBTITLE_TRACK\",\n\tSET_RENDITION: \"SET_RENDITION\",\n\tTOGGLE_SUBTITLES: \"TOGGLE_SUBTITLES\",\n\tPREVIEW_TIME: \"PREVIEW_TIME\",\n\tCLEAR_PREVIEW: \"CLEAR_PREVIEW\",\n\t// New actions for Video.js adapter\n\tSET_BUFFERING: \"SET_BUFFERING\",\n\tSET_QUALITY_LEVEL: \"SET_QUALITY_LEVEL\",\n\tSET_BANDWIDTH_ESTIMATE: \"SET_BANDWIDTH_ESTIMATE\",\n\tSET_ACTIVE_TEXT_TRACKS: \"SET_ACTIVE_TEXT_TRACKS\"\n} as const\n\nexport type MediaActionType = (typeof MediaActionTypes)[keyof typeof MediaActionTypes]\n\n// Media state interface\nexport interface MediaState {\n\t// Playback state\n\tisPlaying: boolean\n\tcurrentTime: number\n\tduration: number\n\tbuffered: TimeRanges | null\n\tisLoading: boolean\n\tisBuffering: boolean\n\terror: string | null\n\n\t// Audio state\n\tvolume: number\n\tisMuted: boolean\n\n\t// Video state\n\tisFullscreen: boolean\n\tisPictureInPicture: boolean\n\n\t// Advanced features\n\tplaybackRate: number\n\tsubtitlesShowing: boolean\n\tselectedSubtitleTrack: TextTrack | null\n\tselectedRendition: string | null\n\tqualityLevel: number\n\tbandwidthEstimate: number\n\tactiveTextTracks: any[]\n\n\t// Preview state (for seek preview)\n\tpreviewTime: number | null\n\tpreviewImage: string | null\n\tpreviewCoords: { x: number; y: number; width: number; height: number } | null\n\n\t// Media lists\n\tsubtitlesList: TextTrack[]\n\trenditionList: Array<{ id: string; label: string; width?: number; height?: number }>\n}\n\n// Media action interface\nexport interface MediaAction {\n\ttype: MediaActionType\n\tdetail?: any\n}\n\n// Media context interface\nexport interface MediaContextValue {\n\tmediaId: string\n\tlabelId: string\n\tdescriptionId: string\n\tdir?: \"ltr\" | \"rtl\"\n\trootRef: React.RefObject<HTMLDivElement | null>\n\tmediaRef: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>\n\tportalContainer?: HTMLElement\n\ttooltipDelayDuration: number\n\ttooltipSideOffset: number\n\tdisabled: boolean\n\tisVideo: boolean\n\twithoutTooltip: boolean\n}\n\n// Store interface for internal state management\nexport interface MediaStore {\n\tsubscribe: (callback: () => void) => () => void\n\tgetState: () => MediaState\n\tsetState: (updates: Partial<MediaState>) => void\n\tdispatch: (action: MediaAction) => void\n}\n\n// Create the media context\nexport const MediaContext = React.createContext<MediaContextValue | null>(null)\n\n// Hook to use media context\nexport function useMediaContext() {\n\tconst context = React.useContext(MediaContext)\n\tif (!context) {\n\t\tthrow new Error(\"useMediaContext must be used within a MediaPlayer\")\n\t}\n\treturn context\n}\n\n// Store context for state management\nexport const MediaStoreContext = React.createContext<MediaStore | null>(null)\n\n// Hook to use media store\nexport function useMediaStore() {\n\tconst store = React.useContext(MediaStoreContext)\n\tif (!store) {\n\t\tthrow new Error(\"useMediaStore must be used within a MediaPlayer\")\n\t}\n\treturn store\n}\n\n// Hook to select specific state values - React 19 optimized\nexport function useMediaSelector<T>(selector: (state: MediaState) => T): T {\n\tconst store = useMediaStore()\n\n\t// React 19 compiler will optimize this callback\n\tconst getSnapshot = () => selector(store.getState())\n\n\treturn React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot)\n}\n\n// Hook to get dispatch function\nexport function useMediaDispatch() {\n\tconst store = useMediaStore()\n\treturn store.dispatch\n}\n\n// React 19 enhanced context selector with optimistic updates\nexport function useOptimisticMediaSelector<T>(selector: (state: MediaState) => T): T {\n\tconst store = useMediaStore()\n\t\n\t// Check if enhanced store is available\n\tconst isEnhanced = 'getOptimisticState' in store\n\t\n\tconst getSnapshot = () => {\n\t\tif (isEnhanced) {\n\t\t\t// Use optimistic state for immediate UI feedback\n\t\t\treturn selector((store as any).getOptimisticState())\n\t\t} else {\n\t\t\t// Fall back to regular state\n\t\t\treturn selector(store.getState())\n\t\t}\n\t}\n\n\treturn React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot)\n}\n\n// Hook for accessing React 19 enhanced features\nexport function useMediaEnhancements() {\n\tconst store = useMediaStore()\n\tconst context = useMediaContext()\n\t\n\tconst isEnhanced = 'getOptimisticState' in store\n\tconst errorHandler = 'errorHandler' in context ? (context as any).errorHandler : null\n\tconst isRehydrated = 'isRehydrated' in context ? (context as any).isRehydrated : true\n\t\n\treturn {\n\t\tisEnhanced,\n\t\terrorHandler,\n\t\tisRehydrated,\n\t\tactionsState: isEnhanced ? (store as any).getActionState() : null\n\t}\n}\n\n// Initial media state\nexport const initialMediaState: MediaState = {\n\tisPlaying: false,\n\tcurrentTime: 0,\n\tduration: 0,\n\tbuffered: null,\n\tisLoading: false,\n\tisBuffering: false,\n\terror: null,\n\tvolume: 1,\n\tisMuted: false,\n\tisFullscreen: false,\n\tisPictureInPicture: false,\n\tplaybackRate: 1,\n\tsubtitlesShowing: false,\n\tselectedSubtitleTrack: null,\n\tselectedRendition: null,\n\tqualityLevel: -1,\n\tbandwidthEstimate: 0,\n\tactiveTextTracks: [],\n\tpreviewTime: null,\n\tpreviewImage: null,\n\tpreviewCoords: null,\n\tsubtitlesList: [],\n\trenditionList: []\n}\n","\"use client\"\n\nimport React from \"react\"\nimport type { MediaState, MediaAction, MediaActionType } from \"./media-context\"\nimport { MediaActionTypes, initialMediaState } from \"./media-context\"\n\n// Enhanced action types for React 19 features\nexport interface OptimisticMediaAction extends MediaAction {\n\toptimistic?: boolean\n\tretryCount?: number\n\ttimestamp?: number\n}\n\n// Action state for useActionState\nexport interface MediaActionState {\n\tpending: boolean\n\terror: string | null\n\tlastAction: OptimisticMediaAction | null\n\tretryCount: number\n}\n\n// State persistence configuration\nexport interface PersistenceConfig {\n\tenabled: boolean\n\tkey: string\n\tpersist: Array<keyof MediaState>\n\tdebounceMs: number\n}\n\n// Enhanced media store interface\nexport interface EnhancedMediaStore {\n\t// Original store interface\n\tsubscribe: (callback: () => void) => () => void\n\tgetState: () => MediaState\n\tsetState: (updates: Partial<MediaState>) => void\n\tdispatch: (action: MediaAction) => void\n\t\n\t// React 19 enhancements\n\tgetOptimisticState: () => MediaState\n\tdispatchOptimistic: (action: OptimisticMediaAction) => Promise<void>\n\trollbackOptimistic: (actionId: string) => void\n\tgetActionState: () => MediaActionState\n\tsetPersistenceConfig: (config: Partial<PersistenceConfig>) => void\n\trehydrateFromStorage: () => Promise<void>\n\tclearPersistedState: () => void\n}\n\n// Default persistence configuration\nconst DEFAULT_PERSISTENCE_CONFIG: PersistenceConfig = {\n\tenabled: true,\n\tkey: \"baroi-player-state\",\n\tpersist: [\"volume\", \"isMuted\", \"playbackRate\", \"subtitlesShowing\"],\n\tdebounceMs: 500\n}\n\n// Create enhanced media store with React 19 features\nexport function createEnhancedMediaStore(\n\tinitialState: MediaState = initialMediaState,\n\tpersistenceConfig: Partial<PersistenceConfig> = {}\n): EnhancedMediaStore {\n\tlet state = { ...initialState }\n\tlet optimisticState = { ...initialState }\n\tlet actionState: MediaActionState = {\n\t\tpending: false,\n\t\terror: null,\n\t\tlastAction: null,\n\t\tretryCount: 0\n\t}\n\n\tconst config = { ...DEFAULT_PERSISTENCE_CONFIG, ...persistenceConfig }\n\tconst listeners = new Set<() => void>()\n\tconst optimisticQueue = new Map<string, OptimisticMediaAction>()\n\tlet persistenceTimeout: NodeJS.Timeout | null = null\n\t\n\tconst subscribe = (callback: () => void) => {\n\t\tlisteners.add(callback)\n\t\treturn () => listeners.delete(callback)\n\t}\n\n\tconst notifyListeners = () => {\n\t\tlisteners.forEach((callback) => callback())\n\t}\n\n\tconst getState = () => state\n\n\tconst getOptimisticState = () => optimisticState\n\n\tconst getActionState = () => actionState\n\n\t// Persistence helpers\n\tconst persistState = async () => {\n\t\tif (!config.enabled || typeof window === 'undefined') return\n\t\t\n\t\tconst persistedData = config.persist.reduce((acc, key) => {\n\t\t\t(acc as any)[key] = state[key]\n\t\t\treturn acc\n\t\t}, {} as Partial<MediaState>)\n\n\t\ttry {\n\t\t\tlocalStorage.setItem(config.key, JSON.stringify({\n\t\t\t\t...persistedData,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t}))\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to persist media state:', error)\n\t\t}\n\t}\n\n\tconst debouncedPersist = () => {\n\t\tif (persistenceTimeout) {\n\t\t\tclearTimeout(persistenceTimeout)\n\t\t}\n\t\tpersistenceTimeout = setTimeout(persistState, config.debounceMs)\n\t}\n\n\tconst rehydrateFromStorage = async () => {\n\t\tif (!config.enabled || typeof window === 'undefined') return\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem(config.key)\n\t\t\tif (!stored) return\n\n\t\t\tconst parsedData = JSON.parse(stored) as any\n\t\t\tconst { timestamp, ...persistedState } = parsedData\n\n\t\t\t// Only rehydrate if data is less than 7 days old\n\t\t\tconst maxAge = 7 * 24 * 60 * 60 * 1000 // 7 days\n\t\t\tif (timestamp && Date.now() - timestamp > maxAge) {\n\t\t\t\tclearPersistedState()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Merge persisted state with current state\n\t\t\tconst newState = { ...state, ...persistedState }\n\t\t\tif (JSON.stringify(newState) !== JSON.stringify(state)) {\n\t\t\t\tstate = newState\n\t\t\t\toptimisticState = { ...newState }\n\t\t\t\tnotifyListeners()\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to rehydrate media state:', error)\n\t\t}\n\t}\n\n\tconst clearPersistedState = () => {\n\t\tif (typeof window === 'undefined') return\n\t\ttry {\n\t\t\tlocalStorage.removeItem(config.key)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to clear persisted state:', error)\n\t\t}\n\t}\n\n\tconst setPersistenceConfig = (newConfig: Partial<PersistenceConfig>) => {\n\t\tObject.assign(config, newConfig)\n\t}\n\n\tconst setState = (updates: Partial<MediaState>) => {\n\t\tconst newState = { ...state, ...updates }\n\t\tif (JSON.stringify(newState) !== JSON.stringify(state)) {\n\t\t\tstate = newState\n\t\t\toptimisticState = { ...newState }\n\t\t\t\n\t\t\t// Persist relevant changes\n\t\t\tdebouncedPersist()\n\t\t\tnotifyListeners()\n\t\t}\n\t}\n\n\tconst applyOptimisticUpdate = (action: OptimisticMediaAction) => {\n\t\tconst actionId = `${action.type}-${Date.now()}-${Math.random()}`\n\t\t\n\t\t// Store original action for rollback\n\t\toptimisticQueue.set(actionId, { ...action, timestamp: Date.now() })\n\n\t\t// Apply optimistic update to optimistic state\n\t\tconst optimisticUpdate = processMediaAction(optimisticState, action)\n\t\toptimisticState = { ...optimisticState, ...optimisticUpdate }\n\t\t\n\t\tnotifyListeners()\n\t\treturn actionId\n\t}\n\n\tconst rollbackOptimistic = (actionId: string) => {\n\t\tif (!optimisticQueue.has(actionId)) return\n\n\t\t// Remove from queue and recalculate optimistic state\n\t\toptimisticQueue.delete(actionId)\n\t\t\n\t\t// Rebuild optimistic state from actual state + remaining optimistic actions\n\t\toptimisticState = { ...state }\n\t\tfor (const [, action] of optimisticQueue) {\n\t\t\tconst update = processMediaAction(optimisticState, action)\n\t\t\toptimisticState = { ...optimisticState, ...update }\n\t\t}\n\t\t\n\t\tnotifyListeners()\n\t}\n\n\t// Process media action and return state updates\n\tconst processMediaAction = (currentState: MediaState, action: MediaAction): Partial<MediaState> => {\n\t\tswitch (action.type) {\n\t\t\tcase MediaActionTypes.PLAY:\n\t\t\t\treturn { isPlaying: true, error: null }\n\t\t\t\n\t\t\tcase MediaActionTypes.PAUSE:\n\t\t\t\treturn { isPlaying: false }\n\t\t\t\n\t\t\tcase MediaActionTypes.SEEK:\n\t\t\t\treturn { currentTime: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_VOLUME:\n\t\t\t\treturn { volume: Math.max(0, Math.min(1, action.detail)) }\n\t\t\t\n\t\t\tcase MediaActionTypes.MUTE:\n\t\t\t\treturn { isMuted: true }\n\t\t\t\n\t\t\tcase MediaActionTypes.UNMUTE:\n\t\t\t\treturn { isMuted: false }\n\t\t\t\n\t\t\tcase MediaActionTypes.TOGGLE_MUTE:\n\t\t\t\treturn { isMuted: !currentState.isMuted }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_DURATION:\n\t\t\t\treturn { duration: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_CURRENT_TIME:\n\t\t\t\treturn { currentTime: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_BUFFERED:\n\t\t\t\treturn { buffered: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_LOADING:\n\t\t\t\treturn { isLoading: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_ERROR:\n\t\t\t\treturn { error: action.detail, isLoading: false }\n\t\t\t\n\t\t\tcase MediaActionTypes.ENTER_FULLSCREEN:\n\t\t\t\treturn { isFullscreen: true }\n\t\t\t\n\t\t\tcase MediaActionTypes.EXIT_FULLSCREEN:\n\t\t\t\treturn { isFullscreen: false }\n\t\t\t\n\t\t\tcase MediaActionTypes.ENTER_PIP:\n\t\t\t\treturn { isPictureInPicture: true }\n\t\t\t\n\t\t\tcase MediaActionTypes.EXIT_PIP:\n\t\t\t\treturn { isPictureInPicture: false }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_PLAYBACK_RATE:\n\t\t\t\treturn { playbackRate: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_SUBTITLE_TRACK:\n\t\t\t\treturn { selectedSubtitleTrack: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.SET_RENDITION:\n\t\t\t\treturn { selectedRendition: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.TOGGLE_SUBTITLES:\n\t\t\t\treturn { subtitlesShowing: !currentState.subtitlesShowing }\n\t\t\t\n\t\t\tcase MediaActionTypes.PREVIEW_TIME:\n\t\t\t\treturn { previewTime: action.detail }\n\t\t\t\n\t\t\tcase MediaActionTypes.CLEAR_PREVIEW:\n\t\t\t\treturn { previewTime: null, previewImage: null, previewCoords: null }\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(`Unknown media action type: ${action.type}`)\n\t\t\t\treturn {}\n\t\t}\n\t}\n\n\tconst dispatch = (action: MediaAction) => {\n\t\tconst updates = processMediaAction(state, action)\n\t\tsetState(updates)\n\t}\n\n\tconst dispatchOptimistic = async (action: OptimisticMediaAction): Promise<void> => {\n\t\t// Set action state to pending\n\t\tactionState = {\n\t\t\tpending: true,\n\t\t\terror: null,\n\t\t\tlastAction: action,\n\t\t\tretryCount: action.retryCount || 0\n\t\t}\n\t\t\n\t\t// Apply optimistic update immediately\n\t\tconst actionId = applyOptimisticUpdate(action)\n\t\t\n\t\ttry {\n\t\t\t// Simulate async operation (e.g., network request, DOM manipulation)\n\t\t\tawait new Promise(resolve => setTimeout(resolve, 0))\n\t\t\t\n\t\t\t// Apply the actual update to the real state\n\t\t\tconst updates = processMediaAction(state, action)\n\t\t\tconst newState = { ...state, ...updates }\n\t\t\t\n\t\t\tif (JSON.stringify(newState) !== JSON.stringify(state)) {\n\t\t\t\tstate = newState\n\t\t\t\tdebouncedPersist()\n\t\t\t}\n\t\t\t\n\t\t\t// Clean up optimistic action\n\t\t\toptimisticQueue.delete(actionId)\n\t\t\t\n\t\t\t// Update action state\n\t\t\tactionState = {\n\t\t\t\tpending: false,\n\t\t\t\terror: null,\n\t\t\t\tlastAction: action,\n\t\t\t\tretryCount: 0\n\t\t\t}\n\t\t\t\n\t\t\t// Sync optimistic state with actual state\n\t\t\toptimisticState = { ...state }\n\t\t\tfor (const [, queuedAction] of optimisticQueue) {\n\t\t\t\tconst update = processMediaAction(optimisticState, queuedAction)\n\t\t\t\toptimisticState = { ...optimisticState, ...update }\n\t\t\t}\n\t\t\t\n\t\t} catch (error) {\n\t\t\t// Rollback optimistic update on error\n\t\t\trollbackOptimistic(actionId)\n\t\t\t\n\t\t\tconst errorMessage = error instanceof Error ? error.message : 'Unknown error occurred'\n\t\t\tactionState = {\n\t\t\t\tpending: false,\n\t\t\t\terror: errorMessage,\n\t\t\t\tlastAction: action,\n\t\t\t\tretryCount: (action.retryCount || 0) + 1\n\t\t\t}\n\t\t\t\n\t\t\t// Auto-retry logic for certain actions\n\t\t\tif (actionState.retryCount < 3 && shouldRetry(action.type)) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tdispatchOptimistic({\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tretryCount: actionState.retryCount\n\t\t\t\t\t})\n\t\t\t\t}, Math.pow(2, actionState.retryCount) * 1000) // Exponential backoff\n\t\t\t}\n\t\t}\n\t\t\n\t\tnotifyListeners()\n\t}\n\n\t// Determine if an action should be retried\n\tconst shouldRetry = (actionType: MediaActionType): boolean => {\n\t\tconst retryableActions: MediaActionType[] = [\n\t\t\tMediaActionTypes.PLAY,\n\t\t\tMediaActionTypes.PAUSE,\n\t\t\tMediaActionTypes.SEEK,\n\t\t\tMediaActionTypes.SET_VOLUME,\n\t\t\tMediaActionTypes.MUTE,\n\t\t\tMediaActionTypes.UNMUTE,\n\t\t\tMediaActionTypes.TOGGLE_MUTE\n\t\t]\n\t\treturn retryableActions.includes(actionType)\n\t}\n\n\t// Initialize with rehydrated state\n\trehydrateFromStorage()\n\n\treturn {\n\t\tsubscribe,\n\t\tgetState,\n\t\tsetState,\n\t\tdispatch,\n\t\tgetOptimisticState,\n\t\tdispatchOptimistic,\n\t\trollbackOptimistic,\n\t\tgetActionState,\n\t\tsetPersistenceConfig,\n\t\trehydrateFromStorage,\n\t\tclearPersistedState\n\t}\n}","\"use client\"\n\nimport type { MediaState } from \"./media-context\"\n\n// Storage keys\nexport const STORAGE_KEYS = {\n\tUSER_PREFERENCES: \"baroi-player-preferences\",\n\tSESSION_STATE: \"baroi-player-session\",\n\tPLAYBACK_HISTORY: \"baroi-player-history\",\n\tCACHE_TIMESTAMP: \"baroi-player-cache-ts\"\n} as const\n\n// User preferences that should be persisted long-term\nexport interface UserPreferences {\n\tvolume: number\n\tisMuted: boolean\n\tplaybackRate: number\n\tsubtitlesShowing: boolean\n\tselectedSubtitleTrack: string | null\n\tpreferredRendition: string | null\n\tautoplay: boolean\n\tkeyboardShortcuts: boolean\n}\n\n// Session state that should be persisted for the session\nexport interface SessionState {\n\tcurrentTime: number\n\tmediaId?: string\n\tsrc?: string\n\tplaybackPosition: Record<string, number> // mediaId -> position\n}\n\n// Playback history item\nexport interface PlaybackHistoryItem {\n\tmediaId: string\n\tsrc: string\n\ttitle?: string\n\tcurrentTime: number\n\tduration: number\n\ttimestamp: number\n\tcompleted: boolean\n}\n\n// Persistence configuration\nexport interface PersistenceConfig {\n\t// Storage options\n\tuserPreferences: boolean\n\tsessionState: boolean\n\tplaybackHistory: boolean\n\t\n\t// Limits\n\tmaxHistoryItems: number\n\tmaxCacheAge: number // milliseconds\n\t\n\t// Debouncing\n\tdebounceMs: number\n\t\n\t// Custom storage adapter\n\tstorage?: StorageAdapter\n}\n\n// Storage adapter interface for custom storage implementations\nexport interface StorageAdapter {\n\tgetItem(key: string): Promise<string | null>\n\tsetItem(key: string, value: string): Promise<void>\n\tremoveItem(key: string): Promise<void>\n\tclear(): Promise<void>\n}\n\n// Default localStorage adapter\nclass LocalStorageAdapter implements StorageAdapter {\n\tasync getItem(key: string): Promise<string | null> {\n\t\tif (typeof window === 'undefined') return null\n\t\ttry {\n\t\t\treturn localStorage.getItem(key)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to read from localStorage:', error)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tasync setItem(key: string, value: string): Promise<void> {\n\t\tif (typeof window === 'undefined') return\n\t\ttry {\n\t\t\tlocalStorage.setItem(key, value)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to write to localStorage:', error)\n\t\t}\n\t}\n\n\tasync removeItem(key: string): Promise<void> {\n\t\tif (typeof window === 'undefined') return\n\t\ttry {\n\t\t\tlocalStorage.removeItem(key)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to remove from localStorage:', error)\n\t\t}\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tif (typeof window === 'undefined') return\n\t\ttry {\n\t\t\t// Only clear baroi-player keys\n\t\t\tObject.values(STORAGE_KEYS).forEach(key => {\n\t\t\t\tlocalStorage.removeItem(key)\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to clear localStorage:', error)\n\t\t}\n\t}\n}\n\n// Default persistence configuration\nconst DEFAULT_CONFIG: PersistenceConfig = {\n\tuserPreferences: true,\n\tsessionState: true,\n\tplaybackHistory: true,\n\tmaxHistoryItems: 50,\n\tmaxCacheAge: 7 * 24 * 60 * 60 * 1000, // 7 days\n\tdebounceMs: 1000,\n\tstorage: new LocalStorageAdapter()\n}\n\n// Persistence manager class\nexport class MediaPersistenceManager {\n\tprivate config: PersistenceConfig\n\tprivate storage: StorageAdapter\n\tprivate debounceTimeouts: Map<string, NodeJS.Timeout> = new Map()\n\n\tconstructor(config: Partial<PersistenceConfig> = {}) {\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config }\n\t\tthis.storage = this.config.storage!\n\t}\n\n\t// User preferences methods\n\tasync getUserPreferences(): Promise<UserPreferences | null> {\n\t\tif (!this.config.userPreferences) return null\n\n\t\ttry {\n\t\t\tconst data = await this.storage.getItem(STORAGE_KEYS.USER_PREFERENCES)\n\t\t\tif (!data) return null\n\n\t\t\tconst parsed = JSON.parse(data) as { preferences: UserPreferences; timestamp: number }\n\t\t\t\n\t\t\t// Validate cache age\n\t\t\tif (this.isCacheExpired(parsed.timestamp)) {\n\t\t\t\tawait this.clearUserPreferences()\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\treturn parsed.preferences\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to get user preferences:', error)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tasync saveUserPreferences(preferences: Partial<UserPreferences>): Promise<void> {\n\t\tif (!this.config.userPreferences) return\n\n\t\tthis.debounce(STORAGE_KEYS.USER_PREFERENCES, async () => {\n\t\t\ttry {\n\t\t\t\tconst existing = await this.getUserPreferences() || {}\n\t\t\t\tconst updated = { ...existing, ...preferences }\n\t\t\t\t\n\t\t\t\tawait this.storage.setItem(STORAGE_KEYS.USER_PREFERENCES, JSON.stringify({\n\t\t\t\t\tpreferences: updated,\n\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t}))\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn('Failed to save user preferences:', error)\n\t\t\t}\n\t\t})\n\t}\n\n\tasync clearUserPreferences(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.storage.removeItem(STORAGE_KEYS.USER_PREFERENCES)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to clear user preferences:', error)\n\t\t}\n\t}\n\n\t// Session state methods\n\tasync getSessionState(): Promise<SessionState | null> {\n\t\tif (!this.config.sessionState) return null\n\n\t\ttry {\n\t\t\tconst data = await this.storage.getItem(STORAGE_KEYS.SESSION_STATE)\n\t\t\tif (!data) return null\n\n\t\t\tconst parsed = JSON.parse(data) as { state: SessionState; timestamp: number }\n\t\t\treturn parsed.state\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to get session state:', error)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tasync saveSessionState(state: Partial<SessionState>): Promise<void> {\n\t\tif (!this.config.sessionState) return\n\n\t\tthis.debounce(STORAGE_KEYS.SESSION_STATE, async () => {\n\t\t\ttry {\n\t\t\t\tconst existing = await this.getSessionState() || {\n\t\t\t\t\tcurrentTime: 0,\n\t\t\t\t\tplaybackPosition: {}\n\t\t\t\t}\n\t\t\t\tconst updated = { ...existing, ...state }\n\n\t\t\t\tawait this.storage.setItem(STORAGE_KEYS.SESSION_STATE, JSON.stringify({\n\t\t\t\t\tstate: updated,\n\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t}))\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn('Failed to save session state:', error)\n\t\t\t}\n\t\t})\n\t}\n\n\tasync clearSessionState(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.storage.removeItem(STORAGE_KEYS.SESSION_STATE)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to clear session state:', error)\n\t\t}\n\t}\n\n\t// Playback history methods\n\tasync getPlaybackHistory(): Promise<PlaybackHistoryItem[]> {\n\t\tif (!this.config.playbackHistory) return []\n\n\t\ttry {\n\t\t\tconst data = await this.storage.getItem(STORAGE_KEYS.PLAYBACK_HISTORY)\n\t\t\tif (!data) return []\n\n\t\t\tconst parsed = JSON.parse(data) as { history: PlaybackHistoryItem[]; timestamp: number }\n\t\t\t\n\t\t\t// Validate cache age\n\t\t\tif (this.isCacheExpired(parsed.timestamp)) {\n\t\t\t\tawait this.clearPlaybackHistory()\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\treturn parsed.history || []\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to get playback history:', error)\n\t\t\treturn []\n\t\t}\n\t}\n\n\tasync addToPlaybackHistory(item: Omit<PlaybackHistoryItem, 'timestamp'>): Promise<void> {\n\t\tif (!this.config.playbackHistory) return\n\n\t\ttry {\n\t\t\tconst history = await this.getPlaybackHistory()\n\t\t\tconst newItem: PlaybackHistoryItem = {\n\t\t\t\t...item,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t}\n\n\t\t\t// Remove existing entry for the same media\n\t\t\tconst filteredHistory = history.filter(h => h.mediaId !== item.mediaId)\n\t\t\t\n\t\t\t// Add new item at the beginning\n\t\t\tconst updatedHistory = [newItem, ...filteredHistory]\n\t\t\t\t.slice(0, this.config.maxHistoryItems)\n\n\t\t\tawait this.storage.setItem(STORAGE_KEYS.PLAYBACK_HISTORY, JSON.stringify({\n\t\t\t\thistory: updatedHistory,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t}))\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to add to playback history:', error)\n\t\t}\n\t}\n\n\tasync clearPlaybackHistory(): Promise<void> {\n\t\ttry {\n\t\t\tawait this.storage.removeItem(STORAGE_KEYS.PLAYBACK_HISTORY)\n\t\t} catch (error) {\n\t\t\tconsole.warn('Failed to clear playback history:', error)\n\t\t}\n\t}\n\n\t// Utility methods\n\tasync savePlaybackPosition(mediaId: string, position: number): Promise<void> {\n\t\tconst session = await this.getSessionState()\n\t\tconst playbackPosition = session?.playbackPosition || {}\n\t\t\n\t\tawait this.saveSessionState({\n\t\t\tplaybackPosition: {\n\t\t\t\t...playbackPosition,\n\t\t\t\t[mediaId]: position\n\t\t\t}\n\t\t})\n\t}\n\n\tasync getPlaybackPosition(mediaId: string): Promise<number> {\n\t\tconst session = await this.getSessionState()\n\t\treturn session?.playbackPosition?.[mediaId] || 0\n\t}\n\n\t// Extract preferences from MediaState\n\textractUserPreferences(state: MediaState): UserPreferences {\n\t\treturn {\n\t\t\tvolume: state.volume,\n\t\t\tisMuted: state.isMuted,\n\t\t\tplaybackRate: state.playbackRate,\n\t\t\tsubtitlesShowing: state.subtitlesShowing,\n\t\t\tselectedSubtitleTrack: state.selectedSubtitleTrack?.id || null,\n\t\t\tpreferredRendition: state.selectedRendition,\n\t\t\tautoplay: false, // This would come from config\n\t\t\tkeyboardShortcuts: true // This would come from config\n\t\t}\n\t}\n\n\t// Extract session state from MediaState\n\textractSessionState(state: MediaState, mediaId?: string): SessionState {\n\t\treturn {\n\t\t\tcurrentTime: state.currentTime,\n\t\t\tmediaId,\n\t\t\tplaybackPosition: {}\n\t\t}\n\t}\n\n\t// Clear all persisted data\n\tasync clearAll(): Promise<void> {\n\t\tawait this.storage.clear()\n\t\tthis.debounceTimeouts.clear()\n\t}\n\n\t// Private helper methods\n\tprivate isCacheExpired(timestamp?: number): boolean {\n\t\tif (!timestamp) return true\n\t\treturn Date.now() - timestamp > this.config.maxCacheAge\n\t}\n\n\tprivate debounce(key: string, fn: () => Promise<void>): void {\n\t\tconst existingTimeout = this.debounceTimeouts.get(key)\n\t\tif (existingTimeout) {\n\t\t\tclearTimeout(existingTimeout)\n\t\t}\n\n\t\tconst timeout = setTimeout(async () => {\n\t\t\tawait fn()\n\t\t\tthis.debounceTimeouts.delete(key)\n\t\t}, this.config.debounceMs)\n\n\t\tthis.debounceTimeouts.set(key, timeout)\n\t}\n}\n\n// Hook for using persistence in components\nexport function useMediaPersistence(config?: Partial<PersistenceConfig>) {\n\tconst [manager] = React.useState(() => new MediaPersistenceManager(config))\n\t\n\tReact.useEffect(() => {\n\t\treturn () => {\n\t\t\t// Clear any pending debounced operations\n\t\t\tmanager.clearAll()\n\t\t}\n\t}, [manager])\n\t\n\treturn manager\n}\n\n// React 19 integration for automatic persistence\nexport function useAutoMediaPersistence(\n\tstate: MediaState,\n\tmediaId?: string,\n\tconfig?: Partial<PersistenceConfig>\n) {\n\tconst manager = useMediaPersistence(config)\n\tconst [isRehydrated, setIsRehydrated] = React.useState(false)\n\t\n\t// Rehydrate on mount\n\tReact.useEffect(() => {\n\t\tlet isMounted = true\n\t\t\n\t\tconst rehydrate = async () => {\n\t\t\ttry {\n\t\t\t\tconst [preferences, session] = await Promise.all([\n\t\t\t\t\tmanager.getUserPreferences(),\n\t\t\t\t\tmanager.getSessionState()\n\t\t\t\t])\n\t\t\t\t\n\t\t\t\tif (!isMounted) return\n\t\t\t\t\n\t\t\t\t// Return the rehydrated state for the store to apply\n\t\t\t\tconst rehydratedState: Partial<MediaState> = {\n\t\t\t\t\t...(preferences && {\n\t\t\t\t\t\tvolume: preferences.volume,\n\t\t\t\t\t\tisMuted: preferences.isMuted,\n\t\t\t\t\t\tplaybackRate: preferences.playbackRate,\n\t\t\t\t\t\tsubtitlesShowing: preferences.subtitlesShowing\n\t\t\t\t\t}),\n\t\t\t\t\t...(session && mediaId === session.mediaId && {\n\t\t\t\t\t\tcurrentTime: session.currentTime\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Apply rehydrated state via callback if provided\n\t\t\t\tif (Object.keys(rehydratedState).length > 0) {\n\t\t\t\t\t// This would be handled by the store\n\t\t\t\t\tconsole.log('Rehydrated state:', rehydratedState)\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetIsRehydrated(true)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn('Failed to rehydrate state:', error)\n\t\t\t\tsetIsRehydrated(true)\n\t\t\t}\n\t\t}\n\t\t\n\t\trehydrate()\n\t\t\n\t\treturn () => {\n\t\t\tisMounted = false\n\t\t}\n\t}, [manager, mediaId])\n\t\n\t// Auto-persist changes\n\tReact.useEffect(() => {\n\t\tif (!isRehydrated) return\n\t\t\n\t\t// Save user preferences\n\t\tconst preferences = manager.extractUserPreferences(state)\n\t\tmanager.saveUserPreferences(preferences)\n\t\t\n\t\t// Save session state\n\t\tif (mediaId) {\n\t\t\tconst session = manager.extractSessionState(state, mediaId)\n\t\t\tmanager.saveSessionState(session)\n\t\t\t\n\t\t\t// Save playback position\n\t\t\tif (state.currentTime > 0 && state.duration > 0) {\n\t\t\t\tmanager.savePlaybackPosition(mediaId, state.currentTime)\n\t\t\t}\n\t\t}\n\t}, [manager, state, mediaId, isRehydrated])\n\t\n\treturn {\n\t\tmanager,\n\t\tisRehydrated\n\t}\n}\n\n// Export default storage adapter\nexport const defaultStorageAdapter = new LocalStorageAdapter()\n\n// Import React for hooks\nimport React from \"react\"","\"use client\"\n\nimport React from \"react\"\nimport type { MediaActionType } from \"./media-context\"\nimport type { OptimisticMediaAction } from \"./media-store\"\n\n// Error types specific to media operations\nexport enum MediaErrorType {\n\tNETWORK_ERROR = \"NETWORK_ERROR\",\n\tPLAYBACK_ERROR = \"PLAYBACK_ERROR\",\n\tPERMISSION_ERROR = \"PERMISSION_ERROR\",\n\tNOT_SUPPORTED_ERROR = \"NOT_SUPPORTED_ERROR\",\n\tTIMEOUT_ERROR = \"TIMEOUT_ERROR\",\n\tUNKNOWN_ERROR = \"UNKNOWN_ERROR\"\n}\n\n// Enhanced error interface\nexport interface MediaError {\n\ttype: MediaErrorType\n\tmessage: string\n\taction?: OptimisticMediaAction\n\ttimestamp: number\n\tretryable: boolean\n\tretryCount: number\n\toriginalError?: Error\n}\n\n// Retry configuration\nexport interface RetryConfig {\n\tmaxRetries: number\n\tbaseDelay: number // milliseconds\n\tmaxDelay: number // milliseconds\n\texponentialBackoff: boolean\n\tretryableErrors: MediaErrorType[]\n\tretryableActions: MediaActionType[]\n}\n\n// Default retry configuration\nconst DEFAULT_RETRY_CONFIG: RetryConfig = {\n\tmaxRetries: 3,\n\tbaseDelay: 1000,\n\tmaxDelay: 10000,\n\texponentialBackoff: true,\n\tretryableErrors: [\n\t\tMediaErrorType.NETWORK_ERROR,\n\t\tMediaErrorType.TIMEOUT_ERROR\n\t],\n\tretryableActions: [\n\t\t\"PLAY\",\n\t\t\"PAUSE\",\n\t\t\"SEEK\",\n\t\t\"SET_VOLUME\",\n\t\t\"ENTER_FULLSCREEN\",\n\t\t\"EXIT_FULLSCREEN\"\n\t]\n}\n\n// Error recovery strategies\nexport interface ErrorRecoveryStrategy {\n\tcanRecover(error: MediaError): boolean\n\trecover(error: MediaError): Promise<void>\n}\n\n// Network error recovery\nclass NetworkErrorRecovery implements ErrorRecoveryStrategy {\n\tcanRecover(error: MediaError): boolean {\n\t\treturn error.type === MediaErrorType.NETWORK_ERROR && error.retryCount < 3\n\t}\n\n\tasync recover(error: MediaError): Promise<void> {\n\t\t// Wait for network to become available\n\t\tif (navigator.onLine === false) {\n\t\t\tawait new Promise(resolve => {\n\t\t\t\tconst handleOnline = () => {\n\t\t\t\t\twindow.removeEventListener('online', handleOnline)\n\t\t\t\t\tresolve(void 0)\n\t\t\t\t}\n\t\t\t\twindow.addEventListener('online', handleOnline)\n\t\t\t})\n\t\t}\n\t\t\n\t\t// Additional delay for network stability\n\t\tawait new Promise(resolve => setTimeout(resolve, 2000))\n\t}\n}\n\n// Playback error recovery\nclass PlaybackErrorRecovery implements ErrorRecoveryStrategy {\n\tcanRecover(error: MediaError): boolean {\n\t\treturn error.type === MediaErrorType.PLAYBACK_ERROR && error.retryCount < 2\n\t}\n\n\tasync recover(error: MediaError): Promise<void> {\n\t\t// Try to reload the media element\n\t\tconst mediaElement = document.querySelector('video, audio') as HTMLMediaElement\n\t\tif (mediaElement) {\n\t\t\tmediaElement.load()\n\t\t\tawait new Promise(resolve => {\n\t\t\t\tconst handleCanPlay = () => {\n\t\t\t\t\tmediaElement.removeEventListener('canplay', handleCanPlay)\n\t\t\t\t\tresolve(void 0)\n\t\t\t\t}\n\t\t\t\tmediaElement.addEventListener('canplay', handleCanPlay)\n\t\t\t})\n\t\t}\n\t}\n}\n\n// Permission error recovery (for fullscreen, etc.)\nclass PermissionErrorRecovery implements ErrorRecoveryStrategy {\n\tcanRecover(error: MediaError): boolean {\n\t\treturn error.type === MediaErrorType.PERMISSION_ERROR && \n\t\t\t error.action?.type === 'ENTER_FULLSCREEN'\n\t}\n\n\tasync recover(error: MediaError): Promise<void> {\n\t\t// Request user interaction for fullscreen\n\t\tconsole.warn('Fullscreen requires user interaction')\n\t\t// In a real implementation, you might show a message to the user\n\t}\n}\n\n// Error handler class\nexport class MediaErrorHandler {\n\tprivate config: RetryConfig\n\tprivate recoveryStrategies: ErrorRecoveryStrategy[]\n\tprivate errorQueue: Map<string, MediaError> = new Map()\n\tprivate listeners: Set<(error: MediaError) => void> = new Set()\n\n\tconstructor(\n\t\tconfig: Partial<RetryConfig> = {},\n\t\trecoveryStrategies: ErrorRecoveryStrategy[] = []\n\t) {\n\t\tthis.config = { ...DEFAULT_RETRY_CONFIG, ...config }\n\t\tthis.recoveryStrategies = [\n\t\t\tnew NetworkErrorRecovery(),\n\t\t\tnew PlaybackErrorRecovery(),\n\t\t\tnew PermissionErrorRecovery(),\n\t\t\t...recoveryStrategies\n\t\t]\n\t}\n\n\t// Create a media error from a generic error\n\tcreateMediaError(\n\t\terror: unknown,\n\t\taction?: OptimisticMediaAction,\n\t\tretryCount = 0\n\t): MediaError {\n\t\tconst timestamp = Date.now()\n\t\t\n\t\tif (error instanceof Error) {\n\t\t\tconst errorType = this.categorizeError(error, action)\n\t\t\treturn {\n\t\t\t\ttype: errorType,\n\t\t\t\tmessage: error.message,\n\t\t\t\taction,\n\t\t\t\ttimestamp,\n\t\t\t\tretryable: this.isRetryable(errorType, action),\n\t\t\t\tretryCount,\n\t\t\t\toriginalError: error\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {\n\t\t\ttype: MediaErrorType.UNKNOWN_ERROR,\n\t\t\tmessage: typeof error === 'string' ? error : 'Unknown error occurred',\n\t\t\taction,\n\t\t\ttimestamp,\n\t\t\tretryable: this.isRetryable(MediaErrorType.UNKNOWN_ERROR, action),\n\t\t\tretryCount\n\t\t}\n\t}\n\n\t// Categorize errors based on error properties and action context\n\tprivate categorizeError(error: Error, action?: OptimisticMediaAction): MediaErrorType {\n\t\tconst message = error.message.toLowerCase()\n\t\t\n\t\t// Network-related errors\n\t\tif (message.includes('network') || \n\t\t\tmessage.includes('fetch') || \n\t\t\tmessage.includes('connection') ||\n\t\t\terror.name === 'NetworkError') {\n\t\t\treturn MediaErrorType.NETWORK_ERROR\n\t\t}\n\t\t\n\t\t// Permission errors\n\t\tif (message.includes('permission') || \n\t\t\tmessage.includes('denied') ||\n\t\t\tmessage.includes('fullscreen') ||\n\t\t\terror.name === 'NotAllowedError') {\n\t\t\treturn MediaErrorType.PERMISSION_ERROR\n\t\t}\n\t\t\n\t\t// Playback errors\n\t\tif (message.includes('decode') ||\n\t\t\tmessage.includes('format') ||\n\t\t\tmessage.includes('codec') ||\n\t\t\taction?.type === 'PLAY') {\n\t\t\treturn MediaErrorType.PLAYBACK_ERROR\n\t\t}\n\t\t\n\t\t// Timeout errors\n\t\tif (message.includes('timeout') ||\n\t\t\terror.name === 'TimeoutError') {\n\t\t\treturn MediaErrorType.TIMEOUT_ERROR\n\t\t}\n\t\t\n\t\t// Not supported errors\n\t\tif (message.includes('not supported') ||\n\t\t\tmessage.includes('unsupported') ||\n\t\t\terror.name === 'NotSupportedError') {\n\t\t\treturn MediaErrorType.NOT_SUPPORTED_ERROR\n\t\t}\n\t\t\n\t\treturn MediaErrorType.UNKNOWN_ERROR\n\t}\n\n\t// Check if an error/action combination is retryable\n\tprivate isRetryable(errorType: MediaErrorType, action?: OptimisticMediaAction): boolean {\n\t\tconst errorRetryable = this.config.retryableErrors.includes(errorType)\n\t\tconst actionRetryable = !action || this.config.retryableActions.includes(action.type)\n\t\treturn errorRetryable && actionRetryable\n\t}\n\n\t// Calculate retry delay with exponential backoff\n\tprivate calculateRetryDelay(retryCount: number): number {\n\t\tif (!this.config.exponentialBackoff) {\n\t\t\treturn this.config.baseDelay\n\t\t}\n\t\t\n\t\tconst delay = this.config.baseDelay * Math.pow(2, retryCount)\n\t\treturn Math.min(delay, this.config.maxDelay)\n\t}\n\n\t// Handle an error with automatic retry logic\n\tasync handleError(\n\t\terror: unknown,\n\t\taction?: OptimisticMediaAction,\n\t\tretryCallback?: (action: OptimisticMediaAction) => Promise<void>\n\t): Promise<MediaError> {\n\t\tconst mediaError = this.createMediaError(error, action, action?.retryCount || 0)\n\t\tconst errorId = `${action?.type}-${mediaError.timestamp}`\n\t\t\n\t\t// Store error for tracking\n\t\tthis.errorQueue.set(errorId, mediaError)\n\t\t\n\t\t// Notify listeners\n\t\tthis.listeners.forEach(listener => listener(mediaError))\n\t\t\n\t\t// Try recovery strategies\n\t\tfor (const strategy of this.recoveryStrategies) {\n\t\t\tif (strategy.canRecover(mediaError)) {\n\t\t\t\ttry {\n\t\t\t\t\tawait strategy.recover(mediaError)\n\t\t\t\t\tbreak\n\t\t\t\t} catch (recoveryError) {\n\t\t\t\t\tconsole.warn('Recovery strategy failed:', recoveryError)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Retry if possible\n\t\tif (mediaError.retryable && \n\t\t\tmediaError.retryCount < this.config.maxRetries && \n\t\t\tretryCallback && \n\t\t\taction) {\n\t\t\t\n\t\t\tconst delay = this.calculateRetryDelay(mediaError.retryCount)\n\t\t\tconsole.log(`Retrying action ${action.type} in ${delay}ms (attempt ${mediaError.retryCount + 1}/${this.config.maxRetries})`)\n\t\t\t\n\t\t\tsetTimeout(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tawait retryCallback({\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tretryCount: mediaError.retryCount + 1\n\t\t\t\t\t})\n\t\t\t\t\t\n\t\t\t\t\t// Remove from error queue on successful retry\n\t\t\t\t\tthis.errorQueue.delete(errorId)\n\t\t\t\t} catch (retryError) {\n\t\t\t\t\t// Handle retry failure\n\t\t\t\t\tawait this.handleError(retryError, {\n\t\t\t\t\t\t...action,\n\t\t\t\t\t\tretryCount: mediaError.retryCount + 1\n\t\t\t\t\t}, retryCallback)\n\t\t\t\t}\n\t\t\t}, delay)\n\t\t}\n\t\t\n\t\treturn mediaError\n\t}\n\n\t// Subscribe to error events\n\tsubscribe(listener: (error: MediaError) => void): () => void {\n\t\tthis.listeners.add(listener)\n\t\treturn () => this.listeners.delete(listener)\n\t}\n\n\t// Get current errors\n\tgetErrors(): MediaError[] {\n\t\treturn Array.from(this.errorQueue.values())\n\t}\n\n\t// Clear specific error\n\tclearError(errorId: string): void {\n\t\tthis.errorQueue.delete(errorId)\n\t}\n\n\t// Clear all errors\n\tclearAllErrors(): void {\n\t\tthis.errorQueue.clear()\n\t}\n\n\t// Get error statistics\n\tgetErrorStats(): {\n\t\ttotalErrors: number\n\t\terrorsByType: Record<MediaErrorType, number>\n\t\tretryableErrors: number\n\t\trecentErrors: MediaError[]\n\t} {\n\t\tconst errors = this.getErrors()\n\t\tconst now = Date.now()\n\t\tconst recentThreshold = 5 * 60 * 1000 // 5 minutes\n\t\t\n\t\tconst errorsByType = errors.reduce((acc, error) => {\n\t\t\tacc[error.type] = (acc[error.type] || 0) + 1\n\t\t\treturn acc\n\t\t}, {} as Record<MediaErrorType, number>)\n\t\t\n\t\tconst retryableErrors = errors.filter(e => e.retryable).length\n\t\tconst recentErrors = errors.filter(e => now - e.timestamp < recentThreshold)\n\t\t\n\t\treturn {\n\t\t\ttotalErrors: errors.length,\n\t\t\terrorsByType,\n\t\t\tretryableErrors,\n\t\t\trecentErrors\n\t\t}\n\t}\n}\n\n// Hook for using error handling in components\nexport function useMediaErrorHandler(config?: Partial<RetryConfig>) {\n\tconst [handler] = React.useState(() => new MediaErrorHandler(config))\n\tconst [errors, setErrors] = React.useState<MediaError[]>([])\n\t\n\tReact.useEffect(() => {\n\t\tconst unsubscribe = handler.subscribe((error) => {\n\t\t\tsetErrors(current => [...current, error])\n\t\t})\n\t\t\n\t\treturn unsubscribe\n\t}, [handler])\n\t\n\tconst clearError = React.useCallback((errorId: string) => {\n\t\thandler.clearError(errorId)\n\t\tsetErrors(current => current.filter(e => `${e.action?.type}-${e.timestamp}` !== errorId))\n\t}, [handler])\n\t\n\tconst clearAllErrors = React.useCallback(() => {\n\t\thandler.clearAllErrors()\n\t\tsetErrors([])\n\t}, [handler])\n\t\n\treturn {\n\t\thandler,\n\t\terrors,\n\t\tclearError,\n\t\tclearAllErrors,\n\t\terrorStats: handler.getErrorStats()\n\t}\n}\n\n// Hook for error boundaries\nexport function useMediaErrorBoundary() {\n\tconst [error, setError] = React.useState<MediaError | null>(null)\n\t\n\tconst resetError = React.useCallback(() => {\n\t\tsetError(null)\n\t}, [])\n\t\n\tconst captureError = React.useCallback((error: unknown, action?: OptimisticMediaAction) => {\n\t\tconst handler = new MediaErrorHandler()\n\t\tconst mediaError = handler.createMediaError(error, action)\n\t\tsetError(mediaError)\n\t}, [])\n\t\n\treturn {\n\t\terror,\n\t\thasError: !!error,\n\t\tresetError,\n\t\tcaptureError\n\t}\n}","\"use client\"\n\nimport React from \"react\"\nimport {\n\ttype MediaAction,\n\tMediaActionTypes,\n\tMediaContext,\n\ttype MediaContextValue,\n\ttype MediaState,\n\ttype MediaStore,\n\tMediaStoreContext,\n\tinitialMediaState\n} from \"./media-context\"\nimport { createEnhancedMediaStore, type EnhancedMediaStore } from \"./media-store\"\nimport { useAutoMediaPersistence, type PersistenceConfig } from \"./persistence\"\nimport { MediaErrorHandler, type RetryConfig } from \"./error-handling\"\n\n// Legacy store for backward compatibility\nfunction createLegacyMediaStore(initialState: MediaState = initialMediaState): MediaStore {\n\tlet state = { ...initialState }\n\tconst listeners = new Set<() => void>()\n\n\tconst subscribe = (callback: () => void) => {\n\t\tlisteners.add(callback)\n\t\treturn () => listeners.delete(callback)\n\t}\n\n\tconst getState = () => state\n\n\tconst setState = (updates: Partial<MediaState>) => {\n\t\tconst newState = { ...state, ...updates }\n\t\tif (JSON.stringify(newState) !== JSON.stringify(state)) {\n\t\t\tstate = newState\n\t\t\tlisteners.forEach((callback) => callback())\n\t\t}\n\t}\n\n\tconst dispatch = (action: MediaAction) => {\n\t\tswitch (action.type) {\n\t\t\tcase MediaActionTypes.PLAY:\n\t\t\t\tsetState({ isPlaying: true, error: null })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.PAUSE:\n\t\t\t\tsetState({ isPlaying: false })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SEEK:\n\t\t\t\tsetState({ currentTime: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_VOLUME:\n\t\t\t\tsetState({ volume: Math.max(0, Math.min(1, action.detail)) })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.MUTE:\n\t\t\t\tsetState({ isMuted: true })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.UNMUTE:\n\t\t\t\tsetState({ isMuted: false })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.TOGGLE_MUTE:\n\t\t\t\tsetState({ isMuted: !state.isMuted })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_DURATION:\n\t\t\t\tsetState({ duration: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_CURRENT_TIME:\n\t\t\t\tsetState({ currentTime: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_BUFFERED:\n\t\t\t\tsetState({ buffered: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_LOADING:\n\t\t\t\tsetState({ isLoading: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_ERROR:\n\t\t\t\tsetState({ error: action.detail, isLoading: false })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.ENTER_FULLSCREEN:\n\t\t\t\tsetState({ isFullscreen: true })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.EXIT_FULLSCREEN:\n\t\t\t\tsetState({ isFullscreen: false })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.ENTER_PIP:\n\t\t\t\tsetState({ isPictureInPicture: true })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.EXIT_PIP:\n\t\t\t\tsetState({ isPictureInPicture: false })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_PLAYBACK_RATE:\n\t\t\t\tsetState({ playbackRate: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_SUBTITLE_TRACK:\n\t\t\t\tsetState({ selectedSubtitleTrack: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.SET_RENDITION:\n\t\t\t\tsetState({ selectedRendition: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.TOGGLE_SUBTITLES:\n\t\t\t\tsetState({ subtitlesShowing: !state.subtitlesShowing })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.PREVIEW_TIME:\n\t\t\t\tsetState({ previewTime: action.detail })\n\t\t\t\tbreak\n\n\t\t\tcase MediaActionTypes.CLEAR_PREVIEW:\n\t\t\t\tsetState({ previewTime: null, previewImage: null, previewCoords: null })\n\t\t\t\tbreak\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(`Unknown media action type: ${action.type}`)\n\t\t}\n\t}\n\n\treturn { subscribe, getState, setState, dispatch }\n}\n\n// Enhanced media provider props with React 19 features\nexport interface MediaProviderProps {\n\tchildren: React.ReactNode\n\tmediaId?: string\n\tlabelId?: string\n\tdescriptionId?: string\n\tdir?: \"ltr\" | \"rtl\"\n\tportalContainer?: HTMLElement\n\ttooltipDelayDuration?: number\n\ttooltipSideOffset?: number\n\tdisabled?: boolean\n\tisVideo?: boolean\n\twithoutTooltip?: boolean\n\tinitialState?: Partial<MediaState>\n\t\n\t// React 19 enhancements\n\tuseEnhancedStore?: boolean\n\tpersistenceConfig?: Partial<PersistenceConfig>\n\tretryConfig?: Partial<RetryConfig>\n\tenableOptimisticUpdates?: boolean\n\tenableErrorRecovery?: boolean\n\tonStateRehydrated?: (state: Partial<MediaState>) => void\n}\n\n// Enhanced media provider component with React 19 features\nexport function MediaProvider({\n\tchildren,\n\tmediaId = \"media-player\",\n\tlabelId = \"media-player-label\",\n\tdescriptionId = \"media-player-description\",\n\tdir = \"ltr\",\n\tportalContainer,\n\ttooltipDelayDuration = 700,\n\ttooltipSideOffset = 4,\n\tdisabled = false,\n\tisVideo = true,\n\twithoutTooltip = false,\n\tinitialState = {},\n\t// React 19 enhancements\n\tuseEnhancedStore = true,\n\tpersistenceConfig,\n\tretryConfig,\n\tenableOptimisticUpdates = true,\n\tenableErrorRecovery = true,\n\tonStateRehydrated\n}: MediaProviderProps) {\n\tconst rootRef = React.useRef<HTMLDivElement>(null)\n\tconst mediaRef = React.useRef<HTMLVideoElement | HTMLAudioElement>(null)\n\n\t// Create enhanced or legacy store based on configuration\n\tconst store = React.useMemo(() => {\n\t\tconst combinedInitialState = { ...initialMediaState, ...initialState }\n\t\t\n\t\tif (useEnhancedStore) {\n\t\t\treturn createEnhancedMediaStore(combinedInitialState, persistenceConfig) as MediaStore & EnhancedMediaStore\n\t\t} else {\n\t\t\treturn createLegacyMediaStore(combinedInitialState)\n\t\t}\n\t}, [useEnhancedStore, persistenceConfig])\n\n\t// Error handler for React 19 features\n\tconst errorHandler = React.useMemo(() => {\n\t\tif (enableErrorRecovery && useEnhancedStore) {\n\t\t\treturn new MediaErrorHandler(retryConfig)\n\t\t}\n\t\treturn null\n\t}, [enableErrorRecovery, useEnhancedStore, retryConfig])\n\n\t// Auto-persistence for React 19 enhanced store\n\tconst persistenceResult = useEnhancedStore ? useAutoMediaPersistence(\n\t\tstore.getState(),\n\t\tmediaId,\n\t\tpersistenceConfig\n\t) : null\n\n\t// Handle state rehydration callback\n\tReact.useEffect(() => {\n\t\tif (persistenceResult?.isRehydrated && onStateRehydrated) {\n\t\t\tconst currentState = store.getState()\n\t\t\tonStateRehydrated(currentState)\n\t\t}\n\t}, [persistenceResult?.isRehydrated, onStateRehydrated, store])\n\n\t// Enhanced context value with React 19 features\n\tconst contextValue = React.useMemo<MediaContextValue & {\n\t\terrorHandler?: MediaErrorHandler | null\n\t\tisEnhanced?: boolean\n\t\tisRehydrated?: boolean\n\t}>(\n\t\t() => ({\n\t\t\tmediaId,\n\t\t\tlabelId,\n\t\t\tdescriptionId,\n\t\t\tdir,\n\t\t\trootRef,\n\t\t\tmediaRef,\n\t\t\tportalContainer,\n\t\t\ttooltipDelayDuration,\n\t\t\ttooltipSideOffset,\n\t\t\tdisabled,\n\t\t\tisVideo,\n\t\t\twithoutTooltip,\n\t\t\t// React 19 enhancements\n\t\t\terrorHandler,\n\t\t\tisEnhanced: useEnhancedStore,\n\t\t\tisRehydrated: persistenceResult?.isRehydrated\n\t\t}),\n\t\t[\n\t\t\tmediaId,\n\t\t\tlabelId,\n\t\t\tdescriptionId,\n\t\t\tdir,\n\t\t\tportalContainer,\n\t\t\ttooltipDelayDuration,\n\t\t\ttooltipSideOffset,\n\t\t\tdisabled,\n\t\t\tisVideo,\n\t\t\twithoutTooltip,\n\t\t\terrorHandler,\n\t\t\tuseEnhancedStore,\n\t\t\tpersistenceResult?.isRehydrated\n\t\t]\n\t)\n\n\treturn (\n\t\t<MediaContext.Provider value={contextValue}>\n\t\t\t<MediaStoreContext.Provider value={store}>{children}</MediaStoreContext.Provider>\n\t\t</MediaContext.Provider>\n\t)\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","self","source","owner","debugStack","debugTask","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","MediaActionTypes","MediaContext","useMediaContext","context","MediaStoreContext","useMediaStore","store","useMediaSelector","selector","getSnapshot","useMediaDispatch","useOptimisticMediaSelector","isEnhanced","useMediaEnhancements","errorHandler","isRehydrated","initialMediaState","DEFAULT_PERSISTENCE_CONFIG","createEnhancedMediaStore","initialState","persistenceConfig","state","optimisticState","actionState","listeners","optimisticQueue","persistenceTimeout","subscribe","callback","notifyListeners","getState","getOptimisticState","getActionState","persistState","persistedData","acc","error","debouncedPersist","rehydrateFromStorage","stored","parsedData","timestamp","persistedState","maxAge","clearPersistedState","newState","setPersistenceConfig","newConfig","setState","updates","applyOptimisticUpdate","action","actionId","optimisticUpdate","processMediaAction","rollbackOptimistic","update","currentState","dispatch","dispatchOptimistic","resolve","queuedAction","shouldRetry","actionType","STORAGE_KEYS","LocalStorageAdapter","DEFAULT_CONFIG","MediaPersistenceManager","__publicField","data","parsed","preferences","updated","item","history","newItem","filteredHistory","h","updatedHistory","mediaId","position","playbackPosition","fn","existingTimeout","timeout","useMediaPersistence","manager","useAutoMediaPersistence","setIsRehydrated","isMounted","session","rehydratedState","DEFAULT_RETRY_CONFIG","NetworkErrorRecovery","handleOnline","PlaybackErrorRecovery","mediaElement","handleCanPlay","PermissionErrorRecovery","MediaErrorHandler","recoveryStrategies","retryCount","errorType","message","errorRetryable","actionRetryable","delay","retryCallback","mediaError","errorId","listener","strategy","recoveryError","retryError","errors","now","recentThreshold","errorsByType","retryableErrors","e","recentErrors","createLegacyMediaStore","MediaProvider","labelId","descriptionId","dir","portalContainer","tooltipDelayDuration","tooltipSideOffset","disabled","isVideo","withoutTooltip","useEnhancedStore","retryConfig","enableOptimisticUpdates","enableErrorRecovery","onStateRehydrated","rootRef","mediaRef","combinedInitialState","persistenceResult","contextValue","jsx"],"mappings":";;;;;;;;;;;;;;;;;;AAWA,MAAIA,IAAqB,OAAO,IAAI,4BAA4B,GAC9DC,IAAsB,OAAO,IAAI,gBAAgB;AACnD,WAASC,EAAQC,GAAMC,GAAQC,GAAU;AACvC,QAAIC,IAAM;AAGV,QAFWD,MAAX,WAAwBC,IAAM,KAAKD,IACxBD,EAAO,QAAlB,WAA0BE,IAAM,KAAKF,EAAO,MACxC,SAASA,GAAQ;AACnB,MAAAC,IAAW,CAAA;AACX,eAASE,KAAYH;AACnB,QAAUG,MAAV,UAAuBF,EAASE,CAAQ,IAAIH,EAAOG,CAAQ;AAAA,IACjE,MAAS,CAAAF,IAAWD;AAClB,WAAAA,IAASC,EAAS,KACX;AAAA,MACL,UAAUL;AAAA,MACV,MAAMG;AAAA,MACN,KAAKG;AAAA,MACL,KAAgBF,MAAX,SAAoBA,IAAS;AAAA,MAClC,OAAOC;AAAA;EAEX;AACA,SAAAG,EAAA,WAAmBP,GACnBO,EAAA,MAAcN,GACdM,EAAA,OAAeN;;;;;;;;;;;;;;wBCtBE,QAAQ,IAAI,aAA7B,iBACG,WAAY;AACX,aAASO,EAAyBN,GAAM;AACtC,UAAYA,KAAR,KAAc,QAAO;AACzB,UAAmB,OAAOA,KAAtB;AACF,eAAOA,EAAK,aAAaO,IACrB,OACAP,EAAK,eAAeA,EAAK,QAAQ;AACvC,UAAiB,OAAOA,KAApB,SAA0B,QAAOA;AACrC,cAAQA,GAAI;AAAA,QACV,KAAKF;AACH,iBAAO;AAAA,QACT,KAAKU;AACH,iBAAO;AAAA,QACT,KAAKC;AACH,iBAAO;AAAA,QACT,KAAKC;AACH,iBAAO;AAAA,QACT,KAAKC;AACH,iBAAO;AAAA,QACT,KAAKC;AACH,iBAAO;AAAA,MACjB;AACM,UAAiB,OAAOZ,KAApB;AACF,gBACgB,OAAOA,EAAK,OAAzB,YACC,QAAQ;AAAA,UACN;AAAA,WAEJA,EAAK,UACf;AAAA,UACU,KAAKa;AACH,mBAAO;AAAA,UACT,KAAKC;AACH,oBAAQd,EAAK,eAAe,aAAa;AAAA,UAC3C,KAAKe;AACH,oBAAQf,EAAK,SAAS,eAAe,aAAa;AAAA,UACpD,KAAKgB;AACH,gBAAIC,IAAYjB,EAAK;AACrB,mBAAAA,IAAOA,EAAK,aACZA,MACIA,IAAOiB,EAAU,eAAeA,EAAU,QAAQ,IACnDjB,IAAcA,MAAP,KAAc,gBAAgBA,IAAO,MAAM,eAC9CA;AAAA,UACT,KAAKkB;AACH,mBACGD,IAAYjB,EAAK,eAAe,MACxBiB,MAAT,OACIA,IACAX,EAAyBN,EAAK,IAAI,KAAK;AAAA,UAE/C,KAAKmB;AACH,YAAAF,IAAYjB,EAAK,UACjBA,IAAOA,EAAK;AACZ,gBAAI;AACF,qBAAOM,EAAyBN,EAAKiB,CAAS,CAAC;AAAA,YAC7D,QAAwB;AAAA,YAAA;AAAA,QACxB;AACM,aAAO;AAAA,IACb;AACI,aAASG,EAAmBC,GAAO;AACjC,aAAO,KAAKA;AAAA,IAClB;AACI,aAASC,EAAuBD,GAAO;AACrC,UAAI;AAEF,YAAIE,IAA2B;AAAA,MACvC,QAAkB;AACV,QAAAA,IAA2B;AAAA,MACnC;AACM,UAAIA,GAA0B;AAC5B,QAAAA,IAA2B;AAC3B,YAAIC,IAAwBD,EAAyB,OACjDE,IACc,OAAO,UAAtB,cACC,OAAO,eACPJ,EAAM,OAAO,WAAW,KAC1BA,EAAM,YAAY,QAClB;AACF,eAAAG,EAAsB;AAAA,UACpBD;AAAA,UACA;AAAA,UACAE;AAAA,WAEKL,EAAmBC,CAAK;AAAA,MACvC;AAAA,IACA;AACI,aAASK,EAAY1B,GAAM;AACzB,UAAIA,MAASF,EAAqB,QAAO;AACzC,UACe,OAAOE,KAApB,YACSA,MAAT,QACAA,EAAK,aAAamB;AAElB,eAAO;AACT,UAAI;AACF,YAAIQ,IAAOrB,EAAyBN,CAAI;AACxC,eAAO2B,IAAO,MAAMA,IAAO,MAAM;AAAA,MACzC,QAAkB;AACV,eAAO;AAAA,MACf;AAAA,IACA;AACI,aAASC,IAAW;AAClB,UAAIC,IAAaC,EAAqB;AACtC,aAAgBD,MAAT,OAAsB,OAAOA,EAAW,SAAQ;AAAA,IAC7D;AACI,aAASE,IAAe;AACtB,aAAO,MAAM,uBAAuB;AAAA,IAC1C;AACI,aAASC,EAAY/B,GAAQ;AAC3B,UAAIgC,EAAe,KAAKhC,GAAQ,KAAK,GAAG;AACtC,YAAIiC,IAAS,OAAO,yBAAyBjC,GAAQ,KAAK,EAAE;AAC5D,YAAIiC,KAAUA,EAAO,eAAgB,QAAO;AAAA,MACpD;AACM,aAAkBjC,EAAO,QAAlB;AAAA,IACb;AACI,aAASkC,EAA2BC,GAAOC,GAAa;AACtD,eAASC,IAAwB;AAC/B,QAAAC,MACIA,IAA6B,IAC/B,QAAQ;AAAA,UACN;AAAA,UACAF;AAAA,QACZ;AAAA,MACA;AACM,MAAAC,EAAsB,iBAAiB,IACvC,OAAO,eAAeF,GAAO,OAAO;AAAA,QAClC,KAAKE;AAAA,QACL,cAAc;AAAA,MACtB,CAAO;AAAA,IACP;AACI,aAASE,IAAyC;AAChD,UAAIC,IAAgBnC,EAAyB,KAAK,IAAI;AACtD,aAAAoC,EAAuBD,CAAa,MAChCC,EAAuBD,CAAa,IAAI,IAC1C,QAAQ;AAAA,QACN;AAAA,MACV,IACMA,IAAgB,KAAK,MAAM,KACTA,MAAX,SAA2BA,IAAgB;AAAA,IACxD;AACI,aAASE,EACP3C,GACAG,GACAyC,GACAC,GACAC,GACAV,GACAW,GACAC,GACA;AACA,aAAAJ,IAAOR,EAAM,KACbpC,IAAO;AAAA,QACL,UAAUH;AAAA,QACV,MAAMG;AAAA,QACN,KAAKG;AAAA,QACL,OAAOiC;AAAA,QACP,QAAQU;AAAA,UAEWF,MAAX,SAAkBA,IAAO,UAAnC,OACI,OAAO,eAAe5C,GAAM,OAAO;AAAA,QACjC,YAAY;AAAA,QACZ,KAAKwC;AAAA,OACN,IACD,OAAO,eAAexC,GAAM,OAAO,EAAE,YAAY,IAAI,OAAO,MAAM,GACtEA,EAAK,SAAS,CAAA,GACd,OAAO,eAAeA,EAAK,QAAQ,aAAa;AAAA,QAC9C,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACf,CAAO,GACD,OAAO,eAAeA,GAAM,cAAc;AAAA,QACxC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACf,CAAO,GACD,OAAO,eAAeA,GAAM,eAAe;AAAA,QACzC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO+C;AAAA,MACf,CAAO,GACD,OAAO,eAAe/C,GAAM,cAAc;AAAA,QACxC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAOgD;AAAA,MACf,CAAO,GACD,OAAO,WAAW,OAAO,OAAOhD,EAAK,KAAK,GAAG,OAAO,OAAOA,CAAI,IACxDA;AAAA,IACb;AACI,aAASiD,EACPjD,GACAC,GACAC,GACAgD,GACAL,GACAD,GACAG,GACAC,GACA;AACA,UAAIG,IAAWlD,EAAO;AACtB,UAAekD,MAAX;AACF,YAAID;AACF,cAAIE,EAAYD,CAAQ,GAAG;AACzB,iBACED,IAAmB,GACnBA,IAAmBC,EAAS,QAC5BD;AAEA,cAAAG,EAAkBF,EAASD,CAAgB,CAAC;AAC9C,mBAAO,UAAU,OAAO,OAAOC,CAAQ;AAAA,UACnD;AACY,oBAAQ;AAAA,cACN;AAAA;YAED,CAAAE,EAAkBF,CAAQ;AACjC,UAAIlB,EAAe,KAAKhC,GAAQ,KAAK,GAAG;AACtC,QAAAkD,IAAW7C,EAAyBN,CAAI;AACxC,YAAIsD,IAAO,OAAO,KAAKrD,CAAM,EAAE,OAAO,SAAUsD,IAAG;AACjD,iBAAiBA,OAAV;AAAA,QACjB,CAAS;AACD,QAAAL,IACE,IAAII,EAAK,SACL,oBAAoBA,EAAK,KAAK,SAAS,IAAI,WAC3C,kBACNE,GAAsBL,IAAWD,CAAgB,MAC7CI,IACA,IAAIA,EAAK,SAAS,MAAMA,EAAK,KAAK,SAAS,IAAI,WAAW,MAC5D,QAAQ;AAAA,UACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UACAJ;AAAA,UACAC;AAAA,UACAG;AAAA,UACAH;AAAA,WAEDK,GAAsBL,IAAWD,CAAgB,IAAI;AAAA,MAChE;AAMM,UALAC,IAAW,MACAjD,MAAX,WACGoB,EAAuBpB,CAAQ,GAAIiD,IAAW,KAAKjD,IACtD8B,EAAY/B,CAAM,MACfqB,EAAuBrB,EAAO,GAAG,GAAIkD,IAAW,KAAKlD,EAAO,MAC3D,SAASA,GAAQ;AACnB,QAAAC,IAAW,CAAA;AACX,iBAASE,KAAYH;AACnB,UAAUG,MAAV,UAAuBF,EAASE,CAAQ,IAAIH,EAAOG,CAAQ;AAAA,MACrE,MAAa,CAAAF,IAAWD;AAClB,aAAAkD,KACEhB;AAAA,QACEjC;AAAA,QACe,OAAOF,KAAtB,aACIA,EAAK,eAAeA,EAAK,QAAQ,YACjCA;AAAA,SAED2C;AAAA,QACL3C;AAAA,QACAmD;AAAA,QACAP;AAAA,QACAC;AAAA,QACAjB,EAAQ;AAAA,QACR1B;AAAA,QACA6C;AAAA,QACAC;AAAA;IAER;AACI,aAASK,EAAkBI,GAAM;AAC/B,MAAa,OAAOA,KAApB,YACWA,MAAT,QACAA,EAAK,aAAa5D,KAClB4D,EAAK,WACJA,EAAK,OAAO,YAAY;AAAA,IACjC;AACI,QAAIC,IAAQC,GACV9D,IAAqB,OAAO,IAAI,4BAA4B,GAC5DgB,IAAoB,OAAO,IAAI,cAAc,GAC7Cf,IAAsB,OAAO,IAAI,gBAAgB,GACjDW,IAAyB,OAAO,IAAI,mBAAmB,GACvDD,IAAsB,OAAO,IAAI,gBAAgB,GAE/CO,IAAsB,OAAO,IAAI,gBAAgB,GACnDD,IAAqB,OAAO,IAAI,eAAe,GAC/CE,IAAyB,OAAO,IAAI,mBAAmB,GACvDN,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAA2B,OAAO,IAAI,qBAAqB,GAC3DO,IAAkB,OAAO,IAAI,YAAY,GACzCC,IAAkB,OAAO,IAAI,YAAY,GACzCP,IAAsB,OAAO,IAAI,gBAAgB,GACjDL,IAAyB,OAAO,IAAI,wBAAwB,GAC5DuB,IACE4B,EAAM,iEACRzB,IAAiB,OAAO,UAAU,gBAClCmB,IAAc,MAAM,SACpBQ,IAAa,QAAQ,aACjB,QAAQ,aACR,WAAY;AACV,aAAO;AAAA,IACnB;AACI,IAAAF,IAAQ;AAAA,MACN,4BAA4B,SAAUG,GAAmB;AACvD,eAAOA,EAAiB;AAAA,MAChC;AAAA;AAEI,QAAItB,GACAG,IAAyB,CAAA,GACzBoB,IAAyBJ,EAAM,0BAA0B,EAAE;AAAA,MAC7DA;AAAA,MACA3B;AAAA,IACN,EAAK,GACGgC,KAAwBH,EAAWlC,EAAYK,CAAY,CAAC,GAC5DyB,KAAwB,CAAA;AAC5B,IAAAQ,EAAA,WAAmBlE,GACnBkE,EAAA,MAAc,SAAUhE,GAAMC,GAAQC,GAAU2C,GAAQD,GAAM;AAC5D,UAAIqB,IACF,MAAMnC,EAAqB;AAC7B,aAAOmB;AAAA,QACLjD;AAAA,QACAC;AAAA,QACAC;AAAA,QACA;AAAA,QACA2C;AAAA,QACAD;AAAA,QACAqB,IACI,MAAM,uBAAuB,IAC7BH;AAAA,QACJG,IAAmBL,EAAWlC,EAAY1B,CAAI,CAAC,IAAI+D;AAAA;IAE3D,GACIC,EAAA,OAAe,SAAUhE,GAAMC,GAAQC,GAAU2C,GAAQD,GAAM;AAC7D,UAAIqB,IACF,MAAMnC,EAAqB;AAC7B,aAAOmB;AAAA,QACLjD;AAAA,QACAC;AAAA,QACAC;AAAA,QACA;AAAA,QACA2C;AAAA,QACAD;AAAA,QACAqB,IACI,MAAM,uBAAuB,IAC7BH;AAAA,QACJG,IAAmBL,EAAWlC,EAAY1B,CAAI,CAAC,IAAI+D;AAAA;IAE3D;AAAA,EACA,GAAG;;;;wBCnWC,QAAQ,IAAI,aAAa,eAC3BG,EAAA,UAAiBP,gBAAAA,GAAA,IAEjBO,EAAA,UAAiBC,gBAAAA,GAAA;;;ACAZ,MAAMC,IAAmB;AAAA,EAC/B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,eAAe;AAAA;AAAA,EAEf,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,wBAAwB;AACzB,GAyEaC,KAAeX,EAAM,cAAwC,IAAI;AAGvE,SAASY,KAAkB;AACjC,QAAMC,IAAUb,EAAM,WAAWW,EAAY;AAC7C,MAAI,CAACE;AACJ,UAAM,IAAI,MAAM,mDAAmD;AAEpE,SAAOA;AACR;AAGO,MAAMC,KAAoBd,EAAM,cAAiC,IAAI;AAGrE,SAASe,IAAgB;AAC/B,QAAMC,IAAQhB,EAAM,WAAWc,EAAiB;AAChD,MAAI,CAACE;AACJ,UAAM,IAAI,MAAM,iDAAiD;AAElE,SAAOA;AACR;AAGO,SAASC,GAAoBC,GAAuC;AAC1E,QAAMF,IAAQD,EAAA,GAGRI,IAAc,MAAMD,EAASF,EAAM,UAAU;AAEnD,SAAOhB,EAAM,qBAAqBgB,EAAM,WAAWG,GAAaA,CAAW;AAC5E;AAGO,SAASC,KAAmB;AAElC,SADcL,EAAA,EACD;AACd;AAGO,SAASM,GAA8BH,GAAuC;AACpF,QAAMF,IAAQD,EAAA,GAGRO,IAAa,wBAAwBN,GAErCG,IAAc,MAGXD,EAFJI,IAEcN,EAAc,uBAGfA,EAAM,UAH6B;AAOrD,SAAOhB,EAAM,qBAAqBgB,EAAM,WAAWG,GAAaA,CAAW;AAC5E;AAGO,SAASI,KAAuB;AACtC,QAAMP,IAAQD,EAAA,GACRF,IAAUD,GAAA,GAEVU,IAAa,wBAAwBN,GACrCQ,IAAe,kBAAkBX,IAAWA,EAAgB,eAAe,MAC3EY,IAAe,kBAAkBZ,IAAWA,EAAgB,eAAe;AAEjF,SAAO;AAAA,IACN,YAAAS;AAAA,IACA,cAAAE;AAAA,IACA,cAAAC;AAAA,IACA,cAAcH,IAAcN,EAAc,mBAAmB;AAAA,EAAA;AAE/D;AAGO,MAAMU,IAAgC;AAAA,EAC5C,WAAW;AAAA,EACX,aAAa;AAAA,EACb,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,kBAAkB,CAAA;AAAA,EAClB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe,CAAA;AAAA,EACf,eAAe,CAAA;AAChB,GC/JMC,KAAgD;AAAA,EACrD,SAAS;AAAA,EACT,KAAK;AAAA,EACL,SAAS,CAAC,UAAU,WAAW,gBAAgB,kBAAkB;AAAA,EACjE,YAAY;AACb;AAGO,SAASC,GACfC,IAA2BH,GAC3BI,IAAgD,CAAA,GAC3B;AACrB,MAAIC,IAAQ,EAAE,GAAGF,EAAA,GACbG,IAAkB,EAAE,GAAGH,EAAA,GACvBI,IAAgC;AAAA,IACnC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,EAAA;AAGb,QAAM1F,IAAS,EAAE,GAAGoF,IAA4B,GAAGG,EAAA,GAC7CI,wBAAgB,IAAA,GAChBC,wBAAsB,IAAA;AAC5B,MAAIC,IAA4C;AAEhD,QAAMC,IAAY,CAACC,OAClBJ,EAAU,IAAII,CAAQ,GACf,MAAMJ,EAAU,OAAOI,CAAQ,IAGjCC,IAAkB,MAAM;AAC7B,IAAAL,EAAU,QAAQ,CAACI,MAAaA,EAAA,CAAU;AAAA,EAC3C,GAEME,IAAW,MAAMT,GAEjBU,IAAqB,MAAMT,GAE3BU,IAAiB,MAAMT,GAGvBU,IAAe,YAAY;AAChC,QAAI,CAACpG,EAAO,WAAW,OAAO,SAAW,IAAa;AAEtD,UAAMqG,IAAgBrG,EAAO,QAAQ,OAAO,CAACsG,GAAKpG,OAChDoG,EAAYpG,CAAG,IAAIsF,EAAMtF,CAAG,GACtBoG,IACL,CAAA,CAAyB;AAE5B,QAAI;AACH,mBAAa,QAAQtG,EAAO,KAAK,KAAK,UAAU;AAAA,QAC/C,GAAGqG;AAAA,QACH,WAAW,KAAK,IAAA;AAAA,MAAI,CACpB,CAAC;AAAA,IACH,SAASE,GAAO;AACf,cAAQ,KAAK,kCAAkCA,CAAK;AAAA,IACrD;AAAA,EACD,GAEMC,IAAmB,MAAM;AAC9B,IAAIX,KACH,aAAaA,CAAkB,GAEhCA,IAAqB,WAAWO,GAAcpG,EAAO,UAAU;AAAA,EAChE,GAEMyG,IAAuB,YAAY;AACxC,QAAI,GAACzG,EAAO,WAAW,OAAO,SAAW;AAEzC,UAAI;AACH,cAAM0G,IAAS,aAAa,QAAQ1G,EAAO,GAAG;AAC9C,YAAI,CAAC0G,EAAQ;AAEb,cAAMC,IAAa,KAAK,MAAMD,CAAM,GAC9B,EAAE,WAAAE,GAAW,GAAGC,EAAA,IAAmBF,GAGnCG,IAAS,QAAc,KAAK;AAClC,YAAIF,KAAa,KAAK,IAAA,IAAQA,IAAYE,GAAQ;AACjD,UAAAC,EAAA;AACA;AAAA,QACD;AAGA,cAAMC,IAAW,EAAE,GAAGxB,GAAO,GAAGqB,EAAA;AAChC,QAAI,KAAK,UAAUG,CAAQ,MAAM,KAAK,UAAUxB,CAAK,MACpDA,IAAQwB,GACRvB,IAAkB,EAAE,GAAGuB,EAAA,GACvBhB,EAAA;AAAA,MAEF,SAASO,GAAO;AACf,gBAAQ,KAAK,oCAAoCA,CAAK;AAAA,MACvD;AAAA,EACD,GAEMQ,IAAsB,MAAM;AACjC,QAAI,SAAO,SAAW;AACtB,UAAI;AACH,qBAAa,WAAW/G,EAAO,GAAG;AAAA,MACnC,SAASuG,GAAO;AACf,gBAAQ,KAAK,oCAAoCA,CAAK;AAAA,MACvD;AAAA,EACD,GAEMU,IAAuB,CAACC,MAA0C;AACvE,WAAO,OAAOlH,GAAQkH,CAAS;AAAA,EAChC,GAEMC,IAAW,CAACC,MAAiC;AAClD,UAAMJ,IAAW,EAAE,GAAGxB,GAAO,GAAG4B,EAAA;AAChC,IAAI,KAAK,UAAUJ,CAAQ,MAAM,KAAK,UAAUxB,CAAK,MACpDA,IAAQwB,GACRvB,IAAkB,EAAE,GAAGuB,EAAA,GAGvBR,EAAA,GACAR,EAAA;AAAA,EAEF,GAEMqB,IAAwB,CAACC,MAAkC;AAChE,UAAMC,IAAW,GAAGD,EAAO,IAAI,IAAI,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,CAAQ;AAG9D,IAAA1B,EAAgB,IAAI2B,GAAU,EAAE,GAAGD,GAAQ,WAAW,KAAK,IAAA,GAAO;AAGlE,UAAME,IAAmBC,EAAmBhC,GAAiB6B,CAAM;AACnE,WAAA7B,IAAkB,EAAE,GAAGA,GAAiB,GAAG+B,EAAA,GAE3CxB,EAAA,GACOuB;AAAA,EACR,GAEMG,IAAqB,CAACH,MAAqB;AAChD,QAAK3B,EAAgB,IAAI2B,CAAQ,GAGjC;AAAA,MAAA3B,EAAgB,OAAO2B,CAAQ,GAG/B9B,IAAkB,EAAE,GAAGD,EAAA;AACvB,iBAAW,CAAA,EAAG8B,CAAM,KAAK1B,GAAiB;AACzC,cAAM+B,IAASF,EAAmBhC,GAAiB6B,CAAM;AACzD,QAAA7B,IAAkB,EAAE,GAAGA,GAAiB,GAAGkC,EAAA;AAAA,MAC5C;AAEA,MAAA3B,EAAA;AAAA;AAAA,EACD,GAGMyB,IAAqB,CAACG,GAA0BN,MAA6C;AAClG,YAAQA,EAAO,MAAA;AAAA,MACd,KAAKnD,EAAiB;AACrB,eAAO,EAAE,WAAW,IAAM,OAAO,KAAA;AAAA,MAElC,KAAKA,EAAiB;AACrB,eAAO,EAAE,WAAW,GAAA;AAAA,MAErB,KAAKA,EAAiB;AACrB,eAAO,EAAE,aAAamD,EAAO,OAAA;AAAA,MAE9B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGmD,EAAO,MAAM,CAAC,EAAA;AAAA,MAExD,KAAKnD,EAAiB;AACrB,eAAO,EAAE,SAAS,GAAA;AAAA,MAEnB,KAAKA,EAAiB;AACrB,eAAO,EAAE,SAAS,GAAA;AAAA,MAEnB,KAAKA,EAAiB;AACrB,eAAO,EAAE,SAAS,CAACyD,EAAa,QAAA;AAAA,MAEjC,KAAKzD,EAAiB;AACrB,eAAO,EAAE,UAAUmD,EAAO,OAAA;AAAA,MAE3B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,aAAamD,EAAO,OAAA;AAAA,MAE9B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,UAAUmD,EAAO,OAAA;AAAA,MAE3B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,WAAWmD,EAAO,OAAA;AAAA,MAE5B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,OAAOmD,EAAO,QAAQ,WAAW,GAAA;AAAA,MAE3C,KAAKnD,EAAiB;AACrB,eAAO,EAAE,cAAc,GAAA;AAAA,MAExB,KAAKA,EAAiB;AACrB,eAAO,EAAE,cAAc,GAAA;AAAA,MAExB,KAAKA,EAAiB;AACrB,eAAO,EAAE,oBAAoB,GAAA;AAAA,MAE9B,KAAKA,EAAiB;AACrB,eAAO,EAAE,oBAAoB,GAAA;AAAA,MAE9B,KAAKA,EAAiB;AACrB,eAAO,EAAE,cAAcmD,EAAO,OAAA;AAAA,MAE/B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,uBAAuBmD,EAAO,OAAA;AAAA,MAExC,KAAKnD,EAAiB;AACrB,eAAO,EAAE,mBAAmBmD,EAAO,OAAA;AAAA,MAEpC,KAAKnD,EAAiB;AACrB,eAAO,EAAE,kBAAkB,CAACyD,EAAa,iBAAA;AAAA,MAE1C,KAAKzD,EAAiB;AACrB,eAAO,EAAE,aAAamD,EAAO,OAAA;AAAA,MAE9B,KAAKnD,EAAiB;AACrB,eAAO,EAAE,aAAa,MAAM,cAAc,MAAM,eAAe,KAAA;AAAA,MAEhE;AACC,uBAAQ,KAAK,8BAA8BmD,EAAO,IAAI,EAAE,GACjD,CAAA;AAAA,IAAC;AAAA,EAEX,GAEMO,IAAW,CAACP,MAAwB;AACzC,UAAMF,IAAUK,EAAmBjC,GAAO8B,CAAM;AAChD,IAAAH,EAASC,CAAO;AAAA,EACjB,GAEMU,IAAqB,OAAOR,MAAiD;AAElF,IAAA5B,IAAc;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,MACP,YAAY4B;AAAA,MACZ,YAAYA,EAAO,cAAc;AAAA,IAAA;AAIlC,UAAMC,IAAWF,EAAsBC,CAAM;AAE7C,QAAI;AAEH,YAAM,IAAI,QAAQ,CAAAS,MAAW,WAAWA,GAAS,CAAC,CAAC;AAGnD,YAAMX,IAAUK,EAAmBjC,GAAO8B,CAAM,GAC1CN,IAAW,EAAE,GAAGxB,GAAO,GAAG4B,EAAA;AAEhC,MAAI,KAAK,UAAUJ,CAAQ,MAAM,KAAK,UAAUxB,CAAK,MACpDA,IAAQwB,GACRR,EAAA,IAIDZ,EAAgB,OAAO2B,CAAQ,GAG/B7B,IAAc;AAAA,QACb,SAAS;AAAA,QACT,OAAO;AAAA,QACP,YAAY4B;AAAA,QACZ,YAAY;AAAA,MAAA,GAIb7B,IAAkB,EAAE,GAAGD,EAAA;AACvB,iBAAW,CAAA,EAAGwC,CAAY,KAAKpC,GAAiB;AAC/C,cAAM+B,IAASF,EAAmBhC,GAAiBuC,CAAY;AAC/D,QAAAvC,IAAkB,EAAE,GAAGA,GAAiB,GAAGkC,EAAA;AAAA,MAC5C;AAAA,IAED,SAASpB,GAAO;AAEf,MAAAmB,EAAmBH,CAAQ,GAG3B7B,IAAc;AAAA,QACb,SAAS;AAAA,QACT,OAHoBa,aAAiB,QAAQA,EAAM,UAAU;AAAA,QAI7D,YAAYe;AAAA,QACZ,aAAaA,EAAO,cAAc,KAAK;AAAA,MAAA,GAIpC5B,EAAY,aAAa,KAAKuC,EAAYX,EAAO,IAAI,KACxD,WAAW,MAAM;AAChB,QAAAQ,EAAmB;AAAA,UAClB,GAAGR;AAAA,UACH,YAAY5B,EAAY;AAAA,QAAA,CACxB;AAAA,MACF,GAAG,KAAK,IAAI,GAAGA,EAAY,UAAU,IAAI,GAAI;AAAA,IAE/C;AAEA,IAAAM,EAAA;AAAA,EACD,GAGMiC,IAAc,CAACC,MACwB;AAAA,IAC3C/D,EAAiB;AAAA,IACjBA,EAAiB;AAAA,IACjBA,EAAiB;AAAA,IACjBA,EAAiB;AAAA,IACjBA,EAAiB;AAAA,IACjBA,EAAiB;AAAA,IACjBA,EAAiB;AAAA,EAAA,EAEM,SAAS+D,CAAU;AAI5C,SAAAzB,EAAA,GAEO;AAAA,IACN,WAAAX;AAAA,IACA,UAAAG;AAAA,IACA,UAAAkB;AAAA,IACA,UAAAU;AAAA,IACA,oBAAA3B;AAAA,IACA,oBAAA4B;AAAA,IACA,oBAAAJ;AAAA,IACA,gBAAAvB;AAAA,IACA,sBAAAc;AAAA,IACA,sBAAAR;AAAA,IACA,qBAAAM;AAAA,EAAA;AAEF;ACrXO,MAAMoB,IAAe;AAAA,EAC3B,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,iBAAiB;AAClB;AA4DA,MAAMC,GAA8C;AAAA,EACnD,MAAM,QAAQlI,GAAqC;AAClD,QAAI,OAAO,SAAW,IAAa,QAAO;AAC1C,QAAI;AACH,aAAO,aAAa,QAAQA,CAAG;AAAA,IAChC,SAASqG,GAAO;AACf,qBAAQ,KAAK,qCAAqCA,CAAK,GAChD;AAAA,IACR;AAAA,EACD;AAAA,EAEA,MAAM,QAAQrG,GAAakB,GAA8B;AACxD,QAAI,SAAO,SAAW;AACtB,UAAI;AACH,qBAAa,QAAQlB,GAAKkB,CAAK;AAAA,MAChC,SAASmF,GAAO;AACf,gBAAQ,KAAK,oCAAoCA,CAAK;AAAA,MACvD;AAAA,EACD;AAAA,EAEA,MAAM,WAAWrG,GAA4B;AAC5C,QAAI,SAAO,SAAW;AACtB,UAAI;AACH,qBAAa,WAAWA,CAAG;AAAA,MAC5B,SAASqG,GAAO;AACf,gBAAQ,KAAK,uCAAuCA,CAAK;AAAA,MAC1D;AAAA,EACD;AAAA,EAEA,MAAM,QAAuB;AAC5B,QAAI,SAAO,SAAW;AACtB,UAAI;AAEH,eAAO,OAAO4B,CAAY,EAAE,QAAQ,CAAAjI,MAAO;AAC1C,uBAAa,WAAWA,CAAG;AAAA,QAC5B,CAAC;AAAA,MACF,SAASqG,GAAO;AACf,gBAAQ,KAAK,iCAAiCA,CAAK;AAAA,MACpD;AAAA,EACD;AACD;AAGA,MAAM8B,KAAoC;AAAA,EACzC,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa,QAAc,KAAK;AAAA;AAAA,EAChC,YAAY;AAAA,EACZ,SAAS,IAAID,GAAA;AACd;AAGO,MAAME,GAAwB;AAAA,EAKpC,YAAYtI,IAAqC,IAAI;AAJ7C,IAAAuI,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,8CAAoD,IAAA;AAG3D,SAAK,SAAS,EAAE,GAAGF,IAAgB,GAAGrI,EAAA,GACtC,KAAK,UAAU,KAAK,OAAO;AAAA,EAC5B;AAAA;AAAA,EAGA,MAAM,qBAAsD;AAC3D,QAAI,CAAC,KAAK,OAAO,gBAAiB,QAAO;AAEzC,QAAI;AACH,YAAMwI,IAAO,MAAM,KAAK,QAAQ,QAAQL,EAAa,gBAAgB;AACrE,UAAI,CAACK,EAAM,QAAO;AAElB,YAAMC,IAAS,KAAK,MAAMD,CAAI;AAG9B,aAAI,KAAK,eAAeC,EAAO,SAAS,KACvC,MAAM,KAAK,qBAAA,GACJ,QAGDA,EAAO;AAAA,IACf,SAASlC,GAAO;AACf,qBAAQ,KAAK,mCAAmCA,CAAK,GAC9C;AAAA,IACR;AAAA,EACD;AAAA,EAEA,MAAM,oBAAoBmC,GAAsD;AAC/E,IAAK,KAAK,OAAO,mBAEjB,KAAK,SAASP,EAAa,kBAAkB,YAAY;AACxD,UAAI;AAEH,cAAMQ,IAAU,EAAE,GADD,MAAM,KAAK,mBAAA,KAAwB,CAAA,GACrB,GAAGD,EAAA;AAElC,cAAM,KAAK,QAAQ,QAAQP,EAAa,kBAAkB,KAAK,UAAU;AAAA,UACxE,aAAaQ;AAAA,UACb,WAAW,KAAK,IAAA;AAAA,QAAI,CACpB,CAAC;AAAA,MACH,SAASpC,GAAO;AACf,gBAAQ,KAAK,oCAAoCA,CAAK;AAAA,MACvD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,uBAAsC;AAC3C,QAAI;AACH,YAAM,KAAK,QAAQ,WAAW4B,EAAa,gBAAgB;AAAA,IAC5D,SAAS5B,GAAO;AACf,cAAQ,KAAK,qCAAqCA,CAAK;AAAA,IACxD;AAAA,EACD;AAAA;AAAA,EAGA,MAAM,kBAAgD;AACrD,QAAI,CAAC,KAAK,OAAO,aAAc,QAAO;AAEtC,QAAI;AACH,YAAMiC,IAAO,MAAM,KAAK,QAAQ,QAAQL,EAAa,aAAa;AAClE,aAAKK,IAEU,KAAK,MAAMA,CAAI,EAChB,QAHI;AAAA,IAInB,SAASjC,GAAO;AACf,qBAAQ,KAAK,gCAAgCA,CAAK,GAC3C;AAAA,IACR;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiBf,GAA6C;AACnE,IAAK,KAAK,OAAO,gBAEjB,KAAK,SAAS2C,EAAa,eAAe,YAAY;AACrD,UAAI;AAKH,cAAMQ,IAAU,EAAE,GAJD,MAAM,KAAK,qBAAqB;AAAA,UAChD,aAAa;AAAA,UACb,kBAAkB,CAAA;AAAA,QAAC,GAEW,GAAGnD,EAAA;AAElC,cAAM,KAAK,QAAQ,QAAQ2C,EAAa,eAAe,KAAK,UAAU;AAAA,UACrE,OAAOQ;AAAA,UACP,WAAW,KAAK,IAAA;AAAA,QAAI,CACpB,CAAC;AAAA,MACH,SAASpC,GAAO;AACf,gBAAQ,KAAK,iCAAiCA,CAAK;AAAA,MACpD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,oBAAmC;AACxC,QAAI;AACH,YAAM,KAAK,QAAQ,WAAW4B,EAAa,aAAa;AAAA,IACzD,SAAS5B,GAAO;AACf,cAAQ,KAAK,kCAAkCA,CAAK;AAAA,IACrD;AAAA,EACD;AAAA;AAAA,EAGA,MAAM,qBAAqD;AAC1D,QAAI,CAAC,KAAK,OAAO,wBAAwB,CAAA;AAEzC,QAAI;AACH,YAAMiC,IAAO,MAAM,KAAK,QAAQ,QAAQL,EAAa,gBAAgB;AACrE,UAAI,CAACK,EAAM,QAAO,CAAA;AAElB,YAAMC,IAAS,KAAK,MAAMD,CAAI;AAG9B,aAAI,KAAK,eAAeC,EAAO,SAAS,KACvC,MAAM,KAAK,qBAAA,GACJ,CAAA,KAGDA,EAAO,WAAW,CAAA;AAAA,IAC1B,SAASlC,GAAO;AACf,qBAAQ,KAAK,mCAAmCA,CAAK,GAC9C,CAAA;AAAA,IACR;AAAA,EACD;AAAA,EAEA,MAAM,qBAAqBqC,GAA6D;AACvF,QAAK,KAAK,OAAO;AAEjB,UAAI;AACH,cAAMC,IAAU,MAAM,KAAK,mBAAA,GACrBC,IAA+B;AAAA,UACpC,GAAGF;AAAA,UACH,WAAW,KAAK,IAAA;AAAA,QAAI,GAIfG,IAAkBF,EAAQ,OAAO,OAAKG,EAAE,YAAYJ,EAAK,OAAO,GAGhEK,IAAiB,CAACH,GAAS,GAAGC,CAAe,EACjD,MAAM,GAAG,KAAK,OAAO,eAAe;AAEtC,cAAM,KAAK,QAAQ,QAAQZ,EAAa,kBAAkB,KAAK,UAAU;AAAA,UACxE,SAASc;AAAA,UACT,WAAW,KAAK,IAAA;AAAA,QAAI,CACpB,CAAC;AAAA,MACH,SAAS1C,GAAO;AACf,gBAAQ,KAAK,sCAAsCA,CAAK;AAAA,MACzD;AAAA,EACD;AAAA,EAEA,MAAM,uBAAsC;AAC3C,QAAI;AACH,YAAM,KAAK,QAAQ,WAAW4B,EAAa,gBAAgB;AAAA,IAC5D,SAAS5B,GAAO;AACf,cAAQ,KAAK,qCAAqCA,CAAK;AAAA,IACxD;AAAA,EACD;AAAA;AAAA,EAGA,MAAM,qBAAqB2C,GAAiBC,GAAiC;AAE5E,UAAMC,KADU,MAAM,KAAK,gBAAA,IACO,oBAAoB,CAAA;AAEtD,UAAM,KAAK,iBAAiB;AAAA,MAC3B,kBAAkB;AAAA,QACjB,GAAGA;AAAA,QACH,CAACF,CAAO,GAAGC;AAAA,MAAA;AAAA,IACZ,CACA;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoBD,GAAkC;AAE3D,YADgB,MAAM,KAAK,gBAAA,IACX,mBAAmBA,CAAO,KAAK;AAAA,EAChD;AAAA;AAAA,EAGA,uBAAuB1D,GAAoC;AAC1D,WAAO;AAAA,MACN,QAAQA,EAAM;AAAA,MACd,SAASA,EAAM;AAAA,MACf,cAAcA,EAAM;AAAA,MACpB,kBAAkBA,EAAM;AAAA,MACxB,uBAAuBA,EAAM,uBAAuB,MAAM;AAAA,MAC1D,oBAAoBA,EAAM;AAAA,MAC1B,UAAU;AAAA;AAAA,MACV,mBAAmB;AAAA;AAAA,IAAA;AAAA,EAErB;AAAA;AAAA,EAGA,oBAAoBA,GAAmB0D,GAAgC;AACtE,WAAO;AAAA,MACN,aAAa1D,EAAM;AAAA,MACnB,SAAA0D;AAAA,MACA,kBAAkB,CAAA;AAAA,IAAC;AAAA,EAErB;AAAA;AAAA,EAGA,MAAM,WAA0B;AAC/B,UAAM,KAAK,QAAQ,MAAA,GACnB,KAAK,iBAAiB,MAAA;AAAA,EACvB;AAAA;AAAA,EAGQ,eAAetC,GAA6B;AACnD,WAAKA,IACE,KAAK,IAAA,IAAQA,IAAY,KAAK,OAAO,cADrB;AAAA,EAExB;AAAA,EAEQ,SAAS1G,GAAamJ,GAA+B;AAC5D,UAAMC,IAAkB,KAAK,iBAAiB,IAAIpJ,CAAG;AACrD,IAAIoJ,KACH,aAAaA,CAAe;AAG7B,UAAMC,IAAU,WAAW,YAAY;AACtC,YAAMF,EAAA,GACN,KAAK,iBAAiB,OAAOnJ,CAAG;AAAA,IACjC,GAAG,KAAK,OAAO,UAAU;AAEzB,SAAK,iBAAiB,IAAIA,GAAKqJ,CAAO;AAAA,EACvC;AACD;AAGO,SAASC,GAAoBxJ,GAAqC;AACxE,QAAM,CAACyJ,CAAO,IAAIhG,EAAM,SAAS,MAAM,IAAI6E,GAAwBtI,CAAM,CAAC;AAE1EyD,SAAAA,EAAM,UAAU,MACR,MAAM;AAEZ,IAAAgG,EAAQ,SAAA;AAAA,EACT,GACE,CAACA,CAAO,CAAC,GAELA;AACR;AAGO,SAASC,GACflE,GACA0D,GACAlJ,GACC;AACD,QAAMyJ,IAAUD,GAAoBxJ,CAAM,GACpC,CAACkF,GAAcyE,CAAe,IAAIlG,EAAM,SAAS,EAAK;AAG5DA,SAAAA,EAAM,UAAU,MAAM;AACrB,QAAImG,IAAY;AAqChB,YAnCkB,YAAY;AAC7B,UAAI;AACH,cAAM,CAAClB,GAAamB,CAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,UAChDJ,EAAQ,mBAAA;AAAA,UACRA,EAAQ,gBAAA;AAAA,QAAgB,CACxB;AAED,YAAI,CAACG,EAAW;AAGhB,cAAME,IAAuC;AAAA,UAC5C,GAAIpB,KAAe;AAAA,YAClB,QAAQA,EAAY;AAAA,YACpB,SAASA,EAAY;AAAA,YACrB,cAAcA,EAAY;AAAA,YAC1B,kBAAkBA,EAAY;AAAA,UAAA;AAAA,UAE/B,GAAImB,KAAWX,MAAYW,EAAQ,WAAW;AAAA,YAC7C,aAAaA,EAAQ;AAAA,UAAA;AAAA,QACtB;AAID,QAAI,OAAO,KAAKC,CAAe,EAAE,SAAS,KAEzC,QAAQ,IAAI,qBAAqBA,CAAe,GAGjDH,EAAgB,EAAI;AAAA,MACrB,SAASpD,GAAO;AACf,gBAAQ,KAAK,8BAA8BA,CAAK,GAChDoD,EAAgB,EAAI;AAAA,MACrB;AAAA,IACD,GAEA,GAEO,MAAM;AACZ,MAAAC,IAAY;AAAA,IACb;AAAA,EACD,GAAG,CAACH,GAASP,CAAO,CAAC,GAGrBzF,EAAM,UAAU,MAAM;AACrB,QAAI,CAACyB,EAAc;AAGnB,UAAMwD,IAAce,EAAQ,uBAAuBjE,CAAK;AAIxD,QAHAiE,EAAQ,oBAAoBf,CAAW,GAGnCQ,GAAS;AACZ,YAAMW,IAAUJ,EAAQ,oBAAoBjE,GAAO0D,CAAO;AAC1D,MAAAO,EAAQ,iBAAiBI,CAAO,GAG5BrE,EAAM,cAAc,KAAKA,EAAM,WAAW,KAC7CiE,EAAQ,qBAAqBP,GAAS1D,EAAM,WAAW;AAAA,IAEzD;AAAA,EACD,GAAG,CAACiE,GAASjE,GAAO0D,GAAShE,CAAY,CAAC,GAEnC;AAAA,IACN,SAAAuE;AAAA,IACA,cAAAvE;AAAA,EAAA;AAEF;ACxZA,MAAM6E,KAAoC;AAAA,EACzC,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,IAChB;AAAA,IACA;AAAA;AAAA,EAAA;AAAA,EAED,kBAAkB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;AASA,MAAMC,GAAsD;AAAA,EAC3D,WAAWzD,GAA4B;AACtC,WAAOA,EAAM,SAAS,mBAAgCA,EAAM,aAAa;AAAA,EAC1E;AAAA,EAEA,MAAM,QAAQA,GAAkC;AAE/C,IAAI,UAAU,WAAW,MACxB,MAAM,IAAI,QAAQ,CAAAwB,MAAW;AAC5B,YAAMkC,IAAe,MAAM;AAC1B,eAAO,oBAAoB,UAAUA,CAAY,GACjDlC,EAAQ,MAAM;AAAA,MACf;AACA,aAAO,iBAAiB,UAAUkC,CAAY;AAAA,IAC/C,CAAC,GAIF,MAAM,IAAI,QAAQ,CAAAlC,MAAW,WAAWA,GAAS,GAAI,CAAC;AAAA,EACvD;AACD;AAGA,MAAMmC,GAAuD;AAAA,EAC5D,WAAW3D,GAA4B;AACtC,WAAOA,EAAM,SAAS,oBAAiCA,EAAM,aAAa;AAAA,EAC3E;AAAA,EAEA,MAAM,QAAQA,GAAkC;AAE/C,UAAM4D,IAAe,SAAS,cAAc,cAAc;AAC1D,IAAIA,MACHA,EAAa,KAAA,GACb,MAAM,IAAI,QAAQ,CAAApC,MAAW;AAC5B,YAAMqC,IAAgB,MAAM;AAC3B,QAAAD,EAAa,oBAAoB,WAAWC,CAAa,GACzDrC,EAAQ,MAAM;AAAA,MACf;AACA,MAAAoC,EAAa,iBAAiB,WAAWC,CAAa;AAAA,IACvD,CAAC;AAAA,EAEH;AACD;AAGA,MAAMC,GAAyD;AAAA,EAC9D,WAAW9D,GAA4B;AACtC,WAAOA,EAAM,SAAS,sBAClBA,EAAM,QAAQ,SAAS;AAAA,EAC5B;AAAA,EAEA,MAAM,QAAQA,GAAkC;AAE/C,YAAQ,KAAK,sCAAsC;AAAA,EAEpD;AACD;AAGO,MAAM+D,GAAkB;AAAA,EAM9B,YACCtK,IAA+B,IAC/BuK,IAA8C,CAAA,GAC7C;AARM,IAAAhC,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,wCAA0C,IAAA;AAC1C,IAAAA,EAAA,uCAAkD,IAAA;AAMzD,SAAK,SAAS,EAAE,GAAGwB,IAAsB,GAAG/J,EAAA,GAC5C,KAAK,qBAAqB;AAAA,MACzB,IAAIgK,GAAA;AAAA,MACJ,IAAIE,GAAA;AAAA,MACJ,IAAIG,GAAA;AAAA,MACJ,GAAGE;AAAA,IAAA;AAAA,EAEL;AAAA;AAAA,EAGA,iBACChE,GACAe,GACAkD,IAAa,GACA;AACb,UAAM5D,IAAY,KAAK,IAAA;AAEvB,QAAIL,aAAiB,OAAO;AAC3B,YAAMkE,IAAY,KAAK,gBAAgBlE,GAAOe,CAAM;AACpD,aAAO;AAAA,QACN,MAAMmD;AAAA,QACN,SAASlE,EAAM;AAAA,QACf,QAAAe;AAAA,QACA,WAAAV;AAAA,QACA,WAAW,KAAK,YAAY6D,GAAWnD,CAAM;AAAA,QAC7C,YAAAkD;AAAA,QACA,eAAejE;AAAA,MAAA;AAAA,IAEjB;AAEA,WAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS,OAAOA,KAAU,WAAWA,IAAQ;AAAA,MAC7C,QAAAe;AAAA,MACA,WAAAV;AAAA,MACA,WAAW,KAAK,YAAY,iBAA8BU,CAAM;AAAA,MAChE,YAAAkD;AAAA,IAAA;AAAA,EAEF;AAAA;AAAA,EAGQ,gBAAgBjE,GAAce,GAAgD;AACrF,UAAMoD,IAAUnE,EAAM,QAAQ,YAAA;AAG9B,WAAImE,EAAQ,SAAS,SAAS,KAC7BA,EAAQ,SAAS,OAAO,KACxBA,EAAQ,SAAS,YAAY,KAC7BnE,EAAM,SAAS,iBACR,kBAIJmE,EAAQ,SAAS,YAAY,KAChCA,EAAQ,SAAS,QAAQ,KACzBA,EAAQ,SAAS,YAAY,KAC7BnE,EAAM,SAAS,oBACR,qBAIJmE,EAAQ,SAAS,QAAQ,KAC5BA,EAAQ,SAAS,QAAQ,KACzBA,EAAQ,SAAS,OAAO,KACxBpD,GAAQ,SAAS,SACV,mBAIJoD,EAAQ,SAAS,SAAS,KAC7BnE,EAAM,SAAS,iBACR,kBAIJmE,EAAQ,SAAS,eAAe,KACnCA,EAAQ,SAAS,aAAa,KAC9BnE,EAAM,SAAS,sBACR,wBAGD;AAAA,EACR;AAAA;AAAA,EAGQ,YAAYkE,GAA2BnD,GAAyC;AACvF,UAAMqD,IAAiB,KAAK,OAAO,gBAAgB,SAASF,CAAS,GAC/DG,IAAkB,CAACtD,KAAU,KAAK,OAAO,iBAAiB,SAASA,EAAO,IAAI;AACpF,WAAOqD,KAAkBC;AAAA,EAC1B;AAAA;AAAA,EAGQ,oBAAoBJ,GAA4B;AACvD,QAAI,CAAC,KAAK,OAAO;AAChB,aAAO,KAAK,OAAO;AAGpB,UAAMK,IAAQ,KAAK,OAAO,YAAY,KAAK,IAAI,GAAGL,CAAU;AAC5D,WAAO,KAAK,IAAIK,GAAO,KAAK,OAAO,QAAQ;AAAA,EAC5C;AAAA;AAAA,EAGA,MAAM,YACLtE,GACAe,GACAwD,GACsB;AACtB,UAAMC,IAAa,KAAK,iBAAiBxE,GAAOe,GAAQA,GAAQ,cAAc,CAAC,GACzE0D,IAAU,GAAG1D,GAAQ,IAAI,IAAIyD,EAAW,SAAS;AAGvD,SAAK,WAAW,IAAIC,GAASD,CAAU,GAGvC,KAAK,UAAU,QAAQ,CAAAE,MAAYA,EAASF,CAAU,CAAC;AAGvD,eAAWG,KAAY,KAAK;AAC3B,UAAIA,EAAS,WAAWH,CAAU;AACjC,YAAI;AACH,gBAAMG,EAAS,QAAQH,CAAU;AACjC;AAAA,QACD,SAASI,GAAe;AACvB,kBAAQ,KAAK,6BAA6BA,CAAa;AAAA,QACxD;AAKF,QAAIJ,EAAW,aACdA,EAAW,aAAa,KAAK,OAAO,cACpCD,KACAxD,GAAQ;AAER,YAAMuD,IAAQ,KAAK,oBAAoBE,EAAW,UAAU;AAC5D,cAAQ,IAAI,mBAAmBzD,EAAO,IAAI,OAAOuD,CAAK,eAAeE,EAAW,aAAa,CAAC,IAAI,KAAK,OAAO,UAAU,GAAG,GAE3H,WAAW,YAAY;AACtB,YAAI;AACH,gBAAMD,EAAc;AAAA,YACnB,GAAGxD;AAAA,YACH,YAAYyD,EAAW,aAAa;AAAA,UAAA,CACpC,GAGD,KAAK,WAAW,OAAOC,CAAO;AAAA,QAC/B,SAASI,GAAY;AAEpB,gBAAM,KAAK,YAAYA,GAAY;AAAA,YAClC,GAAG9D;AAAA,YACH,YAAYyD,EAAW,aAAa;AAAA,UAAA,GAClCD,CAAa;AAAA,QACjB;AAAA,MACD,GAAGD,CAAK;AAAA,IACT;AAEA,WAAOE;AAAA,EACR;AAAA;AAAA,EAGA,UAAUE,GAAmD;AAC5D,gBAAK,UAAU,IAAIA,CAAQ,GACpB,MAAM,KAAK,UAAU,OAAOA,CAAQ;AAAA,EAC5C;AAAA;AAAA,EAGA,YAA0B;AACzB,WAAO,MAAM,KAAK,KAAK,WAAW,QAAQ;AAAA,EAC3C;AAAA;AAAA,EAGA,WAAWD,GAAuB;AACjC,SAAK,WAAW,OAAOA,CAAO;AAAA,EAC/B;AAAA;AAAA,EAGA,iBAAuB;AACtB,SAAK,WAAW,MAAA;AAAA,EACjB;AAAA;AAAA,EAGA,gBAKE;AACD,UAAMK,IAAS,KAAK,UAAA,GACdC,IAAM,KAAK,IAAA,GACXC,IAAkB,MAAS,KAE3BC,IAAeH,EAAO,OAAO,CAAC/E,GAAKC,OACxCD,EAAIC,EAAM,IAAI,KAAKD,EAAIC,EAAM,IAAI,KAAK,KAAK,GACpCD,IACL,CAAA,CAAoC,GAEjCmF,IAAkBJ,EAAO,OAAO,CAAAK,MAAKA,EAAE,SAAS,EAAE,QAClDC,IAAeN,EAAO,OAAO,OAAKC,IAAMI,EAAE,YAAYH,CAAe;AAE3E,WAAO;AAAA,MACN,aAAaF,EAAO;AAAA,MACpB,cAAAG;AAAA,MACA,iBAAAC;AAAA,MACA,cAAAE;AAAA,IAAA;AAAA,EAEF;AACD;ACjUA,SAASC,GAAuBtG,IAA2BH,GAA+B;AACzF,MAAIK,IAAQ,EAAE,GAAGF,EAAA;AACjB,QAAMK,wBAAgB,IAAA,GAEhBG,IAAY,CAACC,OAClBJ,EAAU,IAAII,CAAQ,GACf,MAAMJ,EAAU,OAAOI,CAAQ,IAGjCE,IAAW,MAAMT,GAEjB2B,IAAW,CAACC,MAAiC;AAClD,UAAMJ,IAAW,EAAE,GAAGxB,GAAO,GAAG4B,EAAA;AAChC,IAAI,KAAK,UAAUJ,CAAQ,MAAM,KAAK,UAAUxB,CAAK,MACpDA,IAAQwB,GACRrB,EAAU,QAAQ,CAACI,MAAaA,EAAA,CAAU;AAAA,EAE5C;AAiGA,SAAO,EAAE,WAAAD,GAAW,UAAAG,GAAU,UAAAkB,GAAU,UA/FvB,CAACG,MAAwB;AACzC,YAAQA,EAAO,MAAA;AAAA,MACd,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,WAAW,IAAM,OAAO,MAAM;AACzC;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,WAAW,IAAO;AAC7B;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,aAAaG,EAAO,OAAA,CAAQ;AACvC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGG,EAAO,MAAM,CAAC,EAAA,CAAG;AAC5D;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,SAAS,IAAM;AAC1B;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,SAAS,IAAO;AAC3B;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,SAAS,CAAC3B,EAAM,SAAS;AACpC;AAAA,MAED,KAAKrB,EAAiB;AACrB,QAAAgD,EAAS,EAAE,UAAUG,EAAO,OAAA,CAAQ;AACpC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,aAAaG,EAAO,OAAA,CAAQ;AACvC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,UAAUG,EAAO,OAAA,CAAQ;AACpC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,WAAWG,EAAO,OAAA,CAAQ;AACrC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,OAAOG,EAAO,QAAQ,WAAW,IAAO;AACnD;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,cAAc,IAAM;AAC/B;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,cAAc,IAAO;AAChC;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,oBAAoB,IAAM;AACrC;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,oBAAoB,IAAO;AACtC;AAAA,MAED,KAAKhD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,cAAcG,EAAO,OAAA,CAAQ;AACxC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,uBAAuBG,EAAO,OAAA,CAAQ;AACjD;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,mBAAmBG,EAAO,OAAA,CAAQ;AAC7C;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,kBAAkB,CAAC3B,EAAM,kBAAkB;AACtD;AAAA,MAED,KAAKrB,EAAiB;AACrB,QAAAgD,EAAS,EAAE,aAAaG,EAAO,OAAA,CAAQ;AACvC;AAAA,MAED,KAAKnD,EAAiB;AACrB,QAAAgD,EAAS,EAAE,aAAa,MAAM,cAAc,MAAM,eAAe,MAAM;AACvE;AAAA,MAED;AACC,gBAAQ,KAAK,8BAA8BG,EAAO,IAAI,EAAE;AAAA,IAAA;AAAA,EAE3D,EAEwC;AACzC;AA2BO,SAASuE,GAAc;AAAA,EAC7B,UAAA3I;AAAA,EACA,SAAAgG,IAAU;AAAA,EACV,SAAA4C,IAAU;AAAA,EACV,eAAAC,IAAgB;AAAA,EAChB,KAAAC,IAAM;AAAA,EACN,iBAAAC;AAAA,EACA,sBAAAC,IAAuB;AAAA,EACvB,mBAAAC,IAAoB;AAAA,EACpB,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,gBAAAC,IAAiB;AAAA,EACjB,cAAAhH,IAAe,CAAA;AAAA;AAAA,EAEf,kBAAAiH,IAAmB;AAAA,EACnB,mBAAAhH;AAAA,EACA,aAAAiH;AAAA,EACA,yBAAAC,IAA0B;AAAA,EAC1B,qBAAAC,IAAsB;AAAA,EACtB,mBAAAC;AACD,GAAuB;AACtB,QAAMC,IAAUnJ,EAAM,OAAuB,IAAI,GAC3CoJ,IAAWpJ,EAAM,OAA4C,IAAI,GAGjEgB,IAAQhB,EAAM,QAAQ,MAAM;AACjC,UAAMqJ,IAAuB,EAAE,GAAG3H,GAAmB,GAAGG,EAAA;AAExD,WAAIiH,IACIlH,GAAyByH,GAAsBvH,CAAiB,IAEhEqG,GAAuBkB,CAAoB;AAAA,EAEpD,GAAG,CAACP,GAAkBhH,CAAiB,CAAC,GAGlCN,IAAexB,EAAM,QAAQ,MAC9BiJ,KAAuBH,IACnB,IAAIjC,GAAkBkC,CAAW,IAElC,MACL,CAACE,GAAqBH,GAAkBC,CAAW,CAAC,GAGjDO,IAAoBR,IAAmB7C;AAAA,IAC5CjF,EAAM,SAAA;AAAA,IACNyE;AAAA,IACA3D;AAAA,EAAA,IACG;AAGJ9B,EAAAA,EAAM,UAAU,MAAM;AACrB,QAAIsJ,GAAmB,gBAAgBJ,GAAmB;AACzD,YAAM/E,IAAenD,EAAM,SAAA;AAC3B,MAAAkI,EAAkB/E,CAAY;AAAA,IAC/B;AAAA,EACD,GAAG,CAACmF,GAAmB,cAAcJ,GAAmBlI,CAAK,CAAC;AAG9D,QAAMuI,IAAevJ,EAAM;AAAA,IAK1B,OAAO;AAAA,MACN,SAAAyF;AAAA,MACA,SAAA4C;AAAA,MACA,eAAAC;AAAA,MACA,KAAAC;AAAA,MACA,SAAAY;AAAA,MACA,UAAAC;AAAA,MACA,iBAAAZ;AAAA,MACA,sBAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,UAAAC;AAAA,MACA,SAAAC;AAAA,MACA,gBAAAC;AAAA;AAAA,MAEA,cAAArH;AAAA,MACA,YAAYsH;AAAA,MACZ,cAAcQ,GAAmB;AAAA,IAAA;AAAA,IAElC;AAAA,MACC7D;AAAA,MACA4C;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACArH;AAAA,MACAsH;AAAA,MACAQ,GAAmB;AAAA,IAAA;AAAA,EACpB;AAGD,SACCE,gBAAAA,GAAAA,IAAC7I,GAAa,UAAb,EAAsB,OAAO4I,GAC7B,UAAAC,gBAAAA,GAAAA,IAAC1I,GAAkB,UAAlB,EAA2B,OAAOE,GAAQ,UAAAvB,GAAS,GACrD;AAEF;","x_google_ignoreList":[0,1,2]}