@gcorevideo/player 2.28.35 → 2.28.36

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 (31) hide show
  1. package/README.md +22 -1
  2. package/assets/{subtitles → cc}/style.scss +5 -0
  3. package/dist/core.js +17 -23
  4. package/dist/index.css +346 -342
  5. package/dist/index.embed.js +46 -39
  6. package/dist/index.js +46 -39
  7. package/lib/playback/BasePlayback.d.ts +1 -0
  8. package/lib/playback/BasePlayback.d.ts.map +1 -1
  9. package/lib/playback/BasePlayback.js +3 -0
  10. package/lib/playback/dash-playback/DashPlayback.d.ts +1 -0
  11. package/lib/playback/dash-playback/DashPlayback.d.ts.map +1 -1
  12. package/lib/playback/dash-playback/DashPlayback.js +9 -22
  13. package/lib/playback/hls-playback/HlsPlayback.d.ts.map +1 -1
  14. package/lib/playback/hls-playback/HlsPlayback.js +4 -0
  15. package/lib/plugins/subtitles/ClosedCaptions.d.ts +1 -1
  16. package/lib/plugins/subtitles/ClosedCaptions.d.ts.map +1 -1
  17. package/lib/plugins/subtitles/ClosedCaptions.js +32 -22
  18. package/lib/testUtils.d.ts +1 -0
  19. package/lib/testUtils.d.ts.map +1 -1
  20. package/lib/testUtils.js +3 -0
  21. package/package.json +1 -1
  22. package/src/playback/BasePlayback.ts +4 -0
  23. package/src/playback/dash-playback/DashPlayback.ts +10 -27
  24. package/src/playback/hls-playback/HlsPlayback.ts +4 -0
  25. package/src/plugins/subtitles/ClosedCaptions.ts +34 -20
  26. package/src/plugins/subtitles/__tests__/ClosedCaptions.test.ts +73 -112
  27. package/src/plugins/subtitles/__tests__/__snapshots__/ClosedCaptions.test.ts.snap +3 -3
  28. package/src/testUtils.ts +3 -0
  29. package/tsconfig.tsbuildinfo +1 -1
  30. /package/assets/{subtitles → cc}/combobox.ejs +0 -0
  31. /package/assets/{subtitles → cc}/string.ejs +0 -0
@@ -12674,6 +12674,9 @@ class BasePlayback extends HTML5Video$1 {
12674
12674
  super._onPlaying();
12675
12675
  this.trigger(Events$1.PLAYBACK_MEDIACONTROL_ENABLE);
12676
12676
  }
12677
+ setTextTrack(id) {
12678
+ // noop
12679
+ }
12677
12680
  }
12678
12681
 
12679
12682
  var PlaybackEvents;
@@ -12696,6 +12699,7 @@ const T$8 = 'playback.dash';
12696
12699
  class DashPlayback extends BasePlayback {
12697
12700
  _levels = [];
12698
12701
  _currentLevel = AUTO$1;
12702
+ _currentTextTrackId = -1;
12699
12703
  // true when the actual duration is longer than hlsjs's live sync point
12700
12704
  // when this is false playableRegionDuration will be the actual duration
12701
12705
  // when this is true playableRegionDuration will exclude the time after the sync point
@@ -12828,7 +12832,11 @@ class DashPlayback extends BasePlayback {
12828
12832
  streaming: {
12829
12833
  text: {
12830
12834
  defaultEnabled: false,
12831
- dispatchForManualRendering: true,
12835
+ // NOTE: dispatchForManualRendering is not correctly implemented in DASH.js;
12836
+ // it does not work when there are multiple text tracks.
12837
+ // CUE_ENTER and CUE_EXIT events might be dispatched additionally
12838
+ // for a track, other than the currently active one.
12839
+ // dispatchForManualRendering: true, // TODO only when useNativeSubtitles is not true?
12832
12840
  },
12833
12841
  },
12834
12842
  }, this.options.dash);
@@ -12872,24 +12880,6 @@ class DashPlayback extends BasePlayback {
12872
12880
  this._dash.on(_.events.PLAYBACK_RATE_CHANGED, (e) => {
12873
12881
  this.trigger(PlaybackEvents.PLAYBACK_RATE_CHANGED, e.playbackRate);
12874
12882
  });
12875
- this._dash.on(_.events.TRACK_CHANGE_RENDERED, (e) => {
12876
- if (e.mediaType === 'audio') {
12877
- this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack$1(e.newMediaInfo));
12878
- }
12879
- });
12880
- this._dash.on(_.events.CUE_ENTER, (e) => {
12881
- this.oncueenter?.({
12882
- end: e.end,
12883
- id: e.id,
12884
- start: e.start,
12885
- text: e.text,
12886
- });
12887
- });
12888
- this._dash.on(_.events.CUE_EXIT, (e) => {
12889
- this.oncueexit?.({
12890
- id: e.id,
12891
- });
12892
- });
12893
12883
  }
