@innovastudio/contentbuilder 1.3.24 → 1.3.25

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/contentbuilder",
3
3
  "type": "module",
4
- "version": "1.3.24",
4
+ "version": "1.3.25",
5
5
  "description": "",
6
6
  "main": "public/contentbuilder/contentbuilder.esm.js",
7
7
  "files": [
@@ -70686,17 +70686,11 @@ class Rte {
70686
70686
  fontname = fontname.replace(/'/g, ''); // NEW 4.0.5 (replace quotes in font family)
70687
70687
 
70688
70688
  if (provider === 'google') {
70689
- var bExist = false;
70690
- var links = this.builder.doc.getElementsByTagName('link');
70691
-
70692
- for (i = 0; i < links.length; i++) {
70693
- var sSrc = links[i].href.toLowerCase();
70694
- sSrc = sSrc.replace(/\+/g, ' ').replace(/%20/g, ' ');
70695
- if (sSrc.indexOf(fontname.toLowerCase()) !== -1) bExist = true;
70696
- }
70689
+ let bExist = false;
70690
+ bExist = this.checkIfFontCssLinkExists(fontfamily);
70697
70691
 
70698
70692
  if (!bExist) {
70699
- var element = elm;
70693
+ let element = elm;
70700
70694
 
70701
70695
  while (!dom.hasClass(element, 'is-builder')) {
70702
70696
  element = element.parentNode;
@@ -70705,7 +70699,7 @@ class Rte {
70705
70699
  let cssUrl = '';
70706
70700
 
70707
70701
  if (this.builder.fontPath) {
70708
- const cssFileName = fontfamily.split(',')[0].toLowerCase().replace(/\s/g, '-') + '.css';
70702
+ const cssFileName = fontfamily.split(',')[0].toLowerCase().replace(/'/g, '').replace(/"/g, '').replace(/\s/g, '-') + '.css';
70709
70703
  cssUrl = this.builder.fontPath + cssFileName;
70710
70704
  dom.appendHtml(element, `<link data-name="fontfamily" href="${cssUrl}" rel="stylesheet" property="stylesheet" type="text/css">`);
70711
70705
  } else {
@@ -70714,6 +70708,27 @@ class Rte {
70714
70708
  }
70715
70709
  }
70716
70710
 
70711
+ if (provider === 'others') {
70712
+ let bExist = false;
70713
+ bExist = this.checkIfFontCssLinkExists(fontfamily);
70714
+
70715
+ if (!bExist) {
70716
+ let element = elm;
70717
+
70718
+ while (!dom.hasClass(element, 'is-builder')) {
70719
+ element = element.parentNode;
70720
+ }
70721
+
70722
+ let cssUrl = '';
70723
+
70724
+ if (this.builder.fontPath) {
70725
+ const cssFileName = fontfamily.split(',')[0].toLowerCase().replace(/'/g, '').replace(/"/g, '').replace(/\s/g, '-') + '.css';
70726
+ cssUrl = this.builder.fontPath + cssFileName;
70727
+ dom.appendHtml(element, `<link data-name="fontfamily" href="${cssUrl}" rel="stylesheet" property="stylesheet" type="text/css">`);
70728
+ }
70729
+ }
70730
+ }
70731
+
70717
70732
  if (!this.builder.inspectedElement) {
70718
70733
  //save selection
70719
70734
  this.util.saveSelection(); //Needed because after format, a tag is added (ex. <span>), so, make selection again.
@@ -70728,9 +70743,12 @@ class Rte {
70728
70743
  } //Trigger Change event
70729
70744
 
70730
70745
 
70731
- this.builder.opts.onChange(); //LATER: make function
70732
- //Cleanup Google font css link
70746
+ this.builder.opts.onChange(); //Cleanup Google font css link
70747
+
70748
+ this.cleanupFontCssLink();
70749
+ }
70733
70750
 
70751
+ cleanupFontCssLink() {
70734
70752
  const fonts = [];
70735
70753
 
70736
70754
  if (this.builder.opts.page !== '') {
@@ -70747,34 +70765,34 @@ class Rte {
70747
70765
  if (fonts.indexOf(fontFamily) === -1) fonts.push(fontFamily);
70748
70766
  });
70749
70767
  });
70750
- }
70768
+ } // Cleanup
70751
70769
 
70752
- links = this.builder.doc.getElementsByTagName('link');
70753
70770
 
70754
- for (i = 0; i < links.length; i++) {
70755
- sSrc = links[i].href.toLowerCase();
70771
+ let links = this.builder.doc.getElementsByTagName('link');
70772
+
70773
+ for (let i = 0; i < links.length; i++) {
70774
+ let sSrc = links[i].href.toLowerCase();
70756
70775
 
70757
70776
  if (sSrc.indexOf('googleapis') !== -1) {
70758
70777
  //get fontname
70759
70778
  sSrc = sSrc.replace(/\+/g, ' ').replace(/%20/g, ' ');
70760
- fontname = sSrc.substr(sSrc.indexOf('family=') + 7);
70779
+ let linkFontName = sSrc.substr(sSrc.indexOf('family=') + 7);
70761
70780
 
70762
- if (fontname.indexOf(':') !== -1) {
70763
- fontname = fontname.split(':')[0];
70781
+ if (linkFontName.indexOf(':') !== -1) {
70782
+ linkFontName = linkFontName.split(':')[0];
70764
70783
  }
70765
70784
 
70766
- if (fontname.indexOf('|') !== -1) {
70767
- fontname = fontname.split('|')[0];
70785
+ if (linkFontName.indexOf('|') !== -1) {
70786
+ linkFontName = linkFontName.split('|')[0];
70768
70787
  }
70769
70788
 
70770
- fontname = fontname.replace('&display=swap', ''); // NEW 4.0.5
70771
- //console.log(fontname);
70772
- //check if fontname used in content
70773
- // let tmp = this.builder.doc.body.innerHTML.toLowerCase();
70789
+ linkFontName = linkFontName.replace('&display=swap', ''); // NEW 4.0.5
70790
+ // console.log(linkFontName);
70791
+ // check if fontname used in content
70774
70792
 
70775
70793
  let used = false;
70776
70794
  fonts.forEach(item => {
70777
- if (item.toLowerCase().indexOf(fontname) === -1) ; else {
70795
+ if (item.toLowerCase().indexOf(linkFontName.toLowerCase()) === -1) ; else {
70778
70796
  used = true;
70779
70797
  }
70780
70798
  });
@@ -70786,19 +70804,11 @@ class Rte {
70786
70804
  if (!attr) {
70787
70805
  links[i].setAttribute('data-rel', '_del');
70788
70806
  }
70789
- } // var count = tmp.split(fontname).length;
70790
- // if(count<3){
70791
- // //not used
70792
- // let attr = links[i].getAttribute('data-protect');
70793
- // if (!attr) {
70794
- // links[i].setAttribute('data-rel','_del');
70795
- // }
70796
- // }
70797
-
70807
+ }
70798
70808
  } else if (links[i].getAttribute('data-name') === 'fontfamily') {
70799
70809
  let used = false;
70800
70810
  fonts.forEach(item => {
70801
- const cssFileName = item.split(',')[0].replace(/"/g, '').replace(/\s/g, '').toLowerCase() + '.css';
70811
+ const cssFileName = item.split(',')[0].replace(/'/g, '').replace(/"/g, '').replace(/\s/g, '-').toLowerCase() + '.css';
70802
70812
 
70803
70813
  if (sSrc.toLowerCase().indexOf('/' + cssFileName) === -1) ; else {
70804
70814
  used = true;
@@ -70821,6 +70831,54 @@ class Rte {
70821
70831
  });
70822
70832
  }
70823
70833
 
70834
+ checkIfFontCssLinkExists(fontfamily) {
70835
+ let bExist = false;
70836
+ let fontname = fontfamily.split(',')[0];
70837
+ fontname = fontname.replace(/'/g, '');
70838
+ fontname = fontname.replace(/"/g, ''); // (replace double quotes in font family)
70839
+
70840
+ fontname = fontname.toLowerCase();
70841
+ let links = this.builder.doc.getElementsByTagName('link');
70842
+
70843
+ for (let i = 0; i < links.length; i++) {
70844
+ let sSrc = links[i].href.toLowerCase();
70845
+
70846
+ if (sSrc.indexOf('googleapis') !== -1) {
70847
+ if (!this.builder.fontPath) {
70848
+ //get fontname
70849
+ sSrc = sSrc.replace(/\+/g, ' ').replace(/%20/g, ' ');
70850
+ let linkFontName = sSrc.substr(sSrc.indexOf('family=') + 7);
70851
+
70852
+ if (linkFontName.indexOf(':') !== -1) {
70853
+ linkFontName = linkFontName.split(':')[0];
70854
+ }
70855
+
70856
+ if (linkFontName.indexOf('|') !== -1) {
70857
+ linkFontName = linkFontName.split('|')[0];
70858
+ }
70859
+
70860
+ linkFontName = linkFontName.replace('&display=swap', ''); // NEW 4.0.5
70861
+ //check if fontname used in content
70862
+ // let tmp = this.builder.doc.body.innerHTML.toLowerCase();
70863
+
70864
+ if (linkFontName === fontname.toLowerCase()) {
70865
+ bExist = true; // console.log(fontname.toLowerCase() + '-' +linkFontName);
70866
+ }
70867
+ }
70868
+ } else if (links[i].getAttribute('data-name') === 'fontfamily') {
70869
+ if (this.builder.fontPath) {
70870
+ let cssFile = fontname.replace(/\s/g, '-').toLowerCase() + '.css';
70871
+
70872
+ if (sSrc.toLowerCase().indexOf('/' + cssFile) !== -1) {
70873
+ bExist = true;
70874
+ }
70875
+ }
70876
+ }
70877
+ }
70878
+
70879
+ return bExist;
70880
+ }
70881
+
70824
70882
  positionToolbar() {
70825
70883
  const viewportWidth = document.body.clientWidth; //window.innerWidth;
70826
70884
 
@@ -73917,7 +73975,7 @@ class ContentBuilder {
73917
73975
  // Used for the location of ionicons/ (see rte.js 2788) & scripts/ (see plugins/preview/plugin.js 237)
73918
73976
  fontAssetPath: 'assets/fonts/',
73919
73977
  // Option for self-hosted fonts:
73920
- // fontPath: 'assets/googlefonts/', // If set, will be used
73978
+ // fontPath: 'assets/cssfonts/', // If set, will be used
73921
73979
  snippetData: 'assets/minimalist-blocks/snippetlist.html',
73922
73980
  // Deprecated
73923
73981
  snippetUrl: 'assets/minimalist-blocks/content.js',