@npo/player 1.9.0

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 (233) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/LICENSE +15 -0
  3. package/README.md +281 -0
  4. package/lib/js/ads/ster.d.ts +4 -0
  5. package/lib/js/ads/ster.js +159 -0
  6. package/lib/js/ads/ster.js.map +1 -0
  7. package/lib/js/ads/ster.test.d.ts +1 -0
  8. package/lib/js/ads/ster.test.js +91 -0
  9. package/lib/js/ads/ster.test.js.map +1 -0
  10. package/lib/js/api/getstreamobject.d.ts +3 -0
  11. package/lib/js/api/getstreamobject.js +19 -0
  12. package/lib/js/api/getstreamobject.js.map +1 -0
  13. package/lib/js/cdnproviders.d.ts +1 -0
  14. package/lib/js/cdnproviders.js +13 -0
  15. package/lib/js/cdnproviders.js.map +1 -0
  16. package/lib/js/checks/safari.d.ts +1 -0
  17. package/lib/js/checks/safari.js +10 -0
  18. package/lib/js/checks/safari.js.map +1 -0
  19. package/lib/js/checks/safari.test.d.ts +1 -0
  20. package/lib/js/checks/safari.test.js +21 -0
  21. package/lib/js/checks/safari.test.js.map +1 -0
  22. package/lib/js/drm/verifydrm.d.ts +4 -0
  23. package/lib/js/drm/verifydrm.js +38 -0
  24. package/lib/js/drm/verifydrm.js.map +1 -0
  25. package/lib/js/drm/verifydrm.test.d.ts +1 -0
  26. package/lib/js/drm/verifydrm.test.js +18 -0
  27. package/lib/js/drm/verifydrm.test.js.map +1 -0
  28. package/lib/js/fragments/setfragments.d.ts +3 -0
  29. package/lib/js/fragments/setfragments.js +68 -0
  30. package/lib/js/fragments/setfragments.js.map +1 -0
  31. package/lib/js/playeractions/customerrors.test.d.ts +1 -0
  32. package/lib/js/playeractions/customerrors.test.js +52 -0
  33. package/lib/js/playeractions/customerrors.test.js.map +1 -0
  34. package/lib/js/playeractions/handlers/customerrors.d.ts +50 -0
  35. package/lib/js/playeractions/handlers/customerrors.js +154 -0
  36. package/lib/js/playeractions/handlers/customerrors.js.map +1 -0
  37. package/lib/js/playeractions/handlers/error.d.ts +3 -0
  38. package/lib/js/playeractions/handlers/error.js +23 -0
  39. package/lib/js/playeractions/handlers/error.js.map +1 -0
  40. package/lib/js/playeractions/handlers/error.test.d.ts +1 -0
  41. package/lib/js/playeractions/handlers/error.test.js +45 -0
  42. package/lib/js/playeractions/handlers/error.test.js.map +1 -0
  43. package/lib/js/playeractions/handlers/handleoffsets.d.ts +6 -0
  44. package/lib/js/playeractions/handlers/handleoffsets.js +71 -0
  45. package/lib/js/playeractions/handlers/handleoffsets.js.map +1 -0
  46. package/lib/js/playeractions/handlers/handleoffsets.test.d.ts +1 -0
  47. package/lib/js/playeractions/handlers/handleoffsets.test.js +50 -0
  48. package/lib/js/playeractions/handlers/handleoffsets.test.js.map +1 -0
  49. package/lib/js/playeractions/handlers/resolvekeypress.d.ts +3 -0
  50. package/lib/js/playeractions/handlers/resolvekeypress.js +55 -0
  51. package/lib/js/playeractions/handlers/resolvekeypress.js.map +1 -0
  52. package/lib/js/playeractions/playeractions.d.ts +3 -0
  53. package/lib/js/playeractions/playeractions.js +4 -0
  54. package/lib/js/playeractions/playeractions.js.map +1 -0
  55. package/lib/js/tracking/handlers/eventbinding.d.ts +10 -0
  56. package/lib/js/tracking/handlers/eventbinding.js +86 -0
  57. package/lib/js/tracking/handlers/eventbinding.js.map +1 -0
  58. package/lib/js/tracking/handlers/eventlogging.d.ts +11 -0
  59. package/lib/js/tracking/handlers/eventlogging.js +42 -0
  60. package/lib/js/tracking/handlers/eventlogging.js.map +1 -0
  61. package/lib/js/tracking/handlers/playertrackerinit.d.ts +13 -0
  62. package/lib/js/tracking/handlers/playertrackerinit.js +29 -0
  63. package/lib/js/tracking/handlers/playertrackerinit.js.map +1 -0
  64. package/lib/js/tracking/handlers/playertrackerstart.d.ts +8 -0
  65. package/lib/js/tracking/handlers/playertrackerstart.js +29 -0
  66. package/lib/js/tracking/handlers/playertrackerstart.js.map +1 -0
  67. package/lib/js/tracking/playertracker.d.ts +4 -0
  68. package/lib/js/tracking/playertracker.js +10 -0
  69. package/lib/js/tracking/playertracker.js.map +1 -0
  70. package/lib/js/ui/components/adbutton.d.ts +7 -0
  71. package/lib/js/ui/components/adbutton.js +21 -0
  72. package/lib/js/ui/components/adbutton.js.map +1 -0
  73. package/lib/js/ui/components/adlabel.d.ts +7 -0
  74. package/lib/js/ui/components/adlabel.js +17 -0
  75. package/lib/js/ui/components/adlabel.js.map +1 -0
  76. package/lib/js/ui/components/buttons.d.ts +30 -0
  77. package/lib/js/ui/components/buttons.js +89 -0
  78. package/lib/js/ui/components/buttons.js.map +1 -0
  79. package/lib/js/ui/components/controlbar.d.ts +3 -0
  80. package/lib/js/ui/components/controlbar.js +47 -0
  81. package/lib/js/ui/components/controlbar.js.map +1 -0
  82. package/lib/js/ui/components/ctabar.d.ts +9 -0
  83. package/lib/js/ui/components/ctabar.js +41 -0
  84. package/lib/js/ui/components/ctabar.js.map +1 -0
  85. package/lib/js/ui/components/nativemobile/buttons.d.ts +13 -0
  86. package/lib/js/ui/components/nativemobile/buttons.js +43 -0
  87. package/lib/js/ui/components/nativemobile/buttons.js.map +1 -0
  88. package/lib/js/ui/components/nativemobile/controlbar.d.ts +2 -0
  89. package/lib/js/ui/components/nativemobile/controlbar.js +23 -0
  90. package/lib/js/ui/components/nativemobile/controlbar.js.map +1 -0
  91. package/lib/js/ui/components/nativemobile/ctabar.d.ts +10 -0
  92. package/lib/js/ui/components/nativemobile/ctabar.js +12 -0
  93. package/lib/js/ui/components/nativemobile/ctabar.js.map +1 -0
  94. package/lib/js/ui/components/nativemobile/playnext.d.ts +10 -0
  95. package/lib/js/ui/components/nativemobile/playnext.js +16 -0
  96. package/lib/js/ui/components/nativemobile/playnext.js.map +1 -0
  97. package/lib/js/ui/components/nativemobile/topbar.d.ts +3 -0
  98. package/lib/js/ui/components/nativemobile/topbar.js +21 -0
  99. package/lib/js/ui/components/nativemobile/topbar.js.map +1 -0
  100. package/lib/js/ui/components/playnext.d.ts +11 -0
  101. package/lib/js/ui/components/playnext.js +11 -0
  102. package/lib/js/ui/components/playnext.js.map +1 -0
  103. package/lib/js/ui/components/settingspanel.d.ts +4 -0
  104. package/lib/js/ui/components/settingspanel.js +130 -0
  105. package/lib/js/ui/components/settingspanel.js.map +1 -0
  106. package/lib/js/ui/components/shared/playnextscreen.d.ts +2 -0
  107. package/lib/js/ui/components/shared/playnextscreen.js +18 -0
  108. package/lib/js/ui/components/shared/playnextscreen.js.map +1 -0
  109. package/lib/js/ui/components/titlebar.d.ts +3 -0
  110. package/lib/js/ui/components/titlebar.js +9 -0
  111. package/lib/js/ui/components/titlebar.js.map +1 -0
  112. package/lib/js/ui/components/topbar.d.ts +2 -0
  113. package/lib/js/ui/components/topbar.js +19 -0
  114. package/lib/js/ui/components/topbar.js.map +1 -0
  115. package/lib/js/ui/handlers/listboxhandlers.d.ts +5 -0
  116. package/lib/js/ui/handlers/listboxhandlers.js +41 -0
  117. package/lib/js/ui/handlers/listboxhandlers.js.map +1 -0
  118. package/lib/js/ui/handlers/nicamhandler.d.ts +2 -0
  119. package/lib/js/ui/handlers/nicamhandler.js +32 -0
  120. package/lib/js/ui/handlers/nicamhandler.js.map +1 -0
  121. package/lib/js/ui/handlers/nicamhandler.test.d.ts +1 -0
  122. package/lib/js/ui/handlers/nicamhandler.test.js +34 -0
  123. package/lib/js/ui/handlers/nicamhandler.test.js.map +1 -0
  124. package/lib/js/ui/handlers/playnexthandlers.d.ts +0 -0
  125. package/lib/js/ui/handlers/playnexthandlers.js +2 -0
  126. package/lib/js/ui/handlers/playnexthandlers.js.map +1 -0
  127. package/lib/js/ui/handlers/timecontrolhandlers.d.ts +3 -0
  128. package/lib/js/ui/handlers/timecontrolhandlers.js +23 -0
  129. package/lib/js/ui/handlers/timecontrolhandlers.js.map +1 -0
  130. package/lib/js/ui/nativemobileui.d.ts +6 -0
  131. package/lib/js/ui/nativemobileui.js +49 -0
  132. package/lib/js/ui/nativemobileui.js.map +1 -0
  133. package/lib/js/ui/uicontainer.d.ts +3 -0
  134. package/lib/js/ui/uicontainer.js +61 -0
  135. package/lib/js/ui/uicontainer.js.map +1 -0
  136. package/lib/js/utilities/localizationconfig.d.ts +6 -0
  137. package/lib/js/utilities/localizationconfig.js +8 -0
  138. package/lib/js/utilities/localizationconfig.js.map +1 -0
  139. package/lib/js/utilities/printversion.d.ts +1 -0
  140. package/lib/js/utilities/printversion.js +28 -0
  141. package/lib/js/utilities/printversion.js.map +1 -0
  142. package/lib/js/utilities/utilities.d.ts +60 -0
  143. package/lib/js/utilities/utilities.js +110 -0
  144. package/lib/js/utilities/utilities.js.map +1 -0
  145. package/lib/lang/nl.json +72 -0
  146. package/lib/npoplayer.d.ts +45 -0
  147. package/lib/npoplayer.js +518 -0
  148. package/lib/npoplayer.js.map +1 -0
  149. package/lib/npoplayer.test.d.ts +1 -0
  150. package/lib/npoplayer.test.js +12 -0
  151. package/lib/npoplayer.test.js.map +1 -0
  152. package/lib/package.json +88 -0
  153. package/lib/src/js/ads/ster.d.ts +4 -0
  154. package/lib/src/js/ads/ster.test.d.ts +1 -0
  155. package/lib/src/js/api/getstreamobject.d.ts +3 -0
  156. package/lib/src/js/cdnproviders.d.ts +1 -0
  157. package/lib/src/js/checks/safari.d.ts +1 -0
  158. package/lib/src/js/checks/safari.test.d.ts +1 -0
  159. package/lib/src/js/drm/verifydrm.d.ts +4 -0
  160. package/lib/src/js/drm/verifydrm.test.d.ts +1 -0
  161. package/lib/src/js/fragments/setfragments.d.ts +3 -0
  162. package/lib/src/js/playeractions/customerrors.test.d.ts +1 -0
  163. package/lib/src/js/playeractions/handlers/customerrors.d.ts +50 -0
  164. package/lib/src/js/playeractions/handlers/error.d.ts +3 -0
  165. package/lib/src/js/playeractions/handlers/error.test.d.ts +1 -0
  166. package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +6 -0
  167. package/lib/src/js/playeractions/handlers/handleoffsets.test.d.ts +1 -0
  168. package/lib/src/js/playeractions/handlers/resolvekeypress.d.ts +3 -0
  169. package/lib/src/js/playeractions/playeractions.d.ts +3 -0
  170. package/lib/src/js/tracking/handlers/eventbinding.d.ts +10 -0
  171. package/lib/src/js/tracking/handlers/eventlogging.d.ts +11 -0
  172. package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +13 -0
  173. package/lib/src/js/tracking/handlers/playertrackerstart.d.ts +8 -0
  174. package/lib/src/js/tracking/playertracker.d.ts +4 -0
  175. package/lib/src/js/ui/components/adbutton.d.ts +7 -0
  176. package/lib/src/js/ui/components/adlabel.d.ts +7 -0
  177. package/lib/src/js/ui/components/buttons.d.ts +30 -0
  178. package/lib/src/js/ui/components/controlbar.d.ts +3 -0
  179. package/lib/src/js/ui/components/ctabar.d.ts +9 -0
  180. package/lib/src/js/ui/components/nativemobile/buttons.d.ts +13 -0
  181. package/lib/src/js/ui/components/nativemobile/controlbar.d.ts +2 -0
  182. package/lib/src/js/ui/components/nativemobile/ctabar.d.ts +10 -0
  183. package/lib/src/js/ui/components/nativemobile/playnext.d.ts +10 -0
  184. package/lib/src/js/ui/components/nativemobile/topbar.d.ts +3 -0
  185. package/lib/src/js/ui/components/playnext.d.ts +11 -0
  186. package/lib/src/js/ui/components/settingspanel.d.ts +4 -0
  187. package/lib/src/js/ui/components/shared/playnextscreen.d.ts +2 -0
  188. package/lib/src/js/ui/components/titlebar.d.ts +3 -0
  189. package/lib/src/js/ui/components/topbar.d.ts +2 -0
  190. package/lib/src/js/ui/handlers/listboxhandlers.d.ts +5 -0
  191. package/lib/src/js/ui/handlers/nicamhandler.d.ts +2 -0
  192. package/lib/src/js/ui/handlers/nicamhandler.test.d.ts +1 -0
  193. package/lib/src/js/ui/handlers/playnexthandlers.d.ts +0 -0
  194. package/lib/src/js/ui/handlers/timecontrolhandlers.d.ts +3 -0
  195. package/lib/src/js/ui/nativemobileui.d.ts +6 -0
  196. package/lib/src/js/ui/uicontainer.d.ts +3 -0
  197. package/lib/src/js/utilities/localizationconfig.d.ts +6 -0
  198. package/lib/src/js/utilities/printversion.d.ts +1 -0
  199. package/lib/src/js/utilities/utilities.d.ts +60 -0
  200. package/lib/src/npoplayer.d.ts +45 -0
  201. package/lib/src/npoplayer.test.d.ts +1 -0
  202. package/lib/src/types/classes.d.ts +4 -0
  203. package/lib/src/types/interfaces.d.ts +105 -0
  204. package/lib/types/classes.d.ts +4 -0
  205. package/lib/types/classes.js +4 -0
  206. package/lib/types/classes.js.map +1 -0
  207. package/lib/types/interfaces.d.ts +105 -0
  208. package/lib/types/interfaces.js +6 -0
  209. package/lib/types/interfaces.js.map +1 -0
  210. package/package.json +88 -0
  211. package/src/scss/components/_advert.scss +74 -0
  212. package/src/scss/components/_buffering.scss +6 -0
  213. package/src/scss/components/_container.scss +8 -0
  214. package/src/scss/components/_controlbars.scss +36 -0
  215. package/src/scss/components/_error.scss +26 -0
  216. package/src/scss/components/_fonts.scss +19 -0
  217. package/src/scss/components/_icons.scss +241 -0
  218. package/src/scss/components/_nicam.scss +61 -0
  219. package/src/scss/components/_playnext.scss +52 -0
  220. package/src/scss/components/_seekbar.scss +116 -0
  221. package/src/scss/components/_settingspanel.scss +196 -0
  222. package/src/scss/components/_subtitles.scss +32 -0
  223. package/src/scss/components/_textbuttons.scss +42 -0
  224. package/src/scss/components/_volumeslider.scss +23 -0
  225. package/src/scss/npoplayer.css +1238 -0
  226. package/src/scss/npoplayer.scss +37 -0
  227. package/src/scss/variants/_player-base.scss +64 -0
  228. package/src/scss/variants/_player-large.scss +56 -0
  229. package/src/scss/variants/_player-medium.scss +57 -0
  230. package/src/scss/variants/_player-small.scss +234 -0
  231. package/src/scss/vars/_colors.scss +24 -0
  232. package/src/scss/vars/_fonts.scss +20 -0
  233. package/src/scss/vars/_icons.scss +37 -0
