@innovastudio/contentbox 1.6.93 → 1.6.95

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.
@@ -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
 
@@ -27617,6 +27629,53 @@ const renderQuickAdd = builder => {
27617
27629
  const util = builder.util;
27618
27630
  const builderStuff = builder.builderStuff;
27619
27631
  const dom = builder.dom;
27632
+ let quickAddButtons = ['paragraph', 'headline', 'image', 'list', 'heading1', 'heading2', 'heading3', 'heading4', 'quote', 'preformatted', 'button', 'twobutton', 'map', 'youtube', 'video', 'icon', 'svg', 'form', 'table', 'social', 'code', 'spacer']; // default 'svg',
27633
+
27634
+ if (builder.quickAddButtons) {
27635
+ quickAddButtons = builder.quickAddButtons;
27636
+ }
27637
+ const buttonTemplates = {
27638
+ paragraph: `<button title="${util.out('Paragraph')}" class="add-paragraph"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#icon-align-full"></use></svg></span>${util.out('Paragraph')}</button>`,
27639
+ headline: `<button title="${util.out('Headline')}" class="add-headline"><span style="font-family:serif;display:block;margin:0 0 8px;font-size:11px;">H</span>${util.out('Headline')}</button>`,
27640
+ image: `<button title="${util.out('Image')}" class="add-image"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex ion-image" style="width:14px;height:14px;"><use xlink:href="#ion-image"></use></svg></span>${util.out('Image')}</button>`,
27641
+ list: `<button title="${util.out('List')}" class="add-list"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-list-bullet"></use></svg></span>${util.out('List')}</button>`,
27642
+ heading1: `<button title="${util.out('Heading 1')}" class="add-heading1"><span style="font-family:serif;display:block;margin:0 0 8px;">H1</span>${util.out('Heading 1')}</button>`,
27643
+ heading2: `<button title="${util.out('Heading 2')}" class="add-heading2"><span style="font-family:serif;display:block;margin:0 0 8px;">H2</span>${util.out('Heading 2')}</button>`,
27644
+ heading3: `<button title="${util.out('Heading 3')}" class="add-heading3"><span style="font-family:serif;display:block;margin:0 0 8px;">H3</span>${util.out('Heading 3')}</button>`,
27645
+ heading4: `<button title="${util.out('Heading 4')}" class="add-heading4"><span style="font-family:serif;display:block;margin:0 0 8px;">H4</span>${util.out('Heading 4')}</button>`,
27646
+ quote: `<button title="${util.out('Quote')}" class="add-quote"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-quote"></use></svg></span>${util.out('Quote')}</button>`,
27647
+ preformatted: `<button style="display:none" title="${util.out('Preformatted')}" class="add-preformatted"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-code"></use></svg></span>${util.out('Preformatted')}</button>`,
27648
+ button: `<button title="${util.out('Button')}" class="add-button"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;border:#a1a1a1 1px solid;background:#f3f3f3;width:10px;height:4px;"></span></span>${util.out('Button')}</button>`,
27649
+ twobutton: `<button title="${util.out('Two Button')}" class="add-twobutton"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;border:#a1a1a1 1px solid;background:#f3f3f3;width:10px;height:4px;"></span></span>${util.out('Two Button')}</button>`,
27650
+ map: `<button title="${util.out('Map')}" class="add-map"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-location"></use></svg></use></svg></svg></span>${util.out('Map')}</button>`,
27651
+ youtube: `<button title="${util.out('Youtube')}" class="add-youtube"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-social-youtube-outline"></use></svg></use></svg></svg></span>${util.out('Youtube')}</button>`,
27652
+ video: `<button title="${util.out('Video')}" class="add-video"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-ios-play"></use></svg></use></svg></svg></span>${util.out('Video')}</button>`,
27653
+ audio: `<button title="${util.out('Audio')}" class="add-audio"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-volume-medium"></use></svg></use></svg></svg></span>${util.out('Audio')}</button>`,
27654
+ icon: `<button title="${util.out('Icon')}" class="add-icon"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-android-happy"></use></svg></use></svg></svg></span>${util.out('Icon')}</button>`,
27655
+ svg: `<button title="${util.out('SVG')}" class="add-svg"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-5px"><use xlink:href="#icon-svg"></use></svg></use></svg></svg></span>${util.out('SVG')}</button>`,
27656
+ table: `<button title="${util.out('Table')}" class="add-table"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#icon-table"></use></svg></use></svg></svg></span>${util.out('Table')}</button>`,
27657
+ social: `<button title="${util.out('Social Links')}" class="add-social"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-social-twitter"></use></svg></use></svg></svg></span>${util.out('Social Links')}</button>`,
27658
+ code: `<button title="${util.out('HTML/JS')}" class="add-code"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-code"></use></svg></use></svg></svg></span>${util.out('HTML/JS')}</button>`,
27659
+ spacer: `<button title="${util.out('Spacer')}" class="add-spacer"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;background:#eee;width:30px;height:5px;"></span></span>${util.out('Spacer')}</button>`,
27660
+ form: `<button title="${util.out('Form')}" class="add-form"><span style="display:block;margin:0 0 8px;">
27661
+ <svg xmlns="http://www.w3.org/2000/svg" style="width:18px;height:18px;fill:none" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-forms"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3" /><path d="M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3" /><path d="M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7" /><path d="M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1" /><path d="M17 12h.01" /><path d="M13 12h.01" /></svg>
27662
+ </span>${util.out('Form')}</button>`,
27663
+ line: `<button title="${util.out('Line')}" class="add-line"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;background:#ddd;width:30px;height:2px;"></span></span>${util.out('Line')}</button>`
27664
+ };
27665
+
27666
+ // Filter buttons (backward compatibility)
27667
+ const filteredButtons = quickAddButtons.filter(item => {
27668
+ if (builder.opts.emailMode && item === 'button') return false;
27669
+ if (builder.opts.emailMode && item === 'twobutton') return false;
27670
+ if (!builder.quickAddButtons) {
27671
+ // if not custom specified by user
27672
+ if (!builder.win.FormViewer && item === 'form') return false; // hide 'form' if FormViewer object not found
27673
+ if (builder.win.FormViewer && item === 'svg') return false; // hide 'svg' if 'form' enabled.
27674
+ }
27675
+
27676
+ return true;
27677
+ });
27678
+ let buttonsHtml = filteredButtons.map(item => buttonTemplates[item] || '').join('');
27620
27679
  let quickadd = builderStuff.querySelector('.quickadd');
27621
27680
  if (!quickadd) {
27622
27681
  const html = `<div class="is-pop quickadd arrow-right" style="z-index:10003;" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
@@ -27626,34 +27685,11 @@ const renderQuickAdd = builder => {
27626
27685
  <div class="is-pop-tab-item active" data-value="right">${util.out('Add to Right')}</div>
27627
27686
  </div>
27628
27687
  <div style="padding:12px;display:flex;flex-direction:row;flex-flow: wrap;justify-content: center;align-items: center;">
27629
- <button title="${util.out('Paragraph')}" class="add-paragraph"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#icon-align-full"></use></svg></span>${util.out('Paragraph')}</button>
27630
- <button title="${util.out('Headline')}" class="add-headline"><span style="font-family:serif;display:block;margin:0 0 8px;font-size:11px;">H</span>${util.out('Headline')}</button>
27631
- <button title="${util.out('Image')}" class="add-image"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex ion-image" style="width:14px;height:14px;"><use xlink:href="#ion-image"></use></svg></span>${util.out('Image')}</button>
27632
- <button title="${util.out('List')}" class="add-list"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-list-bullet"></use></svg></span>${util.out('List')}</button>
27633
- <button title="${util.out('Heading 1')}" class="add-heading1"><span style="font-family:serif;display:block;margin:0 0 8px;">H1</span>${util.out('Heading 1')}</button>
27634
- <button title="${util.out('Heading 2')}" class="add-heading2"><span style="font-family:serif;display:block;margin:0 0 8px;">H2</span>${util.out('Heading 2')}</button>
27635
- <button title="${util.out('Heading 3')}" class="add-heading3"><span style="font-family:serif;display:block;margin:0 0 8px;">H3</span>${util.out('Heading 3')}</button>
27636
- <button title="${util.out('Heading 4')}" class="add-heading4"><span style="font-family:serif;display:block;margin:0 0 8px;">H4</span>${util.out('Heading 4')}</button>
27637
- <button title="${util.out('Quote')}" class="add-quote"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-quote"></use></svg></span>${util.out('Quote')}</button>
27638
- <button style="display:none" title="${util.out('Preformatted')}" class="add-preformatted"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-code"></use></svg></span>${util.out('Preformatted')}</button>
27639
- ${builder.opts.emailMode ? '' : `<button title="${util.out('Button')}" class="add-button"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;border:#a1a1a1 1px solid;background:#f3f3f3;width:10px;height:4px;"></span></span>${util.out('Button')}</button>`}
27640
- ${builder.opts.emailMode ? '' : `<button title="${util.out('Two Button')}" class="add-twobutton"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;border:#a1a1a1 1px solid;background:#f3f3f3;width:10px;height:4px;"></span></span>${util.out('Two Button')}</button>`}
27641
- <button title="${util.out('Map')}" class="add-map"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-location"></use></svg></use></svg></svg></span>${util.out('Map')}</button>
27642
- <button title="${util.out('Youtube')}" class="add-youtube"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-social-youtube-outline"></use></svg></use></svg></svg></span>${util.out('Youtube')}</button>
27643
- <button title="${util.out('Video')}" class="add-video"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-ios-play"></use></svg></use></svg></svg></span>${util.out('Video')}</button>
27644
- <button style="display:none" title="${util.out('Audio')}" class="add-audio"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-volume-medium"></use></svg></use></svg></svg></span>${util.out('Audio')}</button>
27645
- <button title="${util.out('Icon')}" class="add-icon"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-android-happy"></use></svg></use></svg></svg></span>${util.out('Icon')}</button>
27646
- <button title="${util.out('SVG')}" class="add-svg"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-5px"><use xlink:href="#icon-svg"></use></svg></use></svg></svg></span>${util.out('SVG')}</button>
27647
- <button title="${util.out('Table')}" class="add-table"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#icon-table"></use></svg></use></svg></svg></span>${util.out('Table')}</button>
27648
- <button title="${util.out('Social Links')}" class="add-social"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-social-twitter"></use></svg></use></svg></svg></span>${util.out('Social Links')}</button>
27649
- <button title="${util.out('HTML/JS')}" class="add-code"><span style="display:block;margin:0 0 8px;"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-code"></use></svg></use></svg></svg></span>${util.out('HTML/JS')}</button>
27650
- <button title="${util.out('Spacer')}" class="add-spacer"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;background:#eee;width:30px;height:5px;"></span></span>${util.out('Spacer')}</button>
27651
- <button style="display:none" title="${util.out('Line')}" class="add-line"><span style="display:block;margin:0 0 8px;"><span style="display:inline-block;background:#ddd;width:30px;height:2px;"></span></span>${util.out('Line')}</button>
27652
- <div class="pop-separator"></div>
27653
- <button title="${util.out('More...')}" class="add-more" style="flex-direction:initial;">${util.out('More...')}</button>
27654
- </div>
27688
+ ${buttonsHtml}
27689
+ <div class="pop-separator" ${builder.noSnippets ? ' style="display:none"' : ''}></div>
27690
+ <button title="${util.out('More...')}" class="add-more" style="flex-direction:initial;${builder.noSnippets ? 'display:none' : ''}">${util.out('More...')}</button>
27655
27691
  </div>
27656
- `;
27692
+ </div>`;
27657
27693
  dom.appendHtml(builderStuff, html);
27658
27694
  quickadd = builderStuff.querySelector('.quickadd');
27659
27695
  let tabs = quickadd.querySelectorAll('.is-pop-tab-item');
@@ -27753,7 +27789,7 @@ const renderQuickAdd = builder => {
27753
27789
  util.addContent(html, mode);
27754
27790
  });
27755
27791
  elm = quickadd.querySelector('.add-button');
27756
- if (elm) dom.addEventListener(elm, 'click', () => {
27792
+ dom.addEventListener(elm, 'click', () => {
27757
27793
  const mode = quickadd.getAttribute('data-mode');
27758
27794
  let html = `<div>
27759
27795
  <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 size-17 px-6 text-black leading-14 rounded border-transparent hover:border-transparent font-normal tracking-wide" style="background-color: rgb(240, 240, 240);">Read More</a>
@@ -27764,7 +27800,7 @@ const renderQuickAdd = builder => {
27764
27800
  util.addContent(html, mode);
27765
27801
  });
27766
27802
  elm = quickadd.querySelector('.add-twobutton');
27767
- if (elm) dom.addEventListener(elm, 'click', () => {
27803
+ dom.addEventListener(elm, 'click', () => {
27768
27804
  const mode = quickadd.getAttribute('data-mode');
27769
27805
  let html = `<div>
27770
27806
  <a href="#" role="button" class="transition-all inline-block whitespace-nowrap cursor-pointer no-underline border-2 border-solid mr-2 mt-2 mb-1 py-2 size-17 px-6 text-black leading-14 rounded border-transparent hover:border-transparent font-normal tracking-wide" style="background-color: rgb(240, 240, 240);">Read More</a>
@@ -27834,6 +27870,286 @@ const renderQuickAdd = builder => {
27834
27870
  }
27835
27871
  builder.addSnippet(html, bSnippet, noedit);
27836
27872
  });
27873
+ elm = quickadd.querySelector('.add-form');
27874
+ dom.addEventListener(elm, 'click', () => {
27875
+ // const mode = quickadd.getAttribute('data-mode');
27876
+
27877
+ let html = `
27878
+ <div class="row">
27879
+ <div class="column" data-noedit
27880
+ data-dialog-width="1600px"
27881
+ data-dialog-height="85vh"
27882
+ data-module="form-builder"
27883
+ data-module-desc="Form Builder"
27884
+ data-html="
27885
+
27886
+ ${encodeURIComponent(`
27887
+ <div id="_style_{id}" style="display:none">
27888
+ .animate-spin {
27889
+ animation: spin 1s linear infinite;
27890
+ }
27891
+ @keyframes spin {
27892
+ from {
27893
+ transform: rotate(0deg);
27894
+ }
27895
+ to {
27896
+ transform: rotate(360deg);
27897
+ }
27898
+ }
27899
+ </div>
27900
+ <form id="form_{id}" method="POST" action="/formsubmission" style="padding: 25px 0 20px">
27901
+ <div id="{id}"></div>
27902
+
27903
+ <div id="status_{id}"></div>
27904
+ </form>
27905
+
27906
+ <script>
27907
+ var css = document.querySelector('#_style_{id}').innerHTML;
27908
+ var head = document.getElementsByTagName('head')[0];
27909
+ var s = document.createElement('style');
27910
+ s.appendChild(document.createTextNode(css));
27911
+ head.appendChild(s);
27912
+
27913
+ var docReady = function(fn) {
27914
+ var stateCheck = setInterval(function() {
27915
+ if (document.readyState !== "complete") return;
27916
+ clearInterval(stateCheck);
27917
+ try {
27918
+ fn()
27919
+ } catch (e) {}
27920
+ }, 1);
27921
+ };
27922
+
27923
+ docReady(function() {
27924
+
27925
+ var elm = document.getElementById('{id}');
27926
+ var viewer = new FormViewer(elm, {
27927
+ onChange: (json) => {
27928
+ // console.log(json);
27929
+ },
27930
+ formHeader: true,
27931
+ });
27932
+
27933
+ let json = {
27934
+ "title": "Register for the Tech Conference",
27935
+ "description": "Join us for an insightful and engaging experience.",
27936
+ "elements": [
27937
+ {
27938
+ "title": "Full Name:",
27939
+ "name": "full_name",
27940
+ "type": "short-text",
27941
+ "isRequired": true,
27942
+ "placeholder": "Enter your full name"
27943
+ },
27944
+ {
27945
+ "title": "Ticket Type:",
27946
+ "name": "ticket_type",
27947
+ "type": "select",
27948
+ "isRequired": true,
27949
+ "choices": [
27950
+ "Standard Admission",
27951
+ "VIP Admission",
27952
+ "Student Discount"
27953
+ ]
27954
+ },
27955
+ {
27956
+ "title": "Select the sessions you’re interested in:",
27957
+ "name": "select_the_sessions_youre_interested_in",
27958
+ "type": "multi-select",
27959
+ "choices": [
27960
+ "Keynote Speech",
27961
+ "AI Workshop",
27962
+ "Networking Session"
27963
+ ]
27964
+ },
27965
+ {
27966
+ "title": "Are you attending the networking dinner?",
27967
+ "name": "are_you_attending_the_networking_dinner",
27968
+ "type": "switch"
27969
+ },
27970
+ {
27971
+ "title": "Email:",
27972
+ "name": "email",
27973
+ "type": "email",
27974
+ "isRequired": true,
27975
+ "placeholder": "Enter your email"
27976
+ }
27977
+ ],
27978
+ "useSubmitButton": true,
27979
+ "submitText": "Submit"
27980
+ };
27981
+
27982
+ viewer.view(json); // Render form
27983
+
27984
+ const form = document.querySelector('#form_{id}');
27985
+
27986
+ var statusInfo = document.querySelector('#status_{id}');
27987
+
27988
+ /*
27989
+ form.addEventListener('submit', async (event) => {
27990
+
27991
+ event.preventDefault();
27992
+
27993
+ const form = event.target;
27994
+ const formData = new FormData(form);
27995
+
27996
+ fetch('/formsubmission', {
27997
+ method: 'POST',
27998
+ body: formData,
27999
+ })
28000
+ .then(response=>response.json())
28001
+ .then(response=>{
28002
+ console.log(response);
28003
+ });
28004
+ });
28005
+ */
28006
+
28007
+ async function handleSubmit(event) {
28008
+ event.preventDefault();
28009
+
28010
+ const btnSend = event.target;
28011
+
28012
+ btnSend.innerHTML = '<span class="loading-icon"><svg class="animate-spin" style="margin-right:7px;width:20px;height:20px" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg></span>Submit';
28013
+
28014
+ var data = new FormData(event.target);
28015
+ fetch(event.target.action, {
28016
+ method: form.method,
28017
+ body: data,
28018
+ headers: {
28019
+ 'Accept': 'application/json'
28020
+ }
28021
+ }).then(response => {
28022
+ if (response.ok) {
28023
+ statusInfo.innerHTML = '<div class="text-center pt-4"><i class="bi bi-send-check size-64"></i>' +
28024
+ '</div><div class="leading-11 text-center size-38 pb-4">Thanks for your submission!</div>';
28025
+ form.reset();
28026
+ } else {
28027
+ response.json().then(data => {
28028
+ if (Object.hasOwn(data, 'errors')) {
28029
+ statusInfo.innerHTML = data['errors'].map(error => error['message']).join(', ');
28030
+ } else {
28031
+ statusInfo.innerHTML = '<div class="leading-11 text-center size-38 pt-4 pb-4">Oops! There was a problem submitting your form.</div>';
28032
+ }
28033
+ });
28034
+ }
28035
+
28036
+ btnSend.innerHTML = 'Submit';
28037
+ }).catch(error => {
28038
+ statusInfo.innerHTML = '<div class="leading-11 text-center size-38 pt-4 pb-4">Oops! There was a problem submitting your form.</div>';
28039
+
28040
+ btnSend.innerHTML = 'Submit';
28041
+ });
28042
+ }
28043
+
28044
+ viewer.settings.onSubmit = handleSubmit;
28045
+
28046
+ });
28047
+ </script>
28048
+
28049
+ `)}
28050
+
28051
+ "
28052
+
28053
+ data-settings="
28054
+
28055
+ ${encodeURIComponent(`
28056
+ {
28057
+ "json": {
28058
+ "title": "Register for the Tech Conference",
28059
+ "description": "Join us for an insightful and engaging experience.",
28060
+ "elements": [
28061
+ {
28062
+ "title": "Full Name:",
28063
+ "name": "full_name",
28064
+ "type": "short-text",
28065
+ "isRequired": true,
28066
+ "placeholder": "Enter your full name"
28067
+ },
28068
+ {
28069
+ "title": "Ticket Type:",
28070
+ "name": "ticket_type",
28071
+ "type": "select",
28072
+ "isRequired": true,
28073
+ "choices": [
28074
+ "Standard Admission",
28075
+ "VIP Admission",
28076
+ "Student Discount"
28077
+ ]
28078
+ },
28079
+ {
28080
+ "title": "Select the sessions you’re interested in:",
28081
+ "name": "select_the_sessions_youre_interested_in",
28082
+ "type": "multi-select",
28083
+ "choices": [
28084
+ "Keynote Speech",
28085
+ "AI Workshop",
28086
+ "Networking Session"
28087
+ ]
28088
+ },
28089
+ {
28090
+ "title": "Are you attending the networking dinner?",
28091
+ "name": "are_you_attending_the_networking_dinner",
28092
+ "type": "switch"
28093
+ },
28094
+ {
28095
+ "title": "Email:",
28096
+ "name": "email",
28097
+ "type": "email",
28098
+ "isRequired": true,
28099
+ "placeholder": "Enter your email"
28100
+ }
28101
+ ],
28102
+ "useSubmitButton": true,
28103
+ "submitText": "Submit"
28104
+ },
28105
+ "thankYouMessage": "Thanks for your submission!",
28106
+ "errorMessage": "Oops! There was a problem submitting your form.",
28107
+ "buttonText": "Submit",
28108
+ "hideHeader": false,
28109
+ "formAction": "/formsubmission"
28110
+ }
28111
+ `)}
28112
+
28113
+ ">
28114
+
28115
+ </div>
28116
+ </div>
28117
+ `;
28118
+ let noedit = true;
28119
+ let bSnippet = false;
28120
+ let snippetPathReplace = builder.opts.snippetPathReplace;
28121
+
28122
+ // Convert snippet into your defined 12 columns grid
28123
+ let rowClass = builder.opts.row; //row
28124
+ let colClass = builder.opts.cols; //['col s1', 'col s2', 'col s3', 'col s4', 'col s5', 'col s6', 'col s7', 'col s8', 'col s9', 'col s10', 'col s11', 'col s12']
28125
+ if (rowClass !== '' && colClass.length === 12) {
28126
+ // html = html.replace(new RegExp('row clearfix', 'g'), rowClass);
28127
+ html = html.replace(new RegExp('row clearfix', 'g'), 'row'); // backward
28128
+ html = html.replace(new RegExp('"row', 'g'), '"' + rowClass);
28129
+ html = html.replace(new RegExp('column full', 'g'), colClass[11]);
28130
+ html = html.replace(new RegExp('column half', 'g'), colClass[5]);
28131
+ html = html.replace(new RegExp('column third', 'g'), colClass[3]);
28132
+ html = html.replace(new RegExp('column fourth', 'g'), colClass[2]);
28133
+ html = html.replace(new RegExp('column fifth', 'g'), colClass[1]);
28134
+ html = html.replace(new RegExp('column sixth', 'g'), colClass[1]);
28135
+ html = html.replace(new RegExp('column two-third', 'g'), colClass[7]);
28136
+ html = html.replace(new RegExp('column two-fourth', 'g'), colClass[8]);
28137
+ html = html.replace(new RegExp('column two-fifth', 'g'), colClass[9]);
28138
+ html = html.replace(new RegExp('column two-sixth', 'g'), colClass[9]);
28139
+ }
28140
+ html = html.replace(/{id}/g, util.makeId()); // Replace {id} with auto generated id (for custom code snippet)
28141
+
28142
+ if (builder.opts.onAdd) {
28143
+ html = builder.opts.onAdd(html);
28144
+ }
28145
+ if (snippetPathReplace.length > 0) {
28146
+ if (snippetPathReplace[0] !== '') {
28147
+ let regex = new RegExp(snippetPathReplace[0], 'g');
28148
+ html = html.replace(regex, snippetPathReplace[1]);
28149
+ }
28150
+ }
28151
+ builder.addSnippet(html, bSnippet, noedit);
28152
+ });
27837
28153
  elm = quickadd.querySelector('.add-table');
27838
28154
  dom.addEventListener(elm, 'click', () => {
27839
28155
  const mode = quickadd.getAttribute('data-mode');
@@ -31139,6 +31455,9 @@ class Util$1 {
31139
31455
  const dom = this.dom;
31140
31456
  pop.style.display = '';
31141
31457
  dom.removeClass(pop, 'active');
31458
+ this.builder.doc.activeElement.blur();
31459
+ document.activeElement.blur();
31460
+ // this.builder.doc.body.focus();
31142
31461
  pop.setAttribute('aria-hidden', true);
31143
31462
 
31144
31463
  // pop.removeEventListener('keydown', this.handlePopKeyDown);
@@ -31333,6 +31652,9 @@ class Util$1 {
31333
31652
  }
31334
31653
 
31335
31654
  hideModal(modal) {
31655
+ this.builder.doc.activeElement.blur();
31656
+ document.activeElement.blur();
31657
+ // this.builder.doc.body.focus();
31336
31658
  modal.setAttribute('aria-hidden', true);
31337
31659
 
31338
31660
  /* Disable Modal Animation */
@@ -31998,6 +32320,10 @@ class Util$1 {
31998
32320
  cellElement = rowElement.querySelector('div');
31999
32321
  if (cellElement) cellElement.click(); //change active block to the newly created
32000
32322
 
32323
+ const builderStuff = this.builder.builderStuff;
32324
+ let quickadd = builderStuff.querySelector('.quickadd');
32325
+ if (quickadd) this.hidePop(quickadd); // hide pop
32326
+
32001
32327
  // On Add Snippet from Modal
32002
32328
  const modules = this.builder.doc.querySelectorAll('.dummy-module');
32003
32329
  modules.forEach(module => {
@@ -32708,8 +33034,8 @@ class Util$1 {
32708
33034
  const newPos = this.getElementPosition(btnCellMore);
32709
33035
  let top = newPos.top;
32710
33036
  let left = newPos.left;
32711
- columnMore.style.top = top + 35 + 'px';
32712
- columnMore.style.left = left - 7 + 'px';
33037
+ columnMore.style.top = top + 35 + window.pageYOffset + 'px';
33038
+ columnMore.style.left = left - 7 + window.pageXOffset + 'px';
32713
33039
  setTimeout(() => {
32714
33040
  columnMore.classList.remove('transition1');
32715
33041
  }, 300);
@@ -41970,7 +42296,7 @@ const prepareSvgIcons = builder => {
41970
42296
  <path d="M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"></path>
41971
42297
  </symbol>
41972
42298
 
41973
- <symbol id="icon-reload" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42299
+ <symbol id="icon-reload" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
41974
42300
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
41975
42301
  <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
42302
  <path d="M20 4v5h-5"></path>
@@ -42048,7 +42374,7 @@ const prepareSvgIcons = builder => {
42048
42374
  <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
42049
42375
  <path d="M20.2 20.2l1.8 1.8"></path>
42050
42376
  </symbol>
42051
- <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42377
+ <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42052
42378
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42053
42379
  <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
42380
  <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
@@ -42227,7 +42553,7 @@ const prepareSvgIcons = builder => {
42227
42553
  <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
42554
  </symbol>
42229
42555
 
42230
- <symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42556
+ <symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42231
42557
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42232
42558
  <line x1="12" y1="5" x2="12" y2="19"></line>
42233
42559
  <line x1="5" y1="12" x2="19" y2="12"></line>
@@ -42242,6 +42568,47 @@ const prepareSvgIcons = builder => {
42242
42568
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42243
42569
  <path d="M5 12l14 0"></path>
42244
42570
  </symbol>
42571
+
42572
+ <symbol id="icon-dots2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42573
+ <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" />
42574
+ </symbol>
42575
+ <symbol id="icon-close" viewBox="0 0 24 24" stroke-width="1.6" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42576
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42577
+ <path d="M18 6l-12 12"></path>
42578
+ <path d="M6 6l12 12"></path>
42579
+ </symbol>
42580
+ <symbol id="icon-trash2" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42581
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42582
+ <path d="M4 7l16 0"></path>
42583
+ <path d="M10 11l0 6"></path>
42584
+ <path d="M14 11l0 6"></path>
42585
+ <path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>
42586
+ <path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>
42587
+ </symbol>
42588
+ <symbol id="icon-duplicate3" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42589
+ <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" />
42590
+ </symbol>
42591
+ <symbol id="icon-pencil2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42592
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42593
+ <path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4"></path>
42594
+ <line x1="13.5" y1="6.5" x2="17.5" y2="10.5"></line>
42595
+ </symbol>
42596
+ <symbol id="icon-link2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42597
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42598
+ <path d="M9 15l6 -6"></path>
42599
+ <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464"></path>
42600
+ <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>
42601
+ </symbol>
42602
+ <symbol id="icon-cog" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42603
+ <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" />
42604
+ </symbol>
42605
+ <symbol id="icon-photo" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42606
+ <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" />
42607
+ </symbol>
42608
+ <symbol id="icon-minus2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
42609
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
42610
+ <path d="M5 12l14 0"></path>
42611
+ </symbol>
42245
42612
  </svg>`;
42246
42613
  builder.dom.appendHtml(builder.builderStuff, html);
42247
42614
  };
@@ -43280,8 +43647,8 @@ class RowTool$1 {
43280
43647
  }
43281
43648
  */
43282
43649
  const newPos = this.builder.util.getElementPosition(elm);
43283
- let top = newPos.top;
43284
- let left = newPos.left;
43650
+ let top = newPos.top + window.pageYOffset;
43651
+ let left = newPos.left + window.pageXOffset;
43285
43652
 
43286
43653
  // const w = rowMore.offsetWidth;
43287
43654
  rowMore.style.top = top - 8 + 'px';
@@ -44003,14 +44370,14 @@ const renderSnippetPanel = (builder, snippetOpen) => {
44003
44370
  if (builder.opts.snippetModal) {
44004
44371
  builder.opts.snippetList = '#divSnippetWindow';
44005
44372
  let html = `
44006
- <div class="is-modal active is-modal-content snippetwindow scroll-darker" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
44373
+ <div class="is-modal active is-modal-content snippetwindow scroll-darker" tabindex="-1" role="dialog" aria-modal="true">
44007
44374
  <div class="is-modal-bar is-draggable">
44008
44375
  <button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">&#10005;</button>
44009
44376
  </div>
44010
44377
  <div id="divSnippetWindow">
44011
44378
  </div>
44012
44379
  </div>
44013
- `;
44380
+ `; // aria-hidden="true"
44014
44381
  let snippetModal = builder.builderStuff.querySelector('.is-modal.snippetwindow');
44015
44382
  if (!snippetModal) {
44016
44383
  dom.appendHtml(builder.builderStuff, html);
@@ -44019,6 +44386,9 @@ const renderSnippetPanel = (builder, snippetOpen) => {
44019
44386
  builder.draggable('.snippetwindow .is-draggable');
44020
44387
  const btnClose = snippetModal.querySelector('.is-modal-close');
44021
44388
  btnClose.addEventListener('click', () => {
44389
+ builder.doc.activeElement.blur();
44390
+ // builder.doc.body.focus();
44391
+ snippetModal.setAttribute('aria-hidden', true);
44022
44392
  snippetModal.classList.remove('active');
44023
44393
  });
44024
44394
  if (builder.snippetModalLeft) {
@@ -71644,12 +72014,14 @@ class Image$1 {
71644
72014
  let html = `
71645
72015
  <div id="divImageTool" class="is-tool">
71646
72016
  <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>
72017
+ <div style="position:absolute;width:100%;height:100%;">
72018
+ <svg class="is-icon-flex" style="position: absolute;top: 13px;left: 15px;width: 16px;height: 16px;"><use xlink:href="#ion-image"></use></svg>
72019
+ </div>
71648
72020
  <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
72021
  </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>
72022
+ <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>
72023
+ <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>
72024
+ <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
72025
  </div>
71654
72026
  <div id="divImageProgress">
71655
72027
  <div>
@@ -74989,10 +75361,18 @@ class Hyperlink {
74989
75361
  let linkTool = builderStuff.querySelector('#divLinkTool');
74990
75362
  if (!linkTool) {
74991
75363
  let html = `<div id="divLinkTool" class="is-tool">
74992
- <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>
74993
- <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>
74994
- <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>
74995
- <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>
75364
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="link-button-edit" style="display:none;">
75365
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-pencil2"></use></svg>
75366
+ </button>
75367
+ <button title="${util.out('Link')}" data-title="${util.out('Link')}" class="link-edit">
75368
+ <svg class="is-icon-flex" style="width:17px;height:17px;transform:rotate(45deg)"><use xlink:href="#icon-link2"></use></svg>
75369
+ </button>
75370
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="link-duplicate">
75371
+ <svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#icon-duplicate3"></use></svg>
75372
+ </button>
75373
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="link-remove">
75374
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-trash2"></use></svg>
75375
+ </button>
74996
75376
  </div>
74997
75377
  `;
74998
75378
  dom.appendHtml(builderStuff, html);
@@ -75584,9 +75964,15 @@ class Button {
75584
75964
  let buttonTool = builderStuff.querySelector('#divButtonTool');
75585
75965
  if (!buttonTool) {
75586
75966
  let html = `<div id="divButtonTool" class="is-tool">
75587
- <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>
75588
- <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>
75589
- <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>
75967
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="button-edit">
75968
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-pencil2"></use></svg>
75969
+ </button>
75970
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="button-duplicate">
75971
+ <svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#icon-duplicate3"></use></svg>
75972
+ </button>
75973
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="button-remove">
75974
+ <svg class="is-icon-flex" style="width:17px;height:17px;"><use xlink:href="#icon-trash2"></use></svg>
75975
+ </button>
75590
75976
  </div>
75591
75977
  `;
75592
75978
  dom.appendHtml(builderStuff, html);
@@ -75718,8 +76104,8 @@ class Spacer {
75718
76104
  if (!spacerTool) {
75719
76105
  let html = `
75720
76106
  <div id="divSpacerTool" class="is-tool is-spacer-tool">
75721
- <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#ion-ios-minus-empty"></use></svg></button>
75722
- <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>
76107
+ <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#icon-minus2"></use></svg></button>
76108
+ <button title="${util.out('Increase')}" data-value="+" style="border-left: none;"><svg class="is-icon-flex"><use xlink:href="#icon-plus"></use></svg></button>
75723
76109
  </div>
75724
76110
  `;
75725
76111
  dom.appendHtml(builderStuff, html);
@@ -75879,7 +76265,7 @@ class Module {
75879
76265
  let html = `
75880
76266
  <div class="is-tool is-module-tool">
75881
76267
  <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>
75882
- <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>
76268
+ <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>
75883
76269
  </div>
75884
76270
  `;
75885
76271
  dom.appendHtml(builderStuff, html);
@@ -75912,7 +76298,7 @@ class Module {
75912
76298
  <input id="hidContentModuleCode" type="hidden" />
75913
76299
  <input id="hidContentModuleSettings" type="hidden" />
75914
76300
 
75915
- <div class="is-modal custommodule" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
76301
+ <div class="is-modal custommodule" tabindex="-1" role="dialog" aria-modal="true">
75916
76302
  <div class="is-modal-content">
75917
76303
  <div class="is-modal-bar is-draggable">
75918
76304
  ${util.out('Module Settings')}
@@ -75925,7 +76311,8 @@ class Module {
75925
76311
  </div>
75926
76312
  </div>
75927
76313
  </div>
75928
- `;
76314
+ `; // aria-hidden="true"
76315
+
75929
76316
  dom.appendHtml(builderStuff, html);
75930
76317
  moduleModal = builderStuff.querySelector('.is-modal.custommodule');
75931
76318
  this.moduleModal = moduleModal;
@@ -76035,6 +76422,11 @@ class Module {
76035
76422
  w = '1500px';
76036
76423
  h = '80vh';
76037
76424
  }
76425
+
76426
+ // if(modulename==='form-builder') {
76427
+ // moduleModal.querySelector('div:not(.is-modal-overlay)').style.width = '90vw';
76428
+ // }
76429
+ moduleModal.querySelector('div:not(.is-modal-overlay)').style.width = '90vw';
76038
76430
  moduleModal.querySelector('div:not(.is-modal-overlay)').style.maxWidth = w;
76039
76431
  moduleModal.querySelector('div:not(.is-modal-overlay)').style.height = h;
76040
76432
  let btnClose = moduleModal.querySelector('.is-modal-close');
@@ -76129,7 +76521,7 @@ class Code {
76129
76521
  if (!codeTool) {
76130
76522
  let html = `
76131
76523
  <div class="is-tool is-code-tool">
76132
- <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>
76524
+ <button title="${util.out('Settings')}" data-title="${util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#icon-cog"></use></svg></button>
76133
76525
  </div>
76134
76526
  `;
76135
76527
  dom.appendHtml(builderStuff, html);
@@ -76257,7 +76649,7 @@ class Iframe {
76257
76649
  if (!iframeTool) {
76258
76650
  let html = `
76259
76651
  <div class="is-tool is-iframe-tool">
76260
- <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>
76652
+ <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>
76261
76653
  </div>
76262
76654
  `;
76263
76655
  dom.appendHtml(builderStuff, html);
@@ -76417,7 +76809,7 @@ class Table {
76417
76809
  //<div class="is-modal-bar is-draggable" style="background:#f9f9f9;"></div>
76418
76810
  let html = `
76419
76811
  <div class="is-tool is-table-tool">
76420
- <button title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
76812
+ <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>
76421
76813
  </div>
76422
76814
  `;
76423
76815
  dom.appendHtml(builderStuff, html);
@@ -76975,7 +77367,7 @@ class Video {
76975
77367
  if (!videoTool) {
76976
77368
  let html = `
76977
77369
  <div class="is-tool is-video-tool">
76978
- <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>
77370
+ <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>
76979
77371
  </div>
76980
77372
  `;
76981
77373
  dom.appendHtml(builderStuff, html);
@@ -77232,7 +77624,7 @@ class Audio {
77232
77624
  if (!audioTool) {
77233
77625
  let html = `
77234
77626
  <div class="is-tool is-audio-tool">
77235
- <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>
77627
+ <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>
77236
77628
  </div>
77237
77629
  `;
77238
77630
  dom.appendHtml(builderStuff, html);
@@ -77425,7 +77817,7 @@ class Svg {
77425
77817
  if (!svgTool) {
77426
77818
  let html = `
77427
77819
  <div class="is-tool is-svg-tool">
77428
- <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>
77820
+ <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>
77429
77821
  </div>
77430
77822
  `;
77431
77823
  dom.appendHtml(builderStuff, html);
@@ -77800,14 +78192,20 @@ class RowTool {
77800
78192
  if (!rowtool) {
77801
78193
  let html = `<div class="is-tool is-row-tool" style="${!this.builder.rowTool && this.builder.rowTool !== '' ? 'display:none;' : ''}">
77802
78194
  <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>
77803
- <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>
78195
+ <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>
77804
78196
  <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>
77805
- <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>
78197
+ <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>
77806
78198
  </div>
77807
78199
  <div class="is-tool is-col-tool">
77808
- <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>
77809
- <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>
77810
- <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>
78200
+ <button type="button" tabindex="-1" title="${util.out('Add')}" class="cell-add">
78201
+ <svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-plus"></use></svg>
78202
+ </button>
78203
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="cell-more">
78204
+ <svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-dots2"></use></svg>
78205
+ </button>
78206
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="cell-remove">
78207
+ <svg class="is-icon-flex" style="color:#fff;width:15px;height:15px;"><use xlink:href="#icon-trash2"></use></svg>
78208
+ </button>
77811
78209
  </div>
77812
78210
  `;
77813
78211
  dom.appendHtml(row, html);
@@ -77965,20 +78363,20 @@ class RowTool {
77965
78363
  const separator = columnMore.querySelector('.is-separator');
77966
78364
  let nogrid = cell.closest('[nogrid]'); //dom.parentsHasAttribute(col, 'nogrid');
77967
78365
  if (nogrid) {
77968
- btnPrev.style.display = 'none';
77969
- btnNext.style.display = 'none';
77970
- btnUp.style.display = 'none';
77971
- btnDown.style.display = 'none';
78366
+ if (btnPrev) btnPrev.style.display = 'none';
78367
+ if (btnNext) btnNext.style.display = 'none';
78368
+ if (btnUp) btnUp.style.display = 'none';
78369
+ if (btnDown) btnDown.style.display = 'none';
77972
78370
  if (btnIncrease) btnIncrease.style.display = 'none';
77973
78371
  if (btnDecrease) btnDecrease.style.display = 'none';
77974
- btnDuplicate.style.display = 'none';
77975
- btnPrev.setAttribute('disabled', 'disabled');
77976
- btnNext.setAttribute('disabled', 'disabled');
77977
- btnUp.setAttribute('disabled', 'disabled');
77978
- btnDown.setAttribute('disabled', 'disabled');
77979
- btnIncrease.setAttribute('disabled', 'disabled');
77980
- btnDecrease.setAttribute('disabled', 'disabled');
77981
- btnDuplicate.setAttribute('disabled', 'disabled');
78372
+ if (btnDuplicate) btnDuplicate.style.display = 'none';
78373
+ if (btnPrev) btnPrev.setAttribute('disabled', 'disabled');
78374
+ if (btnNext) btnNext.setAttribute('disabled', 'disabled');
78375
+ if (btnUp) btnUp.setAttribute('disabled', 'disabled');
78376
+ if (btnDown) btnDown.setAttribute('disabled', 'disabled');
78377
+ if (btnIncrease) btnIncrease.setAttribute('disabled', 'disabled');
78378
+ if (btnDecrease) btnDecrease.setAttribute('disabled', 'disabled');
78379
+ if (btnDuplicate) btnDuplicate.setAttribute('disabled', 'disabled');
77982
78380
  let btnColHtml = columnMore.querySelector('.cell-html');
77983
78381
  if (btnColHtml) btnColHtml.style.display = '';
77984
78382
  if (cell.getAttribute('data-html')) {
@@ -77988,20 +78386,20 @@ class RowTool {
77988
78386
  this.columnTool.querySelector('.cell-more').setAttribute('disabled', 'disabled');
77989
78387
  }
77990
78388
  } else {
77991
- btnPrev.style.display = '';
77992
- btnNext.style.display = '';
77993
- btnUp.style.display = '';
77994
- btnDown.style.display = '';
78389
+ if (btnPrev) btnPrev.style.display = '';
78390
+ if (btnNext) btnNext.style.display = '';
78391
+ if (btnUp) btnUp.style.display = '';
78392
+ if (btnDown) btnDown.style.display = '';
77995
78393
  if (btnIncrease) btnIncrease.style.display = '';
77996
78394
  if (btnDecrease) btnDecrease.style.display = '';
77997
- btnDuplicate.style.display = '';
77998
- btnPrev.removeAttribute('disabled');
77999
- btnNext.removeAttribute('disabled');
78000
- btnUp.removeAttribute('disabled');
78001
- btnDown.removeAttribute('disabled');
78395
+ if (btnDuplicate) btnDuplicate.style.display = '';
78396
+ if (btnPrev) btnPrev.removeAttribute('disabled');
78397
+ if (btnNext) btnNext.removeAttribute('disabled');
78398
+ if (btnUp) btnUp.removeAttribute('disabled');
78399
+ if (btnDown) btnDown.removeAttribute('disabled');
78002
78400
  if (btnIncrease) btnIncrease.removeAttribute('disabled');
78003
78401
  if (btnDecrease) btnDecrease.removeAttribute('disabled');
78004
- btnDuplicate.removeAttribute('disabled');
78402
+ if (btnDuplicate) btnDuplicate.removeAttribute('disabled');
78005
78403
  let btnColHtml = columnMore.querySelector('.cell-html');
78006
78404
  if (btnColHtml) {
78007
78405
  btnColHtml.style.display = '';
@@ -78015,21 +78413,21 @@ class RowTool {
78015
78413
 
78016
78414
  if (row.childElementCount - num === 1) {
78017
78415
  //-num => minus is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
78018
- btnPrev.style.display = 'none';
78019
- btnNext.style.display = 'none';
78416
+ if (btnPrev) btnPrev.style.display = 'none';
78417
+ if (btnNext) btnNext.style.display = 'none';
78020
78418
  if (btnIncrease) btnIncrease.style.display = 'none';
78021
78419
  if (btnDecrease) btnDecrease.style.display = 'none';
78022
- btnPrev.setAttribute('disabled', 'disabled');
78023
- btnNext.setAttribute('disabled', 'disabled');
78420
+ if (btnPrev) btnPrev.setAttribute('disabled', 'disabled');
78421
+ if (btnNext) btnNext.setAttribute('disabled', 'disabled');
78024
78422
  if (btnIncrease) btnIncrease.setAttribute('disabled', 'disabled');
78025
78423
  if (btnDecrease) btnDecrease.setAttribute('disabled', 'disabled');
78026
78424
  } else {
78027
- btnPrev.style.display = '';
78028
- btnNext.style.display = '';
78425
+ if (btnPrev) btnPrev.style.display = '';
78426
+ if (btnNext) btnNext.style.display = '';
78029
78427
  if (btnIncrease) btnIncrease.style.display = '';
78030
78428
  if (btnDecrease) btnDecrease.style.display = '';
78031
- btnPrev.removeAttribute('disabled');
78032
- btnNext.removeAttribute('disabled');
78429
+ if (btnPrev) btnPrev.removeAttribute('disabled');
78430
+ if (btnNext) btnNext.removeAttribute('disabled');
78033
78431
  if (btnIncrease) btnIncrease.removeAttribute('disabled');
78034
78432
  if (btnDecrease) btnDecrease.removeAttribute('disabled');
78035
78433
  }
@@ -78057,18 +78455,18 @@ class RowTool {
78057
78455
  }
78058
78456
  }
78059
78457
  if (cell.classList.contains('column-lock')) {
78060
- btnPrev.style.display = 'none';
78061
- btnNext.style.display = 'none';
78062
- btnUp.style.display = 'none';
78063
- btnDown.style.display = 'none';
78064
- btnIncrease.style.display = 'none';
78065
- btnDecrease.style.display = 'none';
78066
- btnDuplicate.style.display = 'none';
78067
- separator.style.display = 'none';
78068
- btnLock.style.display = 'none';
78458
+ if (btnPrev) btnPrev.style.display = 'none';
78459
+ if (btnNext) btnNext.style.display = 'none';
78460
+ if (btnUp) btnUp.style.display = 'none';
78461
+ if (btnDown) btnDown.style.display = 'none';
78462
+ if (btnIncrease) btnIncrease.style.display = 'none';
78463
+ if (btnDecrease) btnDecrease.style.display = 'none';
78464
+ if (btnDuplicate) btnDuplicate.style.display = 'none';
78465
+ if (separator) separator.style.display = 'none';
78466
+ if (btnLock) btnLock.style.display = 'none';
78069
78467
  } else {
78070
- separator.style.display = '';
78071
- btnLock.style.display = '';
78468
+ if (separator) separator.style.display = '';
78469
+ if (btnLock) btnLock.style.display = '';
78072
78470
  }
78073
78471
  });
78074
78472
  const btnCellRemove = coltool.querySelector('.cell-remove');
@@ -78196,20 +78594,33 @@ class RowTool {
78196
78594
  const util = this.builder.util;
78197
78595
  const dom = this.builder.dom;
78198
78596
  let rowMore = builderStuff.querySelector('.rowmore');
78199
- let htmlbutton = '';
78200
- if (builder.opts.rowHtmlEditor) htmlbutton = `<button type="button" title="${util.out('HTML')}" class="row-html">
78201
- <span><svg class="is-icon-flex" style="margin-right:-3px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></span>${util.out('HTML')}
78202
- </button>`;
78203
78597
  if (!rowMore) {
78598
+ let rowMoreButtons = ['moveup', 'movedown', 'duplicate', 'html', 'separator', 'lock', 'settings']; // default
78599
+
78600
+ if (builder.rowMoreButtons) {
78601
+ rowMoreButtons = builder.rowMoreButtons;
78602
+ }
78603
+ const buttonTemplates = {
78604
+ moveup: `<button style="flex: 1 1 calc(50% - 10px);" type="button" title="${util.out('Move Up')}" class="row-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>`,
78605
+ movedown: `<button style="flex: 1 1 calc(50% - 10px);" type="button" title="${util.out('Move Down')}" class="row-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>`,
78606
+ duplicate: `<button style="flex: 1 1 calc(50% - 10px);" type="button" title="${util.out('Duplicate')}" class="row-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>`,
78607
+ html: `<button style="flex: 1 1 calc(50% - 10px);" type="button" title="${util.out('HTML')}" class="row-html">
78608
+ <span><svg class="is-icon-flex" style="margin-right:-3px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></span>${util.out('HTML')}
78609
+ </button>`,
78610
+ separator: '<div class="is-separator"></div>',
78611
+ lock: `<button style="flex: 1 1 calc(50% - 10px);" 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>`,
78612
+ settings: `<button style="flex: 1 1 calc(50% - 10px);" 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>`
78613
+ };
78614
+
78615
+ // Filter buttons
78616
+ const filteredButtons = rowMoreButtons.filter(item => {
78617
+ if (!builder.opts.rowHtmlEditor && item === 'html') return false;
78618
+ return true;
78619
+ });
78620
+ let buttonsHtml = filteredButtons.map(item => buttonTemplates[item] || '').join('');
78204
78621
  let html = `<div class="is-pop rowmore" style="z-index:10002;" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
78205
78622
  <div style="display:flex;flex-flow:wrap;">
78206
- <button type="button" title="${util.out('Move Up')}" class="row-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>
78207
- <button type="button" title="${util.out('Move Down')}" class="row-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>
78208
- <button type="button" title="${util.out('Duplicate')}" class="row-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>
78209
- ${htmlbutton}
78210
- <div class="is-separator"></div>
78211
- <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>
78212
- <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>
78623
+ ${buttonsHtml}
78213
78624
  </div>
78214
78625
  </div>
78215
78626
  `;
@@ -79672,39 +80083,40 @@ class ColumnTool {
79672
80083
  const dom = this.builder.dom;
79673
80084
  this.grid = new Grid(builder);
79674
80085
  let columnMore = builderStuff.querySelector('.is-pop.columnmore');
79675
- let resizebutton = `
79676
- <button type="button" title="${util.out('Increase')}" class="cell-increase"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-increase"></use></svg></span>${util.out('Increase')}</button>
79677
- <button type="button" title="${util.out('Decrease')}" class="cell-decrease"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-decrease"></use></svg></span>${util.out('Decrease')}</button>
79678
- `;
79679
- let htmlbutton = '';
79680
- if (builder.opts.columnHtmlEditor) htmlbutton = `<button type="button" title="${util.out('HTML')}" class="cell-html">
79681
- <span><svg class="is-icon-flex" style="margin-right:-3px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></span>${util.out('HTML')}
79682
- </button>`;
79683
80086
  if (!columnMore) {
80087
+ let columnMoreButtons = ['moveleft', 'moveright', 'moveup', 'movedown', 'increase', 'decrease', 'duplicate', 'html', 'separator', 'lock', 'settings']; // default
80088
+
80089
+ if (builder.columnMoreButtons) {
80090
+ columnMoreButtons = builder.columnMoreButtons;
80091
+ }
80092
+ const buttonTemplates = {
80093
+ moveleft: `<button type="button" title="${util.out('Move Left')}" class="cell-prev" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#ion-ios-arrow-thin-left"></use></svg></span>${util.out('Move Left')}</button>`,
80094
+ moveright: `<button type="button" title="${util.out('Move Right')}" class="cell-next" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#ion-ios-arrow-thin-right"></use></svg></span>${util.out('Move Right')}</button>`,
80095
+ moveup: `<button type="button" title="${util.out('Move Up')}" class="cell-up" style="flex: 1 1 calc(50% - 10px);"><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>`,
80096
+ movedown: `<button type="button" title="${util.out('Move Down')}" class="cell-down" style="flex: 1 1 calc(50% - 10px);"><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>`,
80097
+ increase: `<button type="button" title="${util.out('Increase')}" class="cell-increase" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-increase"></use></svg></span>${util.out('Increase')}</button>`,
80098
+ decrease: `<button type="button" title="${util.out('Decrease')}" class="cell-decrease" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-decrease"></use></svg></span>${util.out('Decrease')}</button>`,
80099
+ duplicate: `<button type="button" title="${util.out('Duplicate')}" class="cell-duplicate" style="flex: 1 1 calc(50% - 10px);"><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>`,
80100
+ html: `<button type="button" title="${util.out('HTML')}" class="cell-html" style="flex: 1 1 calc(50% - 10px);">
80101
+ <span><svg class="is-icon-flex" style="margin-right:-3px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:12px;height:12px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></span>${util.out('HTML')}
80102
+ </button>`,
80103
+ separator: '<div class="is-separator"></div>',
80104
+ lock: `<button type="button" title="${util.out('Lock')}" class="cell-locking" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-lock"></use></svg></span>${util.out('Lock')}</button>`,
80105
+ settings: `<button type="button" title="${util.out('Settings')}" class="cell-settings" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-cog"></use></svg></span>${util.out('Settings')}</button>`
80106
+ };
80107
+
80108
+ // Filter buttons
80109
+ const filteredButtons = columnMoreButtons.filter(item => {
80110
+ if (!builder.opts.columnHtmlEditor && item === 'html') return false;
80111
+ return true;
80112
+ });
80113
+ let buttonsHtml = filteredButtons.map(item => buttonTemplates[item] || '').join('');
80114
+
79684
80115
  // Refer to .is-col-tool in in rowtool.js
79685
80116
  let html = `
79686
80117
  <div class="is-pop columnmore" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
79687
80118
  <div style="display:flex;flex-flow:wrap;">
79688
- <button type="button" title="${util.out('Move Left')}" class="cell-prev"><span><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#ion-ios-arrow-thin-left"></use></svg></span>${util.out('Move Left')}</button>
79689
- <button type="button" title="${util.out('Move Right')}" class="cell-next"><span><svg class="is-icon-flex" style="width:15px;height:15px;"><use xlink:href="#ion-ios-arrow-thin-right"></use></svg></span>${util.out('Move Right')}</button>
79690
- <button type="button" title="${util.out('Move Up')}" class="cell-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>
79691
- <button type="button" title="${util.out('Move Down')}" class="cell-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>
79692
- ${resizebutton}
79693
- <button type="button" title="${util.out('Duplicate')}" class="cell-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>
79694
- ${htmlbutton}
79695
- <div class="is-separator"></div>
79696
- <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>
79697
- <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>
79698
-
79699
- <!--
79700
- <button title="${util.out('Lock')}" class="cell-locking">
79701
- <svg class="is-icon-flex"><use xlink:href="#icon-lock"></use></svg>
79702
- </button>
79703
- <button title="${util.out('Settings')}" class="cell-settings">
79704
- <svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg>
79705
- <span>${util.out('Settings')}</span>
79706
- </button>
79707
- -->
80119
+ ${buttonsHtml}
79708
80120
  </div>
79709
80121
  </div>
79710
80122
  `;
@@ -86684,20 +87096,42 @@ class ElementTool {
86684
87096
  let elementTool = builderStuff.querySelector('.is-element-tool');
86685
87097
  let elementMore = builderStuff.querySelector('.elmmore');
86686
87098
  if (!elementTool) {
87099
+ let elementMoreButtons = ['moveup', 'movedown', 'duplicate', 'settings']; // default
87100
+
87101
+ if (builder.elementMoreButtons) {
87102
+ elementMoreButtons = builder.elementMoreButtons;
87103
+ }
87104
+ const buttonTemplates = {
87105
+ moveup: `<button type="button" title="${util.out('Move Up')}" class="elm-up" style="flex: 1 1 calc(50% - 10px);"><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>`,
87106
+ movedown: `<button type="button" title="${util.out('Move Down')}" class="elm-down" style="flex: 1 1 calc(50% - 10px);"><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>`,
87107
+ duplicate: `<button type="button" title="${util.out('Duplicate')}" class="elm-duplicate" style="flex: 1 1 calc(50% - 10px);"><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>`,
87108
+ settings: `<button type="button" title="${util.out('Settings')}" class="elm-settings" style="flex: 1 1 calc(50% - 10px);"><span><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#icon-cog"></use></svg></span>${util.out('Settings')}</button>`
87109
+ };
87110
+
87111
+ // Filter buttons
87112
+ const filteredButtons = elementMoreButtons.filter(item => {
87113
+ if (!builder.opts.elementEditor && item === 'settings') return false;
87114
+ return true;
87115
+ });
87116
+ let buttonsHtml = filteredButtons.map(item => buttonTemplates[item] || '').join('');
86687
87117
  let html = `<div class="is-tool is-element-tool">
86688
- <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>
86689
- <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>
86690
- <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>
86691
- <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>
87118
+ <button type="button" tabindex="-1" title="${util.out('Add')}" class="elm-add">
87119
+ <svg class="is-icon-flex" style="width:14px;height:14px;color:#111"><use xlink:href="#icon-plus"></use></svg>
87120
+ </button>
87121
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="elm-more">
87122
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-dots2"></use></svg>
87123
+ </button>
87124
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="elm-remove">
87125
+ <svg class="is-icon-flex" style="width:15px;height:15px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
87126
+ </button>
87127
+ <button type="button" tabindex="-1" title="${util.out('Settings')}" class="elm-settings">
87128
+ <svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg>
87129
+ </button>
86692
87130
  </div>
87131
+
86693
87132
  <div class="is-pop elmmore" style="z-index:10002;" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
86694
87133
  <div style="display:flex;flex-flow:wrap;">
86695
- <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>
86696
- <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>
86697
- <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>
86698
- ${this.builder.opts.elementEditor ? `
86699
- <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>
86700
- ` : ''}
87134
+ ${buttonsHtml}
86701
87135
  </div>
86702
87136
  </div>
86703
87137
  `;
@@ -86747,7 +87181,7 @@ class ElementTool {
86747
87181
  const w = quickadd.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
86748
87182
  const h = quickadd.offsetHeight;
86749
87183
  if (viewportHeight - top > h) {
86750
- quickadd.style.top = top + window.pageYOffset + 27 + 'px';
87184
+ quickadd.style.top = top + window.pageYOffset + 42 + 'px';
86751
87185
  quickadd.style.left = left - w / 2 + 10 + 'px';
86752
87186
  dom.removeClass(quickadd, 'arrow-bottom');
86753
87187
  dom.removeClass(quickadd, 'arrow-right');
@@ -86912,7 +87346,7 @@ class ElementTool {
86912
87346
  const w = elementMore.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
86913
87347
  const h = elementMore.offsetHeight;
86914
87348
  if (viewportHeight - top > h) {
86915
- elementMore.style.top = top + window.pageYOffset + 27 + 'px';
87349
+ elementMore.style.top = top + window.pageYOffset + 42 + 'px';
86916
87350
  elementMore.style.left = left - w / 2 + 10 + 'px';
86917
87351
  dom.removeClass(elementMore, 'arrow-bottom');
86918
87352
  dom.removeClass(elementMore, 'arrow-right');
@@ -87208,6 +87642,13 @@ class ElementTool {
87208
87642
  }
87209
87643
  }
87210
87644
  }
87645
+ if (activeElement && activeElement.classList.contains('ovl') && this.builder.activeIframe) {
87646
+ activeElement = this.builder.activeIframe.closest('.embed-responsive');
87647
+ } else if (activeElement && activeElement.classList.contains('ovl')) {
87648
+ if (activeElement.parentNode.querySelector('audio')) {
87649
+ activeElement = activeElement.parentNode;
87650
+ }
87651
+ }
87211
87652
  this.builder.activeElement = activeElement;
87212
87653
  if (activeElement) {
87213
87654
  let elm = activeElement;
@@ -104803,54 +105244,83 @@ class ContentStuff$1 {
104803
105244
  constructor(builder) {
104804
105245
  this.builder = builder;
104805
105246
  const util = builder.util;
104806
- const html = `<div class="is-tool is-column-tool">
105247
+ const html = `
105248
+ <!-- not used -->
105249
+ <div class="is-tool is-column-tool">
104807
105250
  <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>
104808
105251
  <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>
104809
105252
  <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>
104810
105253
  </div>
105254
+ <!-- /not used -->
105255
+
104811
105256
  <div class="is-tool is-element-tool">
104812
- <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>
104813
- <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>
104814
- <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>
104815
- <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>
105257
+ <button type="button" tabindex="-1" title="${util.out('Add')}" class="elm-add">
105258
+ <svg class="is-icon-flex" style="width:14px;height:14px;color:#111"><use xlink:href="#icon-plus"></use></svg>
105259
+ </button>
105260
+ <button type="button" tabindex="-1" title="${util.out('More')}" class="elm-more">
105261
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-dots2"></use></svg>
105262
+ </button>
105263
+ <button type="button" tabindex="-1" title="${util.out('Delete')}" class="elm-remove">
105264
+ <svg class="is-icon-flex" style="width:15px;height:15px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
105265
+ </button>
105266
+ <button type="button" tabindex="-1" title="${util.out('Settings')}" class="elm-settings">
105267
+ <svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg>
105268
+ </button>
104816
105269
  </div>
104817
105270
 
104818
105271
  <div id="divButtonTool" class="is-tool">
104819
- <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>
104820
- <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>
104821
- <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>
105272
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="button-edit">
105273
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-pencil2"></use></svg>
105274
+ </button>
105275
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="button-duplicate">
105276
+ <svg class="is-icon-flex" style="width:16px;height:16px;color:#111"><use xlink:href="#icon-duplicate3"></use></svg>
105277
+ </button>
105278
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="button-remove">
105279
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
105280
+ </button>
104822
105281
  </div>
105282
+
104823
105283
  <div class="is-tool is-code-tool">
104824
- <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>
105284
+ <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>
104825
105285
  </div>
105286
+
104826
105287
  <div id="divLinkTool" class="is-tool">
104827
- <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>
104828
- <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>
104829
- <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>
104830
- <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>
105288
+ <button title="${util.out('Edit Button')}" data-title="${util.out('Edit Button')}" class="link-button-edit" style="display:none;">
105289
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-pencil2"></use></svg>
105290
+ </button>
105291
+ <button title="${util.out('Link')}" data-title="${util.out('Link')}" class="link-edit">
105292
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111;transform:rotate(45deg)"><use xlink:href="#icon-link2"></use></svg>
105293
+ </button>
105294
+ <button title="${util.out('Duplicate')}" data-title="${util.out('Duplicate')}" class="link-duplicate">
105295
+ <svg class="is-icon-flex" style="width:16px;height:16px;color:#111"><use xlink:href="#icon-duplicate3"></use></svg>
105296
+ </button>
105297
+ <button title="${util.out('Delete')}" data-title="${util.out('Delete')}" class="link-remove">
105298
+ <svg class="is-icon-flex" style="width:17px;height:17px;color:#111"><use xlink:href="#icon-trash2"></use></svg>
105299
+ </button>
104831
105300
  </div>
105301
+
104832
105302
  <div class="is-tool is-iframe-tool">
104833
- <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>
105303
+ <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>
104834
105304
  </div>
104835
105305
  <div class="is-tool is-module-tool">
104836
- <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>
104837
- <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>
105306
+ <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>
105307
+ <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>
104838
105308
  </div>
104839
105309
  <div class="is-tool is-svg-tool">
104840
- <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>
105310
+ <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>
104841
105311
  </div>
104842
105312
  <div id="divSpacerTool" class="is-tool is-spacer-tool">
104843
- <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#ion-ios-minus-empty"></use></svg></button>
104844
- <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>
105313
+ <button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#icon-minus2"></use></svg></button>
105314
+ <button title="${util.out('Increase')}" data-value="+" style="border-left: none;"><svg class="is-icon-flex"><use xlink:href="#icon-plus"></use></svg></button>
104845
105315
  </div>
104846
105316
  <div class="is-tool is-table-tool">
104847
- <button title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
105317
+ <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>
104848
105318
  </div>
104849
105319
  <div class="is-tool is-video-tool">
104850
- <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>
105320
+ <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>
104851
105321
  </div>
104852
105322
  <div class="is-tool is-audio-tool">
104853
- <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>
105323
+ <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>
104854
105324
  </div>
104855
105325
 
104856
105326
  <div class="is-locked-indicator">
@@ -104970,7 +105440,7 @@ class ContentStuff$1 {
104970
105440
  <symbol viewBox="0 0 512 512" id="ion-volume-medium">
104971
105441
  <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"/>
104972
105442
  </symbol>
104973
- <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105443
+ <symbol id="icon-folder2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
104974
105444
  <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
104975
105445
  <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>
104976
105446
  <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
@@ -104981,6 +105451,64 @@ class ContentStuff$1 {
104981
105451
  <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>
104982
105452
  <path d="M20 4v5h-5"></path>
104983
105453
  </symbol>
105454
+
105455
+
105456
+ <symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105457
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105458
+ <line x1="12" y1="5" x2="12" y2="19"></line>
105459
+ <line x1="5" y1="12" x2="19" y2="12"></line>
105460
+ </symbol>
105461
+ <symbol id="icon-plus2" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105462
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105463
+ <path d="M12 5l0 14"></path>
105464
+ <path d="M5 12l14 0"></path>
105465
+ </symbol>
105466
+
105467
+ <symbol id="icon-minus" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105468
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105469
+ <path d="M5 12l14 0"></path>
105470
+ </symbol>
105471
+
105472
+ <symbol id="icon-dots2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105473
+ <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" />
105474
+ </symbol>
105475
+ <symbol id="icon-close" viewBox="0 0 24 24" stroke-width="1.6" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105476
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105477
+ <path d="M18 6l-12 12"></path>
105478
+ <path d="M6 6l12 12"></path>
105479
+ </symbol>
105480
+ <symbol id="icon-trash2" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105481
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105482
+ <path d="M4 7l16 0"></path>
105483
+ <path d="M10 11l0 6"></path>
105484
+ <path d="M14 11l0 6"></path>
105485
+ <path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>
105486
+ <path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>
105487
+ </symbol>
105488
+ <symbol id="icon-duplicate3" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105489
+ <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" />
105490
+ </symbol>
105491
+ <symbol id="icon-pencil2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105492
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105493
+ <path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4"></path>
105494
+ <line x1="13.5" y1="6.5" x2="17.5" y2="10.5"></line>
105495
+ </symbol>
105496
+ <symbol id="icon-link2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105497
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105498
+ <path d="M9 15l6 -6"></path>
105499
+ <path d="M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464"></path>
105500
+ <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>
105501
+ </symbol>
105502
+ <symbol id="icon-cog" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105503
+ <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" />
105504
+ </symbol>
105505
+ <symbol id="icon-photo" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105506
+ <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" />
105507
+ </symbol>
105508
+ <symbol id="icon-minus2" viewBox="0 0 24 24" stroke-width="1.7" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
105509
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
105510
+ <path d="M5 12l14 0"></path>
105511
+ </symbol>
104984
105512
  </defs>
104985
105513
  </svg>
104986
105514
 
@@ -105174,6 +105702,9 @@ class ContentStuff$1 {
105174
105702
  }
105175
105703
 
105176
105704
  /* Tool */
105705
+
105706
+
105707
+ /*
105177
105708
  .is-tool.is-video-tool,
105178
105709
  .is-tool.is-audio-tool,
105179
105710
  .is-tool.is-iframe-tool {
@@ -105233,6 +105764,111 @@ class ContentStuff$1 {
105233
105764
  .is-tool.is-table-tool:hover {
105234
105765
  z-index:10001 !important
105235
105766
  }
105767
+ */
105768
+
105769
+
105770
+ .is-tool.is-video-tool,
105771
+ .is-tool.is-audio-tool,
105772
+ .is-tool.is-iframe-tool {
105773
+ background: rgba(255, 255, 255, 0.97) !important;
105774
+ border: transparent 1px solid;
105775
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105776
+ border-radius: 20px;
105777
+ }
105778
+
105779
+ .is-tool.is-video-tool > div,
105780
+ .is-tool.is-video-tool > button,
105781
+ .is-tool.is-audio-tool > div,
105782
+ .is-tool.is-audio-tool > button,
105783
+ .is-tool.is-iframe-tool > div,
105784
+ .is-tool.is-iframe-tool > button {
105785
+ width: 35px !important;
105786
+ height: 35px !important;
105787
+ background: transparent;
105788
+ }
105789
+
105790
+ .is-tool.is-video-tool svg,
105791
+ .is-tool.is-audio-tool svg,
105792
+ .is-tool.is-iframe-tool svg {
105793
+ width: 17px;
105794
+ height: 17px;
105795
+ fill: #111 !important;
105796
+ color: #111 !important;
105797
+ }
105798
+
105799
+ .is-tool.is-spacer-tool {
105800
+ border: none;
105801
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105802
+ border-radius: 20px;
105803
+ overflow: hidden;
105804
+ }
105805
+ .is-tool.is-spacer-tool > button {
105806
+ width: 40px;
105807
+ height: 35px;
105808
+ background: rgba(255, 255, 255, 0.97) !important;
105809
+ }
105810
+ .is-tool.is-spacer-tool > button svg {
105811
+ fill: #111 !important;
105812
+ color: #111 !important;
105813
+ }
105814
+ .is-tool.is-table-tool {
105815
+ border: none;
105816
+ background: none;
105817
+ border-radius: 20px;
105818
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105819
+ }
105820
+ .is-tool.is-table-tool:hover {
105821
+ z-index: 10001 !important;
105822
+ }
105823
+ .is-tool.is-table-tool > button {
105824
+ width: 35px;
105825
+ height: 35px;
105826
+ background: rgba(255, 255, 255, 0.9) !important;
105827
+ }
105828
+ .is-tool.is-table-tool > button svg {
105829
+ width: 17px !important;
105830
+ height: 17px !important;
105831
+ fill: #111 !important;
105832
+ color: #111 !important;
105833
+ }
105834
+ .is-tool.is-code-tool, .is-tool.is-module-tool, .is-tool.is-svg-tool {
105835
+ border: none;
105836
+ background: none;
105837
+ border-radius: 20px;
105838
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105839
+ overflow: hidden;
105840
+ }
105841
+ .is-tool.is-code-tool > button, .is-tool.is-module-tool > button, .is-tool.is-svg-tool > button {
105842
+ width: 35px;
105843
+ height: 35px;
105844
+ background: rgba(255, 255, 255, 0.9) !important;
105845
+ }
105846
+ .is-tool.is-code-tool > button svg, .is-tool.is-module-tool > button svg, .is-tool.is-svg-tool > button svg {
105847
+ width: 17px !important;
105848
+ height: 17px !important;
105849
+ fill: #111 !important;
105850
+ color: #111 !important;
105851
+ }
105852
+ .is-tool#divLinkTool, .is-tool#divButtonTool {
105853
+ background: rgba(255, 255, 255, 0.95) !important;
105854
+ box-shadow: none;
105855
+ border-radius: 20px;
105856
+ overflow: hidden;
105857
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105858
+ margin-top: -10px;
105859
+ margin-left: 7px;
105860
+ }
105861
+ .is-tool#divLinkTool button, .is-tool#divButtonTool button {
105862
+ width: 37px;
105863
+ height: 37px;
105864
+ background: transparent !important;
105865
+ }
105866
+ .is-tool#divLinkTool button svg, .is-tool#divButtonTool button svg {
105867
+ fill: #111 !important;
105868
+ color: #111 !important;
105869
+ }
105870
+
105871
+
105236
105872
 
105237
105873
 
105238
105874
  .dot {
@@ -105326,19 +105962,25 @@ class ContentStuff$1 {
105326
105962
  /* is-element-tool */
105327
105963
 
105328
105964
  .is-tool.is-element-tool {
105329
- background: rgba(243, 243, 243, 0.9);
105330
105965
  border-radius: 3px;
105331
105966
  overflow: hidden;
105967
+ margin-top: 10px;
105968
+ margin-left: 0px;
105969
+ border-radius: 100px;
105970
+ box-shadow: -1px 5px 8px 0px rgba(0, 0, 0, 0.08);
105971
+ background-color: rgba(255, 255, 255, 0.97) !important;
105332
105972
  }
105333
105973
  .is-tool.is-element-tool button {
105334
- width: 25px;
105335
- height: 25px;
105974
+ width: 32px;
105975
+ height: 31px;
105336
105976
  background: transparent;
105977
+ color: #111;
105337
105978
  }
105338
105979
  .is-tool.is-element-tool svg {
105339
105980
  width: 14px;
105340
105981
  height: 14px;
105341
- fill: #111;
105982
+ fill: #111 !important;
105983
+ color: #111 !important;
105342
105984
  }
105343
105985
  .is-tool.is-element-tool .elm-more svg {
105344
105986
  width: 11px;
@@ -105410,8 +106052,8 @@ class ContentStuff$1 {
105410
106052
  }
105411
106053
 
105412
106054
  .is-tool.is-row-tool button {
105413
- width: 25px;
105414
- height: 25px;
106055
+ width: 28px;
106056
+ height: 28px;
105415
106057
  display: flex;
105416
106058
  justify-content: center;
105417
106059
  align-items: center;
@@ -105543,10 +106185,11 @@ class ContentStuff$1 {
105543
106185
  box-shadow: none;
105544
106186
  border-radius: 2px;
105545
106187
  overflow: hidden;
106188
+ top: -3px !important;
105546
106189
  }
105547
106190
  .is-tool.is-col-tool button {
105548
- width: 25px;
105549
- height: 25px;
106191
+ width: 28px;
106192
+ height: 28px;
105550
106193
  display: flex;
105551
106194
  justify-content: center;
105552
106195
  align-items: center;
@@ -105569,6 +106212,9 @@ class ContentStuff$1 {
105569
106212
  width: 14px;
105570
106213
  height: 14px;
105571
106214
  }
106215
+ .is-tool.is-col-tool svg * { /* prevent override by .is-dark-text * */
106216
+ color: #fff;
106217
+ }
105572
106218
 
105573
106219
 
105574
106220
  .is-builder[gray] .is-tool.is-col-tool {
@@ -105682,6 +106328,9 @@ class ContentStuff$1 {
105682
106328
  width: 19px;
105683
106329
  height: 19px;
105684
106330
  }
106331
+ .is-tool.is-row-tool svg * { /* prevent override by .is-dark-text * */
106332
+ color: #fff;
106333
+ }
105685
106334
 
105686
106335
 
105687
106336
 
@@ -117676,7 +118325,7 @@ class PageSize {
117676
118325
  position: relative;
117677
118326
  flex:none;
117678
118327
  background: #fff;
117679
- /* overflow: hidden;*/
118328
+ overflow: hidden;
117680
118329
  box-shadow: none;
117681
118330
  }
117682
118331
  ${css}
@@ -120976,6 +121625,8 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
120976
121625
  // ON PASTE
120977
121626
  // col.addEventListener('paste', this.handleCellPaste.bind(this));
120978
121627
  col.addEventListener('paste', e => {
121628
+ if (e.target.closest('[data-html]')) return; // normal paste
121629
+
120979
121630
  e.preventDefault();
120980
121631
  let clipboardDataText = (e.clipboardData || window.clipboardData).getData('text');
120981
121632
  let clipboardDataHtml = (e.clipboardData || window.clipboardData).getData('text/html');
@@ -121383,8 +122034,12 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
121383
122034
  toggleSnippetModal() {
121384
122035
  const snippetModal = this.builderStuff.querySelector('.is-modal.snippetwindow');
121385
122036
  if (snippetModal.classList.contains('active')) {
122037
+ snippetModal.setAttribute('aria-hidden', true);
121386
122038
  snippetModal.classList.remove('active');
121387
122039
  } else {
122040
+ this.doc.activeElement.blur();
122041
+ // builder.doc.body.focus();
122042
+ snippetModal.setAttribute('aria-hidden', false);
121388
122043
  snippetModal.classList.add('active');
121389
122044
  }
121390
122045
  }
@@ -130630,7 +131285,7 @@ class Timeline {
130630
131285
  -->
130631
131286
  <div class="flex-wrap">
130632
131287
  <div class="flex-wrap" style="margin-right:15px;width: 120px;">
130633
- <select class="input-target">
131288
+ <select class="input-target" id="_input_target">
130634
131289
  <option value="block">${out('Block')}</option>
130635
131290
  <option value="element">${out('Element')}</option>
130636
131291
  <option value="column">${out('Column')}</option>
@@ -138698,9 +139353,9 @@ class Box {
138698
139353
  // 1920<breakpoint
138699
139354
  prefix = 'is-content-';
138700
139355
  }
138701
- }
139356
+ } // this.builder.editor.saveForUndo();
139357
+
138702
139358
 
138703
- this.builder.editor.saveForUndo();
138704
139359
  const activeBox = this.builder.activeBox;
138705
139360
  const container = activeBox.querySelector('.is-container');
138706
139361
 
@@ -138726,9 +139381,8 @@ class Box {
138726
139381
  container.classList.add(prefix + targetWidth); // panelBox.querySelector('.val-box-size').innerHTML = targetWidth;
138727
139382
 
138728
139383
  callback(targetWidth);
138729
- }
139384
+ } // this.builder.onChange();
138730
139385
 
138731
- this.builder.onChange();
138732
139386
  }
138733
139387
 
138734
139388
  clearContentWidth() {
@@ -151181,15 +151835,26 @@ ${currentHtml}
151181
151835
  }
151182
151836
  }
151183
151837
 
151184
- html = htmlDocument.body.innerHTML; // const typeClass = this.lib.getTypographyClass(html);
151838
+ if (this.builder.aiSectionReplace) htmlDocument.body.firstElementChild.classList.add('div-dummy');
151839
+ html = htmlDocument.body.innerHTML;
151185
151840
 
151186
- let typeCss = '';
151187
- if (typeClass) typeCss = typeClass + '.css';
151188
- let newSection = this.builder.addSection(html, typeCss);
151189
-
151190
- if (newSection) {
151841
+ if (this.builder.aiSectionReplace) {
151842
+ activeSection.outerHTML = html;
151843
+ this.builder.pageSetup();
151191
151844
  this.clearSelection();
151192
- this.reSelect(newSection);
151845
+ let elm = this.builder.wrapperEl.querySelector(['.div-dummy']);
151846
+ this.reSelect(elm);
151847
+ if (elm) elm.classList.remove('div-dummy');
151848
+ } else {
151849
+ // const typeClass = this.lib.getTypographyClass(html);
151850
+ let typeCss = '';
151851
+ if (typeClass) typeCss = typeClass + '.css';
151852
+ let newSection = this.builder.addSection(html, typeCss);
151853
+
151854
+ if (newSection) {
151855
+ this.clearSelection();
151856
+ this.reSelect(newSection);
151857
+ }
151193
151858
  }
151194
151859
  } else {
151195
151860
  activeBox.classList.add('replace-this'); // let savedClasses = activeBox.getAttribute('class');
@@ -151243,14 +151908,25 @@ ${currentHtml}
151243
151908
  elementToReplace.parentNode.replaceChild(replacementElement, elementToReplace);
151244
151909
  }
151245
151910
 
151911
+ if (this.builder.aiSectionReplace) htmlDocument.body.firstElementChild.classList.add('div-dummy');
151246
151912
  const modifiedHtml = htmlDocument.body.innerHTML;
151247
- let typeCss = '';
151248
- if (typeClass) typeCss = typeClass + '.css';
151249
- let newSection = this.builder.addSection(modifiedHtml, typeCss);
151250
151913
 
151251
- if (newSection) {
151914
+ if (this.builder.aiSectionReplace) {
151915
+ activeSection.outerHTML = modifiedHtml;
151916
+ this.builder.pageSetup();
151252
151917
  this.clearSelection();
151253
- this.reSelect(newSection);
151918
+ let elm = this.builder.wrapperEl.querySelector(['.div-dummy']);
151919
+ this.reSelect(elm);
151920
+ if (elm) elm.classList.remove('div-dummy');
151921
+ } else {
151922
+ let typeCss = '';
151923
+ if (typeClass) typeCss = typeClass + '.css';
151924
+ let newSection = this.builder.addSection(modifiedHtml, typeCss);
151925
+
151926
+ if (newSection) {
151927
+ this.clearSelection();
151928
+ this.reSelect(newSection);
151929
+ }
151254
151930
  }
151255
151931
  } //Trigger Change event
151256
151932
  // this.builder.settings.onChange();
@@ -152178,25 +152854,33 @@ class IframePanel {
152178
152854
  }
152179
152855
 
152180
152856
  hideTools() {
152181
- let elmTool = this.builder.doc.querySelector('.is-element-tool');
152182
- if (elmTool) elmTool.style.display = '';
152183
- let videoTool = this.builder.doc.querySelector('.is-video-tool');
152184
- if (videoTool) videoTool.style.display = '';
152185
- let audioTool = this.builder.doc.querySelector('.is-audio-tool');
152186
- if (audioTool) audioTool.style.display = '';
152187
- let iframeTool = this.builder.doc.querySelector('.is-iframe-tool');
152188
- if (iframeTool) iframeTool.style.display = '';
152189
- let moduleTool = this.builder.doc.querySelector('.is-module-tool');
152190
- if (moduleTool) moduleTool.style.display = '';
152191
- let lockIndicator = this.builder.doc.querySelector('.is-locked-indicator');
152192
- if (lockIndicator) lockIndicator.style.display = '';
152193
- let linkTool = this.builder.doc.querySelector('#divLinkTool');
152194
- if (linkTool) linkTool.style.display = '';
152195
- let spacerTool = this.builderStuff.querySelector('.is-spacer-tool');
152196
- if (spacerTool) spacerTool.style.display = '';
152197
- this.builder.editor.element.image.hideImageTool(); // this.builder.doc.querySelectorAll('.icon-active').forEach(elm => elm.classList.remove('icon-active'));
152198
- // this.builder.doc.querySelectorAll('.elm-inspected').forEach(elm => elm.classList.remove('elm-inspected'));
152199
- // this.builder.doc.querySelectorAll('.elm-active').forEach(elm => elm.classList.remove('elm-active'));
152857
+ this.builder.addCustomStyle('_css_scale', `
152858
+ .is-element-tool,
152859
+ .is-video-tool,
152860
+ .is-audio-tool,
152861
+ .is-iframe-tool,
152862
+ .is-module-tool,
152863
+ .is-code-tool,
152864
+ .is-svg-tool,
152865
+ .is-table-tool,
152866
+ .is-spacer-tool,
152867
+ .is-locked-indicator,
152868
+ .is-section-info,
152869
+ #divButtonTool,
152870
+ #divLinkTool {
152871
+ opacity: 0 !important;
152872
+ }
152873
+
152874
+ .row-active .is-col-tool,
152875
+ .row-active .is-row-tool ,
152876
+ .is-section-tool,
152877
+ .is-box-tool {
152878
+ opacity: 0 !important;
152879
+ }
152880
+ `);
152881
+ this.builder.editor.element.image.hideImageTool();
152882
+ let tool = this.builder.doc.querySelector('.row-active .is-col-tool');
152883
+ if (tool) tool.style.display = 'none';
152200
152884
  }
152201
152885
 
152202
152886
  repositionTool() {
@@ -152210,6 +152894,10 @@ class IframePanel {
152210
152894
  }
152211
152895
  }, 600);
152212
152896
  }
152897
+
152898
+ setTimeout(() => {
152899
+ this.builder.scaleTools(); // already include this.builder.removeCustomStyle('_css_scale');
152900
+ }, 300);
152213
152901
  }
152214
152902
 
152215
152903
  repositionTool_bak() {
@@ -160789,7 +161477,7 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
160789
161477
  <svg class="is-icon-flex"><use xlink:href="#ion-wrench"></use></svg>
160790
161478
  </button>
160791
161479
  <button type="button" class="btn-section-remove" tabindex="-1" data-title="${out('Remove')}" title="${out('Remove')}">
160792
- <svg class="is-icon-flex"><use xlink:href="#icon-close"></use></svg>
161480
+ <svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-3px;"><use xlink:href="#icon-trash2"></use></svg>
160793
161481
  </button>
160794
161482
  </div>`);
160795
161483
  this.defineLastBox(section);
@@ -161703,40 +162391,55 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
161703
162391
  this.positionTool(this.activeBox);
161704
162392
  }
161705
162393
 
161706
- hideTools() {
161707
- // hide tools
161708
- let tools = this.doc.querySelectorAll('.is-tool');
161709
- Array.prototype.forEach.call(tools, tool => {
161710
- tool.style.display = '';
161711
- });
161712
- tools = this.doc.querySelectorAll('.is-row-tool');
161713
- tools.forEach(tool => {
161714
- tool.style.display = 'none';
161715
- });
161716
- tools = this.doc.querySelectorAll('.is-rowadd-tool');
161717
- tools.forEach(tool => {
161718
- tool.style.opacity = 0;
161719
- });
161720
- tools = this.doc.querySelectorAll('.is-col-tool');
161721
- tools.forEach(tool => {
161722
- tool.style.display = 'none';
161723
- });
161724
- }
162394
+ scaleTools() {
162395
+ this.removeCustomStyle('_css_scale');
162396
+ const div = document.querySelector('.is-content-view');
162397
+ if (!div) return;
162398
+ const transformStyle = window.getComputedStyle(div).transform;
162399
+ const matrixValues = transformStyle.slice(7, -1).split(',');
162400
+ let scaleValue = parseFloat(matrixValues[0]);
162401
+ this.removeCustomStyle('_css_scale_apply');
162402
+ this.addCustomStyle('_css_scale_apply', `
162403
+ .is-section-tool {
162404
+ transform: scale(${1 / scaleValue}) !important;;
162405
+ transform-origin: top right !important;
162406
+ }
162407
+ .is-box-tool {
162408
+ transform: scale(${1 / scaleValue}) !important;;
162409
+ transform-origin: center bottomt !important;
162410
+ }
162411
+ .is-section-info {
162412
+ transform: scale(${1 / scaleValue}) !important;;
162413
+ }
161725
162414
 
161726
- showTools() {
161727
- this.editor.util.repositionColumnTool();
161728
- let tools = this.doc.querySelectorAll('.is-row-tool');
161729
- tools.forEach(tool => {
161730
- tool.style.display = '';
161731
- });
161732
- tools = this.doc.querySelectorAll('.is-rowadd-tool');
161733
- tools.forEach(tool => {
161734
- tool.style.opacity = '';
161735
- });
161736
- tools = this.doc.querySelectorAll('.is-col-tool');
161737
- tools.forEach(tool => {
161738
- tool.style.display = '';
161739
- });
162415
+ .is-col-tool {
162416
+ transform: scale(${1 / scaleValue}) !important;;
162417
+ transform-origin: bottom left !important;
162418
+
162419
+ }
162420
+ .is-row-tool {
162421
+ transform: scale(${1 / scaleValue}) !important;;
162422
+ transform-origin: top left !important;
162423
+ }
162424
+ .is-rowadd-tool button {
162425
+ transform: scale(${1 / scaleValue}) !important;;
162426
+ }
162427
+
162428
+ .is-element-tool,
162429
+ .is-video-tool,
162430
+ .is-audio-tool,
162431
+ .is-iframe-tool,
162432
+ .is-module-tool,
162433
+ .is-code-tool,
162434
+ .is-spacer-tool,
162435
+ .is-svg-tool,
162436
+ .is-table-tool,
162437
+ .is-locked-indicator,
162438
+ #divLinkTool, #divButtonTool {
162439
+ transform: scale(${1 / scaleValue}) !important;;
162440
+ transform-origin: top !important;
162441
+ }
162442
+ `);
161740
162443
  }
161741
162444
 
161742
162445
  positionTool(box) {
@@ -161842,18 +162545,31 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
161842
162545
  }
161843
162546
  }
161844
162547
  }
161845
- } // box info
162548
+ } // tools scaling for iframe
161846
162549
 
161847
162550
 
161848
- const boxInfos = this.wrapperEl.querySelectorAll('.is-box-info');
161849
- boxInfos.forEach(tool => {
161850
- tool.style.display = 'none';
161851
- });
161852
- let boxInfo = box.querySelector('.is-box-info');
162551
+ this.scaleTools();
162552
+ }
162553
+
162554
+ addCustomStyle(styleId, cssContent) {
162555
+ let existingStyle = this.doc.getElementById(styleId);
162556
+
162557
+ if (existingStyle) {
162558
+ existingStyle.innerHTML = cssContent;
162559
+ } else {
162560
+ let style = this.doc.createElement('style');
162561
+ style.type = 'text/css';
162562
+ style.id = styleId;
162563
+ style.innerHTML = cssContent;
162564
+ this.doc.head.appendChild(style);
162565
+ }
162566
+ }
162567
+
162568
+ removeCustomStyle(styleId) {
162569
+ let style = this.doc.getElementById(styleId);
161853
162570
 
161854
- if (boxInfo) {
161855
- boxInfo.style.display = 'flex';
161856
- boxInfo.style.transform = 'scale(' + 1 / zoom + ')';
162571
+ if (style) {
162572
+ this.doc.head.removeChild(style);
161857
162573
  }
161858
162574
  }
161859
162575