@npo/player 1.9.3 → 1.10.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 (92) hide show
  1. package/lib/js/api/getstreamobject.js +1 -2
  2. package/lib/js/api/getstreamobject.js.map +1 -1
  3. package/lib/js/fragments/setfragments.d.ts +3 -2
  4. package/lib/js/fragments/setfragments.js +6 -7
  5. package/lib/js/fragments/setfragments.js.map +1 -1
  6. package/lib/js/playeractions/handlers/error.js.map +1 -1
  7. package/lib/js/playeractions/handlers/processplayerconfig.d.ts +11 -0
  8. package/lib/js/playeractions/handlers/processplayerconfig.js +40 -0
  9. package/lib/js/playeractions/handlers/processplayerconfig.js.map +1 -0
  10. package/lib/js/playeractions/playeractions.d.ts +1 -0
  11. package/lib/js/playeractions/playeractions.js +1 -0
  12. package/lib/js/playeractions/playeractions.js.map +1 -1
  13. package/lib/js/ui/components/controlbar.d.ts +1 -1
  14. package/lib/js/ui/components/controlbar.js +19 -8
  15. package/lib/js/ui/components/controlbar.js.map +1 -1
  16. package/lib/js/ui/components/ctabar.js.map +1 -1
  17. package/lib/js/ui/components/nativemobile/addFragments.d.ts +1 -0
  18. package/lib/js/ui/components/nativemobile/addFragments.js +8 -0
  19. package/lib/js/ui/components/nativemobile/addFragments.js.map +1 -0
  20. package/lib/js/ui/components/nativemobile/buttons.js +1 -1
  21. package/lib/js/ui/components/nativemobile/buttons.js.map +1 -1
  22. package/lib/js/ui/components/nativemobile/controlbar.d.ts +2 -1
  23. package/lib/js/ui/components/nativemobile/controlbar.js +33 -4
  24. package/lib/js/ui/components/nativemobile/controlbar.js.map +1 -1
  25. package/lib/js/ui/components/nativemobile/titlebar.d.ts +2 -0
  26. package/lib/js/ui/components/nativemobile/titlebar.js +8 -0
  27. package/lib/js/ui/components/nativemobile/titlebar.js.map +1 -0
  28. package/lib/js/ui/components/topbar.js +5 -2
  29. package/lib/js/ui/components/topbar.js.map +1 -1
  30. package/lib/js/ui/handlers/listboxhandlers.js +9 -9
  31. package/lib/js/ui/handlers/listboxhandlers.js.map +1 -1
  32. package/lib/js/ui/handlers/nicamhandler.d.ts +1 -1
  33. package/lib/js/ui/handlers/nicamhandler.js +4 -4
  34. package/lib/js/ui/handlers/nicamhandler.js.map +1 -1
  35. package/lib/js/ui/{nativemobileui.js → nativemobileuicontainer.js} +6 -7
  36. package/lib/js/ui/nativemobileuicontainer.js.map +1 -0
  37. package/lib/js/ui/nativemobileuifactory.d.ts +3 -0
  38. package/lib/js/ui/nativemobileuifactory.js +43 -0
  39. package/lib/js/ui/nativemobileuifactory.js.map +1 -0
  40. package/lib/js/ui/uicontainer.js +4 -7
  41. package/lib/js/ui/uicontainer.js.map +1 -1
  42. package/lib/js/utilities/utilities.js +0 -1
  43. package/lib/js/utilities/utilities.js.map +1 -1
  44. package/lib/npoplayer.d.ts +1 -1
  45. package/lib/npoplayer.js +26 -42
  46. package/lib/npoplayer.js.map +1 -1
  47. package/lib/package.json +19 -10
  48. package/lib/src/js/fragments/setfragments.d.ts +3 -2
  49. package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +11 -0
  50. package/lib/src/js/playeractions/playeractions.d.ts +1 -0
  51. package/lib/src/js/ui/components/controlbar.d.ts +1 -1
  52. package/lib/src/js/ui/components/nativemobile/addFragments.d.ts +1 -0
  53. package/lib/src/js/ui/components/nativemobile/controlbar.d.ts +2 -1
  54. package/lib/src/js/ui/components/nativemobile/titlebar.d.ts +2 -0
  55. package/lib/src/js/ui/handlers/nicamhandler.d.ts +1 -1
  56. package/lib/src/js/ui/nativemobileuifactory.d.ts +3 -0
  57. package/lib/src/npoplayer.d.ts +1 -1
  58. package/lib/src/types/interfaces.d.ts +2 -1
  59. package/lib/types/interfaces.d.ts +2 -1
  60. package/lib/types/interfaces.js.map +1 -1
  61. package/package.json +19 -10
  62. package/src/scss/components/_advert.scss +28 -31
  63. package/src/scss/components/_buffering.scss +35 -4
  64. package/src/scss/components/_controlbars.scss +5 -15
  65. package/src/scss/components/_error.scss +6 -4
  66. package/src/scss/components/_hugeplaybacktogglebutton.scss +71 -0
  67. package/src/scss/components/_icons.scss +53 -154
  68. package/src/scss/components/_metadata.scss +22 -0
  69. package/src/scss/components/_nicam.scss +2 -1
  70. package/src/scss/components/_playnext.scss +1 -1
  71. package/src/scss/components/_replay.scss +35 -0
  72. package/src/scss/components/_seekbar.scss +51 -76
  73. package/src/scss/components/_seekbarthumbnail.scss +56 -0
  74. package/src/scss/components/_settingspanel.scss +47 -54
  75. package/src/scss/components/_textbuttons.scss +1 -1
  76. package/src/scss/components/_volumeslider.scss +78 -13
  77. package/src/scss/npoplayer.css +2 -1237
  78. package/src/scss/npoplayer.scss +7 -3
  79. package/src/scss/variants/_player-base.scss +10 -36
  80. package/src/scss/variants/_player-debug.scss +14 -0
  81. package/src/scss/variants/_player-large.scss +18 -40
  82. package/src/scss/variants/_player-medium.scss +11 -43
  83. package/src/scss/variants/_player-native-mobile.scss +5 -0
  84. package/src/scss/variants/_player-small.scss +36 -197
  85. package/src/scss/vars/_colors.scss +7 -12
  86. package/src/scss/vars/_fonts.scss +2 -2
  87. package/src/scss/vars/_icons.scss +21 -33
  88. package/lib/js/ui/nativemobileui.js.map +0 -1
  89. package/src/scss/components/_container.scss +0 -8
  90. package/src/scss/components/_fonts.scss +0 -19
  91. /package/lib/js/ui/{nativemobileui.d.ts → nativemobileuicontainer.d.ts} +0 -0
  92. /package/lib/src/js/ui/{nativemobileui.d.ts → nativemobileuicontainer.d.ts} +0 -0
@@ -11,8 +11,7 @@ export async function getStreamObject(npoplayer, payload) {
11
11
  });
