@xibosignage/xibo-layout-renderer 1.0.16 → 1.0.18

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.
@@ -664,7 +664,11 @@ var XiboLayoutRenderer = (function (exports) {
664
664
  emitter: {},
665
665
  index: -1,
666
666
  actionController: undefined,
667
- enableStat: false
667
+ enableStat: false,
668
+ xlr: {},
669
+ finishAllRegions: function finishAllRegions() {
670
+ return Promise.resolve([]);
671
+ }
668
672
  };
669
673
 
670
674
  function nextId(options) {
@@ -72669,9 +72673,12 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72669
72673
  return $media;
72670
72674
  }
72671
72675
  function VideoMedia(media, xlr) {
72672
- var videoMediaInstance = {
72676
+ return {
72677
+ duration: 0,
72673
72678
  init: function init() {
72679
+ var _this = this;
72674
72680
  var vjsPlayer = media.player;
72681
+ this.duration = media.duration;
72675
72682
  if (vjsPlayer !== undefined) {
72676
72683
  var playerReportFault = /*#__PURE__*/function () {
72677
72684
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(msg) {
@@ -72697,10 +72704,10 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72697
72704
  // Temporary setting
72698
72705
  expires: format(new Date(setExpiry(1)), 'yyyy-MM-dd HH:mm:ss')
72699
72706
  })["finally"](function () {
72700
- videoMediaInstance.stop();
72707
+ _this.stop();
72701
72708
  });
72702
72709
  } else {
72703
- videoMediaInstance.stop();
72710
+ _this.stop();
72704
72711
  }
72705
72712
  case 5:
72706
72713
  case "end":
@@ -72713,11 +72720,26 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72713
72720
  };
72714
72721
  }();
72715
72722
  vjsPlayer.on('loadstart', function () {
72716
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has started loading data . . ."));
72723
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has started loading data . . ."));
72717
72724
  });
72718
- vjsPlayer.on('canplay', function () {
72719
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " can be played . . ."));
72725
+ vjsPlayer.one('loadedmetadata', function () {
72726
+ if (media.duration === 0) {
72727
+ _this.duration = vjsPlayer.duration();
72728
+ }
72729
+ console.debug('VideoMedia: loadedmetadata: Setting video duration to = ' + _this.duration);
72730
+ });
72731
+ vjsPlayer.one('canplay', function () {
72732
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " can be played . . ."));
72733
+ });
72734
+ vjsPlayer.one('playing', function () {
72735
+ console.debug('VideoMedia: playing: Showing Media ' + media.id + ' for ' + _this.duration + 's of Region ' + media.region.regionId);
72736
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " is now playing . . ."));
72720
72737
  });
72738
+ // @NOTE: When video is paused due to fail in unmuting the video
72739
+ // and video has media.duration = 0, the video will stay paused and the video cycle won't end
72740
+ // @TODO: Add timer when video is paused due to unmuting fail and duration that is equal to 0
72741
+ // @NOTE: The pause issue when unmuting the video is mainly on a browser level.
72742
+ // Please visit https://developer.chrome.com/blog/autoplay/ for more info.
72721
72743
  vjsPlayer.on('ready', function () {
72722
72744
  vjsPlayer.muted(true);
72723
72745
  // Race promise between a 0.5s play and a 5s skip
@@ -72726,33 +72748,35 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72726
72748
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
72727
72749
  while (1) switch (_context2.prev = _context2.next) {
72728
72750
  case 0:
72729
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Trying to force play after 0.1 seconds"));
72751
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Trying to force play after 0.1 seconds"));
72730
72752
  // Try to force play here
72731
72753
  _context2.prev = 1;
72732
- _context2.next = 4;
72754
+ // Set video mute/unmute based on setting once playing
72755
+ vjsPlayer.muted(media.muted);
72756
+ _context2.next = 5;
72733
72757
  return vjsPlayer.play();
72734
- case 4:
72758
+ case 5:
72735
72759
  // Resolve if play works
72736
72760
  resolve(true);
72737
- _context2.next = 10;
72761
+ _context2.next = 11;
72738
72762
  break;
72739
- case 7:
72740
- _context2.prev = 7;
72763
+ case 8:
72764
+ _context2.prev = 8;
72741
72765
  _context2.t0 = _context2["catch"](1);
72742
72766
  // Reject race if play fails
72743
72767
  reject('Play failed');
72744
- case 10:
72768
+ case 11:
72745
72769
  case "end":
72746
72770
  return _context2.stop();
72747
72771
  }
72748
- }, _callee2, null, [[1, 7]]);
72772
+ }, _callee2, null, [[1, 8]]);
72749
72773
  })), 100);
