@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.
@@ -90,7 +90,7 @@ function _toPropertyKey(t) {
90
90
  return "symbol" == typeof i ? i : i + "";
91
91
  }
92
92
 
93
- const version = "1.28.0";
93
+ const version = "1.30.0";
94
94
 
95
95
  /** @import VJSPlayer from 'video.js/dist/types/player' */
96
96
  /** @import AudioTrack from 'video.js/dist/types/tracks/audio-track' */
@@ -3649,13 +3649,8 @@ class SrgSsr {
3649
3649
  static addBlockedSegments(_x) {
3650
3650
  return _asyncToGenerator(function* (player, segments = []) {
3651
3651
  const trackId = 'srgssr-blocked-segments';
3652
- const segmentTrack = yield SrgSsr.createTextTrack(player, trackId);
3653
- if (!Array.isArray(segments) || !segments.length) return;
3654
- const blockedSegments = segments.filter(segment => segment.blockReason);
3655
- if (!blockedSegments.length) return;
3656
- blockedSegments.forEach(segment => {
3657
- SrgSsr.addTextTrackCue(segmentTrack, segment);
3658
- });
3652
+ const blockedSegmentsToAdd = SrgSsr.getBlockedSegments(segments);
3653
+ yield SrgSsr.createTextTrack(player, trackId, blockedSegmentsToAdd);
3659
3654
  }).apply(this, arguments);
3660
3655
  }
3661
3656
 
@@ -3695,7 +3690,29 @@ class SrgSsr {
3695
3690
  static addTextTrackCue(textTrack, data) {
3696
3691
  const startTime = (Number.isFinite(data.markIn) ? data.markIn : data.fullLengthMarkIn) / 1000;
3697
3692
  const endTime = (Number.isFinite(data.markOut) ? data.markOut : data.fullLengthMarkOut) / 1000;
3698
- textTrack.addCue(new VTTCue(startTime, endTime, JSON.stringify(data)));
3693
+ const text = JSON.stringify(data);
3694
+ const cue = new VTTCue(startTime, endTime, text);
3695
+ if (data.urn) {
3696
+ cue.id = data.urn;
3697
+ }
3698
+ textTrack.addCue(cue);
3699
+ }
3700
+
3701
+ /**
3702
+ * Add a new cues to a text track with the given array.
3703
+ *
3704
+ * @param {TextTrack} textTrack
3705
+ * @param {Array.<
3706
+ * Segment |
3707
+ * Chapter |
3708
+ * TimeInterval>
3709
+ * } cues SRG SSR's cues-like representation
3710
+ */
3711
+ static addTextTrackCues(textTrack, cues = []) {
3712
+ if (!Array.isArray(cues)) return;
3713
+ cues.forEach(cue => {
3714
+ SrgSsr.addTextTrackCue(textTrack, cue);
3715
+ });
3699
3716
  }
3700
3717
 
3701
3718
  /**
@@ -3723,12 +3740,8 @@ class SrgSsr {
3723
3740
  static addChapters(_x2, _x3) {
3724
3741
  return _asyncToGenerator(function* (player, chapterUrn, chapters = []) {
3725
3742
  const trackId = 'srgssr-chapters';
3726
- const chapterTrack = yield SrgSsr.createTextTrack(player, trackId);
3727
- if (!Array.isArray(chapters) || !chapters.length) return;
3728
- chapters.forEach(chapter => {
3729
- if (chapterUrn !== chapter.fullLengthUrn) return;
3730
- SrgSsr.addTextTrackCue(chapterTrack, chapter);
3731
- });
3743
+ const chaptersToAdd = SrgSsr.getChapters(chapterUrn, chapters);
3744
+ yield SrgSsr.createTextTrack(player, trackId, chaptersToAdd);
3732
3745
  }).apply(this, arguments);
3733
3746
  }
3734
3747
 
@@ -3741,11 +3754,8 @@ class SrgSsr {
3741
3754
  static addIntervals(_x4) {
3742
3755
  return _asyncToGenerator(function* (player, intervals = []) {
3743
3756
  const trackId = 'srgssr-intervals';
3744
- const intervalTrack = yield SrgSsr.createTextTrack(player, trackId);
3745
- if (!Array.isArray(intervals) || !intervals.length) return;
3746
- intervals.forEach(interval => {
3747
- SrgSsr.addTextTrackCue(intervalTrack, interval);
3748
- });
3757
+ const instervalsToAdd = SrgSsr.getIntervals(intervals);
3758
+ yield SrgSsr.createTextTrack(player, trackId, instervalsToAdd);
3749
3759
  }).apply(this, arguments);
3750
3760
  }
3751
3761
 
@@ -3856,11 +3866,16 @@ class SrgSsr {
3856
3866
  *
3857
3867
  * @param {Player} player
3858
3868
  * @param {String} trackId Text track unique ID
3869
+ * @param {Array.<
3870
+ * Segment |
3871
+ * Chapter |
3872
+ * TimeInterval>
3873
+ * } cues SRG SSR's cues-like representation
3859
3874
  *
3860
3875
  * @returns {Promise<TextTrack>}
3861
3876
  */
3862
- static createTextTrack(player, trackId) {
3863
- return _asyncToGenerator(function* () {
3877
+ static createTextTrack(_x5, _x6) {
3878
+ return _asyncToGenerator(function* (player, trackId, cues = []) {
3864
3879
  const removeTrack = player.textTracks().getTrackById(trackId);
3865
3880
  if (removeTrack) {
3866
3881
  player.textTracks().removeTrack(removeTrack);
@@ -3877,9 +3892,10 @@ class SrgSsr {
3877
3892
  }));
3878
3893
  }, 100);
3879
3894
  });
3895
+ SrgSsr.addTextTrackCues(textTrack, cues);
3880
3896
  player.textTracks().addTrack(textTrack);
3881
3897
  return textTrack;
3882
- })();
3898
+ }).apply(this, arguments);
3883
3899
  }
