@livepeer-frameworks/player-core 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/README.md +11 -9
  2. package/dist/cjs/core/ABRController.js +456 -0
  3. package/dist/cjs/core/ABRController.js.map +1 -0
  4. package/dist/cjs/core/CodecUtils.js +195 -0
  5. package/dist/cjs/core/CodecUtils.js.map +1 -0
  6. package/dist/cjs/core/ErrorClassifier.js +410 -0
  7. package/dist/cjs/core/ErrorClassifier.js.map +1 -0
  8. package/dist/cjs/core/EventEmitter.js +108 -0
  9. package/dist/cjs/core/EventEmitter.js.map +1 -0
  10. package/dist/cjs/core/GatewayClient.js +342 -0
  11. package/dist/cjs/core/GatewayClient.js.map +1 -0
  12. package/dist/cjs/core/InteractionController.js +606 -0
  13. package/dist/cjs/core/InteractionController.js.map +1 -0
  14. package/dist/cjs/core/LiveDurationProxy.js +186 -0
  15. package/dist/cjs/core/LiveDurationProxy.js.map +1 -0
  16. package/dist/cjs/core/MetaTrackManager.js +624 -0
  17. package/dist/cjs/core/MetaTrackManager.js.map +1 -0
  18. package/dist/cjs/core/MistReporter.js +449 -0
  19. package/dist/cjs/core/MistReporter.js.map +1 -0
  20. package/dist/cjs/core/MistSignaling.js +264 -0
  21. package/dist/cjs/core/MistSignaling.js.map +1 -0
  22. package/dist/cjs/core/PlayerController.js +2658 -0
  23. package/dist/cjs/core/PlayerController.js.map +1 -0
  24. package/dist/cjs/core/PlayerInterface.js +269 -0
  25. package/dist/cjs/core/PlayerInterface.js.map +1 -0
  26. package/dist/cjs/core/PlayerManager.js +806 -0
  27. package/dist/cjs/core/PlayerManager.js.map +1 -0
  28. package/dist/cjs/core/PlayerRegistry.js +270 -0
  29. package/dist/cjs/core/PlayerRegistry.js.map +1 -0
  30. package/dist/cjs/core/QualityMonitor.js +474 -0
  31. package/dist/cjs/core/QualityMonitor.js.map +1 -0
  32. package/dist/cjs/core/SeekingUtils.js +292 -0
  33. package/dist/cjs/core/SeekingUtils.js.map +1 -0
  34. package/dist/cjs/core/StreamStateClient.js +381 -0
  35. package/dist/cjs/core/StreamStateClient.js.map +1 -0
  36. package/dist/cjs/core/SubtitleManager.js +227 -0
  37. package/dist/cjs/core/SubtitleManager.js.map +1 -0
  38. package/dist/cjs/core/TelemetryReporter.js +258 -0
  39. package/dist/cjs/core/TelemetryReporter.js.map +1 -0
  40. package/dist/cjs/core/TimeFormat.js +176 -0
  41. package/dist/cjs/core/TimeFormat.js.map +1 -0
  42. package/dist/cjs/core/TimerManager.js +176 -0
  43. package/dist/cjs/core/TimerManager.js.map +1 -0
  44. package/dist/cjs/core/UrlUtils.js +160 -0
  45. package/dist/cjs/core/UrlUtils.js.map +1 -0
  46. package/dist/cjs/core/detector.js +293 -0
  47. package/dist/cjs/core/detector.js.map +1 -0
  48. package/dist/cjs/core/scorer.js +443 -0
  49. package/dist/cjs/core/scorer.js.map +1 -0
  50. package/dist/cjs/index.js +121 -20134
  51. package/dist/cjs/index.js.map +1 -1
  52. package/dist/cjs/lib/utils.js +11 -0
  53. package/dist/cjs/lib/utils.js.map +1 -0
  54. package/dist/cjs/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js +6 -0
  55. package/dist/cjs/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
  56. package/dist/cjs/node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.js +3042 -0
  57. package/dist/cjs/node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  58. package/dist/cjs/players/DashJsPlayer.js +638 -0
  59. package/dist/cjs/players/DashJsPlayer.js.map +1 -0
  60. package/dist/cjs/players/HlsJsPlayer.js +482 -0
  61. package/dist/cjs/players/HlsJsPlayer.js.map +1 -0
  62. package/dist/cjs/players/MewsWsPlayer/SourceBufferManager.js +522 -0
  63. package/dist/cjs/players/MewsWsPlayer/SourceBufferManager.js.map +1 -0
  64. package/dist/cjs/players/MewsWsPlayer/WebSocketManager.js +215 -0
  65. package/dist/cjs/players/MewsWsPlayer/WebSocketManager.js.map +1 -0
  66. package/dist/cjs/players/MewsWsPlayer/index.js +987 -0
  67. package/dist/cjs/players/MewsWsPlayer/index.js.map +1 -0
  68. package/dist/cjs/players/MistPlayer.js +185 -0
  69. package/dist/cjs/players/MistPlayer.js.map +1 -0
  70. package/dist/cjs/players/MistWebRTCPlayer/index.js +635 -0
  71. package/dist/cjs/players/MistWebRTCPlayer/index.js.map +1 -0
  72. package/dist/cjs/players/NativePlayer.js +762 -0
  73. package/dist/cjs/players/NativePlayer.js.map +1 -0
  74. package/dist/cjs/players/VideoJsPlayer.js +585 -0
  75. package/dist/cjs/players/VideoJsPlayer.js.map +1 -0
  76. package/dist/cjs/players/WebCodecsPlayer/JitterBuffer.js +236 -0
  77. package/dist/cjs/players/WebCodecsPlayer/JitterBuffer.js.map +1 -0
  78. package/dist/cjs/players/WebCodecsPlayer/LatencyProfiles.js +143 -0
  79. package/dist/cjs/players/WebCodecsPlayer/LatencyProfiles.js.map +1 -0
  80. package/dist/cjs/players/WebCodecsPlayer/RawChunkParser.js +96 -0
  81. package/dist/cjs/players/WebCodecsPlayer/RawChunkParser.js.map +1 -0
  82. package/dist/cjs/players/WebCodecsPlayer/SyncController.js +359 -0
  83. package/dist/cjs/players/WebCodecsPlayer/SyncController.js.map +1 -0
  84. package/dist/cjs/players/WebCodecsPlayer/WebSocketController.js +460 -0
  85. package/dist/cjs/players/WebCodecsPlayer/WebSocketController.js.map +1 -0
  86. package/dist/cjs/players/WebCodecsPlayer/index.js +1467 -0
  87. package/dist/cjs/players/WebCodecsPlayer/index.js.map +1 -0
  88. package/dist/cjs/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.js +320 -0
  89. package/dist/cjs/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.js.map +1 -0
  90. package/dist/cjs/styles/index.js +57 -0
  91. package/dist/cjs/styles/index.js.map +1 -0
  92. package/dist/cjs/vanilla/FrameWorksPlayer.js +269 -0
  93. package/dist/cjs/vanilla/FrameWorksPlayer.js.map +1 -0
  94. package/dist/cjs/vanilla.js +11 -0
  95. package/dist/cjs/vanilla.js.map +1 -0
  96. package/dist/esm/core/ABRController.js +454 -0
  97. package/dist/esm/core/ABRController.js.map +1 -0
  98. package/dist/esm/core/CodecUtils.js +193 -0
  99. package/dist/esm/core/CodecUtils.js.map +1 -0
  100. package/dist/esm/core/ErrorClassifier.js +408 -0
  101. package/dist/esm/core/ErrorClassifier.js.map +1 -0
  102. package/dist/esm/core/EventEmitter.js +106 -0
  103. package/dist/esm/core/EventEmitter.js.map +1 -0
  104. package/dist/esm/core/GatewayClient.js +340 -0
  105. package/dist/esm/core/GatewayClient.js.map +1 -0
  106. package/dist/esm/core/InteractionController.js +604 -0
  107. package/dist/esm/core/InteractionController.js.map +1 -0
  108. package/dist/esm/core/LiveDurationProxy.js +184 -0
  109. package/dist/esm/core/LiveDurationProxy.js.map +1 -0
  110. package/dist/esm/core/MetaTrackManager.js +622 -0
  111. package/dist/esm/core/MetaTrackManager.js.map +1 -0
  112. package/dist/esm/core/MistReporter.js +447 -0
  113. package/dist/esm/core/MistReporter.js.map +1 -0
  114. package/dist/esm/core/MistSignaling.js +262 -0
  115. package/dist/esm/core/MistSignaling.js.map +1 -0
  116. package/dist/esm/core/PlayerController.js +2651 -0
  117. package/dist/esm/core/PlayerController.js.map +1 -0
  118. package/dist/esm/core/PlayerInterface.js +267 -0
  119. package/dist/esm/core/PlayerInterface.js.map +1 -0
  120. package/dist/esm/core/PlayerManager.js +804 -0
  121. package/dist/esm/core/PlayerManager.js.map +1 -0
  122. package/dist/esm/core/PlayerRegistry.js +264 -0
  123. package/dist/esm/core/PlayerRegistry.js.map +1 -0
  124. package/dist/esm/core/QualityMonitor.js +471 -0
  125. package/dist/esm/core/QualityMonitor.js.map +1 -0
  126. package/dist/esm/core/SeekingUtils.js +280 -0
  127. package/dist/esm/core/SeekingUtils.js.map +1 -0
  128. package/dist/esm/core/StreamStateClient.js +379 -0
  129. package/dist/esm/core/StreamStateClient.js.map +1 -0
  130. package/dist/esm/core/SubtitleManager.js +225 -0
  131. package/dist/esm/core/SubtitleManager.js.map +1 -0
  132. package/dist/esm/core/TelemetryReporter.js +256 -0
  133. package/dist/esm/core/TelemetryReporter.js.map +1 -0
  134. package/dist/esm/core/TimeFormat.js +169 -0
  135. package/dist/esm/core/TimeFormat.js.map +1 -0
  136. package/dist/esm/core/TimerManager.js +174 -0
  137. package/dist/esm/core/TimerManager.js.map +1 -0
  138. package/dist/esm/core/UrlUtils.js +151 -0
  139. package/dist/esm/core/UrlUtils.js.map +1 -0
  140. package/dist/esm/core/detector.js +279 -0
  141. package/dist/esm/core/detector.js.map +1 -0
  142. package/dist/esm/core/scorer.js +422 -0
  143. package/dist/esm/core/scorer.js.map +1 -0
  144. package/dist/esm/index.js +26 -20043
  145. package/dist/esm/index.js.map +1 -1
  146. package/dist/esm/lib/utils.js +9 -0
  147. package/dist/esm/lib/utils.js.map +1 -0
  148. package/dist/esm/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js +4 -0
  149. package/dist/esm/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
  150. package/dist/esm/node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.js +3036 -0
  151. package/dist/esm/node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  152. package/dist/esm/players/DashJsPlayer.js +636 -0
  153. package/dist/esm/players/DashJsPlayer.js.map +1 -0
  154. package/dist/esm/players/HlsJsPlayer.js +480 -0
  155. package/dist/esm/players/HlsJsPlayer.js.map +1 -0
  156. package/dist/esm/players/MewsWsPlayer/SourceBufferManager.js +520 -0
  157. package/dist/esm/players/MewsWsPlayer/SourceBufferManager.js.map +1 -0
  158. package/dist/esm/players/MewsWsPlayer/WebSocketManager.js +213 -0
  159. package/dist/esm/players/MewsWsPlayer/WebSocketManager.js.map +1 -0
  160. package/dist/esm/players/MewsWsPlayer/index.js +985 -0
  161. package/dist/esm/players/MewsWsPlayer/index.js.map +1 -0
  162. package/dist/esm/players/MistPlayer.js +183 -0
  163. package/dist/esm/players/MistPlayer.js.map +1 -0
  164. package/dist/esm/players/MistWebRTCPlayer/index.js +633 -0
  165. package/dist/esm/players/MistWebRTCPlayer/index.js.map +1 -0
  166. package/dist/esm/players/NativePlayer.js +759 -0
  167. package/dist/esm/players/NativePlayer.js.map +1 -0
  168. package/dist/esm/players/VideoJsPlayer.js +583 -0
  169. package/dist/esm/players/VideoJsPlayer.js.map +1 -0
  170. package/dist/esm/players/WebCodecsPlayer/JitterBuffer.js +233 -0
  171. package/dist/esm/players/WebCodecsPlayer/JitterBuffer.js.map +1 -0
  172. package/dist/esm/players/WebCodecsPlayer/LatencyProfiles.js +134 -0
  173. package/dist/esm/players/WebCodecsPlayer/LatencyProfiles.js.map +1 -0
  174. package/dist/esm/players/WebCodecsPlayer/RawChunkParser.js +91 -0
  175. package/dist/esm/players/WebCodecsPlayer/RawChunkParser.js.map +1 -0
  176. package/dist/esm/players/WebCodecsPlayer/SyncController.js +357 -0
  177. package/dist/esm/players/WebCodecsPlayer/SyncController.js.map +1 -0
  178. package/dist/esm/players/WebCodecsPlayer/WebSocketController.js +458 -0
  179. package/dist/esm/players/WebCodecsPlayer/WebSocketController.js.map +1 -0
  180. package/dist/esm/players/WebCodecsPlayer/index.js +1458 -0
  181. package/dist/esm/players/WebCodecsPlayer/index.js.map +1 -0
  182. package/dist/esm/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.js +315 -0
  183. package/dist/esm/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.js.map +1 -0
  184. package/dist/esm/styles/index.js +54 -0
  185. package/dist/esm/styles/index.js.map +1 -0
  186. package/dist/esm/vanilla/FrameWorksPlayer.js +264 -0
  187. package/dist/esm/vanilla/FrameWorksPlayer.js.map +1 -0
  188. package/dist/esm/vanilla.js +2 -0
  189. package/dist/esm/vanilla.js.map +1 -0
  190. package/dist/player.css +185 -42
  191. package/dist/types/core/ABRController.d.ts +4 -4
  192. package/dist/types/core/CodecUtils.d.ts +1 -1
  193. package/dist/types/core/ErrorClassifier.d.ts +77 -0
  194. package/dist/types/core/GatewayClient.d.ts +4 -4
  195. package/dist/types/core/MetaTrackManager.d.ts +2 -2
  196. package/dist/types/core/MistReporter.d.ts +3 -3
  197. package/dist/types/core/MistSignaling.d.ts +12 -12
  198. package/dist/types/core/PlayerController.d.ts +19 -14
  199. package/dist/types/core/PlayerInterface.d.ts +100 -2
  200. package/dist/types/core/PlayerManager.d.ts +36 -9
  201. package/dist/types/core/PlayerRegistry.d.ts +11 -11
  202. package/dist/types/core/QualityMonitor.d.ts +2 -2
  203. package/dist/types/core/SeekingUtils.d.ts +2 -2
  204. package/dist/types/core/StreamStateClient.d.ts +2 -2
  205. package/dist/types/core/TelemetryReporter.d.ts +1 -1
  206. package/dist/types/core/TimerManager.d.ts +1 -1
  207. package/dist/types/core/detector.d.ts +1 -1
  208. package/dist/types/core/index.d.ts +44 -44
  209. package/dist/types/core/scorer.d.ts +1 -1
  210. package/dist/types/core/selector.d.ts +2 -2
  211. package/dist/types/index.d.ts +35 -34
  212. package/dist/types/players/DashJsPlayer.d.ts +3 -3
  213. package/dist/types/players/HlsJsPlayer.d.ts +3 -3
  214. package/dist/types/players/MewsWsPlayer/SourceBufferManager.d.ts +1 -1
  215. package/dist/types/players/MewsWsPlayer/WebSocketManager.d.ts +1 -1
  216. package/dist/types/players/MewsWsPlayer/index.d.ts +2 -2
  217. package/dist/types/players/MewsWsPlayer/types.d.ts +15 -15
  218. package/dist/types/players/MistPlayer.d.ts +2 -2
  219. package/dist/types/players/MistWebRTCPlayer/index.d.ts +3 -3
  220. package/dist/types/players/NativePlayer.d.ts +3 -3
  221. package/dist/types/players/VideoJsPlayer.d.ts +3 -3
  222. package/dist/types/players/WebCodecsPlayer/JitterBuffer.d.ts +3 -3
  223. package/dist/types/players/WebCodecsPlayer/LatencyProfiles.d.ts +1 -1
  224. package/dist/types/players/WebCodecsPlayer/RawChunkParser.d.ts +2 -2
  225. package/dist/types/players/WebCodecsPlayer/SyncController.d.ts +2 -2
  226. package/dist/types/players/WebCodecsPlayer/WebSocketController.d.ts +3 -3
  227. package/dist/types/players/WebCodecsPlayer/index.d.ts +9 -9
  228. package/dist/types/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.d.ts +1 -1
  229. package/dist/types/players/WebCodecsPlayer/types.d.ts +49 -49
  230. package/dist/types/players/WebCodecsPlayer/worker/types.d.ts +31 -31
  231. package/dist/types/players/index.d.ts +5 -8
  232. package/dist/types/types.d.ts +15 -15
  233. package/dist/types/vanilla/FrameWorksPlayer.d.ts +2 -2
  234. package/dist/types/vanilla/index.d.ts +4 -4
  235. package/dist/workers/decoder.worker.js +129 -122
  236. package/dist/workers/decoder.worker.js.map +1 -1
  237. package/package.json +31 -15
  238. package/src/core/ABRController.ts +38 -36
  239. package/src/core/CodecUtils.ts +49 -46
  240. package/src/core/Disposable.ts +4 -4
  241. package/src/core/ErrorClassifier.ts +499 -0
  242. package/src/core/EventEmitter.ts +1 -1
  243. package/src/core/GatewayClient.ts +41 -39
  244. package/src/core/InteractionController.ts +89 -82
  245. package/src/core/LiveDurationProxy.ts +14 -15
  246. package/src/core/MetaTrackManager.ts +73 -65
  247. package/src/core/MistReporter.ts +72 -45
  248. package/src/core/MistSignaling.ts +59 -56
  249. package/src/core/PlayerController.ts +542 -384
  250. package/src/core/PlayerInterface.ts +192 -59
  251. package/src/core/PlayerManager.ts +354 -164
  252. package/src/core/PlayerRegistry.ts +238 -87
  253. package/src/core/QualityMonitor.ts +38 -31
  254. package/src/core/ScreenWakeLockManager.ts +8 -9
  255. package/src/core/SeekingUtils.ts +31 -22
  256. package/src/core/StreamStateClient.ts +74 -68
  257. package/src/core/SubtitleManager.ts +24 -22
  258. package/src/core/TelemetryReporter.ts +38 -32
  259. package/src/core/TimeFormat.ts +13 -17
  260. package/src/core/TimerManager.ts +24 -8
  261. package/src/core/UrlUtils.ts +20 -17
  262. package/src/core/detector.ts +44 -44
  263. package/src/core/index.ts +57 -48
  264. package/src/core/scorer.ts +136 -141
  265. package/src/core/selector.ts +2 -6
  266. package/src/global.d.ts +1 -1
  267. package/src/index.ts +56 -36
  268. package/src/players/DashJsPlayer.ts +164 -115
  269. package/src/players/HlsJsPlayer.ts +132 -78
  270. package/src/players/MewsWsPlayer/SourceBufferManager.ts +41 -36
  271. package/src/players/MewsWsPlayer/WebSocketManager.ts +9 -9
  272. package/src/players/MewsWsPlayer/index.ts +192 -152
  273. package/src/players/MewsWsPlayer/types.ts +21 -21
  274. package/src/players/MistPlayer.ts +45 -26
  275. package/src/players/MistWebRTCPlayer/index.ts +175 -129
  276. package/src/players/NativePlayer.ts +203 -143
  277. package/src/players/VideoJsPlayer.ts +170 -118
  278. package/src/players/WebCodecsPlayer/JitterBuffer.ts +6 -7
  279. package/src/players/WebCodecsPlayer/LatencyProfiles.ts +43 -43
  280. package/src/players/WebCodecsPlayer/RawChunkParser.ts +10 -10
  281. package/src/players/WebCodecsPlayer/SyncController.ts +45 -53
  282. package/src/players/WebCodecsPlayer/WebSocketController.ts +66 -68
  283. package/src/players/WebCodecsPlayer/index.ts +265 -223
  284. package/src/players/WebCodecsPlayer/polyfills/MediaStreamTrackGenerator.ts +12 -17
  285. package/src/players/WebCodecsPlayer/types.ts +56 -56
  286. package/src/players/WebCodecsPlayer/worker/decoder.worker.ts +238 -182
  287. package/src/players/WebCodecsPlayer/worker/types.ts +31 -31
  288. package/src/players/index.ts +5 -16
  289. package/src/styles/animations.css +2 -1
  290. package/src/styles/player.css +185 -42
  291. package/src/styles/tailwind.css +473 -159
  292. package/src/types.ts +43 -43
  293. package/src/vanilla/FrameWorksPlayer.ts +26 -14
  294. package/src/vanilla/index.ts +4 -4
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ let stylesInjected = false;
4
+ const STYLE_URL = "player.css";
5
+ /**
6
+ * Ensures the compiled player stylesheet is imported once. When bundling with
7
+ * tools that respect package `style` fields, simply importing the module is enough.
8
+ * For host environments that do not, calling this helper will inject a link tag.
9
+ */
10
+ function ensurePlayerStyles() {
11
+ if (typeof document === "undefined")
12
+ return;
13
+ if (stylesInjected)
14
+ return;
15
+ const existing = document.querySelector('link[data-fw-player-style="true"]');
16
+ if (existing) {
17
+ stylesInjected = true;
18
+ return;
19
+ }
20
+ const link = document.createElement("link");
21
+ link.rel = "stylesheet";
22
+ link.href = getStylesheetUrl();
23
+ link.setAttribute("data-fw-player-style", "true");
24
+ document.head.appendChild(link);
25
+ stylesInjected = true;
26
+ }
27
+ /**
28
+ * For SSR-first apps, inject the CSS manually and mark it as applied.
29
+ */
30
+ function injectPlayerStyles(href) {
31
+ if (typeof document === "undefined")
32
+ return;
33
+ stylesInjected = true;
34
+ const link = document.createElement("link");
35
+ link.rel = "stylesheet";
36
+ link.href = href ?? getStylesheetUrl();
37
+ link.setAttribute("data-fw-player-style", "true");
38
+ document.head.appendChild(link);
39
+ }
40
+ function getStylesheetUrl() {
41
+ const current = typeof document !== "undefined" ? document.currentScript : null;
42
+ const src = current && "src" in current ? current.src : undefined;
43
+ if (!src)
44
+ return STYLE_URL;
45
+ try {
46
+ const url = new URL(src);
47
+ url.pathname = url.pathname.replace(/\/[^/]*$/, `/${STYLE_URL}`);
48
+ return url.toString();
49
+ }
50
+ catch {
51
+ return STYLE_URL;
52
+ }
53
+ }
54
+
55
+ exports.ensurePlayerStyles = ensurePlayerStyles;
56
+ exports.injectPlayerStyles = injectPlayerStyles;
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/styles/index.ts"],"sourcesContent":["let stylesInjected = false;\nconst STYLE_URL = \"player.css\";\n\n/**\n * Ensures the compiled player stylesheet is imported once. When bundling with\n * tools that respect package `style` fields, simply importing the module is enough.\n * For host environments that do not, calling this helper will inject a link tag.\n */\nexport function ensurePlayerStyles(): void {\n if (typeof document === \"undefined\") return;\n if (stylesInjected) return;\n const existing = document.querySelector<HTMLLinkElement>('link[data-fw-player-style=\"true\"]');\n if (existing) {\n stylesInjected = true;\n return;\n }\n\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = getStylesheetUrl();\n link.setAttribute(\"data-fw-player-style\", \"true\");\n document.head.appendChild(link);\n stylesInjected = true;\n}\n\n/**\n * For SSR-first apps, inject the CSS manually and mark it as applied.\n */\nexport function injectPlayerStyles(href?: string): void {\n if (typeof document === \"undefined\") return;\n stylesInjected = true;\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = href ?? getStylesheetUrl();\n link.setAttribute(\"data-fw-player-style\", \"true\");\n document.head.appendChild(link);\n}\n\nfunction getStylesheetUrl(): string {\n const current = typeof document !== \"undefined\" ? document.currentScript : null;\n const src = current && \"src\" in current ? (current as HTMLScriptElement).src : undefined;\n if (!src) return STYLE_URL;\n try {\n const url = new URL(src);\n url.pathname = url.pathname.replace(/\\/[^/]*$/, `/${STYLE_URL}`);\n return url.toString();\n } catch {\n return STYLE_URL;\n }\n}\n\nexport default ensurePlayerStyles;\n"],"names":[],"mappings":";;AAAA,IAAI,cAAc,GAAG,KAAK;AAC1B,MAAM,SAAS,GAAG,YAAY;AAE9B;;;;AAIG;SACa,kBAAkB,GAAA;IAChC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE;AACrC,IAAA,IAAI,cAAc;QAAE;IACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAkB,mCAAmC,CAAC;IAC7F,IAAI,QAAQ,EAAE;QACZ,cAAc,GAAG,IAAI;QACrB;IACF;IAEA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,IAAA,IAAI,CAAC,GAAG,GAAG,YAAY;AACvB,IAAA,IAAI,CAAC,IAAI,GAAG,gBAAgB,EAAE;AAC9B,IAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,MAAM,CAAC;AACjD,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,cAAc,GAAG,IAAI;AACvB;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAAC,IAAa,EAAA;IAC9C,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE;IACrC,cAAc,GAAG,IAAI;IACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,IAAA,IAAI,CAAC,GAAG,GAAG,YAAY;AACvB,IAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,gBAAgB,EAAE;AACtC,IAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,MAAM,CAAC;AACjD,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC;AAEA,SAAS,gBAAgB,GAAA;AACvB,IAAA,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,QAAQ,CAAC,aAAa,GAAG,IAAI;AAC/E,IAAA,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,IAAI,OAAO,GAAI,OAA6B,CAAC,GAAG,GAAG,SAAS;AACxF,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,SAAS;AAC1B,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACxB,QAAA,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;AAChE,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;IACvB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,SAAS;IAClB;AACF;;;;;"}
@@ -0,0 +1,269 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var PlayerController = require('../core/PlayerController.js');
6
+
7
+ /**
8
+ * FrameWorksPlayer.ts
9
+ *
10
+ * Vanilla JavaScript wrapper for PlayerController.
11
+ * Use this class in non-React environments (Svelte, Vue, plain HTML, etc.)
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { FrameWorksPlayer } from '@livepeer-frameworks/player-core/vanilla';
16
+ * import '@livepeer-frameworks/player-core/player.css';
17
+ *
18
+ * const player = new FrameWorksPlayer('#player', {
19
+ * contentId: 'pk_...',
20
+ * contentType: 'live',
21
+ * gatewayUrl: 'https://gateway.example.com/graphql',
22
+ * onStateChange: (state) => console.log('State:', state),
23
+ * });
24
+ *
25
+ * // Control playback
26
+ * player.play();
27
+ * player.setVolume(0.5);
28
+ *
29
+ * // Clean up
30
+ * player.destroy();
31
+ * ```
32
+ */
33
+ // ============================================================================
34
+ // FrameWorksPlayer Class
35
+ // ============================================================================
36
+ /**
37
+ * Vanilla JavaScript player class.
38
+ *
39
+ * This is a thin wrapper around PlayerController that provides a
40
+ * constructor-based API suitable for non-React frameworks.
41
+ */
42
+ class FrameWorksPlayer {
43
+ /**
44
+ * Create a new player instance.
45
+ *
46
+ * @param container - DOM element or CSS selector to mount the player
47
+ * @param options - Player options and callbacks
48
+ */
49
+ constructor(container, options) {
50
+ this.cleanupFns = [];
51
+ this.isDestroyed = false;
52
+ // Resolve container
53
+ if (typeof container === "string") {
54
+ this.container = document.querySelector(container);
55
+ }
56
+ else if (container instanceof HTMLElement) {
57
+ this.container = container;
58
+ }
59
+ else {
60
+ throw new Error("Container element not found or invalid");
61
+ }
62
+ if (!this.container) {
63
+ throw new Error("Container element not found");
64
+ }
65
+ // Normalize options (support both new and legacy config formats)
66
+ const normalizedOptions = this.normalizeOptions(options);
67
+ // Create controller config
68
+ const config = {
69
+ contentId: normalizedOptions.contentId,
70
+ contentType: normalizedOptions.contentType,
71
+ endpoints: normalizedOptions.endpoints,
72
+ gatewayUrl: normalizedOptions.gatewayUrl,
73
+ authToken: normalizedOptions.authToken,
74
+ autoplay: normalizedOptions.autoplay ?? true,
75
+ muted: normalizedOptions.muted ?? true,
76
+ controls: normalizedOptions.controls ?? true,
77
+ poster: normalizedOptions.poster,
78
+ debug: normalizedOptions.debug,
79
+ };
80
+ // Create controller
81
+ this.controller = new PlayerController.PlayerController(config);
82
+ // Wire up callbacks
83
+ this.setupCallbacks(normalizedOptions);
84
+ // Auto-attach to container
85
+ this.controller.attach(this.container).catch((err) => {
86
+ console.error("[FrameWorksPlayer] Failed to attach:", err);
87
+ normalizedOptions.onError?.(err instanceof Error ? err.message : String(err));
88
+ });
89
+ }
90
+ // ============================================================================
91
+ // Playback Control (delegated to controller)
92
+ // ============================================================================
93
+ /** Start playback */
94
+ play() {
95
+ return this.controller.play();
96
+ }
97
+ /** Pause playback */
98
+ pause() {
99
+ this.controller.pause();
100
+ }
101
+ /** Seek to time in seconds */
102
+ seek(time) {
103
+ this.controller.seek(time);
104
+ }
105
+ /** Set volume (0-1) */
106
+ setVolume(volume) {
107
+ this.controller.setVolume(volume);
108
+ }
109
+ /** Set muted state */
110
+ setMuted(muted) {
111
+ this.controller.setMuted(muted);
112
+ }
113
+ /** Set playback rate */
114
+ setPlaybackRate(rate) {
115
+ this.controller.setPlaybackRate(rate);
116
+ }
117
+ /** Jump to live edge (for live streams) */
118
+ jumpToLive() {
119
+ this.controller.jumpToLive();
120
+ }
121
+ /** Request fullscreen */
122
+ requestFullscreen() {
123
+ return this.controller.requestFullscreen();
124
+ }
125
+ /** Request Picture-in-Picture */
126
+ requestPiP() {
127
+ return this.controller.requestPiP();
128
+ }
129
+ // ============================================================================
130
+ // State Getters (delegated to controller)
131
+ // ============================================================================
132
+ /** Get current player state */
133
+ getState() {
134
+ return this.controller.getState();
135
+ }
136
+ /** Get current stream state (for live streams) */
137
+ getStreamState() {
138
+ return this.controller.getStreamState();
139
+ }
140
+ /** Get video element (null if not ready) */
141
+ getVideoElement() {
142
+ return this.controller.getVideoElement();
143
+ }
144
+ /** Check if player is ready */
145
+ isReady() {
146
+ return this.controller.isReady();
147
+ }
148
+ /** Get current time in seconds */
149
+ getCurrentTime() {
150
+ return this.controller.getCurrentTime();
151
+ }
152
+ /** Get duration in seconds */
153
+ getDuration() {
154
+ return this.controller.getDuration();
155
+ }
156
+ /** Check if paused */
157
+ isPaused() {
158
+ return this.controller.isPaused();
159
+ }
160
+ /** Check if muted */
161
+ isMuted() {
162
+ return this.controller.isMuted();
163
+ }
164
+ // ============================================================================
165
+ // Advanced Control
166
+ // ============================================================================
167
+ /** Retry playback after error */
168
+ retry() {
169
+ return this.controller.retry();
170
+ }
171
+ /** Get content metadata (title, description, duration, viewers, etc.) */
172
+ getMetadata() {
173
+ return this.controller.getMetadata();
174
+ }
175
+ /** Get playback statistics */
176
+ getStats() {
177
+ return this.controller.getStats();
178
+ }
179
+ /** Get current latency (for live streams) */
180
+ getLatency() {
181
+ return this.controller.getLatency();
182
+ }
183
+ // ============================================================================
184
+ // Event Subscription
185
+ // ============================================================================
186
+ /**
187
+ * Subscribe to a player event.
188
+ * @param event - Event name
189
+ * @param listener - Callback function
190
+ * @returns Unsubscribe function
191
+ */
192
+ on(event, listener) {
193
+ return this.controller.on(event, listener);
194
+ }
195
+ // ============================================================================
196
+ // Cleanup
197
+ // ============================================================================
198
+ /** Destroy the player and clean up resources */
199
+ destroy() {
200
+ if (this.isDestroyed)
201
+ return;
202
+ this.cleanupFns.forEach((fn) => {
203
+ try {
204
+ fn();
205
+ }
206
+ catch { }
207
+ });
208
+ this.cleanupFns = [];
209
+ this.controller.destroy();
210
+ this.isDestroyed = true;
211
+ }
212
+ // ============================================================================
213
+ // Private Methods
214
+ // ============================================================================
215
+ normalizeOptions(options) {
216
+ // Check if it's legacy format (has nested `options` property)
217
+ if ("options" in options && typeof options.options === "object") {
218
+ const legacy = options;
219
+ return {
220
+ contentId: legacy.contentId,
221
+ contentType: legacy.contentType,
222
+ poster: legacy.thumbnailUrl || undefined,
223
+ gatewayUrl: legacy.options?.gatewayUrl,
224
+ authToken: legacy.options?.authToken,
225
+ autoplay: legacy.options?.autoplay,
226
+ muted: legacy.options?.muted,
227
+ controls: legacy.options?.controls,
228
+ debug: legacy.options?.debug,
229
+ };
230
+ }
231
+ return options;
232
+ }
233
+ setupCallbacks(options) {
234
+ if (options.onStateChange) {
235
+ const unsub = this.controller.on("stateChange", ({ state, context }) => {
236
+ options.onStateChange(state, context);
237
+ });
238
+ this.cleanupFns.push(unsub);
239
+ }
240
+ if (options.onStreamStateChange) {
241
+ const unsub = this.controller.on("streamStateChange", ({ state }) => {
242
+ options.onStreamStateChange(state);
243
+ });
244
+ this.cleanupFns.push(unsub);
245
+ }
246
+ if (options.onTimeUpdate) {
247
+ const unsub = this.controller.on("timeUpdate", ({ currentTime, duration }) => {
248
+ options.onTimeUpdate(currentTime, duration);
249
+ });
250
+ this.cleanupFns.push(unsub);
251
+ }
252
+ if (options.onError) {
253
+ const unsub = this.controller.on("error", ({ error }) => {
254
+ options.onError(error);
255
+ });
256
+ this.cleanupFns.push(unsub);
257
+ }
258
+ if (options.onReady) {
259
+ const unsub = this.controller.on("ready", ({ videoElement }) => {
260
+ options.onReady(videoElement);
261
+ });
262
+ this.cleanupFns.push(unsub);
263
+ }
264
+ }
265
+ }
266
+
267
+ exports.FrameWorksPlayer = FrameWorksPlayer;
268
+ exports.default = FrameWorksPlayer;
269
+ //# sourceMappingURL=FrameWorksPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameWorksPlayer.js","sources":["../../../../src/vanilla/FrameWorksPlayer.ts"],"sourcesContent":["/**\n * FrameWorksPlayer.ts\n *\n * Vanilla JavaScript wrapper for PlayerController.\n * Use this class in non-React environments (Svelte, Vue, plain HTML, etc.)\n *\n * @example\n * ```typescript\n * import { FrameWorksPlayer } from '@livepeer-frameworks/player-core/vanilla';\n * import '@livepeer-frameworks/player-core/player.css';\n *\n * const player = new FrameWorksPlayer('#player', {\n * contentId: 'pk_...',\n * contentType: 'live',\n * gatewayUrl: 'https://gateway.example.com/graphql',\n * onStateChange: (state) => console.log('State:', state),\n * });\n *\n * // Control playback\n * player.play();\n * player.setVolume(0.5);\n *\n * // Clean up\n * player.destroy();\n * ```\n */\n\nimport type { PlayerControllerConfig, PlayerControllerEvents } from \"../core/PlayerController\";\nimport { PlayerController } from \"../core/PlayerController\";\nimport type {\n PlayerState,\n PlayerStateContext,\n StreamState,\n ContentEndpoints,\n ContentType,\n} from \"../types\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface FrameWorksPlayerOptions {\n /** Content identifier (stream name) */\n contentId: string;\n /** Content type */\n contentType?: ContentType;\n\n /** Pre-resolved endpoints (skip gateway) */\n endpoints?: ContentEndpoints;\n\n /** Gateway URL (required if endpoints not provided) */\n gatewayUrl?: string;\n /** Auth token for private streams */\n authToken?: string;\n\n /** Playback options */\n autoplay?: boolean;\n muted?: boolean;\n controls?: boolean;\n poster?: string;\n\n /** Debug logging */\n debug?: boolean;\n\n // Event callbacks\n /** Called when player state changes */\n onStateChange?: (state: PlayerState, context?: PlayerStateContext) => void;\n /** Called when stream state changes (for live streams) */\n onStreamStateChange?: (state: StreamState) => void;\n /** Called on time update during playback */\n onTimeUpdate?: (currentTime: number, duration: number) => void;\n /** Called on error */\n onError?: (error: string) => void;\n /** Called when player is ready */\n onReady?: (videoElement: HTMLVideoElement) => void;\n}\n\n// Legacy config format for backward compatibility with Svelte wrapper\ninterface LegacyConfig {\n contentId: string;\n contentType?: ContentType;\n thumbnailUrl?: string | null;\n options?: {\n gatewayUrl?: string;\n autoplay?: boolean;\n muted?: boolean;\n controls?: boolean;\n debug?: boolean;\n authToken?: string;\n };\n}\n\n// ============================================================================\n// FrameWorksPlayer Class\n// ============================================================================\n\n/**\n * Vanilla JavaScript player class.\n *\n * This is a thin wrapper around PlayerController that provides a\n * constructor-based API suitable for non-React frameworks.\n */\nexport class FrameWorksPlayer {\n private controller: PlayerController;\n private container: HTMLElement;\n private cleanupFns: Array<() => void> = [];\n private isDestroyed: boolean = false;\n\n /**\n * Create a new player instance.\n *\n * @param container - DOM element or CSS selector to mount the player\n * @param options - Player options and callbacks\n */\n constructor(\n container: HTMLElement | string | null,\n options: FrameWorksPlayerOptions | LegacyConfig\n ) {\n // Resolve container\n if (typeof container === \"string\") {\n this.container = document.querySelector(container) as HTMLElement;\n } else if (container instanceof HTMLElement) {\n this.container = container;\n } else {\n throw new Error(\"Container element not found or invalid\");\n }\n\n if (!this.container) {\n throw new Error(\"Container element not found\");\n }\n\n // Normalize options (support both new and legacy config formats)\n const normalizedOptions = this.normalizeOptions(options);\n\n // Create controller config\n const config: PlayerControllerConfig = {\n contentId: normalizedOptions.contentId,\n contentType: normalizedOptions.contentType,\n endpoints: normalizedOptions.endpoints,\n gatewayUrl: normalizedOptions.gatewayUrl,\n authToken: normalizedOptions.authToken,\n autoplay: normalizedOptions.autoplay ?? true,\n muted: normalizedOptions.muted ?? true,\n controls: normalizedOptions.controls ?? true,\n poster: normalizedOptions.poster,\n debug: normalizedOptions.debug,\n };\n\n // Create controller\n this.controller = new PlayerController(config);\n\n // Wire up callbacks\n this.setupCallbacks(normalizedOptions);\n\n // Auto-attach to container\n this.controller.attach(this.container).catch((err) => {\n console.error(\"[FrameWorksPlayer] Failed to attach:\", err);\n normalizedOptions.onError?.(err instanceof Error ? err.message : String(err));\n });\n }\n\n // ============================================================================\n // Playback Control (delegated to controller)\n // ============================================================================\n\n /** Start playback */\n play(): Promise<void> {\n return this.controller.play();\n }\n\n /** Pause playback */\n pause(): void {\n this.controller.pause();\n }\n\n /** Seek to time in seconds */\n seek(time: number): void {\n this.controller.seek(time);\n }\n\n /** Set volume (0-1) */\n setVolume(volume: number): void {\n this.controller.setVolume(volume);\n }\n\n /** Set muted state */\n setMuted(muted: boolean): void {\n this.controller.setMuted(muted);\n }\n\n /** Set playback rate */\n setPlaybackRate(rate: number): void {\n this.controller.setPlaybackRate(rate);\n }\n\n /** Jump to live edge (for live streams) */\n jumpToLive(): void {\n this.controller.jumpToLive();\n }\n\n /** Request fullscreen */\n requestFullscreen(): Promise<void> {\n return this.controller.requestFullscreen();\n }\n\n /** Request Picture-in-Picture */\n requestPiP(): Promise<void> {\n return this.controller.requestPiP();\n }\n\n // ============================================================================\n // State Getters (delegated to controller)\n // ============================================================================\n\n /** Get current player state */\n getState(): PlayerState {\n return this.controller.getState();\n }\n\n /** Get current stream state (for live streams) */\n getStreamState(): StreamState | null {\n return this.controller.getStreamState();\n }\n\n /** Get video element (null if not ready) */\n getVideoElement(): HTMLVideoElement | null {\n return this.controller.getVideoElement();\n }\n\n /** Check if player is ready */\n isReady(): boolean {\n return this.controller.isReady();\n }\n\n /** Get current time in seconds */\n getCurrentTime(): number {\n return this.controller.getCurrentTime();\n }\n\n /** Get duration in seconds */\n getDuration(): number {\n return this.controller.getDuration();\n }\n\n /** Check if paused */\n isPaused(): boolean {\n return this.controller.isPaused();\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.controller.isMuted();\n }\n\n // ============================================================================\n // Advanced Control\n // ============================================================================\n\n /** Retry playback after error */\n retry(): Promise<void> {\n return this.controller.retry();\n }\n\n /** Get content metadata (title, description, duration, viewers, etc.) */\n getMetadata() {\n return this.controller.getMetadata();\n }\n\n /** Get playback statistics */\n getStats(): Promise<unknown> {\n return this.controller.getStats();\n }\n\n /** Get current latency (for live streams) */\n getLatency(): Promise<unknown> {\n return this.controller.getLatency();\n }\n\n // ============================================================================\n // Event Subscription\n // ============================================================================\n\n /**\n * Subscribe to a player event.\n * @param event - Event name\n * @param listener - Callback function\n * @returns Unsubscribe function\n */\n on<K extends keyof PlayerControllerEvents>(\n event: K,\n listener: (data: PlayerControllerEvents[K]) => void\n ): () => void {\n return this.controller.on(event, listener);\n }\n\n // ============================================================================\n // Cleanup\n // ============================================================================\n\n /** Destroy the player and clean up resources */\n destroy(): void {\n if (this.isDestroyed) return;\n\n this.cleanupFns.forEach((fn) => {\n try {\n fn();\n } catch {}\n });\n this.cleanupFns = [];\n\n this.controller.destroy();\n this.isDestroyed = true;\n }\n\n // ============================================================================\n // Private Methods\n // ============================================================================\n\n private normalizeOptions(\n options: FrameWorksPlayerOptions | LegacyConfig\n ): FrameWorksPlayerOptions {\n // Check if it's legacy format (has nested `options` property)\n if (\"options\" in options && typeof options.options === \"object\") {\n const legacy = options as LegacyConfig;\n return {\n contentId: legacy.contentId,\n contentType: legacy.contentType,\n poster: legacy.thumbnailUrl || undefined,\n gatewayUrl: legacy.options?.gatewayUrl,\n authToken: legacy.options?.authToken,\n autoplay: legacy.options?.autoplay,\n muted: legacy.options?.muted,\n controls: legacy.options?.controls,\n debug: legacy.options?.debug,\n };\n }\n\n return options as FrameWorksPlayerOptions;\n }\n\n private setupCallbacks(options: FrameWorksPlayerOptions): void {\n if (options.onStateChange) {\n const unsub = this.controller.on(\"stateChange\", ({ state, context }) => {\n options.onStateChange!(state, context);\n });\n this.cleanupFns.push(unsub);\n }\n\n if (options.onStreamStateChange) {\n const unsub = this.controller.on(\"streamStateChange\", ({ state }) => {\n options.onStreamStateChange!(state);\n });\n this.cleanupFns.push(unsub);\n }\n\n if (options.onTimeUpdate) {\n const unsub = this.controller.on(\"timeUpdate\", ({ currentTime, duration }) => {\n options.onTimeUpdate!(currentTime, duration);\n });\n this.cleanupFns.push(unsub);\n }\n\n if (options.onError) {\n const unsub = this.controller.on(\"error\", ({ error }) => {\n options.onError!(error);\n });\n this.cleanupFns.push(unsub);\n }\n\n if (options.onReady) {\n const unsub = this.controller.on(\"ready\", ({ videoElement }) => {\n options.onReady!(videoElement);\n });\n this.cleanupFns.push(unsub);\n }\n }\n}\n\nexport default FrameWorksPlayer;\n"],"names":["PlayerController"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var FrameWorksPlayer = require('./vanilla/FrameWorksPlayer.js');
6
+
7
+
8
+
9
+ exports.FrameWorksPlayer = FrameWorksPlayer.FrameWorksPlayer;
10
+ exports.default = FrameWorksPlayer.FrameWorksPlayer;
11
+ //# sourceMappingURL=vanilla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}