@xibosignage/xibo-layout-renderer 1.0.12 → 1.0.14

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.
@@ -69561,7 +69561,8 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
69561
69561
  },
69562
69562
  emitter: {},
69563
69563
  enableStat: false,
69564
- muted: false
69564
+ muted: false,
69565
+ player: undefined
69565
69566
  };
69566
69567
 
69567
69568
  /*
@@ -72624,166 +72625,149 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72624
72625
  };
72625
72626
  }
72626
72627
 
72627
- function composeVideoSource(_x, _x2) {
72628
- return _composeVideoSource.apply(this, arguments);
72629
- }
72630
- function _composeVideoSource() {
72631
- _composeVideoSource = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4($media, media) {
72632
- var videoSrc, vidType, $videoSource;
72633
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
72634
- while (1) switch (_context4.prev = _context4.next) {
72635
- case 0:
72636
- _context4.next = 2;
72637
- return preloadMediaBlob(media.url, media.mediaType);
72638
- case 2:
72639
- videoSrc = _context4.sent;
72640
- vidType = videoFileType(getFileExt(media.uri)); // Only add one source per type
72641
- if ($media.querySelectorAll("source[type=\"".concat(vidType, "\"]")).length === 0) {
72642
- $videoSource = document.createElement('source');
72643
- $videoSource.src = videoSrc;
72644
- $videoSource.type = vidType;
72645
- $media.insertBefore($videoSource, $media.lastElementChild);
72646
- }
72647
- return _context4.abrupt("return", $media);
72648
- case 6:
72649
- case "end":
72650
- return _context4.stop();
72651
- }
72652
- }, _callee4);
72653
- }));
72654
- return _composeVideoSource.apply(this, arguments);
72628
+ function composeVideoSource($media, media) {
72629
+ // const videoSrc = await preloadMediaBlob(media.url as string, media.mediaType as MediaTypes);
72630
+ var vidType = videoFileType(getFileExt(media.uri));
72631
+ // Only add one source per type
72632
+ if ($media.querySelectorAll("source[type=\"".concat(vidType, "\"]")).length === 0) {
72633
+ var $videoSource = document.createElement('source');
72634
+ $videoSource.src = media.url;
72635
+ $videoSource.type = vidType;
72636
+ $media.insertBefore($videoSource, $media.lastElementChild);
72637
+ }
72638
+ return $media;
72655
72639
  }
72656
72640
  function VideoMedia(media, xlr) {
72657
72641
  return {
72658
72642
  init: function init() {
72659
- var $videoMedia = document.getElementById(getMediaId(media));
72660
- if ($videoMedia) {
72661
- var vjsPlayer = videojs.getPlayer($videoMedia);
72662
- if (vjsPlayer !== undefined) {
72663
- var playerReportFault = /*#__PURE__*/function () {
72664
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(msg) {
72665
- var playerSW, hasSW;
72666
- return _regeneratorRuntime().wrap(function _callee$(_context) {
72667
- while (1) switch (_context.prev = _context.next) {
72668
- case 0:
72669
- // Immediately expire media and report a fault
72670
- playerSW = PwaSW();
72671
- _context.next = 3;
72672
- return playerSW.getSW();
72673
- case 3:
72674
- hasSW = _context.sent;
72675
- if (hasSW) {
72676
- playerSW.postMsg({
72677
- type: 'MEDIA_FAULT',
72678
- code: 5002,
72679
- reason: msg,
72680
- mediaId: media.id,
72681
- regionId: media.region.id,
72682
- layoutId: media.region.layout.id,
72683
- date: format(new Date(), 'yyyy-MM-dd HH:mm:ss'),
72684
- // Temporary setting
72685
- expires: format(new Date(setExpiry(1)), 'yyyy-MM-dd HH:mm:ss')
72686
- })["finally"](function () {
72687
- // Expire the media and dispose the video
72688
- vjsPlayer.dispose();
72689
- media.emitter.emit('end', media);
72690
- });
72691
- }
72692
- case 5:
72693
- case "end":
72694
- return _context.stop();
72695
- }
72696
- }, _callee);
72697
- }));
72698
- return function playerReportFault(_x3) {
72699
- return _ref.apply(this, arguments);
72700
- };
72701
- }();
72702
- vjsPlayer.on('loadstart', function () {
72703
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has started loading data . . ."));
72704
- });
72705
- vjsPlayer.on('canplay', function () {
72706
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " can be played . . ."));
72707
- });
72708
- vjsPlayer.ready(function () {
72709
- var promise = vjsPlayer.play();
72710
- if (promise !== undefined) {
72711
- promise.then(function () {
72712
- // Autoplay restarted
72713
- console.debug('autoplay started . . .');
72714
- vjsPlayer.muted(true);
72715
- })["catch"]( /*#__PURE__*/function () {
72716
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(error) {
72717
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
72718
- while (1) switch (_context2.prev = _context2.next) {
72719
- case 0:
72720
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " autoplay error"));
72721
- if (!(xlr.config.platform === 'chromeOS')) {
72722
- _context2.next = 4;
72723
- break;
72724
- }
72643
+ var vjsPlayer = media.player;
72644
+ if (vjsPlayer !== undefined) {
72645
+ var playerReportFault = /*#__PURE__*/function () {
72646
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(msg) {
72647
+ var playerSW, hasSW;
72648
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
72649
+ while (1) switch (_context.prev = _context.next) {
72650
+ case 0:
72651
+ // Immediately expire media and report a fault
72652
+ playerSW = PwaSW();
72653
+ _context.next = 3;
72654
+ return playerSW.getSW();
72655
+ case 3:
72656
+ hasSW = _context.sent;
72657
+ if (hasSW) {
72658
+ playerSW.postMsg({
72659
+ type: 'MEDIA_FAULT',
72660
+ code: 5002,
72661
+ reason: msg,
72662
+ mediaId: media.id,
72663
+ regionId: media.region.id,
72664
+ layoutId: media.region.layout.id,
72665
+ date: format(new Date(), 'yyyy-MM-dd HH:mm:ss'),
72666
+ // Temporary setting
72667
+ expires: format(new Date(setExpiry(1)), 'yyyy-MM-dd HH:mm:ss')
72668
+ })["finally"](function () {
72669
+ // Expire the media and dispose the video
72670
+ vjsPlayer.dispose();
72671
+ media.emitter.emit('end', media);
72672
+ });
72673
+ }
72674
+ case 5:
72675
+ case "end":
72676
+ return _context.stop();
72677
+ }
72678
+ }, _callee);
72679
+ }));
72680
+ return function playerReportFault(_x) {
72681
+ return _ref.apply(this, arguments);
72682
+ };
72683
+ }();
72684
+ vjsPlayer.on('loadstart', function () {
72685
+ console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has started loading data . . ."));
72686
+ });
72687
+ vjsPlayer.on('canplay', function () {
72688
+ console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " can be played . . ."));
72689
+ });
72690
+ vjsPlayer.on('ready', function () {
72691
+ vjsPlayer.muted(true);
72692
+ var promise = vjsPlayer.play();
72693
+ if (promise !== undefined) {
72694
+ promise.then(function () {
72695
+ // Autoplay restarted
72696
+ console.debug('autoplay started . . .');
72697
+ })["catch"]( /*#__PURE__*/function () {
72698
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(error) {
72699
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
72700
+ while (1) switch (_context2.prev = _context2.next) {
72701
+ case 0:
72702
+ console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " autoplay error"));
72703
+ if (!(xlr.config.platform === 'chromeOS')) {
72725
72704
  _context2.next = 4;
72726
- return playerReportFault('Media autoplay error');
72727
- case 4:
72728
- case "end":
72729
- return _context2.stop();
72730
- }
72731
- }, _callee2);
72732
- }));
72733
- return function (_x4) {
72734
- return _ref2.apply(this, arguments);
72735
- };
72736
- }());
72737
- }
72738
- });
72739
- vjsPlayer.on('playing', function () {
72740
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " is now playing . . ."));
72741
- vjsPlayer.muted(media.muted);
72742
- });
72743
- vjsPlayer.on('error', /*#__PURE__*/function () {
72744
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(err) {
72745
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
72746
- while (1) switch (_context3.prev = _context3.next) {
72747
- case 0:
72748
- console.debug("Media Error: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id));
72749
- if (!(xlr.config.platform === 'chromeOS')) {
72750
- _context3.next = 6;
72751
- break;
72752
- }
72753
- _context3.next = 4;
72754
- return playerReportFault('Video file source not supported');
72755
- case 4:
72756
- _context3.next = 7;
72705
+ break;
72706
+ }
72707
+ _context2.next = 4;
72708
+ return playerReportFault('Media autoplay error');
72709
+ case 4:
72710
+ case "end":
72711
+ return _context2.stop();
72712
+ }
72713
+ }, _callee2);
72714
+ }));
72715
+ return function (_x2) {
72716
+ return _ref2.apply(this, arguments);
72717
+ };
72718
+ }());
72719
+ }
72720
+ });
72721
+ vjsPlayer.on('playing', function () {
72722
+ console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " is now playing . . ."));
72723
+ vjsPlayer.muted(media.muted);
72724
+ });
72725
+ vjsPlayer.on('error', /*#__PURE__*/function () {
72726
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(err) {
72727
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
72728
+ while (1) switch (_context3.prev = _context3.next) {
72729
+ case 0:
72730
+ console.debug("Media Error: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id));
72731
+ if (!(xlr.config.platform === 'chromeOS')) {
72732
+ _context3.next = 6;
72757
72733
  break;
72758
- case 6:
72759
- // End media after 5 seconds
72760
- setTimeout(function () {
72761
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended . . ."));
72762
- media.emitter.emit('end', media);
72763
- vjsPlayer.dispose();
72764
- }, 5000);
72765
- case 7:
72766
- case "end":
72767
- return _context3.stop();
72768
- }
72769
- }, _callee3);
72770
- }));
72771
- return function (_x5) {
72772
- return _ref3.apply(this, arguments);
72773
- };
72774
- }());
72775
- if (media.duration === 0) {
72776
- vjsPlayer.on('durationchange', function () {
72777
- console.debug('Showing Media ' + media.id + ' for ' + vjsPlayer.duration() + 's of Region ' + media.region.regionId);
72778
- });
72779
- vjsPlayer.on('ended', function () {
72780
- var _media$emitter;
72781
- console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended playing . . ."));
72782
- vjsPlayer.dispose();
72783
- (_media$emitter = media.emitter) === null || _media$emitter === void 0 || _media$emitter.emit('end', media);
72784
- });
72734
+ }
72735
+ _context3.next = 4;
72736
+ return playerReportFault('Video file source not supported');
72737
+ case 4:
72738
+ _context3.next = 7;
72739
+ break;
72740
+ case 6:
72741
+ // End media after 5 seconds
72742
+ setTimeout(function () {
72743
+ console.debug("".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended . . ."));
72744
+ media.emitter.emit('end', media);
72745
+ vjsPlayer.dispose();
72746
+ }, 5000);
72747
+ case 7:
72748
+ case "end":
72749
+ return _context3.stop();
72750
+ }
72751
+ }, _callee3);
72752
+ }));
72753
+ return function (_x3) {
72754
+ return _ref3.apply(this, arguments);
72755
+ };
72756
+ }());
72757
+ vjsPlayer.on('ended', function () {
72758
+ var _media$emitter;
72759
+ console.debug("VideoMedia: onended: ".concat(capitalizeStr(media.mediaType), " for media > ").concat(media.id, " has ended playing . . ."));
72760
+ (_media$emitter = media.emitter) === null || _media$emitter === void 0 || _media$emitter.emit('end', media);
72761
+ vjsPlayer.dispose();
72762
+ });
72763
+ vjsPlayer.on('durationchange', function () {
72764
+ if (media.duration === 0 && vjsPlayer.duration() !== undefined) {
72765
+ media.duration = vjsPlayer.duration();
72766
+ } else if (media.duration > 0) {
72767
+ vjsPlayer.duration(media.duration);
72785
72768
  }
72786
- }
72769
+ console.debug('VIDEOJS: ondurationchange: Showing Media ' + media.id + ' for ' + vjsPlayer.duration() + 's of Region ' + media.region.regionId);
72770
+ });
72787
72771
  }