12
12
  const streamApiResponse = await response.json();
13
13
  if (!response.ok) {
14
- npoplayer.doError('Het is niet gelukt de stream op te halen: \n' +
15
- streamApiResponse.body);
14
+ npoplayer.doError(`Het is niet gelukt de stream op te halen: \n ${streamApiResponse.body}`, streamApiResponse.status);
16
15
  }
17
16
  return streamApiResponse;
18
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getstreamobject.js","sourceRoot":"","sources":["../../../../src/js/api/getstreamobject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,SAAoB,EAAE,OAAmB;IAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,cAAc,EACjD;QACI,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,OAAO,CAAC,GAAG;YAC1B,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;KACrC,CACJ,CAAA;IAED,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACd,SAAS,CAAC,OAAO,CACb,8CAA8C;YAC1C,iBAAiB,CAAC,IAAI,CAC7B,CAAA;KACJ;IAED,OAAO,iBAAiB,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"getstreamobject.js","sourceRoot":"","sources":["../../../../src/js/api/getstreamobject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAIxD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,SAAoB,EAAE,OAAmB;IAC5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,cAAc,EACjD;QACI,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,OAAO,CAAC,GAAG;YAC1B,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;KACrC,CACJ,CAAA;IAED,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACd,SAAS,CAAC,OAAO,CAAC,gDAAgD,iBAAiB,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;KACxH;IAED,OAAO,iBAAiB,CAAA;AAC5B,CAAC"}
@@ -1,3 +1,4 @@
1
- import type NpoPlayer from '../../npoplayer';
1
+ import { PlayerAPI } from 'bitmovin-player';
2
2
  import { type Fragments } from '../../types/interfaces';
3
- export declare function setFragments(npoplayer: NpoPlayer, fragments: Fragments): Promise<void>;
3
+ import { UIManager } from 'bitmovin-player-ui';
4
+ export declare function setFragments(player: PlayerAPI, uiManager: UIManager, fragments: Fragments): Promise<void>;
@@ -1,7 +1,5 @@
1
1
  import { PlayerEvent } from 'bitmovin-player';