72750
72774
  }), new Promise(function (_, reject) {
72751
72775
  return setTimeout(function () {
72752
72776
  return reject('Timeout');
72753
72777
  }, 5000);
72754
72778
  })]).then(function () {
72755
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Autoplay started"));
72779
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Autoplay started"));
72756
72780
  })["catch"]( /*#__PURE__*/function () {
72757
72781
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(error) {
72758
72782
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
@@ -72762,12 +72786,12 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72762
72786
  _context3.next = 5;
72763
72787
  break;
72764
72788
  }
72765
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Promise not resolved within 5 seconds. Move to next media"));
72766
- videoMediaInstance.stop();
72789
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Promise not resolved within 5 seconds. Move to next media"));
72790
+ _this.stop();
72767
72791
  _context3.next = 9;
72768
72792
  break;
72769
72793
  case 5:
72770
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Autoplay error: ").concat(error));
72794
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " : Autoplay error: ").concat(error));
72771
72795
  if (!(xlr.config.platform === 'chromeOS')) {
72772
72796
  _context3.next = 9;
72773
72797
  break;
@@ -72785,16 +72809,12 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72785
72809
  };
72786
72810
  }());
72787
72811
  });
72788
- vjsPlayer.on('playing', function () {
72789
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " is now playing . . ."));
72790
- vjsPlayer.muted(media.muted);
72791
- });
72792
72812
  vjsPlayer.on('error', /*#__PURE__*/function () {
72793
72813
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(err) {
72794
72814
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
72795
72815
  while (1) switch (_context4.prev = _context4.next) {
72796
72816
  case 0:
72797
- console.debug("Media Error: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id));
72817
+ console.debug("VideoMedia: Media Error: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id));
72798
72818
  if (!(xlr.config.platform === 'chromeOS')) {
72799
72819
  _context4.next = 6;
72800
72820
  break;
@@ -72807,8 +72827,8 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72807
72827
  case 6:
72808
72828
  // End media after 5 seconds
72809
72829
  setTimeout(function () {
72810
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended . . ."));
72811
- videoMediaInstance.stop();
72830
+ console.debug("VideoMedia: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended . . ."));
72831
+ _this.stop();
72812
72832
  }, 5000);
72813
72833
  case 7:
72814
72834
  case "end":
@@ -72823,10 +72843,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72823
72843
  if (media.duration === 0) {
72824
72844
  vjsPlayer.on('ended', function () {
72825
72845
  console.debug("VideoMedia: onended: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended playing . . ."));
72826
- videoMediaInstance.stop();
72827
- });
72828
- vjsPlayer.on('durationchange', function () {
72829
- console.debug('VIDEOJS: ondurationchange: Showing Media ' + media.id + ' for ' + vjsPlayer.duration() + 's of Region ' + media.region.regionId);
72846
+ _this.stop();
72830
72847
  });
72831
72848
  }
72832
72849
  }
@@ -72840,10 +72857,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72840
72857
  media.emitter.emit('end', media);
72841
72858
  }
72842
72859
  vjsPlayer.dispose();
72860
+ // Clear up media player
72861
+ media.player = undefined;
72843
72862
  }
72844
72863
  }
72845
72864
  };
72846
- return videoMediaInstance;
72847
72865
  }
72848
72866
 
72849
72867
  function AudioMedia(media) {
@@ -72925,7 +72943,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72925
72943
  media.emitter.emit('end', media);
72926
72944
  if (media.mediaType === 'video') {
72927
72945
  // Dispose the video media
72928
- console.debug("VideoMedia::stop - ".concat(capitalizeStr(media.mediaType), " for media ").concat(media.id, " has been stopped."));
72946
+ console.debug("VideoMedia::stop - ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended playing . . ."));
72929
72947
  VideoMedia(media, xlr).stop(true);
72930
72948
  }
72931
72949
  }
@@ -72934,7 +72952,8 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72934
72952
  };
