@innovastudio/contentbuilder 1.3.80 → 1.3.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/package.json +1 -1
  2. package/public/contentbuilder/contentbuilder.css +13 -1
  3. package/public/contentbuilder/contentbuilder.esm.js +233 -22
  4. package/public/contentbuilder/contentbuilder.min.js +2 -2
  5. package/public/contentbuilder/lang/en.js +9 -1
  6. package/public/contentbuilder/lang/fr.js +13 -1
  7. package/public/contentbuilder/themes/colored-blue.css +4 -0
  8. package/public/contentbuilder/themes/colored-blue2.css +4 -0
  9. package/public/contentbuilder/themes/colored-blue3.css +4 -0
  10. package/public/contentbuilder/themes/colored-blue4.css +4 -0
  11. package/public/contentbuilder/themes/colored-blue5.css +4 -0
  12. package/public/contentbuilder/themes/colored-blue6.css +4 -0
  13. package/public/contentbuilder/themes/colored-blue7.css +4 -0
  14. package/public/contentbuilder/themes/colored-blue8.css +4 -0
  15. package/public/contentbuilder/themes/colored-darkblue.css +4 -0
  16. package/public/contentbuilder/themes/colored-gray.css +4 -0
  17. package/public/contentbuilder/themes/colored-green.css +4 -0
  18. package/public/contentbuilder/themes/colored-green2.css +4 -0
  19. package/public/contentbuilder/themes/colored-green3.css +4 -0
  20. package/public/contentbuilder/themes/colored-green4.css +4 -0
  21. package/public/contentbuilder/themes/colored-green5.css +4 -0
  22. package/public/contentbuilder/themes/colored-magenta.css +4 -0
  23. package/public/contentbuilder/themes/colored-orange.css +4 -0
  24. package/public/contentbuilder/themes/colored-orange2.css +4 -0
  25. package/public/contentbuilder/themes/colored-orange3.css +4 -0
  26. package/public/contentbuilder/themes/colored-pink.css +4 -0
  27. package/public/contentbuilder/themes/colored-pink2.css +4 -0
  28. package/public/contentbuilder/themes/colored-pink3.css +4 -0
  29. package/public/contentbuilder/themes/colored-pink4.css +4 -0
  30. package/public/contentbuilder/themes/colored-purple.css +4 -0
  31. package/public/contentbuilder/themes/colored-purple2.css +4 -0
  32. package/public/contentbuilder/themes/colored-red.css +4 -0
  33. package/public/contentbuilder/themes/colored-red2.css +4 -0
  34. package/public/contentbuilder/themes/colored-red3.css +4 -0
  35. package/public/contentbuilder/themes/colored-red4.css +4 -0
  36. package/public/contentbuilder/themes/colored-red5.css +4 -0
  37. package/public/contentbuilder/themes/colored-yellow.css +4 -0
  38. package/public/contentbuilder/themes/colored-yellow2.css +4 -0
  39. package/public/contentbuilder/themes/dark-blue.css +9 -5
  40. package/public/contentbuilder/themes/dark-blue2.css +9 -5
  41. package/public/contentbuilder/themes/dark-blue3.css +9 -5
  42. package/public/contentbuilder/themes/dark-gray.css +9 -5
  43. package/public/contentbuilder/themes/dark-pink.css +9 -5
  44. package/public/contentbuilder/themes/dark-purple.css +9 -5
  45. package/public/contentbuilder/themes/dark-red.css +9 -5
  46. package/public/contentbuilder/themes/dark.css +9 -5
  47. package/public/contentbuilder/themes/light-blue.css +4 -0
  48. package/public/contentbuilder/themes/light-blue2.css +4 -0
  49. package/public/contentbuilder/themes/light-blue3.css +4 -0
  50. package/public/contentbuilder/themes/light-cyan.css +4 -0
  51. package/public/contentbuilder/themes/light-gray.css +4 -0
  52. package/public/contentbuilder/themes/light-gray2.css +4 -0
  53. package/public/contentbuilder/themes/light-gray3.css +4 -0
  54. package/public/contentbuilder/themes/light-green.css +4 -0
  55. package/public/contentbuilder/themes/light-pink.css +4 -0
  56. package/public/contentbuilder/themes/light-pink2.css +4 -0
  57. package/public/contentbuilder/themes/light-purple.css +4 -0
  58. package/public/contentbuilder/themes/light-purple2.css +4 -0
  59. package/public/contentbuilder/themes/light-red.css +4 -0
  60. package/public/contentbuilder/themes/light-yellow.css +4 -0
  61. package/public/contentbuilder/themes/light-yellow2.css +4 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@innovastudio/contentbuilder",