2
- export async function setFragments(npoplayer, fragments) {
3
- const uiManager = npoplayer.uiManager;
4
- const player = npoplayer.player;
2
+ export async function setFragments(player, uiManager, fragments) {
5
3
  const fragment = fragments.sections[0];
6
4
  const playFragmentFromStart = () => {
7
5
  player?.seek(fragment.start);
@@ -19,7 +17,7 @@ export async function setFragments(npoplayer, fragments) {
19
17
  {
20
18
  time: fragment.start,
21
19
  duration: fragment.end - fragment.start,
22
- title: npoplayer.sourceConfig.title,
20
+ title: fragment.title,
23
21
  cssClasses: ['seekbar-marker-interval']
24
22
  },
25
23
  {
@@ -53,9 +51,10 @@ export async function setFragments(npoplayer, fragments) {
53
51
  const seekFunction = (e) => {
54
52
  if (fragment == null)
55
53
  return;
56
- const seekEvent = e;
57
- if (seekEvent.seekTarget > fragment.end || seekEvent.seekTarget < fragment.start) {
58
- player?.seek(Math.max(fragment.start, Math.min(fragment.end, seekEvent.seekTarget)));
54
+ // web ui and js bridge have different types
55
+ const seekTarget = e.seekTarget ? e.seekTarget : e.to.time;
56
+ if (seekTarget > fragment.end || seekTarget < fragment.start) {
57
+ player?.seek(Math.max(fragment.start, Math.min(fragment.end, seekTarget)));
59
58
  }
60
59
  };
61
60
  player?.off(PlayerEvent.TimeChanged, checkFunction);
@@ -1 +1 @@
1
- {"version":3,"file":"setfragments.js","sourceRoot":"","sources":["../../../../src/js/fragments/setfragments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setfragments.js","sourceRoot":"","sources":["../../../../src/js/fragments/setfragments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/error.ts"],"names":[],"mappings":"AAGA;;;;;;;EAOE;AAEF,MAAM,UAAU,iBAAiB,CAC7B,MAAiB,EACjB,YAA0B,EAC1B,KAAU;IAEV,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,OAAO,GAAG,KAAK,CAAC;KACnB;IACD,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,IAAI,YAAY,CAAC,UAAU;QAAE,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAE5D,IAAI,YAAY,CAAC,mBAAmB,IAAI,IAAI;QAAE,OAAO;IACrD,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACvC,YAAY,CAAC,mBAA2B,CAAC,UAAU,CAAC,OAAO,CACxD,OAAO,IAAI,kCAAkC,CAChD,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/error.ts"],"names":[],"mappings":"AAGA;;;;;;;EAOE;AAEF,MAAM,UAAU,iBAAiB,CAC7B,MAAiB,EACjB,YAA0B,EAC1B,KAAU;IAEV,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,OAAO,GAAG,KAAK,CAAC;KACnB;IAED,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;IAEtE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,IAAI,YAAY,CAAC,UAAU;QAAE,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAE5D,IAAI,YAAY,CAAC,mBAAmB,IAAI,IAAI;QAAE,OAAO;IACrD,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACvC,YAAY,CAAC,mBAA2B,CAAC,UAAU,CAAC,OAAO,CACxD,OAAO,IAAI,kCAAkC,CAChD,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @function processPlayerConfig
3
+ * @description This function is called by the NpoPlayer constructor to enrich the player configuration object
4
+ * with default values where none were set by the user.
5
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance
6
+ * @param {PlayerConfig} playerConfig - The player configuration object that was created by the user
7
+ * @returns The processed player configuration object
8
+ */
9
+ import { type PlayerConfig } from "bitmovin-player";
10
+ import NpoPlayer from "npoplayer";
11
+ export declare function processPlayerConfig(npoplayer: NpoPlayer, playerConfig: PlayerConfig): PlayerConfig;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @function processPlayerConfig
3
+ * @description This function is called by the NpoPlayer constructor to enrich the player configuration object
4
+ * with default values where none were set by the user.
5
+ * @param {NpoPlayer} npoplayer - The NpoPlayer instance
6
+ * @param {PlayerConfig} playerConfig - The player configuration object that was created by the user
7
+ * @returns The processed player configuration object
8
+ */
9
+ import { LogLevel } from "bitmovin-player";
10
+ import { isSafari } from '../../checks/safari';
11
+ export function processPlayerConfig(npoplayer, playerConfig) {
12
+ let processedConfig = playerConfig;
13
+ if (isSafari(npoplayer.isFairPlayDrmSupported())) {
14
+ // Disable autoplay on safari
15
+ processedConfig.playback = {
16
+ autoplay: false
17
+ };
18
+ // Potential fix for DRM issues on safari
19
+ processedConfig.tweaks = {
20
+ fairplay_ignore_duplicate_init_data_key_errors: true
21
+ };
22
+ }
23
+ processedConfig.ui = false;
24
+ // Chromecast configuration
25
+ if (!processedConfig.remotecontrol)
26
+ processedConfig.remotecontrol = {
27
+ type: 'googlecast',
28
+ receiverApplicationId: 'CC38EB17',
29
+ receiverVersion: 'v3',
30
+ messageNamespace: 'urn:x-cast:com.bitmovin.player.caf'
31
+ };
32
+ if (!processedConfig.logs)
33
+ processedConfig.logs = {
34
+ level: LogLevel.ERROR
35
+ };
36
+ //creating this node enables the PlayerAdvertisingAPI
37
+ processedConfig.advertising = {};
38
+ return processedConfig;
39
+ }
40
+ //# sourceMappingURL=processplayerconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processplayerconfig.js","sourceRoot":"","sources":["../../../../../src/js/playeractions/handlers/processplayerconfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAqB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE9D,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;QAC9C,6BAA6B;QAC7B,eAAe,CAAC,QAAQ,GAAG;YACvB,QAAQ,EAAE,KAAK;SAClB,CAAA;QAED,yCAAyC;QACzC,eAAe,CAAC,MAAM,GAAG;YACrB,8CAA8C,EAAE,IAAI;SACvD,CAAA;KACJ;IAED,eAAe,CAAC,EAAE,GAAG,KAAK,CAAA;IAE1B,2BAA2B;IAC3B,IAAG,CAAC,eAAe,CAAC,aAAa;QAAE,eAAe,CAAC,aAAa,GAAG;YAC/D,IAAI,EAAE,YAAY;YAClB,qBAAqB,EAAE,UAAU;YACjC,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,oCAAoC;SACzD,CAAA;IAED,IAAG,CAAC,eAAe,CAAC,IAAI;QAAE,eAAe,CAAC,IAAI,GAAG;YAC7C,KAAK,EAAE,QAAQ,CAAC,KAAK;SACxB,CAAA;IAED,qDAAqD;IACrD,eAAe,CAAC,WAAW,GAAG,EAAE,CAAA;IAEhC,OAAO,eAAe,CAAA;AAC1B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { resolveKeyPress } from "./handlers/resolvekeypress";
2
2
  export { handleStartOffset, handleLiveOffsetLogic, shiftToProgramStart } from "./handlers/handleoffsets";
3
3
  export { handlePlayerError } from "./handlers/error";
4
+ export { processPlayerConfig } from "./handlers/processplayerconfig";
@@ -1,4 +1,5 @@
1
1
  export { resolveKeyPress } from "./handlers/resolvekeypress";
2
2
  export { handleStartOffset, handleLiveOffsetLogic, shiftToProgramStart } from "./handlers/handleoffsets";
3
3
  export { handlePlayerError } from "./handlers/error";
4
+ export { processPlayerConfig } from "./handlers/processplayerconfig";
4
5
  //# sourceMappingURL=playeractions.js.map
@@ -1 +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"}
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;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { ControlBar, type SettingsPanel } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../../npoplayer';
3
- export declare function createControlBar(npoplayer: NpoPlayer, settingsPanel: SettingsPanel, forwardButton: any, rewindButton: any): ControlBar;
3
+ export declare function createControlBar(npoplayer: NpoPlayer, settingsPanel: SettingsPanel): ControlBar;
@@ -1,11 +1,20 @@
1
1
  import { ControlBar, Container, PlaybackTimeLabel, PlaybackTimeLabelMode, SeekBar, SeekBarLabel, PlaybackToggleButton, VolumeToggleButton, VolumeSlider, Spacer, PictureInPictureToggleButton, AirPlayToggleButton, CastToggleButton, SettingsToggleButton, FullscreenToggleButton } from 'bitmovin-player-ui';
2
2
  import { airPlaySupported } from '../../../js/utilities/utilities';
3
- export function createControlBar(npoplayer, settingsPanel, forwardButton, rewindButton) {
3
+ import { PlayerEvent } from 'bitmovin-player';
4
+ import { createForwardButton, createRewindButton } from './buttons';
5
+ export function createControlBar(npoplayer, settingsPanel) {
6
+ const player = npoplayer.player;
7
+ const rewindButton = createRewindButton(player);
8
+ const forwardButton = createForwardButton(player);
4
9
  const seekBar = new SeekBar({ label: new SeekBarLabel() });
5
10
  npoplayer.uiComponents.seekBar = seekBar;
6
- var isPictureInPictureAvailable = function () {
7
- return npoplayer.player?.isViewModeAvailable(npoplayer.player?.exports.ViewMode.PictureInPicture);
8
- };
11
+ const chromeCastButton = new CastToggleButton({
12
+ hidden: true
13
+ });
14
+ npoplayer.player?.on(PlayerEvent.CastAvailable, () => {
15
+ if (npoplayer.player?.isCastAvailable())
16
+ chromeCastButton.show();
17
+ });
9
18
  const controlbar = new ControlBar({
10
19
  components: [
11
20
  settingsPanel,
@@ -13,12 +22,13 @@ export function createControlBar(npoplayer, settingsPanel, forwardButton, rewind
13
22
  components: [
14
23
  new PlaybackTimeLabel({
15
24
  timeLabelMode: PlaybackTimeLabelMode.CurrentTime,
16
- hideInLivePlayback: true
25
+ hideInLivePlayback: true,
26
+ cssClasses: ['current-time']
17
27
  }),
18
28
  seekBar,
19
29
  new PlaybackTimeLabel({
20
30
  timeLabelMode: PlaybackTimeLabelMode.TotalTime,
21
- cssClasses: ['text-right']
31
+ cssClasses: ['total-time']
22
32
  })
23
33
  ],
24
34
  cssClasses: ['controlbar-top']
@@ -33,13 +43,14 @@ export function createControlBar(npoplayer, settingsPanel, forwardButton, rewind
33
43
  new Spacer(),
34
44
  ...(document.pictureInPictureEnabled && /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? [new PictureInPictureToggleButton()] : []),
35
45
  ...(airPlaySupported() ? [new AirPlayToggleButton()] : []),
36
- new CastToggleButton(),
46
+ chromeCastButton,
37
47
  new SettingsToggleButton({ settingsPanel }),
38
48
  new FullscreenToggleButton()
39
49
  ],
40
50
  cssClasses: ['controlbar-bottom']
41
51
  })
42
- ]
52
+ ],
53
+ cssClasses: ['ui-controlbar-bottom']
43
54
  });
44
55
  npoplayer.uiComponents.controlbar = controlbar;
45
56
  return controlbar;
@@ -1 +1 @@
1
- {"version":3,"file":"controlbar.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/controlbar.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EAEzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGlE,MAAM,UAAU,gBAAgB,CAC5B,SAAoB,EACpB,aAA4B,EAC5B,aAAkB,EAClB,YAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,EAAE,CAAC,CAAA;IAC1D,SAAS,CAAC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAA;IAExC,IAAI,2BAA2B,GAAG;QAC9B,OAAO,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACtG,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAC9B,UAAU,EAAE;YACR,aAAa;YACb,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,WAAW;wBAChD,kBAAkB,EAAE,IAAI;qBAC3B,CAAC;oBACF,OAAO;oBACP,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,SAAS;wBAC9C,UAAU,EAAE,CAAC,YAAY,CAAC;qBAC7B,CAAC;iBACL;gBACD,UAAU,EAAE,CAAC,gBAAgB,CAAC;aACjC,CAAC;YACF,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,oBAAoB,EAAE;oBAC1B,IAAI,kBAAkB,EAAE;oBACxB,IAAI,YAAY,EAAE;oBAClB,YAAY;oBACZ,aAAa;oBACb,IAAI,MAAM,EAAE;oBACZ,GAAG,CAAC,QAAQ,CAAC,uBAAuB,IAAI,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/I,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,IAAI,gBAAgB,EAAE;oBACtB,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;oBAC3C,IAAI,sBAAsB,EAAE;iBAC/B;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aACpC,CAAC;SACL;KACJ,CAAC,CAAA;IAGF,SAAS,CAAC,YAAY,CAAC,UAAU,GAAG,UAAU,CAAA;IAE9C,OAAO,UAAU,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"controlbar.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/controlbar.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EAEzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnE,MAAM,UAAU,gBAAgB,CAC5B,SAAoB,EACpB,aAA4B;IAE5B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IAE/B,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,EAAE,CAAC,CAAA;IAC1D,SAAS,CAAC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAA;IAExC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC1C,MAAM,EAAE,IAAI;KACf,CAAC,CAAA;IAEF,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE;QACjD,IAAG,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE;YAAE,gBAAgB,CAAC,IAAI,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAC9B,UAAU,EAAE;YACR,aAAa;YACb,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,WAAW;wBAChD,kBAAkB,EAAE,IAAI;wBACxB,UAAU,EAAE,CAAC,cAAc,CAAC;qBAC/B,CAAC;oBACF,OAAO;oBACP,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,SAAS;wBAC9C,UAAU,EAAE,CAAC,YAAY,CAAC;qBAC7B,CAAC;iBACL;gBACD,UAAU,EAAE,CAAC,gBAAgB,CAAC;aACjC,CAAC;YACF,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,oBAAoB,EAAE;oBAC1B,IAAI,kBAAkB,EAAE;oBACxB,IAAI,YAAY,EAAE;oBAClB,YAAY;oBACZ,aAAa;oBACb,IAAI,MAAM,EAAE;oBACZ,GAAG,CAAC,QAAQ,CAAC,uBAAuB,IAAI,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/I,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,gBAAgB;oBAChB,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;oBAC3C,IAAI,sBAAsB,EAAE;iBAC/B;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aACpC,CAAC;SACL;QACD,UAAU,EAAE,CAAC,sBAAsB,CAAC;KACvC,CAAC,CAAA;IAGF,SAAS,CAAC,YAAY,CAAC,UAAU,GAAG,UAAU,CAAA;IAE9C,OAAO,UAAU,CAAA;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ctabar.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/ctabar.ts"],"names":[],"mappings":"AAAA;;;;;;;;EAQE;AAEF,OAAO,EAAU,SAAS,EAAS,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACH,sBAAsB,EACtB,0BAA0B,EAC7B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAMzC;;;;;;;EAOE;AACF,MAAM,UAAU,YAAY,CAAE,MAAwB,EAAE,SAAoB,EAAE,OAAe;IACzF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE1E,IAAI,aAAa,GAAkD;QAC/D,oBAAoB;QACpB,gBAAgB;KACnB,CAAA;IACD,IAAG,OAAO,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;QAC1C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,EAAE,CAAA;KACjB;IAED,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,CAAC,wBAAwB,CAAC;KACzC,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"ctabar.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/ctabar.ts"],"names":[],"mappings":"AAAA;;;;;;;;EAQE;AAEF,OAAO,EAAU,SAAS,EAAS,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACH,sBAAsB,EACtB,0BAA0B,EAC7B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAMzC;;;;;;;EAOE;AACF,MAAM,UAAU,YAAY,CAAE,MAAwB,EAAE,SAAoB,EAAE,OAAe;IACzF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE1E,IAAI,aAAa,GAAkD;QAC/D,oBAAoB;QACpB,gBAAgB;KACnB,CAAA;IAED,IAAI,OAAO,KAAK,IAAI,EAAE;QAClB,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;QAC1C,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,EAAE,CAAA;KACjB;IAED,OAAO,IAAI,SAAS,CAAC;QACjB,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,CAAC,wBAAwB,CAAC;KACzC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const addFragments: any;
@@ -0,0 +1,8 @@
1
+ import { setFragments } from '../../../fragments/setfragments';
2
+ export const addFragments = async (player, uiManager, section) => {
3
+ const fragments = {
4
+ sections: [section],
5
+ };
6
+ setFragments(player, uiManager, fragments);
7
+ };
8
+ //# sourceMappingURL=addFragments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addFragments.js","sourceRoot":"","sources":["../../../../../../src/js/ui/components/nativemobile/addFragments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAI9D,MAAM,CAAC,MAAM,YAAY,GAAQ,KAAK,EAAE,MAAiB,EAAE,SAAoB,EAAE,OAAgB,EAAE,EAAE;IACjG,MAAM,SAAS,GAAc;QACzB,QAAQ,EAAE,CAAC,OAAO,CAAC;KACtB,CAAA;IAED,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAC9C,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { Button, SettingsToggleButton } from 'bitmovin-player-ui';
2
- import { sendCustomMessage } from '../../nativemobileui';
2
+ import { sendCustomMessage } from '../../nativemobileuicontainer';
3
3
  import { CustomMessages } from '../../../../types/interfaces';
4
4
  export function createPlayNextButton(player) {
5
5
  const playNextButton = new Button({
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../../../../src/js/ui/components/nativemobile/buttons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAiB,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAA8B,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE1F,MAAM,UAAU,oBAAoB,CAChC,MAAwB;IAExB,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;QAC9B,QAAQ,EACJ,mEAAmE;QACvE,IAAI,EAAE,+CAA+C;QACrD,MAAM,EAAE,KAAK;KAChB,CAAC,CAAA;IAEF,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;YAClC,MAAM,MAAM,GAA+B,iBAAiB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;YACzF,IAAI,MAAM,CAAC,qBAAqB,KAAK,IAAI,EAAE;gBACvC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;aAC9B;iBAAM;gBACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;aACnC;QACL,CAAC,CAAC,CAAA;KACL;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,MAAM,CAAC;QACd,QAAQ,EAAE,uDAAuD;QACjE,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,IAAI;KACf,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,MAAwB,EACxB,aAA4B;IAE5B,MAAM,0BAA0B,GAAG,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;IAE9E,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,0BAA0B,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;YACjD,MAAM,MAAM,GAA+B,iBAAiB,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;YAClG,IAAI,MAAM,CAAC,qBAAqB,KAAK,KAAK,EAAE;gBACxC,aAAa,CAAC,IAAI,EAAE,CAAA;gBACpB,0BAA0B,CAAC,GAAG,EAAE,CAAA;aACnC;QACL,CAAC,CAAC,CAAA;KACL;IAED,OAAO,0BAA0B,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../../../../../src/js/ui/components/nativemobile/buttons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAiB,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAA8B,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE1F,MAAM,UAAU,oBAAoB,CAChC,MAAwB;IAExB,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;QAC9B,QAAQ,EACJ,mEAAmE;QACvE,IAAI,EAAE,+CAA+C;QACrD,MAAM,EAAE,KAAK;KAChB,CAAC,CAAA;IAEF,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;YAClC,MAAM,MAAM,GAA+B,iBAAiB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;YACzF,IAAI,MAAM,CAAC,qBAAqB,KAAK,IAAI,EAAE;gBACvC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;aAC9B;iBAAM;gBACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;aACnC;QACL,CAAC,CAAC,CAAA;KACL;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,MAAM,CAAC;QACd,QAAQ,EAAE,uDAAuD;QACjE,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,IAAI;KACf,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,MAAwB,EACxB,aAA4B;IAE5B,MAAM,0BAA0B,GAAG,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAA;IAE9E,IAAI,MAAM,IAAI,IAAI,EAAE;QAChB,0BAA0B,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;YACjD,MAAM,MAAM,GAA+B,iBAAiB,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAA;YAClG,IAAI,MAAM,CAAC,qBAAqB,KAAK,KAAK,EAAE;gBACxC,aAAa,CAAC,IAAI,EAAE,CAAA;gBACpB,0BAA0B,CAAC,GAAG,EAAE,CAAA;aACnC;QACL,CAAC,CAAC,CAAA;KACL;IAED,OAAO,0BAA0B,CAAC;AACtC,CAAC"}
@@ -1,2 +1,3 @@
1
+ import { PlayerAPI } from 'bitmovin-player';
1
2
  import { ControlBar, type SettingsPanel } from 'bitmovin-player-ui';
2
- export declare function createControlBar(settingsPanel: SettingsPanel): ControlBar;
3
+ export declare function createControlBar(player: PlayerAPI, settingsPanel: SettingsPanel): ControlBar;
@@ -1,5 +1,17 @@
1
- import { ControlBar, Container, PlaybackTimeLabel, PlaybackTimeLabelMode, SeekBar, SeekBarLabel } from 'bitmovin-player-ui';
2
- export function createControlBar(settingsPanel) {
1
+ import { PlayerEvent } from 'bitmovin-player';
2
+ import { ControlBar, Container, PlaybackTimeLabel, PlaybackTimeLabelMode, SeekBar, SeekBarLabel, PlaybackToggleButton, VolumeToggleButton, VolumeSlider, Spacer, PictureInPictureToggleButton, AirPlayToggleButton, SettingsToggleButton, FullscreenToggleButton, CastToggleButton } from 'bitmovin-player-ui';
3
+ import { createForwardButton, createRewindButton } from '../buttons';
4
+ import { airPlaySupported } from '../../../utilities/utilities';
5
+ export function createControlBar(player, settingsPanel) {
6
+ const rewindButton = createRewindButton(player);
7
+ const forwardButton = createForwardButton(player);
8
+ const chromeCastButton = new CastToggleButton({
9
+ hidden: true
10
+ });
11
+ player?.on(PlayerEvent.CastAvailable, () => {
12
+ if (player?.isCastAvailable())
13
+ chromeCastButton.show();
14
+ });
3
15
  return new ControlBar({
4
16
  components: [
5
17
  settingsPanel,
@@ -7,16 +19,33 @@ export function createControlBar(settingsPanel) {
7
19
  components: [
8
20
  new PlaybackTimeLabel({
9
21
  timeLabelMode: PlaybackTimeLabelMode.CurrentTime,
10
- hideInLivePlayback: true
22
+ hideInLivePlayback: true,
23
+ cssClasses: ['current-time']
11
24
  }),
12
25
  new SeekBar({ label: new SeekBarLabel() }),
13
26
  new PlaybackTimeLabel({
14
27
  timeLabelMode: PlaybackTimeLabelMode.TotalTime,
15
- cssClasses: ['text-right']
28
+ cssClasses: ['total-time']
16
29
  })
17
30
  ],
18
31
  cssClasses: ['controlbar-top']
19
32
  }),
33
+ new Container({
34
+ components: [
35
+ new PlaybackToggleButton(),
36
+ new VolumeToggleButton(),
37
+ new VolumeSlider(),
38
+ rewindButton,
39
+ forwardButton,
40
+ new Spacer(),
41
+ ...(document.pictureInPictureEnabled && /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? [new PictureInPictureToggleButton()] : []),
42
+ ...(airPlaySupported() ? [new AirPlayToggleButton()] : []),
43
+ chromeCastButton,
44
+ new SettingsToggleButton({ settingsPanel }),
45
+ new FullscreenToggleButton()
46
+ ],
47
+ cssClasses: ['controlbar-bottom']
48
+ })
20
49
  ]
21
50
  });
22
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controlbar.js","sourceRoot":"","sources":["../../../../../../src/js/ui/components/nativemobile/controlbar.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,OAAO,EACP,YAAY,EAEf,MAAM,oBAAoB,CAAA;AAE3B,MAAM,UAAU,gBAAgB,CAC5B,aAA4B;IAE5B,OAAO,IAAI,UAAU,CAAC;QAClB,UAAU,EAAE;YACR,aAAa;YACb,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,WAAW;wBAChD,kBAAkB,EAAE,IAAI;qBAC3B,CAAC;oBACF,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,EAAE,CAAC;oBAC1C,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,SAAS;wBAC9C,UAAU,EAAE,CAAC,YAAY,CAAC;qBAC7B,CAAC;iBACL;gBACD,UAAU,EAAE,CAAC,gBAAgB,CAAC;aACjC,CAAC;SACL;KACJ,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"controlbar.js","sourceRoot":"","sources":["../../../../../../src/js/ui/components/nativemobile/controlbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EACH,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,OAAO,EACP,YAAY,EAEZ,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,MAAM,UAAU,gBAAgB,CAC5B,MAAiB,EACjB,aAA4B;IAE5B,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAEjD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC1C,MAAM,EAAE,IAAI;KACf,CAAC,CAAA;IAEF,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE;QACvC,IAAG,MAAM,EAAE,eAAe,EAAE;YAAE,gBAAgB,CAAC,IAAI,EAAE,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,UAAU,CAAC;QAClB,UAAU,EAAE;YACR,aAAa;YACb,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,WAAW;wBAChD,kBAAkB,EAAE,IAAI;wBACxB,UAAU,EAAE,CAAC,cAAc,CAAC;qBAC/B,CAAC;oBACF,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,EAAE,CAAC;oBAC1C,IAAI,iBAAiB,CAAC;wBAClB,aAAa,EAAE,qBAAqB,CAAC,SAAS;wBAC9C,UAAU,EAAE,CAAC,YAAY,CAAC;qBAC7B,CAAC;iBACL;gBACD,UAAU,EAAE,CAAC,gBAAgB,CAAC;aACjC,CAAC;YACF,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,oBAAoB,EAAE;oBAC1B,IAAI,kBAAkB,EAAE;oBACxB,IAAI,YAAY,EAAE;oBAClB,YAAY;oBACZ,aAAa;oBACb,IAAI,MAAM,EAAE;oBACZ,GAAG,CAAC,QAAQ,CAAC,uBAAuB,IAAI,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/I,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,gBAAgB;oBAChB,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;oBAC3C,IAAI,sBAAsB,EAAE;iBAC/B;gBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;aACpC,CAAC;SACL;KACJ,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { TitleBar } from 'bitmovin-player-ui';
2
+ export declare function createTitleBar(): TitleBar;
@@ -0,0 +1,8 @@
1
+ import { Label, TitleBar } from 'bitmovin-player-ui';
2
+ export function createTitleBar() {
3
+ const nicam = new Label({ text: '', cssClass: 'nicam' });
4
+ const titleBar = new TitleBar({ cssClasses: ['metadata'] });
5
+ titleBar.addComponent(nicam);
6
+ return titleBar;
7
+ }
8
+ //# sourceMappingURL=titlebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"titlebar.js","sourceRoot":"","sources":["../../../../../../src/js/ui/components/nativemobile/titlebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,UAAU,cAAc;IAC1B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAC3D,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAE5B,OAAO,QAAQ,CAAA;AACnB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Container, TitleBar, PictureInPictureToggleButton, AirPlayToggleButton, CastToggleButton, SettingsToggleButton, FullscreenToggleButton } from 'bitmovin-player-ui';
1
+ import { Container, TitleBar, PictureInPictureToggleButton, AirPlayToggleButton, CastToggleButton, SettingsToggleButton, FullscreenToggleButton, VolumeControlButton } from 'bitmovin-player-ui';
2
2
  export function createTopBar(settingsPanel) {
3
3
  return new TitleBar({
4
4
  components: [
@@ -8,7 +8,10 @@ export function createTopBar(settingsPanel) {
8
8
  new AirPlayToggleButton(),
9
9
  new CastToggleButton(),
10
10
  new SettingsToggleButton({ settingsPanel }),
11
- new FullscreenToggleButton()
11
+ new FullscreenToggleButton(),
12
+ new VolumeControlButton({
13
+ vertical: true,
14
+ }),
12
15
  ],
13
16
  cssClasses: ['controlbar-top', 'controlbar-small']
14
17
  })
@@ -1 +1 @@
1
- {"version":3,"file":"topbar.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/topbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EACT,QAAQ,EACR,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,UAAU,YAAY,CAAE,aAA4B;IACtD,OAAO,IAAI,QAAQ,CAAC;QAChB,UAAU,EAAE;YACR,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,4BAA4B,EAAE;oBAClC,IAAI,mBAAmB,EAAE;oBACzB,IAAI,gBAAgB,EAAE;oBACtB,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;oBAC3C,IAAI,sBAAsB,EAAE;iBAC/B;gBACD,UAAU,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;aACrD,CAAC;SACL;QACD,UAAU,EAAE,CAAC,gBAAgB,CAAC;KACjC,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"topbar.js","sourceRoot":"","sources":["../../../../../src/js/ui/components/topbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EACT,QAAQ,EACR,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACtB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,UAAU,YAAY,CAAE,aAA4B;IACtD,OAAO,IAAI,QAAQ,CAAC;QAChB,UAAU,EAAE;YACR,IAAI,SAAS,CAAC;gBACV,UAAU,EAAE;oBACR,IAAI,4BAA4B,EAAE;oBAClC,IAAI,mBAAmB,EAAE;oBACzB,IAAI,gBAAgB,EAAE;oBACtB,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;oBAC3C,IAAI,sBAAsB,EAAE;oBAC5B,IAAI,mBAAmB,CAAC;wBACpB,QAAQ,EAAE,IAAI;qBACjB,CAAC;iBACL;gBACD,UAAU,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;aACrD,CAAC;SACL;QACD,UAAU,EAAE,CAAC,gBAAgB,CAAC;KACjC,CAAC,CAAA;AACN,CAAC"}
@@ -1,3 +1,9 @@
1
+ function closeSettingsPanel(settingsPanel, mainSettingsPage) {
2
+ setTimeout(() => {
3
+ if (settingsPanel.getActivePage() !== mainSettingsPage)
4
+ settingsPanel.setActivePage(mainSettingsPage);
5
+ }, 100);
6
+ }
1
7
  export function handleSubtitleListBoxItemSelected(subtitleSettingsOpenButton, settingsPanel, mainSettingsPage) {
2
8
  return (e) => {
3
9
  e.getItems().forEach((item) => {
@@ -5,9 +11,7 @@ export function handleSubtitleListBoxItemSelected(subtitleSettingsOpenButton, se
5
11
  subtitleSettingsOpenButton.setText(item.label);
6
12
  }
7
13
  });
8
- setTimeout(() => {
9
- settingsPanel.setActivePage(mainSettingsPage);
10
- }, 100);
14
+ closeSettingsPanel(settingsPanel, mainSettingsPage);
11
15
  };
12
16
  }
13
17
  export function handleSpeedListBoxItemSelected(player, speedSettingsOpenButton, settingsPanel, mainSettingsPage) {
@@ -19,9 +23,7 @@ export function handleSpeedListBoxItemSelected(player, speedSettingsOpenButton,
19
23
  source.selectItem(item.key);
20
24
  }
21
25
  });
22
- setTimeout(() => {
23
- settingsPanel.setActivePage(mainSettingsPage);
24
- }, 100);
26
+ closeSettingsPanel(settingsPanel, mainSettingsPage);
25
27
  };
26
28
  }
27
29
  export function handleQualityListBoxItemSelected(player, qualitySettingsOpenButton, settingsPanel, mainSettingsPage) {
@@ -33,9 +35,7 @@ export function handleQualityListBoxItemSelected(player, qualitySettingsOpenButt
33
35
  source.selectItem(item.key);
34
36
  }
35
37
  });
36
- setTimeout(() => {
37
- settingsPanel.setActivePage(mainSettingsPage);
38
- }, 100);
38
+ closeSettingsPanel(settingsPanel, mainSettingsPage);
39
39
  };
40
40
  }
41
41
  //# sourceMappingURL=listboxhandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listboxhandlers.js","sourceRoot":"","sources":["../../../../../src/js/ui/handlers/listboxhandlers.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,iCAAiC,CAC7C,0BAAuD,EACvD,aAA4B,EAC5B,gBAAmC;IAEnC,OAAO,CAAC,CAAM,EAAE,EAAE;QACd,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,eAAe,EAAE,EAAE;gBAClC,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACjD;QACL,CAAC,CAAC,CAAA;QACF,UAAU,CAAC,GAAG,EAAE;YACZ,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACjD,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC1C,MAAwB,EACxB,uBAAoD,EACpD,aAA4B,EAC5B,gBAAmC;IAEnC,OAAO,CAAC,MAAW,EAAE,IAAS,EAAE,EAAE;QAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;gBACnB,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9C,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,UAAU,CAAC,GAAG,EAAE;YACZ,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACjD,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC5C,MAAwB,EACxB,yBAAsD,EACtD,aAA4B,EAC5B,gBAAmC;IAEnC,OAAO,CAAC,MAAW,EAAE,IAAS,EAAE,EAAE;QAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;gBACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACjC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,UAAU,CAAC,GAAG,EAAE;YACZ,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA;QACjD,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"listboxhandlers.js","sourceRoot":"","sources":["../../../../../src/js/ui/handlers/listboxhandlers.ts"],"names":[],"mappings":"AAQA,SAAS,kBAAkB,CAAC,aAA4B,EAAE,gBAAmC;IACzF,UAAU,CAAC,GAAG,EAAE;QACZ,IAAG,aAAa,CAAC,aAAa,EAAE,KAAK,gBAAgB;YAAE,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA;IACxG,CAAC,EAAE,GAAG,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC7C,0BAAuD,EACvD,aAA4B,EAC5B,gBAAmC;IAEnC,OAAO,CAAC,CAAM,EAAE,EAAE;QACd,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,eAAe,EAAE,EAAE;gBAClC,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACjD;QACL,CAAC,CAAC,CAAA;QACF,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC1C,MAAwB,EACxB,uBAAoD,EACpD,aAA4B,EAC5B,gBAAmC;IAEnC,OAAO,CAAC,MAAW,EAAE,IAAS,EAAE,EAAE;QAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;gBACnB,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9C,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC5C,MAAwB,EACxB,yBAAsD,EACtD,aAA4B,EAC5B,gBAAmC;IAEnC,OAAO,CAAC,MAAW,EAAE,IAAS,EAAE,EAAE;QAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;gBACnB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACjC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACxD,CAAC,CAAA;AACL,CAAC"}
@@ -1,2 +1,2 @@
1
- import { StreamObject } from "types/interfaces";
1
+ import { StreamObject } from 'types/interfaces';
2
2
  export declare function processNicam(streamObject: StreamObject, containerId: string): void;
@@ -11,7 +11,7 @@
11
11
  export function processNicam(streamObject, containerId) {
12
12
  const nicamElement = document.querySelector(`#${containerId} .bmpui-nicam`);
13
13
  if (nicamElement) {
14
- nicamElement.innerHTML = "";
14
+ nicamElement.innerHTML = '';
15
15
  streamObject.metadata.ageRating && addNicamIcon(streamObject.metadata.ageRating, nicamElement);
16
16
  streamObject.metadata.nicam?.forEach((character) => addNicamIcon(character, nicamElement));
17
17
  }
@@ -24,9 +24,9 @@ export function processNicam(streamObject, containerId) {
24
24
  * @returns {void}
25
25
  */
26
26
  function addNicamIcon(character, nicamElement) {
27
- const iconClass = "nicam-icon-" + character.toLowerCase();
28
- const span = document.createElement("span");
29
- span.classList.add("nicam-icon", iconClass);
27
+ const iconClass = `nicam-icon-${character.toLowerCase()}`;
28
+ const span = document.createElement('span');
29
+ span.classList.add('nicam-icon', iconClass);
30
30
  nicamElement.appendChild(span);
31
31
  }
32
32
  //# sourceMappingURL=nicamhandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nicamhandler.js","sourceRoot":"","sources":["../../../../../src/js/ui/handlers/nicamhandler.ts"],"names":[],"mappings":"AAAA;;EAEE;AAIF;;;;;;EAME;AACF,MAAM,UAAU,YAAY,CAAC,YAA0B,EAAE,WAAmB;IACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,eAAe,CAAC,CAAC;IAC5E,IAAI,YAAY,EAAE;QACd,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,SAAS,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC/F,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;KACtG;AACL,CAAC;AAED;;;;;;EAME;AACF,SAAS,YAAY,CAAC,SAAiB,EAAE,YAAqB;IAC1D,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC5C,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"nicamhandler.js","sourceRoot":"","sources":["../../../../../src/js/ui/handlers/nicamhandler.ts"],"names":[],"mappings":"AAAA;;EAEE;AAIF;;;;;;EAME;AACF,MAAM,UAAU,YAAY,CAAC,YAA0B,EAAE,WAAmB;IACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,eAAe,CAAC,CAAA;IAC3E,IAAI,YAAY,EAAE;QACd,YAAY,CAAC,SAAS,GAAG,EAAE,CAAA;QAC3B,YAAY,CAAC,QAAQ,CAAC,SAAS,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAC9F,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;KACrG;AACL,CAAC;AAED;;;;;;EAME;AACF,SAAS,YAAY,CAAC,SAAiB,EAAE,YAAqB;IAC1D,MAAM,SAAS,GAAG,cAAc,SAAS,CAAC,WAAW,EAAE,EAAE,CAAA;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IAC3C,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC"}
@@ -1,10 +1,11 @@
1
- import { BufferingOverlay, CastStatusOverlay, ErrorMessageOverlay, PlaybackToggleOverlay, SubtitleOverlay, UIContainer, Watermark, } from 'bitmovin-player-ui';
1
+ import { BufferingOverlay, CastStatusOverlay, ErrorMessageOverlay, PlaybackToggleOverlay, SubtitleOverlay, UIContainer, } from 'bitmovin-player-ui';
2
2
  import { createPlayNextScreen } from './components/nativemobile/playnext';
3
3
  import { createCTABar } from './components/nativemobile/ctabar';
4
4
  import { createControlBar } from './components/nativemobile/controlbar';
5
5
  import { createTopBar } from './components/nativemobile/topbar';
6
6
  import { createSettingsPanel } from './components/settingspanel';
7
7
  import { createMiddleButtons } from './components/buttons';
8
+ import { createTitleBar } from './components/nativemobile/titlebar';
8
9
  export function sendCustomMessage(message) {
9
10
  if (window.bitmovin.customMessageHandler) {
10
11
  return JSON.parse(window.bitmovin.customMessageHandler.sendSynchronous(message)) || {};
@@ -25,10 +26,8 @@ export function nativeMobileUIContainer(player) {
25
26
  const settingsPanel = createSettingsPanel(player);
26
27
  const ctaBar = createCTABar(player);
27
28
  const topBar = createTopBar(player, settingsPanel);
28
- const controlBar = createControlBar(settingsPanel);
29
+ const controlBar = createControlBar(player, settingsPanel);
29
30
  const errorMessageOverlay = new ErrorMessageOverlay();
30
- // TODO: load this reponse data in the ui
31
- // player.on(PlayerEvent.SourceLoaded, () => console.log('source loaded', player.getSource()));
32
31
  return new UIContainer({
33
32
  components: [
34
33
  new SubtitleOverlay(),
@@ -38,12 +37,12 @@ export function nativeMobileUIContainer(player) {
38
37
  playNextScreen,
39
38
  middleButtons,
40
39
  controlBar,
41
- topBar,
42
40
  ctaBar,
43
- new Watermark(),
41
+ topBar,
42
+ createTitleBar(),
44
43
  errorMessageOverlay
45
44
  ],
46
45
  cssClasses: ['npo-player', 'native-mobile'],
47
46
  });
48
47
  }
49
- //# sourceMappingURL=nativemobileui.js.map
48
+ //# sourceMappingURL=nativemobileuicontainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativemobileuicontainer.js","sourceRoot":"","sources":["../../../../src/js/ui/nativemobileuicontainer.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,WAAW,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAKpE,MAAM,UAAU,iBAAiB,CAAC,OAAuB;IACrD,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;KACzF;IACD,OAAO,EAAE,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE;QACtC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAa,EAAE,EAAE;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAA;KACL;IAED,OAAO,EAAE,CAAA;AACb,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAE,MAAiB;IACtD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC1D,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;IAErD,OAAO,IAAI,WAAW,CAAC;QACnB,UAAU,EAAE;YACR,IAAI,eAAe,EAAE;YACrB,IAAI,gBAAgB,EAAE;YACtB,IAAI,qBAAqB,EAAE;YAC3B,IAAI,iBAAiB,EAAE;YACvB,cAAc;YACd,aAAa;YACb,UAAU;YACV,MAAM;YACN,MAAM;YACN,cAAc,EAAE;YAChB,mBAAmB;SACtB;QACD,UAAU,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;KAC9C,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PlayerAPI, UIConfig } from 'bitmovin-player';
2
+ import { UIManager } from 'bitmovin-player-ui';
3
+ export declare function nativeMobileUiFactory(player: PlayerAPI, config?: UIConfig): UIManager;
@@ -0,0 +1,43 @@
1
+ import { PlayerEvent } from 'bitmovin-player';
2
+ import { UIManager } from 'bitmovin-player-ui';
3
+ import { customSpecificErrorMessageOverlayConfig } from '../playeractions/handlers/customerrors';
4
+ import { localizationConfig } from '../utilities/localizationconfig';
5
+ import { nativeMobileUIContainer } from './nativemobileuicontainer';
6
+ import { addFragments } from '../ui/components/nativemobile/addFragments';
7
+ import { processNicam } from './handlers/nicamhandler';
8
+ export function nativeMobileUiFactory(player, config = {}) {
9
+ const uiConfig = {
10
+ ...config,
11
+ errorMessages: customSpecificErrorMessageOverlayConfig,
12
+ disableAutoHideWhenHovered: true
13
+ };
14
+ const playerSource = player.getSource();
15
+ const _streamObject = JSON.parse(playerSource?.metadata?.['StreamLink JSON'] || '{}');
16
+ UIManager.setLocalizationConfig(localizationConfig);
17
+ const mobileUIManager = new UIManager(player, nativeMobileUIContainer(player), uiConfig);
18
+ if (_streamObject.metadata.ageRating) {
19
+ processNicam(_streamObject, 'ui-container');
20
+ }
21
+ if (_streamObject.segment) {
22
+ const seg = _streamObject.segment;
23
+ const section = {
24
+ start: seg.inpoint,
25
+ end: seg.outpoint,
26
+ title: playerSource?.title || '',
27
+ };
28
+ player.off(PlayerEvent.Ready, () => addFragments(player, mobileUIManager, section));
29
+ player.on(PlayerEvent.Ready, () => addFragments(player, mobileUIManager, section));
30
+ }
31
+ else if (playerSource?.thumbnailTrack) {
32
+ const element = document.querySelector('.bmpui-npo-player .bmpui-seekbar-label-title');
33
+ if (element !== null) {
34
+ element.textContent = playerSource.title || '';
35
+ }
36
+ }
37
+ // Remove finished class when you start seeking again
38
+ player.on(PlayerEvent.Seeked, () => {
39
+ document.querySelector('.bmpui-npo-player.bmpui-player-state-finished')?.classList.remove('bmpui-player-state-finished');
40
+ });
41
+ return mobileUIManager;
42
+ }
43
+ //# sourceMappingURL=nativemobileuifactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativemobileuifactory.js","sourceRoot":"","sources":["../../../../src/js/ui/nativemobileuifactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAY,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,uCAAuC,EAAE,MAAM,wCAAwC,CAAA;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,UAAU,qBAAqB,CAAE,MAAiB,EAAE,SAAmB,EAAE;IAC3E,MAAM,QAAQ,GAAa;QACvB,GAAG,MAAM;QACT,aAAa,EAAE,uCAAuC;QACtD,0BAA0B,EAAE,IAAI;KACnC,CAAA;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IACvC,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAA;IAE1F,SAAS,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;IAEnD,MAAM,eAAe,GAAG,IAAI,SAAS,CACjC,MAAM,EACN,uBAAuB,CAAC,MAAM,CAAC,EAC/B,QAAQ,CACX,CAAA;IAED,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE;QAClC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;KAC9C;IAED,IAAI,aAAa,CAAC,OAAO,EAAE;QACvB,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAA;QACjC,MAAM,OAAO,GAAa;YACtB,KAAK,EAAE,GAAG,CAAC,OAAO;YAClB,GAAG,EAAE,GAAG,CAAC,QAAQ;YACjB,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;SACnC,CAAA;QAED,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;KACrF;SAAM,IAAI,YAAY,EAAE,cAAc,EAAE;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,8CAA8C,CAAC,CAAA;QAEtF,IAAI,OAAO,KAAK,IAAI,EAAE;YAClB,OAAO,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE,CAAA;SACjD;KACJ;IAED,qDAAqD;IACrD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE;QAC/B,QAAQ,CAAC,aAAa,CAAC,+CAA+C,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAA;IAC5H,CAAC,CAAC,CAAA;IAEF,OAAO,eAAe,CAAC;AAC3B,CAAC"}