72935
72953
  emitter.on('start', function (media) {
72936
72954
  if (media.mediaType === 'video') {
72937
- VideoMedia(media, xlr).init();
72955
+ var videoMedia = VideoMedia(media, xlr);
72956
+ videoMedia.init();
72938
72957
  if (media.duration > 0) {
72939
72958
  startMediaTimer(media);
72940
72959
  }
@@ -73255,7 +73274,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73255
73274
  controls: false,
73256
73275
  preload: 'auto',
73257
73276
  autoplay: false,
73258
- muted: self.muted,
73277
+ muted: true,
73259
73278
  errorDisplay: xlr.config.platform !== 'chromeOS',
73260
73279
  loop: self.loop
73261
73280
  });
@@ -73630,6 +73649,24 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73630
73649
  return regionObject;
73631
73650
  }
73632
73651
 
73652
+ /*
73653
+ * Copyright (c) Xibo Signage Ltd 2025.
73654
+ * All rights reserved.
73655
+ */
73656
+ var PreviewTranslations;
73657
+ (function (PreviewTranslations) {
73658
+ PreviewTranslations["actionControllerTitle"] = "Webhook Controller";
73659
+ PreviewTranslations["navigateToLayout"] = "Navigate to layout with code [layoutTag]?";
73660
+ PreviewTranslations["emptyRegionMessage"] = "Empty region!";
73661
+ PreviewTranslations["next"] = "Next Item";
73662
+ PreviewTranslations["previous"] = "Previous Item";
73663
+ PreviewTranslations["navWidget"] = "Navigate to Widget";
73664
+ PreviewTranslations["navLayout"] = "Navigate to Layout";
73665
+ PreviewTranslations["widgetId"] = "Widget ID";
73666
+ PreviewTranslations["layoutCode"] = "Layout Code";
73667
+ PreviewTranslations["target"] = "Target";
73668
+ })(PreviewTranslations || (PreviewTranslations = {}));
73669
+
73633
73670
  var Action = /*#__PURE__*/_createClass(function Action(id, xml) {
73634
73671
  _classCallCheck(this, Action);
73635
73672
  _defineProperty(this, "id", void 0);
@@ -73657,40 +73694,65 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73657
73694
  _defineProperty(this, "parent", void 0);
73658
73695
  _defineProperty(this, "actions", void 0);
73659
73696
  _defineProperty(this, "options", void 0);
73697
+ _defineProperty(this, "$container", void 0);
73660
73698
  _defineProperty(this, "$actionController", void 0);
73661
73699
  _defineProperty(this, "$actionListContainer", void 0);
73700
+ _defineProperty(this, "$actionControllerTitle", void 0);
73701
+ _defineProperty(this, "$actionsContainer", void 0);
73662
73702
  _defineProperty(this, "translations", {});
73663
73703
  this.parent = parent;
73664
73704
  this.actions = actions;
73665
73705
  this.options = options;
73666
- this.$actionController = document.createElement('div', {
73667
- is: 'action-controller'
73668
- });
73669
73706
  this.$actionListContainer = null;
73707
+ this.$container = document.getElementById(this.parent.containerName);
73708
+ this.$actionControllerTitle = null;
73709
+ this.$actionsContainer = null;
73710
+ if (this.$container && this.$container.getElementsByClassName('action-controller')[0]) {
73711
+ this.$actionController = this.$container.getElementsByClassName('action-controller')[0];
73712
+ } else {
73713
+ this.$actionController = document.createElement('div', {
73714
+ is: 'action-controller'
73715
+ });
73716
+ }
73670
73717
  this.init();
73671
73718
  }
73672
73719
  return _createClass(ActionController, [{
73673
73720
  key: "init",
73674
73721
  value: function init() {
73722
+ var _this2 = this;
73675
73723
  var self = this;
73676
- var previewTranslations = {};
73724
+ var _previewTranslations = {};
73725
+ self.translations = PreviewTranslations;
73677
73726
  // get preview translations
73678
73727
  if ('previewTranslations' in window) {
73679
- previewTranslations = window['previewTranslations'];
73680
- self.translations = previewTranslations;
73728
+ _previewTranslations = window['previewTranslations'];
73729
+ self.translations = _previewTranslations;
73681
73730
  }
73682
73731
  var $container = document.getElementById(this.parent.containerName);
73683
- var $actionTitle = document.createElement('div');
73684
- var $actionsContainer = document.createElement('div');
73685
- $actionTitle.classList.add('action-controller-title');
73686
- $actionTitle.innerHTML = "\n <button class=\"toggle\"></button>\n <span class=\"title\">".concat(previewTranslations.actionControllerTitle, "</span>\n ");
73687
- $actionsContainer.classList.add('actions-container');
73732
+ this.$actionController.innerHTML = '';
73733
+ if (this.$actionController && this.$actionController.getElementsByClassName('action-controller-title').length > 0) {
73734
+ this.$actionControllerTitle = this.$actionController.getElementsByClassName('action-controller-title')[0];
73735
+ } else {
73736
+ this.$actionControllerTitle = document.createElement('div');
73737
+ this.$actionControllerTitle.classList.add('action-controller-title');
73738
+ this.$actionControllerTitle.innerHTML = "\n <button class=\"toggle\"></button>\n <span class=\"title\">".concat(self.translations.actionControllerTitle, "</span>\n ");
73739
+ }
73740
+ if (this.$actionController && this.$actionController.getElementsByClassName('actions-container').length > 0) {
73741
+ var _this$$actionsContain;
73742
+ (_this$$actionsContain = this.$actionsContainer) === null || _this$$actionsContain === void 0 || _this$$actionsContain.remove();
73743
+ }
73744
+ // Always create $actionsContainer
73745
+ this.$actionsContainer = document.createElement('div');
73746
+ this.$actionsContainer.classList.add('actions-container');
73688
73747
  if ($container) {
73689
73748
  $container.insertBefore(this.$actionController, $container.firstElementChild);
73690
- this.$actionController.appendChild($actionTitle);
73691
- this.$actionController.appendChild($actionsContainer);
73749
+ if (this.$actionController && this.$actionController.getElementsByClassName('action-controller-title').length === 0) {
73750
+ this.$actionController.appendChild(this.$actionControllerTitle);
73751
+ }
73752
+ this.$actionController.appendChild(this.$actionsContainer);
73692
73753
  // Loop through actions
73693
73754
  Array.from(this.actions).forEach(function (newAction) {
73755
+ var _this2$$actionsContai, _this2$$actionsContai2;
73694
73756
  // Create new action object
73695
73757
  var $newAction = document.createElement('div');
73696
73758
  // Copy element attributes
@@ -73702,15 +73764,15 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73702
73764
  // Build html for the new action
73703
73765
  var html = '';
73704
73766
  // Add action type
73705
- html += '<span class="action-row-title">' + previewTranslations[$newAction.getAttribute('actiontype') || ''];
73767
+ html += '<span class="action-row-title">' + self.translations[$newAction.getAttribute('actiontype') || ''];
73706
73768
  if ($newAction.getAttribute('actiontype') == 'navWidget') {
73707
- html += ' <span title="' + previewTranslations.widgetId + '">[' + $newAction.getAttribute('widgetid') + ']</span>';
73769
+ html += ' <span title="' + self.translations.widgetId + '">[' + $newAction.getAttribute('widgetid') + ']</span>';
73708
73770
  } else if ($newAction.getAttribute('actiontype') == 'navLayout') {
73709
- html += ' <span title="' + previewTranslations.layoutCode + '">[' + $newAction.getAttribute('layoutcode') + ']</span>';
73771
+ html += ' <span title="' + self.translations.layoutCode + '">[' + $newAction.getAttribute('layoutcode') + ']</span>';
73710
73772
  }
73711
73773
  html += '</span>';
73712
73774
  // Add target
73713
- html += '<span class="action-row-target" title="' + previewTranslations.target + '">' + $newAction.getAttribute('target');
73775
+ html += '<span class="action-row-target" title="' + self.translations.target + '">' + $newAction.getAttribute('target');
73714
73776
  if ($newAction.getAttribute('targetid') != '') {
73715
73777
  html += '(' + $newAction.getAttribute('targetid') + $newAction.getAttribute('layoutcode') + ')';
73716
73778
  }
@@ -73721,7 +73783,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73721
73783
  $newAction.classList.add('action');
73722
73784
  $newAction.setAttribute('originalid', newAction.id);
73723
73785
  $newAction.setAttribute('id', 'A-' + newAction.id + '-' + nextId(self.options));
73724
- $actionsContainer.insertBefore($newAction, $actionsContainer.lastElementChild);
73786
+ (_this2$$actionsContai = _this2.$actionsContainer) === null || _this2$$actionsContai === void 0 || _this2$$actionsContai.insertBefore($newAction, (_this2$$actionsContai2 = _this2.$actionsContainer) === null || _this2$$actionsContai2 === void 0 ? void 0 : _this2$$actionsContai2.lastElementChild);
73725
73787
  });
73726
73788
  //
73727
73789
  // Enable dragging
@@ -73759,6 +73821,24 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73759
73821
  window.open(url, '_blank');
73760
73822
  }
73761
73823
  }
73824
+ }, {
73825
+ key: "openLayoutInPlayer",
73826
+ value: function openLayoutInPlayer(layoutCode, options) {
73827
+ // this.parent.xlr.updateLoop([]);
73828
+ }
73829
+ }, {
73830
+ key: "prevOrNextLayout",
73831
+ value: function prevOrNextLayout(targetId, actionType) {
73832
+ var _this$parent$xlr$curr;
73833
+ // Check if currentLayout is the targetId
73834
+ if (((_this$parent$xlr$curr = this.parent.xlr.currentLayout) === null || _this$parent$xlr$curr === void 0 ? void 0 : _this$parent$xlr$curr.layoutId) === parseInt(targetId)) {
73835
+ if (actionType === 'next') {
73836
+ this.parent.xlr.gotoNextLayout();
73837
+ } else if (actionType === 'previous') {
73838
+ this.parent.xlr.gotoPrevLayout();
73839
+ }
73840
+ }
73841
+ }
73762
73842
  /** Change media in region (next/previous) */
73763
73843
  }, {
73764
73844
  key: "nextMediaInRegion",
@@ -73812,12 +73892,19 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73812
73892
  key: "runAction",
73813
73893
  value: function runAction(actionData, options) {
73814
73894
  if (actionData.actiontype == 'navLayout') {
73815
- // Open layout preview in a new tab
73816
- this.openLayoutInNewTab(actionData.layoutcode, options);
73895
+ if (this.parent.xlr.config.platform === 'CMS') {
73896
+ // Open layout preview in a new tab
73897
+ this.openLayoutInNewTab(actionData.layoutcode, options);
73898
+ } else if (this.parent.xlr.config.platform === 'chromeOS') {
73899
+ // Set target layout as active layout
73900
+ this.openLayoutInPlayer(actionData.layoutcode, options);
73901
+ }
73817
73902
  } else if ((actionData.actiontype == 'previous' || actionData.actiontype == 'next') && actionData.target == 'region') {
73818
73903
  this.nextMediaInRegion(actionData.targetid, actionData.actiontype);
73819
73904
  } else if (actionData.actiontype == 'navWidget' && actionData.target == 'region') {
73820
73905
  this.loadMediaInRegion(actionData.targetid, actionData.widgetid);
73906
+ } else if (actionData.target === 'screen') {
73907
+ this.prevOrNextLayout(actionData.targetid, actionData.actiontype);
73821
73908
  } else {
73822
73909
  // TODO Handle other action types ( later? )
73823
73910
  console.log(actionData.actiontype + ' > ' + actionData.target + '[' + actionData.targetid + ']');
@@ -74004,7 +74091,26 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74004
74091
  }
74005
74092
  // If _nextLayout is undefined, then we go back to first layout
74006
74093
  if (_nextLayout === undefined) {
74007
- _nextLayout = params.xlr.layouts[0];
74094
+ var availableLayout = null;
74095
+ // Get available layout
74096
+ var _iterator = _createForOfIteratorHelper(params.xlr.layouts),
74097
+ _step;
74098
+ try {
74099
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
74100
+ var _availableLayout = _step.value;
74101
+ if (_availableLayout === undefined) {
74102
+ params.xlr.layouts.shift();
74103
+ } else {
74104
+ availableLayout = _availableLayout;
74105
+ break;
74106
+ }
74107
+ }
74108
+ } catch (err) {
74109
+ _iterator.e(err);
74110
+ } finally {
74111
+ _iterator.f();
74112
+ }
74113
+ _nextLayout = availableLayout !== null ? availableLayout : _objectSpread2(_objectSpread2({}, initialLayout), inputLayouts[0]);
74008
74114
  }
74009
74115
  }
74010
74116
  }
@@ -74080,6 +74186,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74080
74186
  var layoutObject = _objectSpread2(_objectSpread2({}, props.layout), {}, {
74081
74187
  options: props.options
74082
74188
  });
74189
+ layoutObject.xlr = xlr;
74083
74190
  layoutObject.on = function (event, callback) {
74084
74191
  return emitter.on(event, callback);
74085
74192
  };
@@ -74113,6 +74220,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74113
74220
  layout.allExpired = false;
74114
74221
  layout.containerName = "L" + layout.id + "-" + nextId(options);
74115
74222
  layout.regions = [];
74223
+ layout.actions = [];
74116
74224
  /* Create a hidden div to show the layout in */
74117
74225
  var $layout = document.getElementById(layout.containerName);
74118
74226
  if ($layout === null) {
@@ -74200,19 +74308,19 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74200
74308
  layoutObject.regionExpired = function () {
74201
74309
  var self = layoutObject;
74202
74310
  self.allExpired = true;
74203
- var _iterator = _createForOfIteratorHelper(self.regions),
74204
- _step;
74311
+ var _iterator2 = _createForOfIteratorHelper(self.regions),
74312
+ _step2;
74205
74313
  try {
74206
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
74207
- var layoutRegion = _step.value;
74314
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
74315
+ var layoutRegion = _step2.value;
74208
74316
  if (!layoutRegion.complete) {
74209
74317
  self.allExpired = false;
74210
74318
  }
74211
74319
  }
74212
74320
  } catch (err) {
74213
- _iterator.e(err);
74321
+ _iterator2.e(err);
74214
74322
  } finally {
74215
- _iterator.f();
74323
+ _iterator2.f();
74216
74324
  }
74217
74325
  if (self.allExpired) {
74218
74326
  self.end();
@@ -74258,17 +74366,17 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74258
74366
  layoutObject.end = function () {
74259
74367
  console.debug('Executing Layout::end and Calling Region::end ', layoutObject);
74260
74368
  /* Ask the layout to gracefully stop running now */
74261
- var _iterator2 = _createForOfIteratorHelper(layoutObject.regions),
74262
- _step2;
74369
+ var _iterator3 = _createForOfIteratorHelper(layoutObject.regions),
74370
+ _step3;
74263
74371
  try {
74264
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
74265
- var layoutRegion = _step2.value;
74372
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
74373
+ var layoutRegion = _step3.value;
74266
74374
  layoutRegion.end();
74267
74375
  }
74268
74376
  } catch (err) {
74269
- _iterator2.e(err);
74377
+ _iterator3.e(err);
74270
74378
  } finally {
74271
- _iterator2.f();
74379
+ _iterator3.f();
74272
74380
  }
74273
74381
  };
74274
74382
  layoutObject.stopAllMedia = function () {
@@ -74316,6 +74424,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74316
74424
  };
74317
74425
  }());
74318
74426
  };