3884
3900
 
3885
3901
  /**
@@ -4014,6 +4030,44 @@ class SrgSsr {
4014
4030
  return isBlocked ? blockedSegment : undefined;
4015
4031
  }
4016
4032
 
4033
+ /**
4034
+ * Get blocked segments.
4035
+ *
4036
+ * @param {Player} player
4037
+ * @param {Array<Segment>} [segments=[]]
4038
+ *
4039
+ * @returns {Array<Segment>}
4040
+ */
4041
+ static getBlockedSegments(segments = []) {
4042
+ if (!Array.isArray(segments) || !segments.length) return [];
4043
+ return segments.filter(segment => segment.blockReason);
4044
+ }
4045
+
4046
+ /**
4047
+ * Get chapters related to the main chapter.
4048
+ *
4049
+ * @param {string} chapterUrn The URN of the main chapter.
4050
+ * @param {Array.<Chapter>} [chapters=[]]
4051
+ *
4052
+ * @returns {Array.<Chapter>}
4053
+ */
4054
+ static getChapters(chapterUrn, chapters = []) {
4055
+ if (!Array.isArray(chapters) || !chapters.length) return [];
4056
+ return chapters.filter(chapter => chapterUrn === chapter.fullLengthUrn);
4057
+ }
4058
+
4059
+ /**
4060
+ * Get intervals.
4061
+ *
4062
+ * @param {Array<TimeInterval>} [segments=[]]
4063
+ *
4064
+ * @returns {Array<TimeInterval>}
4065
+ */
4066
+ static getIntervals(intervals = []) {
4067
+ if (!Array.isArray(intervals) || !intervals.length) return [];
4068
+ return intervals;
4069
+ }
4070
+
4017
4071
  /**
4018
4072
  * Get mediaComposition from an URN.
4019
4073
  *
@@ -4022,7 +4076,7 @@ class SrgSsr {
4022
4076
  *
4023
4077
  * @returns {Promise<MediaComposition>}
4024
4078
  */
4025
- static getMediaComposition(_x5) {
4079
+ static getMediaComposition(_x7) {
4026
4080
  return _asyncToGenerator(function* (urn, handleRequest = new DataProvider().handleRequest()) {
4027
4081
  const data = yield handleRequest(urn);
4028
4082
  return Object.assign(new MediaComposition(), data);
@@ -4249,7 +4303,7 @@ class SrgSsr {
4249
4303
  var _ref = _asyncToGenerator(function* (srcObj, next) {
4250
4304
  return SrgSsr.handleSetSource(player, srcObj, next);
4251
4305
  });
4252
- return function setSource(_x6, _x7) {
4306
+ return function setSource(_x8, _x9) {
4253
4307
  return _ref.apply(this, arguments);
4254
4308
  };
4255
4309
  }()