@innovastudio/contentbox 1.4.2 → 1.4.3

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.
@@ -78403,22 +78403,20 @@ class Rte {
78403
78403
 
78404
78404
  this.builder.setZoomOnArea(); // hide tools
78405
78405
 
78406
- /*
78407
- let tools = this.builderStuff.querySelectorAll('.is-tool');
78408
- Array.prototype.forEach.call(tools, (tool) => {
78409
- tool.style.display = '';
78406
+ let tools = this.builder.doc.querySelectorAll('.is-tool');
78407
+ Array.prototype.forEach.call(tools, tool => {
78408
+ tool.style.display = '';
78410
78409
  });
78411
- let tool = this.builderStuff.querySelector('.is-column-tool');
78410
+ let tool = this.builder.doc.querySelector('.is-column-tool');
78412
78411
  tool.style.display = 'none';
78413
- tools = this.builder.doc.querySelectorAll('.is-row-tool');
78414
- tools.forEach(tool=>{
78415
- tool.style.display = 'none';
78412
+ tools = this.builder.doc.querySelectorAll('.is-row-tool');
78413
+ tools.forEach(tool => {
78414
+ tool.style.display = 'none';
78416
78415
  });
78417
- tools = this.builder.doc.querySelectorAll('.is-rowadd-tool');
78418
- tools.forEach(tool=>{
78419
- tool.style.opacity = 0;
78416
+ tools = this.builder.doc.querySelectorAll('.is-rowadd-tool');
78417
+ tools.forEach(tool => {
78418
+ tool.style.opacity = 0;
78420
78419
  });
78421
- */
78422
78420
 
78423
78421
  if (this.builder.onZoom) {
78424
78422
  let val = this.inpZoomSlider.value;
@@ -78440,23 +78438,27 @@ class Rte {
78440
78438
  });
78441
78439
  } // show & reposition
78442
78440
 
78443
- /*
78441
+
78444
78442
  this.builder.elmTool.repositionElementTool();
78445
- let col = this.builder.activeCol;
78446
- let tool = this.builderStuff.querySelector('.is-column-tool');
78443
+ let col = this.builder.activeCol;
78444
+ let tool = this.builder.doc.querySelector('.is-column-tool');
78447
78445
  tool.style.display = '';
78448
- tool.style.top = (col.getBoundingClientRect().top - 29 + window.pageYOffset) + 'px';
78449
- tool.style.left = (col.getBoundingClientRect().left - 1) + 'px';
78450
- let tools = this.builder.doc.querySelectorAll('.is-row-tool');
78451
- tools.forEach(tool=>{
78452
- tool.style.display = '';
78446
+ tool.style.top = col.getBoundingClientRect().top - 29 + window.pageYOffset + 'px';
78447
+ tool.style.left = col.getBoundingClientRect().left - 1 + 'px';
78448
+ let tools = this.builder.doc.querySelectorAll('.is-row-tool');
78449
+ tools.forEach(tool => {
78450
+ tool.style.display = '';
78453
78451
  });
78454
- tools = this.builder.doc.querySelectorAll('.is-rowadd-tool');
78455
- tools.forEach(tool=>{
78456
- tool.style.opacity = '';
78452
+ tools = this.builder.doc.querySelectorAll('.is-rowadd-tool');
78453
+ tools.forEach(tool => {
78454
+ tool.style.opacity = '';
78457
78455
  });
78458
- */
78459
78456
 
78457
+ if (this.builder.onZoomEnd) {
78458
+ let val = this.rteZoomSlider.value;
78459
+ let scale = val / 100;
78460
+ this.builder.onZoomEnd(scale);
78461
+ }
78460
78462
 
78461
78463
  if (this.builder.onZoomEnd) {
78462
78464
  let val = this.inpZoomSlider.value;
@@ -79616,6 +79618,7 @@ class Rte {
79616
79618
  }
79617
79619
  }
79618
79620
 
79621
+ if (this.builder.activeElement) this.builder.activeElement.style.letterSpacing = '';
79619
79622
  if (newClassName === classes.tracking_000) newClassName = ''; // clear for normal tracking
79620
79623
 
79621
79624
  dom.execCommandClass(newClassName, classes);
