@srgssr/pillarbox-web 1.29.0 → 1.30.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.
@@ -3,7 +3,7 @@
3
3
  const videojs = require('video.js');
4
4
  require('videojs-contrib-eme');
5
5
 
6
- const version = "1.28.0";
6
+ const version = "1.29.0";
7
7
 
8
8
  /** @import VJSPlayer from 'video.js/dist/types/player' */
9
9
  /** @import AudioTrack from 'video.js/dist/types/tracks/audio-track' */
@@ -1,7 +1,7 @@
1
1
  import videojs from 'video.js';
2
2
  import 'videojs-contrib-eme';
3
3
 
4
- const version = "1.28.0";
4
+ const version = "1.29.0";
5
5
 
6
6
  /** @import VJSPlayer from 'video.js/dist/types/player' */
7
7
  /** @import AudioTrack from 'video.js/dist/types/tracks/audio-track' */
@@ -94,7 +94,7 @@ function _toPropertyKey(t) {
94
94
  return "symbol" == typeof i ? i : i + "";
95
95
  }
96
96
 
97
- const version = "1.28.0";
97
+ const version = "1.29.0";
98
98
 
99
99
  /** @import VJSPlayer from 'video.js/dist/types/player' */
100
100
  /** @import AudioTrack from 'video.js/dist/types/tracks/audio-track' */
@@ -3653,13 +3653,8 @@ class SrgSsr {
3653
3653
  static addBlockedSegments(_x) {
3654
3654
  return _asyncToGenerator(function* (player, segments = []) {
3655
3655
  const trackId = 'srgssr-blocked-segments';
3656
- const segmentTrack = yield SrgSsr.createTextTrack(player, trackId);
3657
- if (!Array.isArray(segments) || !segments.length) return;
3658
- const blockedSegments = segments.filter(segment => segment.blockReason);
3659
- if (!blockedSegments.length) return;
3660
- blockedSegments.forEach(segment => {
3661
- SrgSsr.addTextTrackCue(segmentTrack, segment);
3662
- });
3656
+ const blockedSegmentsToAdd = SrgSsr.getBlockedSegments(segments);
3657
+ yield SrgSsr.createTextTrack(player, trackId, blockedSegmentsToAdd);
3663
3658
  }).apply(this, arguments);
3664
3659
  }
3665
3660
 
@@ -3702,6 +3697,23 @@ class SrgSsr {
3702
3697
  textTrack.addCue(new VTTCue(startTime, endTime, JSON.stringify(data)));
3703
3698
  }
3704
3699
 
3700
+ /**
3701
+ * Add a new cues to a text track with the given array.
3702
+ *
3703
+ * @param {TextTrack} textTrack
3704
+ * @param {Array.<
3705
+ * Segment |
3706
+ * Chapter |
3707
+ * TimeInterval>
3708
+ * } cues SRG SSR's cues-like representation
3709
+ */
3710
+ static addTextTrackCues(textTrack, cues = []) {
3711
+ if (!Array.isArray(cues)) return;
3712
+ cues.forEach(cue => {
3713
+ SrgSsr.addTextTrackCue(textTrack, cue);
3714
+ });
3715
+ }
3716
+
3705
3717
  /**
3706
3718
  * Add multiple text tracks to the player.
3707
3719
  *
@@ -3727,12 +3739,8 @@ class SrgSsr {
3727
3739
  static addChapters(_x2, _x3) {
3728
3740
  return _asyncToGenerator(function* (player, chapterUrn, chapters = []) {
3729
3741
  const trackId = 'srgssr-chapters';
3730
- const chapterTrack = yield SrgSsr.createTextTrack(player, trackId);
3731
- if (!Array.isArray(chapters) || !chapters.length) return;
3732
- chapters.forEach(chapter => {
3733
- if (chapterUrn !== chapter.fullLengthUrn) return;
3734
- SrgSsr.addTextTrackCue(chapterTrack, chapter);
3735
- });
3742
+ const chaptersToAdd = SrgSsr.getChapters(chapterUrn, chapters);
3743
+ yield SrgSsr.createTextTrack(player, trackId, chaptersToAdd);
3736
3744
  }).apply(this, arguments);
3737
3745
  }
3738
3746
 
@@ -3745,11 +3753,8 @@ class SrgSsr {
3745
3753
  static addIntervals(_x4) {
3746
3754
  return _asyncToGenerator(function* (player, intervals = []) {
3747
3755
  const trackId = 'srgssr-intervals';
3748
- const intervalTrack = yield SrgSsr.createTextTrack(player, trackId);
3749
- if (!Array.isArray(intervals) || !intervals.length) return;
3750
- intervals.forEach(interval => {
3751
- SrgSsr.addTextTrackCue(intervalTrack, interval);
3752
- });
3756
+ const instervalsToAdd = SrgSsr.getIntervals(intervals);
3757
+ yield SrgSsr.createTextTrack(player, trackId, instervalsToAdd);
3753
3758
  }).apply(this, arguments);
3754
3759
  }
3755
3760
 
@@ -3860,11 +3865,16 @@ class SrgSsr {
3860
3865
  *
3861
3866
  * @param {Player} player
3862
3867
  * @param {String} trackId Text track unique ID
3868
+ * @param {Array.<
3869
+ * Segment |
3870
+ * Chapter |
3871
+ * TimeInterval>
3872
+ * } cues SRG SSR's cues-like representation
3863
3873
  *
3864
3874
  * @returns {Promise<TextTrack>}
3865
3875
  */
3866
- static createTextTrack(player, trackId) {
3867
- return _asyncToGenerator(function* () {
3876
+ static createTextTrack(_x5, _x6) {
3877
+ return _asyncToGenerator(function* (player, trackId, cues = []) {
3868
3878
  const removeTrack = player.textTracks().getTrackById(trackId);
3869
3879
  if (removeTrack) {
3870
3880
  player.textTracks().removeTrack(removeTrack);
@@ -3881,9 +3891,10 @@ class SrgSsr {
3881
3891
  }));
3882
3892
  }, 100);
3883
3893
  });
3894
+ SrgSsr.addTextTrackCues(textTrack, cues);
3884
3895
  player.textTracks().addTrack(textTrack);
3885
3896
  return textTrack;
3886
- })();
3897
+ }).apply(this, arguments);
3887
3898
  }