74427
+ layoutObject.finishAllRegions = function () {
74428
+ return Promise.all(layoutObject.regions.map(function (region) {
74429
+ return region.finished();
74430
+ }));
74431
+ };
74319
74432
  layoutObject.prepareLayout();
74320
74433
  return layoutObject;
74321
74434
  }
@@ -74346,7 +74459,9 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74346
74459
  return Promise.resolve({});
74347
74460
  },
74348
74461
  updateLayouts: function updateLayouts(inputLayouts) {},
74349
- updateLoop: function updateLoop(inputLayouts) {}
74462
+ updateLoop: function updateLoop(inputLayouts) {},
74463
+ gotoPrevLayout: function gotoPrevLayout() {},
74464
+ gotoNextLayout: function gotoNextLayout() {}
74350
74465
  };
74351
74466
 
74352
74467
  var img$1 = "data:image/png;base64,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";
@@ -74422,8 +74537,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74422
74537
  options: options
74423
74538
  };
74424
74539
  var xlrObject = _objectSpread2({}, initialXlr);
74425
- var emitter = createNanoEvents();
74426
- xlrObject.emitter = emitter;
74540
+ xlrObject.emitter = createNanoEvents();
74427
74541
  xlrObject.emitter.on('layoutChange', /*#__PURE__*/function () {
74428
74542
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(layoutId) {
74429
74543
  var _xlrObject$nextLayout, _targetLayout, _targetLayout2;
@@ -74516,28 +74630,43 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74516
74630
  * Then, replace everything and start from first layout in sequence.
74517
74631
  */
74518
74632
  this.inputLayouts = inputLayouts;
74519
- /** Case 1: When currentLayout is not in inputLayouts
74520
- * Then, replace everything and start from first layout
74633
+ /**
74634
+ * Case 0: When inputLayouts length = 0
74521
74635
  */
74636
+ if (!(inputLayouts.length === 0)) {
74637
+ _context2.next = 9;
74638
+ break;
74639
+ }
74640
+ this.layouts = [];
74641
+ this.currentLayout = undefined;
74642
+ this.nextLayout = undefined;
74643
+ this.currentLayoutIndex = 0;
74644
+ this.prepareLayouts().then(function (xlr) {
74645
+ _this2.playSchedules(xlr);
74646
+ });
74647
+ _context2.next = 49;
74648
+ break;
74649
+ case 9:
74522
74650
  if (!(inputLayouts.filter(function (inputLayout) {
74523
74651
  var _this2$currentLayout;
74524
74652
  return inputLayout.layoutId === ((_this2$currentLayout = _this2.currentLayout) === null || _this2$currentLayout === void 0 ? void 0 : _this2$currentLayout.layoutId);
74525
74653
  }).length === 0)) {
74526
- _context2.next = 11;
74654
+ _context2.next = 20;
74527
74655
  break;
74528
74656
  }
74529
74657
  // Unset currentLayout, nextLayout and layouts
74530
74658
  this.layouts = [];
74531
74659
  this.currentLayout = undefined;
74532
74660
  this.nextLayout = undefined;
74533
- _context2.next = 7;
74661
+ this.currentLayoutIndex = 0;
74662
+ _context2.next = 16;
74534
74663
  return this.prepareLayouts();
74535
- case 7:
74664
+ case 16:
74536
74665
  xlr = _context2.sent;
74537
74666
  this.playSchedules(xlr);
74538
- _context2.next = 40;
74667
+ _context2.next = 49;
74539
74668
  break;
74540
- case 11:
74669
+ case 20:
74541
74670
  /** Case 2: When currentLayout is in inputLayouts, then continue playing
74542
74671
  * Also check for nextLayout if in inputLayouts and same sequence, then don't change and continue playing.
74543
74672
  * If not in inputLayouts, then replace and prepare nextLayout.
@@ -74550,36 +74679,36 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74550
74679
  tempOldNxtLayout = this.layouts[nxtLayoutIndex];
74551
74680
  newNxtLayoutIndex = currLayoutIndex + 1;
74552
74681
  if (!(nxtLayoutIndex !== newNxtLayoutIndex)) {
74553
- _context2.next = 33;
74682
+ _context2.next = 42;
74554
74683
  break;
74555
74684
  }
74556
74685
  // Delete old nextLayout
74557
74686
  delete this.layouts[nxtLayoutIndex];
74558
74687
  if (!Boolean(this.layouts[newNxtLayoutIndex])) {
74559
- _context2.next = 22;
74688
+ _context2.next = 31;
74560
74689
  break;
74561
74690
  }
74562
74691
  this.nextLayout = this.layouts[newNxtLayoutIndex];
74563
74692
  this.layouts[newNxtLayoutIndex] = this.nextLayout;
74564
- _context2.next = 31;
74693
+ _context2.next = 40;
74565
74694
  break;
74566
- case 22:
74695
+ case 31:
74567
74696
  // Check if newNxtLayoutIndex is still within inputLayouts
74568
74697
  if (newNxtLayoutIndex + 1 > inputLayouts.length) {
74569
74698
  // Goes back to first layout in the sequence
74570
74699
  newNxtLayoutIndex = 0;
74571
74700
  }
74572
74701
  if (!Boolean(inputLayouts[newNxtLayoutIndex])) {
74573
- _context2.next = 29;
74702
+ _context2.next = 38;
74574
74703
  break;
74575
74704
  }
74576
74705
  tempNxtLayout = _objectSpread2(_objectSpread2({}, initialLayout), inputLayouts[newNxtLayoutIndex]);
74577
- _context2.next = 27;
74706
+ _context2.next = 36;
74578
74707
  return this.prepareLayoutXlf(tempNxtLayout);
74579
- case 27:
74708
+ case 36:
74580
74709
  this.nextLayout = _context2.sent;
74581
74710
  this.layouts[newNxtLayoutIndex] = this.nextLayout;
74582
- case 29:
74711
+ case 38:
74583
74712
  // Move old nextLayout to its index
74584
74713
  hasOldNxtLayout = inputLayouts.filter(function (_layout) {
74585
74714
  return _layout.layoutId === (tempOldNxtLayout === null || tempOldNxtLayout === void 0 ? void 0 : tempOldNxtLayout.layoutId);
@@ -74588,21 +74717,21 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74588
74717
  oldNxtLayoutIndex = getIndexByLayoutId(inputLayouts, hasOldNxtLayout[0].layoutId).index;
74589
74718
  this.layouts[oldNxtLayoutIndex] = tempOldNxtLayout;
74590
74719
  }
74591
- case 31:
74592
- _context2.next = 40;
74720
+ case 40:
74721
+ _context2.next = 49;
74593
74722
  break;
74594
- case 33:
74723
+ case 42:
74595
74724
  if (!(inputLayouts[nxtLayoutIndex].layoutId !== ((_this$nextLayout2 = this.nextLayout) === null || _this$nextLayout2 === void 0 ? void 0 : _this$nextLayout2.layoutId))) {
74596
- _context2.next = 39;
74725
+ _context2.next = 48;
74597
74726
  break;
74598
74727
  }
74599
74728
  tempNewNxtLayout = _objectSpread2(_objectSpread2({}, initialLayout), inputLayouts[nxtLayoutIndex]);
74600
- _context2.next = 37;
74729
+ _context2.next = 46;
74601
74730
  return this.prepareLayoutXlf(tempNewNxtLayout);
74602
- case 37:
74731
+ case 46:
74603
74732
  this.nextLayout = _context2.sent;
74604
74733
  this.layouts[nxtLayoutIndex] = this.nextLayout;
74605
- case 39:
74734
+ case 48:
74606
74735
  // Remove old nextLayout if it's not in inputLayouts
74607
74736
  if (tempOldNxtLayout !== null && tempOldNxtLayout !== void 0 && tempOldNxtLayout.index && Boolean(this.layouts[tempOldNxtLayout === null || tempOldNxtLayout === void 0 ? void 0 : tempOldNxtLayout.index])) {
74608
74737
  if (inputLayouts.filter(function (_layout) {
@@ -74611,7 +74740,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74611
74740
  delete this.layouts[tempOldNxtLayout === null || tempOldNxtLayout === void 0 ? void 0 : tempOldNxtLayout.index];
74612
74741
  }
74613
74742
  }
74614
- case 40:
74743
+ case 49:
74615
74744
  case "end":
74616
74745
  return _context2.stop();
74617
74746
  }
@@ -74720,6 +74849,60 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74720
74849
  return _ref4.apply(this, arguments);
74721
74850
  };
74722
74851
  }();
74852
+ xlrObject.gotoPrevLayout = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
74853
+ var _this4 = this;
74854
+ var _currentLayoutIndex, _assumedPrevIndex, _this$currentLayout2;
74855
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
74856
+ while (1) switch (_context5.prev = _context5.next) {
74857
+ case 0:
74858
+ console.debug('XLR::gotoPrevLayout', {
74859
+ method: 'XLR::gotoPrevLayout',
74860
+ shouldParse: false
74861
+ });
74862
+ _currentLayoutIndex = this.currentLayoutIndex;
74863
+ _assumedPrevIndex = _currentLayoutIndex - 1; // If previous layout is same as current layout or
74864
+ // if there's only one layout, do nothing
74865
+ if (!(_assumedPrevIndex < 0)) {
74866
+ _context5.next = 5;
74867
+ break;
74868
+ }
74869
+ return _context5.abrupt("return");
74870
+ case 5:
74871
+ if (!Boolean(this.layouts[_assumedPrevIndex])) {
74872
+ _context5.next = 10;
74873
+ break;
74874
+ }
74875
+ _context5.next = 8;
74876
+ return (_this$currentLayout2 = this.currentLayout) === null || _this$currentLayout2 === void 0 ? void 0 : _this$currentLayout2.finishAllRegions();
74877
+ case 8:
74878
+ // and set the previous layout as current layout
74879
+ this.currentLayoutIndex = _assumedPrevIndex;
74880
+ this.prepareLayouts().then(function () {
74881
+ _this4.playSchedules(_this4);
74882
+ });
74883
+ case 10:
74884
+ case "end":
74885
+ return _context5.stop();
74886
+ }
74887
+ }, _callee5, this);
74888
+ }));
74889
+ xlrObject.gotoNextLayout = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
74890
+ var _xlrObject$currentLay;
74891
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
74892
+ while (1) switch (_context6.prev = _context6.next) {
74893
+ case 0:
74894
+ console.debug('XLR::gotoNextLayout', {
74895
+ method: 'XLR::gotoNextLayout',
74896
+ shouldParse: false
74897
+ });
74898
+ _context6.next = 3;
74899
+ return (_xlrObject$currentLay = xlrObject.currentLayout) === null || _xlrObject$currentLay === void 0 ? void 0 : _xlrObject$currentLay.finishAllRegions();
74900
+ case 3:
74901
+ case "end":
74902
+ return _context6.stop();
74903
+ }
74904
+ }, _callee6);
74905
+ }));
74723
74906
  xlrObject.bootstrap();
74724
74907
  return xlrObject;
74725
74908
  }