@innovastudio/contentbuilder 1.3.79 → 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 +14 -2
  3. package/public/contentbuilder/contentbuilder.esm.js +250 -39
  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.79",
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;
@@ -2921,7 +2933,7 @@ button:focus-visible {
2921
2933
  #_cbhtml .is-modal.viewconfig button.input-setcolor,
2922
2934
  .is-ui .is-modal.viewconfig button.input-setcolor {
2923
2935
  width: 27px;
2924
- height: 25px;
2936
+ height: 21px;
2925
2937
  border: transparent 2px solid;
2926
2938
  border-radius: 0px;
2927
2939
  }
@@ -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
  }
@@ -65305,7 +65459,7 @@ class Preferences {
65305
65459
 
65306
65460
  <div style="display:flex;flex-wrap:wrap;width:100%;padding-top:32px;">
65307
65461
  <div style="width:50%">
65308
- <label id="divBuilderMode" style="display:block;margin-top:14px;margin-bottom:5px;">
65462
+ <label id="divBuilderMode" style="display:block;margin-top:10px;margin-bottom:5px;">
65309
65463
  ${util.out('Builder Mode')}:&nbsp;
65310
65464
  <select class="select-buildermode">
65311
65465
  <option value="">${util.out('Default')}</option>
@@ -65314,7 +65468,7 @@ class Preferences {
65314
65468
  </select>
65315
65469
  </label>
65316
65470
 
65317
- <label id="divOutlineMode" style="display:block;margin-top:14px;margin-bottom:5px;">
65471
+ <label id="divOutlineMode" style="display:block;margin-top:10px;margin-bottom:5px;">
65318
65472
  ${util.out('Outline Mode')}:&nbsp;
65319
65473
  <select class="select-outlinemode">
65320
65474
  <option value="">${util.out('Row & column')}</option>
@@ -65322,7 +65476,7 @@ class Preferences {
65322
65476
  </select>
65323
65477
  </label>
65324
65478
 
65325
- <label style="display:block;margin-top:14px;margin-bottom:5px;">
65479
+ <label style="display:block;margin-top:10px;margin-bottom:5px;">
65326
65480
  ${util.out('Outline Style')}:&nbsp;
65327
65481
  <select class="select-outlinestyle">
65328
65482
  <option value="">${util.out('Colored')}</option>
@@ -65330,27 +65484,27 @@ class Preferences {
65330
65484
  </select>
65331
65485
  </label>
65332
65486
 
65333
- <label style="display:block;margin-top:14px;margin-bottom:10px;">
65487
+ <label style="display:block;margin-top:10px;margin-bottom:10px;">
65334
65488
  <input class="input-hiderowcoloutline" type="checkbox" /> ${util.out('Hide Outline')}&nbsp;
65335
65489
  </label>
65336
65490
 
65337
- <label id="divHideCellTool" style="display:block;margin-top:14px;margin-bottom:10px;">
65491
+ <label id="divHideCellTool" style="display:block;margin-top:10px;margin-bottom:10px;">
65338
65492
  <input class="input-hidecelltool" type="checkbox" /> ${util.out('Hide Column Tool')}&nbsp;
65339
65493
  </label>
65340
65494
 
65341
65495
 
65342
- <label style="display:block;margin-top:14px;margin-bottom:10px;">
65496
+ <label style="display:block;margin-top:10px;margin-bottom:10px;">
65343
65497
  <input class="input-hidesnippetaddtool" type="checkbox" /> ${util.out('Hide Snippet (+) Tool')}&nbsp;
65344
65498
  </label>
65345
65499
 
65346
- <label style="display:block;margin-top:14px;margin-bottom:10px;">
65500
+ <label style="display:block;margin-top:10px;margin-bottom:10px;">
65347
65501
  <input class="input-hideelementtool" type="checkbox" /> ${util.out('Hide element tool')}&nbsp;
65348
65502
  </label>
65349
65503
 
65350
- <label style="display:block;margin-top:14px;margin-bottom:10px;">
65504
+ <label style="display:block;margin-top:10px;margin-bottom:10px;">
65351
65505
  <input class="input-hideelementhighlight" type="checkbox" /> ${util.out('Hide element highlight')}&nbsp;
65352
65506
  </label>
65353
- <label style="display:block;margin-top:5px;margin-bottom:5px;">
65507
+ <label style="display:block;margin-top:10px;margin-bottom:5px;">
65354
65508
  ${util.out('Row Tool Position')}:&nbsp;
65355
65509
  <select class="select-rowtool">
65356
65510
  <option value="right">${util.out('Right')}</option>
@@ -65358,7 +65512,7 @@ class Preferences {
65358
65512
  </select>
65359
65513
  </label>
65360
65514
 
65361
- <label style="display:block;margin-top:5px;margin-bottom:5px;">
65515
+ <label style="display:block;margin-top:10px;margin-bottom:5px;">
65362
65516
  ${util.out('Tool Style')}:&nbsp;
65363
65517
  <select class="select-toolstyle">
65364
65518
  <option value="">${util.out('Colored')}</option>
@@ -65369,11 +65523,11 @@ class Preferences {
65369
65523
  </div>
65370
65524
  <div style="width:50%">
65371
65525
 
65372
- <label class="option-opensnippets" style="display:block;margin-top:14px;margin-bottom:10px;">
65526
+ <label class="option-opensnippets" style="display:block;margin-top:10px;margin-bottom:10px;">
65373
65527
  <input class="input-opensnippets" type="checkbox" /> ${util.out('Open snippets sidebar on start')}&nbsp;
65374
65528
  </label>
65375
65529
 
65376
- <label style="display:${builder.opts.snippetList === '#divSnippetList' ? 'block' : 'none'};margin-top:14px;margin-bottom:5px;">
65530
+ <label style="display:${builder.opts.snippetList === '#divSnippetList' ? 'block' : 'none'};margin-top:10px;margin-bottom:5px;">
65377
65531
  ${util.out('Snippets sidebar visibility')}:&nbsp;
65378
65532
  <select class="select-snippetssidebardisplay">
65379
65533
  <option value="auto">${util.out('Auto')}</option>
@@ -65381,7 +65535,7 @@ class Preferences {
65381
65535
  </select>
65382
65536
  </label>
65383
65537
 
65384
- <label style="margin-top:14px;margin-bottom:5px;">
65538
+ <label style="display:block;margin-top:10px;margin-bottom:5px;">
65385
65539
  ${util.out('Toolbar visibility')}:&nbsp;
65386
65540
  <select class="select-editingtoolbardisplay">
65387
65541
  <option value="auto">${util.out('Auto')}</option>
@@ -65389,7 +65543,7 @@ class Preferences {
65389
65543
  </select>
65390
65544
  </label>
65391
65545
 
65392
- <label style="${this.builder.isTouchSupport ? 'display:none;' : 'display:block;'}margin-top:5px;margin-bottom:5px;">
65546
+ <label style="${this.builder.isTouchSupport ? 'display:none;' : 'display:block;'}margin-top:10px;margin-bottom:5px;">
65393
65547
  ${util.out('Toolbar position')}:&nbsp;
65394
65548
  <select class="select-editingtoolbar">
65395
65549
  <option value="topfull">${util.out('Top (Full Width)')}</option>
@@ -65399,7 +65553,7 @@ class Preferences {
65399
65553
  </select>
65400
65554
  </label>
65401
65555
 
65402
- <label style="display:block;margin-top:5px;margin-bottom:5px;">
65556
+ <label style="display:block;margin-top:10px;margin-bottom:5px;">
65403
65557
  ${util.out('Paste result')}:&nbsp;
65404
65558
  <select class="select-pasteresult">
65405
65559
  <option value="html-without-styles">${util.out('HTML (without styles)')}</option>
@@ -65408,7 +65562,7 @@ class Preferences {
65408
65562
  </select>
65409
65563
  </label>
65410
65564
 
65411
- <label style="display:block;margin-top:5px;margin-bottom:5px;">
65565
+ <label style="display:block;margin-top:10px;margin-bottom:5px;">
65412
65566
  ${util.out('HTML View')}:&nbsp;
65413
65567
  <select class="select-htmlview">
65414
65568
  <option value="shorten">${util.out('Shorten HTML')}</option>
@@ -65417,7 +65571,7 @@ class Preferences {
65417
65571
  </label>
65418
65572
 
65419
65573
  ${this.builder.themes ? `
65420
- <label style="${this.builder.isTouchSupport ? 'display:none;' : 'display:block;'}margin-top:5px;margin-bottom:5px;">
65574
+ <label style="${this.builder.isTouchSupport ? 'display:none;' : 'display:block;'}margin-top:10px;margin-bottom:5px;">
65421
65575
  ${util.out('Theme')}:&nbsp;
65422
65576
  </label>
65423
65577
  ${htmlThemes}
@@ -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);