12894
12884
  render() {
12895
12885
  this._ready();
@@ -13199,14 +13189,14 @@ class DashPlayback extends BasePlayback {
13199
13189
  this._dash?.setTextTrack(this.closedCaptionsTrackId);
13200
13190
  }
13201
13191
  setTextTrack(id) {
13192
+ this._currentTextTrackId = id;
13202
13193
  this._dash?.setTextTrack(id);
13203
13194
  }
13204
13195
  /**
13205
13196
  * @override
13206
13197
  */
13207
13198
  get closedCaptionsTracks() {
13208
- const tt = this.getTextTracks();
13209
- return tt;
13199
+ return this.getTextTracks();
13210
13200
  }
13211
13201
  getTextTracks() {
13212
13202
  return this._dash?.getTracksFor('text').map((t, index) => ({
@@ -13216,7 +13206,7 @@ class DashPlayback extends BasePlayback {
13216
13206
  id: index,
13217
13207
  label: getTextTrackLabel(t) || "",
13218
13208
  language: t.lang,
13219
- mode: "hidden",
13209
+ mode: this._currentTextTrackId === index ? "showing" : "hidden",
13220
13210
  },
13221
13211
  })) || [];
13222
13212
  }
@@ -50727,7 +50717,11 @@ class HlsPlayback extends BasePlayback {
50727
50717
  this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
50728
50718
  }
50729
50719
  setTextTrack(id) {
50720
+ if (id === this._hls.subtitleTrack) {
50721
+ return;
50722
+ }
50730
50723
  this._hls.subtitleTrack = id;
50724
+ this.cues = [];
50731
50725
  }
50732
50726
  /**
50733
50727
  * @override
@@ -58549,7 +58543,7 @@ class SourceController extends CorePlugin {
58549
58543
  }
58550
58544
  }
58551
58545
 
58552
- insertStyle(".media-control-skin-1 .media-control-cc button.media-control-button {\n display: flex;\n justify-content: center;\n padding: 0;\n align-items: center;\n vertical-align: top;\n}\n.media-control-skin-1 .media-control-cc button.media-control-button:hover {\n color: white;\n}\n.media-control-skin-1 .media-control-cc ul li {\n text-align: center;\n}\n.media-control-skin-1 .media-control-cc ul li a {\n height: 30px;\n padding: 5px 10px;\n color: #fffffe;\n}\n.media-control-skin-1 .media-control-cc ul li a:hover {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.media-control-skin-1 .media-control-cc ul li.current a {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.media-control-skin-1 .media-control-cc ul li:first-child a {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-cc ul li:last-child a {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-cc {\n position: relative;\n order: 85;\n}\n\n::cue {\n visibility: hidden !important;\n font-size: 0 !important;\n}\n\n.ios-fullscreen::cue {\n visibility: visible !important;\n font-size: 1em !important;\n}\n\n.container .gplayer-cc-line {\n position: absolute;\n bottom: calc(var(--bottom-panel) + 5px);\n width: 100%;\n}\n.container .gplayer-cc-line p {\n width: auto;\n background-color: rgba(0, 0, 0, 0.4);\n color: white;\n display: inline-block;\n}");
58546
+ insertStyle(".media-control-skin-1 .media-control-cc button.media-control-button {\n display: flex;\n justify-content: center;\n padding: 0;\n align-items: center;\n vertical-align: top;\n}\n.media-control-skin-1 .media-control-cc button.media-control-button:hover {\n color: white;\n}\n.media-control-skin-1 .media-control-cc ul li {\n text-align: center;\n}\n.media-control-skin-1 .media-control-cc ul li a {\n height: 30px;\n padding: 5px 10px;\n color: #fffffe;\n}\n.media-control-skin-1 .media-control-cc ul li a:hover {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.media-control-skin-1 .media-control-cc ul li.current a {\n background-color: rgba(0, 0, 0, 0.4);\n}\n.media-control-skin-1 .media-control-cc ul li:first-child a {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-cc ul li:last-child a {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.media-control-skin-1 .media-control-cc {\n position: relative;\n order: 85;\n}\n\n::cue {\n visibility: hidden !important;\n font-size: 0 !important;\n}\n\n.ios-fullscreen::cue {\n visibility: visible !important;\n font-size: 1em !important;\n}\n\n.container .gplayer-cc-line {\n position: absolute;\n bottom: calc(var(--bottom-panel) + 5px);\n width: 100%;\n transition: transform 0.3s ease-out;\n}\n.container .gplayer-cc-line.media-control-cc-pulled {\n transform: translateY(var(--bottom-panel));\n}\n.container .gplayer-cc-line p {\n width: auto;\n background-color: rgba(0, 0, 0, 0.4);\n color: white;\n display: inline-block;\n}");
58553
58547
 
58554
58548
  const subtitlesOffIcon = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.238 16.1C13.979 16.1 12.578 14.538 12.578 11.997C12.578 9.462 13.973 7.9 16.238 7.9C18.087 7.9 19.5029 9.127 19.6219 10.824H18.032C17.876 9.927 17.168 9.338 16.238 9.338C15.011 9.338 14.249 10.354 14.249 11.997C14.249 13.641 15.011 14.662 16.243 14.662C17.178 14.662 17.881 14.111 18.038 13.251H19.627C19.492 14.938 18.119 16.1 16.238 16.1ZM8.03198 16.1C5.77298 16.1 4.37299 14.538 4.37299 11.997C4.37299 9.462 5.76798 7.9 8.03198 7.9C9.88098 7.9 11.298 9.127 11.416 10.824H9.82697C9.67097 9.927 8.96198 9.338 8.03198 9.338C6.80598 9.338 6.04297 10.354 6.04297 11.997C6.04297 13.641 6.80596 14.662 8.03796 14.662C8.97296 14.662 9.67601 14.111 9.83301 13.251H11.422C11.287 14.938 9.91398 16.1 8.03198 16.1ZM22.5 3H1.5C0.672 3 0 3.671 0 4.5V19.5C0 20.329 0.672 21 1.5 21H22.5C23.329 21 24 20.329 24 19.5V4.5C24 3.671 23.329 3 22.5 3Z\"\n fill=\"#C9C9C9\"/>\n</svg>\n";
58555
58549
 
@@ -58661,8 +58655,12 @@ class ClosedCaptions extends UICorePlugin {
58661
58655
  const mediaControl = this.core.getPlugin('media_control');
58662
58656
  assert(mediaControl, 'media_control plugin is required');
58663
58657
  this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, this.mount);
58658
+ this.listenTo(mediaControl, Events$1.MEDIACONTROL_SHOW, () => {
58659
+ this.$line?.removeClass('media-control-cc-pulled');
58660
+ });
58664
58661
  this.listenTo(mediaControl, Events$1.MEDIACONTROL_HIDE, () => {
58665
58662
  this.hideMenu();
58663
+ this.$line?.addClass('media-control-cc-pulled');
58666
58664
  });
58667
58665
  this.listenTo(mediaControl, ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, (from) => {
58668
58666
  if (from !== this.name) {
@@ -58720,23 +58718,27 @@ class ClosedCaptions extends UICorePlugin {
58720
58718
  this.activateTrack(id);
58721
58719
  }
58722
58720
  activateTrack(id) {
58723
- if (this.core.activePlayback && ['dash', 'hls'].includes(this.core.activePlayback.name)) {
58724
- this.core.activePlayback.setTextTrack(id);
58721
+ const isManaged = this.core.activePlayback?.name === 'hls';
58722
+ this.core.activePlayback.setTextTrack(id);
58723
+ if (isManaged) {
58725
58724
  return;
58726
58725
  }
58727
- for (const track of this.currentTracks) {
58728
- if (track.id === id) {
58726
+ if (!this.core.activePlayback?.el.textTracks) {
58727
+ return;
58728
+ }
58729
+ for (const [index, track] of Array.from(this.core.activePlayback?.el.textTracks ?? []).entries()) {
58730
+ if (index === id) {
58729
58731
  if (this.useNativeSubtitles) {
58730
- track.track.mode = 'showing';
58732
+ track.mode = 'showing';
58731
58733
  }
58732
58734
  else {
58733
- track.track.mode = 'hidden';
58735
+ track.mode = 'hidden';
58734
58736
  }
58735
- this.setSubtitleText(this.getSubtitleText(track.track));
58736
- track.track.oncuechange = (e) => {
58737
+ this.setSubtitleText(this.getSubtitleText(track));
58738
+ track.oncuechange = () => {
58737
58739
  try {
58738
- if (track.track.activeCues?.length) {
58739
- const html = track.track.activeCues[0].getCueAsHTML();
58740
+ if (track.activeCues?.length) {
58741
+ const html = track.activeCues[0].getCueAsHTML();
58740
58742
  this.setSubtitleText(html);
58741
58743
  }
58742
58744
  else {
@@ -58748,8 +58750,8 @@ class ClosedCaptions extends UICorePlugin {
58748
58750
  };
58749
58751
  }
58750
58752
  else {
58751
- track.track.oncuechange = () => { };
58752
- track.track.mode = 'disabled';
58753
+ track.oncuechange = () => { };
58754
+ track.mode = 'disabled';
58753
58755
  }
58754
58756
  }
58755
58757
  }
@@ -58790,8 +58792,10 @@ class ClosedCaptions extends UICorePlugin {
58790
58792
  this.$el.find('#gplayer-cc-menu').hide();
58791
58793
  this.$el.find('#gplayer-cc-button').attr('aria-expanded', 'false');
58792
58794
  this.$line.hide();
58793
- for (const track of this.currentTracks) {
58794
- track.track.mode = 'hidden';
58795
+ for (const track of this.core.activePlayback.el.textTracks) {
58796
+ if (track.mode === 'showing') {
58797
+ track.mode = 'hidden';
58798
+ }
58795
58799
  }
58796
58800
  }
58797
58801
  /**
@@ -58803,7 +58807,6 @@ class ClosedCaptions extends UICorePlugin {
58803
58807
  if (this.core.activeContainer &&
58804
58808
  isFullscreen(this.core.activeContainer.el) &&
58805
58809
  this.currentTrack &&
58806
- // this.currentTrack.track.mode &&
58807
58810
  (Browser.isiOS || this.useNativeSubtitles)) {
58808
58811
  this.$line.hide();
58809
58812
  this.currentTrack.track.mode = 'showing';
@@ -58845,6 +58848,10 @@ class ClosedCaptions extends UICorePlugin {
58845
58848
  this.resizeFont();
58846
58849
  this.clampPopup();
58847
58850
  this.core.activeContainer.$el.append(this.$line);
58851
+ const mc = this.core.getPlugin('media_control');
58852
+ if (!mc?.isVisible()) {
58853
+ this.$line?.addClass('media-control-cc-pulled');
58854
+ }
58848
58855
  this.updateSelection();
58849
58856
  this.renderIcon();
58850
58857
  return this;
@@ -58950,7 +58957,7 @@ class ClosedCaptions extends UICorePlugin {
58950
58957
  this.setSubtitleText('');
58951
58958
  }
58952
58959
  updateSelection() {
58953
- if (!this.currentTrack) {
58960
+ if (this.core.activePlayback.closedCaptionsTrackId === -1) {
58954
58961
  this.hide();
58955
58962
  }
58956
58963
  else {
package/dist/index.js CHANGED
@@ -12899,6 +12899,9 @@ class BasePlayback extends HTML5Video$1 {
12899
12899
  super._onPlaying();
12900
12900
  this.trigger(Events$1.PLAYBACK_MEDIACONTROL_ENABLE);
12901
12901
  }
12902
+ setTextTrack(id) {
12903
+ // noop
12904
+ }
12902
12905
  }
12903
12906
 
12904
12907
  var PlaybackEvents;
@@ -12921,6 +12924,7 @@ const T$e = 'playback.dash';
12921
12924
  class DashPlayback extends BasePlayback {
12922
12925
  _levels = [];
12923
12926
  _currentLevel = AUTO$1;
12927
+ _currentTextTrackId = -1;
12924
12928
  // true when the actual duration is longer than hlsjs's live sync point
12925
12929
  // when this is false playableRegionDuration will be the actual duration
12926
12930
  // when this is true playableRegionDuration will exclude the time after the sync point
@@ -13053,7 +13057,11 @@ class DashPlayback extends BasePlayback {
13053
13057
  streaming: {
13054
13058
  text: {
13055
13059
  defaultEnabled: false,
13056
- dispatchForManualRendering: true,
13060
+ // NOTE: dispatchForManualRendering is not correctly implemented in DASH.js;
13061
+ // it does not work when there are multiple text tracks.
13062
+ // CUE_ENTER and CUE_EXIT events might be dispatched additionally
13063
+ // for a track, other than the currently active one.
13064
+ // dispatchForManualRendering: true, // TODO only when useNativeSubtitles is not true?
13057
13065
  },
13058
13066
  },
13059
13067
  }, this.options.dash);
@@ -13097,24 +13105,6 @@ class DashPlayback extends BasePlayback {
13097
13105
  this._dash.on(_.events.PLAYBACK_RATE_CHANGED, (e) => {
13098
13106
  this.trigger(PlaybackEvents.PLAYBACK_RATE_CHANGED, e.playbackRate);
13099
13107
  });
13100
- this._dash.on(_.events.TRACK_CHANGE_RENDERED, (e) => {
13101
- if (e.mediaType === 'audio') {
13102
- this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack$1(e.newMediaInfo));
13103
- }
13104
- });
13105
- this._dash.on(_.events.CUE_ENTER, (e) => {
13106
- this.oncueenter?.({
13107
- end: e.end,
13108
- id: e.id,
13109
- start: e.start,
13110
- text: e.text,
13111
- });
13112
- });
13113
- this._dash.on(_.events.CUE_EXIT, (e) => {
13114
- this.oncueexit?.({
13115
- id: e.id,
13116
- });
13117
- });
13118
13108
  }
13119
13109
  render() {
13120
13110
  this._ready();
@@ -13424,14 +13414,14 @@ class DashPlayback extends BasePlayback {
13424
13414
  this._dash?.setTextTrack(this.closedCaptionsTrackId);
13425
13415
  }
13426
13416
  setTextTrack(id) {
13417
+ this._currentTextTrackId = id;
13427
13418
  this._dash?.setTextTrack(id);
13428
13419
  }
13429
13420
  /**
13430
13421
  * @override
13431
13422
  */
13432
13423
  get closedCaptionsTracks() {
13433
- const tt = this.getTextTracks();
13434
- return tt;
13424
+ return this.getTextTracks();
13435
13425
  }
13436
13426
  getTextTracks() {
13437
13427
  return this._dash?.getTracksFor('text').map((t, index) => ({
@@ -13441,7 +13431,7 @@ class DashPlayback extends BasePlayback {
13441
13431
  id: index,
13442
13432
  label: getTextTrackLabel(t) || "",
13443
13433
  language: t.lang,
13444
- mode: "hidden",
13434
+ mode: this._currentTextTrackId === index ? "showing" : "hidden",
13445
13435
  },
13446
13436
  })) || [];
13447
13437
  }
@@ -50953,7 +50943,11 @@ class HlsPlayback extends BasePlayback {
50953
50943
  this.trigger(Events$1.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
50954
50944
  }
50955
50945
  setTextTrack(id) {
50946
+ if (id === this._hls.subtitleTrack) {
50947
+ return;
50948
+ }
50956
50949
  this._hls.subtitleTrack = id;
50950
+ this.cues = [];
50957
50951
  }
50958
50952
  /**
50959
50953
  * @override
@@ -51573,7 +51567,7 @@ class Player {
51573
51567
  }
51574
51568
  }
51575
51569
 
51576
- var version$1 = "2.28.35";
51570
+ var version$1 = "2.28.36";
51577
51571
 
51578
51572
  var packages = {
51579
51573
  "node_modules/@clappr/core": {
@@ -60134,8 +60128,12 @@ class ClosedCaptions extends UICorePlugin {
60134
60128
  const mediaControl = this.core.getPlugin('media_control');
60135
60129
  assert(mediaControl, 'media_control plugin is required');
60136
60130
  this.listenTo(mediaControl, Events$1.MEDIACONTROL_RENDERED, this.mount);
60131
+ this.listenTo(mediaControl, Events$1.MEDIACONTROL_SHOW, () => {
60132
+ this.$line?.removeClass('media-control-cc-pulled');
60133
+ });
60137
60134
  this.listenTo(mediaControl, Events$1.MEDIACONTROL_HIDE, () => {
60138
60135
  this.hideMenu();
60136
+ this.$line?.addClass('media-control-cc-pulled');
60139
60137
  });
60140
60138
  this.listenTo(mediaControl, ExtendedEvents.MEDIACONTROL_MENU_COLLAPSE, (from) => {
60141
60139
  if (from !== this.name) {
@@ -60193,23 +60191,27 @@ class ClosedCaptions extends UICorePlugin {
60193
60191
  this.activateTrack(id);
60194
60192
  }
60195
60193
  activateTrack(id) {
60196
- if (this.core.activePlayback && ['dash', 'hls'].includes(this.core.activePlayback.name)) {
60197
- this.core.activePlayback.setTextTrack(id);
60194
+ const isManaged = this.core.activePlayback?.name === 'hls';
60195
+ this.core.activePlayback.setTextTrack(id);
60196
+ if (isManaged) {
60198
60197
  return;
60199
60198
  }
60200
- for (const track of this.currentTracks) {
60201
- if (track.id === id) {
60199
+ if (!this.core.activePlayback?.el.textTracks) {
60200
+ return;
60201
+ }
60202
+ for (const [index, track] of Array.from(this.core.activePlayback?.el.textTracks ?? []).entries()) {
60203
+ if (index === id) {
60202
60204
  if (this.useNativeSubtitles) {
60203
- track.track.mode = 'showing';
60205
+ track.mode = 'showing';
60204
60206
  }
60205
60207
  else {
60206
- track.track.mode = 'hidden';
60208
+ track.mode = 'hidden';
60207
60209
  }
60208
- this.setSubtitleText(this.getSubtitleText(track.track));
60209
- track.track.oncuechange = (e) => {
60210
+ this.setSubtitleText(this.getSubtitleText(track));
60211
+ track.oncuechange = () => {
60210
60212
  try {
60211
- if (track.track.activeCues?.length) {
60212
- const html = track.track.activeCues[0].getCueAsHTML();
60213
+ if (track.activeCues?.length) {
60214
+ const html = track.activeCues[0].getCueAsHTML();
60213
60215
  this.setSubtitleText(html);
60214
60216
  }
60215
60217
  else {
@@ -60222,8 +60224,8 @@ class ClosedCaptions extends UICorePlugin {
60222
60224
  };
60223
60225
  }
60224
60226
  else {
60225
- track.track.oncuechange = () => { };
60226
- track.track.mode = 'disabled';
60227
+ track.oncuechange = () => { };
60228
+ track.mode = 'disabled';
60227
60229
  }
60228
60230
  }
60229
60231
  }
@@ -60266,8 +60268,10 @@ class ClosedCaptions extends UICorePlugin {
60266
60268
  this.$el.find('#gplayer-cc-menu').hide();
60267
60269
  this.$el.find('#gplayer-cc-button').attr('aria-expanded', 'false');
60268
60270
  this.$line.hide();
60269
- for (const track of this.currentTracks) {
60270
- track.track.mode = 'hidden';
60271
+ for (const track of this.core.activePlayback.el.textTracks) {
60272
+ if (track.mode === 'showing') {
60273
+ track.mode = 'hidden';
60274
+ }
60271
60275
  }
60272
60276
  }
60273
60277
  /**
@@ -60279,7 +60283,6 @@ class ClosedCaptions extends UICorePlugin {
60279
60283
  if (this.core.activeContainer &&
60280
60284
  isFullscreen(this.core.activeContainer.el) &&
60281
60285
  this.currentTrack &&
60282
- // this.currentTrack.track.mode &&
60283
60286
  (Browser.isiOS || this.useNativeSubtitles)) {
60284
60287
  this.$line.hide();
60285
60288
  this.currentTrack.track.mode = 'showing';
@@ -60321,6 +60324,10 @@ class ClosedCaptions extends UICorePlugin {
60321
60324
  this.resizeFont();
60322
60325
  this.clampPopup();
60323
60326
  this.core.activeContainer.$el.append(this.$line);
60327
+ const mc = this.core.getPlugin('media_control');
60328
+ if (!mc?.isVisible()) {
60329
+ this.$line?.addClass('media-control-cc-pulled');
60330
+ }
60324
60331
  this.updateSelection();
60325
60332
  this.renderIcon();
60326
60333
  return this;
@@ -60426,7 +60433,7 @@ class ClosedCaptions extends UICorePlugin {
60426
60433
  this.setSubtitleText('');
60427
60434
  }
60428
60435
  updateSelection() {
60429
- if (!this.currentTrack) {
60436
+ if (this.core.activePlayback.closedCaptionsTrackId === -1) {
60430
60437
  this.hide();
60431
60438
  }
60432
60439
  else {
@@ -12,5 +12,6 @@ export declare class BasePlayback extends HTML5Video {
12
12
  */
13
13
  setPlaybackRate(rate: number): void;
14
14
  _onPlaying(): void;
15
+ setTextTrack(id: number): void;
15
16
  }
16
17
  //# sourceMappingURL=BasePlayback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BasePlayback.d.ts","sourceRoot":"","sources":["../../src/playback/BasePlayback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAU,UAAU,EAAe,MAAM,cAAc,CAAA;AAK5E;;;GAGG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,IAAI,YAAY,YAEf;IAED,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IA0BlD;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM;IAInB,UAAU;CAIpB"}
1
+ {"version":3,"file":"BasePlayback.d.ts","sourceRoot":"","sources":["../../src/playback/BasePlayback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAU,UAAU,EAAe,MAAM,cAAc,CAAA;AAK5E;;;GAGG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,IAAI,YAAY,YAEf;IAED,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IA0BlD;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM;IAInB,UAAU;IAKnB,YAAY,CAAC,EAAE,EAAE,MAAM;CAGxB"}
@@ -40,4 +40,7 @@ export class BasePlayback extends HTML5Video {
40
40
  super._onPlaying();
41
41
  this.trigger(Events.PLAYBACK_MEDIACONTROL_ENABLE);
42
42
  }
43
+ setTextTrack(id) {
44
+ // noop
45
+ }
43
46
  }
@@ -12,6 +12,7 @@ type LocalTimeCorrelation = {
12
12
  export default class DashPlayback extends BasePlayback {
13
13
  _levels: QualityLevel[];
14
14
  _currentLevel: number;
15
+ _currentTextTrackId: number;
15
16
  _durationExcludesAfterLiveSyncPoint: boolean;
16
17
  _isReadyState: boolean;
17
18
  _playableRegionDuration: number;
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ const T = 'playback.dash';
16
16
  export default class DashPlayback extends BasePlayback {
17
17
  _levels = [];
18
18
  _currentLevel = AUTO;
19
+ _currentTextTrackId = -1;
19
20
  // true when the actual duration is longer than hlsjs's live sync point
20
21
  // when this is false playableRegionDuration will be the actual duration
21
22
  // when this is true playableRegionDuration will exclude the time after the sync point
@@ -148,7 +149,11 @@ export default class DashPlayback extends BasePlayback {
148
149
  streaming: {
149
150
  text: {
150
151
  defaultEnabled: false,
151
- dispatchForManualRendering: true,
152
+ // NOTE: dispatchForManualRendering is not correctly implemented in DASH.js;
153
+ // it does not work when there are multiple text tracks.
154
+ // CUE_ENTER and CUE_EXIT events might be dispatched additionally
155
+ // for a track, other than the currently active one.
156
+ // dispatchForManualRendering: true, // TODO only when useNativeSubtitles is not true?
152
157
  },
153
158
  },
154
159
  }, this.options.dash);
@@ -192,24 +197,6 @@ export default class DashPlayback extends BasePlayback {
192
197
  this._dash.on(MediaPlayer.events.PLAYBACK_RATE_CHANGED, (e) => {
193
198
  this.trigger(PlaybackEvents.PLAYBACK_RATE_CHANGED, e.playbackRate);
194
199
  });
195
- this._dash.on(MediaPlayer.events.TRACK_CHANGE_RENDERED, (e) => {
196
- if (e.mediaType === 'audio') {
197
- this.trigger(Events.PLAYBACK_AUDIO_CHANGED, toClapprTrack(e.newMediaInfo));
198
- }
199
- });
200
- this._dash.on(MediaPlayer.events.CUE_ENTER, (e) => {
201
- this.oncueenter?.({
202
- end: e.end,
203
- id: e.id,
204
- start: e.start,
205
- text: e.text,
206
- });
207
- });
208
- this._dash.on(MediaPlayer.events.CUE_EXIT, (e) => {
209
- this.oncueexit?.({
210
- id: e.id,
211
- });
212
- });
213
200
  }
214
201
  render() {
215
202
  this._ready();
@@ -519,14 +506,14 @@ export default class DashPlayback extends BasePlayback {
519
506
  this._dash?.setTextTrack(this.closedCaptionsTrackId);
520
507
  }
521
508
  setTextTrack(id) {
509
+ this._currentTextTrackId = id;
522
510
  this._dash?.setTextTrack(id);
523
511
  }
524
512
  /**
525
513
  * @override
526
514
  */
527
515
  get closedCaptionsTracks() {
528
- const tt = this.getTextTracks();
529
- return tt;
516
+ return this.getTextTracks();
530
517
  }
531
518
  getTextTracks() {
532
519
  return this._dash?.getTracksFor('text').map((t, index) => ({
@@ -536,7 +523,7 @@ export default class DashPlayback extends BasePlayback {
536
523
  id: index,
537
524
  label: getTextTrackLabel(t) || "",
538
525
  language: t.lang,
539
- mode: "hidden",
526
+ mode: this._currentTextTrackId === index ? "showing" : "hidden",
540
527
  },
541
528
  })) || [];
542
529
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EACZ,MAAM,IAAI,SAAS,EAMnB,KAAK,kBAAkB,EAMxB,MAAM,QAAQ,CAAA;AAEf,OAAO,EAIL,YAAY,EAEZ,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAmCzE,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IACnD,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,mCAAmC,CAAQ;IAEnD,OAAO,CAAC,8BAA8B,CAAI;IAE1C,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,OAAO,CAA8B;IAE7C,OAAO,CAAC,0BAA0B,CAA+B;IAEjE,OAAO,CAAC,wBAAwB,CAA+B;IAE/D,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,wBAAwB,CAAI;IAEpC,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO,CAAC,yBAAyB,CAAI;IAErC,OAAO,CAAC,yBAAyB,CAAQ;IAEzC,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,OAAO,CAAC,sBAAsB,CAAsB;IAEpD,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAO;IAEnD,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAO;IAEtD,OAAO,CAAC,IAAI,CAAmB;IAE/B,OAAO,CAAC,YAAY,CAAsB;IAE1C;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED,IAAI,MAAM,mBAET;IAED,IAAI,YAAY,IAIK,MAAM,CAF1B;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAS1B;IAED,IAAI,OAAO,WAGV;IAED,IAAI,sBAAsB,SAIzB;IAED,OAAO,KAAK,UAAU,GASrB;IAED,OAAO,KAAK,IAAI,GAEf;IAID,OAAO,KAAK,sBAAsB,GAcjC;IAID,IAAI,oBAAoB,WAevB;IAED,OAAO,KAAK,SAAS,GAEpB;IAmBD,OAAO,KAAK,2BAA2B,GAMtC;IAED,IAAI,iBAAiB,kBAEpB;IAED,IAAI,cAAc;;MAEjB;IAED,IAAI,eAAe,QAKlB;IAED,IAAI,WAAW,QAEd;IAED,IAAI,gBAAgB,kBAcnB;IAED,MAAM,KAAK,KAAK,iBAEf;gBAEW,GAAG,IAAI,EAAE,GAAG,EAAE;IAU1B,OAAO,CAAC,gBAAgB;IAmDxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,gBAAgB;IAqExB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,qBAAqB;cASV,MAAM;cAMN,MAAM;IAKzB,OAAO,CAAC,QAAQ;cA0BG,SAAS,CAAC,MAAM,EAAE,MAAM;IAE3C,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,kBAAkB;IAO1B,WAAW;IAIX,cAAc;IAad,kBAAkB;IAIlB,cAAc,CAAC,UAAU,EAAE,MAAM;IAOjC,IAAI,CAAC,IAAI,EAAE,MAAM;IAejB,eAAe;IAIf,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,aAAa;IA4GrB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAUX,aAAa;IAkBb,iBAAiB;IAUjB,WAAW;IAwCpB,OAAO,CAAC,WAAW;IAcV,IAAI,CAAC,GAAG,EAAE,MAAM;IAMhB,IAAI;IAUJ,KAAK;IAUd,IAAI;IAQJ,OAAO;IAMP,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,eAAe;IAkJvB,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,kBAAkB;IAOvE,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAmBvE,IAAI,UAAU,YAUb;IAED,eAAe;IAIf,aAAa;IAIb,OAAO,CAAC,YAAY;IAUpB,IAAI,WAAW,IAAI,UAAU,EAAE,CAG9B;IAGD,IAAI,iBAAiB,IAAI,UAAU,GAAG,IAAI,CAQzC;IAED,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKlC,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,qBAAqB;IAU7B,YAAY,CAAC,EAAE,EAAE,MAAM;IAIvB;;OAEG;IACH,IAAI,oBAAoB;;;;;;;;QAEvB;IAED,aAAa;;;;;;;;;CAWd"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/playback/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
@@ -864,7 +864,11 @@ export default class HlsPlayback extends BasePlayback {
864
864
  this.trigger(Events.PLAYBACK_AUDIO_CHANGED, toClapprTrack(track));
865
865
  }
866
866
  setTextTrack(id) {
867
+ if (id === this._hls.subtitleTrack) {
868
+ return;
869
+ }
867
870
  this._hls.subtitleTrack = id;
871
+ this.cues = [];
868
872
  }
869
873
  /**
870
874
  * @override
@@ -1,5 +1,5 @@
1
1
  import { UICorePlugin } from '@clappr/core';
2
- import '../../../assets/subtitles/style.scss';
2
+ import '../../../assets/cc/style.scss';
3
3
  /**
4
4
  * Configuration options for the {@link ClosedCaptions} plugin.
5
5
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"ClosedCaptions.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/ClosedCaptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAwB,MAAM,cAAc,CAAA;AAOzE,OAAO,sCAAsC,CAAA;AAmB7C;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,iBAAiB,CAAQ;IAEjC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,IAAI;IAYJ;;OAEG;IACH,IAAI;IAiBJ,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IA+Bf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,KAAK;IAOb,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAEvB;IAED,OAAO,KAAK,aAAa,QAMxB;IAED,OAAO,CAAC,SAAS,CAA+C;CACjE"}
1
+ {"version":3,"file":"ClosedCaptions.d.ts","sourceRoot":"","sources":["../../../src/plugins/subtitles/ClosedCaptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAwB,MAAM,cAAc,CAAA;AAOzE,OAAO,+BAA+B,CAAA;AAmBtC;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,iBAAiB,CAAQ;IAEjC,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,IAAI,CAAQ;IAEpB,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,KAAK,CAA2B;IAExC;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,gBAAgB;;MAEnB;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,WAEjB;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D;;OAEG;IACH,IAAa,UAAU;;MAItB;IAED;;OAEG;IACH,IAAa,MAAM;;;MAKlB;IAED,OAAO,KAAK,mBAAmB,GAI9B;IAED,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACM,UAAU;IAWnB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAuCrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,IAAI;IAcJ;;OAEG;IACH,IAAI;IAgBJ,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACM,MAAM;IAmCf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,KAAK;IAOb,OAAO,KAAK,kBAAkB,GAO7B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAEvB;IAED,OAAO,KAAK,aAAa,QAMxB;IAED,OAAO,CAAC,SAAS,CAA+C;CACjE"}