@@ -82256,6 +82259,7 @@ function isAChildOf(parent, child) {
82256
82259
  class Lightbox {
82257
82260
  constructor(builder) {
82258
82261
  this.builder = builder;
82262
+ this.arrow = this.builder.lightboxArrow;
82259
82263
  const util = this.builder.util;
82260
82264
  const builderStuff = this.builder.builderStuff;
82261
82265
  this.util = util;
@@ -82270,42 +82274,76 @@ class Lightbox {
82270
82274
  // }
82271
82275
  // this.builderStuff = builderStuff;
82272
82276
 
82273
- this.id = this.makeid();
82277
+ this.id = this.makeid(); // let html = `
82278
+ // <div class="is-lightbox lightbox-externalvideo-edit" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82279
+ // <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button" style="flex:none;position:absolute;top:0;right:0;background:none;z-index:1;">
82280
+ // <svg><use xlink:href="#_${this.id}svgIconClose"></use></svg>
82281
+ // </button>
82282
+ // <div class="lightbox-content" style="width:100%;">
82283
+ // <div class="embed-responsive embed-responsive-16by9" style="width:100%;">
82284
+ // <iframe tabindex="0" width="560" height="315" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
82285
+ // </div>
82286
+ // </div>
82287
+ // </div>
82288
+ // <div class="is-lightbox lightbox-video-edit light" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82289
+ // <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button" style="flex:none;position:absolute;top:0;right:0;background:none;z-index:1;">
82290
+ // <svg><use xlink:href="#_${this.id}svgIconClose"></use></svg>
82291
+ // </button>
82292
+ // <div class="lightbox-content" style="width:100%;"></div>
82293
+ // </div>
82294
+ // <div class="is-lightbox lightbox-image-edit light" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82295
+ // <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button" style="flex:none;position:absolute;top:0;right:0;background:none;z-index:1;">
82296
+ // <svg><use xlink:href="#_${this.id}svgIconClose"></use></svg>
82297
+ // </button>
82298
+ // <div class="lightbox-content" style="width:100%;"></div>
82299
+ // </div>
82300
+ // <svg width="0" height="0" style="position:absolute;display:none;">
82301
+ // <defs>
82302
+ // <symbol viewBox="0 0 24 24" id="_${this.id}svgIconClose" stroke-width="0.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
82303
+ // <path stroke="none" d="M0 0h24v24H0z" fill="none"></path><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>
82304
+ // </symbol>
82305
+ // </defs>
82306
+ // </svg>
82307
+ // `;
82308
+
82274
82309
  let html = `
82275
- <div class="is-lightbox lightbox-externalvideo-edit" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82276
- <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button" style="flex:none;position:absolute;top:0;right:0;background:none;z-index:1;">
82277
- <svg><use xlink:href="#_${this.id}svgIconClose"></use></svg>
82278
- </button>
82279
- <div class="lightbox-content" style="width:100%;">
82280
- <div class="embed-responsive embed-responsive-16by9" style="width:100%;">
82281
- <iframe tabindex="0" width="560" height="315" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
82310
+
82311
+ <div class="is-lightbox lightbox-edit" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82312
+ <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button">
82313
+ <svg><use xlink:href="#__${this.id}svgLightboxClose"></use></svg>
82314
+ </button>
82315
+
82316
+ <div class="lightbox-content" style="width:100%;">
82282
82317
  </div>
82318
+
82319
+ <button class="cmd-lightbox-prev" title="${util.out('Previous')}" type="button" style="top:50%;left:3px;">
82320
+ <svg><use xlink:href="#__${this.id}svgLightboxLeft"></use></svg>
82321
+ </button>
82322
+ <button class="cmd-lightbox-next" title="${util.out('Next')}" type="button" style="top:50%;left:auto;right:3px">
82323
+ <svg><use xlink:href="#__${this.id}svgLightboxRight"></use></svg>
82324
+ </button>
82283
82325
  </div>
82284
- </div>
82285
- <div class="is-lightbox lightbox-video-edit light" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82286
- <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button" style="flex:none;position:absolute;top:0;right:0;background:none;z-index:1;">
82287
- <svg><use xlink:href="#_${this.id}svgIconClose"></use></svg>
82288
- </button>
82289
- <div class="lightbox-content" style="width:100%;"></div>
82290
- </div>
82291
- <div class="is-lightbox lightbox-image-edit light" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
82292
- <button class="cmd-lightbox-close" title="${util.out('Close')}" type="button" style="flex:none;position:absolute;top:0;right:0;background:none;z-index:1;">
82293
- <svg><use xlink:href="#_${this.id}svgIconClose"></use></svg>
82294
- </button>
82295
- <div class="lightbox-content" style="width:100%;"></div>
82296
- </div>
82297
- <svg width="0" height="0" style="position:absolute;display:none;">
82298
- <defs>
82299
- <symbol viewBox="0 0 24 24" id="_${this.id}svgIconClose" stroke-width="0.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
82300
- <path stroke="none" d="M0 0h24v24H0z" fill="none"></path><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>
82301
- </symbol>
82302
- </defs>
82303
- </svg>
82304
- `;
82326
+
82327
+ <svg width="0" height="0" style="position:absolute;display:none;">
82328
+ <defs>
82329
+ <symbol viewBox="0 0 24 24" id="__${this.id}svgLightboxClose" stroke-width="0.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
82330
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>
82331
+ </symbol>
82332
+ <symbol viewBox="0 0 24 24" id="__${this.id}svgLightboxLeft" stroke-width="0.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
82333
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
82334
+ <polyline points="15 6 9 12 15 18"></polyline>
82335
+ </symbol>
82336
+ <symbol viewBox="0 0 24 24" id="__${this.id}svgLightboxRight" stroke-width="0.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
82337
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
82338
+ <polyline points="9 6 15 12 9 18"></polyline>
82339
+ </symbol>
82340
+ </defs>
82341
+ </svg>
82342
+ `;
82305
82343
  dom.appendHtml(this.builderStuff, html);
82306
82344
 
82307
82345
  const close = () => {
82308
- let lightbox = document.querySelector('.is-lightbox.active');
82346
+ let lightbox = document.querySelector('.is-lightbox.lightbox-edit.active');
82309
82347
  dom.removeClass(lightbox, 'active');
82310
82348
  const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82311
82349
  btnClose.style.opacity = 0;
@@ -82325,22 +82363,70 @@ class Lightbox {
82325
82363
  }, 300);
82326
82364
  };
82327
82365
 
82328
- const handleItemKeyDown = e => {
82329
- e.preventDefault();
82330
- e.stopImmediatePropagation();
82366
+ const prev = () => {
82367
+ const list = this.getList();
82368
+ let lightbox = document.querySelector('.is-lightbox.lightbox-edit.active');
82369
+ let url = lightbox.getAttribute('data-url');
82370
+ list.forEach(item => {
82371
+ if (url === item.url) {
82372
+ const currentIndex = list.indexOf(item);
82373
+ let prevIndex;
82374
+ prevIndex = (currentIndex - 1) % list.length;
82375
+
82376
+ if (prevIndex === -1) {
82377
+ prevIndex = list.length - 1;
82378
+ }
82379
+
82380
+ this.openThen(list[prevIndex]);
82381
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82382
+ btnPrev.focus();
82383
+ }
82384
+ });
82385
+ };
82386
+
82387
+ const next = () => {
82388
+ const list = this.getList();
82389
+ let lightbox = document.querySelector('.is-lightbox.lightbox-edit.active');
82390
+ let url = lightbox.getAttribute('data-url');
82391
+ list.forEach(item => {
82392
+ if (url === item.url) {
82393
+ const currentIndex = list.indexOf(item);
82394
+ const nextIndex = (currentIndex + 1) % list.length;
82395
+ this.openThen(list[nextIndex]);
82396
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82397
+ btnNext.focus();
82398
+ }
82399
+ });
82400
+ };
82331
82401
 
82402
+ const handleItemKeyDown = e => {
82332
82403
  if (e.keyCode === 27) {
82333
82404
  // escape key
82334
82405
  close();
82335
- } else if (e.which === 9 && !e.shiftKey) {
82336
- // tab key pressed
82406
+ e.preventDefault();
82407
+ }
82408
+ /*else if ((e.which === 9 && !e.shiftKey)) { // tab key pressed
82337
82409
  let lightbox = document.querySelector('.is-lightbox.active');
82338
82410
  const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82339
82411
  btnClose.focus();
82412
+ e.preventDefault();
82413
+ }*/
82414
+
82415
+
82416
+ if (this.arrow) {
82417
+ if (e.which === 37 && !e.shiftKey) {
82418
+ // left
82419
+ prev();
82420
+ }
82421
+
82422
+ if (e.which === 39 && !e.shiftKey) {
82423
+ // right
82424
+ next();
82425
+ }
82340
82426
  }
82341
82427
  };
82342
82428
 
82343
- const lightboxes = this.builderStuff.querySelectorAll('.lightbox-externalvideo-edit,.lightbox-video-edit,.lightbox-image-edit');
82429
+ const lightboxes = this.builderStuff.querySelectorAll('div.lightbox-edit');
82344
82430
  lightboxes.forEach(lightbox => {
82345
82431
  lightbox.addEventListener('keydown', handleItemKeyDown);
82346
82432
  const btnClose = lightbox.querySelector('.cmd-lightbox-close');
@@ -82358,6 +82444,32 @@ class Lightbox {
82358
82444
  e.preventDefault();
82359
82445
  e.stopImmediatePropagation();
82360
82446
  });
82447
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82448
+ if (btnPrev) btnPrev.addEventListener('click', e => {
82449
+ prev();
82450
+ e.preventDefault();
82451
+ e.stopImmediatePropagation();
82452
+ });
82453
+ if (btnPrev) btnPrev.addEventListener('keydown', e => {
82454
+ if (e.keyCode === 13 || e.keyCode === 32) {
82455
+ // enter or spacebar key
82456
+ prev();
82457
+ e.preventDefault();
82458
+ }
82459
+ });
82460
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82461
+ if (btnNext) btnNext.addEventListener('click', e => {
82462
+ next();
82463
+ e.preventDefault();
82464
+ e.stopImmediatePropagation();
82465
+ });
82466
+ if (btnNext) btnNext.addEventListener('keydown', e => {
82467
+ if (e.keyCode === 13 || e.keyCode === 32) {
82468
+ // enter or spacebar key
82469
+ next();
82470
+ e.preventDefault();
82471
+ }
82472
+ });
82361
82473
  }); // this.init();
82362
82474
  } //constructor
82363
82475
 
@@ -82413,21 +82525,89 @@ class Lightbox {
82413
82525
  */
82414
82526
 
82415
82527
 
82528
+ openThen(item) {
82529
+ if (item.type === 'image') {
82530
+ this.programmatically = true;
82531
+ this.openImage(item.url, item.theme, item.color);
82532
+ }
82533
+
82534
+ if (item.type === 'video') {
82535
+ this.programmatically = true;
82536
+ this.openVideo(item.url, item.theme, item.color);
82537
+ }
82538
+
82539
+ if (item.type === 'externalvideo') {
82540
+ this.programmatically = true;
82541
+ this.openExternalVideo(item.url, item.theme, item.color);
82542
+ }
82543
+ }
82544
+
82416
82545
  openImage(url, theme, color) {
82417
82546
  const dom = this.dom;
82418
- if (document.activeElement) this.elmFocus = document.activeElement;
82547
+
82548
+ if (this.builder.doc.activeElement) {
82549
+ this.elmFocus = this.builder.doc.activeElement;
82550
+
82551
+ if (!this.programmatically) {
82552
+ const parent = this.builder.doc.activeElement.closest('[data-gallery]');
82553
+ this.parent = parent;
82554
+ }
82555
+ }
82556
+
82419
82557
  this.builder.preserveSelection = true;
82420
- let lightbox = this.builderStuff.querySelector('div.is-lightbox.lightbox-image-edit'); // in case opened in an iframe (ex. preview)
82558
+ let lightbox = document.querySelector('.is-lightbox.lightbox-edit'); // in case opened in an iframe (ex. preview)
82421
82559
 
82422
82560
  if (window.frameElement && !lightbox) {
82423
- lightbox = parent.document.querySelector('.is-lightbox.lightbox-image-edit');
82561
+ lightbox = parent.document.querySelector('.is-lightbox.lightbox-edit');
82562
+ }
82563
+
82564
+ if (!this.programmatically) {
82565
+ const list = this.getList();
82566
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82567
+ btnPrev.style.opacity = 0;
82568
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82569
+ btnNext.style.opacity = 0;
82570
+ btnPrev.style.display = 'none';
82571
+ btnNext.style.display = 'none';
82572
+
82573
+ if (list.length > 1 && this.arrow) {
82574
+ btnPrev.style.display = 'flex';
82575
+ btnNext.style.display = 'flex';
82576
+ setTimeout(() => {
82577
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82578
+ btnPrev.style.opacity = 1;
82579
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82580
+ btnNext.style.opacity = 1;
82581
+ }, 500);
82582
+ }
82583
+
82584
+ const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82585
+ btnClose.style.opacity = 0;
82586
+ setTimeout(() => {
82587
+ dom.addClass(lightbox, 'active');
82588
+ setTimeout(() => {
82589
+ btnClose.style.opacity = 1;
82590
+ }, 450);
82591
+ }, 10);
82424
82592
  }
82425
82593
 
82426
- const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82427
- btnClose.style.opacity = 0;
82594
+ lightbox.setAttribute('data-url', url);
82595
+ lightbox.classList.remove('lightbox-video');
82596
+ lightbox.classList.remove('lightbox-externalvideo');
82597
+ lightbox.classList.add('lightbox-image');
82428
82598
  if (color) lightbox.style.backgroundColor = color;
82429
82599
  const div = lightbox.querySelector('.lightbox-content');
82430
- div.innerHTML = `<img src="${url}">`;
82600
+
82601
+ if (!this.programmatically) {
82602
+ div.innerHTML = `<img src="${url}">`;
82603
+ } else {
82604
+ div.style.transition = 'all 200ms ease';
82605
+ div.style.opacity = '0';
82606
+ setTimeout(() => {
82607
+ div.innerHTML = `<img src="${url}">`;
82608
+ div.style.opacity = '1';
82609
+ }, 200);
82610
+ }
82431
82611
 
82432
82612
  if (theme === 'light') {
82433
82613
  dom.addClass(lightbox, 'light');
@@ -82439,34 +82619,82 @@ class Lightbox {
82439
82619
 
82440
82620
  lightbox.style.display = 'flex';
82441
82621
  if (!window.frameElement) document.body.style.overflowY = 'hidden';
82442
- setTimeout(() => {
82443
- dom.addClass(lightbox, 'active');
82444
- setTimeout(() => {
82445
- btnClose.style.opacity = 1;
82446
- }, 450);
82447
- }, 10);
82448
82622
  lightbox.focus({
82449
82623
  preventScroll: true
82450
82624
  });
82625
+ this.programmatically = false;
82451
82626
  }
82452
82627
 
82453
82628
  openVideo(url, theme, color) {
82454
82629
  const dom = this.dom;
82455
- if (document.activeElement) this.elmFocus = document.activeElement;
82630
+
82631
+ if (this.builder.doc.activeElement) {
82632
+ this.elmFocus = this.builder.doc.activeElement;
82633
+
82634
+ if (!this.programmatically) {
82635
+ const parent = this.builder.doc.activeElement.closest('[data-gallery]');
82636
+ this.parent = parent;
82637
+ }
82638
+ }
82639
+
82456
82640
  this.builder.preserveSelection = true;
82457
- let lightbox = document.querySelector('.is-lightbox.lightbox-video-edit'); // in case opened in an iframe (ex. preview)
82641
+ let lightbox = document.querySelector('.is-lightbox.lightbox-edit'); // in case opened in an iframe (ex. preview)
82458
82642
 
82459
82643
  if (window.frameElement && !lightbox) {
82460
- lightbox = parent.document.querySelector('.is-lightbox.lightbox-video-edit');
82644
+ lightbox = parent.document.querySelector('.is-lightbox.lightbox-edit');
82645
+ }
82646
+
82647
+ if (!this.programmatically) {
82648
+ const list = this.getList();
82649
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82650
+ btnPrev.style.opacity = 0;
82651
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82652
+ btnNext.style.opacity = 0;
82653
+ btnPrev.style.display = 'none';
82654
+ btnNext.style.display = 'none';
82655
+
82656
+ if (list.length > 1 && this.arrow) {
82657
+ btnPrev.style.display = 'flex';
82658
+ btnNext.style.display = 'flex';
82659
+ setTimeout(() => {
82660
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82661
+ btnPrev.style.opacity = 1;
82662
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82663
+ btnNext.style.opacity = 1;
82664
+ }, 500);
82665
+ }
82666
+
82667
+ const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82668
+ btnClose.style.opacity = 0;
82669
+ setTimeout(() => {
82670
+ dom.addClass(lightbox, 'active');
82671
+ setTimeout(() => {
82672
+ btnClose.style.opacity = 1;
82673
+ }, 450);
82674
+ }, 10);
82461
82675
  }
82462
82676
 
82463
- const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82464
- btnClose.style.opacity = 0;
82677
+ lightbox.setAttribute('data-url', url);
82678
+ lightbox.classList.add('lightbox-video');
82679
+ lightbox.classList.remove('lightbox-externalvideo');
82680
+ lightbox.classList.remove('lightbox-image');
82465
82681
  if (color) lightbox.style.backgroundColor = color;
82466
82682
  const div = lightbox.querySelector('.lightbox-content');
82467
- div.innerHTML = `<video class="is-video-bg" playsinline controls autoplay width="100%">
82468
- <source src="${url}" type="video/mp4">
82469
- </video>`;
82683
+
82684
+ if (!this.programmatically) {
82685
+ div.innerHTML = `<video playsinline controls autoplay width="100%">
82686
+ <source src="${url}" type="video/mp4">
82687
+ </video>`;
82688
+ } else {
82689
+ div.style.transition = 'all 200ms ease';
82690
+ div.style.opacity = '0';
82691
+ setTimeout(() => {
82692
+ div.innerHTML = `<video playsinline controls autoplay width="100%">
82693
+ <source src="${url}" type="video/mp4">
82694
+ </video>`;
82695
+ div.style.opacity = '1';
82696
+ }, 200);
82697
+ }
82470
82698
 
82471
82699
  if (theme === 'light') {
82472
82700
  dom.addClass(lightbox, 'light');
@@ -82478,29 +82706,65 @@ class Lightbox {
82478
82706
 
82479
82707
  lightbox.style.display = 'flex';
82480
82708
  if (!window.frameElement) document.body.style.overflowY = 'hidden';
82481
- setTimeout(() => {
82482
- dom.addClass(lightbox, 'active');
82483
- setTimeout(() => {
82484
- btnClose.style.opacity = 1;
82485
- }, 450);
82486
- }, 10);
82487
82709
  lightbox.focus({
82488
82710
  preventScroll: true
82489
82711
  });
82712
+ this.programmatically = false;
82490
82713
  }
82491
82714
 
82492
82715
  openExternalVideo(url, theme, color) {
82493
82716
  const dom = this.dom;
82494
- if (document.activeElement) this.elmFocus = document.activeElement;
82717
+
82718
+ if (this.builder.doc.activeElement) {
82719
+ this.elmFocus = this.builder.doc.activeElement;
82720
+
82721
+ if (!this.programmatically) {
82722
+ const parent = this.builder.doc.activeElement.closest('[data-gallery]');
82723
+ this.parent = parent;
82724
+ }
82725
+ }
82726
+
82495
82727
  this.builder.preserveSelection = true;
82496
- let lightbox = document.querySelector('.is-lightbox.lightbox-externalvideo-edit'); // in case opened in an iframe (ex. preview)
82728
+ let lightbox = document.querySelector('.is-lightbox.lightbox-edit'); // in case opened in an iframe (ex. preview)
82497
82729
 
82498
82730
  if (window.frameElement && !lightbox) {
82499
- lightbox = parent.document.querySelector('.is-lightbox.lightbox-externalvideo-edit');
82731
+ lightbox = parent.document.querySelector('.is-lightbox.lightbox-edit');
82500
82732
  }
82501
82733
 
82502
- const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82503
- btnClose.style.opacity = 0;
82734
+ if (!this.programmatically) {
82735
+ const list = this.getList();
82736
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82737
+ btnPrev.style.opacity = 0;
82738
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82739
+ btnNext.style.opacity = 0;
82740
+ btnPrev.style.display = 'none';
82741
+ btnNext.style.display = 'none';
82742
+
82743
+ if (list.length > 1 && this.arrow) {
82744
+ btnPrev.style.display = 'flex';
82745
+ btnNext.style.display = 'flex';
82746
+ setTimeout(() => {
82747
+ const btnPrev = lightbox.querySelector('.cmd-lightbox-prev');
82748
+ btnPrev.style.opacity = 1;
82749
+ const btnNext = lightbox.querySelector('.cmd-lightbox-next');
82750
+ btnNext.style.opacity = 1;
82751
+ }, 500);
82752
+ }
82753
+
82754
+ const btnClose = lightbox.querySelector('.cmd-lightbox-close');
82755
+ btnClose.style.opacity = 0;
82756
+ setTimeout(() => {
82757
+ dom.addClass(lightbox, 'active');
82758
+ setTimeout(() => {
82759
+ btnClose.style.opacity = 1;
82760
+ }, 450);
82761
+ }, 10);
82762
+ }
82763
+
82764
+ lightbox.setAttribute('data-url', url);
82765
+ lightbox.classList.remove('lightbox-video');
82766
+ lightbox.classList.add('lightbox-externalvideo');
82767
+ lightbox.classList.remove('lightbox-image');
82504
82768
  if (color) lightbox.style.backgroundColor = color;
82505
82769
 
82506
82770
  if (theme === 'light') {
@@ -82511,22 +82775,37 @@ class Lightbox {
82511
82775
  dom.removeClass(lightbox, 'light');
82512
82776
  }
82513
82777
 
82514
- const iframe = lightbox.querySelector('iframe');
82515
- url = this.getIframeVideoUrl(url);
82516
- if (url !== '') iframe.setAttribute('src', url);
82517
- lightbox.style.display = 'flex';
82518
- if (!window.frameElement) document.body.style.overflowY = 'hidden';
82519
82778
  const div = lightbox.querySelector('.lightbox-content');
82520
- div.style.width = div.offsetHeight * 16 / 9 + 'px';
82521
- setTimeout(() => {
82522
- dom.addClass(lightbox, 'active');
82779
+
82780
+ if (!this.programmatically) {
82781
+ div.innerHTML = `<div class="embed-responsive embed-responsive-16by9" style="width:100%;">
82782
+ <iframe width="560" height="315" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
82783
+ </div>`;
82784
+ const iframe = lightbox.querySelector('iframe');
82785
+ url = this.getIframeVideoUrl(url);
82786
+ if (url !== '') iframe.setAttribute('src', url);
82787
+ } else {
82788
+ div.style.transition = 'all 200ms ease';
82789
+ div.style.opacity = '0';
82523
82790
  setTimeout(() => {
82524
- btnClose.style.opacity = 1;
82525
- }, 450);
82526
- }, 10);
82791
+ div.innerHTML = `<div class="embed-responsive embed-responsive-16by9" style="width:100%;">
82792
+ <iframe width="560" height="315" src="about:blank" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
82793
+ </div>`;
82794
+ div.style.opacity = '1';
82795
+ const iframe = lightbox.querySelector('iframe');
82796
+ url = this.getIframeVideoUrl(url);
82797
+ if (url !== '') iframe.setAttribute('src', url);
82798
+ }, 200);
82799
+ }
82800
+
82801
+ lightbox.style.display = 'flex';
82802
+ if (!window.frameElement) document.body.style.overflowY = 'hidden'; // const div = lightbox.querySelector('.lightbox-content');
82803
+ // div.style.width=((div.offsetHeight*16)/9) + 'px';
82804
+
82527
82805
  lightbox.focus({
82528
82806
  preventScroll: true
82529
82807
  });
82808
+ this.programmatically = false;
82530
82809
  }
82531
82810
 
82532
82811
  getIframeVideoUrl(src) {
@@ -82570,6 +82849,88 @@ class Lightbox {
82570
82849
  return text + text2;
82571
82850
  }
82572
82851
 
82852
+ getList() {
82853
+ const arrGallery = [];
82854
+ let blockClickables = this.builder.doc.querySelectorAll('.block-click,.button-click,.is-lightbox');
82855
+
82856
+ if (this.parent) {
82857
+ blockClickables = this.parent.querySelectorAll('.block-click,.button-click,.is-lightbox');
82858
+ }
82859
+
82860
+ blockClickables.forEach(block => {
82861
+ if (!this.parent) {
82862
+ if (block.closest('[data-gallery')) return;
82863
+ }
82864
+
82865
+ let url;
82866
+ let extension;
82867
+
82868
+ if (block.tagName.toLowerCase() === 'a') {
82869
+ url = block.getAttribute('href');
82870
+ extension = url.split('.').pop().split('?')[0].split('#')[0];
82871
+ } else if (block.getAttribute('data-modal-url')) {
82872
+ url = block.getAttribute('data-modal-url');
82873
+ extension = url.split('.').pop().split('?')[0].split('#')[0];
82874
+ }
82875
+
82876
+ let theme = block.getAttribute('data-modal-theme');
82877
+ if (!theme) theme = 'light';
82878
+ const color = block.getAttribute('data-modal-color');
82879
+
82880
+ if (url) {
82881
+ if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm') {
82882
+ arrGallery.push({
82883
+ type: 'image',
82884
+ url: url,
82885
+ theme: theme,
82886
+ color: color
82887
+ });
82888
+ } else if (extension === 'mp4') {
82889
+ arrGallery.push({
82890
+ type: 'video',
82891
+ url: url,
82892
+ theme: 'dark',
82893
+ color: color
82894
+ });
82895
+ } else if (url.toLowerCase().indexOf('youtube.com') !== -1 || url.toLowerCase().indexOf('vimeo.com') !== -1) {
82896
+ arrGallery.push({
82897
+ type: 'externalvideo',
82898
+ url: url,
82899
+ theme: 'dark',
82900
+ color: color
82901
+ });
82902
+ }
82903
+ }
82904
+
82905
+ if (block.getAttribute('data-modal-image')) {
82906
+ url = block.getAttribute('data-modal-image');
82907
+ arrGallery.push({
82908
+ type: 'image',
82909
+ url: url,
82910
+ theme: theme,
82911
+ color: color
82912
+ });
82913
+ } else if (block.getAttribute('data-modal-video')) {
82914
+ url = block.getAttribute('data-modal-video');
82915
+ arrGallery.push({
82916
+ type: 'video',
82917
+ url: url,
82918
+ theme: 'dark',
82919
+ color: color
82920
+ });
82921
+ } else if (block.getAttribute('data-modal-externalvideo')) {
82922
+ url = block.getAttribute('data-modal-externalvideo');
82923
+ arrGallery.push({
82924
+ type: 'externalvideo',
82925
+ url: url,
82926
+ theme: 'dark',
82927
+ color: color
82928
+ });
82929
+ }
82930
+ });
82931
+ return arrGallery;
82932
+ }
82933
+
82573
82934
  } //Lightbox
82574
82935
 
82575
82936
  class ShortcutInfo {
@@ -83189,6 +83550,13 @@ class Resize {
83189
83550
  pane: col,
83190
83551
  onResize: (width, height) => {
83191
83552
  this.builder.util.hideControls();
83553
+ let numOfCols = 1;
83554
+ Array.from(col.parentNode.children).map(item => {
83555
+ if (item.classList.contains('is-row-tool')) return;
83556
+ if (item.classList.contains('is-rowadd-tool')) return;
83557
+ if (item === col) return;
83558
+ numOfCols++;
83559
+ });
83192
83560
 
83193
83561
  if (width) {
83194
83562
  col.style.flex = 'none';
@@ -83212,16 +83580,29 @@ class Resize {
83212
83580
  // Adjust to max
83213
83581
  // percentage = (max / row.offsetWidth) * 100;
83214
83582
  // Or make others auto
83215
- let numOfCols = 1;
83216
83583
  Array.from(col.parentNode.children).map(item => {
83217
83584
  if (item.classList.contains('is-row-tool')) return;
83218
83585
  if (item.classList.contains('is-rowadd-tool')) return; // if(this.opts.filterSibling) if(item.classList.contains(this.opts.filterSibling)) return;
83219
83586
 
83220
- if (item === col) return; // item.style.width = '100%';
83587
+ if (item === col) return; // // item.style.width = '100%';
83588
+ // if(!item.getAttribute('data-module')) item.style.width = '100%';
83589
+ // item.style.flex = '';
83221
83590
 
83222
- if (!item.getAttribute('data-module')) item.style.width = '100%';
83223
- item.style.flex = '';
83224
- numOfCols++;
83591
+ if (numOfCols === 2) {
83592
+ if (!item.getAttribute('data-module')) {
83593
+ item.style.width = '100%';
83594
+ item.style.flex = '';
83595
+ }
83596
+ } else {
83597
+ // if(!item.getAttribute('data-module') && !item.style.width) {
83598
+ // item.style.width = '100%';
83599
+ // item.style.flex = '';
83600
+ // }
83601
+ if (!item.getAttribute('data-module') && item === col.nextElementSibling) {
83602
+ item.style.width = '100%';
83603
+ item.style.flex = '';
83604
+ }
83605
+ }
83225
83606
  });
83226
83607
 
83227
83608
  if (numOfCols === 1) {
@@ -83251,6 +83632,14 @@ class Resize {
83251
83632
  }
83252
83633
  },
83253
83634
  resizeEnd: () => {
83635
+ let numOfCols = 1;
83636
+ Array.from(col.parentNode.children).map(item => {
83637
+ if (item.classList.contains('is-row-tool')) return;
83638
+ if (item.classList.contains('is-rowadd-tool')) return;
83639
+ if (item === col) return;
83640
+ numOfCols++;
83641
+ });
83642
+
83254
83643
  if (col.style.width) {
83255
83644
  col.style.width = col.offsetWidth + 'px'; // change from % to px
83256
83645
 
@@ -83279,10 +83668,25 @@ class Resize {
83279
83668
  if (item.classList.contains('is-row-tool')) return;
83280
83669
  if (item.classList.contains('is-rowadd-tool')) return; // if(this.opts.filterSibling) if(item.classList.contains(this.opts.filterSibling)) return;
83281
83670
 
83282
- if (item === col) return; // item.style.width = '100%';
83671
+ if (item === col) return; // // item.style.width = '100%';
83672
+ // if(!item.getAttribute('data-module')) item.style.width = '100%';
83673
+ // item.style.flex = '';
83283
83674
 
83284
- if (!item.getAttribute('data-module')) item.style.width = '100%';
83285
- item.style.flex = '';
83675
+ if (numOfCols === 2) {
83676
+ if (!item.getAttribute('data-module')) {
83677
+ item.style.width = '100%';
83678
+ item.style.flex = '';
83679
+ }
83680
+ } else {
83681
+ // if(!item.getAttribute('data-module') && !item.style.width) {
83682
+ // item.style.width = '100%';
83683
+ // item.style.flex = '';
83684
+ // }
83685
+ if (!item.getAttribute('data-module') && item === col.nextElementSibling) {
83686
+ item.style.width = '100%';
83687
+ item.style.flex = '';
83688
+ }
83689
+ }
83286
83690
  });
83287
83691
  } // /adjust others
83288
83692
  // New: Final fix (if column resized exceeds its max)
@@ -83336,12 +83740,11 @@ class Resize {
83336
83740
  item.style.height = '';
83337
83741
  item.style.minHeight = '';
83338
83742
  });
83339
- } // To position columnTool correctly, add delay.
83340
-
83743
+ } // // To position columnTool correctly, add delay.
83744
+ // setTimeout(()=>{
83745
+ // col.click();
83746
+ // },30);
83341
83747
 
83342
- setTimeout(() => {
83343
- col.click();
83344
- }, 30);
83345
83748
  }
83346
83749
  });
83347
83750
  }
@@ -84491,6 +84894,7 @@ class ContentBuilder {
84491
84894
  //set -1 for no max (use original image width)
84492
84895
  zoom: 1,
84493
84896
  useLightbox: false,
84897
+ lightboxArrow: true,
84494
84898
  imageRenameOnEdit: true,
84495
84899
  disableAutoEmbedVideo: false,
84496
84900
 
@@ -85234,6 +85638,8 @@ class ContentBuilder {
85234
85638
  util.clearControls();
85235
85639
  }
85236
85640
  }
85641
+
85642
+ this.element.hyperlink.buttonEditor.hide();
85237
85643
  } // Button Modal
85238
85644
 
85239
85645
 
@@ -89411,6 +89817,7 @@ class ContentBox {
89411
89817
  }],
89412
89818
  disableConfig: false,
89413
89819
  useLightbox: true,
89820
+ lightboxArrow: true,
89414
89821
  themes: [['#ffffff', '', ''], ['#282828', 'dark', 'contentbuilder/themes/dark.css'], ['#0088dc', 'colored', 'contentbuilder/themes/colored-blue.css'], ['#006add', 'colored', 'contentbuilder/themes/colored-blue6.css'], ['#0a4d92', 'colored', 'contentbuilder/themes/colored-darkblue.css'], ['#96af16', 'colored', 'contentbuilder/themes/colored-green.css'], ['#f3522b', 'colored', 'contentbuilder/themes/colored-orange.css'], ['#b92ea6', 'colored', 'contentbuilder/themes/colored-magenta.css'], ['#e73171', 'colored', 'contentbuilder/themes/colored-pink.css'], ['#782ec5', 'colored', 'contentbuilder/themes/colored-purple.css'], ['#ed2828', 'colored', 'contentbuilder/themes/colored-red.css'], ['#f9930f', 'colored', 'contentbuilder/themes/colored-yellow.css'], ['#13b34b', 'colored', 'contentbuilder/themes/colored-green4.css'], ['#333333', 'colored-dark', 'contentbuilder/themes/colored-dark.css'], ['#dbe5f5', 'light', 'contentbuilder/themes/light-blue.css'], ['#fbe6f2', 'light', 'contentbuilder/themes/light-pink.css'], ['#dcdaf3', 'light', 'contentbuilder/themes/light-purple.css'], ['#ffe9e0', 'light', 'contentbuilder/themes/light-red.css'], ['#fffae5', 'light', 'contentbuilder/themes/light-yellow.css'], ['#ddf3dc', 'light', 'contentbuilder/themes/light-green.css'], ['#c7ebfd', 'light', 'contentbuilder/themes/light-blue2.css'], ['#ffd5f2', 'light', 'contentbuilder/themes/light-pink2.css'], ['#eadafb', 'light', 'contentbuilder/themes/light-purple2.css'], ['#c5d4ff', 'light', 'contentbuilder/themes/light-blue3.css'], ['#ffefb1', 'light', 'contentbuilder/themes/light-yellow2.css'], ['#fefefe', 'light', 'contentbuilder/themes/light-gray3.css'], ['#e5e5e5', 'light', 'contentbuilder/themes/light-gray2.css'], ['#dadada', 'light', 'contentbuilder/themes/light-gray.css'], ['#3f4ec9', 'colored', 'contentbuilder/themes/colored-blue2.css'], ['#6779d9', 'colored', 'contentbuilder/themes/colored-blue4.css'], ['#10b9d7', 'colored', 'contentbuilder/themes/colored-blue3.css'], ['#006add', 'colored', 'contentbuilder/themes/colored-blue5.css'], ['#e92f94', 'colored', 'contentbuilder/themes/colored-pink3.css'], ['#a761d9', 'colored', 'contentbuilder/themes/colored-purple2.css'], ['#f9930f', 'colored', 'contentbuilder/themes/colored-yellow2.css'], ['#f3522b', 'colored', 'contentbuilder/themes/colored-red3.css'], ['#36b741', 'colored', 'contentbuilder/themes/colored-green2.css'], ['#00c17c', 'colored', 'contentbuilder/themes/colored-green3.css'], ['#fb3279', 'colored', 'contentbuilder/themes/colored-pink2.css'], ['#ff6d13', 'colored', 'contentbuilder/themes/colored-orange2.css'], ['#f13535', 'colored', 'contentbuilder/themes/colored-red2.css'], ['#646464', 'colored', 'contentbuilder/themes/colored-gray.css'], ['#3f4ec9', 'dark', 'contentbuilder/themes/dark-blue.css'], ['#0b4d92', 'dark', 'contentbuilder/themes/dark-blue2.css'], ['#006add', 'dark', 'contentbuilder/themes/dark-blue3.css'], ['#5f3ebf', 'dark', 'contentbuilder/themes/dark-purple.css'], ['#e92f69', 'dark', 'contentbuilder/themes/dark-pink.css'], ['#4c4c4c', 'dark', 'contentbuilder/themes/dark-gray.css'], ['#ed2828', 'dark', 'contentbuilder/themes/dark-red.css'], ['#006add', 'colored', 'contentbuilder/themes/colored-blue8.css'], ['#ff7723', 'colored', 'contentbuilder/themes/colored-orange3.css'], ['#ff5722', 'colored', 'contentbuilder/themes/colored-red5.css'], ['#f13535', 'colored', 'contentbuilder/themes/colored-red4.css'], ['#00bd79', 'colored', 'contentbuilder/themes/colored-green5.css'], ['#557ae9', 'colored', 'contentbuilder/themes/colored-blue7.css'], ['#fb3279', 'colored', 'contentbuilder/themes/colored-pink4.css']],
89415
89822
  backgroundColor: '#f1f1f1',
89416
89823
  imageselect: '',
@@ -91924,6 +92331,7 @@ class ContentBox {
91924
92331
  // }, 100);
91925
92332
  // },
91926
92333
  useLightbox: this.settings.useLightbox,
92334
+ lightboxArrow: this.settings.lightboxArrow,
91927
92335
  themes: this.settings.themes,
91928
92336
  moduleConfig: this.settings.moduleConfig,
91929
92337
  onImageSelectClick: this.settings.onImageSelectClick,