3888
3899
 
3889
3900
  /**
@@ -4018,6 +4029,44 @@ class SrgSsr {
4018
4029
  return isBlocked ? blockedSegment : undefined;
4019
4030
  }
4020
4031
 
4032
+ /**
4033
+ * Get blocked segments.
4034
+ *
4035
+ * @param {Player} player
4036
+ * @param {Array<Segment>} [segments=[]]
4037
+ *
4038
+ * @returns {Array<Segment>}
4039
+ */
4040
+ static getBlockedSegments(segments = []) {
4041
+ if (!Array.isArray(segments) || !segments.length) return [];
4042
+ return segments.filter(segment => segment.blockReason);
4043
+ }
4044
+
4045
+ /**
4046
+ * Get chapters related to the main chapter.
4047
+ *
4048
+ * @param {string} chapterUrn The URN of the main chapter.
4049
+ * @param {Array.<Chapter>} [chapters=[]]
4050
+ *
4051
+ * @returns {Array.<Chapter>}
4052
+ */
4053
+ static getChapters(chapterUrn, chapters = []) {
4054
+ if (!Array.isArray(chapters) || !chapters.length) return [];
4055
+ return chapters.filter(chapter => chapterUrn === chapter.fullLengthUrn);
4056
+ }
4057
+
4058
+ /**
4059
+ * Get intervals.
4060
+ *
4061
+ * @param {Array<TimeInterval>} [segments=[]]
4062
+ *
4063
+ * @returns {Array<TimeInterval>}
4064
+ */
4065
+ static getIntervals(intervals = []) {
4066
+ if (!Array.isArray(intervals) || !intervals.length) return [];
4067
+ return intervals;
4068
+ }
4069
+
4021
4070
  /**
4022
4071
  * Get mediaComposition from an URN.
4023
4072
  *
@@ -4026,7 +4075,7 @@ class SrgSsr {
4026
4075
  *
4027
4076
  * @returns {Promise<MediaComposition>}
4028
4077
  */
4029
- static getMediaComposition(_x5) {
4078
+ static getMediaComposition(_x7) {
4030
4079
  return _asyncToGenerator(function* (urn, handleRequest = new DataProvider().handleRequest()) {
4031
4080
  const data = yield handleRequest(urn);
4032
4081
  return Object.assign(new MediaComposition(), data);
@@ -4253,7 +4302,7 @@ class SrgSsr {
4253
4302
  var _ref = _asyncToGenerator(function* (srcObj, next) {
4254
4303
  return SrgSsr.handleSetSource(player, srcObj, next);
4255
4304
  });
4256
- return function setSource(_x6, _x7) {
4305
+ return function setSource(_x8, _x9) {
4257
4306
  return _ref.apply(this, arguments);
4258
4307
  };
4259
4308
  }()