react-native-theoplayer 2.16.1 → 3.0.0-pre1

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 (316) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -0
  3. package/android/build.gradle +19 -22
  4. package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +87 -101
  5. package/android/src/main/java/com/theoplayer/ReactTHEOplayerContext.kt +30 -30
  6. package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.kt +3 -1
  7. package/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt +1 -1
  8. package/android/src/main/java/com/theoplayer/cache/CacheAdapter.kt +127 -0
  9. package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +238 -0
  10. package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +27 -12
  11. package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +16 -37
  12. package/android/src/main/java/com/theoplayer/util/BridgeUtils.kt +60 -0
  13. package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +10 -10
  14. package/ios/THEOplayerRCTBridge.m +22 -0
  15. package/ios/THEOplayerRCTDebug.swift +7 -1
  16. package/ios/THEOplayerRCTMainEventHandler.swift +25 -27
  17. package/ios/THEOplayerRCTSourceDescriptionAggregator.swift +41 -0
  18. package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +3 -2
  19. package/ios/THEOplayerRCTTypeUtils.swift +37 -0
  20. package/ios/THEOplayerRCTView.swift +1 -2
  21. package/ios/ads/THEOplayerRCTAdsAPI+DAI.swift +3 -13
  22. package/ios/ads/THEOplayerRCTAdsAPI.swift +14 -48
  23. package/ios/ads/THEOplayerRCTView+AdsConfig.swift +0 -13
  24. package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +24 -36
  25. package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +2 -10
  26. package/ios/cache/THEOplayerRCTCacheAPI.swift +202 -0
  27. package/ios/cache/THEOplayerRCTCacheAggregator.swift +87 -0
  28. package/ios/cache/THEOplayerRCTCachingParametersBuilder.swift +27 -0
  29. package/ios/pip/THEOplayerRCTPipControlsManager.swift +2 -4
  30. package/lib/commonjs/api/abr/ABRConfiguration.js +21 -7
  31. package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -1
  32. package/lib/commonjs/api/ads/GoogleImaConfiguration.js.map +1 -1
  33. package/lib/commonjs/api/barrel.js +30 -19
  34. package/lib/commonjs/api/barrel.js.map +1 -1
  35. package/lib/commonjs/api/cache/CachingPreferredTrackSelection.js +2 -0
  36. package/lib/commonjs/api/cache/CachingPreferredTrackSelection.js.map +1 -0
  37. package/lib/commonjs/api/cache/CachingTask.js +30 -0
  38. package/lib/commonjs/api/cache/CachingTask.js.map +1 -0
  39. package/lib/commonjs/api/cache/CachingTaskLicense.js +6 -0
  40. package/lib/commonjs/api/cache/CachingTaskLicense.js.map +1 -0
  41. package/lib/commonjs/api/cache/CachingTaskList.js +6 -0
  42. package/lib/commonjs/api/cache/CachingTaskList.js.map +1 -0
  43. package/lib/commonjs/api/cache/CachingTaskParameters.js +6 -0
  44. package/lib/commonjs/api/cache/CachingTaskParameters.js.map +1 -0
  45. package/lib/commonjs/api/cache/MediaCacheAPI.js +24 -0
  46. package/lib/commonjs/api/cache/MediaCacheAPI.js.map +1 -0
  47. package/lib/commonjs/api/cache/barrel.js +83 -0
  48. package/lib/commonjs/api/cache/barrel.js.map +1 -0
  49. package/lib/commonjs/api/cache/events/CacheEvent.js +28 -0
  50. package/lib/commonjs/api/cache/events/CacheEvent.js.map +1 -0
  51. package/lib/commonjs/api/cache/events/CachingTaskEvent.js +17 -0
  52. package/lib/commonjs/api/cache/events/CachingTaskEvent.js.map +1 -0
  53. package/lib/commonjs/api/cache/events/barrel.js +28 -0
  54. package/lib/commonjs/api/cache/events/barrel.js.map +1 -0
  55. package/lib/commonjs/api/cache/hooks/barrel.js +39 -0
  56. package/lib/commonjs/api/cache/hooks/barrel.js.map +1 -0
  57. package/lib/commonjs/api/cache/hooks/useCachingTaskList.js +31 -0
  58. package/lib/commonjs/api/cache/hooks/useCachingTaskList.js.map +1 -0
  59. package/lib/commonjs/api/cache/hooks/useCachingTaskProgress.js +28 -0
  60. package/lib/commonjs/api/cache/hooks/useCachingTaskProgress.js.map +1 -0
  61. package/lib/commonjs/api/cache/hooks/useCachingTaskStatus.js +28 -0
  62. package/lib/commonjs/api/cache/hooks/useCachingTaskStatus.js.map +1 -0
  63. package/lib/commonjs/api/cast/CastState.js +3 -4
  64. package/lib/commonjs/api/cast/CastState.js.map +1 -1
  65. package/lib/commonjs/api/config/PlayerConfiguration.js.map +1 -1
  66. package/lib/commonjs/api/event/AdEvent.js +3 -4
  67. package/lib/commonjs/api/event/AdEvent.js.map +1 -1
  68. package/lib/commonjs/api/event/CastEvent.js +3 -4
  69. package/lib/commonjs/api/event/CastEvent.js.map +1 -1
  70. package/lib/commonjs/api/event/PlayerEvent.js +3 -4
  71. package/lib/commonjs/api/event/PlayerEvent.js.map +1 -1
  72. package/lib/commonjs/api/event/TrackEvent.js +12 -16
  73. package/lib/commonjs/api/event/TrackEvent.js.map +1 -1
  74. package/lib/commonjs/api/player/PlayerEventMap.js +7 -8
  75. package/lib/commonjs/api/player/PlayerEventMap.js.map +1 -1
  76. package/lib/commonjs/api/player/THEOplayer.js +6 -4
  77. package/lib/commonjs/api/player/THEOplayer.js.map +1 -1
  78. package/lib/commonjs/api/presentation/PresentationMode.js +3 -4
  79. package/lib/commonjs/api/presentation/PresentationMode.js.map +1 -1
  80. package/lib/commonjs/api/source/ads/Ads.js +3 -4
  81. package/lib/commonjs/api/source/ads/Ads.js.map +1 -1
  82. package/lib/commonjs/api/track/TextTrack.js +9 -12
  83. package/lib/commonjs/api/track/TextTrack.js.map +1 -1
  84. package/lib/commonjs/api/track/TextTrackStyle.js +3 -4
  85. package/lib/commonjs/api/track/TextTrackStyle.js.map +1 -1
  86. package/lib/commonjs/index.js +9 -1
  87. package/lib/commonjs/index.js.map +1 -1
  88. package/lib/commonjs/internal/THEOplayerView.js +1 -1
  89. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  90. package/lib/commonjs/internal/THEOplayerView.style.js +1 -2
  91. package/lib/commonjs/internal/THEOplayerView.style.js.map +1 -1
  92. package/lib/commonjs/internal/THEOplayerView.web.js +5 -5
  93. package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
  94. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  95. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +12 -13
  96. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  97. package/lib/commonjs/internal/adapter/WebEventForwarder.js +10 -10
  98. package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
  99. package/lib/commonjs/internal/adapter/abr/AbrAdapter.js.map +1 -1
  100. package/lib/commonjs/internal/adapter/ads/THEOplayerWebAdsAdapter.js +2 -2
  101. package/lib/commonjs/internal/adapter/ads/THEOplayerWebAdsAdapter.js.map +1 -1
  102. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeCastAdapter.js +1 -1
  103. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeCastAdapter.js.map +1 -1
  104. package/lib/commonjs/internal/adapter/cast/THEOplayerWebCastAdapter.js.map +1 -1
  105. package/lib/commonjs/internal/adapter/event/BaseEvent.js.map +1 -1
  106. package/lib/commonjs/internal/adapter/event/DefaultEventDispatcher.js +1 -1
  107. package/lib/commonjs/internal/adapter/event/DefaultEventDispatcher.js.map +1 -1
  108. package/lib/commonjs/internal/adapter/event/native/NativeTrackEvent.js +12 -16
  109. package/lib/commonjs/internal/adapter/event/native/NativeTrackEvent.js.map +1 -1
  110. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  111. package/lib/commonjs/internal/adapter/web/FullscreenAPI.js +1 -2
  112. package/lib/commonjs/internal/adapter/web/FullscreenAPI.js.map +1 -1
  113. package/lib/commonjs/internal/adapter/web/WebMediaSession.js +9 -11
  114. package/lib/commonjs/internal/adapter/web/WebMediaSession.js.map +1 -1
  115. package/lib/commonjs/internal/adapter/web/WebPresentationModeManager.js +4 -4
  116. package/lib/commonjs/internal/adapter/web/WebPresentationModeManager.js.map +1 -1
  117. package/lib/commonjs/internal/cache/MediaCache.js +117 -0
  118. package/lib/commonjs/internal/cache/MediaCache.js.map +1 -0
  119. package/lib/commonjs/internal/cache/MediaCache.web.js +54 -0
  120. package/lib/commonjs/internal/cache/MediaCache.web.js.map +1 -0
  121. package/lib/commonjs/internal/cache/NativeCachingTaskAdapter.js +59 -0
  122. package/lib/commonjs/internal/cache/NativeCachingTaskAdapter.js.map +1 -0
  123. package/lib/commonjs/internal/cache/NativeCachingTaskParametersAdapter.js +27 -0
  124. package/lib/commonjs/internal/cache/NativeCachingTaskParametersAdapter.js.map +1 -0
  125. package/lib/commonjs/internal/cache/WebCachingTaskAdapter.js +71 -0
  126. package/lib/commonjs/internal/cache/WebCachingTaskAdapter.js.map +1 -0
  127. package/lib/commonjs/internal/drm/ContentProtectionRegistry.js +1 -2
  128. package/lib/commonjs/internal/drm/ContentProtectionRegistry.js.map +1 -1
  129. package/lib/commonjs/internal/drm/ContentProtectionRegistry.web.js +1 -2
  130. package/lib/commonjs/internal/drm/ContentProtectionRegistry.web.js.map +1 -1
  131. package/lib/commonjs/internal/drm/NativeCertificateResponse.js.map +1 -1
  132. package/lib/commonjs/internal/drm/NativeLicenseResponse.js.map +1 -1
  133. package/lib/commonjs/internal/utils/TypeUtils.js +2 -4
  134. package/lib/commonjs/internal/utils/TypeUtils.js.map +1 -1
  135. package/lib/module/api/abr/ABRConfiguration.js +24 -6
  136. package/lib/module/api/abr/ABRConfiguration.js.map +1 -1
  137. package/lib/module/api/ads/GoogleImaConfiguration.js.map +1 -1
  138. package/lib/module/api/barrel.js +1 -0
  139. package/lib/module/api/barrel.js.map +1 -1
  140. package/lib/module/api/cache/CachingPreferredTrackSelection.js +2 -0
  141. package/lib/module/api/cache/CachingPreferredTrackSelection.js.map +1 -0
  142. package/lib/module/api/cache/CachingTask.js +25 -0
  143. package/lib/module/api/cache/CachingTask.js.map +1 -0
  144. package/lib/module/api/cache/CachingTaskLicense.js +2 -0
  145. package/lib/module/api/cache/CachingTaskLicense.js.map +1 -0
  146. package/lib/module/api/cache/CachingTaskList.js +2 -0
  147. package/lib/module/api/cache/CachingTaskList.js.map +1 -0
  148. package/lib/module/api/cache/CachingTaskParameters.js +2 -0
  149. package/lib/module/api/cache/CachingTaskParameters.js.map +1 -0
  150. package/lib/module/api/cache/MediaCacheAPI.js +19 -0
  151. package/lib/module/api/cache/MediaCacheAPI.js.map +1 -0
  152. package/lib/module/api/cache/barrel.js +8 -0
  153. package/lib/module/api/cache/barrel.js.map +1 -0
  154. package/lib/module/api/cache/events/CacheEvent.js +25 -0
  155. package/lib/module/api/cache/events/CacheEvent.js.map +1 -0
  156. package/lib/module/api/cache/events/CachingTaskEvent.js +12 -0
  157. package/lib/module/api/cache/events/CachingTaskEvent.js.map +1 -0
  158. package/lib/module/api/cache/events/barrel.js +3 -0
  159. package/lib/module/api/cache/events/barrel.js.map +1 -0
  160. package/lib/module/api/cache/hooks/barrel.js +4 -0
  161. package/lib/module/api/cache/hooks/barrel.js.map +1 -0
  162. package/lib/module/api/cache/hooks/useCachingTaskList.js +24 -0
  163. package/lib/module/api/cache/hooks/useCachingTaskList.js.map +1 -0
  164. package/lib/module/api/cache/hooks/useCachingTaskProgress.js +21 -0
  165. package/lib/module/api/cache/hooks/useCachingTaskProgress.js.map +1 -0
  166. package/lib/module/api/cache/hooks/useCachingTaskStatus.js +21 -0
  167. package/lib/module/api/cache/hooks/useCachingTaskStatus.js.map +1 -0
  168. package/lib/module/api/cast/CastState.js +3 -3
  169. package/lib/module/api/cast/CastState.js.map +1 -1
  170. package/lib/module/api/config/PlayerConfiguration.js.map +1 -1
  171. package/lib/module/api/event/AdEvent.js +3 -3
  172. package/lib/module/api/event/AdEvent.js.map +1 -1
  173. package/lib/module/api/event/CastEvent.js +3 -3
  174. package/lib/module/api/event/CastEvent.js.map +1 -1
  175. package/lib/module/api/event/PlayerEvent.js +3 -3
  176. package/lib/module/api/event/PlayerEvent.js.map +1 -1
  177. package/lib/module/api/event/TrackEvent.js +12 -12
  178. package/lib/module/api/event/TrackEvent.js.map +1 -1
  179. package/lib/module/api/player/PlayerEventMap.js +8 -8
  180. package/lib/module/api/player/PlayerEventMap.js.map +1 -1
  181. package/lib/module/api/player/THEOplayer.js +7 -3
  182. package/lib/module/api/player/THEOplayer.js.map +1 -1
  183. package/lib/module/api/presentation/PresentationMode.js +3 -3
  184. package/lib/module/api/presentation/PresentationMode.js.map +1 -1
  185. package/lib/module/api/source/ads/Ads.js +3 -3
  186. package/lib/module/api/source/ads/Ads.js.map +1 -1
  187. package/lib/module/api/track/TextTrack.js +9 -9
  188. package/lib/module/api/track/TextTrack.js.map +1 -1
  189. package/lib/module/api/track/TextTrackStyle.js +3 -3
  190. package/lib/module/api/track/TextTrackStyle.js.map +1 -1
  191. package/lib/module/index.js +1 -0
  192. package/lib/module/index.js.map +1 -1
  193. package/lib/module/internal/THEOplayerView.js +1 -1
  194. package/lib/module/internal/THEOplayerView.js.map +1 -1
  195. package/lib/module/internal/THEOplayerView.web.js +5 -5
  196. package/lib/module/internal/THEOplayerView.web.js.map +1 -1
  197. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  198. package/lib/module/internal/adapter/THEOplayerWebAdapter.js +12 -11
  199. package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  200. package/lib/module/internal/adapter/WebEventForwarder.js +10 -10
  201. package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
  202. package/lib/module/internal/adapter/abr/AbrAdapter.js.map +1 -1
  203. package/lib/module/internal/adapter/ads/THEOplayerWebAdsAdapter.js +2 -2
  204. package/lib/module/internal/adapter/ads/THEOplayerWebAdsAdapter.js.map +1 -1
  205. package/lib/module/internal/adapter/cast/THEOplayerNativeCastAdapter.js +1 -1
  206. package/lib/module/internal/adapter/cast/THEOplayerNativeCastAdapter.js.map +1 -1
  207. package/lib/module/internal/adapter/cast/THEOplayerWebCastAdapter.js.map +1 -1
  208. package/lib/module/internal/adapter/event/BaseEvent.js.map +1 -1
  209. package/lib/module/internal/adapter/event/DefaultEventDispatcher.js +1 -1
  210. package/lib/module/internal/adapter/event/DefaultEventDispatcher.js.map +1 -1
  211. package/lib/module/internal/adapter/event/native/NativeTrackEvent.js +12 -12
  212. package/lib/module/internal/adapter/event/native/NativeTrackEvent.js.map +1 -1
  213. package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  214. package/lib/module/internal/adapter/web/FullscreenAPI.js.map +1 -1
  215. package/lib/module/internal/adapter/web/WebMediaSession.js +8 -9
  216. package/lib/module/internal/adapter/web/WebMediaSession.js.map +1 -1
  217. package/lib/module/internal/adapter/web/WebPresentationModeManager.js +4 -4
  218. package/lib/module/internal/adapter/web/WebPresentationModeManager.js.map +1 -1
  219. package/lib/module/internal/cache/MediaCache.js +110 -0
  220. package/lib/module/internal/cache/MediaCache.js.map +1 -0
  221. package/lib/module/internal/cache/MediaCache.web.js +45 -0
  222. package/lib/module/internal/cache/MediaCache.web.js.map +1 -0
  223. package/lib/module/internal/cache/NativeCachingTaskAdapter.js +52 -0
  224. package/lib/module/internal/cache/NativeCachingTaskAdapter.js.map +1 -0
  225. package/lib/module/internal/cache/NativeCachingTaskParametersAdapter.js +20 -0
  226. package/lib/module/internal/cache/NativeCachingTaskParametersAdapter.js.map +1 -0
  227. package/lib/module/internal/cache/WebCachingTaskAdapter.js +64 -0
  228. package/lib/module/internal/cache/WebCachingTaskAdapter.js.map +1 -0
  229. package/lib/module/internal/drm/ContentProtectionRegistry.js.map +1 -1
  230. package/lib/module/internal/drm/ContentProtectionRegistry.web.js.map +1 -1
  231. package/lib/module/internal/drm/NativeCertificateResponse.js.map +1 -1
  232. package/lib/module/internal/drm/NativeLicenseResponse.js.map +1 -1
  233. package/lib/typescript/api/abr/ABRConfiguration.d.ts +1 -1
  234. package/lib/typescript/api/ads/Ad.d.ts +2 -2
  235. package/lib/typescript/api/ads/AdsConfiguration.d.ts +2 -2
  236. package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts +1 -0
  237. package/lib/typescript/api/barrel.d.ts +1 -0
  238. package/lib/typescript/api/cache/CachingPreferredTrackSelection.d.ts +23 -0
  239. package/lib/typescript/api/cache/CachingTask.d.ts +93 -0
  240. package/lib/typescript/api/cache/CachingTaskLicense.d.ts +14 -0
  241. package/lib/typescript/api/cache/CachingTaskList.d.ts +7 -0
  242. package/lib/typescript/api/cache/CachingTaskParameters.d.ts +57 -0
  243. package/lib/typescript/api/cache/MediaCacheAPI.d.ts +39 -0
  244. package/lib/typescript/api/cache/barrel.d.ts +7 -0
  245. package/lib/typescript/api/cache/events/CacheEvent.d.ts +55 -0
  246. package/lib/typescript/api/cache/events/CachingTaskEvent.d.ts +22 -0
  247. package/lib/typescript/api/cache/events/barrel.d.ts +2 -0
  248. package/lib/typescript/api/cache/hooks/barrel.d.ts +3 -0
  249. package/lib/typescript/api/cache/hooks/useCachingTaskList.d.ts +1 -0
  250. package/lib/typescript/api/cache/hooks/useCachingTaskProgress.d.ts +2 -0
  251. package/lib/typescript/api/cache/hooks/useCachingTaskStatus.d.ts +2 -0
  252. package/lib/typescript/api/cast/CastConfiguration.d.ts +1 -1
  253. package/lib/typescript/api/config/PlayerConfiguration.d.ts +4 -1
  254. package/lib/typescript/api/drm/ContentProtectionIntegration.d.ts +2 -2
  255. package/lib/typescript/api/drm/ContentProtectionRequest.d.ts +1 -1
  256. package/lib/typescript/api/error/ChromecastError.d.ts +1 -1
  257. package/lib/typescript/api/event/CastEvent.d.ts +1 -1
  258. package/lib/typescript/api/event/EventDispatcher.d.ts +2 -2
  259. package/lib/typescript/api/event/EventListener.d.ts +1 -1
  260. package/lib/typescript/api/player/THEOplayer.d.ts +2 -2
  261. package/lib/typescript/api/source/SourceDescription.d.ts +3 -3
  262. package/lib/typescript/api/source/ads/Ads.d.ts +1 -1
  263. package/lib/typescript/api/source/ads/FreeWheelAdDescription.d.ts +1 -1
  264. package/lib/typescript/api/source/ads/ssai/GoogleDAIConfiguration.d.ts +2 -2
  265. package/lib/typescript/api/source/ads/ssai/ImagineServerSideAdInsertionConfiguration.d.ts +1 -1
  266. package/lib/typescript/api/source/ads/ssai/ServerSideAdInsertionConfiguration.d.ts +1 -1
  267. package/lib/typescript/api/source/ads/ssai/YospaceServerSideAdInsertionConfiguration.d.ts +2 -2
  268. package/lib/typescript/api/source/dash/DashPlaybackConfiguration.d.ts +1 -1
  269. package/lib/typescript/api/source/drm/DRMConfiguration.d.ts +3 -3
  270. package/lib/typescript/api/source/hls/HlsPlaybackConfiguration.d.ts +1 -1
  271. package/lib/typescript/api/track/MediaTrack.d.ts +1 -1
  272. package/lib/typescript/index.d.ts +1 -0
  273. package/lib/typescript/internal/THEOplayerView.web.d.ts +1 -1
  274. package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +2 -2
  275. package/lib/typescript/internal/adapter/WebEventForwarder.d.ts +2 -2
  276. package/lib/typescript/internal/adapter/ads/THEOplayerWebAdsAdapter.d.ts +2 -2
  277. package/lib/typescript/internal/adapter/cast/THEOplayerWebCastAdapter.d.ts +2 -2
  278. package/lib/typescript/internal/adapter/event/native/NativeCastEvent.d.ts +1 -1
  279. package/lib/typescript/internal/adapter/web/WebPresentationModeManager.d.ts +2 -2
  280. package/lib/typescript/internal/cache/MediaCache.d.ts +25 -0
  281. package/lib/typescript/internal/cache/MediaCache.web.d.ts +16 -0
  282. package/lib/typescript/internal/cache/NativeCachingTaskAdapter.d.ts +33 -0
  283. package/lib/typescript/internal/cache/NativeCachingTaskParametersAdapter.d.ts +11 -0
  284. package/lib/typescript/internal/cache/WebCachingTaskAdapter.d.ts +25 -0
  285. package/package.json +16 -15
  286. package/react-native-theoplayer.podspec +4 -4
  287. package/src/api/ads/GoogleImaConfiguration.ts +1 -0
  288. package/src/api/barrel.ts +1 -0
  289. package/src/api/cache/CachingPreferredTrackSelection.ts +24 -0
  290. package/src/api/cache/CachingTask.ts +107 -0
  291. package/src/api/cache/CachingTaskLicense.ts +15 -0
  292. package/src/api/cache/CachingTaskList.ts +8 -0
  293. package/src/api/cache/CachingTaskParameters.ts +62 -0
  294. package/src/api/cache/MediaCacheAPI.ts +43 -0
  295. package/src/api/cache/barrel.ts +7 -0
  296. package/src/api/cache/events/CacheEvent.ts +62 -0
  297. package/src/api/cache/events/CachingTaskEvent.ts +27 -0
  298. package/src/api/cache/events/barrel.ts +2 -0
  299. package/src/api/cache/hooks/barrel.ts +3 -0
  300. package/src/api/cache/hooks/useCachingTaskList.ts +23 -0
  301. package/src/api/cache/hooks/useCachingTaskProgress.ts +20 -0
  302. package/src/api/cache/hooks/useCachingTaskStatus.ts +20 -0
  303. package/src/api/config/PlayerConfiguration.ts +3 -0
  304. package/src/index.tsx +1 -0
  305. package/src/internal/THEOplayerView.web.tsx +5 -5
  306. package/src/internal/adapter/THEOplayerWebAdapter.ts +6 -6
  307. package/src/internal/adapter/WebEventForwarder.ts +3 -3
  308. package/src/internal/adapter/ads/THEOplayerWebAdsAdapter.ts +3 -3
  309. package/src/internal/adapter/cast/THEOplayerWebCastAdapter.ts +3 -3
  310. package/src/internal/adapter/web/WebPresentationModeManager.ts +3 -3
  311. package/src/internal/cache/MediaCache.ts +151 -0
  312. package/src/internal/cache/MediaCache.web.ts +54 -0
  313. package/src/internal/cache/NativeCachingTaskAdapter.ts +81 -0
  314. package/src/internal/cache/NativeCachingTaskParametersAdapter.ts +32 -0
  315. package/src/internal/cache/WebCachingTaskAdapter.ts +95 -0
  316. package/android/src/main/java/com/theoplayer/track/QualityListFilter.kt +0 -28
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","NamedColors","namedColorsMap","TextTrackStyleAdapter","constructor","_view","_defineProperty","undefined","backgroundColor","_backgroundColor","color","PlayerModule","setTextTrackStyle","nativeHandle","convertColorToRGBA","edgeStyle","_edgeStyle","style","fontColor","_fontColor","fontFamily","_fontFamily","family","fontSize","_fontSize","size","fromPercentage","windowColor","_windowColor","marginBottom","_marginBottom","margin","marginLeft","_marginLeft","marginRight","_marginRight","marginTop","_marginTop","replace","toLowerCase","colorPattern","match","r","parseInt","g","b","a","pct","parseFloat"],"sources":["TextTrackStyleAdapter.ts"],"sourcesContent":["import type { EdgeStyle, TextTrackStyle, THEOplayerView } from 'react-native-theoplayer';\nimport { NativeModules } from 'react-native';\nimport NamedColors from './NamedColors.json';\n\nconst namedColorsMap = NamedColors as { [name: string]: string };\n\nexport class TextTrackStyleAdapter implements TextTrackStyle {\n private _backgroundColor: string | undefined = undefined;\n private _edgeStyle: EdgeStyle | undefined = undefined;\n private _fontColor: string | undefined = undefined;\n private _fontFamily: string | undefined = undefined;\n private _fontSize: string | undefined = undefined;\n private _windowColor: string | undefined = undefined;\n private _marginBottom: number | undefined = undefined;\n private _marginTop: number | undefined = undefined;\n private _marginLeft: number | undefined = undefined;\n private _marginRight: number | undefined = undefined;\n\n constructor(private readonly _view: THEOplayerView) {}\n\n get backgroundColor(): string | undefined {\n return this._backgroundColor;\n }\n\n set backgroundColor(color: string | undefined) {\n this._backgroundColor = color;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n backgroundColor: convertColorToRGBA(color),\n });\n }\n\n get edgeStyle(): EdgeStyle | undefined {\n return this._edgeStyle;\n }\n\n set edgeStyle(style: EdgeStyle | undefined) {\n this._edgeStyle = style;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n edgeStyle: style,\n });\n }\n\n get fontColor(): string | undefined {\n return this._fontColor;\n }\n\n set fontColor(color: string | undefined) {\n this._fontColor = color;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n fontColor: convertColorToRGBA(color),\n });\n }\n\n get fontFamily(): string | undefined {\n return this._fontFamily;\n }\n\n set fontFamily(family: string | undefined) {\n this._fontFamily = family;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n fontFamily: family,\n });\n }\n\n get fontSize(): string | undefined {\n return this._fontSize;\n }\n\n set fontSize(size: string | undefined) {\n this._fontSize = size;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n fontSize: fromPercentage(size),\n });\n }\n\n get windowColor(): string | undefined {\n return this._windowColor;\n }\n\n set windowColor(color: string | undefined) {\n this._windowColor = color;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n windowColor: convertColorToRGBA(color),\n });\n }\n\n get marginBottom(): number | undefined {\n return this._marginBottom;\n }\n\n set marginBottom(margin: number | undefined) {\n this._marginBottom = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginBottom: margin,\n });\n }\n\n get marginLeft(): number | undefined {\n return this._marginLeft;\n }\n\n set marginLeft(margin: number | undefined) {\n this._marginLeft = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginLeft: margin,\n });\n }\n\n get marginRight(): number | undefined {\n return this._marginRight;\n }\n\n set marginRight(margin: number | undefined) {\n this._marginRight = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginRight: margin,\n });\n }\n\n get marginTop(): number | undefined {\n return this._marginTop;\n }\n\n set marginTop(margin: number | undefined) {\n this._marginTop = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginTop: margin,\n });\n }\n}\n\ninterface BridgeColor {\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\nfunction convertColorToRGBA(color: string | undefined): BridgeColor | null {\n if (!color) {\n return null;\n }\n\n color = color.replace('#', '');\n\n if (namedColorsMap[color.toLowerCase()]) {\n color = namedColorsMap[color.toLowerCase()];\n }\n\n const colorPattern = /^(?:#|0x)?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\n const match = color.match(colorPattern);\n\n if (!match) {\n return null;\n }\n\n const r = parseInt(match[1], 16);\n const g = parseInt(match[2], 16);\n const b = parseInt(match[3], 16);\n const a = match[4] ? parseInt(match[4], 16) : 255;\n return { r, g, b, a };\n}\n\nfunction fromPercentage(pct: string | undefined): number {\n return pct ? parseFloat(pct) : 100;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","NamedColors","namedColorsMap","TextTrackStyleAdapter","constructor","_view","_defineProperty","undefined","backgroundColor","_backgroundColor","color","PlayerModule","setTextTrackStyle","nativeHandle","convertColorToRGBA","edgeStyle","_edgeStyle","style","fontColor","_fontColor","fontFamily","_fontFamily","family","fontSize","_fontSize","size","fromPercentage","windowColor","_windowColor","marginBottom","_marginBottom","margin","marginLeft","_marginLeft","marginRight","_marginRight","marginTop","_marginTop","replace","toLowerCase","colorPattern","match","r","parseInt","g","b","a","pct","parseFloat"],"sources":["TextTrackStyleAdapter.ts"],"sourcesContent":["import type { EdgeStyle, TextTrackStyle, THEOplayerView } from 'react-native-theoplayer';\nimport { NativeModules } from 'react-native';\nimport NamedColors from './NamedColors.json';\n\nconst namedColorsMap = NamedColors as { [name: string]: string };\n\nexport class TextTrackStyleAdapter implements TextTrackStyle {\n private _backgroundColor: string | undefined = undefined;\n private _edgeStyle: EdgeStyle | undefined = undefined;\n private _fontColor: string | undefined = undefined;\n private _fontFamily: string | undefined = undefined;\n private _fontSize: string | undefined = undefined;\n private _windowColor: string | undefined = undefined;\n private _marginBottom: number | undefined = undefined;\n private _marginTop: number | undefined = undefined;\n private _marginLeft: number | undefined = undefined;\n private _marginRight: number | undefined = undefined;\n\n constructor(private readonly _view: THEOplayerView) {}\n\n get backgroundColor(): string | undefined {\n return this._backgroundColor;\n }\n\n set backgroundColor(color: string | undefined) {\n this._backgroundColor = color;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n backgroundColor: convertColorToRGBA(color),\n });\n }\n\n get edgeStyle(): EdgeStyle | undefined {\n return this._edgeStyle;\n }\n\n set edgeStyle(style: EdgeStyle | undefined) {\n this._edgeStyle = style;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n edgeStyle: style,\n });\n }\n\n get fontColor(): string | undefined {\n return this._fontColor;\n }\n\n set fontColor(color: string | undefined) {\n this._fontColor = color;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n fontColor: convertColorToRGBA(color),\n });\n }\n\n get fontFamily(): string | undefined {\n return this._fontFamily;\n }\n\n set fontFamily(family: string | undefined) {\n this._fontFamily = family;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n fontFamily: family,\n });\n }\n\n get fontSize(): string | undefined {\n return this._fontSize;\n }\n\n set fontSize(size: string | undefined) {\n this._fontSize = size;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n fontSize: fromPercentage(size),\n });\n }\n\n get windowColor(): string | undefined {\n return this._windowColor;\n }\n\n set windowColor(color: string | undefined) {\n this._windowColor = color;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n windowColor: convertColorToRGBA(color),\n });\n }\n\n get marginBottom(): number | undefined {\n return this._marginBottom;\n }\n\n set marginBottom(margin: number | undefined) {\n this._marginBottom = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginBottom: margin,\n });\n }\n\n get marginLeft(): number | undefined {\n return this._marginLeft;\n }\n\n set marginLeft(margin: number | undefined) {\n this._marginLeft = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginLeft: margin,\n });\n }\n\n get marginRight(): number | undefined {\n return this._marginRight;\n }\n\n set marginRight(margin: number | undefined) {\n this._marginRight = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginRight: margin,\n });\n }\n\n get marginTop(): number | undefined {\n return this._marginTop;\n }\n\n set marginTop(margin: number | undefined) {\n this._marginTop = margin;\n NativeModules.PlayerModule.setTextTrackStyle(this._view.nativeHandle, {\n marginTop: margin,\n });\n }\n}\n\ninterface BridgeColor {\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\nfunction convertColorToRGBA(color: string | undefined): BridgeColor | null {\n if (!color) {\n return null;\n }\n\n color = color.replace('#', '');\n\n if (namedColorsMap[color.toLowerCase()]) {\n color = namedColorsMap[color.toLowerCase()];\n }\n\n const colorPattern = /^(?:#|0x)?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\n const match = color.match(colorPattern);\n\n if (!match) {\n return null;\n }\n\n const r = parseInt(match[1], 16);\n const g = parseInt(match[2], 16);\n const b = parseInt(match[3], 16);\n const a = match[4] ? parseInt(match[4], 16) : 255;\n return { r, g, b, a };\n}\n\nfunction fromPercentage(pct: string | undefined): number {\n return pct ? parseFloat(pct) : 100;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["fullscreenAPI","document","apiMap","browserMap","requestFullscreen_","exitFullscreen_","fullscreenElement_","fullscreenEnabled_","fullscreenchange_","fullscreenerror_","undefined"],"sources":["FullscreenAPI.ts"],"sourcesContent":["export interface FullscreenAPIMap {\n requestFullscreen_: 'requestFullscreen';\n exitFullscreen_: 'exitFullscreen';\n fullscreenElement_: 'fullscreenElement';\n fullscreenEnabled_: 'fullscreenEnabled';\n fullscreenchange_: 'fullscreenchange';\n fullscreenerror_: 'fullscreenerror';\n}\n\nexport const fullscreenAPI: FullscreenAPIMap | undefined = (() => {\n if (!document) {\n return;\n }\n\n // browser API methods\n // map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\n const apiMap: string[][] = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n ['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],\n // Microsoft\n ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']\n ];\n\n for (const browserMap of apiMap) {\n // check for exitFullscreen function\n if (browserMap[1] in document) {\n return {\n requestFullscreen_: browserMap[0],\n exitFullscreen_: browserMap[1],\n fullscreenElement_: browserMap[2],\n fullscreenEnabled_: browserMap[3],\n fullscreenchange_: browserMap[4],\n fullscreenerror_: browserMap[5]\n } as FullscreenAPIMap;\n }\n }\n\n return undefined;\n})();\n"],"mappings":"AASA,OAAO,MAAMA,aAA2C,GAAG,CAAC,MAAM;EAChE,IAAI,CAACC,QAAQ,EAAE;IACb;EACF;;EAEA;EACA;EACA,MAAMC,MAAkB,GAAG;EACzB;EACA,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;EACxH;EACA,CACE,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,CACxB;EACD;EACA,CACE,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,CACxB;EACD;EACA,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;EAC5I;EACA,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CACrI;EAED,KAAK,MAAMC,UAAU,IAAID,MAAM,EAAE;IAC/B;IACA,IAAIC,UAAU,CAAC,CAAC,CAAC,IAAIF,QAAQ,EAAE;MAC7B,OAAO;QACLG,kBAAkB,EAAED,UAAU,CAAC,CAAC,CAAC;QACjCE,eAAe,EAAEF,UAAU,CAAC,CAAC,CAAC;QAC9BG,kBAAkB,EAAEH,UAAU,CAAC,CAAC,CAAC;QACjCI,kBAAkB,EAAEJ,UAAU,CAAC,CAAC,CAAC;QACjCK,iBAAiB,EAAEL,UAAU,CAAC,CAAC,CAAC;QAChCM,gBAAgB,EAAEN,UAAU,CAAC,CAAC;MAChC,CAAC;IACH;EACF;EAEA,OAAOO,SAAS;AAClB,CAAC,GAAG"}
1
+ {"version":3,"names":["fullscreenAPI","document","apiMap","browserMap","requestFullscreen_","exitFullscreen_","fullscreenElement_","fullscreenEnabled_","fullscreenchange_","fullscreenerror_","undefined"],"sources":["FullscreenAPI.ts"],"sourcesContent":["export interface FullscreenAPIMap {\n requestFullscreen_: 'requestFullscreen';\n exitFullscreen_: 'exitFullscreen';\n fullscreenElement_: 'fullscreenElement';\n fullscreenEnabled_: 'fullscreenEnabled';\n fullscreenchange_: 'fullscreenchange';\n fullscreenerror_: 'fullscreenerror';\n}\n\nexport const fullscreenAPI: FullscreenAPIMap | undefined = (() => {\n if (!document) {\n return;\n }\n\n // browser API methods\n // map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\n const apiMap: string[][] = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n ['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],\n // Microsoft\n ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']\n ];\n\n for (const browserMap of apiMap) {\n // check for exitFullscreen function\n if (browserMap[1] in document) {\n return {\n requestFullscreen_: browserMap[0],\n exitFullscreen_: browserMap[1],\n fullscreenElement_: browserMap[2],\n fullscreenEnabled_: browserMap[3],\n fullscreenchange_: browserMap[4],\n fullscreenerror_: browserMap[5]\n } as FullscreenAPIMap;\n }\n }\n\n return undefined;\n})();\n"],"mappings":"AASA,OAAO,MAAMA,aAA2C,GAAG,CAAC,MAAM;EAChE,IAAI,CAACC,QAAQ,EAAE;IACb;EACF;;EAEA;EACA;EACA,MAAMC,MAAkB,GAAG;EACzB;EACA,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;EACxH;EACA,CACE,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,CACxB;EACD;EACA,CACE,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,CACxB;EACD;EACA,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;EAC5I;EACA,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CACrI;EAED,KAAK,MAAMC,UAAU,IAAID,MAAM,EAAE;IAC/B;IACA,IAAIC,UAAU,CAAC,CAAC,CAAC,IAAIF,QAAQ,EAAE;MAC7B,OAAO;QACLG,kBAAkB,EAAED,UAAU,CAAC,CAAC,CAAC;QACjCE,eAAe,EAAEF,UAAU,CAAC,CAAC,CAAC;QAC9BG,kBAAkB,EAAEH,UAAU,CAAC,CAAC,CAAC;QACjCI,kBAAkB,EAAEJ,UAAU,CAAC,CAAC,CAAC;QACjCK,iBAAiB,EAAEL,UAAU,CAAC,CAAC,CAAC;QAChCM,gBAAgB,EAAEN,UAAU,CAAC,CAAC;MAChC,CAAC;IACH;EACF;EAEA,OAAOO,SAAS;AAClB,CAAC,EAAE,CAAC"}
@@ -9,8 +9,7 @@ export const defaultWebMediaSessionConfig = {
9
9
  const NoOp = () => {};
10
10
 
11
11
  // This prevents unnecessary errors when Media Session API is not available.
12
- const mediaSession = function () {
13
- var _navigator$mediaSessi, _navigator$mediaSessi2;
12
+ const mediaSession = function (_navigator$mediaSessi, _navigator$mediaSessi2) {
14
13
  const mediaSession = navigator.mediaSession || {};
15
14
  mediaSession.setActionHandler = ((_navigator$mediaSessi = navigator.mediaSession) === null || _navigator$mediaSessi === void 0 ? void 0 : _navigator$mediaSessi.setActionHandler) || function () {};
16
15
  mediaSession.setPositionState = ((_navigator$mediaSessi2 = navigator.mediaSession) === null || _navigator$mediaSessi2 === void 0 ? void 0 : _navigator$mediaSessi2.setPositionState) || function () {};
@@ -93,8 +92,8 @@ export class WebMediaSession {
93
92
  this._player.addEventListener('sourcechange', this.onSourceChange);
94
93
  this._player.addEventListener('loadedmetadata', this.onLoadedMetadata);
95
94
  this._player.addEventListener('durationchange', this.onDurationChange);
96
- (_this$_player$ads = this._player.ads) === null || _this$_player$ads === void 0 ? void 0 : _this$_player$ads.addEventListener('adbreakbegin', this.onAdbreakBegin);
97
- (_this$_player$ads2 = this._player.ads) === null || _this$_player$ads2 === void 0 ? void 0 : _this$_player$ads2.addEventListener('adbreakend', this.onAdbreakEnd);
95
+ (_this$_player$ads = this._player.ads) === null || _this$_player$ads === void 0 || _this$_player$ads.addEventListener('adbreakbegin', this.onAdbreakBegin);
96
+ (_this$_player$ads2 = this._player.ads) === null || _this$_player$ads2 === void 0 || _this$_player$ads2.addEventListener('adbreakend', this.onAdbreakEnd);
98
97
  this.updateActionHandlers();
99
98
  }
100
99
  updateActionHandlers() {
@@ -114,11 +113,11 @@ export class WebMediaSession {
114
113
  if (this.isPlayPauseEnabled()) {
115
114
  mediaSession.setActionHandler('play', () => {
116
115
  var _this$_player;
117
- (_this$_player = this._player) === null || _this$_player === void 0 ? void 0 : _this$_player.play();
116
+ (_this$_player = this._player) === null || _this$_player === void 0 || _this$_player.play();
118
117
  });
119
- mediaSession === null || mediaSession === void 0 ? void 0 : mediaSession.setActionHandler('pause', () => {
118
+ mediaSession === null || mediaSession === void 0 || mediaSession.setActionHandler('pause', () => {
120
119
  var _this$_player2;
121
- (_this$_player2 = this._player) === null || _this$_player2 === void 0 ? void 0 : _this$_player2.pause();
120
+ (_this$_player2 = this._player) === null || _this$_player2 === void 0 || _this$_player2.pause();
122
121
  });
123
122
  } else {
124
123
  mediaSession.setActionHandler('play', NoOp);
@@ -130,8 +129,8 @@ export class WebMediaSession {
130
129
  this._player.removeEventListener('sourcechange', this.onSourceChange);
131
130
  this._player.removeEventListener('loadedmetadata', this.onLoadedMetadata);
132
131
  this._player.removeEventListener('durationchange', this.onDurationChange);
133
- (_this$_player$ads3 = this._player.ads) === null || _this$_player$ads3 === void 0 ? void 0 : _this$_player$ads3.removeEventListener('adbreakbegin', this.onAdbreakBegin);
134
- (_this$_player$ads4 = this._player.ads) === null || _this$_player$ads4 === void 0 ? void 0 : _this$_player$ads4.removeEventListener('adbreakend', this.onAdbreakEnd);
132
+ (_this$_player$ads3 = this._player.ads) === null || _this$_player$ads3 === void 0 || _this$_player$ads3.removeEventListener('adbreakbegin', this.onAdbreakBegin);
133
+ (_this$_player$ads4 = this._player.ads) === null || _this$_player$ads4 === void 0 || _this$_player$ads4.removeEventListener('adbreakend', this.onAdbreakEnd);
135
134
  mediaSession.setActionHandler('play', NoOp);
136
135
  mediaSession.setActionHandler('pause', NoOp);
137
136
  mediaSession.setActionHandler('seekbackward', NoOp);
@@ -1 +1 @@
1
- {"version":3,"names":["defaultWebMediaSessionConfig","skipTime","NoOp","mediaSession","_navigator$mediaSessi","_navigator$mediaSessi2","navigator","setActionHandler","setPositionState","window","MediaMetadata","WebMediaSession","constructor","adapter","player","_this$_player$ads","_this$_player$ads2","config","arguments","length","undefined","_defineProperty","updateMetadata","updatePositionState","updateActionHandlers","source","_player","metadata","artwork","displayIconUri","poster","images","filter","image","map","src","title","artist","subtitle","album","duration","playbackRate","currentTime","isLive","isFinite","isNaN","position","_webAdapter","_config","addEventListener","onSourceChange","onLoadedMetadata","onDurationChange","ads","onAdbreakBegin","onAdbreakEnd","isTrickplayEnabled","event","seekOffset","Math","max","min","isPlayPauseEnabled","_this$_player","play","_this$_player2","pause","destroy","_this$_player$ads3","_this$_player$ads4","removeEventListener","isInAd","_this$_player$ads5","playing","isInBackground","document","visibilityState","isBackgroundAudioEnabled","backgroundAudioConfiguration","enabled"],"sources":["WebMediaSession.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport type { ChromelessPlayer } from 'theoplayer';\nimport type { THEOplayerWebAdapter } from '../THEOplayerWebAdapter';\n\ninterface WebMediaSessionConfig {\n skipTime: number;\n}\n\nexport const defaultWebMediaSessionConfig: WebMediaSessionConfig = {\n skipTime: 15,\n};\n\nconst NoOp = () => {};\n\n// This prevents unnecessary errors when Media Session API is not available.\nconst mediaSession = (function () {\n const mediaSession = navigator.mediaSession || {};\n mediaSession.setActionHandler = navigator.mediaSession?.setActionHandler || function () {};\n mediaSession.setPositionState = navigator.mediaSession?.setPositionState || function () {};\n window.MediaMetadata = window.MediaMetadata || function () {};\n return mediaSession;\n})();\n\n/**\n * The MediaSession interface of the Media Session API allows a web page to provide custom behaviors for standard media playback interactions, and\n * to report metadata that can be sent by the user agent to the device or operating system for presentation in standardized user interface elements.\n *\n * @link https://w3c.github.io/mediasession\n */\nexport class WebMediaSession {\n private readonly _config: WebMediaSessionConfig;\n private readonly _player: ChromelessPlayer;\n private readonly _webAdapter: THEOplayerWebAdapter;\n\n constructor(adapter: THEOplayerWebAdapter, player: ChromelessPlayer, config: WebMediaSessionConfig = defaultWebMediaSessionConfig) {\n this._player = player;\n this._webAdapter = adapter;\n this._config = config;\n\n this._player.addEventListener('sourcechange', this.onSourceChange);\n this._player.addEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.addEventListener('durationchange', this.onDurationChange);\n this._player.ads?.addEventListener('adbreakbegin', this.onAdbreakBegin);\n this._player.ads?.addEventListener('adbreakend', this.onAdbreakEnd);\n this.updateActionHandlers();\n }\n\n updateActionHandlers() {\n if (this.isTrickplayEnabled()) {\n mediaSession.setActionHandler('seekbackward', (event) => {\n const skipTime = event.seekOffset || this._config.skipTime;\n this._player.currentTime = Math.max(this._player.currentTime - skipTime, 0);\n });\n mediaSession.setActionHandler('seekforward', (event) => {\n const skipTime = event.seekOffset || this._config.skipTime;\n this._player.currentTime = Math.min(this._player.currentTime + skipTime, this._player.duration);\n });\n } else {\n mediaSession.setActionHandler('seekbackward', NoOp);\n mediaSession.setActionHandler('seekforward', NoOp);\n }\n\n if (this.isPlayPauseEnabled()) {\n mediaSession.setActionHandler('play', () => {\n this._player?.play();\n });\n mediaSession?.setActionHandler('pause', () => {\n this._player?.pause();\n });\n } else {\n mediaSession.setActionHandler('play', NoOp);\n mediaSession.setActionHandler('pause', NoOp);\n }\n }\n\n destroy() {\n this._player.removeEventListener('sourcechange', this.onSourceChange);\n this._player.removeEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.removeEventListener('durationchange', this.onDurationChange);\n this._player.ads?.removeEventListener('adbreakbegin', this.onAdbreakBegin);\n this._player.ads?.removeEventListener('adbreakend', this.onAdbreakEnd);\n mediaSession.setActionHandler('play', NoOp);\n mediaSession.setActionHandler('pause', NoOp);\n mediaSession.setActionHandler('seekbackward', NoOp);\n mediaSession.setActionHandler('seekforward', NoOp);\n }\n\n private onSourceChange = () => {\n this.updateMetadata();\n this.updatePositionState();\n this.updateActionHandlers();\n };\n\n private onLoadedMetadata = () => {\n this.updateActionHandlers();\n };\n\n private onDurationChange = () => {\n this.updateActionHandlers();\n };\n\n private updateMetadata = () => {\n const source = this._player.source;\n const metadata = source?.metadata;\n const artwork = [metadata?.displayIconUri, source?.poster, ...(metadata?.images ? metadata?.images : [])]\n .filter((image) => image !== undefined)\n .map((image) => {\n if (typeof image === 'string') {\n return { src: image };\n }\n return image;\n });\n mediaSession.metadata = new MediaMetadata({\n title: metadata?.title,\n artist: metadata?.artist || metadata?.subtitle,\n album: metadata?.album,\n artwork,\n });\n };\n\n private updatePositionState = () => {\n const { duration, playbackRate, currentTime } = this._player;\n const isLive = !isFinite(duration);\n if (!isLive) {\n mediaSession.setPositionState({\n // The duration is used to specify the duration in seconds.\n // It should always be positive and positive infinity can be used to indicate media without a defined end such as live playback.\n // NOTE: passing Infinite causes an exception to be thrown.\n duration: isNaN(duration) || duration < 0 ? 0 : duration,\n\n // The playbackRate is used to specify the playback rate.\n // It can be positive to represent forward playback or negative to represent backwards playback. It should not be zero.\n playbackRate,\n\n // The position is used to specify the last reported playback position in seconds. It should always be positive.\n position: currentTime,\n });\n }\n };\n\n private onAdbreakBegin = () => {\n this.updateActionHandlers();\n };\n\n private onAdbreakEnd = () => {\n this.updateActionHandlers();\n };\n\n private isLive(): boolean {\n return !isFinite(this._player.duration);\n }\n\n private isInAd(): boolean {\n return this._player.ads?.playing === true;\n }\n\n private isInBackground(): boolean {\n return document.visibilityState !== 'visible';\n }\n\n // By default, only show trick-play buttons if:\n // - backgroundAudio is enabled, or the player is in foreground;\n // - and, the current asset is neither a live stream, nor an ad.\n private isTrickplayEnabled(): boolean {\n return (this.isBackgroundAudioEnabled() || !this.isInBackground()) && !this.isLive() && !this.isInAd();\n }\n\n // By default, only show a play/pause button if:\n // - backgroundAudio is enabled, or the player is in foreground;\n // - and, the current asset is not an ad.\n private isPlayPauseEnabled(): boolean {\n return (this.isBackgroundAudioEnabled() || !this.isInBackground()) && !this.isInAd();\n }\n\n private isBackgroundAudioEnabled(): boolean {\n return this._webAdapter.backgroundAudioConfiguration.enabled === true;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["defaultWebMediaSessionConfig","skipTime","NoOp","mediaSession","_navigator$mediaSessi","_navigator$mediaSessi2","navigator","setActionHandler","setPositionState","window","MediaMetadata","WebMediaSession","constructor","adapter","player","_this$_player$ads","_this$_player$ads2","config","arguments","length","undefined","_defineProperty","updateMetadata","updatePositionState","updateActionHandlers","source","_player","metadata","artwork","displayIconUri","poster","images","filter","image","map","src","title","artist","subtitle","album","duration","playbackRate","currentTime","isLive","isFinite","isNaN","position","_webAdapter","_config","addEventListener","onSourceChange","onLoadedMetadata","onDurationChange","ads","onAdbreakBegin","onAdbreakEnd","isTrickplayEnabled","event","seekOffset","Math","max","min","isPlayPauseEnabled","_this$_player","play","_this$_player2","pause","destroy","_this$_player$ads3","_this$_player$ads4","removeEventListener","isInAd","_this$_player$ads5","playing","isInBackground","document","visibilityState","isBackgroundAudioEnabled","backgroundAudioConfiguration","enabled"],"sources":["WebMediaSession.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport type { ChromelessPlayer } from 'theoplayer';\nimport type { THEOplayerWebAdapter } from '../THEOplayerWebAdapter';\n\ninterface WebMediaSessionConfig {\n skipTime: number;\n}\n\nexport const defaultWebMediaSessionConfig: WebMediaSessionConfig = {\n skipTime: 15,\n};\n\nconst NoOp = () => {};\n\n// This prevents unnecessary errors when Media Session API is not available.\nconst mediaSession = (function () {\n const mediaSession = navigator.mediaSession || {};\n mediaSession.setActionHandler = navigator.mediaSession?.setActionHandler || function () {};\n mediaSession.setPositionState = navigator.mediaSession?.setPositionState || function () {};\n window.MediaMetadata = window.MediaMetadata || function () {};\n return mediaSession;\n})();\n\n/**\n * The MediaSession interface of the Media Session API allows a web page to provide custom behaviors for standard media playback interactions, and\n * to report metadata that can be sent by the user agent to the device or operating system for presentation in standardized user interface elements.\n *\n * @link https://w3c.github.io/mediasession\n */\nexport class WebMediaSession {\n private readonly _config: WebMediaSessionConfig;\n private readonly _player: ChromelessPlayer;\n private readonly _webAdapter: THEOplayerWebAdapter;\n\n constructor(adapter: THEOplayerWebAdapter, player: ChromelessPlayer, config: WebMediaSessionConfig = defaultWebMediaSessionConfig) {\n this._player = player;\n this._webAdapter = adapter;\n this._config = config;\n\n this._player.addEventListener('sourcechange', this.onSourceChange);\n this._player.addEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.addEventListener('durationchange', this.onDurationChange);\n this._player.ads?.addEventListener('adbreakbegin', this.onAdbreakBegin);\n this._player.ads?.addEventListener('adbreakend', this.onAdbreakEnd);\n this.updateActionHandlers();\n }\n\n updateActionHandlers() {\n if (this.isTrickplayEnabled()) {\n mediaSession.setActionHandler('seekbackward', (event) => {\n const skipTime = event.seekOffset || this._config.skipTime;\n this._player.currentTime = Math.max(this._player.currentTime - skipTime, 0);\n });\n mediaSession.setActionHandler('seekforward', (event) => {\n const skipTime = event.seekOffset || this._config.skipTime;\n this._player.currentTime = Math.min(this._player.currentTime + skipTime, this._player.duration);\n });\n } else {\n mediaSession.setActionHandler('seekbackward', NoOp);\n mediaSession.setActionHandler('seekforward', NoOp);\n }\n\n if (this.isPlayPauseEnabled()) {\n mediaSession.setActionHandler('play', () => {\n this._player?.play();\n });\n mediaSession?.setActionHandler('pause', () => {\n this._player?.pause();\n });\n } else {\n mediaSession.setActionHandler('play', NoOp);\n mediaSession.setActionHandler('pause', NoOp);\n }\n }\n\n destroy() {\n this._player.removeEventListener('sourcechange', this.onSourceChange);\n this._player.removeEventListener('loadedmetadata', this.onLoadedMetadata);\n this._player.removeEventListener('durationchange', this.onDurationChange);\n this._player.ads?.removeEventListener('adbreakbegin', this.onAdbreakBegin);\n this._player.ads?.removeEventListener('adbreakend', this.onAdbreakEnd);\n mediaSession.setActionHandler('play', NoOp);\n mediaSession.setActionHandler('pause', NoOp);\n mediaSession.setActionHandler('seekbackward', NoOp);\n mediaSession.setActionHandler('seekforward', NoOp);\n }\n\n private onSourceChange = () => {\n this.updateMetadata();\n this.updatePositionState();\n this.updateActionHandlers();\n };\n\n private onLoadedMetadata = () => {\n this.updateActionHandlers();\n };\n\n private onDurationChange = () => {\n this.updateActionHandlers();\n };\n\n private updateMetadata = () => {\n const source = this._player.source;\n const metadata = source?.metadata;\n const artwork = [metadata?.displayIconUri, source?.poster, ...(metadata?.images ? metadata?.images : [])]\n .filter((image) => image !== undefined)\n .map((image) => {\n if (typeof image === 'string') {\n return { src: image };\n }\n return image;\n });\n mediaSession.metadata = new MediaMetadata({\n title: metadata?.title,\n artist: metadata?.artist || metadata?.subtitle,\n album: metadata?.album,\n artwork,\n });\n };\n\n private updatePositionState = () => {\n const { duration, playbackRate, currentTime } = this._player;\n const isLive = !isFinite(duration);\n if (!isLive) {\n mediaSession.setPositionState({\n // The duration is used to specify the duration in seconds.\n // It should always be positive and positive infinity can be used to indicate media without a defined end such as live playback.\n // NOTE: passing Infinite causes an exception to be thrown.\n duration: isNaN(duration) || duration < 0 ? 0 : duration,\n\n // The playbackRate is used to specify the playback rate.\n // It can be positive to represent forward playback or negative to represent backwards playback. It should not be zero.\n playbackRate,\n\n // The position is used to specify the last reported playback position in seconds. It should always be positive.\n position: currentTime,\n });\n }\n };\n\n private onAdbreakBegin = () => {\n this.updateActionHandlers();\n };\n\n private onAdbreakEnd = () => {\n this.updateActionHandlers();\n };\n\n private isLive(): boolean {\n return !isFinite(this._player.duration);\n }\n\n private isInAd(): boolean {\n return this._player.ads?.playing === true;\n }\n\n private isInBackground(): boolean {\n return document.visibilityState !== 'visible';\n }\n\n // By default, only show trick-play buttons if:\n // - backgroundAudio is enabled, or the player is in foreground;\n // - and, the current asset is neither a live stream, nor an ad.\n private isTrickplayEnabled(): boolean {\n return (this.isBackgroundAudioEnabled() || !this.isInBackground()) && !this.isLive() && !this.isInAd();\n }\n\n // By default, only show a play/pause button if:\n // - backgroundAudio is enabled, or the player is in foreground;\n // - and, the current asset is not an ad.\n private isPlayPauseEnabled(): boolean {\n return (this.isBackgroundAudioEnabled() || !this.isInBackground()) && !this.isInAd();\n }\n\n private isBackgroundAudioEnabled(): boolean {\n return this._webAdapter.backgroundAudioConfiguration.enabled === true;\n }\n}\n"],"mappings":";;;AAAA;;AAQA,OAAO,MAAMA,4BAAmD,GAAG;EACjEC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;;AAErB;AACA,MAAMC,YAAY,GAAI,UAAAC,qBAAA,EAAAC,sBAAA,EAAY;EAChC,MAAMF,YAAY,GAAGG,SAAS,CAACH,YAAY,IAAI,CAAC,CAAC;EACjDA,YAAY,CAACI,gBAAgB,GAAG,EAAAH,qBAAA,GAAAE,SAAS,CAACH,YAAY,cAAAC,qBAAA,uBAAtBA,qBAAA,CAAwBG,gBAAgB,KAAI,YAAY,CAAC,CAAC;EAC1FJ,YAAY,CAACK,gBAAgB,GAAG,EAAAH,sBAAA,GAAAC,SAAS,CAACH,YAAY,cAAAE,sBAAA,uBAAtBA,sBAAA,CAAwBG,gBAAgB,KAAI,YAAY,CAAC,CAAC;EAC1FC,MAAM,CAACC,aAAa,GAAGD,MAAM,CAACC,aAAa,IAAI,YAAY,CAAC,CAAC;EAC7D,OAAOP,YAAY;AACrB,CAAC,CAAE,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMQ,eAAe,CAAC;EAK3BC,WAAWA,CAACC,OAA6B,EAAEC,MAAwB,EAAgE;IAAA,IAAAC,iBAAA,EAAAC,kBAAA;IAAA,IAA9DC,MAA6B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGlB,4BAA4B;IAAAqB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,yBAqDxG,MAAM;MAC7B,IAAI,CAACC,cAAc,CAAC,CAAC;MACrB,IAAI,CAACC,mBAAmB,CAAC,CAAC;MAC1B,IAAI,CAACC,oBAAoB,CAAC,CAAC;IAC7B,CAAC;IAAAH,eAAA,2BAE0B,MAAM;MAC/B,IAAI,CAACG,oBAAoB,CAAC,CAAC;IAC7B,CAAC;IAAAH,eAAA,2BAE0B,MAAM;MAC/B,IAAI,CAACG,oBAAoB,CAAC,CAAC;IAC7B,CAAC;IAAAH,eAAA,yBAEwB,MAAM;MAC7B,MAAMI,MAAM,GAAG,IAAI,CAACC,OAAO,CAACD,MAAM;MAClC,MAAME,QAAQ,GAAGF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,QAAQ;MACjC,MAAMC,OAAO,GAAG,CAACD,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEE,cAAc,EAAEJ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEK,MAAM,EAAE,IAAIH,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEI,MAAM,GAAGJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEI,MAAM,GAAG,EAAE,CAAC,CAAC,CACtGC,MAAM,CAAEC,KAAK,IAAKA,KAAK,KAAKb,SAAS,CAAC,CACtCc,GAAG,CAAED,KAAK,IAAK;QACd,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;UAC7B,OAAO;YAAEE,GAAG,EAAEF;UAAM,CAAC;QACvB;QACA,OAAOA,KAAK;MACd,CAAC,CAAC;MACJ9B,YAAY,CAACwB,QAAQ,GAAG,IAAIjB,aAAa,CAAC;QACxC0B,KAAK,EAAET,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAES,KAAK;QACtBC,MAAM,EAAE,CAAAV,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEU,MAAM,MAAIV,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEW,QAAQ;QAC9CC,KAAK,EAAEZ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEY,KAAK;QACtBX;MACF,CAAC,CAAC;IACJ,CAAC;IAAAP,eAAA,8BAE6B,MAAM;MAClC,MAAM;QAAEmB,QAAQ;QAAEC,YAAY;QAAEC;MAAY,CAAC,GAAG,IAAI,CAAChB,OAAO;MAC5D,MAAMiB,MAAM,GAAG,CAACC,QAAQ,CAACJ,QAAQ,CAAC;MAClC,IAAI,CAACG,MAAM,EAAE;QACXxC,YAAY,CAACK,gBAAgB,CAAC;UAC5B;UACA;UACA;UACAgC,QAAQ,EAAEK,KAAK,CAACL,QAAQ,CAAC,IAAIA,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAGA,QAAQ;UAExD;UACA;UACAC,YAAY;UAEZ;UACAK,QAAQ,EAAEJ;QACZ,CAAC,CAAC;MACJ;IACF,CAAC;IAAArB,eAAA,yBAEwB,MAAM;MAC7B,IAAI,CAACG,oBAAoB,CAAC,CAAC;IAC7B,CAAC;IAAAH,eAAA,uBAEsB,MAAM;MAC3B,IAAI,CAACG,oBAAoB,CAAC,CAAC;IAC7B,CAAC;IA/GC,IAAI,CAACE,OAAO,GAAGZ,MAAM;IACrB,IAAI,CAACiC,WAAW,GAAGlC,OAAO;IAC1B,IAAI,CAACmC,OAAO,GAAG/B,MAAM;IAErB,IAAI,CAACS,OAAO,CAACuB,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAACC,cAAc,CAAC;IAClE,IAAI,CAACxB,OAAO,CAACuB,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAACE,gBAAgB,CAAC;IACtE,IAAI,CAACzB,OAAO,CAACuB,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAACG,gBAAgB,CAAC;IACtE,CAAArC,iBAAA,OAAI,CAACW,OAAO,CAAC2B,GAAG,cAAAtC,iBAAA,eAAhBA,iBAAA,CAAkBkC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAACK,cAAc,CAAC;IACvE,CAAAtC,kBAAA,OAAI,CAACU,OAAO,CAAC2B,GAAG,cAAArC,kBAAA,eAAhBA,kBAAA,CAAkBiC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACM,YAAY,CAAC;IACnE,IAAI,CAAC/B,oBAAoB,CAAC,CAAC;EAC7B;EAEAA,oBAAoBA,CAAA,EAAG;IACrB,IAAI,IAAI,CAACgC,kBAAkB,CAAC,CAAC,EAAE;MAC7BrD,YAAY,CAACI,gBAAgB,CAAC,cAAc,EAAGkD,KAAK,IAAK;QACvD,MAAMxD,QAAQ,GAAGwD,KAAK,CAACC,UAAU,IAAI,IAAI,CAACV,OAAO,CAAC/C,QAAQ;QAC1D,IAAI,CAACyB,OAAO,CAACgB,WAAW,GAAGiB,IAAI,CAACC,GAAG,CAAC,IAAI,CAAClC,OAAO,CAACgB,WAAW,GAAGzC,QAAQ,EAAE,CAAC,CAAC;MAC7E,CAAC,CAAC;MACFE,YAAY,CAACI,gBAAgB,CAAC,aAAa,EAAGkD,KAAK,IAAK;QACtD,MAAMxD,QAAQ,GAAGwD,KAAK,CAACC,UAAU,IAAI,IAAI,CAACV,OAAO,CAAC/C,QAAQ;QAC1D,IAAI,CAACyB,OAAO,CAACgB,WAAW,GAAGiB,IAAI,CAACE,GAAG,CAAC,IAAI,CAACnC,OAAO,CAACgB,WAAW,GAAGzC,QAAQ,EAAE,IAAI,CAACyB,OAAO,CAACc,QAAQ,CAAC;MACjG,CAAC,CAAC;IACJ,CAAC,MAAM;MACLrC,YAAY,CAACI,gBAAgB,CAAC,cAAc,EAAEL,IAAI,CAAC;MACnDC,YAAY,CAACI,gBAAgB,CAAC,aAAa,EAAEL,IAAI,CAAC;IACpD;IAEA,IAAI,IAAI,CAAC4D,kBAAkB,CAAC,CAAC,EAAE;MAC7B3D,YAAY,CAACI,gBAAgB,CAAC,MAAM,EAAE,MAAM;QAAA,IAAAwD,aAAA;QAC1C,CAAAA,aAAA,OAAI,CAACrC,OAAO,cAAAqC,aAAA,eAAZA,aAAA,CAAcC,IAAI,CAAC,CAAC;MACtB,CAAC,CAAC;MACF7D,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAEI,gBAAgB,CAAC,OAAO,EAAE,MAAM;QAAA,IAAA0D,cAAA;QAC5C,CAAAA,cAAA,OAAI,CAACvC,OAAO,cAAAuC,cAAA,eAAZA,cAAA,CAAcC,KAAK,CAAC,CAAC;MACvB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL/D,YAAY,CAACI,gBAAgB,CAAC,MAAM,EAAEL,IAAI,CAAC;MAC3CC,YAAY,CAACI,gBAAgB,CAAC,OAAO,EAAEL,IAAI,CAAC;IAC9C;EACF;EAEAiE,OAAOA,CAAA,EAAG;IAAA,IAAAC,kBAAA,EAAAC,kBAAA;IACR,IAAI,CAAC3C,OAAO,CAAC4C,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAACpB,cAAc,CAAC;IACrE,IAAI,CAACxB,OAAO,CAAC4C,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAACnB,gBAAgB,CAAC;IACzE,IAAI,CAACzB,OAAO,CAAC4C,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAClB,gBAAgB,CAAC;IACzE,CAAAgB,kBAAA,OAAI,CAAC1C,OAAO,CAAC2B,GAAG,cAAAe,kBAAA,eAAhBA,kBAAA,CAAkBE,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAChB,cAAc,CAAC;IAC1E,CAAAe,kBAAA,OAAI,CAAC3C,OAAO,CAAC2B,GAAG,cAAAgB,kBAAA,eAAhBA,kBAAA,CAAkBC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAACf,YAAY,CAAC;IACtEpD,YAAY,CAACI,gBAAgB,CAAC,MAAM,EAAEL,IAAI,CAAC;IAC3CC,YAAY,CAACI,gBAAgB,CAAC,OAAO,EAAEL,IAAI,CAAC;IAC5CC,YAAY,CAACI,gBAAgB,CAAC,cAAc,EAAEL,IAAI,CAAC;IACnDC,YAAY,CAACI,gBAAgB,CAAC,aAAa,EAAEL,IAAI,CAAC;EACpD;EA+DQyC,MAAMA,CAAA,EAAY;IACxB,OAAO,CAACC,QAAQ,CAAC,IAAI,CAAClB,OAAO,CAACc,QAAQ,CAAC;EACzC;EAEQ+B,MAAMA,CAAA,EAAY;IAAA,IAAAC,kBAAA;IACxB,OAAO,EAAAA,kBAAA,OAAI,CAAC9C,OAAO,CAAC2B,GAAG,cAAAmB,kBAAA,uBAAhBA,kBAAA,CAAkBC,OAAO,MAAK,IAAI;EAC3C;EAEQC,cAAcA,CAAA,EAAY;IAChC,OAAOC,QAAQ,CAACC,eAAe,KAAK,SAAS;EAC/C;;EAEA;EACA;EACA;EACQpB,kBAAkBA,CAAA,EAAY;IACpC,OAAO,CAAC,IAAI,CAACqB,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAACH,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC/B,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC4B,MAAM,CAAC,CAAC;EACxG;;EAEA;EACA;EACA;EACQT,kBAAkBA,CAAA,EAAY;IACpC,OAAO,CAAC,IAAI,CAACe,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAACH,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAACH,MAAM,CAAC,CAAC;EACtF;EAEQM,wBAAwBA,CAAA,EAAY;IAC1C,OAAO,IAAI,CAAC9B,WAAW,CAAC+B,4BAA4B,CAACC,OAAO,KAAK,IAAI;EACvE;AACF"}
@@ -48,7 +48,7 @@ export class WebPresentationModeManager {
48
48
  }
49
49
  } else if (presentationMode === PresentationMode.pip) {
50
50
  var _this$_element, _this$_element$reques;
51
- void ((_this$_element = this._element) === null || _this$_element === void 0 ? void 0 : (_this$_element$reques = _this$_element.requestPictureInPicture) === null || _this$_element$reques === void 0 ? void 0 : _this$_element$reques.call(_this$_element));
51
+ void ((_this$_element = this._element) === null || _this$_element === void 0 || (_this$_element$reques = _this$_element.requestPictureInPicture) === null || _this$_element$reques === void 0 ? void 0 : _this$_element$reques.call(_this$_element));
52
52
  } else {
53
53
  if (this._presentationMode === PresentationMode.fullscreen) {
54
54
  const promise = document[fullscreenAPI.exitFullscreen_]();
@@ -64,13 +64,13 @@ export class WebPresentationModeManager {
64
64
  // iOS Safari doesn't properly support fullscreen, use native fullscreen instead
65
65
  if (presentationMode === PresentationMode.fullscreen) {
66
66
  var _this$_element2, _this$_element2$webki;
67
- (_this$_element2 = this._element) === null || _this$_element2 === void 0 ? void 0 : (_this$_element2$webki = _this$_element2.webkitEnterFullscreen) === null || _this$_element2$webki === void 0 ? void 0 : _this$_element2$webki.call(_this$_element2);
67
+ (_this$_element2 = this._element) === null || _this$_element2 === void 0 || (_this$_element2$webki = _this$_element2.webkitEnterFullscreen) === null || _this$_element2$webki === void 0 || _this$_element2$webki.call(_this$_element2);
68
68
  } else if (presentationMode === PresentationMode.pip) {
69
69
  var _this$_element3, _this$_element3$webki;
70
- (_this$_element3 = this._element) === null || _this$_element3 === void 0 ? void 0 : (_this$_element3$webki = _this$_element3.webkitSetPresentationMode) === null || _this$_element3$webki === void 0 ? void 0 : _this$_element3$webki.call(_this$_element3, PresentationMode.pip);
70
+ (_this$_element3 = this._element) === null || _this$_element3 === void 0 || (_this$_element3$webki = _this$_element3.webkitSetPresentationMode) === null || _this$_element3$webki === void 0 || _this$_element3$webki.call(_this$_element3, PresentationMode.pip);
71
71
  } else {
72
72
  var _this$_element4, _this$_element4$webki;
73
- (_this$_element4 = this._element) === null || _this$_element4 === void 0 ? void 0 : (_this$_element4$webki = _this$_element4.webkitSetPresentationMode) === null || _this$_element4$webki === void 0 ? void 0 : _this$_element4$webki.call(_this$_element4, PresentationMode.inline);
73
+ (_this$_element4 = this._element) === null || _this$_element4 === void 0 || (_this$_element4$webki = _this$_element4.webkitSetPresentationMode) === null || _this$_element4$webki === void 0 || _this$_element4$webki.call(_this$_element4, PresentationMode.inline);
74
74
  }
75
75
  }
76
76
  }
@@ -1 +1 @@
1
- {"version":3,"names":["PresentationMode","DefaultPresentationModeChangeEvent","fullscreenAPI","noOp","WebPresentationModeManager","constructor","player","eventForwarder","_defineProperty","inline","undefined","newPresentationMode","document","fullscreenElement_","fullscreen","pictureInPictureElement","pip","previousPresentationMode","_presentationMode","_eventForwarder","dispatchEvent","_player","presentationMode","prepareForPresentationModeChanges","appElement","getElementById","promise","requestFullscreen_","then","_this$_element","_this$_element$reques","_element","requestPictureInPicture","call","exitFullscreen_","exitPictureInPicture","_this$_element2","_this$_element2$webki","webkitEnterFullscreen","_this$_element3","_this$_element3$webki","webkitSetPresentationMode","_this$_element4","_this$_element4$webki","elements","element","children","Array","from","tagName","attributes","getNamedItem","onenterpictureinpicture","updatePresentationMode","onleavepictureinpicture","addEventListener","fullscreenchange_","fullscreenerror_"],"sources":["WebPresentationModeManager.ts"],"sourcesContent":["import type { PlayerEventMap } from 'react-native-theoplayer';\nimport { PresentationMode } from 'react-native-theoplayer';\nimport type * as THEOplayerWeb from 'theoplayer';\nimport { DefaultPresentationModeChangeEvent } from '../event/PlayerEvents';\nimport type { DefaultEventDispatcher } from '../event/DefaultEventDispatcher';\nimport { fullscreenAPI } from './FullscreenAPI';\nimport { noOp } from '../../utils/CommonUtils';\n\nexport class WebPresentationModeManager {\n private readonly _player: THEOplayerWeb.ChromelessPlayer;\n private _presentationMode: PresentationMode = PresentationMode.inline;\n private _element: HTMLVideoElement | undefined = undefined;\n private _eventForwarder: DefaultEventDispatcher<PlayerEventMap>;\n\n constructor(player: THEOplayerWeb.ChromelessPlayer, eventForwarder: DefaultEventDispatcher<PlayerEventMap>) {\n this._player = player;\n this._eventForwarder = eventForwarder;\n }\n\n get presentationMode(): PresentationMode {\n return this._presentationMode;\n }\n\n set presentationMode(presentationMode: PresentationMode) {\n if (presentationMode === this._presentationMode) {\n return;\n }\n\n this.prepareForPresentationModeChanges();\n\n if (fullscreenAPI !== undefined) {\n // All other browsers\n if (presentationMode === PresentationMode.fullscreen) {\n const appElement = document.getElementById('app')!;\n const promise = appElement[fullscreenAPI.requestFullscreen_]();\n if (promise && promise.then) {\n promise.then(noOp, noOp);\n }\n } else if (presentationMode === PresentationMode.pip) {\n void this._element?.requestPictureInPicture?.();\n } else {\n if (this._presentationMode === PresentationMode.fullscreen) {\n const promise = document[fullscreenAPI.exitFullscreen_]();\n if (promise && promise.then) {\n promise.then(noOp, noOp);\n }\n }\n if (this._presentationMode === PresentationMode.pip) {\n void document.exitPictureInPicture();\n }\n }\n } else {\n // iOS Safari doesn't properly support fullscreen, use native fullscreen instead\n if (presentationMode === PresentationMode.fullscreen) {\n this._element?.webkitEnterFullscreen?.();\n } else if (presentationMode === PresentationMode.pip) {\n this._element?.webkitSetPresentationMode?.(PresentationMode.pip);\n } else {\n this._element?.webkitSetPresentationMode?.(PresentationMode.inline);\n }\n }\n }\n\n private prepareForPresentationModeChanges() {\n const elements = this._player.element.children;\n for (const element of Array.from(elements)) {\n if (element.tagName === 'VIDEO' && element.attributes.getNamedItem('src') !== null) {\n this._element = element as HTMLVideoElement;\n }\n }\n // listen for pip updates on element\n if (this._element !== undefined) {\n this._element.onenterpictureinpicture = () => {\n this.updatePresentationMode();\n };\n this._element.onleavepictureinpicture = () => {\n this.updatePresentationMode();\n };\n }\n // listen for fullscreen updates on document\n if (fullscreenAPI !== undefined) {\n document.addEventListener(fullscreenAPI.fullscreenchange_, this.updatePresentationMode);\n document.addEventListener(fullscreenAPI.fullscreenerror_, this.updatePresentationMode);\n }\n }\n\n private updatePresentationMode = () => {\n // detect new presentation mode\n let newPresentationMode: PresentationMode = PresentationMode.inline;\n if (fullscreenAPI !== undefined && document[fullscreenAPI.fullscreenElement_] !== null) {\n newPresentationMode = PresentationMode.fullscreen;\n } else if (document.pictureInPictureElement !== null) {\n newPresentationMode = PresentationMode.pip;\n }\n\n // when changed, notify by dispatching presentationModeChange event\n const previousPresentationMode = this._presentationMode;\n if (newPresentationMode !== previousPresentationMode) {\n this._presentationMode = newPresentationMode;\n this._eventForwarder.dispatchEvent(new DefaultPresentationModeChangeEvent(this._presentationMode, previousPresentationMode));\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["PresentationMode","DefaultPresentationModeChangeEvent","fullscreenAPI","noOp","WebPresentationModeManager","constructor","player","eventForwarder","_defineProperty","inline","undefined","newPresentationMode","document","fullscreenElement_","fullscreen","pictureInPictureElement","pip","previousPresentationMode","_presentationMode","_eventForwarder","dispatchEvent","_player","presentationMode","prepareForPresentationModeChanges","appElement","getElementById","promise","requestFullscreen_","then","_this$_element","_this$_element$reques","_element","requestPictureInPicture","call","exitFullscreen_","exitPictureInPicture","_this$_element2","_this$_element2$webki","webkitEnterFullscreen","_this$_element3","_this$_element3$webki","webkitSetPresentationMode","_this$_element4","_this$_element4$webki","elements","element","children","Array","from","tagName","attributes","getNamedItem","onenterpictureinpicture","updatePresentationMode","onleavepictureinpicture","addEventListener","fullscreenchange_","fullscreenerror_"],"sources":["WebPresentationModeManager.ts"],"sourcesContent":["import type { PlayerEventMap } from 'react-native-theoplayer';\nimport { PresentationMode } from 'react-native-theoplayer';\nimport type { ChromelessPlayer } from 'theoplayer';\nimport { DefaultPresentationModeChangeEvent } from '../event/PlayerEvents';\nimport type { DefaultEventDispatcher } from '../event/DefaultEventDispatcher';\nimport { fullscreenAPI } from './FullscreenAPI';\nimport { noOp } from '../../utils/CommonUtils';\n\nexport class WebPresentationModeManager {\n private readonly _player: ChromelessPlayer;\n private _presentationMode: PresentationMode = PresentationMode.inline;\n private _element: HTMLVideoElement | undefined = undefined;\n private _eventForwarder: DefaultEventDispatcher<PlayerEventMap>;\n\n constructor(player: ChromelessPlayer, eventForwarder: DefaultEventDispatcher<PlayerEventMap>) {\n this._player = player;\n this._eventForwarder = eventForwarder;\n }\n\n get presentationMode(): PresentationMode {\n return this._presentationMode;\n }\n\n set presentationMode(presentationMode: PresentationMode) {\n if (presentationMode === this._presentationMode) {\n return;\n }\n\n this.prepareForPresentationModeChanges();\n\n if (fullscreenAPI !== undefined) {\n // All other browsers\n if (presentationMode === PresentationMode.fullscreen) {\n const appElement = document.getElementById('app')!;\n const promise = appElement[fullscreenAPI.requestFullscreen_]();\n if (promise && promise.then) {\n promise.then(noOp, noOp);\n }\n } else if (presentationMode === PresentationMode.pip) {\n void this._element?.requestPictureInPicture?.();\n } else {\n if (this._presentationMode === PresentationMode.fullscreen) {\n const promise = document[fullscreenAPI.exitFullscreen_]();\n if (promise && promise.then) {\n promise.then(noOp, noOp);\n }\n }\n if (this._presentationMode === PresentationMode.pip) {\n void document.exitPictureInPicture();\n }\n }\n } else {\n // iOS Safari doesn't properly support fullscreen, use native fullscreen instead\n if (presentationMode === PresentationMode.fullscreen) {\n this._element?.webkitEnterFullscreen?.();\n } else if (presentationMode === PresentationMode.pip) {\n this._element?.webkitSetPresentationMode?.(PresentationMode.pip);\n } else {\n this._element?.webkitSetPresentationMode?.(PresentationMode.inline);\n }\n }\n }\n\n private prepareForPresentationModeChanges() {\n const elements = this._player.element.children;\n for (const element of Array.from(elements)) {\n if (element.tagName === 'VIDEO' && element.attributes.getNamedItem('src') !== null) {\n this._element = element as HTMLVideoElement;\n }\n }\n // listen for pip updates on element\n if (this._element !== undefined) {\n this._element.onenterpictureinpicture = () => {\n this.updatePresentationMode();\n };\n this._element.onleavepictureinpicture = () => {\n this.updatePresentationMode();\n };\n }\n // listen for fullscreen updates on document\n if (fullscreenAPI !== undefined) {\n document.addEventListener(fullscreenAPI.fullscreenchange_, this.updatePresentationMode);\n document.addEventListener(fullscreenAPI.fullscreenerror_, this.updatePresentationMode);\n }\n }\n\n private updatePresentationMode = () => {\n // detect new presentation mode\n let newPresentationMode: PresentationMode = PresentationMode.inline;\n if (fullscreenAPI !== undefined && document[fullscreenAPI.fullscreenElement_] !== null) {\n newPresentationMode = PresentationMode.fullscreen;\n } else if (document.pictureInPictureElement !== null) {\n newPresentationMode = PresentationMode.pip;\n }\n\n // when changed, notify by dispatching presentationModeChange event\n const previousPresentationMode = this._presentationMode;\n if (newPresentationMode !== previousPresentationMode) {\n this._presentationMode = newPresentationMode;\n this._eventForwarder.dispatchEvent(new DefaultPresentationModeChangeEvent(this._presentationMode, previousPresentationMode));\n }\n };\n}\n"],"mappings":";;;AACA,SAASA,gBAAgB,QAAQ,yBAAyB;AAE1D,SAASC,kCAAkC,QAAQ,uBAAuB;AAE1E,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,IAAI,QAAQ,yBAAyB;AAE9C,OAAO,MAAMC,0BAA0B,CAAC;EAMtCC,WAAWA,CAACC,MAAwB,EAAEC,cAAsD,EAAE;IAAAC,eAAA;IAAAA,eAAA,4BAJhDR,gBAAgB,CAACS,MAAM;IAAAD,eAAA,mBACpBE,SAAS;IAAAF,eAAA;IAAAA,eAAA,iCA2EzB,MAAM;MACrC;MACA,IAAIG,mBAAqC,GAAGX,gBAAgB,CAACS,MAAM;MACnE,IAAIP,aAAa,KAAKQ,SAAS,IAAIE,QAAQ,CAACV,aAAa,CAACW,kBAAkB,CAAC,KAAK,IAAI,EAAE;QACtFF,mBAAmB,GAAGX,gBAAgB,CAACc,UAAU;MACnD,CAAC,MAAM,IAAIF,QAAQ,CAACG,uBAAuB,KAAK,IAAI,EAAE;QACpDJ,mBAAmB,GAAGX,gBAAgB,CAACgB,GAAG;MAC5C;;MAEA;MACA,MAAMC,wBAAwB,GAAG,IAAI,CAACC,iBAAiB;MACvD,IAAIP,mBAAmB,KAAKM,wBAAwB,EAAE;QACpD,IAAI,CAACC,iBAAiB,GAAGP,mBAAmB;QAC5C,IAAI,CAACQ,eAAe,CAACC,aAAa,CAAC,IAAInB,kCAAkC,CAAC,IAAI,CAACiB,iBAAiB,EAAED,wBAAwB,CAAC,CAAC;MAC9H;IACF,CAAC;IAtFC,IAAI,CAACI,OAAO,GAAGf,MAAM;IACrB,IAAI,CAACa,eAAe,GAAGZ,cAAc;EACvC;EAEA,IAAIe,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACJ,iBAAiB;EAC/B;EAEA,IAAII,gBAAgBA,CAACA,gBAAkC,EAAE;IACvD,IAAIA,gBAAgB,KAAK,IAAI,CAACJ,iBAAiB,EAAE;MAC/C;IACF;IAEA,IAAI,CAACK,iCAAiC,CAAC,CAAC;IAExC,IAAIrB,aAAa,KAAKQ,SAAS,EAAE;MAC/B;MACA,IAAIY,gBAAgB,KAAKtB,gBAAgB,CAACc,UAAU,EAAE;QACpD,MAAMU,UAAU,GAAGZ,QAAQ,CAACa,cAAc,CAAC,KAAK,CAAE;QAClD,MAAMC,OAAO,GAAGF,UAAU,CAACtB,aAAa,CAACyB,kBAAkB,CAAC,CAAC,CAAC;QAC9D,IAAID,OAAO,IAAIA,OAAO,CAACE,IAAI,EAAE;UAC3BF,OAAO,CAACE,IAAI,CAACzB,IAAI,EAAEA,IAAI,CAAC;QAC1B;MACF,CAAC,MAAM,IAAImB,gBAAgB,KAAKtB,gBAAgB,CAACgB,GAAG,EAAE;QAAA,IAAAa,cAAA,EAAAC,qBAAA;QACpD,OAAAD,cAAA,GAAK,IAAI,CAACE,QAAQ,cAAAF,cAAA,gBAAAC,qBAAA,GAAbD,cAAA,CAAeG,uBAAuB,cAAAF,qBAAA,uBAAtCA,qBAAA,CAAAG,IAAA,CAAAJ,cAAyC,CAAC;MACjD,CAAC,MAAM;QACL,IAAI,IAAI,CAACX,iBAAiB,KAAKlB,gBAAgB,CAACc,UAAU,EAAE;UAC1D,MAAMY,OAAO,GAAGd,QAAQ,CAACV,aAAa,CAACgC,eAAe,CAAC,CAAC,CAAC;UACzD,IAAIR,OAAO,IAAIA,OAAO,CAACE,IAAI,EAAE;YAC3BF,OAAO,CAACE,IAAI,CAACzB,IAAI,EAAEA,IAAI,CAAC;UAC1B;QACF;QACA,IAAI,IAAI,CAACe,iBAAiB,KAAKlB,gBAAgB,CAACgB,GAAG,EAAE;UACnD,KAAKJ,QAAQ,CAACuB,oBAAoB,CAAC,CAAC;QACtC;MACF;IACF,CAAC,MAAM;MACL;MACA,IAAIb,gBAAgB,KAAKtB,gBAAgB,CAACc,UAAU,EAAE;QAAA,IAAAsB,eAAA,EAAAC,qBAAA;QACpD,CAAAD,eAAA,OAAI,CAACL,QAAQ,cAAAK,eAAA,gBAAAC,qBAAA,GAAbD,eAAA,CAAeE,qBAAqB,cAAAD,qBAAA,eAApCA,qBAAA,CAAAJ,IAAA,CAAAG,eAAuC,CAAC;MAC1C,CAAC,MAAM,IAAId,gBAAgB,KAAKtB,gBAAgB,CAACgB,GAAG,EAAE;QAAA,IAAAuB,eAAA,EAAAC,qBAAA;QACpD,CAAAD,eAAA,OAAI,CAACR,QAAQ,cAAAQ,eAAA,gBAAAC,qBAAA,GAAbD,eAAA,CAAeE,yBAAyB,cAAAD,qBAAA,eAAxCA,qBAAA,CAAAP,IAAA,CAAAM,eAAA,EAA2CvC,gBAAgB,CAACgB,GAAG,CAAC;MAClE,CAAC,MAAM;QAAA,IAAA0B,eAAA,EAAAC,qBAAA;QACL,CAAAD,eAAA,OAAI,CAACX,QAAQ,cAAAW,eAAA,gBAAAC,qBAAA,GAAbD,eAAA,CAAeD,yBAAyB,cAAAE,qBAAA,eAAxCA,qBAAA,CAAAV,IAAA,CAAAS,eAAA,EAA2C1C,gBAAgB,CAACS,MAAM,CAAC;MACrE;IACF;EACF;EAEQc,iCAAiCA,CAAA,EAAG;IAC1C,MAAMqB,QAAQ,GAAG,IAAI,CAACvB,OAAO,CAACwB,OAAO,CAACC,QAAQ;IAC9C,KAAK,MAAMD,OAAO,IAAIE,KAAK,CAACC,IAAI,CAACJ,QAAQ,CAAC,EAAE;MAC1C,IAAIC,OAAO,CAACI,OAAO,KAAK,OAAO,IAAIJ,OAAO,CAACK,UAAU,CAACC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAClF,IAAI,CAACpB,QAAQ,GAAGc,OAA2B;MAC7C;IACF;IACA;IACA,IAAI,IAAI,CAACd,QAAQ,KAAKrB,SAAS,EAAE;MAC/B,IAAI,CAACqB,QAAQ,CAACqB,uBAAuB,GAAG,MAAM;QAC5C,IAAI,CAACC,sBAAsB,CAAC,CAAC;MAC/B,CAAC;MACD,IAAI,CAACtB,QAAQ,CAACuB,uBAAuB,GAAG,MAAM;QAC5C,IAAI,CAACD,sBAAsB,CAAC,CAAC;MAC/B,CAAC;IACH;IACA;IACA,IAAInD,aAAa,KAAKQ,SAAS,EAAE;MAC/BE,QAAQ,CAAC2C,gBAAgB,CAACrD,aAAa,CAACsD,iBAAiB,EAAE,IAAI,CAACH,sBAAsB,CAAC;MACvFzC,QAAQ,CAAC2C,gBAAgB,CAACrD,aAAa,CAACuD,gBAAgB,EAAE,IAAI,CAACJ,sBAAsB,CAAC;IACxF;EACF;AAkBF"}
@@ -0,0 +1,110 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import { CacheStatus } from '../../api/cache/MediaCacheAPI';
5
+ import { DefaultEventDispatcher } from '../adapter/event/DefaultEventDispatcher';
6
+ import { CacheEventType } from '../../api/cache/events/CacheEvent';
7
+ import { CachingTaskEventType } from 'react-native-theoplayer';
8
+ import { NativeEventEmitter, NativeModules } from 'react-native';
9
+ import { NativeCachingTaskAdapter } from './NativeCachingTaskAdapter';
10
+ import { toNativeCachingTaskParameters } from "./NativeCachingTaskParametersAdapter";
11
+ const TAG = "NativeMediaCache";
12
+ export class NativeMediaCache extends DefaultEventDispatcher {
13
+ constructor() {
14
+ super();
15
+ _defineProperty(this, "_emitter", new NativeEventEmitter(NativeModules.CacheModule));
16
+ _defineProperty(this, "_status", CacheStatus.uninitialised);
17
+ _defineProperty(this, "_tasks", []);
18
+ _defineProperty(this, "onCacheStatusChange", async event => {
19
+ if (this._status === CacheStatus.uninitialised) {
20
+ await this.getInitialState();
21
+ }
22
+ this._status = event.status;
23
+ this.dispatchEvent({
24
+ type: CacheEventType.statechange,
25
+ date: new Date()
26
+ });
27
+ });
28
+ _defineProperty(this, "onAddCachingTaskEvent", event => {
29
+ const task = new NativeCachingTaskAdapter(event.task);
30
+ this._tasks.push(task);
31
+ this.dispatchEvent({
32
+ type: CacheEventType.addtask,
33
+ task,
34
+ date: new Date()
35
+ });
36
+ });
37
+ _defineProperty(this, "onRemoveCachingTaskEvent", event => {
38
+ const task = this.taskById(event.task.id);
39
+ if (task) {
40
+ this._tasks = this._tasks.filter(task => task.id !== event.task.id);
41
+ this.dispatchEvent({
42
+ type: CacheEventType.removetask,
43
+ task,
44
+ date: new Date()
45
+ });
46
+ } else {
47
+ console.warn(TAG, `onRemoveCachingTaskEvent: CachingTask with id ${event.task.id} not found.`);
48
+ }
49
+ });
50
+ _defineProperty(this, "onCachingTaskProgressEvent", event => {
51
+ const task = this.taskById(event.id);
52
+ if (task) {
53
+ Object.assign(task, {
54
+ ...event.progress
55
+ });
56
+ task.dispatchEvent({
57
+ type: CachingTaskEventType.progress,
58
+ date: new Date()
59
+ });
60
+ }
61
+ });
62
+ _defineProperty(this, "onCachingTaskStatusChangeEvent", event => {
63
+ const task = this.taskById(event.id);
64
+ if (task) {
65
+ Object.assign(task, {
66
+ ...event
67
+ });
68
+ task.dispatchEvent({
69
+ type: CachingTaskEventType.statechange,
70
+ date: new Date()
71
+ });
72
+ }
73
+ });
74
+ this._emitter.addListener('onCacheStatusChange', this.onCacheStatusChange);
75
+ this._emitter.addListener('onAddCachingTaskEvent', this.onAddCachingTaskEvent);
76
+ this._emitter.addListener('onRemoveCachingTaskEvent', this.onRemoveCachingTaskEvent);
77
+ this._emitter.addListener('onCachingTaskProgressEvent', this.onCachingTaskProgressEvent);
78
+ this._emitter.addListener('onCachingTaskStatusChangeEvent', this.onCachingTaskStatusChangeEvent);
79
+ void this.initialize();
80
+ }
81
+ async createTask(source, parameters) {
82
+ return NativeModules.CacheModule.createTask(source, toNativeCachingTaskParameters(parameters));
83
+ }
84
+ get status() {
85
+ return this._status;
86
+ }
87
+ get tasks() {
88
+ return this._tasks;
89
+ }
90
+ async initialize() {
91
+ await this.getInitialState();
92
+
93
+ // Dispatch status change event here
94
+ if (this._status === CacheStatus.initialised) {
95
+ await this.onCacheStatusChange({
96
+ status: this._status
97
+ });
98
+ }
99
+ }
100
+ async getInitialState() {
101
+ const initialState = await NativeModules.CacheModule.getInitialState();
102
+ this._status = initialState.status;
103
+ this._tasks = initialState.tasks.map(task => new NativeCachingTaskAdapter(task));
104
+ }
105
+ taskById(id) {
106
+ return this._tasks.find(task => task.id === id);
107
+ }
108
+ }
109
+ export const MediaCache = new NativeMediaCache();
110
+ //# sourceMappingURL=MediaCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CacheStatus","DefaultEventDispatcher","CacheEventType","CachingTaskEventType","NativeEventEmitter","NativeModules","NativeCachingTaskAdapter","toNativeCachingTaskParameters","TAG","NativeMediaCache","constructor","_defineProperty","CacheModule","uninitialised","event","_status","getInitialState","status","dispatchEvent","type","statechange","date","Date","task","_tasks","push","addtask","taskById","id","filter","removetask","console","warn","Object","assign","progress","_emitter","addListener","onCacheStatusChange","onAddCachingTaskEvent","onRemoveCachingTaskEvent","onCachingTaskProgressEvent","onCachingTaskStatusChangeEvent","initialize","createTask","source","parameters","tasks","initialised","initialState","map","find","MediaCache"],"sources":["MediaCache.ts"],"sourcesContent":["import { CacheStatus, MediaCacheAPI } from '../../api/cache/MediaCacheAPI';\nimport type { CachingTaskList } from '../../api/cache/CachingTaskList';\nimport { DefaultEventDispatcher } from '../adapter/event/DefaultEventDispatcher';\nimport type { CacheEventMap } from '../../api/cache/events/CacheEvent';\nimport { CacheEventType } from '../../api/cache/events/CacheEvent';\nimport type { CachingTaskProgressEvent, CachingTaskStatusChangeEvent, SourceDescription } from 'react-native-theoplayer';\nimport { CacheTaskStatus, CachingTaskEventType, TimeRange } from 'react-native-theoplayer';\nimport type { CachingTaskParameters } from '../../api/cache/CachingTaskParameters';\nimport type { CachingTask } from '../../api/cache/CachingTask';\nimport { NativeEventEmitter, NativeModules } from 'react-native';\nimport { NativeCachingTask, NativeCachingTaskAdapter } from './NativeCachingTaskAdapter';\nimport { toNativeCachingTaskParameters } from \"./NativeCachingTaskParametersAdapter\";\n\nconst TAG = \"NativeMediaCache\";\n\ninterface NativeCachingStatusChangeEvent {\n readonly id: string;\n readonly status: CacheTaskStatus;\n}\n\ninterface NativeCacheStatusChangeEvent {\n readonly status: CacheStatus;\n}\n\ninterface NativeAddCachingTaskEvent {\n readonly task: NativeCachingTask;\n}\n\ninterface NativeRemoveCachingTaskEvent {\n readonly task: NativeCachingTask;\n}\n\ninterface NativeCachingTaskProgressEvent {\n id: string;\n progress: {\n readonly duration: number;\n readonly cached: TimeRange[];\n readonly secondsCached: number;\n readonly percentageCached: number;\n readonly bytes: number;\n readonly bytesCached: number;\n };\n}\n\nexport class NativeMediaCache extends DefaultEventDispatcher<CacheEventMap> implements MediaCacheAPI {\n private _emitter: NativeEventEmitter = new NativeEventEmitter(NativeModules.CacheModule);\n private _status: CacheStatus = CacheStatus.uninitialised;\n private _tasks: NativeCachingTaskAdapter[] = [];\n\n constructor() {\n super();\n this._emitter.addListener('onCacheStatusChange', this.onCacheStatusChange);\n this._emitter.addListener('onAddCachingTaskEvent', this.onAddCachingTaskEvent);\n this._emitter.addListener('onRemoveCachingTaskEvent', this.onRemoveCachingTaskEvent);\n this._emitter.addListener('onCachingTaskProgressEvent', this.onCachingTaskProgressEvent);\n this._emitter.addListener('onCachingTaskStatusChangeEvent', this.onCachingTaskStatusChangeEvent);\n void this.initialize();\n }\n\n async createTask(source: SourceDescription, parameters: CachingTaskParameters): Promise<CachingTask> {\n return NativeModules.CacheModule.createTask(source, toNativeCachingTaskParameters(parameters));\n }\n\n get status(): CacheStatus {\n return this._status;\n }\n\n get tasks(): CachingTaskList {\n return this._tasks;\n }\n\n private async initialize(): Promise<void> {\n await this.getInitialState();\n\n // Dispatch status change event here\n if (this._status === CacheStatus.initialised) {\n await this.onCacheStatusChange({\n status: this._status,\n });\n }\n }\n\n private async getInitialState(): Promise<void> {\n const initialState = await NativeModules.CacheModule.getInitialState();\n this._status = initialState.status;\n this._tasks = initialState.tasks.map((task: NativeCachingTask) => new NativeCachingTaskAdapter(task));\n }\n\n private onCacheStatusChange = async (event: NativeCacheStatusChangeEvent) => {\n if (this._status === CacheStatus.uninitialised) {\n await this.getInitialState();\n }\n this._status = event.status;\n this.dispatchEvent({\n type: CacheEventType.statechange,\n date: new Date()\n });\n };\n\n private onAddCachingTaskEvent = (event: NativeAddCachingTaskEvent) => {\n const task= new NativeCachingTaskAdapter(event.task);\n this._tasks.push(task);\n this.dispatchEvent({\n type: CacheEventType.addtask,\n task,\n date: new Date(),\n });\n };\n\n private onRemoveCachingTaskEvent = (event: NativeRemoveCachingTaskEvent) => {\n const task = this.taskById(event.task.id);\n if (task) {\n this._tasks = this._tasks.filter((task) => task.id !== event.task.id);\n this.dispatchEvent({\n type: CacheEventType.removetask,\n task,\n date: new Date(),\n });\n } else {\n console.warn(TAG, `onRemoveCachingTaskEvent: CachingTask with id ${event.task.id} not found.`)\n }\n };\n\n private onCachingTaskProgressEvent = (event: NativeCachingTaskProgressEvent) => {\n const task = this.taskById(event.id);\n if (task) {\n Object.assign(task, { ...event.progress });\n task.dispatchEvent({\n type: CachingTaskEventType.progress,\n date: new Date(),\n } as CachingTaskProgressEvent);\n }\n };\n\n private onCachingTaskStatusChangeEvent = (event: NativeCachingStatusChangeEvent) => {\n const task = this.taskById(event.id);\n if (task) {\n Object.assign(task, { ...event });\n task.dispatchEvent({\n type: CachingTaskEventType.statechange,\n date: new Date(),\n } as CachingTaskStatusChangeEvent);\n }\n };\n\n private taskById(id: string): NativeCachingTaskAdapter | undefined {\n return this._tasks.find((task) => task.id === id);\n }\n}\n\nexport const MediaCache = new NativeMediaCache();\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import { DefaultEventDispatcher } from '../adapter/event/DefaultEventDispatcher';
5
+ import * as THEOplayerWeb from 'theoplayer';
6
+ import { WebCachingTaskAdapter } from './WebCachingTaskAdapter';
7
+ import { CacheEventType } from 'react-native-theoplayer';
8
+ export class WebMediaCache extends DefaultEventDispatcher {
9
+ constructor() {
10
+ super();
11
+ _defineProperty(this, "onAddTask", event => {
12
+ this.dispatchEvent({
13
+ type: CacheEventType.addtask,
14
+ task: new WebCachingTaskAdapter(event.task),
15
+ date: event.date
16
+ });
17
+ });
18
+ _defineProperty(this, "onRemoveTask", event => {
19
+ this.dispatchEvent({
20
+ type: CacheEventType.removetask,
21
+ task: new WebCachingTaskAdapter(event.task),
22
+ date: event.date
23
+ });
24
+ });
25
+ THEOplayerWeb.cache.tasks.addEventListener('addtask', this.onAddTask);
26
+ THEOplayerWeb.cache.tasks.addEventListener('removetask', this.onRemoveTask);
27
+ }
28
+ createTask(source, parameters) {
29
+ return Promise.resolve(new WebCachingTaskAdapter(THEOplayerWeb.cache.createTask(source, parameters)));
30
+ }
31
+ get status() {
32
+ return THEOplayerWeb.cache.status;
33
+ }
34
+
35
+ // @ts-ignore
36
+ get tasks() {
37
+ return THEOplayerWeb.cache.tasks.map(task => new WebCachingTaskAdapter(task));
38
+ }
39
+ }
40
+ export const MediaCache = new WebMediaCache();
41
+
42
+ // Expose cache for easy access
43
+ // @ts-ignore
44
+ window.MediaCache = MediaCache;
45
+ //# sourceMappingURL=MediaCache.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DefaultEventDispatcher","THEOplayerWeb","WebCachingTaskAdapter","CacheEventType","WebMediaCache","constructor","_defineProperty","event","dispatchEvent","type","addtask","task","date","removetask","cache","tasks","addEventListener","onAddTask","onRemoveTask","createTask","source","parameters","Promise","resolve","status","map","MediaCache","window"],"sources":["MediaCache.web.ts"],"sourcesContent":["import type { CacheStatus, MediaCacheAPI } from 'react-native-theoplayer';\nimport type { CachingTaskList } from 'react-native-theoplayer';\nimport { DefaultEventDispatcher } from '../adapter/event/DefaultEventDispatcher';\nimport type { CacheEventMap } from 'react-native-theoplayer';\nimport type { SourceDescription } from 'react-native-theoplayer';\nimport type { CachingTaskParameters } from 'react-native-theoplayer';\nimport type { CachingTask } from 'react-native-theoplayer';\nimport * as THEOplayerWeb from 'theoplayer';\nimport { WebCachingTaskAdapter } from './WebCachingTaskAdapter';\nimport type { AddCachingTaskEvent, RemoveCachingTaskEvent, SourceDescription as NativeSourceDescription } from 'theoplayer';\nimport { CacheEventType } from 'react-native-theoplayer';\n\nexport class WebMediaCache extends DefaultEventDispatcher<CacheEventMap> implements MediaCacheAPI {\n constructor() {\n super();\n THEOplayerWeb.cache.tasks.addEventListener('addtask', this.onAddTask);\n THEOplayerWeb.cache.tasks.addEventListener('removetask', this.onRemoveTask);\n }\n\n private onAddTask = (event: AddCachingTaskEvent) => {\n this.dispatchEvent({\n type: CacheEventType.addtask,\n task: new WebCachingTaskAdapter(event.task),\n date: event.date,\n });\n };\n\n private onRemoveTask = (event: RemoveCachingTaskEvent) => {\n this.dispatchEvent({\n type: CacheEventType.removetask,\n task: new WebCachingTaskAdapter(event.task),\n date: event.date,\n });\n };\n\n createTask(source: SourceDescription, parameters: CachingTaskParameters): Promise<CachingTask> {\n return Promise.resolve(new WebCachingTaskAdapter(THEOplayerWeb.cache.createTask(source as NativeSourceDescription, parameters)));\n }\n\n get status(): CacheStatus {\n return THEOplayerWeb.cache.status as CacheStatus;\n }\n\n // @ts-ignore\n get tasks(): CachingTaskList {\n return THEOplayerWeb.cache.tasks.map((task) => new WebCachingTaskAdapter(task)) as CachingTaskList;\n }\n}\n\nexport const MediaCache = new WebMediaCache();\n\n// Expose cache for easy access\n// @ts-ignore\nwindow.MediaCache = MediaCache;\n"],"mappings":";;;AAEA,SAASA,sBAAsB,QAAQ,yCAAyC;AAKhF,OAAO,KAAKC,aAAa,MAAM,YAAY;AAC3C,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D,SAASC,cAAc,QAAQ,yBAAyB;AAExD,OAAO,MAAMC,aAAa,SAASJ,sBAAsB,CAAyC;EAChGK,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IAACC,eAAA,oBAKWC,KAA0B,IAAK;MAClD,IAAI,CAACC,aAAa,CAAC;QACjBC,IAAI,EAAEN,cAAc,CAACO,OAAO;QAC5BC,IAAI,EAAE,IAAIT,qBAAqB,CAACK,KAAK,CAACI,IAAI,CAAC;QAC3CC,IAAI,EAAEL,KAAK,CAACK;MACd,CAAC,CAAC;IACJ,CAAC;IAAAN,eAAA,uBAEuBC,KAA6B,IAAK;MACxD,IAAI,CAACC,aAAa,CAAC;QACjBC,IAAI,EAAEN,cAAc,CAACU,UAAU;QAC/BF,IAAI,EAAE,IAAIT,qBAAqB,CAACK,KAAK,CAACI,IAAI,CAAC;QAC3CC,IAAI,EAAEL,KAAK,CAACK;MACd,CAAC,CAAC;IACJ,CAAC;IAlBCX,aAAa,CAACa,KAAK,CAACC,KAAK,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,SAAS,CAAC;IACrEhB,aAAa,CAACa,KAAK,CAACC,KAAK,CAACC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAACE,YAAY,CAAC;EAC7E;EAkBAC,UAAUA,CAACC,MAAyB,EAAEC,UAAiC,EAAwB;IAC7F,OAAOC,OAAO,CAACC,OAAO,CAAC,IAAIrB,qBAAqB,CAACD,aAAa,CAACa,KAAK,CAACK,UAAU,CAACC,MAAM,EAA6BC,UAAU,CAAC,CAAC,CAAC;EAClI;EAEA,IAAIG,MAAMA,CAAA,EAAgB;IACxB,OAAOvB,aAAa,CAACa,KAAK,CAACU,MAAM;EACnC;;EAEA;EACA,IAAIT,KAAKA,CAAA,EAAoB;IAC3B,OAAOd,aAAa,CAACa,KAAK,CAACC,KAAK,CAACU,GAAG,CAAEd,IAAI,IAAK,IAAIT,qBAAqB,CAACS,IAAI,CAAC,CAAC;EACjF;AACF;AAEA,OAAO,MAAMe,UAAU,GAAG,IAAItB,aAAa,CAAC,CAAC;;AAE7C;AACA;AACAuB,MAAM,CAACD,UAAU,GAAGA,UAAU"}
@@ -0,0 +1,52 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import { DefaultEventDispatcher } from '../adapter/event/DefaultEventDispatcher';
5
+ import { NativeModules } from 'react-native';
6
+ import { fromNativeCachingTaskParameters } from "./NativeCachingTaskParametersAdapter";
7
+ export class NativeCachingTaskAdapter extends DefaultEventDispatcher {
8
+ constructor(task) {
9
+ super();
10
+ _defineProperty(this, "bytes", void 0);
11
+ _defineProperty(this, "bytesCached", void 0);
12
+ _defineProperty(this, "cached", void 0);
13
+ _defineProperty(this, "duration", void 0);
14
+ _defineProperty(this, "id", void 0);
15
+ _defineProperty(this, "license", void 0);
16
+ _defineProperty(this, "parameters", void 0);
17
+ _defineProperty(this, "percentageCached", void 0);
18
+ _defineProperty(this, "secondsCached", void 0);
19
+ _defineProperty(this, "source", void 0);
20
+ _defineProperty(this, "status", void 0);
21
+ this.bytes = task.bytes;
22
+ this.cached = {
23
+ ...task.cached
24
+ };
25
+ this.duration = task.duration;
26
+ this.id = task.id;
27
+ this.bytesCached = task.bytesCached;
28
+ this.license = {
29
+ renew(drmConfiguration) {
30
+ NativeModules.CacheModule.renewLicense(task.id, drmConfiguration);
31
+ }
32
+ };
33
+ this.parameters = fromNativeCachingTaskParameters(task.parameters);
34
+ this.percentageCached = task.percentageCached;
35
+ this.secondsCached = task.secondsCached;
36
+ // TODO!
37
+ this.source = {
38
+ ...task.source
39
+ };
40
+ this.status = task.status;
41
+ }
42
+ pause() {
43
+ NativeModules.CacheModule.pauseCachingTask(this.id);
44
+ }
45
+ remove() {
46
+ NativeModules.CacheModule.removeCachingTask(this.id);
47
+ }
48
+ start() {
49
+ NativeModules.CacheModule.startCachingTask(this.id);
50
+ }
51
+ }
52
+ //# sourceMappingURL=NativeCachingTaskAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DefaultEventDispatcher","NativeModules","fromNativeCachingTaskParameters","NativeCachingTaskAdapter","constructor","task","_defineProperty","bytes","cached","duration","id","bytesCached","license","renew","drmConfiguration","CacheModule","renewLicense","parameters","percentageCached","secondsCached","source","status","pause","pauseCachingTask","remove","removeCachingTask","start","startCachingTask"],"sources":["NativeCachingTaskAdapter.ts"],"sourcesContent":["import { DefaultEventDispatcher } from '../adapter/event/DefaultEventDispatcher';\nimport type {\n CachingTask,\n CachingTaskEventMap,\n CachingTaskLicense,\n CachingTaskParameters,\n SourceDescription,\n TimeRange,\n} from 'react-native-theoplayer';\nimport type { CacheTaskStatus } from 'react-native-theoplayer';\nimport { NativeModules } from 'react-native';\nimport type { DRMConfiguration } from 'react-native-theoplayer';\nimport { fromNativeCachingTaskParameters, NativeCachingTaskParameters } from \"./NativeCachingTaskParametersAdapter\";\n\nexport interface NativeCachingTask {\n readonly id: string;\n\n readonly status: CacheTaskStatus;\n\n readonly source: SourceDescription;\n\n readonly parameters: NativeCachingTaskParameters;\n\n readonly duration: number;\n\n readonly cached: TimeRange[];\n\n readonly secondsCached: number;\n\n readonly percentageCached: number;\n\n readonly bytes: number;\n\n readonly bytesCached: number;\n}\n\nexport class NativeCachingTaskAdapter extends DefaultEventDispatcher<CachingTaskEventMap> implements CachingTask {\n readonly bytes: number;\n readonly bytesCached: number;\n readonly cached: TimeRange[];\n readonly duration: number;\n readonly id: string;\n readonly license: CachingTaskLicense;\n readonly parameters: CachingTaskParameters;\n readonly percentageCached: number;\n readonly secondsCached: number;\n readonly source: SourceDescription;\n readonly status: CacheTaskStatus;\n\n constructor(task: NativeCachingTask) {\n super();\n this.bytes = task.bytes;\n this.cached = { ...task.cached };\n this.duration = task.duration;\n this.id = task.id;\n this.bytesCached = task.bytesCached;\n this.license = {\n renew(drmConfiguration?: DRMConfiguration) {\n NativeModules.CacheModule.renewLicense(task.id, drmConfiguration);\n },\n };\n this.parameters = fromNativeCachingTaskParameters(task.parameters);\n this.percentageCached = task.percentageCached;\n this.secondsCached = task.secondsCached;\n // TODO!\n this.source = { ...task.source };\n this.status = task.status;\n }\n\n pause(): void {\n NativeModules.CacheModule.pauseCachingTask(this.id);\n }\n\n remove(): void {\n NativeModules.CacheModule.removeCachingTask(this.id);\n }\n\n start(): void {\n NativeModules.CacheModule.startCachingTask(this.id);\n }\n}\n"],"mappings":";;;AAAA,SAASA,sBAAsB,QAAQ,yCAAyC;AAUhF,SAASC,aAAa,QAAQ,cAAc;AAE5C,SAASC,+BAA+B,QAAqC,sCAAsC;AAwBnH,OAAO,MAAMC,wBAAwB,SAASH,sBAAsB,CAA6C;EAa/GI,WAAWA,CAACC,IAAuB,EAAE;IACnC,KAAK,CAAC,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACR,IAAI,CAACC,KAAK,GAAGF,IAAI,CAACE,KAAK;IACvB,IAAI,CAACC,MAAM,GAAG;MAAE,GAAGH,IAAI,CAACG;IAAO,CAAC;IAChC,IAAI,CAACC,QAAQ,GAAGJ,IAAI,CAACI,QAAQ;IAC7B,IAAI,CAACC,EAAE,GAAGL,IAAI,CAACK,EAAE;IACjB,IAAI,CAACC,WAAW,GAAGN,IAAI,CAACM,WAAW;IACnC,IAAI,CAACC,OAAO,GAAG;MACbC,KAAKA,CAACC,gBAAmC,EAAE;QACzCb,aAAa,CAACc,WAAW,CAACC,YAAY,CAACX,IAAI,CAACK,EAAE,EAAEI,gBAAgB,CAAC;MACnE;IACF,CAAC;IACD,IAAI,CAACG,UAAU,GAAGf,+BAA+B,CAACG,IAAI,CAACY,UAAU,CAAC;IAClE,IAAI,CAACC,gBAAgB,GAAGb,IAAI,CAACa,gBAAgB;IAC7C,IAAI,CAACC,aAAa,GAAGd,IAAI,CAACc,aAAa;IACvC;IACA,IAAI,CAACC,MAAM,GAAG;MAAE,GAAGf,IAAI,CAACe;IAAO,CAAC;IAChC,IAAI,CAACC,MAAM,GAAGhB,IAAI,CAACgB,MAAM;EAC3B;EAEAC,KAAKA,CAAA,EAAS;IACZrB,aAAa,CAACc,WAAW,CAACQ,gBAAgB,CAAC,IAAI,CAACb,EAAE,CAAC;EACrD;EAEAc,MAAMA,CAAA,EAAS;IACbvB,aAAa,CAACc,WAAW,CAACU,iBAAiB,CAAC,IAAI,CAACf,EAAE,CAAC;EACtD;EAEAgB,KAAKA,CAAA,EAAS;IACZzB,aAAa,CAACc,WAAW,CAACY,gBAAgB,CAAC,IAAI,CAACjB,EAAE,CAAC;EACrD;AACF"}
@@ -0,0 +1,20 @@
1
+ export function fromNativeCachingTaskParameters(parameters) {
2
+ return {
3
+ amount: parameters.amount,
4
+ expirationDate: parameters !== null && parameters !== void 0 && parameters.expirationDate ? new Date(parameters === null || parameters === void 0 ? void 0 : parameters.expirationDate) : undefined,
5
+ bandwidth: parameters.bandwidth,
6
+ preferredTrackSelection: parameters.preferredTrackSelection,
7
+ allowsCellularAccess: parameters.allowsCellularAccess
8
+ };
9
+ }
10
+ export function toNativeCachingTaskParameters(parameters) {
11
+ var _parameters$expiratio;
12
+ return {
13
+ amount: parameters.amount,
14
+ expirationDate: parameters === null || parameters === void 0 || (_parameters$expiratio = parameters.expirationDate) === null || _parameters$expiratio === void 0 ? void 0 : _parameters$expiratio.getTime(),
15
+ bandwidth: parameters.bandwidth,
16
+ preferredTrackSelection: parameters.preferredTrackSelection,
17
+ allowsCellularAccess: parameters.allowsCellularAccess
18
+ };
19
+ }
20
+ //# sourceMappingURL=NativeCachingTaskParametersAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fromNativeCachingTaskParameters","parameters","amount","expirationDate","Date","undefined","bandwidth","preferredTrackSelection","allowsCellularAccess","toNativeCachingTaskParameters","_parameters$expiratio","getTime"],"sources":["NativeCachingTaskParametersAdapter.ts"],"sourcesContent":["import type {\n CachingTaskParameters,\n} from 'react-native-theoplayer';\nimport type { CachingPreferredTrackSelection } from \"../../api/cache/CachingPreferredTrackSelection\";\n\nexport interface NativeCachingTaskParameters {\n readonly amount: number | string;\n readonly expirationDate: number | undefined;\n readonly bandwidth: number | undefined;\n readonly preferredTrackSelection: CachingPreferredTrackSelection | undefined;\n readonly allowsCellularAccess: boolean | undefined;\n}\n\nexport function fromNativeCachingTaskParameters(parameters: NativeCachingTaskParameters): CachingTaskParameters {\n return {\n amount: parameters.amount,\n expirationDate: parameters?.expirationDate? new Date(parameters?.expirationDate) : undefined,\n bandwidth: parameters.bandwidth,\n preferredTrackSelection: parameters.preferredTrackSelection,\n allowsCellularAccess: parameters.allowsCellularAccess\n }\n}\n\nexport function toNativeCachingTaskParameters(parameters: CachingTaskParameters): NativeCachingTaskParameters {\n return {\n amount: parameters.amount,\n expirationDate: parameters?.expirationDate?.getTime(),\n bandwidth: parameters.bandwidth,\n preferredTrackSelection: parameters.preferredTrackSelection,\n allowsCellularAccess: parameters.allowsCellularAccess\n }\n}\n"],"mappings":"AAaA,OAAO,SAASA,+BAA+BA,CAACC,UAAuC,EAAyB;EAC9G,OAAO;IACLC,MAAM,EAAED,UAAU,CAACC,MAAM;IACzBC,cAAc,EAAEF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEE,cAAc,GAAE,IAAIC,IAAI,CAACH,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEE,cAAc,CAAC,GAAGE,SAAS;IAC5FC,SAAS,EAAEL,UAAU,CAACK,SAAS;IAC/BC,uBAAuB,EAAEN,UAAU,CAACM,uBAAuB;IAC3DC,oBAAoB,EAAEP,UAAU,CAACO;EACnC,CAAC;AACH;AAEA,OAAO,SAASC,6BAA6BA,CAACR,UAAiC,EAA+B;EAAA,IAAAS,qBAAA;EAC5G,OAAO;IACLR,MAAM,EAAED,UAAU,CAACC,MAAM;IACzBC,cAAc,EAAEF,UAAU,aAAVA,UAAU,gBAAAS,qBAAA,GAAVT,UAAU,CAAEE,cAAc,cAAAO,qBAAA,uBAA1BA,qBAAA,CAA4BC,OAAO,CAAC,CAAC;IACrDL,SAAS,EAAEL,UAAU,CAACK,SAAS;IAC/BC,uBAAuB,EAAEN,UAAU,CAACM,uBAAuB;IAC3DC,oBAAoB,EAAEP,UAAU,CAACO;EACnC,CAAC;AACH"}
@@ -0,0 +1,64 @@
1
+ export class WebCachingTaskAdapter {
2
+ constructor(webCachingTask) {
3
+ this.webCachingTask = webCachingTask;
4
+ }
5
+ get bytes() {
6
+ return this.webCachingTask.bytes;
7
+ }
8
+ get bytesCached() {
9
+ return this.webCachingTask.bytesCached;
10
+ }
11
+ get cached() {
12
+ return fromTimeRanges(this.webCachingTask.cached);
13
+ }
14
+ get duration() {
15
+ return this.webCachingTask.duration;
16
+ }
17
+ get id() {
18
+ return this.webCachingTask.id;
19
+ }
20
+ get license() {
21
+ return this.webCachingTask.license;
22
+ }
23
+ get parameters() {
24
+ return this.webCachingTask.parameters;
25
+ }
26
+ get percentageCached() {
27
+ return this.webCachingTask.percentageCached;
28
+ }
29
+ get secondsCached() {
30
+ return this.webCachingTask.secondsCached;
31
+ }
32
+ get source() {
33
+ return this.webCachingTask.source;
34
+ }
35
+ get status() {
36
+ return this.webCachingTask.status;
37
+ }
38
+ start() {
39
+ this.webCachingTask.start();
40
+ }
41
+ pause() {
42
+ this.webCachingTask.pause();
43
+ }
44
+ remove() {
45
+ this.webCachingTask.remove();
46
+ }
47
+ addEventListener(type, listener) {
48
+ this.webCachingTask.addEventListener(type, listener);
49
+ }
50
+ removeEventListener(type, listener) {
51
+ this.webCachingTask.removeEventListener(type, listener);
52
+ }
53
+ }
54
+ function fromTimeRanges(timeRanges) {
55
+ const result = [];
56
+ for (let i = 0; i < timeRanges.length; i++) {
57
+ result.push({
58
+ start: timeRanges.start(i) * 1e3,
59
+ end: timeRanges.end(i) * 1e3
60
+ });
61
+ }
62
+ return result;
63
+ }
64
+ //# sourceMappingURL=WebCachingTaskAdapter.js.map