72788
72772
  }
72789
72773
  };
@@ -72864,10 +72848,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
72864
72848
  mediaTimer = setInterval(function () {
72865
72849
  mediaTimeCount++;
72866
72850
  if (mediaTimeCount > media.duration) {
72851
+ console.debug('startMediaTimer: emit>end: on media ' + media.id + ' of Region ' + media.region.regionId);
72867
72852
  media.emitter.emit('end', media);
72868
72853
  }
72869
72854
  }, 1000);
72870
- console.debug('Showing Media ' + media.id + ' for ' + media.duration + 's of Region ' + media.region.regionId);
72855
+ console.debug('startMediaTimer: Showing Media ' + media.id + ' for ' + media.duration + 's of Region ' + media.region.regionId);
72871
72856
  };
72872
72857
  emitter.on('start', function (media) {
72873
72858
  if (media.mediaType === 'video') {
@@ -73022,8 +73007,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73022
73007
  $media.style.cssText = $media.style.cssText.concat("background-position: ".concat(align, " ").concat(valign));
73023
73008
  }
73024
73009
  } else if (self.mediaType === 'video') {
73025
- var $videoMedia = $media;
73026
- $videoMedia.textContent = 'Unsupported Video';
73010
+ var $videoMedia = composeVideoSource($media, self);
73011
+ var isMuted = false;
73012
+ if (Boolean(self.options['mute'])) {
73013
+ isMuted = self.options.mute === '1';
73014
+ }
73027
73015
  if (Boolean(self.options['scaletype'])) {
73028
73016
  if (self.options.scaletype === 'stretch') {
73029
73017
  $videoMedia.style.objectFit = 'fill';
@@ -73031,8 +73019,10 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73031
73019
  }
73032
73020
  $videoMedia.classList.add('video-js', 'vjs-default-skin');
73033
73021
  if (self.loop) {
73022
+ self.loop = true;
73034
73023
  $videoMedia.loop = true;
73035
73024
  }
73025
+ self.muted = isMuted;
73036
73026
  $media = $videoMedia;
73037
73027
  } else if (self.mediaType === 'audio') {
73038
73028
  var $audioMedia = $media;
@@ -73135,7 +73125,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73135
73125
  }
73136
73126
  var showCurrentMedia = /*#__PURE__*/function () {
73137
73127
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
73138
- var $mediaId, $media, isCMS, isMuted;
73128
+ var $mediaId, $media, isCMS;
73139
73129
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
73140
73130
  while (1) switch (_context2.prev = _context2.next) {
73141
73131
  case 0:
@@ -73146,7 +73136,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73146
73136
  $media = getNewMedia();
73147
73137
  }
73148
73138
  if (!$media) {
73149
- _context2.next = 45;
73139
+ _context2.next = 39;
73150
73140
  break;
73151
73141
  }
73152
73142
  $media.style.setProperty('display', 'block');
@@ -73175,54 +73165,46 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73175
73165
  _context2.t3 = _context2.t2;
73176
73166
  _context2.t4 = _context2.t1.concat.call(_context2.t1, _context2.t3);
73177
73167
  _context2.t0.setProperty.call(_context2.t0, 'background-image', _context2.t4);
73178
- _context2.next = 44;
73168
+ _context2.next = 38;
73179
73169
  break;
73180
73170
  case 22:
73181
73171
  if (!(self.mediaType === 'video' && self.url !== null)) {
73182
- _context2.next = 32;
73172
+ _context2.next = 26;
73183
73173
  break;
73184
73174
  }
73185
- _context2.next = 25;
73186
- return composeVideoSource($media, self);
73187
- case 25:
73188
- $media = _context2.sent;
73189
- isMuted = false;
73190
- if (Boolean(self.options['mute'])) {
73191
- isMuted = self.options.mute === '1';
73192
- }
73193
- self.muted = isMuted;
73194
- videojs($media, {
73175
+ // Initialize video.js
73176
+ self.player = videojs($media, {
73195
73177
  controls: false,
73196
73178
  preload: 'auto',
73197
73179
  autoplay: false,
73198
- muted: isMuted,
73180
+ muted: self.muted,
73199
73181
  errorDisplay: xlr.config.platform !== 'chromeOS',
73200
- restoreEl: $media
73182
+ loop: self.loop
73201
73183
  });
73202
- _context2.next = 44;
73184
+ _context2.next = 38;
73203
73185
  break;
73204
- case 32:
73186
+ case 26:
73205
73187
  if (!(self.mediaType === 'audio' && self.url !== null)) {
73206
- _context2.next = 43;
73188
+ _context2.next = 37;
73207
73189
  break;
73208
73190
  }
73209
73191
  if (!isCMS) {
73210
- _context2.next = 39;
73192
+ _context2.next = 33;
73211
73193
  break;
73212
73194
  }
73213
- _context2.next = 36;
73195
+ _context2.next = 30;
73214
73196
  return preloadMediaBlob(self.url, self.mediaType);
73215
- case 36:
73197
+ case 30:
73216
73198
  _context2.t5 = _context2.sent;
73217
- _context2.next = 40;
73199
+ _context2.next = 34;
73218
73200
  break;
73219
- case 39:
73201
+ case 33:
73220
73202
  _context2.t5 = self.url;
73221
- case 40:
73203
+ case 34:
73222
73204
  $media.src = _context2.t5;
73223
- _context2.next = 44;
73205
+ _context2.next = 38;
73224
73206
  break;
73225
- case 43:
73207
+ case 37:
73226
73208
  if ((self.render === 'html' || self.mediaType === 'webpage') && self.iframe && self.checkIframeStatus) {
73227
73209
  // Set state as false ( for now )
73228
73210
  self.ready = false;
@@ -73238,9 +73220,9 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73238
73220
  // }
73239
73221
  // });
73240
73222
  }
73241
- case 44:
73223
+ case 38:
73242
73224
  self.emitter.emit('start', self);
73243
- case 45:
73225
+ case 39:
73244
73226
  case "end":
73245
73227
  return _context2.stop();
73246
73228
  }
@@ -73302,6 +73284,9 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73302
73284
  self.complete = false;
73303
73285
  self.ending = false;
73304
73286
  self.ended = false;
73287
+ self.curMedia = undefined;
73288
+ self.nxtMedia = undefined;
73289
+ self.currentMediaIndex = 0;
73305
73290
  self.id = props.regionId;
73306
73291
  self.uniqueId = "".concat(nextId(self.options));
73307
73292
  self.options = _objectSpread2(_objectSpread2({}, platform), props.options);
@@ -73365,7 +73350,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73365
73350
  console.debug('Region::finished called . . . ', self.id);
73366
73351
  // Mark as complete
73367
73352
  self.complete = true;
73368
- self.layout.regions[regionObject.index] = regionObject;
73353
+ self.layout.regions[regionObject.index] = self;
73369
73354
  self.layout.regionExpired();
73370
73355
  };
73371
73356
  regionObject.prepareMediaObjects = function () {
@@ -73487,7 +73472,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73487
73472
  }
73488
73473
  };
73489
73474
  regionObject.playNextMedia = function () {
73490
- var _self$curMedia, _self$curMedia2, _self$curMedia3, _self$curMedia4;
73475
+ var _self$curMedia, _self$curMedia2, _self$curMedia3, _self$curMedia4, _self$curMedia5;
73491
73476
  var self = regionObject;
73492
73477
  /* The current media has finished running */
73493
73478
  if (self.ended) {
@@ -73507,7 +73492,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
73507
73492
  // When the region has completed and mediaObjects.length = 1
73508
73493
  // and curMedia.loop = false, then put the media on
73509
73494
  // its current state
73510
- if (self.complete && self.mediaObjects.length === 1 && ((_self$curMedia2 = self.curMedia) === null || _self$curMedia2 === void 0 ? void 0 : _self$curMedia2.render) !== 'html' && ((_self$curMedia3 = self.curMedia) === null || _self$curMedia3 === void 0 ? void 0 : _self$curMedia3.mediaType) === 'image' && !((_self$curMedia4 = self.curMedia) !== null && _self$curMedia4 !== void 0 && _self$curMedia4.loop)) {
73495
+ if (self.complete && self.mediaObjects.length === 1 && ((_self$curMedia2 = self.curMedia) === null || _self$curMedia2 === void 0 ? void 0 : _self$curMedia2.render) !== 'html' && (((_self$curMedia3 = self.curMedia) === null || _self$curMedia3 === void 0 ? void 0 : _self$curMedia3.mediaType) === 'image' || ((_self$curMedia4 = self.curMedia) === null || _self$curMedia4 === void 0 ? void 0 : _self$curMedia4.mediaType) === 'video') && !((_self$curMedia5 = self.curMedia) !== null && _self$curMedia5 !== void 0 && _self$curMedia5.loop)) {
73511
73496
  return;
73512
73497
  }
73513
73498
  self.currentMediaIndex = self.currentMediaIndex + 1;
@@ -74589,9 +74574,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
74589
74574
  console.debug('prepareLayouts::xlr>layouts', self.layouts);
74590
74575
  return _context3.abrupt("return", new Promise(function (resolve) {
74591
74576
  layouts.map(function (layoutItem) {
74592
- if (!Boolean(self.layouts[layoutItem.index])) {
74593
- self.layouts[layoutItem.index] = layoutItem;
74594
- }
74577
+ self.layouts[layoutItem.index] = layoutItem;
74595
74578
  });
74596
74579
  self.currentLayoutIndex = xlrLayouts.currentLayoutIndex;
74597
74580
  self.currentLayout = self.layouts[self.currentLayoutIndex];