@innovastudio/contentbox 1.6.92 → 1.6.94

Sign up to get free protection for your applications and to get access to all the features.
@@ -666,14 +666,15 @@ function out(s, alt) {
666
666
 
667
667
  class CustomSelect$1 {
668
668
  constructor(selector, config = {}) {
669
- this.select = document.querySelector(selector); // Construct
669
+ this.select = document.querySelector(selector);
670
+ this.uniqueId = `custom_select_${Date.now()}_${Math.floor(Math.random() * 1000)}`; // Construct
670
671
 
671
672
  const template = `
672
673
  <div class="select-styled" tabindex="0">
673
674
  <span></span>
674
675
  <span><svg><use xlink:href="#icon-chevron-down"></use></svg></span>
675
676
  </div>
676
- <input type="text">
677
+ <input type="text" id="_${this.uniqueId}">
677
678
  <ul class="select-options" aria-haspopup="listbox">
678
679
  </ul>
679
680
  `;
@@ -7155,26 +7156,6 @@ class EditBox {
7155
7156
  modalEditBox.style.display = 'flex';
7156
7157
  document.body.classList.add('box-modal-open'); // see .box-modal-open (gives outline to div.is-container when Box Settings is opened)
7157
7158
 
7158
- /*
7159
- // Experimental
7160
- modalEditBox.style.display = 'flex';
7161
- document.body.classList.add('side-open');
7162
- let panel = modalEditBox.querySelector('.is-modal-content');
7163
- setTimeout(()=>{
7164
- this.builder.showModal(modalEditBox, false, ()=>{
7165
- dom.removeClass(activeBox, 'box-active');
7166
-
7167
- this.builder.showTools();
7168
- document.body.classList.remove('side-open');
7169
- this.builder.wrapperEl.style.transition = 'none';
7170
- setTimeout(()=>{
7171
- modalEditBox.style.display = '';
7172
- this.builder.wrapperEl.style.transition = '';
7173
- }, 200);
7174
- });
7175
- }, 10);
7176
- */
7177
-
7178
7159
  modalEditBox.focus();
7179
7160
  } //edit
7180
7161
 
@@ -10720,7 +10701,7 @@ class PanelText {
10720
10701
  </div>
10721
10702
 
10722
10703
  <label class="label checkbox flexgrow mt-2">
10723
- <input type="checkbox" class="chk-flexgrow" />
10704
+ <input type="checkbox" class="chk-flexgrow" id="_chk_flexgrow" />
10724
10705
  <span>${out('Grow')}</span>
10725
10706
  </label>
10726
10707
  </div>
@@ -11543,13 +11524,18 @@ class PanelText {
11543
11524
  class PanelImage {
11544
11525
  constructor(panel, builder) {
11545
11526
  this.builder = builder;
11527
+
11528
+ this.random = () => {
11529
+ return `${Math.floor(Math.random() * 1000)}`;
11530
+ };
11531
+
11546
11532
  let html = `
11547
11533
  <div class="submain">
11548
11534
  <div class="asset-preview"></div>
11549
11535
 
11550
11536
  <label class="label mt-3">
11551
11537
  <div>${out('Source')}:</div>
11552
- <input type="text" class="inp-src">
11538
+ <input type="text" class="inp-src" id="_inp_src_${this.random()}">
11553
11539
  </label>
11554
11540
 
11555
11541
  <div class="group mt-4">
@@ -11571,7 +11557,7 @@ class PanelImage {
11571
11557
 
11572
11558
  <label class="label mt-2">
11573
11559
  <div>${out('Title')}:</div>
11574
- <input type="text" class="inp-title">
11560
+ <input type="text" class="inp-title" id="_inp_title_${this.random()}">
11575
11561
  </label>
11576
11562
  </div>
11577
11563
  `;
@@ -13174,7 +13160,10 @@ class PanelBox {
13174
13160
  <button title="${out('Change Device')}" class="btn-device"><svg style="width:13px;height:13px;"><use xlink:href="#icon-devices"></use></svg></button>
13175
13161
  </div>
13176
13162
 
13177
- <div class="group contentsize" style="flex-flow: wrap">
13163
+ <div>
13164
+ <input type="range" min="300" max="2700" value="300" step="20" class="inp-content-width is-rangeslider" style="max-width:220px">
13165
+ </div>
13166
+ <div class="group contentsize" style="flex-flow: wrap; display: none">
13178
13167
  <button data-content-size="500">500</button>
13179
13168
  <button data-content-size="600">600</button>
13180
13169
  <button data-content-size="700">700</button>
@@ -13654,7 +13643,8 @@ class PanelBox {
13654
13643
  this.btnAccordionText.style.display = 'none';
13655
13644
  this.btnAccordionText.nextElementSibling.style.display = 'none';
13656
13645
  this.divDefaultTextColor.style.display = 'none';
13657
- });
13646
+ }); // Content Size (old buttons)
13647
+
13658
13648
  const btnContentSize = panel.querySelectorAll('[data-content-size]');
13659
13649
  btnContentSize.forEach(btn => {
13660
13650
  btn.addEventListener('click', () => {
@@ -13671,7 +13661,26 @@ class PanelBox {
13671
13661
  }
13672
13662
  });
13673
13663
  });
13674
- });
13664
+ }); // Content Size (new slider)
13665
+
13666
+ const inpContentSize = panel.querySelector('.inp-content-width');
13667
+
13668
+ inpContentSize.onfocus = () => {
13669
+ this.builder.editor.saveForUndo();
13670
+ };
13671
+
13672
+ inpContentSize.oninput = () => {
13673
+ //val: 300 - 2700
13674
+ let s = inpContentSize.value;
13675
+ this.box.setContentWidth(s, width => {
13676
+ panel.querySelector('.val-box-size').innerHTML = width;
13677
+ });
13678
+ };
13679
+
13680
+ inpContentSize.onchange = () => {
13681
+ this.builder.onChange();
13682
+ };
13683
+
13675
13684
  const btnContentPos = panel.querySelectorAll('[data-content-pos]');
13676
13685
  btnContentPos.forEach(btn => {
13677
13686
  btn.addEventListener('click', () => {
@@ -14546,6 +14555,9 @@ class PanelBox {
14546
14555
 
14547
14556
  if (val) {
14548
14557
  panel.querySelector('.val-box-size').innerHTML = val === 'none' ? '' : val;
14558
+ const inpContentSize = panel.querySelector('.inp-content-width');
14559
+ inpContentSize.value = val; // old buttons
14560
+
14549
14561
  const btn = panel.querySelector(`[data-content-size="${val}"]`);
14550
14562
  if (btn) btn.classList.add('on');
14551
14563
  }
@@ -16190,7 +16202,7 @@ class PanelSection {
16190
16202
 
16191
16203
  <div class="subpanel">
16192
16204
  <label class="label mt-2">
16193
- <div>${out('Add Section ID')}:</div>
16205
+ <div>${out('Add ID')}:</div>
16194
16206
  <input type="text" class="inp-section-id" onkeypress="return /[0-9a-zA-Z_]/i.test(event.key)">
16195
16207
  </label>
16196
16208
 
@@ -16869,7 +16881,7 @@ class PanelColumn {
16869
16881
 
16870
16882
  <div class="subpanel">
16871
16883
  <label class="label mt-2">
16872
- <div>${out('Add Section ID')}:</div>
16884
+ <div>${out('Add ID')}:</div>
16873
16885
  <input type="text" class="inp-column-id" onkeypress="return /[0-9a-zA-Z_]/i.test(event.key)">
16874
16886
  </label>
16875
16887
 
@@ -17870,7 +17882,7 @@ class PanelRow {
17870
17882
 
17871
17883
  <div class="subpanel">
17872
17884
  <label class="label mt-2">
17873
- <div>${out('Add Section ID')}:</div>
17885
+ <div>${out('Add ID')}:</div>
17874
17886
  <input type="text" class="inp-row-id" onkeypress="return /[0-9a-zA-Z_]/i.test(event.key)">
17875
17887
  </label>
17876
17888
 
@@ -32708,8 +32720,8 @@ class Util$1 {
32708
32720
  const newPos = this.getElementPosition(btnCellMore);
32709
32721
  let top = newPos.top;
32710
32722
  let left = newPos.left;
32711
- columnMore.style.top = top + 35 + 'px';
32712
- columnMore.style.left = left - 7 + 'px';
32723
+ columnMore.style.top = top + 35 + window.pageYOffset + 'px';
32724
+ columnMore.style.left = left - 7 + window.pageXOffset + 'px';
32713
32725
  setTimeout(() => {
32714
32726
  columnMore.classList.remove('transition1');
32715
32727
  }, 300);
@@ -41970,7 +41982,7 @@ const prepareSvgIcons = builder => {
41970
41982
  <path d="M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"></path>
41971
41983
  </symbol>
41972
41984
 
41973
- <symbol id="icon-reload" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
41985
+ <symbol id="icon-reload" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
41974
41986
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
41975
41987
  <path d="M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1.002 7.935 1.007 9.425 4.747"></path>
41976
41988
  <path d="M20 4v5h-5"></path>
@@ -42048,7 +42060,7 @@ const prepareSvgIcons = builder => {
42048
42060
  <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
42049
42061
  <path d="M20.2 20.2l1.8 1.8"></path>
42050
42062
  </symbol>
42051
- <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42063
+ <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42052
42064
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42053
42065
  <path d="M11 19h-6a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v2.5"></path>
42054
42066
  <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
@@ -42227,7 +42239,7 @@ const prepareSvgIcons = builder => {
42227
42239
  <path d="M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2" /><path d="M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4" /><path d="M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z" />
42228
42240
  </symbol>
42229
42241
 
42230
- <symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42242
+ <symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42231
42243
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42232
42244
  <line x1="12" y1="5" x2="12" y2="19"></line>
42233
42245
  <line x1="5" y1="12" x2="19" y2="12"></line>
@@ -42242,6 +42254,47 @@ const prepareSvgIcons = builder => {
42242
42254
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42243
42255
  <path d="M5 12l14 0"></path>
42244
42256
  </symbol>
42257
+
42258
+ <symbol id="icon-dots2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42259
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
42260
+ </symbol>
42261
+ <symbol id="icon-close" viewBox="0 0 24 24" stroke-width="1.6" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42262
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42263
+ <path d="M18 6l-12 12"></path>
42264
+ <path d="M6 6l12 12"></path>
42265
+ </symbol>
42266
+ <symbol id="icon-trash2" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42267
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42268
+ <path d="M4 7l16 0"></path>
42269
+ <path d="M10 11l0 6"></path>
42270
+ <path d="M14 11l0 6"></path>
42271
+ <path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>
42272
+ <path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>
42273
+ </symbol>
42274
+ <symbol id="icon-duplicate3" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42275
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z" /><path d="M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1" />
42276
+ </symbol>
42277
+ <symbol id="icon-pencil2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42278
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42279
+ <path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4"></path>
42280
+ <line x1="13.5" y1="6.5" x2="17.5" y2="10.5"></line>
42281
+ </symbol>
42282
+ <symbol id="icon-link2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42283
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42284
+ <path d="M9 15l6 -6"></path>
42285
+ <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464"></path>
42286
+ <path d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463"></path>
42287
+ </symbol>
42288
+ <symbol id="icon-cog" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42289
+ <path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z" /><path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
42290
+ </symbol>
42291
+ <symbol id="icon-photo" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42292
+ <path d="M15 8h.01" /><path d="M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z" /><path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5" /><path d="M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3" />
42293
+ </symbol>
42294
+ <symbol id="icon-minus2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42295
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42296
+ <path d="M5 12l14 0"></path>
42297
+ </symbol>
42245
42298
  </svg>`;
42246
42299
  builder.dom.appendHtml(builder.builderStuff, html);
42247
42300
  };
@@ -43280,8 +43333,8 @@ class RowTool$1 {
43280
43333
  }
43281
43334
  */
43282
43335
  const newPos = this.builder.util.getElementPosition(elm);
43283
- let top = newPos.top;
43284
- let left = newPos.left;
43336
+ let top = newPos.top + window.pageYOffset;
43337
+ let left = newPos.left + window.pageXOffset;
43285
43338
 
43286
43339
  // const w = rowMore.offsetWidth;
43287
43340
  rowMore.style.top = top - 8 + 'px';
@@ -71644,12 +71697,14 @@ class Image$1 {
71644
71697
  let html = `
71645
71698
  <div id="divImageTool" class="is-tool">
71646
71699
  <div role="button" tabindex="0" class="image-embed" style="${this.builder.opts.imageEmbed ? '' : 'display:none;'}width:40px;height:40px;overflow:hidden;">
71647
- <div style="position:absolute;width:100%;height:100%;"><svg class="is-icon-flex" style="position: absolute;top: 13px;left: 15px;width: 14px;height: 14px;"><use xlink:href="#ion-image"></use></svg></div>
71700
+ <div style="position:absolute;width:100%;height:100%;">
71701
+ <svg class="is-icon-flex" style="position: absolute;top: 13px;left: 15px;width: 16px;height: 16px;"><use xlink:href="#ion-image"></use></svg>
71702
+ </div>
71648
71703
  <input title="${util.out('Change Image')}" data-title="${util.out('Change Image')}" id="fileEmbedImage" type="file" accept="image/*" style="position:absolute;top:-20px;left:0;width:40px;height:60px;opacity: 0;cursor: pointer;"/>
71649
71704
  </div>
71650
- <button tabindex="0" title="${util.out('Link')}" data-title="${util.out('Link')}" class="image-link" style="width:40px;height:40px;"><svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#ion-link"></use></svg></button>
71651
- <button tabindex="0" title="${util.out('Select')}" data-title="${util.out('Select')}" class="open-asset" style="display:none;width:40px;height:40px;"><svg class="is-icon-flex" style="width:17px;height:17px;color:#fff"><use xlink:href="#icon-folder2"></use></svg></button>
71652
- <button tabindex="0" title="${util.out('Edit')}" data-title="${util.out('Edit')}" class="image-edit" style="width:40px;height:40px;"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-android-create"></use></svg></button>
71705
+ <button tabindex="0" title="${util.out('Link')}" data-title="${util.out('Link')}" class="image-link" style="width:40px;height:40px;"><svg class="is-icon-flex" style="width:17px;height:17px;transform:rotate(45deg)"><use xlink:href="#icon-link2"></use></svg></button>
71706
+ <button tabindex="0" title="${util.out('Select')}" data-title="${util.out('Select')}" class="open-asset" style="display:none;width:40px;height:40px;"><svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-folder2"></use></svg></button>
71707
+ <button tabindex="0" title="${util.out('Edit')}" data-title="${util.out('Edit')}" class="image-edit" style="width:40px;height:40px;"><svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-pencil2"></use></svg></button>
71653
71708
  </div>
71654
71709
  <div id="divImageProgress">
71655
71710
  <div>
@@ -72811,28 +72866,33 @@ class Image$1 {
72811
72866
  if (this.builder.moveable) this.builder.moveable.updateRect();
72812
72867
  const movControlBox = document.querySelector('.moveable-control-box');
72813
72868
  if (movControlBox && !this.builder.hideImageResizer) movControlBox.style.display = 'block';
72814
- const handleImageToolClickOut = e => {
72815
- let elm = e.target;
72816
- if (!elm) return;
72817
- if (!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') && !elm.closest('img')) {
72818
- // click outside
72819
-
72820
- // hide
72821
- this.hideImageTool();
72822
- document.removeEventListener('click', handleImageToolClickOut);
72823
- if (this.builder.iframeDocument) {
72824
- this.builder.doc.removeEventListener('click', handleImageToolClickOut);
72869
+
72870
+ /*
72871
+ const handleImageToolClickOut = e =>{
72872
+ let elm = e.target;
72873
+ if(!elm) return;
72874
+ if(!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') &&
72875
+ !elm.closest('.is-modal') && !elm.closest('.keep-selection') &&
72876
+ !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') &&
72877
+ !elm.closest('img')) { // click outside
72878
+
72879
+ // hide
72880
+ this.hideImageTool();
72881
+ document.removeEventListener('click', handleImageToolClickOut);
72882
+ if(this.builder.iframeDocument) {
72883
+ this.builder.doc.removeEventListener('click', handleImageToolClickOut);
72884
+ }
72885
+ this.builder.handleImageToolClickOut_=false;
72825
72886
  }
72826
- this.builder.handleImageToolClickOut_ = false;
72827
- }
72828
72887
  };
72829
- if (!this.builder.handleImageToolClickOut_) {
72830
- document.addEventListener('click', handleImageToolClickOut);
72831
- if (this.builder.iframeDocument) {
72832
- this.builder.doc.addEventListener('click', handleImageToolClickOut);
72833
- }
72834
- this.builder.handleImageToolClickOut_ = true;
72888
+ if(!this.builder.handleImageToolClickOut_) {
72889
+ document.addEventListener('click', handleImageToolClickOut);
72890
+ if(this.builder.iframeDocument) {
72891
+ this.builder.doc.addEventListener('click', handleImageToolClickOut);
72892
+ }
72893
+ this.builder.handleImageToolClickOut_=true;
72835
72894
  }
72895
+ */
72836
72896
  } else {
72837
72897
  let imageResizer = this.imageResizer;
72838
72898
  imageResizer.style.display = 'none';
@@ -72846,6 +72906,28 @@ class Image$1 {
72846
72906
  const movControlBox = document.querySelector('.moveable-control-box');
72847
72907
  if (movControlBox) movControlBox.style.display = 'none';
72848
72908
  }
72909
+ const handleImageToolClickOut = e => {
72910
+ let elm = e.target;
72911
+ if (!elm) return;
72912
+ if (!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') && !elm.closest('img')) {
72913
+ // click outside
72914
+
72915
+ // hide
72916
+ this.hideImageTool();
72917
+ document.removeEventListener('click', handleImageToolClickOut);
72918
+ if (this.builder.iframeDocument) {
72919
+ this.builder.doc.removeEventListener('click', handleImageToolClickOut);
72920
+ }
72921
+ this.builder.handleImageToolClickOut_ = false;
72922
+ }
72923
+ };
72924
+ if (!this.builder.handleImageToolClickOut_) {
72925
+ document.addEventListener('click', handleImageToolClickOut);
72926
+ if (this.builder.iframeDocument) {
72927
+ this.builder.doc.addEventListener('click', handleImageToolClickOut);
72928
+ }
72929
+ this.builder.handleImageToolClickOut_ = true;
72930
+ }
72849
72931
  if (this.builder.canvas) ; else {
72850
72932
  let prog = false;
72851
72933
  if (e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0) ; else {
@@ -74962,10 +75044,18 @@ class Hyperlink {
74962
75044
  let linkTool = builderStuff.querySelector('#divLinkTool');
74963
75045
  if (!linkTool) {
74964
75046
  let html = `<div id="divLinkTool" class="is-tool">
74965
- <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="link-button-edit" style="display:none;"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-android-create"></use></svg></button>
74966
- <button title="${util.out('Link')}" data-title="${util.out('Link')}" class="link-edit"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-link"></use></svg></button>
74967
- <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="link-duplicate"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#ion-ios-photos-outline"></use></svg></button>
74968
- <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="link-remove"><svg class="is-icon-flex" style="width:20px;height:20px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
75047
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="link-button-edit" style="display:none;">
75048
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-pencil2"></use></svg>
75049
+ </button>
75050
+ <button title="${util.out('Link')}" data-title="${util.out('Link')}" class="link-edit">
75051
+ <svg class="is-icon-flex" style="width:17px;height:17px;transform:rotate(45deg)"><use xlink:href="#icon-link2"></use></svg>
75052
+ </button>
75053
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="link-duplicate">
75054
+ <svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#icon-duplicate3"></use></svg>
75055
+ </button>
75056
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="link-remove">
75057
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-trash2"></use></svg>
75058
+ </button>
74969
75059
  </div>
74970
75060
  `;
74971
75061
  dom.appendHtml(builderStuff, html);
@@ -75557,9 +75647,15 @@ class Button {
75557
75647
  let buttonTool = builderStuff.querySelector('#divButtonTool');
75558
75648
  if (!buttonTool) {
75559
75649
  let html = `<div id="divButtonTool" class="is-tool">
75560
- <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="button-edit"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-android-create"></use></svg></button>
75561
- <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="button-duplicate"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#ion-ios-photos-outline"></use></svg></button>
75562
- <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="button-remove"><svg class="is-icon-flex" style="width:20px;height:20px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
75650
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="button-edit">
75651
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-pencil2"></use></svg>
75652
+ </button>
75653
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="button-duplicate">
75654
+ <svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#icon-duplicate3"></use></svg>
75655
+ </button>
75656
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="button-remove">
75657
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-trash2"></use></svg>
75658
+ </button>
75563
75659
  </div>
75564
75660
  `;
75565
75661
  dom.appendHtml(builderStuff, html);
@@ -75691,8 +75787,8 @@ class Spacer {
75691
75787
  if (!spacerTool) {
75692
75788
  let html = `
75693
75789
  <div id="divSpacerTool" class="is-tool is-spacer-tool">
75694
- <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#ion-ios-minus-empty"></use></svg></button>
75695
- <button title="${util.out('Increase')}" data-value="+" style="border-left: none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>
75790
+ <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#icon-minus2"></use></svg></button>
75791
+ <button title="${util.out('Increase')}" data-value="+" style="border-left: none;"><svg class="is-icon-flex"><use xlink:href="#icon-plus"></use></svg></button>
75696
75792
  </div>
75697
75793
  `;
75698
75794
  dom.appendHtml(builderStuff, html);
@@ -75852,7 +75948,7 @@ class Module {
75852
75948
  let html = `
75853
75949
  <div class="is-tool is-module-tool">
75854
75950
  <button class="btn-module-refresh" title="${util.out('Refresh')}" data-title="${util.out('Refresh')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-reload"></use></svg></button>
75855
- <button class="btn-module-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
75951
+ <button class="btn-module-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
75856
75952
  </div>
75857
75953
  `;
75858
75954
  dom.appendHtml(builderStuff, html);
@@ -76102,7 +76198,7 @@ class Code {
76102
76198
  if (!codeTool) {
76103
76199
  let html = `
76104
76200
  <div class="is-tool is-code-tool">
76105
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
76201
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
76106
76202
  </div>
76107
76203
  `;
76108
76204
  dom.appendHtml(builderStuff, html);
@@ -76230,7 +76326,7 @@ class Iframe {
76230
76326
  if (!iframeTool) {
76231
76327
  let html = `
76232
76328
  <div class="is-tool is-iframe-tool">
76233
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
76329
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
76234
76330
  </div>
76235
76331
  `;
76236
76332
  dom.appendHtml(builderStuff, html);
@@ -76390,7 +76486,7 @@ class Table {
76390
76486
  //<div class="is-modal-bar is-draggable" style="background:#f9f9f9;"></div>
76391
76487
  let html = `
76392
76488
  <div class="is-tool is-table-tool">
76393
- <button title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
76489
+ <button title="${util.out('Settings')}" style="width:35px;height:35px;"><svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-cog"></use></svg></button>
76394
76490
  </div>
76395
76491
  `;
76396
76492
  dom.appendHtml(builderStuff, html);
@@ -76948,7 +77044,7 @@ class Video {
76948
77044
  if (!videoTool) {
76949
77045
  let html = `
76950
77046
  <div class="is-tool is-video-tool">
76951
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
77047
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
76952
77048
  </div>
76953
77049
  `;
76954
77050
  dom.appendHtml(builderStuff, html);
@@ -77205,7 +77301,7 @@ class Audio {
77205
77301
  if (!audioTool) {
77206
77302
  let html = `
77207
77303
  <div class="is-tool is-audio-tool">
77208
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:37px;height:37px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
77304
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="background:none;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
77209
77305
  </div>
77210
77306
  `;
77211
77307
  dom.appendHtml(builderStuff, html);
@@ -77398,7 +77494,7 @@ class Svg {
77398
77494
  if (!svgTool) {
77399
77495
  let html = `
77400
77496
  <div class="is-tool is-svg-tool">
77401
- <button class="btn-svg-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
77497
+ <button class="btn-svg-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
77402
77498
  </div>
77403
77499
  `;
77404
77500
  dom.appendHtml(builderStuff, html);
@@ -77771,16 +77867,22 @@ class RowTool {
77771
77867
  const builderStuff = this.builder.builderStuff;
77772
77868
  let rowtool = row.querySelector('.is-row-tool');
77773
77869
  if (!rowtool) {
77774
- let html = `<div class="is-tool is-row-tool">
77775
- <div title="${util.out('Move')}" role="button" tabindex="-1" class="row-handle" style="width:100%;cursor:move;text-align:center;"><svg class="is-icon-flex"><use xlink:href="#ion-move"></use></svg></div>
77776
- <button type="button" tabindex="-1" title="${util.out('More')}" class="row-more"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
77870
+ let html = `<div class="is-tool is-row-tool" style="${!this.builder.rowTool && this.builder.rowTool !== '' ? 'display:none;' : ''}">
77871
+ <div title="${util.out('Move')}" role="button" tabindex="-1" class="row-handle" style="${this.builder.rowHandle ? '' : 'display:none;'}width:100%;cursor:move;text-align:center;"><svg class="is-icon-flex"><use xlink:href="#ion-move"></use></svg></div>
77872
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="row-more"><svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-dots2"></use></svg></button>
77777
77873
  <button type="button" tabindex="-1" title="${util.out('Grid Editor')}" class="row-grideditor"><svg class="is-icon-flex"><use xlink:href="#ion-grid"></use></svg></button>
77778
- <button type="button" tabindex="-1" title="${util.out('Delete')}" class="row-remove"><svg class="is-icon-flex"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
77874
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="row-remove"><svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-trash2"></use></svg></button>
77779
77875
  </div>
77780
77876
  <div class="is-tool is-col-tool">
77781
- <button type="button" tabindex="-1" title="${util.out('Add')}" class="cell-add"><svg class="is-icon-flex"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>
77782
- <button type="button" tabindex="-1" title="${util.out('More')}" class="cell-more"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
77783
- <button type="button" tabindex="-1" title="${util.out('Delete')}" class="cell-remove"><svg class="is-icon-flex" style="margin-left:-1px"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
77877
+ <button type="button" tabindex="-1" title="${util.out('Add')}" class="cell-add">
77878
+ <svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-plus"></use></svg>
77879
+ </button>
77880
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="cell-more">
77881
+ <svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-dots2"></use></svg>
77882
+ </button>
77883
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="cell-remove">
77884
+ <svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-trash2"></use></svg>
77885
+ </button>
77784
77886
  </div>
77785
77887
  `;
77786
77888
  dom.appendHtml(row, html);
@@ -78182,7 +78284,7 @@ class RowTool {
78182
78284
  ${htmlbutton}
78183
78285
  <div class="is-separator"></div>
78184
78286
  <button type="button" title="${util.out('Lock')}" class="row-locking"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-lock"></use></svg></span>${util.out('Lock')}</button>
78185
- <button type="button" title="${util.out('Settings')}" class="row-settings"><span><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-ios-gear"></use></svg></span>${util.out('Settings')}</button>
78287
+ <button type="button" title="${util.out('Settings')}" class="row-settings"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-cog"></use></svg></span>${util.out('Settings')}</button>
78186
78288
  </div>
78187
78289
  </div>
78188
78290
  `;
@@ -79667,17 +79769,7 @@ class ColumnTool {
79667
79769
  ${htmlbutton}
79668
79770
  <div class="is-separator"></div>
79669
79771
  <button type="button" title="${util.out('Lock')}" class="cell-locking"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-lock"></use></svg></span>${util.out('Lock')}</button>
79670
- <button type="button" title="${util.out('Settings')}" class="cell-settings"><span><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-ios-gear"></use></svg></span>${util.out('Settings')}</button>
79671
-
79672
- <!--
79673
- <button title="${util.out('Lock')}" class="cell-locking">
79674
- <svg class="is-icon-flex"><use xlink:href="#icon-lock"></use></svg>
79675
- </button>
79676
- <button title="${util.out('Settings')}" class="cell-settings">
79677
- <svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg>
79678
- <span>${util.out('Settings')}</span>
79679
- </button>
79680
- -->
79772
+ <button type="button" title="${util.out('Settings')}" class="cell-settings"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-cog"></use></svg></span>${util.out('Settings')}</button>
79681
79773
  </div>
79682
79774
  </div>
79683
79775
  `;
@@ -86658,18 +86750,27 @@ class ElementTool {
86658
86750
  let elementMore = builderStuff.querySelector('.elmmore');
86659
86751
  if (!elementTool) {
86660
86752
  let html = `<div class="is-tool is-element-tool">
86661
- <button type="button" tabindex="-1" title="${util.out('Add')}" class="elm-add"><svg class="is-icon-flex"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>
86662
- <button type="button" tabindex="-1" title="${util.out('More')}" class="elm-more"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
86663
- <button type="button" tabindex="-1" title="${util.out('Delete')}" class="elm-remove"><svg class="is-icon-flex" style="margin-left:-1px"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
86664
- <button type="button" tabindex="-1" title="${util.out('Settings')}" class="elm-settings"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
86753
+ <button type="button" tabindex="-1" title="${util.out('Add')}" class="elm-add">
86754
+ <svg class="is-icon-flex" style="width:14px;height:14px;color:#111"><use xlink:href="#icon-plus"></use></svg>
86755
+ </button>
86756
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="elm-more">
86757
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-dots2"></use></svg>
86758
+ </button>
86759
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="elm-remove">
86760
+ <svg class="is-icon-flex" style="width:15px;height:15px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
86761
+ </button>
86762
+ <button type="button" tabindex="-1" title="${util.out('Settings')}" class="elm-settings">
86763
+ <svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg>
86764
+ </button>
86665
86765
  </div>
86766
+
86666
86767
  <div class="is-pop elmmore" style="z-index:10002;" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
86667
86768
  <div style="display:flex;flex-flow:wrap;">
86668
86769
  <button type="button" title="${util.out('Move Up')}" class="elm-up"><span><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#ion-ios-arrow-thin-up"></use></svg></span>${util.out('Move Up')}</button>
86669
86770
  <button type="button" title="${util.out('Move Down')}" class="elm-down"><span><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#ion-ios-arrow-thin-down"></use></svg></span>${util.out('Move Down')}</button>
86670
86771
  <button type="button" title="${util.out('Duplicate')}" class="elm-duplicate"><span><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-ios-photos-outline"></use></svg></span>${util.out('Duplicate')}</button>
86671
86772
  ${this.builder.opts.elementEditor ? `
86672
- <button type="button" title="${util.out('Settings')}" class="elm-settings"><span><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-ios-gear"></use></svg></span>${util.out('Settings')}</button>
86773
+ <button type="button" title="${util.out('Settings')}" class="elm-settings"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-cog"></use></svg></span>${util.out('Settings')}</button>
86673
86774
  ` : ''}
86674
86775
  </div>
86675
86776
  </div>
@@ -86720,7 +86821,7 @@ class ElementTool {
86720
86821
  const w = quickadd.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
86721
86822
  const h = quickadd.offsetHeight;
86722
86823
  if (viewportHeight - top > h) {
86723
- quickadd.style.top = top + window.pageYOffset + 27 + 'px';
86824
+ quickadd.style.top = top + window.pageYOffset + 42 + 'px';
86724
86825
  quickadd.style.left = left - w / 2 + 10 + 'px';
86725
86826
  dom.removeClass(quickadd, 'arrow-bottom');
86726
86827
  dom.removeClass(quickadd, 'arrow-right');
@@ -86885,7 +86986,7 @@ class ElementTool {
86885
86986
  const w = elementMore.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
86886
86987
  const h = elementMore.offsetHeight;
86887
86988
  if (viewportHeight - top > h) {
86888
- elementMore.style.top = top + window.pageYOffset + 27 + 'px';
86989
+ elementMore.style.top = top + window.pageYOffset + 42 + 'px';
86889
86990
  elementMore.style.left = left - w / 2 + 10 + 'px';
86890
86991
  dom.removeClass(elementMore, 'arrow-bottom');
86891
86992
  dom.removeClass(elementMore, 'arrow-right');
@@ -87181,6 +87282,9 @@ class ElementTool {
87181
87282
  }
87182
87283
  }
87183
87284
  }
87285
+ if (activeElement && activeElement.classList.contains('ovl') && this.builder.activeIframe) {
87286
+ activeElement = this.builder.activeIframe.closest('.embed-responsive');
87287
+ }
87184
87288
  this.builder.activeElement = activeElement;
87185
87289
  if (activeElement) {
87186
87290
  let elm = activeElement;
@@ -89945,6 +90049,10 @@ class ColorPicker {
89945
90049
  const poppicker = builderStuff.querySelector('.pop-picker');
89946
90050
  poppicker.style.display = 'flex';
89947
90051
  poppicker.style.opacity = 0;
90052
+ if (this.opts.colors.length <= 21) poppicker.style.height = '360px'; // 3 lines
90053
+ else if (this.opts.colors.length > 21 && this.opts.colors.length <= 28) poppicker.style.height = '390px'; // 4 lines
90054
+ else if (this.opts.colors.length > 28) poppicker.style.height = '420px'; // 5 lines
90055
+
89948
90056
  const pickr = Pickr.create({
89949
90057
  el: '._pop-colpick',
89950
90058
  theme: 'nano',
@@ -93833,6 +93941,10 @@ class Rte {
93833
93941
  btnRteColor.forEach(btn => {
93834
93942
  btn.addEventListener('click', () => {
93835
93943
  const pop = this.rteColorPicker;
93944
+ const numOfColors = this.builder.colors.length;
93945
+ if (numOfColors > 21 && numOfColors <= 28) pop.classList.add('_4lines'); // 4 lines
93946
+ else if (numOfColors > 28) pop.classList.add('_5lines'); // 5 lines
93947
+
93836
93948
  if (!dom.hasClass(pop, 'active')) {
93837
93949
  this.util.showRtePop(pop, () => {
93838
93950
  const top = btn.getBoundingClientRect().top;
@@ -104768,54 +104880,83 @@ class ContentStuff$1 {
104768
104880
  constructor(builder) {
104769
104881
  this.builder = builder;
104770
104882
  const util = builder.util;
104771
- const html = `<div class="is-tool is-column-tool">
104883
+ const html = `
104884
+ <!-- not used -->
104885
+ <div class="is-tool is-column-tool">
104772
104886
  <button type="button" tabindex="-1" title="${util.out('Add')}" class="cell-add"><svg class="is-icon-flex"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>
104773
104887
  <button type="button" tabindex="-1" title="${util.out('More')}" class="cell-more"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
104774
104888
  <button type="button" tabindex="-1" title="${util.out('Delete')}" class="cell-remove"><svg class="is-icon-flex" style="margin-left:-1px"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
104775
104889
  </div>
104890
+ <!-- /not used -->
104891
+
104776
104892
  <div class="is-tool is-element-tool">
104777
- <button type="button" tabindex="-1" title="${util.out('Add')}" class="elm-add"><svg class="is-icon-flex"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>
104778
- <button type="button" tabindex="-1" title="${util.out('More')}" class="elm-more"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
104779
- <button type="button" tabindex="-1" title="${util.out('Delete')}" class="elm-remove"><svg class="is-icon-flex" style="margin-left:-1px"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
104780
- <button type="button" tabindex="-1" title="${util.out('Settings')}" class="elm-settings"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104893
+ <button type="button" tabindex="-1" title="${util.out('Add')}" class="elm-add">
104894
+ <svg class="is-icon-flex" style="width:14px;height:14px;color:#111"><use xlink:href="#icon-plus"></use></svg>
104895
+ </button>
104896
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="elm-more">
104897
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-dots2"></use></svg>
104898
+ </button>
104899
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="elm-remove">
104900
+ <svg class="is-icon-flex" style="width:15px;height:15px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
104901
+ </button>
104902
+ <button type="button" tabindex="-1" title="${util.out('Settings')}" class="elm-settings">
104903
+ <svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg>
104904
+ </button>
104781
104905
  </div>
104782
104906
 
104783
104907
  <div id="divButtonTool" class="is-tool">
104784
- <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="button-edit"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-android-create"></use></svg></button>
104785
- <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="button-duplicate"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#ion-ios-photos-outline"></use></svg></button>
104786
- <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="button-remove"><svg class="is-icon-flex" style="width:20px;height:20px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
104908
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="button-edit">
104909
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-pencil2"></use></svg>
104910
+ </button>
104911
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="button-duplicate">
104912
+ <svg class="is-icon-flex" style="width:16px;height:16px;color:#111"><use xlink:href="#icon-duplicate3"></use></svg>
104913
+ </button>
104914
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="button-remove">
104915
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
104916
+ </button>
104787
104917
  </div>
104918
+
104788
104919
  <div class="is-tool is-code-tool">
104789
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104920
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:35px;height:35px;"><svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-cog"></use></svg></button>
104790
104921
  </div>
104922
+
104791
104923
  <div id="divLinkTool" class="is-tool">
104792
- <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="link-button-edit" style="display:none;"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-android-create"></use></svg></button>
104793
- <button title="${util.out('Link')}" data-title="${util.out('Link')}" class="link-edit"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-link"></use></svg></button>
104794
- <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="link-duplicate"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#ion-ios-photos-outline"></use></svg></button>
104795
- <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="link-remove"><svg class="is-icon-flex" style="width:20px;height:20px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
104924
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="link-button-edit" style="display:none;">
104925
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-pencil2"></use></svg>
104926
+ </button>
104927
+ <button title="${util.out('Link')}" data-title="${util.out('Link')}" class="link-edit">
104928
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111;transform:rotate(45deg)"><use xlink:href="#icon-link2"></use></svg>
104929
+ </button>
104930
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="link-duplicate">
104931
+ <svg class="is-icon-flex" style="width:16px;height:16px;color:#111"><use xlink:href="#icon-duplicate3"></use></svg>
104932
+ </button>
104933
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="link-remove">
104934
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
104935
+ </button>
104796
104936
  </div>
104937
+
104797
104938
  <div class="is-tool is-iframe-tool">
104798
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104939
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
104799
104940
  </div>
104800
104941
  <div class="is-tool is-module-tool">
104801
- <button class="btn-module-refresh" title="${util.out('Refresh')}" data-title="${util.out('Refresh')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-reload"></use></svg></button>
104802
- <button class="btn-module-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104942
+ <button class="btn-module-refresh" title="${util.out('Refresh')}" data-title="${util.out('Refresh')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-reload"></use></svg></button>
104943
+ <button class="btn-module-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
104803
104944
  </div>
104804
104945
  <div class="is-tool is-svg-tool">
104805
- <button class="btn-svg-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104946
+ <button class="btn-svg-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
104806
104947
  </div>
104807
104948
  <div id="divSpacerTool" class="is-tool is-spacer-tool">
104808
- <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#ion-ios-minus-empty"></use></svg></button>
104809
- <button title="${util.out('Increase')}" data-value="+" style="border-left: none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>
104949
+ <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#icon-minus2"></use></svg></button>
104950
+ <button title="${util.out('Increase')}" data-value="+" style="border-left: none;"><svg class="is-icon-flex"><use xlink:href="#icon-plus"></use></svg></button>
104810
104951
  </div>
104811
104952
  <div class="is-tool is-table-tool">
104812
- <button title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104953
+ <button title="${util.out('Settings')}" style="width:35px;height:35px;"><svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-cog"></use></svg></button>
104813
104954
  </div>
104814
104955
  <div class="is-tool is-video-tool">
104815
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104956
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
104816
104957
  </div>
104817
104958
  <div class="is-tool is-audio-tool">
104818
- <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:37px;height:37px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
104959
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:35px;height:35px;background:none;"><svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-cog"></use></svg></button>
104819
104960
  </div>
104820
104961
 
104821
104962
  <div class="is-locked-indicator">
@@ -104935,7 +105076,7 @@ class ContentStuff$1 {
104935
105076
  <symbol viewBox="0 0 512 512" id="ion-volume-medium">
104936
105077
  <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"/>
104937
105078
  </symbol>
104938
- <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105079
+ <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
104939
105080
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
104940
105081
  <path d="M11 19h-6a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v2.5"></path>
104941
105082
  <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
@@ -104946,6 +105087,64 @@ class ContentStuff$1 {
104946
105087
  <path d="M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1.002 7.935 1.007 9.425 4.747"></path>
104947
105088
  <path d="M20 4v5h-5"></path>
104948
105089
  </symbol>
105090
+
105091
+
105092
+ <symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105093
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105094
+ <line x1="12" y1="5" x2="12" y2="19"></line>
105095
+ <line x1="5" y1="12" x2="19" y2="12"></line>
105096
+ </symbol>
105097
+ <symbol id="icon-plus2" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105098
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105099
+ <path d="M12 5l0 14"></path>
105100
+ <path d="M5 12l14 0"></path>
105101
+ </symbol>
105102
+
105103
+ <symbol id="icon-minus" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105104
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105105
+ <path d="M5 12l14 0"></path>
105106
+ </symbol>
105107
+
105108
+ <symbol id="icon-dots2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105109
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" />
105110
+ </symbol>
105111
+ <symbol id="icon-close" viewBox="0 0 24 24" stroke-width="1.6" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105112
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105113
+ <path d="M18 6l-12 12"></path>
105114
+ <path d="M6 6l12 12"></path>
105115
+ </symbol>
105116
+ <symbol id="icon-trash2" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105117
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105118
+ <path d="M4 7l16 0"></path>
105119
+ <path d="M10 11l0 6"></path>
105120
+ <path d="M14 11l0 6"></path>
105121
+ <path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>
105122
+ <path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>
105123
+ </symbol>
105124
+ <symbol id="icon-duplicate3" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105125
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z" /><path d="M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1" />
105126
+ </symbol>
105127
+ <symbol id="icon-pencil2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105128
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105129
+ <path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4"></path>
105130
+ <line x1="13.5" y1="6.5" x2="17.5" y2="10.5"></line>
105131
+ </symbol>
105132
+ <symbol id="icon-link2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105133
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105134
+ <path d="M9 15l6 -6"></path>
105135
+ <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464"></path>
105136
+ <path d="M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463"></path>
105137
+ </symbol>
105138
+ <symbol id="icon-cog" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105139
+ <path d="M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z" /><path d="M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" />
105140
+ </symbol>
105141
+ <symbol id="icon-photo" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105142
+ <path d="M15 8h.01" /><path d="M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z" /><path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5" /><path d="M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3" />
105143
+ </symbol>
105144
+ <symbol id="icon-minus2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105145
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105146
+ <path d="M5 12l14 0"></path>
105147
+ </symbol>
104949
105148
  </defs>
104950
105149
  </svg>
104951
105150
 
@@ -105139,6 +105338,9 @@ class ContentStuff$1 {
105139
105338
  }
105140
105339
 
105141
105340
  /* Tool */
105341
+
105342
+
105343
+ /*
105142
105344
  .is-tool.is-video-tool,
105143
105345
  .is-tool.is-audio-tool,
105144
105346
  .is-tool.is-iframe-tool {
@@ -105198,6 +105400,111 @@ class ContentStuff$1 {
105198
105400
  .is-tool.is-table-tool:hover {
105199
105401
  z-index:10001 !important
105200
105402
  }
105403
+ */
105404
+
105405
+
105406
+ .is-tool.is-video-tool,
105407
+ .is-tool.is-audio-tool,
105408
+ .is-tool.is-iframe-tool {
105409
+ background: rgba(255, 255, 255, 0.97) !important;
105410
+ border: transparent 1px solid;
105411
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105412
+ border-radius: 20px;
105413
+ }
105414
+
105415
+ .is-tool.is-video-tool > div,
105416
+ .is-tool.is-video-tool > button,
105417
+ .is-tool.is-audio-tool > div,
105418
+ .is-tool.is-audio-tool > button,
105419
+ .is-tool.is-iframe-tool > div,
105420
+ .is-tool.is-iframe-tool > button {
105421
+ width: 35px !important;
105422
+ height: 35px !important;
105423
+ background: transparent;
105424
+ }
105425
+
105426
+ .is-tool.is-video-tool svg,
105427
+ .is-tool.is-audio-tool svg,
105428
+ .is-tool.is-iframe-tool svg {
105429
+ width: 17px;
105430
+ height: 17px;
105431
+ fill: #111 !important;
105432
+ color: #111 !important;
105433
+ }
105434
+
105435
+ .is-tool.is-spacer-tool {
105436
+ border: none;
105437
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105438
+ border-radius: 20px;
105439
+ overflow: hidden;
105440
+ }
105441
+ .is-tool.is-spacer-tool > button {
105442
+ width: 40px;
105443
+ height: 35px;
105444
+ background: rgba(255, 255, 255, 0.97) !important;
105445
+ }
105446
+ .is-tool.is-spacer-tool > button svg {
105447
+ fill: #111 !important;
105448
+ color: #111 !important;
105449
+ }
105450
+ .is-tool.is-table-tool {
105451
+ border: none;
105452
+ background: none;
105453
+ border-radius: 20px;
105454
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105455
+ }
105456
+ .is-tool.is-table-tool:hover {
105457
+ z-index: 10001 !important;
105458
+ }
105459
+ .is-tool.is-table-tool > button {
105460
+ width: 35px;
105461
+ height: 35px;
105462
+ background: rgba(255, 255, 255, 0.9) !important;
105463
+ }
105464
+ .is-tool.is-table-tool > button svg {
105465
+ width: 17px !important;
105466
+ height: 17px !important;
105467
+ fill: #111 !important;
105468
+ color: #111 !important;
105469
+ }
105470
+ .is-tool.is-code-tool, .is-tool.is-module-tool, .is-tool.is-svg-tool {
105471
+ border: none;
105472
+ background: none;
105473
+ border-radius: 20px;
105474
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105475
+ overflow: hidden;
105476
+ }
105477
+ .is-tool.is-code-tool > button, .is-tool.is-module-tool > button, .is-tool.is-svg-tool > button {
105478
+ width: 35px;
105479
+ height: 35px;
105480
+ background: rgba(255, 255, 255, 0.9) !important;
105481
+ }
105482
+ .is-tool.is-code-tool > button svg, .is-tool.is-module-tool > button svg, .is-tool.is-svg-tool > button svg {
105483
+ width: 17px !important;
105484
+ height: 17px !important;
105485
+ fill: #111 !important;
105486
+ color: #111 !important;
105487
+ }
105488
+ .is-tool#divLinkTool, .is-tool#divButtonTool {
105489
+ background: rgba(255, 255, 255, 0.95) !important;
105490
+ box-shadow: none;
105491
+ border-radius: 20px;
105492
+ overflow: hidden;
105493
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105494
+ margin-top: -10px;
105495
+ margin-left: 7px;
105496
+ }
105497
+ .is-tool#divLinkTool button, .is-tool#divButtonTool button {
105498
+ width: 37px;
105499
+ height: 37px;
105500
+ background: transparent !important;
105501
+ }
105502
+ .is-tool#divLinkTool button svg, .is-tool#divButtonTool button svg {
105503
+ fill: #111 !important;
105504
+ color: #111 !important;
105505
+ }
105506
+
105507
+
105201
105508
 
105202
105509
 
105203
105510
  .dot {
@@ -105291,19 +105598,25 @@ class ContentStuff$1 {
105291
105598
  /* is-element-tool */
105292
105599
 
105293
105600
  .is-tool.is-element-tool {
105294
- background: rgba(243, 243, 243, 0.9);
105295
105601
  border-radius: 3px;
105296
105602
  overflow: hidden;
105603
+ margin-top: 10px;
105604
+ margin-left: 0px;
105605
+ border-radius: 100px;
105606
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105607
+ background-color: rgba(255, 255, 255, 0.97) !important;
105297
105608
  }
105298
105609
  .is-tool.is-element-tool button {
105299
- width: 25px;
105300
- height: 25px;
105610
+ width: 32px;
105611
+ height: 31px;
105301
105612
  background: transparent;
105613
+ color: #111;
105302
105614
  }
105303
105615
  .is-tool.is-element-tool svg {
105304
105616
  width: 14px;
105305
105617
  height: 14px;
105306
- fill: #111;
105618
+ fill: #111 !important;
105619
+ color: #111 !important;
105307
105620
  }
105308
105621
  .is-tool.is-element-tool .elm-more svg {
105309
105622
  width: 11px;
@@ -105375,8 +105688,8 @@ class ContentStuff$1 {
105375
105688
  }
105376
105689
 
105377
105690
  .is-tool.is-row-tool button {
105378
- width: 25px;
105379
- height: 25px;
105691
+ width: 28px;
105692
+ height: 28px;
105380
105693
  display: flex;
105381
105694
  justify-content: center;
105382
105695
  align-items: center;
@@ -105508,10 +105821,11 @@ class ContentStuff$1 {
105508
105821
  box-shadow: none;
105509
105822
  border-radius: 2px;
105510
105823
  overflow: hidden;
105824
+ top: -3px !important;
105511
105825
  }
105512
105826
  .is-tool.is-col-tool button {
105513
- width: 25px;
105514
- height: 25px;
105827
+ width: 28px;
105828
+ height: 28px;
105515
105829
  display: flex;
105516
105830
  justify-content: center;
105517
105831
  align-items: center;
@@ -105534,6 +105848,9 @@ class ContentStuff$1 {
105534
105848
  width: 14px;
105535
105849
  height: 14px;
105536
105850
  }
105851
+ .is-tool.is-col-tool svg * { /* prevent override by .is-dark-text * */
105852
+ color: #fff;
105853
+ }
105537
105854
 
105538
105855
 
105539
105856
  .is-builder[gray] .is-tool.is-col-tool {
@@ -105647,6 +105964,9 @@ class ContentStuff$1 {
105647
105964
  width: 19px;
105648
105965
  height: 19px;
105649
105966
  }
105967
+ .is-tool.is-row-tool svg * { /* prevent override by .is-dark-text * */
105968
+ color: #fff;
105969
+ }
105650
105970
 
105651
105971
 
105652
105972
 
@@ -108513,8 +108833,6 @@ Important: Do not change the 'div.is-container' element!
108513
108833
  }
108514
108834
  }
108515
108835
 
108516
- // import RecordRTC from 'recordrtc';
108517
- // import Recorder from 'opus-recorder'; // Using Recorder
108518
108836
  const dom$i = new Dom();
108519
108837
  class Dictation {
108520
108838
  constructor(opts = {}, builder) {
@@ -108862,6 +109180,9 @@ class Dictation {
108862
109180
  dom$i.appendHtml(builderStuff, html);
108863
109181
  const modalCommand = builderStuff.querySelector('.page-command');
108864
109182
  this.modalCommand = modalCommand;
109183
+ new Draggable$2({
109184
+ selector: '.is-modal.page-command .is-draggable'
109185
+ });
108865
109186
  const modalCommandList = builderStuff.querySelector('.commandlist');
108866
109187
  this.modalCommandList = modalCommandList;
108867
109188
  const modalConfig = builderStuff.querySelector('.commandconfig');
@@ -115343,6 +115664,8 @@ class Editable {
115343
115664
  this.handleEditStart = this.handleEditStart.bind(this);
115344
115665
  this.handleMouseClick = this.handleMouseClick.bind(this);
115345
115666
  this.handleTouchStart = this.handleTouchStart.bind(this);
115667
+ this.handleMouseDown = this.handleMouseDown.bind(this);
115668
+ this.handleMouseUp = this.handleMouseUp.bind(this);
115346
115669
  this.setup();
115347
115670
  }
115348
115671
  setup() {
@@ -115351,6 +115674,7 @@ class Editable {
115351
115674
  element.addEventListener('touchstart', this.handleTouchStart, {
115352
115675
  passive: false
115353
115676
  });
115677
+ element.addEventListener('mousedown', this.handleMouseDown);
115354
115678
  });
115355
115679
  }
115356
115680
  refresh() {
@@ -115358,23 +115682,49 @@ class Editable {
115358
115682
  this.elements.forEach(element => {
115359
115683
  element.removeEventListener('dblclick', this.handleEditStart);
115360
115684
  element.removeEventListener('touchstart', this.handleTouchStart);
115685
+ element.removeEventListener('mousedown', this.handleMouseDown);
115361
115686
  });
115362
115687
  this.elements.forEach(element => {
115363
115688
  element.addEventListener('dblclick', this.handleEditStart);
115364
115689
  element.addEventListener('touchstart', this.handleTouchStart, {
115365
115690
  passive: false
115366
115691
  });
115692
+ element.addEventListener('mousedown', this.handleMouseDown);
115367
115693
  });
115368
115694
  }
115695
+ handleMouseDown(event) {
115696
+ const currentTarget = event.currentTarget;
115697
+ this.lastClickTime = false;
115698
+ if (!currentTarget.classList.contains('active')) return;
115699
+ if (currentTarget.classList.contains('editable')) return;
115700
+ currentTarget.addEventListener('mouseup', this.handleMouseUp);
115701
+ const now = new Date().getTime();
115702
+ this.lastClickTime = now;
115703
+ }
115704
+ handleMouseUp(event) {
115705
+ if (!this.lastClickTime) return;
115706
+ const currentTarget = event.currentTarget;
115707
+ currentTarget.removeEventListener('mouseup', this.handleMouseUp);
115708
+ const now = new Date().getTime();
115709
+ const lastClickTime = this.lastClickTime || now;
115710
+ const timeDiff = now - lastClickTime;
115711
+ if (timeDiff < 300 && timeDiff > 0) {
115712
+ // Less than 300ms since the last touch, enable editing
115713
+ this.handleEditStart(event);
115714
+ }
115715
+ this.lastClickTime = now;
115716
+ }
115369
115717
  destroy(element) {
115370
115718
  if (element) {
115371
115719
  element.removeEventListener('dblclick', this.handleEditStart);
115372
115720
  element.removeEventListener('touchstart', this.handleTouchStart);
115721
+ element.removeEventListener('mousedown', this.handleMouseDown);
115373
115722
  } else {
115374
115723
  this.elements = this.doc.querySelectorAll(this.selector);
115375
115724
  this.elements.forEach(element => {
115376
115725
  element.removeEventListener('dblclick', this.handleEditStart);
115377
115726
  element.removeEventListener('touchstart', this.handleTouchStart);
115727
+ element.removeEventListener('mousedown', this.handleMouseDown);
115378
115728
  });
115379
115729
  }
115380
115730
  }
@@ -115687,6 +116037,8 @@ class EditableBlocks {
115687
116037
  target.style.zIndex = newZIndex;
115688
116038
  }
115689
116039
  selectStart(block) {
116040
+ if (block.classList.contains('editable')) return; // do not proceed if in editing mode
116041
+
115690
116042
  if (block.classList.contains('is-shape')) return; // do not clone if block is shape
115691
116043
 
115692
116044
  if (!this.clone) return;
@@ -117898,6 +118250,7 @@ class ContentBuilder {
117898
118250
  outlineMode: '',
117899
118251
  toolStyle: '',
117900
118252
  outlineStyle: '',
118253
+ rowHandle: true,
117901
118254
  snippetAddTool: true,
117902
118255
  elementTool: true,
117903
118256
  elementHighlight: true,
@@ -120671,7 +121024,118 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
120671
121024
  // let outlineStyle = localStorage.getItem('_outlinestyle');
120672
121025
  // this.preferences.setOutlineStyle(outlineStyle);
120673
121026
  // }
120674
- if (this.preferences) this.preferences.initBuilder(builder);
121027
+ if (this.preferences) this.preferences.initBuilder(builder);else {
121028
+ const setColumnTool = hidecolumntool => {
121029
+ const builders = this.doc.querySelectorAll(this.opts.container);
121030
+ if (hidecolumntool) {
121031
+ Array.prototype.forEach.call(builders, builder => {
121032
+ builder.setAttribute('hidecolumntool', '');
121033
+ });
121034
+ } else {
121035
+ Array.prototype.forEach.call(builders, builder => {
121036
+ builder.removeAttribute('hidecolumntool');
121037
+ });
121038
+ }
121039
+ };
121040
+ setColumnTool(!this.columnTool);
121041
+ const setElementTool = hideelementtool => {
121042
+ const builderStuff = this.builderStuff;
121043
+ if (hideelementtool) {
121044
+ builderStuff.setAttribute('hideelementtool', '');
121045
+ } else {
121046
+ builderStuff.removeAttribute('hideelementtool', '');
121047
+ }
121048
+ if (this.iframe) {
121049
+ const contentStuff = this.contentStuff;
121050
+ if (hideelementtool) {
121051
+ contentStuff.setAttribute('hideelementtool', '');
121052
+ } else {
121053
+ contentStuff.removeAttribute('hideelementtool', '');
121054
+ }
121055
+ }
121056
+ };
121057
+ setElementTool(!this.elementTool);
121058
+ const setOutline = hideoutline => {
121059
+ const builders = this.doc.querySelectorAll(this.opts.container);
121060
+ Array.prototype.forEach.call(builders, builder => {
121061
+ if (hideoutline) {
121062
+ builder.setAttribute('hideoutline', '');
121063
+ } else {
121064
+ builder.removeAttribute('hideoutline');
121065
+ }
121066
+ });
121067
+ };
121068
+ setOutline(!this.rowcolOutline);
121069
+ const setOutlineStyle = outlineStyle => {
121070
+ const builders = this.doc.querySelectorAll(this.opts.container);
121071
+ Array.prototype.forEach.call(builders, builder => {
121072
+ if (outlineStyle === 'grayoutline') {
121073
+ builder.setAttribute('grayoutline', '');
121074
+ } else {
121075
+ builder.removeAttribute('grayoutline');
121076
+ }
121077
+ });
121078
+ };
121079
+ setOutlineStyle(this.outlineStyle);
121080
+ const setElementHighlight = hideelementhighlight => {
121081
+ const builders = this.doc.querySelectorAll(this.opts.container);
121082
+ Array.prototype.forEach.call(builders, builder => {
121083
+ if (hideelementhighlight) {
121084
+ builder.setAttribute('hideelementhighlight', '');
121085
+ } else {
121086
+ builder.removeAttribute('hideelementhighlight', '');
121087
+ }
121088
+ });
121089
+ };
121090
+ setElementHighlight(!this.elementHighlight);
121091
+ const setToolStyle = toolStyle => {
121092
+ const builderStuff = this.builderStuff;
121093
+ if (toolStyle === 'gray') {
121094
+ builderStuff.setAttribute('gray', '');
121095
+ } else {
121096
+ builderStuff.removeAttribute('gray', '');
121097
+ }
121098
+ if (this.iframe) {
121099
+ const contentStuff = this.contentStuff;
121100
+ if (toolStyle === 'gray') {
121101
+ contentStuff.setAttribute('gray', '');
121102
+ } else {
121103
+ contentStuff.removeAttribute('gray', '');
121104
+ }
121105
+ }
121106
+ const builders = this.doc.querySelectorAll(this.opts.container);
121107
+ Array.prototype.forEach.call(builders, builder => {
121108
+ if (toolStyle === 'gray') {
121109
+ builder.setAttribute('gray', '');
121110
+ } else {
121111
+ builder.removeAttribute('gray');
121112
+ }
121113
+ });
121114
+ };
121115
+ setToolStyle(this.toolStyle);
121116
+ const setSnippetAddTool = hidesnippetaddtool => {
121117
+ const builders = this.doc.querySelectorAll(this.opts.container);
121118
+ Array.prototype.forEach.call(builders, builder => {
121119
+ if (hidesnippetaddtool) {
121120
+ builder.setAttribute('hidesnippetaddtool', '');
121121
+ } else {
121122
+ builder.removeAttribute('hidesnippetaddtool', '');
121123
+ }
121124
+ });
121125
+ };
121126
+ setSnippetAddTool(!this.snippetAddTool);
121127
+ const setRowToolPosition = rowTool => {
121128
+ const builders = this.doc.querySelectorAll(this.opts.container);
121129
+ Array.prototype.forEach.call(builders, builder => {
121130
+ if (rowTool === 'right') {
121131
+ builder.removeAttribute('leftrowtool');
121132
+ } else {
121133
+ builder.setAttribute('leftrowtool', '');
121134
+ }
121135
+ });
121136
+ };
121137
+ setRowToolPosition(this.rowTool);
121138
+ }
120675
121139
 
120676
121140
  // Apply behavior on each row
120677
121141
  const rows = this.dom.elementChildren(builder);
@@ -122940,8 +123404,8 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
122940
123404
  */
122941
123405
  src = this.viewFileUrl + '?url=' + src;
122942
123406
  }
122943
- const width = 512;
122944
- const height = 512;
123407
+ const width = this.ai_width; //768;
123408
+ const height = this.ai_height; //512;
122945
123409
  const img = new Image();
122946
123410
  img.src = src;
122947
123411
  img.crossOrigin = 'anonymous';
@@ -122973,6 +123437,47 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
122973
123437
  callback(result.url);
122974
123438
  };
122975
123439
  }
123440
+ getOrientation(width, height) {
123441
+ const aspectRatio = width / height;
123442
+ const predefinedRatios = [{
123443
+ ratio: '1:1',
123444
+ value: 1 / 1
123445
+ }, {
123446
+ ratio: '4:5',
123447
+ value: 4 / 5
123448
+ }, {
123449
+ ratio: '2:3',
123450
+ value: 2 / 3
123451
+ }, {
123452
+ ratio: '9:16',
123453
+ value: 9 / 16
123454
+ }, {
123455
+ ratio: '4:7',
123456
+ value: 4 / 7
123457
+ }, {
123458
+ ratio: '5:4',
123459
+ value: 5 / 4
123460
+ }, {
123461
+ ratio: '3:2',
123462
+ value: 3 / 2
123463
+ }, {
123464
+ ratio: '16:9',
123465
+ value: 16 / 9
123466
+ }, {
123467
+ ratio: '7:4',
123468
+ value: 7 / 4
123469
+ }];
123470
+ let closestRatio = predefinedRatios[0].ratio;
123471
+ let smallestDifference = Math.abs(aspectRatio - predefinedRatios[0].value);
123472
+ for (let i = 1; i < predefinedRatios.length; i++) {
123473
+ const difference = Math.abs(aspectRatio - predefinedRatios[i].value);
123474
+ if (difference < smallestDifference) {
123475
+ smallestDifference = difference;
123476
+ closestRatio = predefinedRatios[i].ratio;
123477
+ }
123478
+ }
123479
+ return closestRatio;
123480
+ }
122976
123481
  async generateImage(prompt, callback) {
122977
123482
  this.controller = new AbortController(); // Create a new AbortController
122978
123483
  this.signal = this.controller.signal; // Get a new signal object
@@ -122982,12 +123487,82 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
122982
123487
  let steps = this.imageSteps || 25;
122983
123488
  let guidance = this.imageGuidance || 7.5;
122984
123489
  let scheduler = this.imageScheduler || 'dpmsolver++';
123490
+ let width = 768;
123491
+ let height = 512;
123492
+ if (this.activeImage) {
123493
+ // check selected image dimension
123494
+ const activeImage = this.activeImage;
123495
+ const w = activeImage.offsetWidth;
123496
+ const h = activeImage.offsetHeight;
123497
+ const ratio = this.getOrientation(w, h);
123498
+ if (model === 'flux-schnell') {
123499
+ if (ratio === '1:1') {
123500
+ width = 1024;
123501
+ height = 1024;
123502
+ } else if (ratio === '4:5') {
123503
+ width = 768;
123504
+ height = 960;
123505
+ } else if (ratio === '2:3') {
123506
+ width = 768;
123507
+ height = 1152;
123508
+ } else if (ratio === '9:16') {
123509
+ width = 720;
123510
+ height = 1280;
123511
+ } else if (ratio === '4:7') {
123512
+ width = 512;
123513
+ height = 896;
123514
+ } else if (ratio === '5:4') {
123515
+ width = 960;
123516
+ height = 768;
123517
+ } else if (ratio === '3:2') {
123518
+ width = 1152;
123519
+ height = 768;
123520
+ } else if (ratio === '16:9') {
123521
+ width = 1280;
123522
+ height = 720;
123523
+ } else if (ratio === '7:4') {
123524
+ width = 896;
123525
+ height = 512;
123526
+ }
123527
+ } else {
123528
+ if (ratio === '1:1') {
123529
+ width = 512;
123530
+ height = 512;
123531
+ } else if (ratio === '4:5') {
123532
+ width = 512;
123533
+ height = 640;
123534
+ } else if (ratio === '2:3') {
123535
+ width = 512;
123536
+ height = 768;
123537
+ } else if (ratio === '9:16') {
123538
+ width = 576;
123539
+ height = 1024;
123540
+ } else if (ratio === '4:7') {
123541
+ width = 512;
123542
+ height = 896;
123543
+ } else if (ratio === '5:4') {
123544
+ width = 640;
123545
+ height = 512;
123546
+ } else if (ratio === '3:2') {
123547
+ width = 768;
123548
+ height = 512;
123549
+ } else if (ratio === '16:9') {
123550
+ width = 1024;
123551
+ height = 576;
123552
+ } else if (ratio === '7:4') {
123553
+ width = 896;
123554
+ height = 512;
123555
+ }
123556
+ }
123557
+ }
123558
+ this.ai_width = width;
123559
+ this.ai_height = height;
122985
123560
  const messages = {
122986
123561
  model,
122987
123562
  prompt: prompt,
122988
123563
  negative_prompt,
122989
- width: 512,
122990
- height: 512,
123564
+ width: this.ai_width,
123565
+ height: this.ai_height,
122991
123566
  steps,
122992
123567
  guidance,
122993
123568
  scheduler,
@@ -123013,10 +123588,15 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
123013
123588
  return;
123014
123589
  }
123015
123590
  const imageUrl = result.url;
123016
- if (this.imageAutoUpscale) {
123017
- this.upscaleImage(imageUrl, callback);
123018
- } else {
123591
+ if (this.activeImage) {
123592
+ // selectable image on content doesn't need tp be upscaled
123019
123593
  callback(imageUrl);
123594
+ } else {
123595
+ if (this.imageAutoUpscale) {
123596
+ this.upscaleImage(imageUrl, callback);
123597
+ } else {
123598
+ callback(imageUrl);
123599
+ }
123020
123600
  }
123021
123601
  } catch (error) {
123022
123602
  if (error.name === 'AbortError') ; else {
@@ -130335,7 +130915,7 @@ class Timeline {
130335
130915
  -->
130336
130916
  <div class="flex-wrap">
130337
130917
  <div class="flex-wrap" style="margin-right:15px;width: 120px;">
130338
- <select class="input-target">
130918
+ <select class="input-target" id="_input_target">
130339
130919
  <option value="block">${out('Block')}</option>
130340
130920
  <option value="element">${out('Element')}</option>
130341
130921
  <option value="column">${out('Column')}</option>
@@ -138403,9 +138983,9 @@ class Box {
138403
138983
  // 1920<breakpoint
138404
138984
  prefix = 'is-content-';
138405
138985
  }
138406
- }
138986
+ } // this.builder.editor.saveForUndo();
138987
+
138407
138988
 
138408
- this.builder.editor.saveForUndo();
138409
138989
  const activeBox = this.builder.activeBox;
138410
138990
  const container = activeBox.querySelector('.is-container');
138411
138991
 
@@ -138431,9 +139011,8 @@ class Box {
138431
139011
  container.classList.add(prefix + targetWidth); // panelBox.querySelector('.val-box-size').innerHTML = targetWidth;
138432
139012
 
138433
139013
  callback(targetWidth);
138434
- }
139014
+ } // this.builder.onChange();
138435
139015
 
138436
- this.builder.onChange();
138437
139016
  }
138438
139017
 
138439
139018
  clearContentWidth() {
@@ -151883,25 +152462,33 @@ class IframePanel {
151883
152462
  }
151884
152463
 
151885
152464
  hideTools() {
151886
- let elmTool = this.builder.doc.querySelector('.is-element-tool');
151887
- if (elmTool) elmTool.style.display = '';
151888
- let videoTool = this.builder.doc.querySelector('.is-video-tool');
151889
- if (videoTool) videoTool.style.display = '';
151890
- let audioTool = this.builder.doc.querySelector('.is-audio-tool');
151891
- if (audioTool) audioTool.style.display = '';
151892
- let iframeTool = this.builder.doc.querySelector('.is-iframe-tool');
151893
- if (iframeTool) iframeTool.style.display = '';
151894
- let moduleTool = this.builder.doc.querySelector('.is-module-tool');
151895
- if (moduleTool) moduleTool.style.display = '';
151896
- let lockIndicator = this.builder.doc.querySelector('.is-locked-indicator');
151897
- if (lockIndicator) lockIndicator.style.display = '';
151898
- let linkTool = this.builder.doc.querySelector('#divLinkTool');
151899
- if (linkTool) linkTool.style.display = '';
151900
- let spacerTool = this.builderStuff.querySelector('.is-spacer-tool');
151901
- if (spacerTool) spacerTool.style.display = '';
151902
- this.builder.editor.element.image.hideImageTool(); // this.builder.doc.querySelectorAll('.icon-active').forEach(elm => elm.classList.remove('icon-active'));
151903
- // this.builder.doc.querySelectorAll('.elm-inspected').forEach(elm => elm.classList.remove('elm-inspected'));
151904
- // this.builder.doc.querySelectorAll('.elm-active').forEach(elm => elm.classList.remove('elm-active'));
152465
+ this.builder.addCustomStyle('_css_scale', `
152466
+ .is-element-tool,
152467
+ .is-video-tool,
152468
+ .is-audio-tool,
152469
+ .is-iframe-tool,
152470
+ .is-module-tool,
152471
+ .is-code-tool,
152472
+ .is-svg-tool,
152473
+ .is-table-tool,
152474
+ .is-spacer-tool,
152475
+ .is-locked-indicator,
152476
+ .is-section-info,
152477
+ #divButtonTool,
152478
+ #divLinkTool {
152479
+ opacity: 0 !important;
152480
+ }
152481
+
152482
+ .row-active .is-col-tool,
152483
+ .row-active .is-row-tool ,
152484
+ .is-section-tool,
152485
+ .is-box-tool {
152486
+ opacity: 0 !important;
152487
+ }
152488
+ `);
152489
+ this.builder.editor.element.image.hideImageTool();
152490
+ let tool = this.builder.doc.querySelector('.row-active .is-col-tool');
152491
+ if (tool) tool.style.display = 'none';
151905
152492
  }
151906
152493
 
151907
152494
  repositionTool() {
@@ -151915,6 +152502,10 @@ class IframePanel {
151915
152502
  }
151916
152503
  }, 600);
151917
152504
  }
152505
+
152506
+ setTimeout(() => {
152507
+ this.builder.scaleTools(); // already include this.builder.removeCustomStyle('_css_scale');
152508
+ }, 300);
151918
152509
  }
151919
152510
 
151920
152511
  repositionTool_bak() {
@@ -155041,6 +155632,7 @@ class ContentBox {
155041
155632
  rowTool: 'right',
155042
155633
  toolStyle: '',
155043
155634
  outlineStyle: '',
155635
+ rowHandle: true,
155044
155636
  snippetAddTool: true,
155045
155637
  mobileSimpleEdit: false,
155046
155638
  clearPreferences: false,
@@ -158597,6 +159189,7 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
158597
159189
  rowTool: this.settings.rowTool,
158598
159190
  toolStyle: this.settings.toolStyle,
158599
159191
  outlineStyle: this.settings.outlineStyle,
159192
+ rowHandle: this.settings.rowHandle,
158600
159193
  snippetAddTool: this.settings.snippetAddTool,
158601
159194
  mobileSimpleEdit: this.settings.mobileSimpleEdit,
158602
159195
  clearPreferences: this.settings.clearPreferences,
@@ -160492,7 +161085,7 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
160492
161085
  <svg class="is-icon-flex"><use xlink:href="#ion-wrench"></use></svg>
160493
161086
  </button>
160494
161087
  <button type="button" class="btn-section-remove" tabindex="-1" data-title="${out('Remove')}" title="${out('Remove')}">
160495
- <svg class="is-icon-flex"><use xlink:href="#icon-close"></use></svg>
161088
+ <svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-3px;"><use xlink:href="#icon-trash2"></use></svg>
160496
161089
  </button>
160497
161090
  </div>`);
160498
161091
  this.defineLastBox(section);
@@ -161406,40 +161999,55 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
161406
161999
  this.positionTool(this.activeBox);
161407
162000
  }
161408
162001
 
161409
- hideTools() {
161410
- // hide tools
161411
- let tools = this.doc.querySelectorAll('.is-tool');
161412
- Array.prototype.forEach.call(tools, tool => {
161413
- tool.style.display = '';
161414
- });
161415
- tools = this.doc.querySelectorAll('.is-row-tool');
161416
- tools.forEach(tool => {
161417
- tool.style.display = 'none';
161418
- });
161419
- tools = this.doc.querySelectorAll('.is-rowadd-tool');
161420
- tools.forEach(tool => {
161421
- tool.style.opacity = 0;
161422
- });
161423
- tools = this.doc.querySelectorAll('.is-col-tool');
161424
- tools.forEach(tool => {
161425
- tool.style.display = 'none';
161426
- });
161427
- }
162002
+ scaleTools() {
162003
+ this.removeCustomStyle('_css_scale');
162004
+ const div = document.querySelector('.is-content-view');
162005
+ if (!div) return;
162006
+ const transformStyle = window.getComputedStyle(div).transform;
162007
+ const matrixValues = transformStyle.slice(7, -1).split(',');
162008
+ let scaleValue = parseFloat(matrixValues[0]);
162009
+ this.removeCustomStyle('_css_scale_apply');
162010
+ this.addCustomStyle('_css_scale_apply', `
162011
+ .is-section-tool {
162012
+ transform: scale(${1 / scaleValue}) !important;;
162013
+ transform-origin: top right !important;
162014
+ }
162015
+ .is-box-tool {
162016
+ transform: scale(${1 / scaleValue}) !important;;
162017
+ transform-origin: center bottomt !important;
162018
+ }
162019
+ .is-section-info {
162020
+ transform: scale(${1 / scaleValue}) !important;;
162021
+ }
161428
162022
 
161429
- showTools() {
161430
- this.editor.util.repositionColumnTool();
161431
- let tools = this.doc.querySelectorAll('.is-row-tool');
161432
- tools.forEach(tool => {
161433
- tool.style.display = '';
161434
- });
161435
- tools = this.doc.querySelectorAll('.is-rowadd-tool');
161436
- tools.forEach(tool => {
161437
- tool.style.opacity = '';
161438
- });
161439
- tools = this.doc.querySelectorAll('.is-col-tool');
161440
- tools.forEach(tool => {
161441
- tool.style.display = '';
161442
- });
162023
+ .is-col-tool {
162024
+ transform: scale(${1 / scaleValue}) !important;;
162025
+ transform-origin: bottom left !important;
162026
+
162027
+ }
162028
+ .is-row-tool {
162029
+ transform: scale(${1 / scaleValue}) !important;;
162030
+ transform-origin: top left !important;
162031
+ }
162032
+ .is-rowadd-tool button {
162033
+ transform: scale(${1 / scaleValue}) !important;;
162034
+ }
162035
+
162036
+ .is-element-tool,
162037
+ .is-video-tool,
162038
+ .is-audio-tool,
162039
+ .is-iframe-tool,
162040
+ .is-module-tool,
162041
+ .is-code-tool,
162042
+ .is-spacer-tool,
162043
+ .is-svg-tool,
162044
+ .is-table-tool,
162045
+ .is-locked-indicator,
162046
+ #divLinkTool, #divButtonTool {
162047
+ transform: scale(${1 / scaleValue}) !important;;
162048
+ transform-origin: top !important;
162049
+ }
162050
+ `);
161443
162051
  }
161444
162052
 
161445
162053
  positionTool(box) {
@@ -161545,18 +162153,31 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
161545
162153
  }
161546
162154
  }
161547
162155
  }
161548
- } // box info
162156
+ } // tools scaling for iframe
161549
162157
 
161550
162158
 
161551
- const boxInfos = this.wrapperEl.querySelectorAll('.is-box-info');
161552
- boxInfos.forEach(tool => {
161553
- tool.style.display = 'none';
161554
- });
161555
- let boxInfo = box.querySelector('.is-box-info');
162159
+ this.scaleTools();
162160
+ }
162161
+
162162
+ addCustomStyle(styleId, cssContent) {
162163
+ let existingStyle = this.doc.getElementById(styleId);
162164
+
162165
+ if (existingStyle) {
162166
+ existingStyle.innerHTML = cssContent;
162167
+ } else {
162168
+ let style = this.doc.createElement('style');
162169
+ style.type = 'text/css';
162170
+ style.id = styleId;
162171
+ style.innerHTML = cssContent;
162172
+ this.doc.head.appendChild(style);
162173
+ }
162174
+ }
162175
+
162176
+ removeCustomStyle(styleId) {
162177
+ let style = this.doc.getElementById(styleId);
161556
162178
 
161557
- if (boxInfo) {
161558
- boxInfo.style.display = 'flex';
161559
- boxInfo.style.transform = 'scale(' + 1 / zoom + ')';
162179
+ if (style) {
162180
+ this.doc.head.removeChild(style);
161560
162181
  }
161561
162182
  }
161562
162183