@srgssr/pillarbox-web 1.29.0 → 1.31.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.30.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.30.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.30.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
 
@@ -3699,7 +3694,29 @@ class SrgSsr {
3699
3694
  static addTextTrackCue(textTrack, data) {
3700
3695
  const startTime = (Number.isFinite(data.markIn) ? data.markIn : data.fullLengthMarkIn) / 1000;
3701
3696
  const endTime = (Number.isFinite(data.markOut) ? data.markOut : data.fullLengthMarkOut) / 1000;
3702
- textTrack.addCue(new VTTCue(startTime, endTime, JSON.stringify(data)));
3697
+ const text = JSON.stringify(data);
3698
+ const cue = new VTTCue(startTime, endTime, text);
3699
+ if (data.urn) {
3700
+ cue.id = data.urn;
3701
+ }
3702
+ textTrack.addCue(cue);
3703
+ }
3704
+
3705
+ /**
3706
+ * Add a new cues to a text track with the given array.
3707
+ *
3708
+ * @param {TextTrack} textTrack
3709
+ * @param {Array.<
3710
+ * Segment |
3711
+ * Chapter |
3712
+ * TimeInterval>
3713
+ * } cues SRG SSR's cues-like representation
3714
+ */
3715
+ static addTextTrackCues(textTrack, cues = []) {
3716
+ if (!Array.isArray(cues)) return;
3717
+ cues.forEach(cue => {
3718
+ SrgSsr.addTextTrackCue(textTrack, cue);
3719
+ });
3703
3720
  }
3704
3721
 
3705
3722
  /**
@@ -3727,12 +3744,8 @@ class SrgSsr {
3727
3744
  static addChapters(_x2, _x3) {
3728
3745
  return _asyncToGenerator(function* (player, chapterUrn, chapters = []) {
3729
3746
  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
- });
3747
+ const chaptersToAdd = SrgSsr.getChapters(chapterUrn, chapters);
3748
+ yield SrgSsr.createTextTrack(player, trackId, chaptersToAdd);
3736
3749
  }).apply(this, arguments);
3737
3750
  }
3738
3751
 
@@ -3745,11 +3758,8 @@ class SrgSsr {
3745
3758
  static addIntervals(_x4) {
3746
3759
  return _asyncToGenerator(function* (player, intervals = []) {
3747
3760
  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
- });
3761
+ const instervalsToAdd = SrgSsr.getIntervals(intervals);
3762
+ yield SrgSsr.createTextTrack(player, trackId, instervalsToAdd);
3753
3763
  }).apply(this, arguments);
3754
3764
  }
3755
3765
 
@@ -3860,11 +3870,16 @@ class SrgSsr {
3860
3870
  *
3861
3871
  * @param {Player} player
3862
3872
  * @param {String} trackId Text track unique ID
3873
+ * @param {Array.<
3874
+ * Segment |
3875
+ * Chapter |
3876
+ * TimeInterval>
3877
+ * } cues SRG SSR's cues-like representation
3863
3878
  *
3864
3879
  * @returns {Promise<TextTrack>}
3865
3880
  */
3866
- static createTextTrack(player, trackId) {
3867
- return _asyncToGenerator(function* () {
3881
+ static createTextTrack(_x5, _x6) {
3882
+ return _asyncToGenerator(function* (player, trackId, cues = []) {
3868
3883
  const removeTrack = player.textTracks().getTrackById(trackId);
3869
3884
  if (removeTrack) {
3870
3885
  player.textTracks().removeTrack(removeTrack);
@@ -3881,9 +3896,10 @@ class SrgSsr {
3881
3896
  }));
3882
3897
  }, 100);
3883
3898
  });
3899
+ SrgSsr.addTextTrackCues(textTrack, cues);
3884
3900
  player.textTracks().addTrack(textTrack);
3885
3901
  return textTrack;
3886
- })();
3902
+ }).apply(this, arguments);
3887
3903
  }
3888
3904
 
3889
3905
  /**
@@ -4018,6 +4034,44 @@ class SrgSsr {
4018
4034
  return isBlocked ? blockedSegment : undefined;
4019
4035
  }
4020
4036
 
4037
+ /**
4038
+ * Get blocked segments.
4039
+ *
4040
+ * @param {Player} player
4041
+ * @param {Array<Segment>} [segments=[]]
4042
+ *
4043
+ * @returns {Array<Segment>}
4044
+ */
4045
+ static getBlockedSegments(segments = []) {
4046
+ if (!Array.isArray(segments) || !segments.length) return [];
4047
+ return segments.filter(segment => segment.blockReason);
4048
+ }
4049
+
4050
+ /**
4051
+ * Get chapters related to the main chapter.
4052
+ *
4053
+ * @param {string} chapterUrn The URN of the main chapter.
4054
+ * @param {Array.<Chapter>} [chapters=[]]
4055
+ *
4056
+ * @returns {Array.<Chapter>}
4057
+ */
4058
+ static getChapters(chapterUrn, chapters = []) {
4059
+ if (!Array.isArray(chapters) || !chapters.length) return [];
4060
+ return chapters.filter(chapter => chapterUrn === chapter.fullLengthUrn);
4061
+ }
4062
+
4063
+ /**
4064
+ * Get intervals.
4065
+ *
4066
+ * @param {Array<TimeInterval>} [segments=[]]
4067
+ *
4068
+ * @returns {Array<TimeInterval>}
4069
+ */
4070
+ static getIntervals(intervals = []) {
4071
+ if (!Array.isArray(intervals) || !intervals.length) return [];
4072
+ return intervals;
4073
+ }
4074
+
4021
4075
  /**
4022
4076
  * Get mediaComposition from an URN.
4023
4077
  *
@@ -4026,7 +4080,7 @@ class SrgSsr {
4026
4080
  *
4027
4081
  * @returns {Promise<MediaComposition>}
4028
4082
  */
4029
- static getMediaComposition(_x5) {
4083
+ static getMediaComposition(_x7) {
4030
4084
  return _asyncToGenerator(function* (urn, handleRequest = new DataProvider().handleRequest()) {
4031
4085
  const data = yield handleRequest(urn);
4032
4086
  return Object.assign(new MediaComposition(), data);
@@ -4253,7 +4307,7 @@ class SrgSsr {
4253
4307
  var _ref = _asyncToGenerator(function* (srcObj, next) {
4254
4308
  return SrgSsr.handleSetSource(player, srcObj, next);
4255
4309
  });
4256
- return function setSource(_x6, _x7) {
4310
+ return function setSource(_x8, _x9) {
4257
4311
  return _ref.apply(this, arguments);
4258
4312
  };
4259
4313
  }()