@npo/player 1.13.2 → 1.15.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 (126) hide show
  1. package/README.md +1 -1
  2. package/lib/js/ads/ster.d.ts +3 -3
  3. package/lib/js/ads/ster.js +114 -98
  4. package/lib/js/ads/ster.js.map +1 -1
  5. package/lib/js/ads/ster.test.js +0 -27
  6. package/lib/js/ads/ster.test.js.map +1 -1
  7. package/lib/js/checks/{safari.d.ts → apple.d.ts} +1 -0
  8. package/lib/js/checks/{safari.js → apple.js} +11 -1
  9. package/lib/js/checks/apple.js.map +1 -0
  10. package/lib/js/checks/apple.test.js +21 -0
  11. package/lib/js/checks/apple.test.js.map +1 -0
  12. package/lib/js/drm/drm.d.ts +2 -0
  13. package/lib/js/drm/drm.js +3 -0
  14. package/lib/js/drm/drm.js.map +1 -0
  15. package/lib/js/drm/handlers/decideprofile.d.ts +3 -0
  16. package/lib/js/drm/handlers/decideprofile.js +52 -0
  17. package/lib/js/drm/handlers/decideprofile.js.map +1 -0
  18. package/lib/js/drm/{verifydrm.d.ts → handlers/verifydrm.d.ts} +2 -2
  19. package/lib/js/drm/{verifydrm.js → handlers/verifydrm.js} +2 -2
  20. package/lib/js/drm/handlers/verifydrm.js.map +1 -0
  21. package/lib/js/drm/handlers/verifydrm.test.js.map +1 -0
  22. package/lib/js/playeractions/handlers/handleoffsets.js.map +1 -1
  23. package/lib/js/playeractions/handlers/mediasessionactions.d.ts +2 -0
  24. package/lib/js/playeractions/handlers/mediasessionactions.js +107 -0
  25. package/lib/js/playeractions/handlers/mediasessionactions.js.map +1 -0
  26. package/lib/js/playeractions/handlers/processplayerconfig.js +2 -2
  27. package/lib/js/playeractions/handlers/processplayerconfig.js.map +1 -1
  28. package/lib/js/playeractions/handlers/processsourceconfig.d.ts +3 -0
  29. package/lib/js/playeractions/handlers/processsourceconfig.js +158 -0
  30. package/lib/js/playeractions/handlers/processsourceconfig.js.map +1 -0
  31. package/lib/js/playeractions/playeractions.d.ts +1 -0
  32. package/lib/js/playeractions/playeractions.js +1 -0
  33. package/lib/js/playeractions/playeractions.js.map +1 -1
  34. package/lib/js/tracking/handlers/eventbinding.js +37 -30
  35. package/lib/js/tracking/handlers/eventbinding.js.map +1 -1
  36. package/lib/js/tracking/handlers/eventlogging.js +1 -1
  37. package/lib/js/tracking/handlers/eventlogging.js.map +1 -1
  38. package/lib/js/ui/components/audio/controlbar.d.ts +3 -0
  39. package/lib/js/ui/components/audio/controlbar.js +23 -0
  40. package/lib/js/ui/components/audio/controlbar.js.map +1 -0
  41. package/lib/js/ui/components/controlbar.js +3 -16
  42. package/lib/js/ui/components/controlbar.js.map +1 -1
  43. package/lib/js/ui/components/nativemobile/buttons.d.ts +3 -3
  44. package/lib/js/ui/components/nativemobile/buttons.js +65 -52
  45. package/lib/js/ui/components/nativemobile/buttons.js.map +1 -1
  46. package/lib/js/ui/components/nativemobile/controlbar.js +7 -14
  47. package/lib/js/ui/components/nativemobile/controlbar.js.map +1 -1
  48. package/lib/js/ui/components/nativemobile/topbar.js +7 -15
  49. package/lib/js/ui/components/nativemobile/topbar.js.map +1 -1
  50. package/lib/js/ui/components/seekbar.d.ts +6 -0
  51. package/lib/js/ui/components/seekbar.js +21 -0
  52. package/lib/js/ui/components/seekbar.js.map +1 -0
  53. package/lib/js/ui/components/settingspanel.js +23 -1
  54. package/lib/js/ui/components/settingspanel.js.map +1 -1
  55. package/lib/js/ui/components/shared/playnextscreen.js +1 -1
  56. package/lib/js/ui/components/shared/playnextscreen.js.map +1 -1
  57. package/lib/js/ui/nativemobileuicontainer.d.ts +1 -1
  58. package/lib/js/ui/nativemobileuicontainer.js +12 -3
  59. package/lib/js/ui/nativemobileuicontainer.js.map +1 -1
  60. package/lib/js/ui/nativemobileuifactory.js +5 -5
  61. package/lib/js/ui/nativemobileuifactory.js.map +1 -1
  62. package/lib/js/ui/uicontainer.d.ts +2 -1
  63. package/lib/js/ui/uicontainer.js +26 -8
  64. package/lib/js/ui/uicontainer.js.map +1 -1
  65. package/lib/js/utilities/utilities.js +13 -2
  66. package/lib/js/utilities/utilities.js.map +1 -1
  67. package/lib/npoplayer.d.ts +6 -7
  68. package/lib/npoplayer.js +21 -241
  69. package/lib/npoplayer.js.map +1 -1
  70. package/lib/package.json +3 -3
  71. package/lib/src/js/ads/ster.d.ts +3 -3
  72. package/lib/src/js/checks/{safari.d.ts → apple.d.ts} +1 -0
  73. package/lib/src/js/drm/drm.d.ts +2 -0
  74. package/lib/src/js/drm/handlers/decideprofile.d.ts +3 -0
  75. package/lib/src/js/drm/{verifydrm.d.ts → handlers/verifydrm.d.ts} +2 -2
  76. package/lib/src/js/playeractions/handlers/mediasessionactions.d.ts +2 -0
  77. package/lib/src/js/playeractions/handlers/processsourceconfig.d.ts +3 -0
  78. package/lib/src/js/playeractions/playeractions.d.ts +1 -0
  79. package/lib/src/js/ui/components/audio/controlbar.d.ts +3 -0
  80. package/lib/src/js/ui/components/nativemobile/buttons.d.ts +3 -3
  81. package/lib/src/js/ui/components/seekbar.d.ts +6 -0
  82. package/lib/src/js/ui/nativemobileuicontainer.d.ts +1 -1
  83. package/lib/src/js/ui/uicontainer.d.ts +2 -1
  84. package/lib/src/npoplayer.d.ts +6 -7
  85. package/lib/src/types/interfaces.d.ts +6 -0
  86. package/lib/types/interfaces.d.ts +6 -0
  87. package/lib/types/interfaces.js +6 -0
  88. package/lib/types/interfaces.js.map +1 -1
  89. package/package.json +3 -3
  90. package/src/scss/components/_audio.scss +4 -0
  91. package/src/scss/components/_buffering.scss +37 -29
  92. package/src/scss/components/_hugeplaybacktogglebutton.scss +1 -1
  93. package/src/scss/components/_icons.scss +1 -1
  94. package/src/scss/components/_replay.scss +0 -5
  95. package/src/scss/components/_seekbar.scss +9 -5
  96. package/src/scss/components/_settingspanel.scss +6 -2
  97. package/src/scss/components/_subtitles.scss +45 -27
  98. package/src/scss/components/_volumeslider.scss +1 -0
  99. package/src/scss/components/audio/_bottombar.scss +43 -0
  100. package/src/scss/components/audio/_buffering.scss +8 -0
  101. package/src/scss/components/audio/_errors.scss +13 -0
  102. package/src/scss/components/audio/_metadata.scss +38 -0
  103. package/src/scss/components/audio/_playbutton.scss +66 -0
  104. package/src/scss/components/audio/_poster.scss +19 -0
  105. package/src/scss/components/audio/_replay.scss +28 -0
  106. package/src/scss/components/audio/_seekbar.scss +26 -0
  107. package/src/scss/components/audio/_topbar.scss +35 -0
  108. package/src/scss/components/audio/_vars.scss +5 -0
  109. package/src/scss/components/audio/_volumeslider.scss +35 -0
  110. package/src/scss/npoplayer.css +104 -45
  111. package/src/scss/npoplayer.scss +10 -6
  112. package/src/scss/variants/_player-audio.scss +55 -0
  113. package/src/scss/variants/_player-base.scss +4 -0
  114. package/src/scss/variants/_player-small.scss +4 -0
  115. package/src/scss/vars/_audio.scss +5 -0
  116. package/src/scss/vars/_colors.scss +4 -0
  117. package/lib/js/checks/safari.js.map +0 -1
  118. package/lib/js/checks/safari.test.js +0 -21
  119. package/lib/js/checks/safari.test.js.map +0 -1
  120. package/lib/js/drm/verifydrm.js.map +0 -1
  121. package/lib/js/drm/verifydrm.test.js.map +0 -1
  122. /package/lib/js/checks/{safari.test.d.ts → apple.test.d.ts} +0 -0
  123. /package/lib/js/drm/{verifydrm.test.d.ts → handlers/verifydrm.test.d.ts} +0 -0
  124. /package/lib/js/drm/{verifydrm.test.js → handlers/verifydrm.test.js} +0 -0
  125. /package/lib/src/js/checks/{safari.test.d.ts → apple.test.d.ts} +0 -0
  126. /package/lib/src/js/drm/{verifydrm.test.d.ts → handlers/verifydrm.test.d.ts} +0 -0
