@innovastudio/contentbox 1.4.12 → 1.4.14

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@innovastudio/contentbox",
3
3
  "type": "module",
4
- "version": "1.4.12",
4
+ "version": "1.4.14",
5
5
  "description": "",
6
6
  "main": "public/contentbox/contentbox.esm.js",
7
7
  "files": [
@@ -46,7 +46,7 @@
46
46
  "webpack-dev-server": "^4.0.0"
47
47
  },
48
48
  "dependencies": {
49
- "@innovastudio/contentbuilder": "^1.3.10",
49
+ "@innovastudio/contentbuilder": "^1.3.12",
50
50
  "js-beautify": "^1.14.0"
51
51
  }
52
52
  }
@@ -634,11 +634,6 @@
634
634
  right: 1px;
635
635
  }
636
636
 
637
- .content-edit .is-section-tool,
638
- .content-edit .is-box-tool {
639
- display: none !important;
640
- }
641
-
642
637
  .content-edit .box-hover {
643
638
  outline: none !important;
644
639
  }
@@ -10024,7 +10024,7 @@ class EditBox {
10024
10024
  if (val === '20') dom$j.addClass(container, 'size-20');
10025
10025
  if (val === '21') dom$j.addClass(container, 'size-21'); // cleanup
10026
10026
 
10027
- const paragraphs = container.querySelectorAll('p');
10027
+ const paragraphs = container.querySelectorAll('p,li,td,label');
10028
10028
  paragraphs.forEach(p => {
10029
10029
  if (val === '16') if (dom$j.hasClass(p, 'size-16')) dom$j.removeClass(p, 'size-16');
10030
10030
  if (val === '17') if (dom$j.hasClass(p, 'size-17')) dom$j.removeClass(p, 'size-17');
@@ -10073,7 +10073,7 @@ class EditBox {
10073
10073
  if (val === '1.9') dom$j.addClass(container, 'leading-19');
10074
10074
  if (val === '2') dom$j.addClass(container, 'leading-20'); // cleanup
10075
10075
 
10076
- const paragraphs = container.querySelectorAll('p');
10076
+ const paragraphs = container.querySelectorAll('p,li,td,label');
10077
10077
  paragraphs.forEach(p => {
10078
10078
  if (val === '1') if (dom$j.hasClass(p, 'leading-none')) dom$j.removeClass(p, 'leading-none');
10079
10079
  if (val === '1.1') if (dom$j.hasClass(p, 'leading-11')) dom$j.removeClass(p, 'leading-11');
@@ -11340,6 +11340,7 @@ class EditBox {
11340
11340
  const overlayBg = activeBox.querySelector('.is-overlay-bg');
11341
11341
  const overlayVideo = activeBox.querySelector('.is-video-bg');
11342
11342
  const overlayContent = activeBox.querySelector('.is-overlay-content');
11343
+ const container = activeBox.querySelector('.is-builder');
11343
11344
  let overlayBgHasContent = false;
11344
11345
 
11345
11346
  if (overlayBg) {
@@ -11410,7 +11411,6 @@ class EditBox {
11410
11411
  vPos = 'bottom';
11411
11412
  }
11412
11413
 
11413
- const container = activeBox.querySelector('.is-builder');
11414
11414
  let hPos = 'center';
11415
11415
 
11416
11416
  if (container) {
@@ -11882,6 +11882,18 @@ class EditBox {
11882
11882
  divContentJustify.style.display = 'none';
11883
11883
  }
11884
11884
  }
11885
+
11886
+ if (modalEditBox.querySelector('#divBoxImage').style.display === 'flex' && modalEditBox.querySelector('#tabBoxImage').style.display === 'none') {
11887
+ modalEditBox.querySelector('#tabBoxGeneral').click();
11888
+ }
11889
+
11890
+ if (modalEditBox.querySelector('#divBoxContentText').style.display === 'flex' && modalEditBox.querySelector('#tabBoxContentText').style.display === 'none') {
11891
+ modalEditBox.querySelector('#tabBoxGeneral').click();
11892
+ }
11893
+
11894
+ if (modalEditBox.querySelector('#divBoxContentContainer').style.display === 'flex' && modalEditBox.querySelector('#tabBoxContentContainer').style.display === 'none') {
11895
+ modalEditBox.querySelector('#tabBoxGeneral').click();
11896
+ }
11885
11897
  } //edit
11886
11898
 
11887
11899
 
@@ -12125,7 +12137,11 @@ class EditBox {
12125
12137
  dom$j.removeClass(elm, 'center');
12126
12138
  let elms = activeBox.querySelectorAll('.is-builder > div > div, .is-builder > div > div > *');
12127
12139
  elms.forEach(elm => {
12140
+ if (elm.closest('.is-section-tool') || elm.closest('.is-box-tool') || elm.closest('.is-tool') || elm.closest('.is-rowadd-tool')) return;
12128
12141
  elm.style.textAlign = '';
12142
+ dom$j.removeClass(elm, 'left');
12143
+ dom$j.removeClass(elm, 'right');
12144
+ dom$j.removeClass(elm, 'center');
12129
12145
  dom$j.removeClass(elm, this.builder.cssClasses.textAlign.left);
12130
12146
  dom$j.removeClass(elm, this.builder.cssClasses.textAlign.center);
12131
12147
  dom$j.removeClass(elm, this.builder.cssClasses.textAlign.right);
@@ -12133,6 +12149,9 @@ class EditBox {
12133
12149
  this.builder.editor.dom.doFunction(elm, theEl => {
12134
12150
  if (theEl.closest('.is-section-tool') || theEl.closest('.is-box-tool') || theEl.closest('.is-tool') || theEl.closest('.is-rowadd-tool')) return;
12135
12151
  theEl.style.textAlign = '';
12152
+ dom$j.removeClass(theEl, 'left');
12153
+ dom$j.removeClass(theEl, 'right');
12154
+ dom$j.removeClass(theEl, 'center');
12136
12155
  dom$j.removeClass(theEl, this.builder.cssClasses.textAlign.left);
12137
12156
  dom$j.removeClass(theEl, this.builder.cssClasses.textAlign.center);
12138
12157
  dom$j.removeClass(theEl, this.builder.cssClasses.textAlign.right);
@@ -27228,6 +27247,7 @@ class HtmlUtil {
27228
27247
  automaticLayout: true,
27229
27248
  contextmenu: false,
27230
27249
  fontSize: 13,
27250
+ wordWrap: true,
27231
27251
  scrollbar: {
27232
27252
  useShadows: false,
27233
27253
  vertical: 'visible',
@@ -27300,6 +27320,7 @@ class HtmlUtil {
27300
27320
  automaticLayout: true,
27301
27321
  contextmenu: false,
27302
27322
  fontSize: 13,
27323
+ wordWrap: true,
27303
27324
  scrollbar: {
27304
27325
  useShadows: false,
27305
27326
  vertical: 'visible',
@@ -78529,7 +78550,7 @@ class Rte {
78529
78550
  <div class="rte-color-picker-area"></div>
78530
78551
  </div>
78531
78552
 
78532
- <div class="rte-textsetting-options is-rte-pop" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
78553
+ <div class="rte-textsetting-options ${this.builder.simpleTextSettings ? 'simple' : ''} is-rte-pop" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
78533
78554
  <div>
78534
78555
  <div class="is-label">${util.out('Font Size')}</div>
78535
78556
  <div class="rte-fontsize-options" style="display: flex;flex-flow: wrap;">
@@ -78539,6 +78560,19 @@ class Rte {
78539
78560
  <button title="${util.out('Increase')}" data-value="+" style="font-size:13px">+</button>
78540
78561
  <button title="${util.out('Clear')}" data-value=""><svg class="is-icon-flex" style="width:18px;height:18px;margin-top: 2px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
78541
78562
  </div>
78563
+ <div class="is-label separator label-fontweight">${util.out('Font Weight')}</div>
78564
+ <div class="rte-fontweight-options" style="display: flex;flex-flow: wrap;">
78565
+ <button title="100" data-value="100">100</button>
78566
+ <button title="200" data-value="200">200</button>
78567
+ <button title="300" data-value="300">300</button>
78568
+ <button title="400" data-value="400">400</button>
78569
+ <button title="500" data-value="500">500</button>
78570
+ <button title="600" data-value="600">600</button>
78571
+ <button title="700" data-value="700">700</button>
78572
+ <button title="800" data-value="800">800</button>
78573
+ <button title="900" data-value="900">900</button>
78574
+ <button title="${util.out('Clear')}" data-value=""><svg class="is-icon-flex" style="width:18px;height:18px;margin-top: 2px;"><use xlink:href="#ion-ios-close-empty"></use></svg></button>
78575
+ </div>
78542
78576
  <div class="is-label separator">${util.out('Line Spacing')}</div>
78543
78577
  <div class="rte-lineheight-options" style="display: flex;flex-flow: wrap;">
78544
78578
  <button title="1" data-value="1">1</button>
@@ -78935,26 +78969,61 @@ class Rte {
78935
78969
 
78936
78970
  const command = item.getAttribute('data-block'); //h1, h2, h3, h4, p, pre
78937
78971
 
78972
+ /*
78938
78973
  let block = this.builder.doc.queryCommandValue('FormatBlock');
78939
78974
  block = block.toLowerCase();
78940
-
78941
78975
  if (block === 'pre') {
78942
- let elm = dom.textSelection();
78976
+ let elm = dom.textSelection();
78977
+ if(elm) {
78978
+ let pre = elm.closest('pre');
78979
+ if(pre) {
78980
+ let newnode = pre.cloneNode(true);
78981
+ let s = newnode.outerHTML.replace('<pre', '<' + command);
78982
+ s = s.replace('</pre>', '</' + command + '>');
78983
+ pre.outerHTML = s;
78984
+ }
78985
+ pre.focus();
78986
+ }
78987
+ } else {
78988
+ this.builder.doc.execCommand('formatBlock', false, '<' + command + '>'); //Needs contenteditable.
78989
+ }
78990
+ */
78943
78991
 
78944
- if (elm) {
78945
- let pre = elm.closest('pre');
78992
+ const selection = dom.getSelection();
78993
+ if (!selection) return;
78994
+ const anchorNode = selection.anchorNode;
78995
+ let container;
78996
+
78997
+ if (anchorNode) {
78998
+ container = anchorNode.nodeType !== Node.TEXT_NODE && anchorNode.nodeType !== Node.COMMENT_NODE ? anchorNode : anchorNode.parentElement;
78999
+ }
79000
+
79001
+ if (!container) return;
79002
+ let element = container.closest('h1') || container.closest('h2') || container.closest('h3') || container.closest('h4') || container.closest('h5') || container.closest('h6') || container.closest('pre') || container.closest('p');
79003
+
79004
+ if (element) {
79005
+ // const tagName = element.tagName.toLowerCase();
79006
+ element.setAttribute('data-replacetagname', '1');
79007
+ const newElement = document.createElement(command); // Copy the attributes
79008
+
79009
+ for (var i = 0, l = element.attributes.length; i < l; ++i) {
79010
+ var nodeName = element.attributes.item(i).nodeName;
79011
+ var nodeValue = element.attributes.item(i).nodeValue;
79012
+ newElement.setAttribute(nodeName, nodeValue);
79013
+ } // move all elements in the other container.
78946
79014
 
78947
- if (pre) {
78948
- let newnode = pre.cloneNode(true);
78949
- let s = newnode.outerHTML.replace('<pre', '<' + command);
78950
- s = s.replace('</pre>', '</' + command + '>');
78951
- pre.outerHTML = s;
78952
- }
78953
79015
 
78954
- pre.focus();
79016
+ while (element.firstChild) {
79017
+ newElement.appendChild(element.firstChild);
79018
+ }
79019
+
79020
+ element.parentNode.replaceChild(newElement, element);
79021
+ const result = document.querySelector('[data-replacetagname="1"]');
79022
+
79023
+ if (result) {
79024
+ result.removeAttribute('data-replacetagname');
79025
+ dom.selectElementContents(result);
78955
79026
  }
78956
- } else {
78957
- this.builder.doc.execCommand('formatBlock', false, '<' + command + '>'); //Needs contenteditable.
78958
79027
  } //save selection
78959
79028
 
78960
79029
 
@@ -79674,82 +79743,7 @@ class Rte {
79674
79743
  const h = pop.offsetHeight;
79675
79744
 
79676
79745
  if (!dom.hasClass(pop, 'active')) {
79677
- // Get realtime status
79678
- const elm = this.builder.activeElement;
79679
- let btns = pop.querySelectorAll('.rte-fontsize-options button');
79680
- Array.prototype.forEach.call(btns, btn => {
79681
- btn.classList.remove('on'); // clear selection
79682
- });
79683
- const arrSizes = this.builder.opts.fontSizeClassValues;
79684
-
79685
- for (var i = 0; i <= arrSizes.length - 1; i++) {
79686
- if (dom.hasClass(elm, 'size-' + arrSizes[i])) {
79687
- // Get current class
79688
- const btns = pop.querySelectorAll('.rte-fontsize-options button');
79689
- Array.prototype.forEach.call(btns, btn => {
79690
- let num = btn.getAttribute('data-value');
79691
-
79692
- if (parseInt(num) === arrSizes[i]) {
79693
- btn.classList.add('on');
79694
- }
79695
- });
79696
- }
79697
- }
79698
-
79699
- btns = pop.querySelectorAll('.rte-lineheight-options button');
79700
- Array.prototype.forEach.call(btns, btn => {
79701
- btn.classList.remove('on'); // clear selection
79702
- });
79703
- let classes = this.builder.cssClasses.leading;
79704
-
79705
- for (let i = 0; i < Object.keys(classes).length; i++) {
79706
- let className = Object.values(classes)[i];
79707
-
79708
- if (dom.hasClass(elm, className)) {
79709
- const btns = pop.querySelectorAll('.rte-lineheight-options button');
79710
- Array.prototype.forEach.call(btns, btn => {
79711
- let num = btn.getAttribute('data-value');
79712
- let val;
79713
- if (className === classes.leading_10) val = '1';
79714
- if (className === classes.leading_12) val = '1.2';
79715
- if (className === classes.leading_14) val = '1.4';
79716
- if (className === classes.leading_16) val = '1.6';
79717
- if (className === classes.leading_18) val = '1.8';
79718
- if (className === classes.leading_20) val = '2';
79719
- if (className === classes.leading_22) val = '2.2';
79720
-
79721
- if (num === val) {
79722
- btn.classList.add('on');
79723
- }
79724
- });
79725
- }
79726
- }
79727
-
79728
- btns = pop.querySelectorAll('.rte-letterspacing-options button');
79729
- Array.prototype.forEach.call(btns, btn => {
79730
- btn.classList.remove('on'); // clear selection
79731
- });
79732
- classes = this.builder.cssClasses.tracking;
79733
-
79734
- for (let i = 0; i < Object.keys(classes).length; i++) {
79735
- let className = Object.values(classes)[i];
79736
-
79737
- if (dom.hasClass(elm, className)) {
79738
- const btns = pop.querySelectorAll('.rte-letterspacing-options button');
79739
- Array.prototype.forEach.call(btns, btn => {
79740
- let num = btn.getAttribute('data-value');
79741
- let val;
79742
- if (className === classes.tracking_025) val = '1';
79743
- if (className === classes.tracking_050) val = '2';
79744
-
79745
- if (num === val) {
79746
- btn.classList.add('on');
79747
- }
79748
- });
79749
- }
79750
- } // /Get realtime status
79751
-
79752
-
79746
+ this.getTextSettingsState();
79753
79747
  this.util.showRtePop(pop, () => {
79754
79748
  if (this.builder.opts.toolbar === 'left') {
79755
79749
  pop.style.top = top - h / 2 + 20 + 'px';
@@ -80548,15 +80542,47 @@ class Rte {
80548
80542
  }
80549
80543
  }); //save selection
80550
80544
 
80551
- util.saveSelection();
80552
- this.getState(); //Trigger Change event
80545
+ util.saveSelection(); // this.getState();
80546
+
80547
+ this.getTextSettingsState(); //Trigger Change event
80553
80548
 
80554
80549
  this.builder.opts.onChange(); // if(this.builder.isTouchSupport) { //prevent keyboard open
80555
80550
  // const btnFocus = this.rteTool.querySelector('button');
80556
80551
  // btnFocus.focus();
80557
80552
  // }
80553
+ // btn.focus();
80554
+ });
80555
+ }); // Font Weight (new execCommand)
80558
80556
 
80559
- btn.focus();
80557
+ btns = rteTextSettingOptions.querySelectorAll('.rte-fontweight-options button');
80558
+ Array.prototype.forEach.call(btns, btn => {
80559
+ dom.addEventListener(btn, 'click', () => {
80560
+ // old 9135
80561
+ let num = btn.getAttribute('data-value');
80562
+ util.restoreSelection(); //a must
80563
+
80564
+ this.builder.uo.saveForUndo();
80565
+ const btns = rteTextSettingOptions.querySelectorAll('.rte-fontweight-options button');
80566
+ Array.prototype.forEach.call(btns, btn => {
80567
+ btn.classList.remove('on'); // clear selection
80568
+ });
80569
+ dom.execCommand('font-weight', num, (ok, container) => {
80570
+ if (this.builder.useCssClasses) {
80571
+ if (container) {
80572
+ this.applyClassFontWeight(container, num);
80573
+ }
80574
+ }
80575
+ }); //save selection
80576
+
80577
+ util.saveSelection();
80578
+ this.getState();
80579
+ this.getTextSettingsState(); //Trigger Change event
80580
+
80581
+ this.builder.opts.onChange(); // if(this.builder.isTouchSupport) { //prevent keyboard open
80582
+ // const btnFocus = this.rteTool.querySelector('button');
80583
+ // btnFocus.focus();
80584
+ // }
80585
+ // btn.focus();
80560
80586
  });
80561
80587
  }); // Line Height
80562
80588
 
@@ -80594,7 +80620,7 @@ class Rte {
80594
80620
  for (let i = 0; i < Object.keys(classes).length; i++) {
80595
80621
  let className = Object.values(classes)[i];
80596
80622
 
80597
- if (dom.hasClass(container, className)) {
80623
+ if (container.closest(`.${className}`)) {
80598
80624
  if (num === '+') {
80599
80625
  if (i + 1 === Object.keys(classes).length) return;
80600
80626
  newClassName = Object.values(classes)[i + 1];
@@ -80632,6 +80658,9 @@ class Rte {
80632
80658
  }
80633
80659
  }
80634
80660
 
80661
+ const elm = dom.getParentBlock(container);
80662
+ if (elm) elm.style.lineHeight = ''; // Clean inline style
80663
+
80635
80664
  dom.execCommandClass(newClassName, classes, true, 'block');
80636
80665
  } else {
80637
80666
  let elm;
@@ -80733,15 +80762,15 @@ class Rte {
80733
80762
  } //save selection
80734
80763
 
80735
80764
 
80736
- util.saveSelection();
80737
- this.getState(); //Trigger Change event
80765
+ util.saveSelection(); // this.getState();
80766
+
80767
+ this.getTextSettingsState(); //Trigger Change event
80738
80768
 
80739
80769
  this.builder.opts.onChange(); // if(this.builder.isTouchSupport) { //prevent keyboard open
80740
80770
  // const btnFocus = this.rteTool.querySelector('button');
80741
80771
  // btnFocus.focus();
80742
80772
  // }
80743
-
80744
- btn.focus();
80773
+ // btn.focus();
80745
80774
  });
80746
80775
  }); // Letter Spacing
80747
80776
 
@@ -80810,6 +80839,8 @@ class Rte {
80810
80839
  }
80811
80840
 
80812
80841
  if (this.builder.activeElement) this.builder.activeElement.style.letterSpacing = '';
80842
+ container.style.letterSpacing = ''; // Clean inline style
80843
+
80813
80844
  if (newClassName === classes.tracking_000) newClassName = ''; // clear for normal tracking
80814
80845
 
80815
80846
  dom.execCommandClass(newClassName, classes);
@@ -80869,15 +80900,15 @@ class Rte {
80869
80900
  } //save selection
80870
80901
 
80871
80902
 
80872
- util.saveSelection();
80873
- this.getState(); //Trigger Change event
80903
+ util.saveSelection(); // this.getState();
80904
+
80905
+ this.getTextSettingsState(); //Trigger Change event
80874
80906
 
80875
80907
  this.builder.opts.onChange(); // if(this.builder.isTouchSupport) { //prevent keyboard open
80876
80908
  // const btnFocus = this.rteTool.querySelector('button');
80877
80909
  // btnFocus.focus();
80878
80910
  // }
80879
-
80880
- btn.focus();
80911
+ // btn.focus();
80881
80912
  });
80882
80913
  }); // -----------------------------
80883
80914
  // Click anywhere will hide Column tool
@@ -81308,6 +81339,45 @@ class Rte {
81308
81339
  dom.cleanClassSize(elm, classname); // dom.cleanUnusedSpan(elm); // will remove empty spans that makes selection changes
81309
81340
  }
81310
81341
 
81342
+ applyClassFontWeight(elm, num) {
81343
+ const dom = this.dom;
81344
+ let classes = this.builder.cssClasses.fontWeight;
81345
+
81346
+ for (let i = 0; i < Object.keys(classes).length; i++) {
81347
+ let className = Object.values(classes)[i];
81348
+
81349
+ if (dom.hasClass(elm, className)) {
81350
+ dom.removeClass(elm, className);
81351
+ }
81352
+
81353
+ dom.doFunction(elm, theEl => {
81354
+ if (dom.hasClass(theEl, className)) {
81355
+ dom.removeClass(theEl, className);
81356
+ }
81357
+ }, true);
81358
+ }
81359
+
81360
+ let classname = '';
81361
+ if (num === '100') classname = this.builder.cssClasses.fontWeight.thin;
81362
+ if (num === '200') classname = this.builder.cssClasses.fontWeight.extralight;
81363
+ if (num === '300') classname = this.builder.cssClasses.fontWeight.light;
81364
+ if (num === '400') classname = this.builder.cssClasses.fontWeight.normal;
81365
+ if (num === '500') classname = this.builder.cssClasses.fontWeight.medium;
81366
+ if (num === '600') classname = this.builder.cssClasses.fontWeight.semibold;
81367
+ if (num === '700') classname = this.builder.cssClasses.fontWeight.bold;
81368
+ if (num === '800') classname = this.builder.cssClasses.fontWeight.extrabold;
81369
+ if (num === '900') classname = this.builder.cssClasses.fontWeight.black;
81370
+
81371
+ if (classname === '') ; else {
81372
+ dom.addClass(elm, classname);
81373
+ }
81374
+
81375
+ dom.doFunction(elm, function (theEl) {
81376
+ theEl.style.fontWeight = '';
81377
+ }, true);
81378
+ dom.cleanClassSize(elm, classname); // dom.cleanUnusedSpan(elm); // will remove empty spans that makes selection changes
81379
+ }
81380
+
81311
81381
  click(col) {
81312
81382
  const dom = this.dom;
81313
81383
  let elm = this.builder.inspectedElement;
@@ -81559,6 +81629,138 @@ class Rte {
81559
81629
  }
81560
81630
  }
81561
81631
 
81632
+ getTextSettingsState() {
81633
+ const dom = this.dom;
81634
+ const pop = this.rteTextSettingOptions; // Get realtime status
81635
+
81636
+ const selection = dom.getSelection();
81637
+ if (!selection) return;
81638
+ const anchorNode = selection.anchorNode;
81639
+ let container;
81640
+
81641
+ if (anchorNode) {
81642
+ container = anchorNode.nodeType !== Node.TEXT_NODE && anchorNode.nodeType !== Node.COMMENT_NODE ? anchorNode : anchorNode.parentElement;
81643
+ }
81644
+
81645
+ let btns = pop.querySelectorAll('.rte-fontsize-options button');
81646
+ Array.prototype.forEach.call(btns, btn => {
81647
+ btn.classList.remove('on'); // clear selection
81648
+ });
81649
+
81650
+ if (container) {
81651
+ const arrSizes = this.builder.opts.fontSizeClassValues;
81652
+
81653
+ for (let i = 0; i <= arrSizes.length - 1; i++) {
81654
+ if (dom.hasClass(container, 'size-' + arrSizes[i])) {
81655
+ // Get current class
81656
+ const btns = pop.querySelectorAll('.rte-fontsize-options button');
81657
+ Array.prototype.forEach.call(btns, btn => {
81658
+ let num = btn.getAttribute('data-value');
81659
+
81660
+ if (parseInt(num) === arrSizes[i]) {
81661
+ btn.classList.add('on');
81662
+ }
81663
+ });
81664
+ }
81665
+ }
81666
+ }
81667
+
81668
+ btns = pop.querySelectorAll('.rte-fontweight-options button');
81669
+ Array.prototype.forEach.call(btns, btn => {
81670
+ btn.classList.remove('on'); // clear selection
81671
+ });
81672
+
81673
+ if (container) {
81674
+ let classes = this.builder.cssClasses.fontWeight;
81675
+
81676
+ for (let i = 0; i < Object.keys(classes).length; i++) {
81677
+ let className = Object.values(classes)[i];
81678
+
81679
+ if (dom.hasClass(container, className)) {
81680
+ const btns = pop.querySelectorAll('.rte-fontweight-options button');
81681
+ Array.prototype.forEach.call(btns, btn => {
81682
+ let num = btn.getAttribute('data-value');
81683
+ let val;
81684
+ if (className === classes.thin) val = '100';
81685
+ if (className === classes.extralight) val = '200';
81686
+ if (className === classes.light) val = '300';
81687
+ if (className === classes.normal) val = '400';
81688
+ if (className === classes.medium) val = '500';
81689
+ if (className === classes.semibold) val = '600';
81690
+ if (className === classes.bold) val = '700';
81691
+ if (className === classes.extrabold) val = '800';
81692
+ if (className === classes.black) val = '900';
81693
+
81694
+ if (num === val) {
81695
+ btn.classList.add('on');
81696
+ }
81697
+ });
81698
+ }
81699
+ }
81700
+ }
81701
+
81702
+ btns = pop.querySelectorAll('.rte-lineheight-options button');
81703
+ Array.prototype.forEach.call(btns, btn => {
81704
+ btn.classList.remove('on'); // clear selection
81705
+ });
81706
+ const block = dom.getParentBlock(container);
81707
+
81708
+ if (block) {
81709
+ let classes = this.builder.cssClasses.leading;
81710
+
81711
+ for (let i = 0; i < Object.keys(classes).length; i++) {
81712
+ let className = Object.values(classes)[i];
81713
+
81714
+ if (dom.hasClass(block, className)) {
81715
+ const btns = pop.querySelectorAll('.rte-lineheight-options button');
81716
+ Array.prototype.forEach.call(btns, btn => {
81717
+ let num = btn.getAttribute('data-value');
81718
+ let val;
81719
+ if (className === classes.leading_10) val = '1';
81720
+ if (className === classes.leading_12) val = '1.2';
81721
+ if (className === classes.leading_14) val = '1.4';
81722
+ if (className === classes.leading_16) val = '1.6';
81723
+ if (className === classes.leading_18) val = '1.8';
81724
+ if (className === classes.leading_20) val = '2';
81725
+ if (className === classes.leading_22) val = '2.2';
81726
+
81727
+ if (num === val) {
81728
+ btn.classList.add('on');
81729
+ }
81730
+ });
81731
+ }
81732
+ }
81733
+ }
81734
+
81735
+ btns = pop.querySelectorAll('.rte-letterspacing-options button');
81736
+ Array.prototype.forEach.call(btns, btn => {
81737
+ btn.classList.remove('on'); // clear selection
81738
+ });
81739
+
81740
+ if (container) {
81741
+ let classes = this.builder.cssClasses.tracking;
81742
+
81743
+ for (let i = 0; i < Object.keys(classes).length; i++) {
81744
+ let className = Object.values(classes)[i];
81745
+
81746
+ if (dom.hasClass(container, className)) {
81747
+ const btns = pop.querySelectorAll('.rte-letterspacing-options button');
81748
+ Array.prototype.forEach.call(btns, btn => {
81749
+ let num = btn.getAttribute('data-value');
81750
+ let val;
81751
+ if (className === classes.tracking_025) val = '1';
81752
+ if (className === classes.tracking_050) val = '2';
81753
+
81754
+ if (num === val) {
81755
+ btn.classList.add('on');
81756
+ }
81757
+ });
81758
+ }
81759
+ }
81760
+ } // /Get realtime status
81761
+
81762
+ }
81763
+
81562
81764
  getIconsStyle() {
81563
81765
  let css = `
81564
81766
  html, body {height:100%}
@@ -86441,7 +86643,8 @@ class ContentBuilder {
86441
86643
  },
86442
86644
  useCssClasses: true,
86443
86645
  useButtonPlugin: false,
86444
- enableDragResize: true
86646
+ enableDragResize: true,
86647
+ simpleTextSettings: true
86445
86648
  }; // obj.preserveSelection = true; (can be set programmatically) to prevent click that clears selection on external custom modal.
86446
86649
 
86447
86650
  this.opts = Object.assign(this, defaults, opts);