@srgssr/pillarbox-web 1.28.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.27.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.27.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.27.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' */
@@ -3650,21 +3650,12 @@ class SrgSsr {
3650
3650
  * @param {Player} player
3651
3651
  * @param {Array<Segment>} [segments=[]]
3652
3652
  */
3653
- static addBlockedSegments(player, segments = []) {
3654
- const trackId = 'srgssr-blocked-segments';
3655
- const removeTrack = player.textTracks().getTrackById(trackId);
3656
- if (removeTrack) {
3657
- player.textTracks().removeTrack(removeTrack);
3658
- }
3659
- if (!Array.isArray(segments) || !segments.length) return;
3660
- const blockedSegments = segments.filter(segment => segment.blockReason);
3661
- if (!blockedSegments.length) return;
3662
- SrgSsr.createTextTrack(player, trackId).then(segmentTrack => {
3663
- blockedSegments.forEach(segment => {
3664
- SrgSsr.addTextTrackCue(segmentTrack, segment);
3665
- });
3666
- player.textTracks().addTrack(segmentTrack);
3667
- });
3653
+ static addBlockedSegments(_x) {
3654
+ return _asyncToGenerator(function* (player, segments = []) {
3655
+ const trackId = 'srgssr-blocked-segments';
3656
+ const blockedSegmentsToAdd = SrgSsr.getBlockedSegments(segments);
3657
+ yield SrgSsr.createTextTrack(player, trackId, blockedSegmentsToAdd);
3658
+ }).apply(this, arguments);
3668
3659
  }
3669
3660
 
3670
3661
  /**
@@ -3706,6 +3697,23 @@ class SrgSsr {
3706
3697
  textTrack.addCue(new VTTCue(startTime, endTime, JSON.stringify(data)));
3707
3698
  }
3708
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
+
3709
3717
  /**
3710
3718
  * Add multiple text tracks to the player.
3711
3719
  *
@@ -3728,20 +3736,12 @@ class SrgSsr {
3728
3736
  * @param {string} chapterUrn The URN of the main chapter.
3729
3737
  * @param {Array.<Chapter>} [chapters=[]]
3730
3738
  */
3731
- static addChapters(player, chapterUrn, chapters = []) {
3732
- const trackId = 'srgssr-chapters';
3733
- const removeTrack = player.textTracks().getTrackById(trackId);
3734
- if (removeTrack) {
3735
- player.textTracks().removeTrack(removeTrack);
3736
- }
3737
- if (!Array.isArray(chapters) || !chapters.length) return;
3738
- SrgSsr.createTextTrack(player, trackId).then(chapterTrack => {
3739
- chapters.forEach(chapter => {
3740
- if (chapterUrn !== chapter.fullLengthUrn) return;
3741
- SrgSsr.addTextTrackCue(chapterTrack, chapter);
3742
- });
3743
- player.textTracks().addTrack(chapterTrack);
3744
- });
3739
+ static addChapters(_x2, _x3) {
3740
+ return _asyncToGenerator(function* (player, chapterUrn, chapters = []) {
3741
+ const trackId = 'srgssr-chapters';
3742
+ const chaptersToAdd = SrgSsr.getChapters(chapterUrn, chapters);
3743
+ yield SrgSsr.createTextTrack(player, trackId, chaptersToAdd);
3744
+ }).apply(this, arguments);
3745
3745
  }
3746
3746
 
3747
3747
  /**
@@ -3750,19 +3750,12 @@ class SrgSsr {
3750
3750
  * @param {Player} player
3751
3751
  * @param {Array.<TimeInterval>} [intervals=[]]
3752
3752
  */
3753
- static addIntervals(player, intervals = []) {
3754
- const trackId = 'srgssr-intervals';
3755
- const removeTrack = player.textTracks().getTrackById(trackId);
3756
- if (removeTrack) {
3757
- player.textTracks().removeTrack(removeTrack);
3758
- }
3759
- if (!Array.isArray(intervals) || !intervals.length) return;
3760
- SrgSsr.createTextTrack(player, trackId).then(intervalTrack => {
3761
- intervals.forEach(interval => {
3762
- SrgSsr.addTextTrackCue(intervalTrack, interval);
3763
- });
3764
- player.textTracks().addTrack(intervalTrack);
3765
- });
3753
+ static addIntervals(_x4) {
3754
+ return _asyncToGenerator(function* (player, intervals = []) {
3755
+ const trackId = 'srgssr-intervals';
3756
+ const instervalsToAdd = SrgSsr.getIntervals(intervals);
3757
+ yield SrgSsr.createTextTrack(player, trackId, instervalsToAdd);
3758
+ }).apply(this, arguments);
3766
3759
  }
3767
3760
 
3768
3761
  /**
@@ -3866,25 +3859,42 @@ class SrgSsr {
3866
3859
  }
3867
3860
 
3868
3861
  /**
3869
- * Create a new metadata text track.
3862
+ * Create a new metadata text track and add it to the player.
3863
+ *
3864
+ * If a text track with the same trackId exists, it is deleted beforehand.
3870
3865
  *
3871
3866
  * @param {Player} player
3872
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
3873
3873
  *
3874
3874
  * @returns {Promise<TextTrack>}
3875
3875
  */
3876
- static createTextTrack(player, trackId) {
3877
- // See https://github.com/videojs/video.js/issues/8519
3878
- return new Promise(resolve => {
3879
- setTimeout(() => {
3880
- resolve(new pillarbox.TextTrack({
3881
- id: trackId,
3882
- kind: 'metadata',
3883
- label: trackId,
3884
- tech: player.tech(true)
3885
- }));
3886
- }, 100);
3887
- });
3876
+ static createTextTrack(_x5, _x6) {
3877
+ return _asyncToGenerator(function* (player, trackId, cues = []) {
3878
+ const removeTrack = player.textTracks().getTrackById(trackId);
3879
+ if (removeTrack) {
3880
+ player.textTracks().removeTrack(removeTrack);
3881
+ }
3882
+
3883
+ // See https://github.com/videojs/video.js/issues/8519
3884
+ const textTrack = yield new Promise(resolve => {
3885
+ setTimeout(() => {
3886
+ resolve(new pillarbox.TextTrack({
3887
+ id: trackId,
3888
+ kind: 'metadata',
3889
+ label: trackId,
3890
+ tech: player.tech(true)
3891
+ }));
3892
+ }, 100);
3893
+ });
3894
+ SrgSsr.addTextTrackCues(textTrack, cues);
3895
+ player.textTracks().addTrack(textTrack);
3896
+ return textTrack;
3897
+ }).apply(this, arguments);
3888
3898
  }
3889
3899
 
3890
3900
  /**
@@ -4019,6 +4029,44 @@ class SrgSsr {
4019
4029
  return isBlocked ? blockedSegment : undefined;
4020
4030
  }
4021
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
+
4022
4070
  /**
4023
4071
  * Get mediaComposition from an URN.
4024
4072
  *
@@ -4027,7 +4075,7 @@ class SrgSsr {
4027
4075
  *
4028
4076
  * @returns {Promise<MediaComposition>}
4029
4077
  */
4030
- static getMediaComposition(_x) {
4078
+ static getMediaComposition(_x7) {
4031
4079
  return _asyncToGenerator(function* (urn, handleRequest = new DataProvider().handleRequest()) {
4032
4080
  const data = yield handleRequest(urn);
4033
4081
  return Object.assign(new MediaComposition(), data);
@@ -4254,7 +4302,7 @@ class SrgSsr {
4254
4302
  var _ref = _asyncToGenerator(function* (srcObj, next) {
4255
4303
  return SrgSsr.handleSetSource(player, srcObj, next);
4256
4304
  });
4257
- return function setSource(_x2, _x3) {
4305
+ return function setSource(_x8, _x9) {
4258
4306
  return _ref.apply(this, arguments);
4259
4307
  };
4260
4308
  }()