package/README.md CHANGED
@@ -8,7 +8,7 @@ The video player library for NPO (Nederlandse Publieke Omroep) and other broadca
8
8
  Extensive and up-to-date documentation is available at https://docs.npoplayer.nl
9
9
 
10
10
  # Changelog
11
- Current version: v1.11.3
11
+ Current version: v1.15.0
12
12
  The changelog is available at https://docs.npoplayer.nl/implementation/web/changelog/
13
13
 
14
14
  ## License
@@ -1,4 +1,4 @@
1
- import { PlayerAPI } from "bitmovin-player";
2
- import NpoPlayer from "npoplayer";
3
- import { StreamObject } from "types/interfaces";
1
+ import { PlayerAPI } from 'bitmovin-player';
2
+ import NpoPlayer from 'npoplayer';
3
+ import { StreamObject } from '../../types/interfaces';
4
4
  export declare function handlePreRolls(playerapi: PlayerAPI, streamObject: StreamObject, npoplayer: NpoPlayer): Promise<void>;
@@ -1,107 +1,123 @@
1
- import { AdTagType, PlayerEvent } from "bitmovin-player";
1
+ import { AdTagType, PlayerEvent } from 'bitmovin-player';
2
+ import { NpoPlayerUIVariants } from '../../types/interfaces';
2
3
  export async function handlePreRolls(playerapi, streamObject, npoplayer) {
3
- if (streamObject.metadata.hasPreroll == "false" || streamObject.assets.preroll == null)
4
- return;
5
- let prerollUrl = streamObject.assets.preroll;
6
- let adIndex = 0;
7
- let totalAds = 0;
8
- let currentClickListener = null;
9
- let adUiSet = false;
10
- async function handleSourceLoaded() {
11
- const advertConfig = {
12
- tag: {
13
- url: prerollUrl,
14
- type: AdTagType.VAST
15
- },
16
- id: 'Ad',
17
- position: 'pre',
18
- };
19
- await playerapi.ads.schedule(advertConfig);
20
- }
21
- playerapi.on(PlayerEvent.SourceLoaded, handleSourceLoaded);
22
- async function handlePlay() {
23
- attemptSetAdUi();
24
- }
25
- playerapi.on(PlayerEvent.Play, handlePlay);
26
- function setAdUi() {
27
- let activeAdBreak = playerapi.ads.getActiveAdBreak();
28
- if (!activeAdBreak || !activeAdBreak.ads)
29
- return false;
30
- npoplayer.uiManager?.release();
31
- npoplayer.createUIManager(playerapi, 'ad');
32
- adUiSet = true;
33
- let currentAd = activeAdBreak.ads[0];
34
- adIndex = 1;
35
- totalAds = activeAdBreak.ads.length;
36
- currentClickListener = () => {
37
- window.open(currentAd.clickThroughUrl, '_blank');
38
- playerapi.pause();
39
- };
40
- npoplayer.uiComponents.adbutton?.show();
41
- npoplayer.uiComponents.adbutton?.onClick.subscribe(currentClickListener);
42
- npoplayer.uiComponents.adlabel?.setText(`Advertentie 1 van ${activeAdBreak.ads.length}`);
43
- return true;
44
- }
45
- function attemptSetAdUi(attemptsLeft = 10) {
46
- if (attemptsLeft <= 0)
4
+ return new Promise((resolve) => {
5
+ if (streamObject.metadata.hasPreroll == 'false' || streamObject.assets.preroll == null) {
6
+ resolve();
47
7
  return;
48
- const isUiSet = setAdUi();
49
- if (!isUiSet) {
50
- setTimeout(() => {
51
- attemptSetAdUi(attemptsLeft - 1);
52
- }, 200);
53
8
  }
54
- }
55
- function handleAdBreakStarted() {
56
- let activeAdBreak = playerapi.ads.getActiveAdBreak();
57
- if (!activeAdBreak || !activeAdBreak.ads) {
58
- console.error('No active ad break data found');
59
- return;
9
+ let prerollUrl = streamObject.assets.preroll;
10
+ let adIndex = 0;
11
+ let totalAds = 0;
12
+ let currentClickListener = null;
13
+ let adUiSet = false;
14
+ async function handleSourceLoaded() {
15
+ const advertConfig = {
16
+ tag: {
17
+ url: String(prerollUrl),
18
+ type: AdTagType.VAST
19
+ },
20
+ id: 'Ad',
21
+ position: 'pre',
22
+ };
23
+ await playerapi.ads.schedule(advertConfig);
60
24
  }
61
- if (!adUiSet)
62
- setAdUi();
63
- npoplayer.adBreakActive = true;
64
- }
65
- playerapi.on(PlayerEvent.AdBreakStarted, handleAdBreakStarted);
66
- function handleAdFinished() {
67
- let activeAdBreak = playerapi.ads.getActiveAdBreak();
68
- if (!activeAdBreak || !activeAdBreak.ads) {
69
- console.error('No active ad break data found');
70
- return;
25
+ playerapi.on(PlayerEvent.SourceLoaded, handleSourceLoaded);
26
+ async function handlePlay() {
27
+ attemptSetAdUi();
71
28
  }
72
- if (adIndex >= totalAds) {
73
- handleAdBreakFinished();
74
- return;
29
+ playerapi.on(PlayerEvent.Play, handlePlay);
30
+ function setAdUi() {
31
+ let activeAdBreak = playerapi.ads.getActiveAdBreak();
32
+ if (!activeAdBreak || !activeAdBreak.ads)
33
+ return false;
34
+ npoplayer.uiManager?.release();
35
+ npoplayer.createUIManager(playerapi, NpoPlayerUIVariants.AD);
36
+ adUiSet = true;
37
+ let adButton = npoplayer.uiComponents.adbutton;
38
+ let currentAd = activeAdBreak.ads[0];
39
+ adIndex = 1;
40
+ totalAds = activeAdBreak.ads.length;
41
+ adButton?.show();
42
+ adClickHandler(currentAd, adButton);
43
+ npoplayer.uiComponents.adlabel?.setText(`Advertentie 1 van ${activeAdBreak.ads.length}`);
44
+ return true;
45
+ }
46
+ function attemptSetAdUi(attemptsLeft = 10) {
47
+ if (attemptsLeft <= 0)
48
+ return;
49
+ const isUiSet = setAdUi();
50
+ if (!isUiSet) {
51
+ setTimeout(() => {
52
+ attemptSetAdUi(attemptsLeft - 1);
53
+ }, 200);
54
+ }
55
+ }
56
+ function handleAdStarted() {
57
+ let activeAdBreak = playerapi.ads.getActiveAdBreak();
58
+ if (!activeAdBreak || !activeAdBreak.ads) {
59
+ console.error('No active ad break data found');
60
+ return;
61
+ }
62
+ if (!adUiSet)
63
+ setAdUi();
64
+ npoplayer.adBreakActive = true;
65
+ }
66
+ playerapi.on(PlayerEvent.AdStarted, handleAdStarted);
67
+ function adClickHandler(ad, button) {
68
+ let clickThroughCallback;
69
+ if (currentClickListener)
70
+ button?.onClick.unsubscribe(currentClickListener);
71
+ clickThroughCallback = ad.clickThroughUrlOpened;
72
+ currentClickListener = () => {
73
+ try {
74
+ window.open(ad.clickThroughUrl, '_blank');
75
+ playerapi.pause();
76
+ if (clickThroughCallback)
77
+ clickThroughCallback();
78
+ }
79
+ catch (error) {
80
+ console.log(error);
81
+ }
82
+ };
83
+ button.onClick.subscribe(currentClickListener);
84
+ }
85
+ function handleAdFinished() {
86
+ let activeAdBreak = playerapi.ads.getActiveAdBreak();
87
+ if (!activeAdBreak || !activeAdBreak.ads) {
88
+ console.error('No active ad break data found');
89
+ return;
90
+ }
91
+ if (adIndex >= totalAds) {
92
+ handleAdBreakFinished();
93
+ return;
94
+ }
95
+ let adButton = npoplayer.uiComponents.adbutton;
96
+ let nextAd = activeAdBreak.ads[adIndex];
97
+ adIndex += 1;
98
+ adButton?.show();
99
+ adClickHandler(nextAd, adButton);
100
+ npoplayer.uiComponents.adlabel?.setText(`Advertentie ${adIndex} van ${activeAdBreak.ads.length}`);
101
+ }
102
+ playerapi.on(PlayerEvent.AdFinished, handleAdFinished);
103
+ function handleAdBreakFinished() {
104
+ npoplayer.adBreakActive = false;
105
+ npoplayer.uiComponents.adbutton?.hide();
106
+ npoplayer.uiComponents.adlabel?.hide();
107
+ npoplayer.uiManager?.release();
108
+ npoplayer.createUIManager(playerapi, NpoPlayerUIVariants.DEFAULT);
109
+ adUiSet = false;
110
+ removeListeners();
75
111
  }
76
- let nextAd = activeAdBreak.ads[adIndex];
77
- adIndex++;
78
- if (currentClickListener) {
79
- npoplayer.uiComponents.adbutton?.onClick.unsubscribe(currentClickListener);
112
+ playerapi.on(PlayerEvent.AdBreakFinished, handleAdBreakFinished);
113
+ function removeListeners() {
114
+ playerapi.off(PlayerEvent.SourceLoaded, handleSourceLoaded);
115
+ playerapi.off(PlayerEvent.Play, handlePlay);
116
+ playerapi.off(PlayerEvent.AdStarted, handleAdStarted);
117
+ playerapi.off(PlayerEvent.AdFinished, handleAdFinished);
118
+ playerapi.off(PlayerEvent.AdBreakFinished, handleAdBreakFinished);
119
+ resolve();
80
120
  }
81
- currentClickListener = () => {
82
- window.open(nextAd.clickThroughUrl, '_blank');
83
- playerapi.pause();
84
- };
85
- npoplayer.uiComponents.adbutton?.onClick.subscribe(currentClickListener);
86
- npoplayer.uiComponents.adlabel?.setText(`Advertentie ${adIndex} van ${activeAdBreak.ads.length}`);
87
- }
88
- playerapi.on(PlayerEvent.AdFinished, handleAdFinished);
89
- function handleAdBreakFinished() {
90
- npoplayer.adBreakActive = false;
91
- npoplayer.uiComponents.adbutton?.hide();
92
- npoplayer.uiComponents.adlabel?.hide();
93
- npoplayer.uiManager?.release();
94
- npoplayer.createUIManager(playerapi, 'default');
95
- adUiSet = false;
96
- removeListeners();
97
- }
98
- playerapi.on(PlayerEvent.AdBreakFinished, handleAdBreakFinished);
99
- function removeListeners() {
100
- playerapi.off(PlayerEvent.SourceLoaded, handleSourceLoaded);
101
- playerapi.off(PlayerEvent.Play, handlePlay);
102
- playerapi.off(PlayerEvent.AdBreakStarted, handleAdBreakStarted);
103
- playerapi.off(PlayerEvent.AdFinished, handleAdFinished);
104
- playerapi.off(PlayerEvent.AdBreakFinished, handleAdBreakFinished);
105
- }
121
+ });
106
122
  }
107
123
  //# sourceMappingURL=ster.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ster.js","sourceRoot":"","sources":["../../../../src/js/ads/ster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ster.js","sourceRoot":"","sources":["../../../../src/js/ads/ster.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { handlePreRolls } from './ster';
2
- import { PlayerEvent } from "bitmovin-player";
3
2
  jest.mock("bitmovin-player");
4
3
  jest.mock("../../npoplayer");
5
4
  describe("handlePreRolls", () => {
@@ -48,32 +47,6 @@ describe("handlePreRolls", () => {
48
47
  await handlePreRolls(mockPlayerAPI, streamObject, mockNpoPlayer);
49
48
  expect(mockPlayerAPI.ads.schedule).not.toHaveBeenCalled();
50
49
  });
51
- it("should schedule ads on SourceLoaded when hasPreroll is true", async () => {
52
- const streamObject = {
53
- metadata: {
54
- hasPreroll: "true"
55
- },
56
- assets: {
57
- preroll: "sample_url"
58
- }
59
- };
60
- await handlePreRolls(mockPlayerAPI, streamObject, mockNpoPlayer);
61
- mockPlayerAPI.on.mock.calls.forEach(call => {
62
- if (call[0] === PlayerEvent.SourceLoaded) {
63
- const sourceLoadedCallback = call[1];
64
- const mockEvent = {};
65
- sourceLoadedCallback(mockEvent);
66
- }
67
- });
68
- expect(mockPlayerAPI.ads.schedule).toHaveBeenCalledWith({
69
- tag: {
70
- url: "sample_url",
71
- type: "vast"
72
- },
73
- id: 'Ad',
74
- position: 'pre',
75
- });
76
- });
77
50
  it("should not schedule ads if preroll URL is missing", async () => {
78
51
  const streamObject = {
79
52
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"ster.test.js","sourceRoot":"","sources":["../../../../src/js/ads/ster.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ster.test.js","sourceRoot":"","sources":["../../../../src/js/ads/ster.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAKvC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAE5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,IAAI,aAAqC,CAAA;IACzC,IAAI,aAAqC,CAAA;IAEzC,UAAU,CAAC,GAAG,EAAE;QACZ,aAAa,GAAG;YACZ,GAAG,EAAE;gBACD,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAChD,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;aAC9B;YACD,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACb,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;SACV,CAAA;QAER,aAAa,GAAG;YACZ,SAAS,EAAE;gBACP,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;aACrB;YACD,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;YAC1B,YAAY,EAAE;gBACV,QAAQ,EAAE;oBACN,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;oBACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;oBACf,OAAO,EAAE;wBACL,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;wBACpB,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;qBACzB;iBACJ;gBACD,OAAO,EAAE;oBACL,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;oBAClB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;iBAClB;aACJ;YACD,aAAa,EAAE,KAAK;SAChB,CAAA;IACZ,CAAC,CAAC,CAAA;IAOF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,YAAY,GAAqB;YACnC,QAAQ,EAAE;gBACN,UAAU,EAAE,OAAO;aACtB;YACD,MAAM,EAAE;gBACJ,OAAO,EAAE,YAAY;aACxB;SACJ,CAAA;QAED,MAAM,cAAc,CAAC,aAAa,EAAE,YAAmB,EAAE,aAAa,CAAC,CAAA;QACvE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC7D,CAAC,CAAC,CAAA;IAiCF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,YAAY,GAAqB;YACnC,QAAQ,EAAE;gBACN,UAAU,EAAE,MAAM;aACrB;YACD,MAAM,EAAE,EAAE;SACb,CAAA;QAED,MAAM,cAAc,CAAC,aAAa,EAAE,YAAmB,EAAE,aAAa,CAAC,CAAA;QACvE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,aAAa,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1 +1,2 @@
1
+ export declare function isFairPlayDrmSupported(): boolean;
1
2
  export declare function isSafari(isFairPlayDrmSupported: boolean): boolean;
@@ -1,3 +1,13 @@
1
+ export function isFairPlayDrmSupported() {
2
+ let isSupported = false;
3
+ ['com.apple.fps.1_0', 'com.apple.fps.2_0'].forEach(ks => {
4
+ if (typeof window.WebKitMediaKeys === 'function' &&
5
+ Boolean(window.WebKitMediaKeys?.isTypeSupported(ks, 'video/mp4'))) {
6
+ isSupported = true;
7
+ }
8
+ });
9
+ return isSupported;
10
+ }
1
11
  export function isSafari(isFairPlayDrmSupported) {
2
12
  const isSafariUserAgent = navigator.userAgent.includes('Safari') &&
3
13
  !navigator.userAgent.includes('Chrome') &&
@@ -7,4 +17,4 @@ export function isSafari(isFairPlayDrmSupported) {
7
17
  !navigator.userAgent.includes('Android');
8
18
  return isSafariUserAgent || isFairPlayDrmSupported;
9
19
  }
10
- //# sourceMappingURL=safari.js.map
20
+ //# sourceMappingURL=apple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple.js","sourceRoot":"","sources":["../../../../src/js/checks/apple.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,sBAAsB;IAClC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACpD,IACI,OAAQ,MAAc,CAAC,eAAe,KAAK,UAAU;YACrD,OAAO,CACF,MAAc,CAAC,eAAe,EAAE,eAAe,CAC5C,EAAE,EACF,WAAW,CACd,CACJ,EACH;YACE,WAAW,GAAG,IAAI,CAAA;SACrB;IACL,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAE,sBAA+B;IACrD,MAAM,iBAAiB,GACf,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAEhD,OAAO,iBAAiB,IAAI,sBAAsB,CAAA;AACtD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { isSafari } from './apple';
2
+ describe('Test Safari check', () => {
3
+ it('should return true for Safari', () => {
4
+ jest.spyOn(global.navigator, 'userAgent', 'get').mockReturnValue('Safari');
5
+ const isFairPlayDrmSupported = false;
6
+ expect(isSafari(isFairPlayDrmSupported)).toBeTruthy();
7
+ });
8
+ it('should return true for isFairPlayDrmSupported', () => {
9
+ jest.spyOn(global.navigator, 'userAgent', 'get').mockReturnValue('Chrome');
10
+ const isFairPlayDrmSupported = true;
11
+ expect(isSafari(isFairPlayDrmSupported)).toBeTruthy();
12
+ });
13
+ it('should return false for any non-Safari userAgents', () => {
14
+ jest
15
+ .spyOn(global.navigator, 'userAgent', 'get')
16
+ .mockReturnValue('Safari Chrome IEMobile Edge Chromium Android');
17
+ const isFairPlayDrmSupported = false;
18
+ expect(isSafari(isFairPlayDrmSupported)).toBeFalsy();
19
+ });
20
+ });
21
+ //# sourceMappingURL=apple.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple.test.js","sourceRoot":"","sources":["../../../../src/js/checks/apple.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE1D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAE1E,MAAM,sBAAsB,GAAG,KAAK,CAAA;QAEpC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAE1E,MAAM,sBAAsB,GAAG,IAAI,CAAA;QAEnC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,IAAI;aACC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC;aAC3C,eAAe,CAAC,8CAA8C,CAAC,CAAA;QAEpE,MAAM,sBAAsB,GAAG,KAAK,CAAA;QAEpC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { verifyDRM } from './handlers/verifydrm';
2
+ export { decideProfile } from './handlers/decideprofile';
@@ -0,0 +1,3 @@
1
+ export { verifyDRM } from './handlers/verifydrm';
2
+ export { decideProfile } from './handlers/decideprofile';
3
+ //# sourceMappingURL=drm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drm.js","sourceRoot":"","sources":["../../../../src/js/drm/drm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { PlayerAPI } from "bitmovin-player";
2
+ import { type Profile } from '../../../types/interfaces';
3
+ export declare function decideProfile(player: PlayerAPI | null, preferredDRM?: string): Promise<Profile>;
@@ -0,0 +1,52 @@
1
+ export async function decideProfile(player, preferredDRM = '') {
2
+ let bestWithDRM = '';
3
+ let bestWithoutDRM = '';
4
+ let bestDRM = '';
5
+ let supportedTech;
6
+ let supportedDRM;
7
+ if (player == null) {
8
+ console.error('No player detected');
9
+ return { profileName: '', drm: '' };
10
+ }
11
+ else {
12
+ supportedTech = player.getSupportedTech();
13
+ supportedDRM = await player.getSupportedDRM();
14
+ }
15
+ supportedTech.forEach(function (tech) {
16
+ if (bestWithoutDRM === '')
17
+ bestWithoutDRM = tech.streaming;
18
+ if (bestWithDRM !== '')
19
+ return;
20
+ if (tech.streaming === 'dash') {
21
+ supportedDRM.forEach(function (drm) {
22
+ if (bestDRM !== '' && (preferredDRM === '' || preferredDRM.length > 0)) {
23
+ return;
24
+ }
25
+ if (['com.widevine.alpha'].includes(drm)) {
26
+ bestDRM = 'widevine';
27
+ }
28
+ if (['com.microsoft.playready', 'com.microsoft.playready.recommendation'].includes(drm)) {
29
+ bestDRM = 'playready';
30
+ }
31
+ });
32
+ if (bestDRM !== '')
33
+ bestWithDRM = 'dash';
34
+ }
35
+ if (tech.streaming === 'hls') {
36
+ if (bestDRM !== '' && (preferredDRM === '' || bestDRM === preferredDRM)) {
37
+ return;
38
+ }
39
+ supportedDRM.forEach(function (drm) {
40
+ if (['com.apple.fps.1_0', 'com.apple.fps.2_0'].includes(drm)) {
41
+ bestDRM = 'fairplay';
42
+ }
43
+ });
44
+ if (bestDRM !== '')
45
+ bestWithDRM = 'hls';
46
+ }
47
+ });
48
+ if (bestWithDRM !== '')
49
+ return { profileName: bestWithDRM, drm: bestDRM };
50
+ return { profileName: bestWithoutDRM, drm: bestDRM };
51
+ }
52
+ //# sourceMappingURL=decideprofile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decideprofile.js","sourceRoot":"","sources":["../../../../../src/js/drm/handlers/decideprofile.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,MAAwB,EACxB,eAAuB,EAAE;IAEzB,IAAI,WAAW,GAAW,EAAE,CAAA;IAC5B,IAAI,cAAc,GAAW,EAAE,CAAA;IAC/B,IAAI,OAAO,GAAW,EAAE,CAAA;IACxB,IAAI,aAA2B,CAAA;IAC/B,IAAI,YAAsB,CAAA;IAE1B,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACnC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;KACtC;SAAM;QACH,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;QACzC,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAA;KAChD;IAED,aAAa,CAAC,OAAO,CAAC,UAAU,IAAI;QAChC,IAAI,cAAc,KAAK,EAAE;YAAE,cAAc,GAAG,IAAI,CAAC,SAAS,CAAA;QAC1D,IAAI,WAAW,KAAK,EAAE;YAAE,OAAM;QAE9B,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;YAC3B,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG;gBAC9B,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,YAAY,KAAK,EAAE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBACpE,OAAM;iBACT;gBACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACtC,OAAO,GAAG,UAAU,CAAA;iBACvB;gBACD,IACI,CAAC,yBAAyB,EAAE,wCAAwC,CAAC,CAAC,QAAQ,CAC1E,GAAG,CACN,EACH;oBACE,OAAO,GAAG,WAAW,CAAA;iBACxB;YACL,CAAC,CAAC,CAAA;YACF,IAAI,OAAO,KAAK,EAAE;gBAAE,WAAW,GAAG,MAAM,CAAA;SAC3C;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC1B,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,YAAY,KAAK,EAAE,IAAI,OAAO,KAAK,YAAY,CAAC,EAAE;gBACrE,OAAM;aACT;YACD,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG;gBAC9B,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC1D,OAAO,GAAG,UAAU,CAAA;iBACvB;YACL,CAAC,CAAC,CAAA;YACF,IAAI,OAAO,KAAK,EAAE;gBAAE,WAAW,GAAG,KAAK,CAAA;SAC1C;IACL,CAAC,CAAC,CAAA;IAEF,IAAI,WAAW,KAAK,EAAE;QAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;IACzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;AACxD,CAAC"}
@@ -1,4 +1,4 @@
1
- import type NpoPlayer from '../../npoplayer';
2
- import { type ApiPayload } from '../../types/interfaces';
1
+ import type NpoPlayer from '../../../npoplayer';
2
+ import { type ApiPayload } from '../../../types/interfaces';
3
3
  import type { PlayerAPI } from 'bitmovin-player';
4
4
  export declare function verifyDRM(npoplayer: NpoPlayer, player: PlayerAPI, payload: ApiPayload): Promise<void>;
@@ -1,5 +1,5 @@
1
- import { jwtToBase64, base64ToObject } from '../utilities/utilities';
2
- import { getStreamObject } from '../api/getstreamobject';
1
+ import { jwtToBase64, base64ToObject } from '../../utilities/utilities';
2
+ import { getStreamObject } from '../../api/getstreamobject';
3
3
  export async function verifyDRM(npoplayer, player, payload) {
4
4
  if (npoplayer.streamObject.stream.drmToken != null) {
5
5
  const drmBase64 = jwtToBase64(npoplayer.streamObject.stream.drmToken);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifydrm.js","sourceRoot":"","sources":["../../../../../src/js/drm/handlers/verifydrm.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAK3D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAE,SAAoB,EAAE,MAAiB,EAAE,OAAmB;IACzF,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;QAChD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrE,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,CAAA;QACtD,MAAM,WAAW,GAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAEnD,IAAI,gBAAgB,IAAI,WAAW,EAAE;YACjC,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;SAC3C;aAAM;YAEH,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;YAEtF,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACpE,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAA;YAGtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CACjC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CACzC,CAAA;YACD,kBAAkB,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAA;YAEhD,SAAS,CAAC,YAAY,GAAG,kBAAkB,CAAA;YAC3C,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;SAC3C;KACJ;SAAM;QACH,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;KAC3C;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifydrm.test.js","sourceRoot":"","sources":["../../../../../src/js/drm/handlers/verifydrm.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;AAEtB,MAAM,SAAS,GAAG;IACd,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;CACvC,CAAA;AAEd,MAAM,MAAM,GAAG,EAAE,IAAI,EAA0B,CAAA;AAE/C,MAAM,OAAO,GAAe;IACxB,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;CACzB,CAAA;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAE3C,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleoffsets.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/handleoffsets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAA;AAY7D,MAAM,UAAU,iBAAiB,CAAE,MAAiB,EAAE,MAAe;IACjE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;SACvF;QACD,OAAM;KACT;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACN,CAAC;AAUD,MAAM,UAAU,mBAAmB,CAAE,MAAwB,EAAE,SAAkB;IAC7E,IAAI,MAAM,IAAI,IAAI;QAAE,OAAM;IAC1B,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;SACxF;QACD,OAAM;KACT;IACD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AAC/B,CAAC;AAYD,MAAM,UAAU,qBAAqB,CAAE,SAAoB,EAAE,MAAwB,EAAE,OAAsB;IACzG,IAAI,MAAM,IAAI,IAAI;QAAE,OAAM;IAC1B,IAAI,SAAS,CAAC,YAAY,CAAC,oBAAoB,IAAI,IAAI;QAAE,OAAM;IAC/D,IAAI,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE;QAClC,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;QAClD,OAAM;KACT;IAGD,SAAS,CAAC,aAAa,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;IAEjE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAG;QACjD,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;KACrD;SAAM;QACH,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;KACrD;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE;QAC5F,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;QAClD,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KACvD;AACL,CAAC"}
1
+ {"version":3,"file":"handleoffsets.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/handleoffsets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAA;AAY7D,MAAM,UAAU,iBAAiB,CAAE,MAAiB,EAAE,MAAe;IACjE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;SACvF;QACD,OAAM;KACT;IACD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACN,CAAC;AAUD,MAAM,UAAU,mBAAmB,CAAE,MAAwB,EAAE,SAAkB;IAC7E,IAAI,MAAM,IAAI,IAAI;QAAE,OAAM;IAC1B,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;SACxF;QACD,OAAM;KACT;IACD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AAC/B,CAAC;AAWD,MAAM,UAAU,qBAAqB,CAAE,SAAoB,EAAE,MAAwB,EAAE,OAAsB;IACzG,IAAI,MAAM,IAAI,IAAI;QAAE,OAAM;IAC1B,IAAI,SAAS,CAAC,YAAY,CAAC,oBAAoB,IAAI,IAAI;QAAE,OAAM;IAC/D,IAAI,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE;QAClC,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;QAClD,OAAM;KACT;IAGD,SAAS,CAAC,aAAa,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;IAEjE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAG;QACjD,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;KACrD;SAAM;QACH,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;KACrD;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE;QAC5F,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;QAClD,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KACvD;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { PlayerAPI, SourceConfig } from "bitmovin-player";
2
+ export declare function setupMediaSessionActionHandlers(player: PlayerAPI, sourceConfig: SourceConfig, _streamObject: any): void;
@@ -0,0 +1,107 @@
1
+ import { PlayerEvent } from "bitmovin-player";
2
+ export function setupMediaSessionActionHandlers(player, sourceConfig, _streamObject) {
3
+ player.on(PlayerEvent.Playing, () => {
4
+ if (!('mediaSession' in navigator)) {
5
+ return;
6
+ }
7
+ setMediaSessionMetadata();
8
+ setupMediaSessionActionHandlers();
9
+ updatePositionState();
10
+ });
11
+ player.on(PlayerEvent.Paused, () => {
12
+ if (!('mediaSession' in navigator)) {
13
+ return;
14
+ }
15
+ navigator.mediaSession.playbackState = 'paused';
16
+ });
17
+ player.on(PlayerEvent.Play, () => {
18
+ if (!('mediaSession' in navigator)) {
19
+ return;
20
+ }
21
+ navigator.mediaSession.playbackState = 'playing';
22
+ });
23
+ player.on(PlayerEvent.SourceUnloaded, () => {
24
+ if (!('mediaSession' in navigator)) {
25
+ return;
26
+ }
27
+ navigator.mediaSession.setPositionState(undefined);
28
+ });
29
+ player.on(PlayerEvent.Destroy, () => {
30
+ if (!('mediaSession' in navigator)) {
31
+ return;
32
+ }
33
+ navigator.mediaSession.setPositionState(undefined);
34
+ });
35
+ player.on(PlayerEvent.PlaybackSpeedChanged, () => {
36
+ updatePositionState();
37
+ });
38
+ function setMediaSessionMetadata() {
39
+ const metadata = {
40
+ title: sourceConfig.title,
41
+ artist: _streamObject.metadata.broadcaster || '',
42
+ };
43
+ if (sourceConfig.poster || _streamObject.metadata.poster) {
44
+ metadata.artwork = [
45
+ {
46
+ src: sourceConfig.poster || _streamObject.metadata.poster,
47
+ },
48
+ ];
49
+ }
50
+ navigator.mediaSession.metadata = new MediaMetadata(metadata);
51
+ }
52
+ function setupMediaSessionActionHandlers() {
53
+ const defaultSkipTime = 10;
54
+ const actionHandlers = [
55
+ {
56
+ action: 'seekbackward',
57
+ handler: (details) => {
58
+ const skipTime = details.seekOffset || defaultSkipTime;
59
+ player.seek(Math.max(player.getCurrentTime() - skipTime, 0));
60
+ updatePositionState();
61
+ },
62
+ }, {
63
+ action: 'seekforward',
64
+ handler: (details) => {
65
+ const skipTime = details.seekOffset || defaultSkipTime;
66
+ player.seek(Math.min(player.getCurrentTime() + skipTime, player.getDuration()));
67
+ updatePositionState();
68
+ },
69
+ }, {
70
+ action: 'seekto',
71
+ handler: (details) => {
72
+ if (details.seekTime) {
73
+ player.seek(details.seekTime);
74
+ }
75
+ updatePositionState();
76
+ },
77
+ }, {
78
+ action: 'play',
79
+ handler: () => player.play(),
80
+ }, {
81
+ action: 'pause',
82
+ handler: () => player.pause(),
83
+ }, {
84
+ action: 'stop',
85
+ handler: () => player.unload()
86
+ }
87
+ ];
88
+ for (const { action, handler } of actionHandlers) {
89
+ try {
90
+ navigator.mediaSession.setActionHandler(action, handler);
91
+ }
92
+ catch (error) {
93
+ console.warn(`The media session action '${action}' is not supported yet.`, error);
94
+ }
95
+ }
96
+ }
97
+ function updatePositionState() {
98
+ if ('setPositionState' in navigator.mediaSession) {
99
+ navigator.mediaSession.setPositionState({
100
+ duration: player.getDuration(),
101
+ playbackRate: player.getPlaybackSpeed(),
102
+ position: player.getCurrentTime(),
103
+ });
104
+ }
105
+ }
106
+ }
107
+ //# sourceMappingURL=mediasessionactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediasessionactions.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/mediasessionactions.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { LogLevel } from "bitmovin-player";
2
- import { isSafari } from '../../checks/safari';
2
+ import { isFairPlayDrmSupported, isSafari } from '../../checks/apple';
3
3
  export function processPlayerConfig(npoplayer, playerConfig) {
4
4
  let processedConfig = playerConfig;
5
- if (isSafari(npoplayer.isFairPlayDrmSupported())) {
5
+ if (isSafari(isFairPlayDrmSupported())) {
6
6
  processedConfig.playback = {
7
7
  autoplay: false
8
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"processplayerconfig.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/processplayerconfig.ts"],"names":[],"mappings":"AASA,OAAO,EAAqB,QAAQ,EAAiC,MAAM,iBAAiB,CAAA;AAE5F,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,UAAU,mBAAmB,CAAC,SAAmB,EAAE,YAAyB;IAE9E,IAAI,eAAe,GAAG,YAAY,CAAA;IAElC,IAAI,QAAQ,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,EAAE;QAE9C,eAAe,CAAC,QAAQ,GAAG;YACvB,QAAQ,EAAE,KAAK;SAClB,CAAA;QAGD,eAAe,CAAC,MAAM,GAAG;YACrB,8CAA8C,EAAE,IAAI;SACvD,CAAA;KACJ;IAED,eAAe,CAAC,EAAE,GAAG,KAAK,CAAA;IAE1B,MAAM,0BAA0B,GAAG;QAC/B,IAAI,EAAE,YAAY;QAClB,qBAAqB,EAAE,UAAU;QACjC,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,oCAAoC;QACtD,oBAAoB,EAAE;YAClB,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG;YAC7B,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,WAAW;YAC7C,GAAG,EAAE,SAAS,CAAC,GAAG;SACrB;KACJ,CAAA;IAED,MAAM,uBAAuB,GAAG,eAAe,CAAC,aAAa,IAAI,0BAA0B,CAAA;IAG3F,MAAM,yBAAyB,GAAG;QAC9B,GAAG,0BAA0B;QAC7B,GAAG,uBAAuB;QAC1B,oBAAoB,EAAE;YAClB,GAAG,0BAA0B,CAAC,oBAAoB;YAClD,GAAG,uBAAuB,CAAC,oBAAoB;SAClD;KACJ,CAAA;IAED,eAAe,CAAC,aAAa,GAAG,yBAA0D,CAAA;IAE1F,IAAG,CAAC,eAAe,CAAC,IAAI;QAAE,eAAe,CAAC,IAAI,GAAG;YAC7C,KAAK,EAAE,QAAQ,CAAC,KAAK;SACxB,CAAA;IAGD,eAAe,CAAC,WAAW,GAAG,EAAE,CAAA;IAEhC,OAAO,eAAe,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"processplayerconfig.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/processplayerconfig.ts"],"names":[],"mappings":"AASA,OAAO,EAAqB,QAAQ,EAAiC,MAAM,iBAAiB,CAAA;AAE5F,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAErE,MAAM,UAAU,mBAAmB,CAAC,SAAmB,EAAE,YAAyB;IAE9E,IAAI,eAAe,GAAG,YAAY,CAAA;IAElC,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAAE;QAEpC,eAAe,CAAC,QAAQ,GAAG;YACvB,QAAQ,EAAE,KAAK;SAClB,CAAA;QAGD,eAAe,CAAC,MAAM,GAAG;YACrB,8CAA8C,EAAE,IAAI;SACvD,CAAA;KACJ;IAED,eAAe,CAAC,EAAE,GAAG,KAAK,CAAA;IAE1B,MAAM,0BAA0B,GAAG;QAC/B,IAAI,EAAE,YAAY;QAClB,qBAAqB,EAAE,UAAU;QACjC,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,oCAAoC;QACtD,oBAAoB,EAAE;YAClB,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG;YAC7B,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,WAAW;YAC7C,GAAG,EAAE,SAAS,CAAC,GAAG;SACrB;KACJ,CAAA;IAED,MAAM,uBAAuB,GAAG,eAAe,CAAC,aAAa,IAAI,0BAA0B,CAAA;IAG3F,MAAM,yBAAyB,GAAG;QAC9B,GAAG,0BAA0B;QAC7B,GAAG,uBAAuB;QAC1B,oBAAoB,EAAE;YAClB,GAAG,0BAA0B,CAAC,oBAAoB;YAClD,GAAG,uBAAuB,CAAC,oBAAoB;SAClD;KACJ,CAAA;IAED,eAAe,CAAC,aAAa,GAAG,yBAA0D,CAAA;IAE1F,IAAG,CAAC,eAAe,CAAC,IAAI;QAAE,eAAe,CAAC,IAAI,GAAG;YAC7C,KAAK,EAAE,QAAQ,CAAC,KAAK;SACxB,CAAA;IAGD,eAAe,CAAC,WAAW,GAAG,EAAE,CAAA;IAEhC,OAAO,eAAe,CAAA;AAC1B,CAAC"}