3
3
  "type": "module",
4
- "version": "1.3.80",
4
+ "version": "1.3.81",
5
5
  "description": "",
6
6
  "main": "public/contentbuilder/contentbuilder.esm.js",
7
7
  "files": [
@@ -107,7 +107,7 @@ button:focus-visible {
107
107
  }
108
108
  }
109
109
 
110
- @media (min-width: 970px) {
110
+ @media (min-width: 971px) {
111
111
  .is-builder > div {
112
112
  display: flex;
113
113
  }
@@ -1884,6 +1884,13 @@ button:focus-visible {
1884
1884
  background: rgba(255, 255, 255, 0.2);
1885
1885
  border: rgba(0, 0, 0, 0.09) 1px solid !important;
1886
1886
  }
1887
+ #_cbhtml .is-modal .is-separator,
1888
+ .is-ui .is-modal .is-separator {
1889
+ width: 100%;
1890
+ border-top: #f0f0f0 1px solid;
1891
+ margin-bottom: 10px;
1892
+ margin-top: 10px;
1893
+ }
1887
1894
  #_cbhtml .is-modal .form-upload-larger.please-wait svg,
1888
1895
  .is-ui .is-modal .form-upload-larger.please-wait svg {
1889
1896
  transform: scale(1, 1);
@@ -1979,6 +1986,11 @@ button:focus-visible {
1979
1986
  padding: 0;
1980
1987
  border: none;
1981
1988
  }
1989
+ #_cbhtml .is-modal div.is-draggable > span,
1990
+ .is-ui .is-modal div.is-draggable > span {
1991
+ pointer-events: none;
1992
+ user-select: none;
1993
+ }
1982
1994
  #_cbhtml .is-modal div.is-modal-bar,
1983
1995
  .is-ui .is-modal div.is-modal-bar {
1984
1996
  position: absolute;
@@ -4508,6 +4508,7 @@ class Util {
4508
4508
  Array.prototype.forEach.call(subblocks, subblock => {
4509
4509
  if (col.getAttribute('data-html-' + i)) {
4510
4510
  subblock.innerHTML = decodeURIComponent(col.getAttribute('data-html-' + i));
4511
+ subblock.contentEditable = true;
4511
4512
  }
4512
4513
 
4513
4514
  i++;
@@ -14996,6 +14997,7 @@ class HtmlUtil {
14996
14997
  let index = 1;
14997
14998
  let subblocks = block.querySelectorAll('[data-subblock]');
14998
14999
  Array.prototype.forEach.call(subblocks, subblock => {
15000
+ if (subblock.closest('.glide__slide--clone')) return;
14999
15001
  let html = subblock.innerHTML;
15000
15002
  block.setAttribute('data-html-' + index, encodeURIComponent(html));
15001
15003
  index++;
@@ -15823,6 +15825,47 @@ const prepareSvgIcons = builder => {
15823
15825
  <symbol viewBox="0 0 512 512" id="ion-volume-medium">
15824
15826
  <path d="M270 407.7V104.4L175.3 192H71v128h104.3zm56.3-52.1c20.5-27.8 32.8-62.3 32.8-99.6 0-37.4-12.3-71.8-32.8-99.6l-20.4 15.3c17.4 23.6 27.8 52.7 27.8 84.3 0 31.6-10.4 60.7-27.8 84.3l20.4 15.3zm66.5 46c30-40.7 48-91 48-145.6s-18-104.9-48-145.6l-20.4 15.3c26.9 36.4 43 81.4 43 130.3 0 48.9-16.1 93.8-43 130.3l20.4 15.3z"/>
15825
15827
  </symbol>
15828
+
15829
+
15830
+
15831
+ <symbol id="icon-devices" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15832
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15833
+ <rect x="13" y="8" width="8" height="12" rx="1"></rect>
15834
+ <path d="M18 8v-3a1 1 0 0 0 -1 -1h-13a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h9"></path>
15835
+ <line x1="16" y1="9" x2="18" y2="9"></line>
15836
+ </symbol>
15837
+ <symbol id="icon-device-desktop" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15838
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15839
+ <rect x="3" y="4" width="18" height="12" rx="1"></rect>
15840
+ <line x1="7" y1="20" x2="17" y2="20"></line>
15841
+ <line x1="9" y1="16" x2="9" y2="20"></line>
15842
+ <line x1="15" y1="16" x2="15" y2="20"></line>
15843
+ </symbol>
15844
+ <symbol id="icon-device-mobile" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15845
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15846
+ <rect x="6" y="3" width="12" height="18" rx="2"></rect>
15847
+ <line x1="11" y1="4" x2="13" y2="4"></line>
15848
+ <line x1="12" y1="17" x2="12" y2="17.01"></line>
15849
+ </symbol>
15850
+ <symbol id="icon-device-laptop" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15851
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15852
+ <line x1="3" y1="19" x2="21" y2="19"></line>
15853
+ <rect x="5" y="6" width="14" height="10" rx="1"></rect>
15854
+ </symbol>
15855
+ <symbol id="icon-device-tablet" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15856
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15857
+ <rect x="5" y="3" width="14" height="18" rx="1"></rect>
15858
+ <circle cx="12" cy="17" r="1"></circle>
15859
+ </symbol>
15860
+
15861
+ <symbol id="icon-eye" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15862
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15863
+ <path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0m13 0c-2.667 4.667 -6 7 -10 7s-7.333 -2.333 -10 -7c2.667 -4.667 6 -7 10 -7s7.333 2.333 10 7"></path>
15864
+ </symbol>
15865
+ <symbol id="icon-eye-off" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
15866
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
15867
+ <path d="M9.88 9.878a3 3 0 1 0 4.243 4.242m.581 -3.42a3.012 3.012 0 0 0 -1.45 -1.426m-3.877 -3.913a9.469 9.469 0 0 1 2.623 -.361c4 0 7.333 2.333 10 7c-.778 1.362 -1.613 2.524 -2.504 3.489m-2.138 1.859c-1.629 1.101 -3.415 1.652 -5.358 1.652c-4 0 -7.333 -2.333 -10 -7c1.374 -2.404 2.924 -4.189 4.652 -5.354m-3.652 -3.646l18 18"></path>
15868
+ </symbol>
15826
15869
  </defs>
15827
15870
  </svg>`;
15828
15871
  builder.dom.appendHtml(builder.builderStuff, html);
@@ -53282,7 +53325,7 @@ class Module {
53282
53325
  var moduleDesc = module.getAttribute('data-module-desc');
53283
53326
 
53284
53327
  if (moduleDesc) {
53285
- moduleModal.querySelector('.is-modal-bar').innerHTML = moduleDesc + `<button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">
53328
+ moduleModal.querySelector('.is-modal-bar').innerHTML = this.util.out(moduleDesc) + `<button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">
53286
53329
  <svg class="is-icon-flex" style="width:30px;height:30px;"><use xlink:href="#ion-ios-close-empty"></use></svg>
53287
53330
  </button>`;
53288
53331
  } else {
@@ -53611,9 +53654,10 @@ class Code {
53611
53654
  viewhtml = this.builderStuff.querySelector('.viewhtml');
53612
53655
  }
53613
53656
 
53614
- let textarea = viewhtml.querySelector('textarea');
53615
- let beautify = JsBeautify.html;
53616
- html = beautify(html);
53657
+ let textarea = viewhtml.querySelector('textarea'); // Commented, to prevent {id} get formatted.
53658
+ // let beautify = JsBeautify.html;
53659
+ // html = beautify(html);
53660
+
53617
53661
  textarea.value = html;
53618
53662
  this.htmlUtil.view('code');
53619
53663
  });
@@ -57450,13 +57494,39 @@ class ColumnTool {
57450
57494
  <button title="${util.out('Clear')}" class="input-cell-textcolor" data-command=""><svg class="is-icon-flex" style="flex:none;width:18px;height:18px;margin-top: 2px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
57451
57495
  </div>
57452
57496
 
57453
- <div style="padding-top:30px;">
57497
+ <div style="padding:30px 0 10px;">
57454
57498
  <label class="label-cell-grayscale label-checkbox" for="chkCellGrayscale"><input id="chkCellGrayscale" class="chk-cell-grayscale" type="checkbox" /> ${util.out('Grayscale')}</label>
57455
57499
  </div>
57456
57500
 
57457
- <div style="padding:20px 0 10px;">
57501
+ <div style="display:none;padding:20px 0 10px;">
57458
57502
  <label class="label-cell-hideonmobile label-checkbox" for="chkHideColumnOnMobile"><input id="chkHideColumnOnMobile" class="chk-cell-hideonmobile" type="checkbox" /> ${util.out('Hide Column on Mobile')}</label>
57459
57503
  </div>
57504
+
57505
+ <div class="is-separator"></div>
57506
+
57507
+ <div class="div-target" style="display: flex;justify-content: flex-end;padding: 5px 0 0;">
57508
+ <button title="${util.out('Desktop')}" class="input-device on" data-value="" style="width:40px;height:25px;">
57509
+ <svg class="is-icon-flex" style="width:16px;height:16px"><use xlink:href="#icon-device-desktop"></use></svg>
57510
+ </button>
57511
+ <button title="${util.out('Tablet')}" class="input-device" data-value="sm" style="width:40px;height:25px;">
57512
+ <svg class="is-icon-flex" style="width:16px;height:16px"><use xlink:href="#icon-device-tablet"></use></svg>
57513
+ </button>
57514
+ <button title="${util.out('Mobile')}" class="input-device" data-value="xs" style="width:40px;height:25px;">
57515
+ <svg class="is-icon-flex" style="width:13px;height:13px"><use xlink:href="#icon-device-mobile"></use></svg>
57516
+ </button>
57517
+ </div>
57518
+
57519
+ <div style="padding-top:0;padding-bottom:3px;">${util.out('Visibility')}:</div>
57520
+ <div class="div-visibility" style="display:flex;">
57521
+ <button title="${util.out('Visible')}" class="input-visible on" data-value="sm" style="width:100px;height:34px;">
57522
+ <svg class="is-icon-flex" style="width:16px;height:16px"><use xlink:href="#icon-eye"></use></svg>
57523
+ <span>${util.out('Visible')}</span>
57524
+ </button>
57525
+ <button title="${util.out('Hidden')}" class="input-hidden" data-value="xs" style="width:100px;height:34px;">
57526
+ <svg class="is-icon-flex" style="width:16px;height:16px"><use xlink:href="#icon-eye-off"></use></svg>
57527
+ <span>${util.out('Hidden')}</span>
57528
+ </button>
57529
+ </div>
57460
57530
 
57461
57531
  <!--
57462
57532
  <div style="display:none;padding-top:20px;padding-bottom:3px;">${util.out('Enlarge Row')}:</div>
@@ -59066,6 +59136,58 @@ class ColumnTool {
59066
59136
  if (!cell) return;
59067
59137
  if (inpClickSrc.value === '') return;
59068
59138
  this.builder.openMedia(cell);
59139
+ }); // Responsive Visibility
59140
+
59141
+ let btns = this.cellSettings.querySelectorAll('.input-device');
59142
+ btns.forEach(btn => {
59143
+ btn.addEventListener('click', () => {
59144
+ let cell = this.util.cellSelected();
59145
+ if (!cell) return;
59146
+ let elms = this.cellSettings.querySelectorAll('.input-device');
59147
+ elms.forEach(elm => {
59148
+ elm.classList.remove('on');
59149
+ });
59150
+ btn.classList.add('on');
59151
+ this.realtimeVisibility(cell);
59152
+ });
59153
+ });
59154
+ let btnVisible = this.cellSettings.querySelector('.input-visible');
59155
+ let btnHidden = this.cellSettings.querySelector('.input-hidden');
59156
+ btnVisible.addEventListener('click', () => {
59157
+ let cell = this.util.cellSelected();
59158
+ if (!cell) return;
59159
+ cell.classList.remove('hideonmobile');
59160
+ let divTarget = this.cellSettings.querySelector('.div-target');
59161
+ let target = this.builder.responsive.readTarget(divTarget);
59162
+
59163
+ if (target === 'xs') {
59164
+ cell.classList.remove('xs-hidden');
59165
+ } else if (target === 'sm') {
59166
+ cell.classList.remove('sm-hidden');
59167
+ } else if (target === '') {
59168
+ cell.classList.remove('desktop-hidden');
59169
+ }
59170
+
59171
+ btnVisible.classList.add('on');
59172
+ btnHidden.classList.remove('on');
59173
+ });
59174
+ btnHidden.addEventListener('click', () => {
59175
+ let cell = this.util.cellSelected();
59176
+ if (!cell) return;
59177
+ cell.classList.remove('hideonmobile');
59178
+ let divTarget = this.cellSettings.querySelector('.div-target');
59179
+ let target = this.builder.responsive.readTarget(divTarget);
59180
+
59181
+ if (target === 'xs') {
59182
+ cell.classList.add('xs-hidden');
59183
+ } else if (target === 'sm') {
59184
+ cell.classList.add('sm-hidden');
59185
+ } else if (target === '') {
59186
+ cell.classList.add('desktop-hidden');
59187
+ }
59188
+
59189
+ btnVisible.classList.remove('on');
59190
+ btnHidden.classList.add('on');
59069
59191
  });
59070
59192
  }
59071
59193
 
@@ -59256,6 +59378,16 @@ class ColumnTool {
59256
59378
  let btn = this.cellSettings.querySelector('.cmd-content-pos[data-pos="bottomright"');
59257
59379
  dom.addClass(btn, 'on');
59258
59380
  }
59381
+
59382
+ this.realtimeVisibility(cell);
59383
+ }
59384
+
59385
+ realtimeVisibility(cell) {
59386
+ let divTarget = this.cellSettings.querySelector('.div-target');
59387
+ let divVisibility = this.cellSettings.querySelector('.div-visibility');
59388
+ let target = this.builder.responsive.readTarget(divTarget);
59389
+ let valVisibility = this.builder.responsive.getVisibility(cell, target);
59390
+ this.builder.responsive.showVisibility(divVisibility, valVisibility);
59259
59391
  }
59260
59392
 
59261
59393
  openImagePicker(currentUrl, callback, btn) {
@@ -60671,17 +60803,19 @@ class ElementSpacingStyles {
60671
60803
  </select>
60672
60804
  </div>
60673
60805
  </div>
60674
-
60675
- <div style="margin-top: 25px;font-weight: bold;width:100%">${util.out('Responsive Positioning')}:</div>
60676
-
60677
- <div class="is-settings" style="width:100%;">
60678
- <div>
60679
- <label for="chkResetMarginLeft" style="letter-spacing: 0.5px;"><input type="checkbox" id="chkResetMarginLeft" value="" /> ${util.out('Reset margin left on small screen')} </label>
60806
+
60807
+ <div style="display:none">
60808
+ <div style="margin-top: 25px;font-weight: bold;width:100%">${util.out('Responsive Positioning')}:</div>
60809
+
60810
+ <div class="is-settings" style="width:100%;">
60811
+ <div>
60812
+ <label for="chkResetMarginLeft" style="letter-spacing: 0.5px;"><input type="checkbox" id="chkResetMarginLeft" value="" /> ${util.out('Reset margin left on small screen')} </label>
60813
+ </div>
60680
60814
  </div>
60681
- </div>
60682
- <div class="is-settings" style="margin-top:0;width:100%;">
60683
- <div>
60684
- <label for="chkResetMarginRight" style="letter-spacing: 0.5px;"><input type="checkbox" id="chkResetMarginRight" value="" /> ${util.out('Reset margin right on small screen')} </label>
60815
+ <div class="is-settings" style="margin-top:0;width:100%;">
60816
+ <div>
60817
+ <label for="chkResetMarginRight" style="letter-spacing: 0.5px;"><input type="checkbox" id="chkResetMarginRight" value="" /> ${util.out('Reset margin right on small screen')} </label>
60818
+ </div>
60685
60819
  </div>
60686
60820
  </div>
60687
60821
  `;
@@ -64781,6 +64915,11 @@ class ElementTool {
64781
64915
  if (ok) {
64782
64916
  this.builder.uo.saveForUndo();
64783
64917
  let elm = this.builder.activeElement;
64918
+ let subblock = false;
64919
+
64920
+ if (elm.closest('.is-subblock')) {
64921
+ subblock = true;
64922
+ }
64784
64923
  /*
64785
64924
  if(dom.hasClass(elm.parentNode, 'cell-active') || elm.parentNode.hasAttribute('data-subblock')) {
64786
64925
  // Level 1
@@ -64806,6 +64945,7 @@ class ElementTool {
64806
64945
  }
64807
64946
  */
64808
64947
 
64948
+
64809
64949
  elm.parentNode.removeChild(elm);
64810
64950
  this.elementTool.style.display = 'none';
64811
64951
  let cell = this.builder.activeCol;
@@ -64836,7 +64976,21 @@ class ElementTool {
64836
64976
  subblock.innerHTML = '<div class="spacer height-40" contentEditable="false"></div>';
64837
64977
  }
64838
64978
  });
64839
- util.clearControls(); //Trigger Change event
64979
+ util.clearControls();
64980
+
64981
+ if (subblock) {
64982
+ let block = this.builder.activeCol;
64983
+ let subblocks = block.querySelectorAll('[data-subblock]');
64984
+ var index = 1;
64985
+ Array.prototype.forEach.call(subblocks, subblock => {
64986
+ if (subblock.closest('.glide__slide--clone')) return;
64987
+ let html = subblock.innerHTML;
64988
+ block.setAttribute('data-html-' + index, encodeURIComponent(html));
64989
+ index++;
64990
+ });
64991
+ util.refreshModuleLayout(block);
64992
+ } //Trigger Change event
64993
+
64840
64994
 
64841
64995
  this.builder.opts.onChange();
64842
64996
  }
@@ -69676,7 +69830,8 @@ class Rte {
69676
69830
  // Column contains custom code.
69677
69831
  customcode = true;
69678
69832
 
69679
- if (dom.parentsHasAttribute(elm, 'data-subblock')) {
69833
+ if (elm.closest('.is-subblock')) {
69834
+ // dom.parentsHasAttribute(elm, 'data-subblock')
69680
69835
  subblock = true;
69681
69836
  }
69682
69837
  }
@@ -69702,7 +69857,7 @@ class Rte {
69702
69857
  this.showAlignButtons();
69703
69858
  this.positionToolbar();
69704
69859
  }
69705
- } else if (dom.hasClass(elm, 'spacer') || elm.tagName.toLowerCase() === 'video' || dom.hasClass(elm, 'ovl') || col.getAttribute('data-html')) {
69860
+ } else if (dom.hasClass(elm, 'spacer') || elm.tagName.toLowerCase() === 'video' || dom.hasClass(elm, 'ovl') || col.getAttribute('data-html') && !subblock) {
69706
69861
  //|| col===elm
69707
69862
  if (this.elementRteTool.style.display === 'none' || this.elementRteTool.style.display === '') {
69708
69863
  this.elementRteTool.style.display = 'flex';
@@ -73139,6 +73294,7 @@ class Resizeable {
73139
73294
 
73140
73295
  const onDown = e => {
73141
73296
  calc(e);
73297
+ if (e.target.closest('.glide__arrows')) return false;
73142
73298
  const isResizing = onRightEdge || onBottomEdge || onTopEdge || onLeftEdge;
73143
73299
  clicked = {
73144
73300
  x: x,
@@ -74828,6 +74984,54 @@ class MediaPicker {
74828
74984
 
74829
74985
  }
74830
74986
 
74987
+ class Responsive {
74988
+ constructor(builder) {
74989
+ this.builder = builder;
74990
+ const util = this.builder.util;
74991
+ const builderStuff = this.builder.builderStuff;
74992
+ this.util = util;
74993
+ this.builderStuff = builderStuff;
74994
+ const dom = this.builder.dom;
74995
+ this.dom = dom;
74996
+ }
74997
+
74998
+ getVisibility(elm, target) {
74999
+ if (target === 'xs') return !elm.classList.contains('xs-hidden');
75000
+ if (target === 'sm') return !elm.classList.contains('sm-hidden');
75001
+ if (target === '') return !elm.classList.contains('desktop-hidden');
75002
+ }
75003
+
75004
+ setVisibility(visibility, elm, target) {
75005
+ if (target === 'xs') {
75006
+ if (visibility) elm.classList.remove('xs-hidden');else elm.classList.add('xs-hidden');
75007
+ }
75008
+
75009
+ if (target === 'sm') {
75010
+ if (visibility) elm.classList.remove('sm-hidden');else elm.classList.add('sm-hidden');
75011
+ }
75012
+
75013
+ if (target === '') {
75014
+ if (visibility) elm.classList.remove('desktop-hidden');else elm.classList.add('desktop-hidden');
75015
+ }
75016
+ }
75017
+
75018
+ readTarget(area) {
75019
+ const inp = area.querySelector('.input-device.on');
75020
+ return inp.getAttribute('data-value');
75021
+ }
75022
+
75023
+ showVisibility(area, visibility) {
75024
+ if (visibility) {
75025
+ area.querySelector('.input-visible').classList.add('on');
75026
+ area.querySelector('.input-hidden').classList.remove('on');
75027
+ } else {
75028
+ area.querySelector('.input-visible').classList.remove('on');
75029
+ area.querySelector('.input-hidden').classList.add('on');
75030
+ }
75031
+ }
75032
+
75033
+ }
75034
+
74831
75035
  class ContentBuilder {
74832
75036
  constructor(opts = {}) {
74833
75037
  let defaults = {
@@ -75546,11 +75750,15 @@ class ContentBuilder {
75546
75750
 
75547
75751
  this.win = win;
75548
75752
  this.doc = doc;
75753
+ this.doc.body.classList.add('data-editor');
75549
75754
  const dom = new Dom(this);
75550
75755
  this.dom = dom;
75551
75756
  const util = new Util(this); // General utilities
75552
75757
 
75553
- this.util = util; // Content stuff
75758
+ this.util = util;
75759
+ const responsive = new Responsive(this); // General utilities
75760
+
75761
+ this.responsive = responsive; // Content stuff
75554
75762
 
75555
75763
  if (this.iframe) {
75556
75764
  let contentStuff = doc.querySelector('.content-stuff');
@@ -75712,7 +75920,8 @@ class ContentBuilder {
75712
75920
  k = false;
75713
75921
  let m = false,
75714
75922
  n = false,
75715
- o = false;
75923
+ o = false,
75924
+ p = false;
75716
75925
  let isSpecialElement = false;
75717
75926
  let element = target;
75718
75927
 
@@ -75720,6 +75929,7 @@ class ContentBuilder {
75720
75929
  if (!element.tagName) break;
75721
75930
  if (element.tagName === 'BODY' || element.tagName === 'HTML') break;
75722
75931
  if (this.dom.hasClass(element, 'is-builder')) a = true;
75932
+ if (this.dom.hasClass(element, 'is-subblock')) p = true;
75723
75933
  if (this.dom.hasClass(element, 'is-modal')) b = true;
75724
75934
  if (this.dom.hasClass(element, 'is-side') || this.dom.hasClass(element, 'is-sidebar')) c = true;
75725
75935
  if (this.dom.hasClass(element, 'is-pop')) d = true;
@@ -75786,7 +75996,7 @@ class ContentBuilder {
75786
75996
  }
75787
75997
  }
75788
75998
 
75789
- if (!(a || b || c || d || f || g || h || i || j || o || isSpecialElement) || rowClicked && !i || containerClicked) {
75999
+ if (!(a || p || b || c || d || f || g || h || i || j || o || isSpecialElement) || rowClicked && !i || containerClicked) {
75790
76000
  // Click anywhere but is not inside builder area, modal, popup, tool or rte, then clear row/column (cell) selection
75791
76001
  if (!this.dom.getSelected()) {
75792
76002
  // if(!document.querySelector('.is-modal.active')) { // Additional (to prevent lost focus)
@@ -76508,6 +76718,7 @@ class ContentBuilder {
76508
76718
  }
76509
76719
 
76510
76720
  destroy() {
76721
+ this.doc.body.classList.remove('data-editor');
76511
76722
  document.removeEventListener('click', this.doDocumentClick, false);
76512
76723
  document.removeEventListener('keydown', this.doDocumentKeydown, false);
76513
76724
  document.removeEventListener('mousedown', this.doDocumentMousedown, false);