@innovastudio/contentbuilder 1.1.5 → 1.1.8
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.
|
@@ -4513,6 +4513,11 @@ class Util {
|
|
|
4513
4513
|
} // LATER: auto scroll
|
|
4514
4514
|
// LATER: If image, then it needs time to load (resulting incorrect position), so hide element tool.
|
|
4515
4515
|
|
|
4516
|
+
}
|
|
4517
|
+
|
|
4518
|
+
if (this.builder.useCssClasses) {
|
|
4519
|
+
let builderActive = document.querySelector('.builder-active');
|
|
4520
|
+
if (builderActive) dom.contentReformat(builderActive, this.builder.cssClasses);
|
|
4516
4521
|
} // Call onChange
|
|
4517
4522
|
|
|
4518
4523
|
|
|
@@ -4741,6 +4746,11 @@ class Util {
|
|
|
4741
4746
|
|
|
4742
4747
|
columnTool = document.querySelector('.is-column-tool');
|
|
4743
4748
|
columnTool.className = columnTool.className.replace('active', '');
|
|
4749
|
+
}
|
|
4750
|
+
|
|
4751
|
+
if (this.builder.useCssClasses) {
|
|
4752
|
+
let builderActive = document.querySelector('.builder-active');
|
|
4753
|
+
if (builderActive) dom.contentReformat(builderActive, this.builder.cssClasses);
|
|
4744
4754
|
} // Call onChange
|
|
4745
4755
|
|
|
4746
4756
|
|
|
@@ -7734,39 +7744,6 @@ class Dom {
|
|
|
7734
7744
|
if (!removeEmptyStyleChildren || removeEmptyStyleChildren.length <= 0) {
|
|
7735
7745
|
return;
|
|
7736
7746
|
}
|
|
7737
|
-
}
|
|
7738
|
-
|
|
7739
|
-
cleanEmptySpans(area) {
|
|
7740
|
-
let spans = area.querySelectorAll('span');
|
|
7741
|
-
const filter = Array.prototype.filter;
|
|
7742
|
-
let children = filter.call(spans, element => {
|
|
7743
|
-
return element.attributes.length === 0;
|
|
7744
|
-
}); // Remove empty spans
|
|
7745
|
-
|
|
7746
|
-
if (children && children.length > 0) {
|
|
7747
|
-
children.forEach(element => {
|
|
7748
|
-
element.outerHTML = element.innerHTML;
|
|
7749
|
-
});
|
|
7750
|
-
} // Remove spans which have empty content
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
spans = area.querySelectorAll('span');
|
|
7754
|
-
filter.call(spans, element => {
|
|
7755
|
-
if (element.innerHTML === '') {
|
|
7756
|
-
element.parentNode.removeChild(element);
|
|
7757
|
-
}
|
|
7758
|
-
}); // Recheck
|
|
7759
|
-
|
|
7760
|
-
spans = area.querySelectorAll('span');
|
|
7761
|
-
children = filter.call(spans, element => {
|
|
7762
|
-
return element.attributes.length === 0;
|
|
7763
|
-
});
|
|
7764
|
-
|
|
7765
|
-
if (children && children.length > 0) {
|
|
7766
|
-
this.cleanEmptySpans(area);
|
|
7767
|
-
} else {
|
|
7768
|
-
return;
|
|
7769
|
-
}
|
|
7770
7747
|
} // Font Size stuff
|
|
7771
7748
|
|
|
7772
7749
|
|
|
@@ -7843,7 +7820,7 @@ class Dom {
|
|
|
7843
7820
|
}
|
|
7844
7821
|
});
|
|
7845
7822
|
});
|
|
7846
|
-
this.cleanUnusedSpan(elm); // causes lost selection
|
|
7823
|
+
this.cleanUnusedSpan(elm); // REVIEW (causes lost selection)
|
|
7847
7824
|
}
|
|
7848
7825
|
|
|
7849
7826
|
cleanSelection(selection) {
|
|
@@ -7855,40 +7832,148 @@ class Dom {
|
|
|
7855
7832
|
selection.selectAllChildren(span);
|
|
7856
7833
|
this.cleanElement(span);
|
|
7857
7834
|
}
|
|
7858
|
-
|
|
7835
|
+
/*
|
|
7859
7836
|
cleanUnusedSpan(span) {
|
|
7860
|
-
|
|
7861
|
-
|
|
7862
|
-
|
|
7863
|
-
|
|
7864
|
-
|
|
7865
|
-
|
|
7866
|
-
|
|
7867
|
-
|
|
7837
|
+
if (!span.hasChildNodes()) {
|
|
7838
|
+
return;
|
|
7839
|
+
}
|
|
7840
|
+
// Direct children with no style
|
|
7841
|
+
const children = Array.from(span.children).filter((element) => {
|
|
7842
|
+
if (element.getAttribute('style') === '' || element.style === null) {
|
|
7843
|
+
element.removeAttribute('style');
|
|
7844
|
+
}
|
|
7845
|
+
let unused = ( element.attributes.length === 0 || (element.attributes.length === 1 && element.hasAttribute('data-keep')));
|
|
7846
|
+
return (element.nodeName.toLowerCase() === 'span' && unused);
|
|
7847
|
+
});
|
|
7848
|
+
if (children && children.length > 0) {
|
|
7849
|
+
children.forEach((element) => {
|
|
7850
|
+
const text = document.createTextNode(element.textContent);
|
|
7851
|
+
element.parentElement.replaceChild(text, element);
|
|
7852
|
+
});
|
|
7853
|
+
return;
|
|
7854
|
+
}
|
|
7855
|
+
// Deeper childrens
|
|
7856
|
+
const cleanUnusedSpanChildren = Array.from(span.children).map((element) => {
|
|
7857
|
+
return this.cleanUnusedSpan(element);
|
|
7858
|
+
});
|
|
7859
|
+
if (!cleanUnusedSpanChildren || cleanUnusedSpanChildren.length <= 0) {
|
|
7860
|
+
return;
|
|
7868
7861
|
}
|
|
7862
|
+
}
|
|
7863
|
+
*/
|
|
7869
7864
|
|
|
7870
|
-
|
|
7871
|
-
|
|
7872
|
-
|
|
7865
|
+
|
|
7866
|
+
cleanUnusedSpan(area) {
|
|
7867
|
+
let spans = area.querySelectorAll('span');
|
|
7868
|
+
const filter = Array.prototype.filter;
|
|
7869
|
+
let children = filter.call(spans, element => {
|
|
7870
|
+
return element.attributes.length === 0;
|
|
7871
|
+
}); // Remove empty spans
|
|
7873
7872
|
|
|
7874
7873
|
if (children && children.length > 0) {
|
|
7875
7874
|
children.forEach(element => {
|
|
7876
|
-
|
|
7877
|
-
element.parentElement.replaceChild(text, element);
|
|
7875
|
+
element.outerHTML = element.innerHTML;
|
|
7878
7876
|
});
|
|
7879
|
-
|
|
7880
|
-
|
|
7877
|
+
} // Remove spans which have empty content
|
|
7878
|
+
|
|
7881
7879
|
|
|
7880
|
+
spans = area.querySelectorAll('span');
|
|
7881
|
+
filter.call(spans, element => {
|
|
7882
|
+
if (element.innerHTML === '') {
|
|
7883
|
+
element.parentNode.removeChild(element);
|
|
7884
|
+
}
|
|
7885
|
+
}); // Recheck
|
|
7882
7886
|
|
|
7883
|
-
|
|
7884
|
-
|
|
7887
|
+
spans = area.querySelectorAll('span');
|
|
7888
|
+
children = filter.call(spans, element => {
|
|
7889
|
+
return element.attributes.length === 0;
|
|
7885
7890
|
});
|
|
7886
7891
|
|
|
7887
|
-
if (
|
|
7892
|
+
if (children && children.length > 0) {
|
|
7893
|
+
this.cleanUnusedSpan(area);
|
|
7894
|
+
} else {
|
|
7888
7895
|
return;
|
|
7889
7896
|
}
|
|
7890
7897
|
}
|
|
7891
7898
|
|
|
7899
|
+
contentReformat(area, cssClasses) {
|
|
7900
|
+
this.replaceTag(area, 'b', cssClasses.fontWeight.defaultBold);
|
|
7901
|
+
this.replaceTag(area, 'i', cssClasses.fontStyle.italic);
|
|
7902
|
+
this.replaceTag(area, 'u', cssClasses.textDecoration.underline);
|
|
7903
|
+
this.replaceTag(area, 'strike', cssClasses.textDecoration.linethrough);
|
|
7904
|
+
this.replaceInline(area, 'font-weight', 'normal', cssClasses.fontWeight.defaultBold);
|
|
7905
|
+
this.replaceInline(area, 'font-weight', 'bold', cssClasses.fontWeight.defaultBold);
|
|
7906
|
+
this.replaceInline(area, 'font-weight', '600', cssClasses.fontWeight.semibold);
|
|
7907
|
+
this.replaceInline(area, 'text-align', 'left', cssClasses.textAlign.left);
|
|
7908
|
+
this.replaceInline(area, 'text-align', 'right', cssClasses.textAlign.right);
|
|
7909
|
+
this.replaceInline(area, 'text-align', 'center', cssClasses.textAlign.center);
|
|
7910
|
+
this.replaceInline(area, 'text-align', 'justify', cssClasses.textAlign.justify);
|
|
7911
|
+
this.replaceInline(area, 'display', 'flex', cssClasses.display.flex);
|
|
7912
|
+
this.replaceInline(area, 'justiify-content', 'flex-start', cssClasses.justifyContent.start);
|
|
7913
|
+
this.replaceInline(area, 'justiify-content', 'flex-end', cssClasses.justifyContent.end);
|
|
7914
|
+
this.replaceInline(area, 'justiify-content', 'center', cssClasses.justifyContent.center);
|
|
7915
|
+
this.replaceInline(area, 'justiify-content', 'space-between', cssClasses.justifyContent.between);
|
|
7916
|
+
this.replaceInline(area, 'flex-direction', 'column', cssClasses.flexDirection.column);
|
|
7917
|
+
this.replaceInline(area, 'flex-direction', 'row', cssClasses.flexDirection.row);
|
|
7918
|
+
this.replaceInline(area, 'align-items', 'flex-start', cssClasses.alignItems.start);
|
|
7919
|
+
this.replaceInline(area, 'align-items', 'flex-end', cssClasses.alignItems.end);
|
|
7920
|
+
this.replaceInline(area, 'align-items', 'center', cssClasses.alignItems.center);
|
|
7921
|
+
this.replaceInline(area, 'text-transform', 'uppercase', cssClasses.textTransform.uppercase);
|
|
7922
|
+
this.replaceInline(area, 'text-transform', 'lowercase', cssClasses.textTransform.lowercase);
|
|
7923
|
+
this.replaceInline(area, 'text-transform', 'none', cssClasses.textTransform.normal);
|
|
7924
|
+
this.replaceInline(area, 'line-height', '1', cssClasses.leading.leading_10);
|
|
7925
|
+
this.replaceInline(area, 'line-height', '1.1', cssClasses.leading.leading_11);
|
|
7926
|
+
this.replaceInline(area, 'line-height', '1.2', cssClasses.leading.leading_12);
|
|
7927
|
+
this.replaceInline(area, 'line-height', '1.25', cssClasses.leading.leading_125);
|
|
7928
|
+
this.replaceInline(area, 'line-height', '1.3', cssClasses.leading.leading_13);
|
|
7929
|
+
this.replaceInline(area, 'line-height', '1.375', cssClasses.leading.leading_1375);
|
|
7930
|
+
this.replaceInline(area, 'line-height', '1.4', cssClasses.leading.leading_14);
|
|
7931
|
+
this.replaceInline(area, 'line-height', '1.5', cssClasses.leading.leading_15);
|
|
7932
|
+
this.replaceInline(area, 'line-height', '1.6', cssClasses.leading.leading_16);
|
|
7933
|
+
this.replaceInline(area, 'line-height', '1.625', cssClasses.leading.leading_1625);
|
|
7934
|
+
this.replaceInline(area, 'line-height', '1.7', cssClasses.leading.leading_17);
|
|
7935
|
+
this.replaceInline(area, 'line-height', '1.8', cssClasses.leading.leading_18);
|
|
7936
|
+
this.replaceInline(area, 'line-height', '1.9', cssClasses.leading.leading_19);
|
|
7937
|
+
this.replaceInline(area, 'line-height', '2', cssClasses.leading.leading_20);
|
|
7938
|
+
this.replaceInline(area, 'line-height', '2.1', cssClasses.leading.leading_21);
|
|
7939
|
+
this.replaceInline(area, 'line-height', '2.2', cssClasses.leading.leading_22);
|
|
7940
|
+
}
|
|
7941
|
+
|
|
7942
|
+
replaceTag(area, tag, className) {
|
|
7943
|
+
let elms = area.querySelectorAll(tag);
|
|
7944
|
+
const filter = Array.prototype.filter;
|
|
7945
|
+
let children = filter.call(elms, element => {
|
|
7946
|
+
return element.attributes.length === 0;
|
|
7947
|
+
});
|
|
7948
|
+
|
|
7949
|
+
if (children && children.length > 0) {
|
|
7950
|
+
children.forEach(element => {
|
|
7951
|
+
const span = document.createElement('span');
|
|
7952
|
+
span.setAttribute('class', className);
|
|
7953
|
+
span.innerHTML = element.innerHTML;
|
|
7954
|
+
element.outerHTML = span.outerHTML;
|
|
7955
|
+
});
|
|
7956
|
+
}
|
|
7957
|
+
}
|
|
7958
|
+
|
|
7959
|
+
replaceInline(builder, css, value, className) {
|
|
7960
|
+
let elms = builder.querySelectorAll('*');
|
|
7961
|
+
elms.forEach(elm => {
|
|
7962
|
+
if (css === 'justiify-content') {
|
|
7963
|
+
/*
|
|
7964
|
+
For some reason, cannot use elm.style[css] for 'justify-content'
|
|
7965
|
+
*/
|
|
7966
|
+
if (elm.style.justifyContent === `${value}`) {
|
|
7967
|
+
this.addClass(elm, className);
|
|
7968
|
+
elm.style.justifyContent = '';
|
|
7969
|
+
}
|
|
7970
|
+
} else if (elm.style[css] === `${value}`) {
|
|
7971
|
+
this.addClass(elm, className);
|
|
7972
|
+
elm.style[css] = '';
|
|
7973
|
+
}
|
|
7974
|
+
});
|
|
7975
|
+
}
|
|
7976
|
+
|
|
7892
7977
|
}
|
|
7893
7978
|
|
|
7894
7979
|
var js$1 = {exports: {}};
|
|
@@ -13458,7 +13543,7 @@ class HtmlUtil {
|
|
|
13458
13543
|
} // Clean unused spans
|
|
13459
13544
|
|
|
13460
13545
|
|
|
13461
|
-
dom$I.cleanUnusedSpan(content);
|
|
13546
|
+
dom$I.cleanUnusedSpan(content); // REVIEW
|
|
13462
13547
|
}
|
|
13463
13548
|
|
|
13464
13549
|
const util = this.builder.util;
|
|
@@ -66113,12 +66198,6 @@ class ContentBuilder {
|
|
|
66113
66198
|
defaultBold: 'font-semibold',
|
|
66114
66199
|
defaultNormal: 'font-light'
|
|
66115
66200
|
},
|
|
66116
|
-
textAlign: {
|
|
66117
|
-
left: 'text-left',
|
|
66118
|
-
center: 'text-center',
|
|
66119
|
-
right: 'text-right',
|
|
66120
|
-
justify: 'text-justify'
|
|
66121
|
-
},
|
|
66122
66201
|
fontStyle: {
|
|
66123
66202
|
italic: 'italic',
|
|
66124
66203
|
normal: 'not-italic'
|
|
@@ -66192,6 +66271,34 @@ class ContentBuilder {
|
|
|
66192
66271
|
leading_29: 'leading-29',
|
|
66193
66272
|
leading_30: 'leading-30'
|
|
66194
66273
|
},
|
|
66274
|
+
opacity: {
|
|
66275
|
+
opacity_0: 'opacity-0',
|
|
66276
|
+
opacity_2: 'opacity-2',
|
|
66277
|
+
opacity_4: 'opacity-4',
|
|
66278
|
+
opacity_5: 'opacity-5',
|
|
66279
|
+
opacity_6: 'opacity-6',
|
|
66280
|
+
opacity_8: 'opacity-8',
|
|
66281
|
+
opacity_10: 'opacity-10',
|
|
66282
|
+
opacity_12: 'opacity-12',
|
|
66283
|
+
opacity_15: 'opacity-15',
|
|
66284
|
+
opacity_20: 'opacity-20',
|
|
66285
|
+
opacity_25: 'opacity-25',
|
|
66286
|
+
opacity_30: 'opacity-30',
|
|
66287
|
+
opacity_35: 'opacity-35',
|
|
66288
|
+
opacity_40: 'opacity-40',
|
|
66289
|
+
opacity_45: 'opacity-45',
|
|
66290
|
+
opacity_50: 'opacity-50',
|
|
66291
|
+
opacity_55: 'opacity-55',
|
|
66292
|
+
opacity_60: 'opacity-60',
|
|
66293
|
+
opacity_65: 'opacity-65',
|
|
66294
|
+
opacity_70: 'opacity-70',
|
|
66295
|
+
opacity_75: 'opacity-75',
|
|
66296
|
+
opacity_80: 'opacity-80',
|
|
66297
|
+
opacity_85: 'opacity-85',
|
|
66298
|
+
opacity_90: 'opacity-90',
|
|
66299
|
+
opacity_95: 'opacity-95',
|
|
66300
|
+
opacity_100: 'opacity-100'
|
|
66301
|
+
},
|
|
66195
66302
|
padding: {
|
|
66196
66303
|
all: {
|
|
66197
66304
|
p_0: 'p-0',
|
|
@@ -66324,6 +66431,12 @@ class ContentBuilder {
|
|
|
66324
66431
|
superscript: 'sup',
|
|
66325
66432
|
subscript: 'sub'
|
|
66326
66433
|
},
|
|
66434
|
+
textAlign: {
|
|
66435
|
+
left: 'text-left',
|
|
66436
|
+
center: 'text-center',
|
|
66437
|
+
right: 'text-right',
|
|
66438
|
+
justify: 'text-justify'
|
|
66439
|
+
},
|
|
66327
66440
|
display: {
|
|
66328
66441
|
flex: 'flex',
|
|
66329
66442
|
block: 'block',
|
|
@@ -66357,7 +66470,7 @@ class ContentBuilder {
|
|
|
66357
66470
|
stretch: 'items-stretch'
|
|
66358
66471
|
}
|
|
66359
66472
|
},
|
|
66360
|
-
useCssClasses:
|
|
66473
|
+
useCssClasses: true,
|
|
66361
66474
|
useButtonPlugin: false
|
|
66362
66475
|
}; // obj.preserveSelection = true; (can be set programmatically) to prevent click that clears selection on external custom modal.
|
|
66363
66476
|
|
|
@@ -66855,6 +66968,8 @@ class ContentBuilder {
|
|
|
66855
66968
|
const builders = document.querySelectorAll(this.opts.container);
|
|
66856
66969
|
Array.prototype.forEach.call(builders, builder => {
|
|
66857
66970
|
this.applyBehaviorOn(builder); // includes setZoomOnControl
|
|
66971
|
+
|
|
66972
|
+
this.contentReformatOn(builder);
|
|
66858
66973
|
}); // Call onRender to indicate content is ready for editing (applyBehavior has been applied)
|
|
66859
66974
|
|
|
66860
66975
|
this.opts.onRender();
|
|
@@ -66862,6 +66977,10 @@ class ContentBuilder {
|
|
|
66862
66977
|
} // applyBehavior
|
|
66863
66978
|
|
|
66864
66979
|
|
|
66980
|
+
contentReformatOn(builder) {
|
|
66981
|
+
if (this.opts.useCssClasses) dom.contentReformat(builder, this.opts.cssClasses);
|
|
66982
|
+
}
|
|
66983
|
+
|
|
66865
66984
|
applyBehaviorOn(builder) {
|
|
66866
66985
|
const util = this.util; //Make absolute
|
|
66867
66986
|
|