@@ -0,0 +1,50 @@
1
+ import { handleStartOffset, shiftToProgramStart } from "./handleoffsets";
2
+ const isLive = () => true;
3
+ const onReady = jest.fn();
4
+ const timeShift = jest.fn();
5
+ const offset = 10;
6
+ const timestamp = 10;
7
+ const player = {
8
+ isLive,
9
+ on: onReady,
10
+ timeShift,
11
+ };
12
+ describe("Test offset handling", () => {
13
+ afterEach(() => {
14
+ jest.resetAllMocks();
15
+ });
16
+ it("should not seek when player is live", () => {
17
+ handleStartOffset(player, offset);
18
+ expect(onReady).not.toBeCalled();
19
+ });
20
+ it("should not seek when offset is undefined", () => {
21
+ handleStartOffset({ ...player, isLive: () => false });
22
+ expect(onReady).not.toBeCalled();
23
+ });
24
+ it("should seek when player is not live and offset is defined", () => {
25
+ handleStartOffset({ ...player, isLive: () => false }, offset);
26
+ expect(onReady).toBeCalled();
27
+ });
28
+ });
29
+ describe("Test programStart shift", () => {
30
+ afterEach(() => {
31
+ jest.resetAllMocks();
32
+ });
33
+ it("should not call timeshift when player is null", () => {
34
+ shiftToProgramStart(null, timestamp);
35
+ expect(timeShift).not.toBeCalled();
36
+ });
37
+ it("should not call timeshift when timestamp is undefined", () => {
38
+ shiftToProgramStart(player);
39
+ expect(timeShift).not.toBeCalled();
40
+ });
41
+ it("should not call timeshift when player is not live", () => {
42
+ shiftToProgramStart({ ...player, isLive: () => false }, timestamp);
43
+ expect(timeShift).not.toBeCalled();
44
+ });
45
+ it("should not call timeshift when player is live and timestamp is set", () => {
46
+ shiftToProgramStart(player, timestamp);
47
+ expect(timeShift).toBeCalled();
48
+ });
49
+ });
50
+ //# sourceMappingURL=handleoffsets.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleoffsets.test.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/handleoffsets.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;AAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAE5B,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,MAAM,GAAG;IACX,MAAM;IACN,EAAE,EAAE,OAAO;IACX,SAAS;CACY,CAAC;AAE1B,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACjE,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC1E,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEvC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type PlayerAPI } from "bitmovin-player";
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function resolveKeyPress(player: PlayerAPI, npoplayer: NpoPlayer, e: KeyboardEvent): void;
@@ -0,0 +1,55 @@
1
+ import { ViewMode } from "bitmovin-player";
2
+ /*
3
+ * This function is called when a key is pressed and handles the logic for the keypress.
4
+ * @function resolveKeyPress
5
+ * @param {PlayerAPI} player - The Bitmovin player instance
6
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance
7
+ * @param {KeyboardEvent} e - The keyboard event
8
+ * @returns {void}
9
+ */
10
+ export function resolveKeyPress(player, npoplayer, e) {
11
+ switch (e.code) {
12
+ case 'KeyM': {
13
+ const isMuted = player.isMuted() ?? false;
14
+ isMuted ? player.unmute() : player.mute();
15
+ break;
16
+ }
17
+ case 'KeyF': {
18
+ if (player.getViewMode() !== ViewMode.Fullscreen) {
19
+ player.setViewMode(ViewMode.Fullscreen);
20
+ }
21
+ else {
22
+ player.setViewMode(ViewMode.Inline);
23
+ }
24
+ break;
25
+ }
26
+ case 'Space': {
27
+ const isPaused = player.isPaused() ?? false;
28
+ isPaused ? player.play() : player.pause();
29
+ break;
30
+ }
31
+ case 'ArrowUp': {
32
+ const isMuted = player.isMuted() ?? false;
33
+ if (isMuted)
34
+ player.unmute();
35
+ npoplayer.increaseVolume();
36
+ break;
37
+ }
38
+ case 'ArrowDown': {
39
+ const isMuted = player.isMuted() ?? false;
40
+ if (isMuted)
41
+ player.unmute();
42
+ npoplayer.decreaseVolume();
43
+ break;
44
+ }
45
+ case 'ArrowLeft': {
46
+ npoplayer.goBackwards(10);
47
+ break;
48
+ }
49
+ case 'ArrowRight': {
50
+ npoplayer.goForward(10);
51
+ break;
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=resolvekeypress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvekeypress.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/resolvekeypress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3D;;;;;;;EAOE;AAEF,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,SAAoB,EAAE,CAAgB;IACrF,QAAO,CAAC,CAAC,IAAI,EAAE;QACX,KAAK,MAAM,CAAC,CAAC;YACT,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC;YAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM;SACT;QACD,KAAK,MAAM,CAAC,CAAC;YACT,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,UAAU,EAAE;gBAC9C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC3C;iBAAM;gBACH,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACvC;YACD,MAAM;SACT;QACD,KAAK,OAAO,CAAC,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC;YAC5C,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM;SACT;QACD,KAAK,SAAS,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC;YAC1C,IAAI,OAAO;gBAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7B,SAAS,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM;SACT;QACD,KAAK,WAAW,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC;YAC1C,IAAI,OAAO;gBAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7B,SAAS,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM;SACT;QACD,KAAK,WAAW,CAAC,CAAC;YACd,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM;SACT;QACD,KAAK,YAAY,CAAC,CAAC;YACf,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM;SACT;KACJ;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { resolveKeyPress } from "./handlers/resolvekeypress";
2
+ export { handleStartOffset, handleLiveOffsetLogic, shiftToProgramStart } from "./handlers/handleoffsets";
3
+ export { handlePlayerError } from "./handlers/error";
@@ -0,0 +1,4 @@
1
+ export { resolveKeyPress } from "./handlers/resolvekeypress";
2
+ export { handleStartOffset, handleLiveOffsetLogic, shiftToProgramStart } from "./handlers/handleoffsets";
3
+ export { handlePlayerError } from "./handlers/error";
4
+ //# sourceMappingURL=playeractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playeractions.js","sourceRoot":"","sources":["../../../../src/js/playeractions/playeractions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type PlayerAPI } from 'bitmovin-player';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ /**
4
+ * @function bindPlayerEvents
5
+ * @description Binds the player events to the event logging function.
6
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance.
7
+ * @param {PlayerAPI} player - The Bitmovin player instance.
8
+ * @returns {void}
9
+ */
10
+ export declare function bindPlayerEvents(npoplayer: NpoPlayer, player: PlayerAPI): void;
@@ -0,0 +1,86 @@
1
+ import { PlayerEvent, ViewMode } from 'bitmovin-player';
2
+ import { logEvent } from './eventlogging';
3
+ /**
4
+ * @function bindPlayerEvents
5
+ * @description Binds the player events to the event logging function.
6
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance.
7
+ * @param {PlayerAPI} player - The Bitmovin player instance.
8
+ * @returns {void}
9
+ */
10
+ export function bindPlayerEvents(npoplayer, player) {
11
+ if (player == null)
12
+ return;
13
+ let isNewSource = false;
14
+ const playerEvents = [
15
+ { event: PlayerEvent.Paused, name: 'pause' },
16
+ { event: PlayerEvent.SourceLoaded, name: 'load_complete' },
17
+ { event: PlayerEvent.Ready, name: 'load_complete' },
18
+ { event: PlayerEvent.StallStarted, name: 'buffering' },
19
+ { event: PlayerEvent.StallEnded, name: 'buffering_complete' },
20
+ { event: PlayerEvent.PlaybackFinished, name: 'complete' },
21
+ { event: PlayerEvent.TimeChanged, name: 'time' },
22
+ {
23
+ event: PlayerEvent.ViewModeChanged,
24
+ name: player?.getViewMode() === ViewMode.Fullscreen
25
+ ? 'fullscreen'
26
+ : 'windowed'
27
+ },
28
+ { event: PlayerEvent.SourceUnloaded, name: 'stop' },
29
+ { event: PlayerEvent.Destroy, name: 'stop' },
30
+ ];
31
+ const logEventHandler = (npoplayer, eventName) => {
32
+ return () => {
33
+ logEvent(npoplayer, eventName);
34
+ };
35
+ };
36
+ //Handle seek events, this requires a custom handler because we need to send the seek_from and seek_position parameters
37
+ const seekHandler = (e) => {
38
+ const data = {
39
+ seek_from: e.position,
40
+ stream_position: e.seekTarget
41
+ };
42
+ logEvent(npoplayer, 'seek', data);
43
+ };
44
+ // Because we only want to load 'start' when a new source is starting playback, we need to keep track of that
45
+ const handleSourceLoaded = () => {
46
+ isNewSource = true;
47
+ };
48
+ //fire resume event when the player resumes playback and the source is not new (unpause)
49
+ const handlePlay = () => {
50
+ if (!isNewSource) {
51
+ logEvent(npoplayer, 'resume');
52
+ }
53
+ };
54
+ //fire start event when the player starts playing new content, set isNewSource to false
55
+ const handlePlaying = () => {
56
+ if (isNewSource) {
57
+ logEvent(npoplayer, 'start');
58
+ isNewSource = false;
59
+ }
60
+ };
61
+ //sends a stop event when the user leaves the page
62
+ function stopBeforeUnload() {
63
+ logEvent(npoplayer, 'stop');
64
+ }
65
+ //remove old listeners (if they exist) before setting new ones
66
+ player.off(PlayerEvent.SourceLoaded, handleSourceLoaded);
67
+ player.off(PlayerEvent.Seek, seekHandler);
68
+ player.off(PlayerEvent.Play, handlePlay);
69
+ player.off(PlayerEvent.Playing, handlePlaying);
70
+ playerEvents.forEach(({ event, name }) => {
71
+ const handler = logEventHandler(npoplayer, name);
72
+ player.off(event, handler);
73
+ });
74
+ window.removeEventListener('beforeunload', stopBeforeUnload);
75
+ //bind new listeners
76
+ player.on(PlayerEvent.SourceLoaded, handleSourceLoaded);
77
+ player.on(PlayerEvent.Seek, seekHandler);
78
+ player.on(PlayerEvent.Play, handlePlay);
79
+ player.on(PlayerEvent.Playing, handlePlaying);
80
+ playerEvents.forEach(({ event, name }) => {
81
+ const handler = logEventHandler(npoplayer, name);
82
+ player.on(event, handler);
83
+ });
84
+ window.addEventListener('beforeunload', stopBeforeUnload);
85
+ }
86
+ //# sourceMappingURL=eventbinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventbinding.js","sourceRoot":"","sources":["../../../../../src/js/tracking/handlers/eventbinding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @function logEvent
3
+ * @description Logs an event to the NPO Tag StreamTracker
4
+ * @param {Object} npoplayer - The NpoPlayer instance
5
+ * @param {string} event - The event name
6
+ * @param {Object} data - The event data, this is optional and currently only used for seek events,
7
+ * because the tag SDK does not export SeekEventProps as a type the type for data is set to any.
8
+ * @returns {void}
9
+ */
10
+ import NpoPlayer from "../../../npoplayer";
11
+ export declare function logEvent(npoplayer: NpoPlayer, event: string, data?: any): void;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @function logEvent
3
+ * @description Logs an event to the NPO Tag StreamTracker
4
+ * @param {Object} npoplayer - The NpoPlayer instance
5
+ * @param {string} event - The event name
6
+ * @param {Object} data - The event data, this is optional and currently only used for seek events,
7
+ * because the tag SDK does not export SeekEventProps as a type the type for data is set to any.
8
+ * @returns {void}
9
+ */
10
+ export function logEvent(npoplayer, event, data) {
11
+ if (!npoplayer.player || !npoplayer.streamTracker)
12
+ return;
13
+ try {
14
+ npoplayer.player.getCurrentTime();
15
+ }
16
+ catch (e) {
17
+ console.log('Er gaat iets mis met de player API', e);
18
+ }
19
+ const streamOptions = { stream_position: npoplayer.player.getCurrentTime() };
20
+ const eventHandlers = {
21
+ start: npoplayer.streamTracker.start,
22
+ buffering: npoplayer.streamTracker.buffering,
23
+ buffering_complete: npoplayer.streamTracker.buffering_complete,
24
+ complete: npoplayer.streamTracker.complete,
25
+ fullscreen: npoplayer.streamTracker.fullscreen,
26
+ load: npoplayer.streamTracker.load,
27
+ load_complete: npoplayer.streamTracker.load_complete,
28
+ pause: npoplayer.streamTracker.pause,
29
+ resume: npoplayer.streamTracker.resume,
30
+ stop: npoplayer.streamTracker.stop,
31
+ windowed: npoplayer.streamTracker.windowed,
32
+ time: npoplayer.streamTracker.time,
33
+ // seek event including so properties
34
+ seek: () => {
35
+ npoplayer.streamTracker?.seek(data);
36
+ }
37
+ };
38
+ const streamTrackerHandler = eventHandlers[event];
39
+ npoplayer.logEmitter.emit('logEvent', event);
40
+ streamTrackerHandler(streamOptions);
41
+ }
42
+ //# sourceMappingURL=eventlogging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventlogging.js","sourceRoot":"","sources":["../../../../../src/js/tracking/handlers/eventlogging.ts"],"names":[],"mappings":"AAAA;;;;;;;;EAQE;AAIF,MAAM,UAAU,QAAQ,CAAE,SAAoB,EAAE,KAAa,EAAE,IAAU;IACrE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa;QAAE,OAAO;IAE1D,IAAI;QACA,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;KACpC;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAA;KACvD;IACD,MAAM,aAAa,GAAG,EAAE,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAA;IAE5E,MAAM,aAAa,GAAiD;QAChE,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,KAAK;QACpC,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC,SAAS;QAC5C,kBAAkB,EAAE,SAAS,CAAC,aAAa,CAAC,kBAAkB;QAC9D,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,QAAQ;QAC1C,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,UAAU;QAC9C,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI;QAClC,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,aAAa;QACpD,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,KAAK;QACpC,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM;QACtC,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI;QAClC,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,QAAQ;QAC1C,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,IAAI;QAClC,qCAAqC;QACrC,IAAI,EAAE,GAAG,EAAE;YACP,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;KACJ,CAAA;IAED,MAAM,oBAAoB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACjD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAC5C,oBAAoB,CAAC,aAAa,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type NPOTag } from '@npotag/tag';
2
+ import { type InitialisationProps } from '@npotag/tag/dist/types/src/npoTag';
3
+ import type NpoPlayer from '../../../npoplayer';
4
+ /**
5
+ * @function initPlayerTracker
6
+ * @description: This function initializes the NPO Tag instance and page tracker.
7
+ * The page tracker is a required prerequisite for the stream tracker to function.
8
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance.
9
+ * @param {InitialisationProps | null} _npotag - The NPO Tag instance.
10
+ * @param {NPOTag} _npotaginstance - The NPO Tag instance.
11
+ * @returns {void}
12
+ */
13
+ export declare function initPlayerTracker(npoplayer: NpoPlayer, _npotag?: InitialisationProps | null, _npotaginstance?: NPOTag): void;
@@ -0,0 +1,29 @@
1
+ import { newATInternetPlugin, newGovoltePlugin, newPageTracker, newTag } from '@npotag/tag';
2
+ const npoTagPlugins = [
3
+ newGovoltePlugin({ maxRetryCount: 5, delayBetweenRetriesInMs: 3000 }),
4
+ newATInternetPlugin()
5
+ ];
6
+ /**
7
+ * @function initPlayerTracker
8
+ * @description: This function initializes the NPO Tag instance and page tracker.
9
+ * The page tracker is a required prerequisite for the stream tracker to function.
10
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance.
11
+ * @param {InitialisationProps | null} _npotag - The NPO Tag instance.
12
+ * @param {NPOTag} _npotaginstance - The NPO Tag instance.
13
+ * @returns {void}
14
+ */
15
+ export function initPlayerTracker(npoplayer, _npotag, _npotaginstance) {
16
+ npoplayer.npoTag = {
17
+ npoTagInstance: undefined,
18
+ pageTracker: null,
19
+ heartbeatInterval: undefined
20
+ };
21
+ npoplayer.npoTag.npoTagInstance =
22
+ _npotag != null
23
+ ? newTag(_npotag, npoTagPlugins)
24
+ : _npotaginstance;
25
+ if (npoplayer.npoTag.npoTagInstance != null) {
26
+ npoplayer.npoTag.pageTracker = newPageTracker(npoplayer.npoTag.npoTagInstance);
27
+ }
28
+ }
29
+ //# sourceMappingURL=playertrackerinit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playertrackerinit.js","sourceRoot":"","sources":["../../../../../src/js/tracking/handlers/playertrackerinit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAe,MAAM,EAAE,MAAM,aAAa,CAAA;AAIxG,MAAM,aAAa,GAAG;IAClB,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;IACrE,mBAAmB,EAAE;CACxB,CAAA;AAED;;;;;;;;EAQE;AACF,MAAM,UAAU,iBAAiB,CAAE,SAAoB,EAAE,OAAoC,EAAE,eAAwB;IACnH,SAAS,CAAC,MAAM,GAAG;QACf,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,IAAI;QACjB,iBAAiB,EAAE,SAAS;KAC/B,CAAA;IACD,SAAS,CAAC,MAAM,CAAC,cAAc;QACvB,OAAO,IAAI,IAAI;YACX,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;YAChC,CAAC,CAAC,eAAe,CAAA;IAC7B,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,EAAE;QACzC,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,cAAc,CACzC,SAAS,CAAC,MAAM,CAAC,cAAc,CAClC,CAAA;KACJ;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @function startPlayerTracker
3
+ * @description This function creates a new StreamTracker instance and binds the player events to it.
4
+ * @param {Object} playerInstance - The NpoPlayer instance
5
+ * @param {number} duration - The duration of the stream in seconds
6
+ * @returns {void}
7
+ */
8
+ export declare function startPlayerTracker(playerInstance: any, duration: number, version: string): void;
@@ -0,0 +1,29 @@
1
+ import { newStreamTracker } from '@npotag/tag';
2
+ import { bindPlayerEvents } from './eventbinding';
3
+ import { validatePrid } from '../../utilities/utilities';
4
+ /**
5
+ * @function startPlayerTracker
6
+ * @description This function creates a new StreamTracker instance and binds the player events to it.
7
+ * @param {Object} playerInstance - The NpoPlayer instance
8
+ * @param {number} duration - The duration of the stream in seconds
9
+ * @returns {void}
10
+ */
11
+ export function startPlayerTracker(playerInstance, duration, version) {
12
+ if (playerInstance.npoTag?.pageTracker == null) {
13
+ console.error('No pageTracker available');
14
+ }
15
+ else if (playerInstance.streamTracker == null) {
16
+ const streamTrackerConfig = {
17
+ stream_length: duration,
18
+ stream_id: validatePrid(playerInstance.streamObject.metadata.prid),
19
+ player_id: 'npoplayer-web',
20
+ av_type: 'video',
21
+ player_version: version,
22
+ sko_player_version: '1.0.0'
23
+ };
24
+ const isLiveConfig = playerInstance.streamObject.stream.isLiveStream ? { isLive: true } : {};
25
+ playerInstance.streamTracker = newStreamTracker(playerInstance.npoTag.pageTracker, streamTrackerConfig, isLiveConfig);
26
+ bindPlayerEvents(playerInstance, playerInstance.player);
27
+ }
28
+ }
29
+ //# sourceMappingURL=playertrackerstart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playertrackerstart.js","sourceRoot":"","sources":["../../../../../src/js/tracking/handlers/playertrackerstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD;;;;;;EAME;AACF,MAAM,UAAU,kBAAkB,CAAE,cAAmB,EAAE,QAAgB,EAAE,OAAe;IACtF,IAAI,cAAc,CAAC,MAAM,EAAE,WAAW,IAAI,IAAI,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;SAAM,IAAI,cAAc,CAAC,aAAa,IAAI,IAAI,EAAE;QAE7C,MAAM,mBAAmB,GAAG;YACxB,aAAa,EAAE,QAAQ;YACvB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClE,SAAS,EAAE,eAAe;YAC1B,OAAO,EAAE,OAAiB;YAC1B,cAAc,EAAE,OAAO;YACvB,kBAAkB,EAAE,OAAO;SAC9B,CAAC;QACF,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7F,cAAc,CAAC,aAAa,GAAG,gBAAgB,CAC3C,cAAc,CAAC,MAAM,CAAC,WAAW,EACjC,mBAAmB,EACnB,YAAY,CACf,CAAC;QAEF,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;KAC1D;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { initPlayerTracker } from './handlers/playertrackerinit';
2
+ export { startPlayerTracker } from './handlers/playertrackerstart';
3
+ export { bindPlayerEvents } from './handlers/eventbinding';
4
+ export { logEvent } from './handlers/eventlogging';
@@ -0,0 +1,10 @@
1
+ /*
2
+ * This module exports the various handlers that are used to track player events.
3
+ * The playerTracker is based on the StreamTracker module that is part of NPO Tag by DIAZ.
4
+ * Read the full NPO Tag documentation here: https://npotag.npo-data.nl/
5
+ */
6
+ export { initPlayerTracker } from './handlers/playertrackerinit';
7
+ export { startPlayerTracker } from './handlers/playertrackerstart';
8
+ export { bindPlayerEvents } from './handlers/eventbinding';
9
+ export { logEvent } from './handlers/eventlogging';
10
+ //# sourceMappingURL=playertracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playertracker.js","sourceRoot":"","sources":["../../../../src/js/tracking/playertracker.ts"],"names":[],"mappings":"AAAA;;;;EAIE;AAEF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Button } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createAdButton(npoplayer: NpoPlayer): Button<{
4
+ cssClass: string;
5
+ text: string;
6
+ hidden: true;
7
+ }>;
@@ -0,0 +1,21 @@
1
+ /*
2
+ * This file contains the code for the 'Meer' button linking to the advertiser's website that appears when an ad is playing.
3
+ * The component is added to the uiComponents object of the player instance so it can be populated with the relevant ad URL.
4
+ */
5
+ import { Button } from 'bitmovin-player-ui';
6
+ /*
7
+ * @function createAdButton
8
+ * @param {NpoPlayer} npoplayer - The player instance
9
+ * @returns {Button} - The ad button
10
+ */
11
+ export function createAdButton(npoplayer) {
12
+ npoplayer.uiComponents.adbutton = undefined;
13
+ const adButton = new Button({
14
+ cssClass: 'ui-textbutton ui-sterbutton bmpui-ui-button',
15
+ text: 'Meer info',
16
+ hidden: true
17
+ });
18
+ npoplayer.uiComponents.adbutton = adButton;
19
+ return adButton;
20
+ }
21
+ //# sourceMappingURL=adbutton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adbutton.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/adbutton.ts"],"names":[],"mappings":"AAAA;;;EAGE;AAEF,OAAO,EAAE,MAAM,EAAC,MAAM,oBAAoB,CAAA;AAG1C;;;;EAIE;AACF,MAAM,UAAU,cAAc,CAAE,SAAoB;IAChD,SAAS,CAAC,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAA;IAC3C,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC;QACxB,QAAQ,EAAE,6CAA6C;QACvD,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,IAAI;KACf,CAAC,CAAA;IAEF,SAAS,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1C,OAAO,QAAQ,CAAA;AACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Label } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createAdLabel(npoplayer: NpoPlayer): Label<{
4
+ text: string;
5
+ cssClass: string;
6
+ hidden: true;
7
+ }>;
@@ -0,0 +1,17 @@
1
+ /*
2
+ * adlabel.ts
3
+ * This file contains the code for the adlabel component used to display to the user how many ads will be played when an adBreak occurs.
4
+ */
5
+ import { Label } from 'bitmovin-player-ui';
6
+ /*
7
+ * @function createAdLabel
8
+ * @param {NpoPlayer} npoplayer - The player instance
9
+ * @returns {Label} - The ad label
10
+ */
11
+ export function createAdLabel(npoplayer) {
12
+ npoplayer.uiComponents.adlabel = undefined;
13
+ const adLabel = new Label({ text: '', cssClass: 'adLabel', hidden: true });
14
+ npoplayer.uiComponents.adlabel = adLabel;
15
+ return adLabel;
16
+ }
17
+ //# sourceMappingURL=adlabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adlabel.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/adlabel.ts"],"names":[],"mappings":"AAAA;;;EAGE;AAEF,OAAO,EAAE,KAAK,EAAC,MAAM,oBAAoB,CAAA;AAGzC;;;;EAIE;AACF,MAAM,UAAU,aAAa,CAAE,SAAoB;IAC/C,SAAS,CAAC,YAAY,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1E,SAAS,CAAC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAA;IACxC,OAAO,OAAO,CAAA;AAClB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type PlayerAPI } from 'bitmovin-player';
2
+ import { Button, ControlBar } from 'bitmovin-player-ui';
3
+ import type NpoPlayer from '../../../npoplayer';
4
+ export declare function createMiddleButtons(player: PlayerAPI | null): ControlBar;
5
+ export declare function createRewindButton(player: PlayerAPI | null): Button<{
6
+ cssClass: string;
7
+ }>;
8
+ export declare function createForwardButton(player: PlayerAPI | null): Button<{
9
+ cssClass: string;
10
+ }>;
11
+ export declare function createPlayNextButton(player: PlayerAPI | null, npoplayer: NpoPlayer): Button<{
12
+ cssClass: string;
13
+ text: string;
14
+ hidden: false;
15
+ }>;
16
+ export declare function createskipIntroButton(player: PlayerAPI | null): Button<{
17
+ cssClass: string;
18
+ text: string;
19
+ hidden: true;
20
+ }>;
21
+ export declare function createGoBackLiveButton(player: PlayerAPI | null): Button<{
22
+ cssClass: string;
23
+ text: string;
24
+ hidden: true;
25
+ }>;
26
+ export declare function createWatchFromStartButton(player: PlayerAPI | null, npoplayer: NpoPlayer): Button<{
27
+ cssClass: string;
28
+ text: string;
29
+ hidden: true;
30
+ }>;
@@ -0,0 +1,89 @@
1
+ import { Button, PlaybackToggleButton, ControlBar } from 'bitmovin-player-ui';
2
+ import { rewind, forward } from '../handlers/timecontrolhandlers';
3
+ export function createMiddleButtons(player) {
4
+ const bigPlayToggleButton = new PlaybackToggleButton({
5
+ cssClass: 'ui-playbacktogglebutton'
6
+ });
7
+ const bigRewindButton = createRewindButton(player);
8
+ const bigForwardButton = createForwardButton(player);
9
+ return new ControlBar({
10
+ components: [bigRewindButton, bigPlayToggleButton, bigForwardButton],
11
+ cssClasses: ['controlbar-middle']
12
+ });
13
+ }
14
+ export function createRewindButton(player) {
15
+ const rewindButton = new Button({
16
+ cssClass: 'ui-rewindbutton bmpui-ui-button'
17
+ });
18
+ rewindButton.onClick.subscribe(() => {
19
+ rewind(player);
20
+ });
21
+ return rewindButton;
22
+ }
23
+ export function createForwardButton(player) {
24
+ const forwardButton = new Button({
25
+ cssClass: 'ui-forwardbutton bmpui-ui-button'
26
+ });
27
+ forwardButton.onClick.subscribe(() => {
28
+ forward(player);
29
+ });
30
+ return forwardButton;
31
+ }
32
+ export function createPlayNextButton(player, npoplayer) {
33
+ const playNextButton = new Button({
34
+ cssClass: 'ui-hugeplaynextbacktogglebutton ui-playNextButton bmpui-ui-button',
35
+ text: 'De volgende aflevering wordt zo afgespeeld...',
36
+ hidden: false
37
+ });
38
+ playNextButton.onClick.subscribe(() => {
39
+ if (player != null) {
40
+ npoplayer.doPlayNext();
41
+ }
42
+ });
43
+ return playNextButton;
44
+ }
45
+ export function createskipIntroButton(player) {
46
+ const skipIntroButton = new Button({
47
+ cssClass: 'ui-textbutton ui-skipintrobutton bmpui-ui-button bmpui-hidden',
48
+ text: 'Intro overslaan',
49
+ hidden: true
50
+ });
51
+ skipIntroButton.onClick.subscribe(() => {
52
+ if (player != null) {
53
+ // if (introDataAvailable) {
54
+ // TODO Check if metadata has intro data, this is currently not yet available in the API, so this button is merely scaffolding for now.
55
+ player.seek(96);
56
+ // }
57
+ }
58
+ });
59
+ return skipIntroButton;
60
+ }
61
+ export function createGoBackLiveButton(player) {
62
+ const goBackLiveButton = new Button({
63
+ cssClass: 'ui-textbutton ui-backtolivebutton bmpui-ui-button',
64
+ text: 'Terug naar live',
65
+ hidden: true
66
+ });
67
+ goBackLiveButton.onClick.subscribe(() => {
68
+ if (player != null && player.isLive()) {
69
+ player.timeShift(0);
70
+ }
71
+ });
72
+ return goBackLiveButton;
73
+ }
74
+ export function createWatchFromStartButton(player, npoplayer) {
75
+ const watchFromStartButton = new Button({
76
+ cssClass: 'ui-textbutton ui-watchfromstartbutton bmpui-ui-button',
77
+ text: 'Kijk vanaf het begin',
78
+ hidden: true
79
+ });
80
+ watchFromStartButton.onClick.subscribe(() => {
81
+ if ((player?.isLive()) ?? false)
82
+ npoplayer.watchFromStart();
83
+ if (npoplayer.uiComponents.watchFromStartButton)
84
+ npoplayer.uiComponents.watchFromStartButton.hide();
85
+ });
86
+ npoplayer.uiComponents.watchFromStartButton = watchFromStartButton;
87
+ return watchFromStartButton;
88
+ }
89
+ //# sourceMappingURL=buttons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/buttons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ControlBar, type SettingsPanel } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createControlBar(npoplayer: NpoPlayer, settingsPanel: SettingsPanel, forwardButton: any, rewindButton: any): ControlBar;