@innovastudio/contentbox 1.6.30 → 1.6.32
Sign up to get free protection for your applications and to get access to all the features.
@@ -1241,7 +1241,9 @@ class SideBar {
|
|
1241
1241
|
this.builder.editor.saveForUndo();
|
1242
1242
|
var html = builderStuff.querySelector('#inpViewHtml').value;
|
1243
1243
|
html = this.builder.editor.fromViewToActual(html);
|
1244
|
-
this.builder.loadHtml(html);
|
1244
|
+
this.builder.loadHtml(html);
|
1245
|
+
this.builder.editor.hideElementTools();
|
1246
|
+
if (this.builder.onSelectChange) this.builder.onSelectChange(); //Trigger Change event
|
1245
1247
|
|
1246
1248
|
this.builder.settings.onChange(); //Close sidebar
|
1247
1249
|
|
@@ -8953,19 +8955,56 @@ class Text {
|
|
8953
8955
|
span.removeAttribute('data-keep');
|
8954
8956
|
}
|
8955
8957
|
}); // clean
|
8958
|
+
// let elms = activeColumn.querySelectorAll('ul,p');
|
8959
|
+
// Array.prototype.forEach.call(elms, (elm) => {
|
8960
|
+
// let text = elm.innerHTML.trim();
|
8961
|
+
// if(text==='') {
|
8962
|
+
// elm.parentNode.removeChild(elm);
|
8963
|
+
// }
|
8964
|
+
// });
|
8956
8965
|
|
8957
|
-
let
|
8958
|
-
|
8959
|
-
|
8966
|
+
let elm = this.getElm();
|
8967
|
+
const ul = elm.closest('ul,ol');
|
8968
|
+
const p = elm.closest('p,h1,h2,h3,h4,h5,h6');
|
8969
|
+
|
8970
|
+
if (ul && p) {
|
8971
|
+
/*
|
8972
|
+
Case:
|
8973
|
+
After applying list, the structure will be:
|
8974
|
+
<p style="...">
|
8975
|
+
<ul>
|
8976
|
+
<li>Lorem ipsum</li>
|
8977
|
+
</ul>
|
8978
|
+
</p>
|
8979
|
+
DOM will reformat this into:
|
8980
|
+
<p style="..."></p>
|
8981
|
+
<ul>
|
8982
|
+
<li>Lorem ipsum</li>
|
8983
|
+
</ul>
|
8984
|
+
<p></p>
|
8985
|
+
The list will lost its style
|
8986
|
+
*/
|
8987
|
+
const list = ul.querySelectorAll('li');
|
8988
|
+
list.forEach(li => {
|
8989
|
+
this.appendAttributes(p, li);
|
8990
|
+
});
|
8991
|
+
}
|
8960
8992
|
|
8961
|
-
if (text === '') {
|
8962
|
-
elm.parentNode.removeChild(elm);
|
8963
|
-
}
|
8964
|
-
});
|
8965
8993
|
onFinish();
|
8966
8994
|
}, 10);
|
8967
8995
|
}
|
8968
8996
|
|
8997
|
+
appendAttributes(sourceElement, destinationElement) {
|
8998
|
+
// Append classes
|
8999
|
+
destinationElement.classList.add(...sourceElement.classList); // Append styles
|
9000
|
+
|
9001
|
+
for (let i = 0; i < sourceElement.style.length; i++) {
|
9002
|
+
let property = sourceElement.style[i];
|
9003
|
+
let value = sourceElement.style.getPropertyValue(property);
|
9004
|
+
destinationElement.style.setProperty(property, value);
|
9005
|
+
}
|
9006
|
+
}
|
9007
|
+
|
8969
9008
|
formatText(command) {
|
8970
9009
|
if (command === 'bold') this.execCommandToggle('fontWeight');
|
8971
9010
|
if (command === 'italic') this.execCommandToggle('fontStyle');
|
@@ -11183,6 +11222,15 @@ class PanelText {
|
|
11183
11222
|
|
11184
11223
|
if (elm && elm.closest('.' + config.textTransform.uppercase)) {
|
11185
11224
|
this.panel.querySelector('button[data-format=uppercase]').classList.add('on');
|
11225
|
+
}
|
11226
|
+
|
11227
|
+
this.panel.querySelector('button[data-action=insertUnorderedList]').classList.remove('on');
|
11228
|
+
this.panel.querySelector('button[data-action=insertOrderedList]').classList.remove('on');
|
11229
|
+
|
11230
|
+
if (elm && elm.closest('ul')) {
|
11231
|
+
this.panel.querySelector('button[data-action=insertUnorderedList]').classList.add('on');
|
11232
|
+
} else if (elm && elm.closest('ol')) {
|
11233
|
+
this.panel.querySelector('button[data-action=insertOrderedList]').classList.add('on');
|
11186
11234
|
} // Alignment
|
11187
11235
|
|
11188
11236
|
|
@@ -12476,7 +12524,12 @@ class PanelSvg {
|
|
12476
12524
|
let currentColor = this.builder.editor.dom.getStyle(svg, 'color');
|
12477
12525
|
const colorpicker = this.builder.editor.colorpicker();
|
12478
12526
|
colorpicker.open(color => {
|
12479
|
-
svg.style.
|
12527
|
+
if (svg.style.fill) {
|
12528
|
+
svg.style.fill = color;
|
12529
|
+
} else {
|
12530
|
+
svg.style.color = color;
|
12531
|
+
}
|
12532
|
+
|
12480
12533
|
btnColorPick.style.backgroundColor = color; // preview
|
12481
12534
|
|
12482
12535
|
this.builder.editor.onChange();
|
@@ -12556,8 +12609,16 @@ class PanelSvg {
|
|
12556
12609
|
if (div.classList.contains('text-right')) panel.querySelector('[data-align="right"]').classList.add('on');
|
12557
12610
|
if (div.classList.contains('text-center')) panel.querySelector('[data-align="center"]').classList.add('on');
|
12558
12611
|
if (div.classList.contains('text-justify')) panel.querySelector('[data-align="justify"]').classList.add('on');
|
12559
|
-
const btnColorPick = panel.querySelector('.btn-color');
|
12560
|
-
|
12612
|
+
const btnColorPick = panel.querySelector('.btn-color'); // let currentColor = this.builder.editor.dom.getStyle(svg, 'color');
|
12613
|
+
|
12614
|
+
let currentColor;
|
12615
|
+
|
12616
|
+
if (svg.style.fill) {
|
12617
|
+
currentColor = svg.style.fill;
|
12618
|
+
} else {
|
12619
|
+
currentColor = svg.style.color;
|
12620
|
+
}
|
12621
|
+
|
12561
12622
|
btnColorPick.style.backgroundColor = currentColor; // panel.querySelectorAll('.fontsizes button').forEach(btn=>btn.classList.remove('on'));
|
12562
12623
|
// let currentSize = svg.getAttribute('width');
|
12563
12624
|
// panel.querySelectorAll('.fontsizes button').forEach(btn=>{
|
@@ -25193,7 +25254,7 @@ class ControlPanel {
|
|
25193
25254
|
this.title.innerHTML = titleHtml;
|
25194
25255
|
this.panelIframe.classList.add('active');
|
25195
25256
|
this.objPanelIframe.getState();
|
25196
|
-
} else if (element.tagName.toLowerCase() === 'i' && element.classList.contains('icon')) {
|
25257
|
+
} else if (element.tagName.toLowerCase() === 'i' && (element.classList.contains('icon') || element.classList.contains('bi'))) {
|
25197
25258
|
let titleHtml = out('Icon');
|
25198
25259
|
this.title.innerHTML = titleHtml;
|
25199
25260
|
this.panelIcon.classList.add('active');
|
@@ -26689,7 +26750,7 @@ const renderQuickAdd = builder => {
|
|
26689
26750
|
elm = quickadd.querySelector('.add-list');
|
26690
26751
|
dom.addEventListener(elm, 'click', () => {
|
26691
26752
|
const mode = quickadd.getAttribute('data-mode');
|
26692
|
-
const html = `<ul
|
26753
|
+
const html = `<ul>
|
26693
26754
|
<li>Lorem Ipsum is simply dummy text</li>
|
26694
26755
|
<li>Lorem Ipsum is simply dummy text</li>
|
26695
26756
|
</ul>`;
|
@@ -27385,7 +27446,10 @@ class Util$1 {
|
|
27385
27446
|
const dom = this.dom;
|
27386
27447
|
dom.removeClass(modal, 'active');
|
27387
27448
|
modal.style.display = '';
|
27449
|
+
|
27450
|
+
// document.body.style.overflow = '';
|
27388
27451
|
}
|
27452
|
+
|
27389
27453
|
refreshModuleLayout(col) {
|
27390
27454
|
let savedHeight;
|
27391
27455
|
if (col.style.height) savedHeight = col.style.height;else col.style.height = `${col.offsetHeight}px`;
|
@@ -27741,13 +27805,27 @@ class Util$1 {
|
|
27741
27805
|
if (!elm) return;
|
27742
27806
|
this.builder.uo.saveForUndo();
|
27743
27807
|
let element = elm;
|
27744
|
-
|
27745
|
-
|
27746
|
-
|
27747
|
-
|
27808
|
+
let newelement;
|
27809
|
+
if (!element.nextElementSibling) {
|
27810
|
+
// active element is div.display > p.
|
27811
|
+
let activeCol = this.builder.activeCol;
|
27812
|
+
let current;
|
27813
|
+
const elms = dom.elementChildren(activeCol);
|
27814
|
+
elms.forEach(child => {
|
27815
|
+
if (child.contains(element)) {
|
27816
|
+
current = child;
|
27817
|
+
}
|
27818
|
+
});
|
27819
|
+
if (current) {
|
27820
|
+
current.insertAdjacentHTML('afterend', html); // add new element after div.display
|
27821
|
+
newelement = current.nextElementSibling;
|
27822
|
+
}
|
27823
|
+
} else {
|
27824
|
+
element.insertAdjacentHTML('afterend', html);
|
27825
|
+
newelement = element.nextElementSibling;
|
27826
|
+
}
|
27748
27827
|
let builderActive = this.builder.doc.querySelector('.builder-active');
|
27749
27828
|
if (builderActive) this.builder.applyBehaviorOn(builderActive);
|
27750
|
-
let newelement = element.nextElementSibling;
|
27751
27829
|
if (newelement.tagName.toLowerCase() === 'img') {
|
27752
27830
|
let checkLoad = setInterval(() => {
|
27753
27831
|
if (newelement.complete) {
|
@@ -30376,6 +30454,12 @@ class Dom {
|
|
30376
30454
|
}
|
30377
30455
|
});
|
30378
30456
|
}
|
30457
|
+
countOccurrences(text, word) {
|
30458
|
+
// match the word globally and case insensitively
|
30459
|
+
const regex = new RegExp(word, 'gi');
|
30460
|
+
const matches = text.match(regex);
|
30461
|
+
return matches ? matches.length : 0;
|
30462
|
+
}
|
30379
30463
|
}
|
30380
30464
|
|
30381
30465
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
@@ -36836,97 +36920,86 @@ class HtmlUtil {
|
|
36836
36920
|
col.style.cursor = '';
|
36837
36921
|
});
|
36838
36922
|
});
|
36839
|
-
let elms
|
36840
|
-
|
36841
|
-
elms
|
36842
|
-
|
36843
|
-
|
36844
|
-
|
36845
|
-
|
36846
|
-
|
36847
|
-
|
36848
|
-
|
36849
|
-
|
36850
|
-
|
36851
|
-
|
36852
|
-
|
36853
|
-
elms
|
36854
|
-
|
36855
|
-
|
36856
|
-
|
36857
|
-
|
36858
|
-
|
36859
|
-
|
36860
|
-
|
36861
|
-
|
36862
|
-
|
36863
|
-
elms = tmp.querySelectorAll('[
|
36864
|
-
|
36865
|
-
|
36866
|
-
|
36867
|
-
|
36868
|
-
|
36869
|
-
|
36870
|
-
|
36871
|
-
|
36872
|
-
|
36873
|
-
|
36874
|
-
|
36875
|
-
elms
|
36876
|
-
|
36877
|
-
|
36878
|
-
|
36879
|
-
|
36880
|
-
|
36881
|
-
|
36882
|
-
|
36883
|
-
elms
|
36884
|
-
|
36885
|
-
|
36886
|
-
|
36887
|
-
|
36888
|
-
|
36889
|
-
|
36890
|
-
|
36891
|
-
|
36892
|
-
|
36893
|
-
elms
|
36894
|
-
|
36895
|
-
|
36896
|
-
dom.removeAttributes(elms, 'clean');
|
36897
|
-
elms = tmp.querySelectorAll('[grideditor]');
|
36898
|
-
dom.removeAttributes(elms, 'grideditor');
|
36899
|
-
elms = tmp.querySelectorAll('[gridoutline]');
|
36900
|
-
dom.removeAttributes(elms, 'gridoutline');
|
36901
|
-
dom.removeElements(tmp.querySelectorAll('.is-row-tool'));
|
36902
|
-
dom.removeElements(tmp.querySelectorAll('.is-col-tool'));
|
36903
|
-
dom.removeElements(tmp.querySelectorAll('.is-rowadd-tool'));
|
36904
|
-
dom.removeElements(tmp.querySelectorAll('.ovl'));
|
36905
|
-
dom.removeElements(tmp.querySelectorAll('.row-add-initial'));
|
36923
|
+
let elms;
|
36924
|
+
elms = tmp.querySelectorAll('.sortable-chosen, .sortable-ghost, .elm-active, .icon-active, .elm-inspected, .cell-active, .row-active, .row-outline, .is-builder');
|
36925
|
+
elms.forEach(elm => {
|
36926
|
+
elm.classList.remove('sortable-chosen');
|
36927
|
+
elm.classList.remove('sortable-ghost');
|
36928
|
+
elm.classList.remove('elm-active');
|
36929
|
+
elm.classList.remove('icon-active');
|
36930
|
+
elm.classList.remove('elm-inspected');
|
36931
|
+
elm.classList.remove('cell-active');
|
36932
|
+
elm.classList.remove('row-active');
|
36933
|
+
elm.classList.remove('row-outline');
|
36934
|
+
elm.classList.remove('is-builder');
|
36935
|
+
});
|
36936
|
+
elms = tmp.querySelectorAll('[data-click], [contenteditable], [draggridoutline], [between-blocks-left], [between-blocks-center], [hideelementhighlight], [data-module-active], [draggable]');
|
36937
|
+
elms.forEach(elm => {
|
36938
|
+
elm.removeAttribute('data-click');
|
36939
|
+
elm.removeAttribute('contenteditable');
|
36940
|
+
elm.removeAttribute('draggridoutline');
|
36941
|
+
elm.removeAttribute('between-blocks-left');
|
36942
|
+
elm.removeAttribute('between-blocks-center');
|
36943
|
+
elm.removeAttribute('hideelementhighlight');
|
36944
|
+
elm.removeAttribute('data-module-active');
|
36945
|
+
elm.removeAttribute('draggable');
|
36946
|
+
});
|
36947
|
+
elms = tmp.querySelectorAll('[data-animated], [data-saveforundo], [hidesnippetaddtool], [gray], [rowoutline], [hidecolumntool], [grayoutline], [hideoutline]');
|
36948
|
+
elms.forEach(elm => {
|
36949
|
+
elm.removeAttribute('data-animated');
|
36950
|
+
elm.removeAttribute('data-saveforundo');
|
36951
|
+
elm.removeAttribute('hidesnippetaddtool');
|
36952
|
+
elm.removeAttribute('gray');
|
36953
|
+
elm.removeAttribute('rowoutline');
|
36954
|
+
elm.removeAttribute('hidecolumntool');
|
36955
|
+
elm.removeAttribute('grayoutline');
|
36956
|
+
elm.removeAttribute('hideoutline');
|
36957
|
+
});
|
36958
|
+
elms = tmp.querySelectorAll('[leftrowtool], [minimal], [clean], [grideditor], [gridoutline]');
|
36959
|
+
elms.forEach(elm => {
|
36960
|
+
elm.removeAttribute('leftrowtool');
|
36961
|
+
elm.removeAttribute('minimal');
|
36962
|
+
elm.removeAttribute('clean');
|
36963
|
+
elm.removeAttribute('grideditor');
|
36964
|
+
elm.removeAttribute('gridoutline');
|
36965
|
+
});
|
36966
|
+
elms = tmp.querySelectorAll('.is-row-tool,.is-col-tool,.is-rowadd-tool,.is-canvas-tool,.is-canvasadd-tool');
|
36967
|
+
elms.forEach(elm => {
|
36968
|
+
if (elm.previousSibling && elm.previousSibling.nodeType === Node.TEXT_NODE) {
|
36969
|
+
elm.previousSibling.remove();
|
36970
|
+
}
|
36971
|
+
if (elm.nextSibling && elm.nextSibling.nodeType === Node.TEXT_NODE) {
|
36972
|
+
elm.nextSibling.remove();
|
36973
|
+
}
|
36974
|
+
elm.remove();
|
36975
|
+
});
|
36976
|
+
elms = tmp.querySelectorAll('.ovl,.row-add-initial');
|
36977
|
+
elms.forEach(elm => {
|
36978
|
+
elm.remove();
|
36979
|
+
});
|
36906
36980
|
|
36907
36981
|
//Extra cleaning
|
36908
36982
|
if (this.builder.cleanAOS) {
|
36909
|
-
elms = tmp.querySelectorAll('.aos-init');
|
36910
|
-
|
36911
|
-
|
36912
|
-
|
36913
|
-
|
36914
|
-
|
36915
|
-
|
36916
|
-
elms
|
36917
|
-
|
36918
|
-
|
36919
|
-
|
36920
|
-
|
36921
|
-
|
36922
|
-
|
36923
|
-
dom.removeClasses(elms, 'is-inview');
|
36983
|
+
elms = tmp.querySelectorAll('.aos-init, .aos-animate');
|
36984
|
+
elms.forEach(elm => {
|
36985
|
+
elm.classList.remove('aos-init');
|
36986
|
+
elm.classList.remove('aos-animate');
|
36987
|
+
});
|
36988
|
+
}
|
36989
|
+
elms = tmp.querySelectorAll('.skrollable, .skrollable-after, .skrollable-before, .skrollable-between, .is-inview');
|
36990
|
+
elms.forEach(elm => {
|
36991
|
+
elm.classList.remove('skrollable');
|
36992
|
+
elm.classList.remove('skrollable-after');
|
36993
|
+
elm.classList.remove('skrollable-before');
|
36994
|
+
elm.classList.remove('skrollable-between');
|
36995
|
+
elm.classList.remove('is-inview');
|
36996
|
+
});
|
36924
36997
|
let emptyclasses = tmp.querySelectorAll('[class=""]');
|
36925
|
-
|
36998
|
+
emptyclasses.forEach(emptyclass => {
|
36926
36999
|
emptyclass.removeAttribute('class');
|
36927
37000
|
});
|
36928
37001
|
let unusedOverlays = tmp.querySelectorAll('.is-row-overlay');
|
36929
|
-
|
37002
|
+
unusedOverlays.forEach(unusedOverlay => {
|
36930
37003
|
if (!unusedOverlay.hasAttribute('style')) unusedOverlay.parentNode.removeChild(unusedOverlay);
|
36931
37004
|
});
|
36932
37005
|
dom.removeEmptyStyle(tmp);
|
@@ -36935,7 +37008,7 @@ class HtmlUtil {
|
|
36935
37008
|
|
36936
37009
|
//Backward compatible: cleanup button <span contenteditable="false"><a contenteditable="true">button</a></span>
|
36937
37010
|
let links = tmp.querySelectorAll('a');
|
36938
|
-
|
37011
|
+
links.forEach(link => {
|
36939
37012
|
if (link.style.display === 'inline-block') {
|
36940
37013
|
if (link.parentNode.childElementCount === 1 && link.parentNode.tagName.toLowerCase() === 'span') {
|
36941
37014
|
link.parentNode.outerHTML = link.parentNode.innerHTML;
|
@@ -36953,85 +37026,44 @@ class HtmlUtil {
|
|
36953
37026
|
//ContentBox
|
36954
37027
|
|
36955
37028
|
// Remove dummy DIV after last section
|
36956
|
-
|
36957
|
-
|
36958
|
-
|
36959
|
-
|
36960
|
-
elms = tmp.querySelectorAll('[data-scroll-once]');
|
36961
|
-
|
37029
|
+
elms = tmp.querySelectorAll('.is-dummy');
|
37030
|
+
elms.forEach(elm => {
|
37031
|
+
elm.remove();
|
37032
|
+
});
|
37033
|
+
elms = tmp.querySelectorAll('[data-scroll], [data-scroll-once]');
|
37034
|
+
elms.forEach(elm => {
|
37035
|
+
elm.removeAttribute('data-scroll');
|
37036
|
+
elm.removeAttribute('data-scroll-once');
|
37037
|
+
});
|
36962
37038
|
if (this.builder.shortenOutput) {
|
36963
|
-
elms = tmp.querySelectorAll('[data-noedit]');
|
36964
|
-
|
36965
|
-
|
36966
|
-
|
36967
|
-
|
36968
|
-
|
36969
|
-
|
36970
|
-
|
36971
|
-
|
36972
|
-
|
36973
|
-
elms = tmp.querySelectorAll('[data-html]');
|
36974
|
-
|
36975
|
-
|
36976
|
-
|
36977
|
-
|
36978
|
-
|
36979
|
-
|
36980
|
-
|
36981
|
-
|
36982
|
-
|
36983
|
-
|
36984
|
-
|
36985
|
-
|
36986
|
-
dom.removeAttributes(elms, 'data-html-5');
|
36987
|
-
elms = tmp.querySelectorAll('[data-html-6]');
|
36988
|
-
dom.removeAttributes(elms, 'data-html-6');
|
36989
|
-
elms = tmp.querySelectorAll('[data-html-7]');
|
36990
|
-
dom.removeAttributes(elms, 'data-html-7');
|
36991
|
-
elms = tmp.querySelectorAll('[data-html-8]');
|
36992
|
-
dom.removeAttributes(elms, 'data-html-8');
|
36993
|
-
elms = tmp.querySelectorAll('[data-html-9]');
|
36994
|
-
dom.removeAttributes(elms, 'data-html-9');
|
36995
|
-
elms = tmp.querySelectorAll('[data-html-10]');
|
36996
|
-
dom.removeAttributes(elms, 'data-html-10');
|
36997
|
-
elms = tmp.querySelectorAll('[data-html-12]');
|
36998
|
-
dom.removeAttributes(elms, 'data-html-12');
|
36999
|
-
elms = tmp.querySelectorAll('[data-html-13]');
|
37000
|
-
dom.removeAttributes(elms, 'data-html-13');
|
37001
|
-
elms = tmp.querySelectorAll('[data-html-14]');
|
37002
|
-
dom.removeAttributes(elms, 'data-html-14');
|
37003
|
-
elms = tmp.querySelectorAll('[data-html-15]');
|
37004
|
-
dom.removeAttributes(elms, 'data-html-15');
|
37005
|
-
elms = tmp.querySelectorAll('[data-html-16]');
|
37006
|
-
dom.removeAttributes(elms, 'data-html-16');
|
37007
|
-
elms = tmp.querySelectorAll('[data-html-17]');
|
37008
|
-
dom.removeAttributes(elms, 'data-html-17');
|
37009
|
-
elms = tmp.querySelectorAll('[data-html-18]');
|
37010
|
-
dom.removeAttributes(elms, 'data-html-18');
|
37011
|
-
elms = tmp.querySelectorAll('[data-html-19]');
|
37012
|
-
dom.removeAttributes(elms, 'data-html-19');
|
37013
|
-
elms = tmp.querySelectorAll('[data-html-20]');
|
37014
|
-
dom.removeAttributes(elms, 'data-html-20');
|
37015
|
-
elms = tmp.querySelectorAll('[data-html-21]');
|
37016
|
-
dom.removeAttributes(elms, 'data-html-21');
|
37017
|
-
elms = tmp.querySelectorAll('[data-html-21]');
|
37018
|
-
dom.removeAttributes(elms, 'data-html-21');
|
37019
|
-
elms = tmp.querySelectorAll('[data-html-22]');
|
37020
|
-
dom.removeAttributes(elms, 'data-html-22');
|
37021
|
-
elms = tmp.querySelectorAll('[data-html-23]');
|
37022
|
-
dom.removeAttributes(elms, 'data-html-23');
|
37023
|
-
elms = tmp.querySelectorAll('[data-html-24]');
|
37024
|
-
dom.removeAttributes(elms, 'data-html-24');
|
37025
|
-
elms = tmp.querySelectorAll('[data-html-25]');
|
37026
|
-
dom.removeAttributes(elms, 'data-html-25');
|
37039
|
+
elms = tmp.querySelectorAll('[data-noedit], [data-module], [data-module-desc], [data-dialog-width], [data-dialog-height], [data-html], [data-settings]');
|
37040
|
+
elms.forEach(elm => {
|
37041
|
+
elm.removeAttribute('data-noedit');
|
37042
|
+
elm.removeAttribute('data-module');
|
37043
|
+
elm.removeAttribute('data-module-desc');
|
37044
|
+
elm.removeAttribute('data-dialog-width');
|
37045
|
+
elm.removeAttribute('data-dialog-height');
|
37046
|
+
elm.removeAttribute('data-html');
|
37047
|
+
elm.removeAttribute('data-settings');
|
37048
|
+
});
|
37049
|
+
elms = tmp.querySelectorAll('[data-html-1], [data-html-2], [data-html-3], [data-html-4], [data-html-5], [data-html-6], [data-html-7], [data-html-8], [data-html-9], [data-html-10]');
|
37050
|
+
elms.forEach(elm => {
|
37051
|
+
elm.removeAttribute('data-html-1');
|
37052
|
+
elm.removeAttribute('data-html-2');
|
37053
|
+
elm.removeAttribute('data-html-3');
|
37054
|
+
elm.removeAttribute('data-html-4');
|
37055
|
+
elm.removeAttribute('data-html-5');
|
37056
|
+
elm.removeAttribute('data-html-6');
|
37057
|
+
elm.removeAttribute('data-html-7');
|
37058
|
+
elm.removeAttribute('data-html-8');
|
37059
|
+
elm.removeAttribute('data-html-9');
|
37060
|
+
elm.removeAttribute('data-html-10');
|
37061
|
+
});
|
37027
37062
|
}
|
37028
37063
|
|
37029
37064
|
// cleaning
|
37030
37065
|
|
37031
37066
|
elms = tmp.querySelectorAll('[data-bottom-top],[data-center],[data-center-bottom],[data-100-top],[data-50-top],[data-top],[data-top-bottom],[data-center-top],[data--300-bottom],[data--150-bottom],[data--50-bottom],[data-bottom],[data-100-bottom],[data-150-bottom],[data-400-bottom],' + '[data--400-bottom],[data--200-bottom],[data--100-bottom],[data-50-bottom],[data-200-bottom],[data-300-bottom],' + '[data-in],[data-in-150],[data-in-300],' + '[data-cen--150],[data-cen],[data-cen-150],[data-out--300],[data-out--150],[data-out]' + '[data-t],[data-t-100],[data-t-200],[data-t-300],[data-t-400],' + '[data-t-500],[data-t-600],[data-t-700],[data-t-800],[data-t-900],[data-t-1000],' + '[data-t-1100],[data-t-1200],[data-t-1300],[data-t-1400],[data-t-1500],[data-t-1600],' + '[data-t-1700],[data-t-1800],[data-t-1900],[data-t-2000],[data-t-2100],[data-t-2200],' + '[data-t-2300],[data-t-2400],[data-t-2500],[data-t-2600],[data-t-2700],[data-t-2800]');
|
37032
|
-
// elms = tmp.querySelectorAll('[data-bottom-top],[data-center],[data-center-bottom],[data-100-top],[data-50-top],[data-top],[data-top-bottom],[data-center-top],[data--300-bottom],[data--150-bottom],[data--50-bottom],[data-bottom],[data-100-bottom],[data-150-bottom],[data-400-bottom],' +
|
37033
|
-
// '[data--400-bottom],[data--200-bottom],[data--100-bottom],[data-50-bottom],[data-200-bottom],[data-300-bottom],' +
|
37034
|
-
// '[data-in],[data-in-150],[data-in-300],[data-cen--150],[data-cen],[data-cen-150],[data-out--300],[data-out--150],[data-out]');
|
37035
37067
|
Array.prototype.forEach.call(elms, elm => {
|
37036
37068
|
elm.style.transition = '';
|
37037
37069
|
elm.style.transform = '';
|
@@ -37067,34 +37099,24 @@ class HtmlUtil {
|
|
37067
37099
|
});
|
37068
37100
|
|
37069
37101
|
//Cleanup utils
|
37070
|
-
elms = tmp.querySelectorAll('.is-appeared');
|
37071
|
-
|
37072
|
-
|
37073
|
-
|
37074
|
-
|
37075
|
-
|
37076
|
-
|
37077
|
-
});
|
37078
|
-
elms = tmp.querySelectorAll('.section-active');
|
37079
|
-
Array.prototype.forEach.call(elms, elm => {
|
37080
|
-
dom.removeClass(elm, 'section-active');
|
37081
|
-
});
|
37082
|
-
elms = tmp.querySelectorAll('.section-select');
|
37083
|
-
Array.prototype.forEach.call(elms, elm => {
|
37084
|
-
dom.removeClass(elm, 'section-select');
|
37102
|
+
elms = tmp.querySelectorAll('.is-appeared, .box-active, .section-active, .section-select, .box-select');
|
37103
|
+
elms.forEach(elm => {
|
37104
|
+
elm.classList.remove('is-appeared');
|
37105
|
+
elm.classList.remove('box-active');
|
37106
|
+
elm.classList.remove('section-active');
|
37107
|
+
elm.classList.remove('section-select');
|
37108
|
+
elm.classList.remove('box-select');
|
37085
37109
|
});
|
37086
|
-
elms = tmp.querySelectorAll('.box-
|
37087
|
-
|
37088
|
-
|
37110
|
+
elms = tmp.querySelectorAll('.is-section-tool, .is-box-tool, .is-box-info, .is-section-info');
|
37111
|
+
elms.forEach(elm => {
|
37112
|
+
if (elm.previousSibling && elm.previousSibling.nodeType === Node.TEXT_NODE) {
|
37113
|
+
elm.previousSibling.remove();
|
37114
|
+
}
|
37115
|
+
if (elm.nextSibling && elm.nextSibling.nodeType === Node.TEXT_NODE) {
|
37116
|
+
elm.nextSibling.remove();
|
37117
|
+
}
|
37118
|
+
elm.remove();
|
37089
37119
|
});
|
37090
|
-
elms = tmp.querySelectorAll('.is-section-tool');
|
37091
|
-
dom.removeElements(elms);
|
37092
|
-
elms = tmp.querySelectorAll('.is-box-tool');
|
37093
|
-
dom.removeElements(elms);
|
37094
|
-
elms = tmp.querySelectorAll('.is-box-info');
|
37095
|
-
dom.removeElements(elms);
|
37096
|
-
elms = tmp.querySelectorAll('.is-section-info');
|
37097
|
-
dom.removeElements(elms);
|
37098
37120
|
|
37099
37121
|
// freeform
|
37100
37122
|
elms = tmp.querySelectorAll('.is-block .handle, .is-block .rotate-handle');
|
@@ -37111,8 +37133,6 @@ class HtmlUtil {
|
|
37111
37133
|
elm.removeAttribute('data-prev');
|
37112
37134
|
});
|
37113
37135
|
tmp.querySelectorAll('.is-block.clone').forEach(elm => elm.parentNode.removeChild(elm));
|
37114
|
-
// tmp.querySelectorAll('.is-block.cloned').forEach(elm=>elm.classList.remove('cloned'));
|
37115
|
-
|
37116
37136
|
var html_content = '';
|
37117
37137
|
var html_footer = '';
|
37118
37138
|
var html_others = '';
|
@@ -37166,70 +37186,29 @@ class HtmlUtil {
|
|
37166
37186
|
emptystyle.removeAttribute('style');
|
37167
37187
|
});
|
37168
37188
|
if (this.builder.shortenOutput) {
|
37169
|
-
elms = tmp.querySelectorAll('[data-noedit]');
|
37170
|
-
|
37171
|
-
|
37172
|
-
|
37173
|
-
|
37174
|
-
|
37175
|
-
|
37176
|
-
|
37177
|
-
|
37178
|
-
|
37179
|
-
elms = tmp.querySelectorAll('[data-html]');
|
37180
|
-
|
37181
|
-
|
37182
|
-
|
37183
|
-
|
37184
|
-
|
37185
|
-
|
37186
|
-
|
37187
|
-
|
37188
|
-
|
37189
|
-
|
37190
|
-
|
37191
|
-
|
37192
|
-
dom.removeAttributes(elms, 'data-html-5');
|
37193
|
-
elms = tmp.querySelectorAll('[data-html-6]');
|
37194
|
-
dom.removeAttributes(elms, 'data-html-6');
|
37195
|
-
elms = tmp.querySelectorAll('[data-html-7]');
|
37196
|
-
dom.removeAttributes(elms, 'data-html-7');
|
37197
|
-
elms = tmp.querySelectorAll('[data-html-8]');
|
37198
|
-
dom.removeAttributes(elms, 'data-html-8');
|
37199
|
-
elms = tmp.querySelectorAll('[data-html-9]');
|
37200
|
-
dom.removeAttributes(elms, 'data-html-9');
|
37201
|
-
elms = tmp.querySelectorAll('[data-html-10]');
|
37202
|
-
dom.removeAttributes(elms, 'data-html-10');
|
37203
|
-
elms = tmp.querySelectorAll('[data-html-12]');
|
37204
|
-
dom.removeAttributes(elms, 'data-html-12');
|
37205
|
-
elms = tmp.querySelectorAll('[data-html-13]');
|
37206
|
-
dom.removeAttributes(elms, 'data-html-13');
|
37207
|
-
elms = tmp.querySelectorAll('[data-html-14]');
|
37208
|
-
dom.removeAttributes(elms, 'data-html-14');
|
37209
|
-
elms = tmp.querySelectorAll('[data-html-15]');
|
37210
|
-
dom.removeAttributes(elms, 'data-html-15');
|
37211
|
-
elms = tmp.querySelectorAll('[data-html-16]');
|
37212
|
-
dom.removeAttributes(elms, 'data-html-16');
|
37213
|
-
elms = tmp.querySelectorAll('[data-html-17]');
|
37214
|
-
dom.removeAttributes(elms, 'data-html-17');
|
37215
|
-
elms = tmp.querySelectorAll('[data-html-18]');
|
37216
|
-
dom.removeAttributes(elms, 'data-html-18');
|
37217
|
-
elms = tmp.querySelectorAll('[data-html-19]');
|
37218
|
-
dom.removeAttributes(elms, 'data-html-19');
|
37219
|
-
elms = tmp.querySelectorAll('[data-html-20]');
|
37220
|
-
dom.removeAttributes(elms, 'data-html-20');
|
37221
|
-
elms = tmp.querySelectorAll('[data-html-21]');
|
37222
|
-
dom.removeAttributes(elms, 'data-html-21');
|
37223
|
-
elms = tmp.querySelectorAll('[data-html-21]');
|
37224
|
-
dom.removeAttributes(elms, 'data-html-21');
|
37225
|
-
elms = tmp.querySelectorAll('[data-html-22]');
|
37226
|
-
dom.removeAttributes(elms, 'data-html-22');
|
37227
|
-
elms = tmp.querySelectorAll('[data-html-23]');
|
37228
|
-
dom.removeAttributes(elms, 'data-html-23');
|
37229
|
-
elms = tmp.querySelectorAll('[data-html-24]');
|
37230
|
-
dom.removeAttributes(elms, 'data-html-24');
|
37231
|
-
elms = tmp.querySelectorAll('[data-html-25]');
|
37232
|
-
dom.removeAttributes(elms, 'data-html-25');
|
37189
|
+
elms = tmp.querySelectorAll('[data-noedit], [data-module], [data-module-desc], [data-dialog-width], [data-dialog-height], [data-html], [data-settings]');
|
37190
|
+
elms.forEach(elm => {
|
37191
|
+
elm.removeAttribute('data-noedit');
|
37192
|
+
elm.removeAttribute('data-module');
|
37193
|
+
elm.removeAttribute('data-module-desc');
|
37194
|
+
elm.removeAttribute('data-dialog-width');
|
37195
|
+
elm.removeAttribute('data-dialog-height');
|
37196
|
+
elm.removeAttribute('data-html');
|
37197
|
+
elm.removeAttribute('data-settings');
|
37198
|
+
});
|
37199
|
+
elms = tmp.querySelectorAll('[data-html-1], [data-html-2], [data-html-3], [data-html-4], [data-html-5], [data-html-6], [data-html-7], [data-html-8], [data-html-9], [data-html-10]');
|
37200
|
+
elms.forEach(elm => {
|
37201
|
+
elm.removeAttribute('data-html-1');
|
37202
|
+
elm.removeAttribute('data-html-2');
|
37203
|
+
elm.removeAttribute('data-html-3');
|
37204
|
+
elm.removeAttribute('data-html-4');
|
37205
|
+
elm.removeAttribute('data-html-5');
|
37206
|
+
elm.removeAttribute('data-html-6');
|
37207
|
+
elm.removeAttribute('data-html-7');
|
37208
|
+
elm.removeAttribute('data-html-8');
|
37209
|
+
elm.removeAttribute('data-html-9');
|
37210
|
+
elm.removeAttribute('data-html-10');
|
37211
|
+
});
|
37233
37212
|
}
|
37234
37213
|
|
37235
37214
|
// freeform
|
@@ -37357,6 +37336,8 @@ class UndoRedo {
|
|
37357
37336
|
dom.removeElements(tmp.querySelectorAll('.is-row-tool'));
|
37358
37337
|
dom.removeElements(tmp.querySelectorAll('.is-rowadd-tool'));
|
37359
37338
|
dom.removeElements(tmp.querySelectorAll('.is-col-tool'));
|
37339
|
+
dom.removeElements(tmp.querySelectorAll('.is-canvas-tool'));
|
37340
|
+
dom.removeElements(tmp.querySelectorAll('.is-canvasadd-tool'));
|
37360
37341
|
dom.removeElements(tmp.querySelectorAll('.ovl'));
|
37361
37342
|
dom.removeElements(tmp.querySelectorAll('.row-add-initial'));
|
37362
37343
|
|
@@ -37536,6 +37517,7 @@ class UndoRedo {
|
|
37536
37517
|
this.writeHtml(html);
|
37537
37518
|
}
|
37538
37519
|
this.builder.applyBehavior();
|
37520
|
+
this.builder.applyBehaviorCanvas();
|
37539
37521
|
this.builder.opts.onChange();
|
37540
37522
|
this.undoList[120] = this.undoList[121];
|
37541
37523
|
this.undoList[121] = this.undoList[122];
|
@@ -37625,6 +37607,7 @@ class UndoRedo {
|
|
37625
37607
|
this.writeHtml(html);
|
37626
37608
|
}
|
37627
37609
|
this.builder.applyBehavior();
|
37610
|
+
this.builder.applyBehaviorCanvas();
|
37628
37611
|
this.builder.opts.onChange();
|
37629
37612
|
this.undoList[119] = this.undoList[118];
|
37630
37613
|
this.undoList[118] = this.undoList[117];
|
@@ -38068,6 +38051,24 @@ const prepareSvgIcons = builder => {
|
|
38068
38051
|
<symbol id="icon-svg" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
38069
38052
|
<path d="M21 8h-2a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2v-4h-1" /><path d="M7 8h-3a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-3" /><path d="M10 8l1.5 8h1l1.5 -8" />
|
38070
38053
|
</symbol>
|
38054
|
+
|
38055
|
+
<symbol id="icon-pagesize" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
38056
|
+
<path d="M3 5m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z" /><path d="M7 12v-3h3" /><path d="M17 12v3h-3" />
|
38057
|
+
</symbol>
|
38058
|
+
<symbol id="icon-print" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
38059
|
+
<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" />
|
38060
|
+
</symbol>
|
38061
|
+
|
38062
|
+
<symbol id="icon-plus" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
38063
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
38064
|
+
<line x1="12" y1="5" x2="12" y2="19"></line>
|
38065
|
+
<line x1="5" y1="12" x2="19" y2="12"></line>
|
38066
|
+
</symbol>
|
38067
|
+
<symbol id="icon-plus2" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
38068
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
38069
|
+
<path d="M12 5l0 14"></path>
|
38070
|
+
<path d="M5 12l14 0"></path>
|
38071
|
+
</symbol>
|
38071
38072
|
</svg>`;
|
38072
38073
|
builder.dom.appendHtml(builder.builderStuff, html);
|
38073
38074
|
};
|
@@ -70596,6 +70597,8 @@ class Image$1 {
|
|
70596
70597
|
try {
|
70597
70598
|
img.setAttribute('data-filename', input.files[0].name); //needed for saveimage.js |
|
70598
70599
|
|
70600
|
+
// img.crossOrigin = 'anonymous';
|
70601
|
+
|
70599
70602
|
this.processImage(input.files[0], img, () => {
|
70600
70603
|
imageProgress.style.display = 'none';
|
70601
70604
|
elm = imageTool.querySelector('#fileEmbedImage');
|
@@ -87048,7 +87051,15 @@ class ElementTool {
|
|
87048
87051
|
}
|
87049
87052
|
}
|
87050
87053
|
*/
|
87051
|
-
|
87054
|
+
|
87055
|
+
// elm.parentNode.removeChild(elm);
|
87056
|
+
let elmParent = elm.parentNode;
|
87057
|
+
elm.remove();
|
87058
|
+
let childs = dom.elementChildren(elmParent);
|
87059
|
+
if (!elmParent.classList.contains('cell-active') && childs.length === 0) {
|
87060
|
+
elmParent.remove(); // remove empty div.display
|
87061
|
+
}
|
87062
|
+
|
87052
87063
|
this.elementTool.style.display = 'none';
|
87053
87064
|
let cell = this.builder.activeCol;
|
87054
87065
|
if (cell) {
|
@@ -87367,7 +87378,7 @@ class ElementTool {
|
|
87367
87378
|
if ((customcode || noedit || _protected) && !subblock) ; else {
|
87368
87379
|
const tagName = elm.tagName.toLowerCase();
|
87369
87380
|
// LATER: label, code, figcaption ?
|
87370
|
-
if (tagName === 'h1' || tagName === 'h2' || tagName === 'h3' || tagName === 'h4' || tagName === 'h5' || tagName === 'h6' || tagName === 'p' || tagName === 'pre' || tagName === 'blockquote' || tagName === 'li' || tagName === 'img' || tagName === 'iframe') {
|
87381
|
+
if (!elm.classList.contains('cell-active') && (tagName === 'h1' || tagName === 'h2' || tagName === 'h3' || tagName === 'h4' || tagName === 'h5' || tagName === 'h6' || tagName === 'p' || tagName === 'div' || tagName === 'pre' || tagName === 'blockquote' || tagName === 'li' || tagName === 'img' || tagName === 'iframe')) {
|
87371
87382
|
activeElement = elm; //set active element
|
87372
87383
|
|
87373
87384
|
if (tagName === 'img') {
|
@@ -89845,8 +89856,14 @@ class Rte {
|
|
89845
89856
|
let rteZoomSlider;
|
89846
89857
|
let inpZoomSlider;
|
89847
89858
|
if (!rteTool) {
|
89859
|
+
let zoomMax = 100;
|
89860
|
+
if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer && !this.builder.iframe) {
|
89861
|
+
// freeform
|
89862
|
+
zoomMax = 200;
|
89863
|
+
}
|
89864
|
+
|
89848
89865
|
// if(builder.plugins.length>0) {
|
89849
|
-
let allButtons = ['|', 'addsnippet', 'bold', 'italic', 'underline', 'formatting', 'color', 'removeformat', 'align', 'textsettings', 'createlink', 'tags', 'undo', 'redo', 'zoom', 'livepreview', 'icon', 'image', 'list', 'font', 'formatpara', 'gridtool', 'html', 'preferences', 'more', 'left', 'center', 'right', 'full', 'group', 'ungroup', 'duplicate', 'addblock', 'front', 'backward', 'moveup', 'movedown', 'delete', 'blocksettings', 'aiassistant', 'snippets', 'svg'];
|
89866
|
+
let allButtons = ['|', 'addsnippet', 'bold', 'italic', 'underline', 'formatting', 'color', 'removeformat', 'align', 'textsettings', 'createlink', 'tags', 'undo', 'redo', 'zoom', 'livepreview', 'icon', 'image', 'list', 'font', 'formatpara', 'gridtool', 'html', 'preferences', 'more', 'left', 'center', 'right', 'full', 'group', 'ungroup', 'duplicate', 'addblock', 'front', 'backward', 'moveup', 'movedown', 'delete', 'blocksettings', 'aiassistant', 'snippets', 'svg', 'pageoptions', 'print'];
|
89850
89867
|
const filterButtons = myArray => {
|
89851
89868
|
let newArray = myArray;
|
89852
89869
|
myArray.forEach(item => {
|
@@ -89906,7 +89923,7 @@ class Rte {
|
|
89906
89923
|
var btn = builder.opts.buttonsMore[j].toLowerCase();
|
89907
89924
|
if (btn === 'createlink') html_rtemore += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_rtemore += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px;"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_rtemore += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px;"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'removeformat') html_rtemore += `<button tabindex="-1" title="${util.out('Clean')}" class="rte-clean"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#icon-clean"></use></svg></button>`;else if (btn === 'bold') html_rtemore += `<button tabindex="-1" title="${util.out('Bold')}" class="rte-format" data-command="bold"><span style="font-family:serif;font-size:14px;">B</span></button>`;else if (btn === 'italic') html_rtemore += `<button tabindex="-1" title="${util.out('Italic')}" class="rte-format" data-command="italic"><span style="font-family:serif;font-size:16px;font-style:italic;">i</span></button>`;else if (btn === 'underline') html_rtemore += `<button tabindex="-1" title="${util.out('Underline')}" class="rte-format" data-command="underline"><span style="font-family:serif;font-size:14px;text-decoration:underline;">U</span></button>`;
|
89908
89925
|
// else if(btn==='createlink') html_rtemore += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;
|
89909
|
-
else if (btn === 'align') html_rtemore += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'list') html_rtemore += `<button tabindex="-1" title="${util.out('List')}" class="rte-list"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#icon-list-bullet"></use></svg></button>`;else if (btn === 'color') html_rtemore += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'formatting') html_rtemore += `<button tabindex="-1" title="${util.out('Formatting')}" class="rte-formatting"><span style="font-family:serif;font-size:15px;display:inline-block;">A</span></button>`;else if (btn === 'tags') html_rtemore += customtag_button;else if (btn === 'image') html_rtemore += `<button tabindex="-1" title="${util.out('Image')}" class="rte-image"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-image"></use></svg></button>`;else if (btn === 'gridtool') html_rtemore += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_rtemore += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_rtemore += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_rtemore += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'formatpara') html_rtemore += `<button tabindex="-1" title="${util.out('Paragraph')}" class="rte-paragraph"><span style="font-family:serif;font-size:14px;display:inline-block;margin-top:2px;">H</span></button>`;else if (btn === 'font') html_rtemore += `<button tabindex="-1" title="${util.out('Font')}" class="rte-fontfamily"><span style="font-family:serif;font-size:18px;text-transform:none;display:inline-block;margin-top: -3px;">a</span></button>`;else if (btn === 'textsettings') html_rtemore += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'undo') html_rtemore += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_rtemore += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_rtemore += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_rtemore += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="margin-top:2px;width:
|
89926
|
+
else if (btn === 'align') html_rtemore += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'list') html_rtemore += `<button tabindex="-1" title="${util.out('List')}" class="rte-list"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#icon-list-bullet"></use></svg></button>`;else if (btn === 'color') html_rtemore += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'formatting') html_rtemore += `<button tabindex="-1" title="${util.out('Formatting')}" class="rte-formatting"><span style="font-family:serif;font-size:15px;display:inline-block;">A</span></button>`;else if (btn === 'tags') html_rtemore += customtag_button;else if (btn === 'image') html_rtemore += `<button tabindex="-1" title="${util.out('Image')}" class="rte-image"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-image"></use></svg></button>`;else if (btn === 'gridtool') html_rtemore += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_rtemore += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_rtemore += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_rtemore += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'formatpara') html_rtemore += `<button tabindex="-1" title="${util.out('Paragraph')}" class="rte-paragraph"><span style="font-family:serif;font-size:14px;display:inline-block;margin-top:2px;">H</span></button>`;else if (btn === 'font') html_rtemore += `<button tabindex="-1" title="${util.out('Font')}" class="rte-fontfamily"><span style="font-family:serif;font-size:18px;text-transform:none;display:inline-block;margin-top: -3px;">a</span></button>`;else if (btn === 'textsettings') html_rtemore += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'undo') html_rtemore += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_rtemore += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_rtemore += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_rtemore += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="width:19px;height:19px;"><use xlink:href="#icon-snippets"></use></svg></button>`;else if (btn === 'pageoptions') html_rtemore += `<button tabindex="-1" title="${util.out('Page Options')}" class="rte-pageoptions"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;transform:rotate(90deg)"><use xlink:href="#icon-pagesize"></use></svg></button>`;else if (btn === 'print') html_rtemore += `<button tabindex="-1" title="${util.out('Print')}" class="rte-print"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-print"></use></svg></button>`;else if (btn === 'zoom') html_rtemore += `<button tabindex="-1" title="${util.out('Zoom')}" class="rte-zoom"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-zoom-in"></use></svg></button>`;else if (btn === 'livepreview') html_rtemore += `<button tabindex="-1" title="${util.out('Live Preview')}" class="rte-livepreview"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-device-desktop"></use></svg></button>`;else if (btn === '|') {
|
89910
89927
|
html_rtemore += '<div class="rte-separator"></div>';
|
89911
89928
|
} else {
|
89912
89929
|
html_rtemore += `<button tabindex="-1" title="button not found" data-plugin="${btn}"></button>`; //temporary (later will be replaced with plugin button)
|
@@ -89916,7 +89933,7 @@ class Rte {
|
|
89916
89933
|
let html_rte = '';
|
89917
89934
|
for (j = 0; j < builder.opts.buttons.length; j++) {
|
89918
89935
|
btn = builder.opts.buttons[j].toLowerCase();
|
89919
|
-
if (btn === 'bold') html_rte += `<button tabindex="-1" title="${util.out('Bold')}" class="rte-format" data-command="bold"><span style="font-family:serif;font-size:14px;">B</span></button>`;else if (btn === 'italic') html_rte += `<button tabindex="-1" title="${util.out('Italic')}" class="rte-format" data-command="italic"><span style="font-family:serif;font-size:16px;font-style:italic;">i</span></button>`;else if (btn === 'underline') html_rte += `<button tabindex="-1" title="${util.out('Underline')}" class="rte-format" data-command="underline"><span style="font-family:serif;font-size:14px;text-decoration:underline;">U</span></button>`;else if (btn === 'createlink') html_rte += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'align') html_rte += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'formatpara') html_rte += `<button tabindex="-1" title="${util.out('Paragraph')}" class="rte-paragraph"><span style="font-family:serif;font-size:14px;display:inline-block;margin-top:2px;">H</span></button>`;else if (btn === 'color') html_rte += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'formatting') html_rte += `<button tabindex="-1" title="${util.out('Formatting')}" class="rte-formatting"><span style="font-family:serif;font-size:15px;display:inline-block;">A</span></button>`;else if (btn === 'list') html_rte += `<button tabindex="-1" title="${util.out('List')}" class="rte-list"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#icon-list-bullet"></use></svg></button>`;else if (btn === 'textsettings') html_rte += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_rte += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_rte += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'tags') html_rte += customtag_button;else if (btn === 'removeformat') html_rte += `<button tabindex="-1" title="${util.out('Clean')}" class="rte-format" data-command="clean"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#icon-clean"></use></svg></button>`;else if (btn === 'font') html_rte += `<button tabindex="-1" title="${util.out('Font')}" class="rte-fontfamily"><span style="font-family:serif;font-size:18px;text-transform:none;display:inline-block;margin-top: -3px;">a</span></button>`;else if (btn === 'image') html_rte += `<button tabindex="-1" title="${util.out('Image')}" class="rte-image"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-image"></use></svg></button>`;else if (btn === 'gridtool') html_rte += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;width:17px;height:17px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_rte += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_rte += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_rte += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'undo') html_rte += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_rte += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_rte += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_rte += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="
|
89936
|
+
if (btn === 'bold') html_rte += `<button tabindex="-1" title="${util.out('Bold')}" class="rte-format" data-command="bold"><span style="font-family:serif;font-size:14px;">B</span></button>`;else if (btn === 'italic') html_rte += `<button tabindex="-1" title="${util.out('Italic')}" class="rte-format" data-command="italic"><span style="font-family:serif;font-size:16px;font-style:italic;">i</span></button>`;else if (btn === 'underline') html_rte += `<button tabindex="-1" title="${util.out('Underline')}" class="rte-format" data-command="underline"><span style="font-family:serif;font-size:14px;text-decoration:underline;">U</span></button>`;else if (btn === 'createlink') html_rte += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'align') html_rte += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'formatpara') html_rte += `<button tabindex="-1" title="${util.out('Paragraph')}" class="rte-paragraph"><span style="font-family:serif;font-size:14px;display:inline-block;margin-top:2px;">H</span></button>`;else if (btn === 'color') html_rte += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'formatting') html_rte += `<button tabindex="-1" title="${util.out('Formatting')}" class="rte-formatting"><span style="font-family:serif;font-size:15px;display:inline-block;">A</span></button>`;else if (btn === 'list') html_rte += `<button tabindex="-1" title="${util.out('List')}" class="rte-list"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#icon-list-bullet"></use></svg></button>`;else if (btn === 'textsettings') html_rte += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_rte += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_rte += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'tags') html_rte += customtag_button;else if (btn === 'removeformat') html_rte += `<button tabindex="-1" title="${util.out('Clean')}" class="rte-format" data-command="clean"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#icon-clean"></use></svg></button>`;else if (btn === 'font') html_rte += `<button tabindex="-1" title="${util.out('Font')}" class="rte-fontfamily"><span style="font-family:serif;font-size:18px;text-transform:none;display:inline-block;margin-top: -3px;">a</span></button>`;else if (btn === 'image') html_rte += `<button tabindex="-1" title="${util.out('Image')}" class="rte-image"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-image"></use></svg></button>`;else if (btn === 'gridtool') html_rte += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;width:17px;height:17px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_rte += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_rte += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_rte += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'undo') html_rte += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_rte += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_rte += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_rte += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="width:19px;height:19px;"><use xlink:href="#icon-snippets"></use></svg></button>`;else if (btn === 'more' && html_rtemore !== '') html_rte += `<button tabindex="-1" title="${util.out('More')}" class="rte-more"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-more"></use></svg></button>`;else if (btn === 'pageoptions') html_rte += `<button tabindex="-1" title="${util.out('Page Options')}" class="rte-pageoptions"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;transform:rotate(90deg)"><use xlink:href="#icon-pagesize"></use></svg></button>`;else if (btn === 'print') html_rte += `<button tabindex="-1" title="${util.out('Print')}" class="rte-print"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-print"></use></svg></button>`;else if (btn === 'zoom') html_rte += `<button tabindex="-1" title="${util.out('Zoom')}" class="rte-zoom"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-zoom-in"></use></svg></button>`;else if (btn === 'livepreview') html_rte += `<button tabindex="-1" title="${util.out('Live Preview')}" class="rte-livepreview"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-device-desktop"></use></svg></button>`;else if (btn === '|') {
|
89920
89937
|
html_rte += '<div class="rte-separator"></div>';
|
89921
89938
|
} else {
|
89922
89939
|
html_rte += `<button tabindex="-1" title="button not found" data-plugin="${btn}"></button>`; //temporary (later will be replaced with plugin button)
|
@@ -89934,7 +89951,7 @@ class Rte {
|
|
89934
89951
|
let html_elementrtemore = '';
|
89935
89952
|
for (j = 0; j < builder.opts.elementButtonsMore.length; j++) {
|
89936
89953
|
btn = builder.opts.elementButtonsMore[j].toLowerCase();
|
89937
|
-
if (btn === 'left') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Left')}" data-align="left"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-left"></use></svg></button>`;else if (btn === 'center') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Center')}" data-align="center"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-center"></use></svg></button>`;else if (btn === 'right') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Right')}" data-align="right"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-right"></use></svg></button>`;else if (btn === 'full') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Full')}" data-align="justify"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'gridtool') html_elementrtemore += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_elementrtemore += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_elementrtemore += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_elementrtemore += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'undo') html_elementrtemore += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_elementrtemore += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_elementrtemore += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_elementrtemore += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="margin-top:2px;width:
|
89954
|
+
if (btn === 'left') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Left')}" data-align="left"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-left"></use></svg></button>`;else if (btn === 'center') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Center')}" data-align="center"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-center"></use></svg></button>`;else if (btn === 'right') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Right')}" data-align="right"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-right"></use></svg></button>`;else if (btn === 'full') html_elementrtemore += `<button tabindex="-1" title="${util.out('Align Full')}" data-align="justify"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'gridtool') html_elementrtemore += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_elementrtemore += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_elementrtemore += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_elementrtemore += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'undo') html_elementrtemore += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_elementrtemore += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_elementrtemore += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_elementrtemore += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="width:19px;height:19px;"><use xlink:href="#icon-snippets"></use></svg></button>`;else if (btn === 'pageoptions') html_elementrtemore += `<button tabindex="-1" title="${util.out('Page Options')}" class="rte-pageoptions"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;transform:rotate(90deg)"><use xlink:href="#icon-pagesize"></use></svg></button>`;else if (btn === 'print') html_elementrtemore += `<button tabindex="-1" title="${util.out('Print')}" class="rte-print"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-print"></use></svg></button>`;else if (btn === 'zoom') html_elementrtemore += `<button tabindex="-1" title="${util.out('Zoom')}" class="rte-zoom"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-zoom-in"></use></svg></button>`;else if (btn === 'livepreview') html_elementrtemore += `<button tabindex="-1" title="${util.out('Live Preview')}" class="rte-livepreview"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-device-desktop"></use></svg></button>`;else if (btn === '|') {
|
89938
89955
|
html_elementrtemore += '<div class="rte-separator"></div>';
|
89939
89956
|
} else {
|
89940
89957
|
html_elementrtemore += `<button tabindex="-1" title="button not found" data-plugin="${btn}"></button>`; //temporary (later will be replaced with plugin button)
|
@@ -89944,7 +89961,7 @@ class Rte {
|
|
89944
89961
|
let html_elementrte = '';
|
89945
89962
|
for (j = 0; j < builder.opts.elementButtons.length; j++) {
|
89946
89963
|
btn = builder.opts.elementButtons[j].toLowerCase();
|
89947
|
-
if (btn === 'left') html_elementrte += `<button tabindex="-1" title="${util.out('Align Left')}" data-align="left"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-left"></use></svg></button>`;else if (btn === 'center') html_elementrte += `<button tabindex="-1" title="${util.out('Align Center')}" data-align="center"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-center"></use></svg></button>`;else if (btn === 'right') html_elementrte += `<button tabindex="-1" title="${util.out('Align Right')}" data-align="right"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-right"></use></svg></button>`;else if (btn === 'full') html_elementrte += `<button tabindex="-1" title="${util.out('Align Full')}" data-align="justify"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'gridtool') html_elementrte += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;width:17px;height:17px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_elementrte += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_elementrte += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_elementrte += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'group') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Group')}" class="rte-group"><svg class="is-icon-flex" style="width:20px;height:20px;margin-top:-1px;"><use xlink:href="#icon-group"></use></svg></button>`;else if (btn === 'ungroup') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Ungroup')}" class="rte-ungroup"><svg class="is-icon-flex" style="width:20px;height:20px;margin-top:-1px;"><use xlink:href="#icon-ungroup"></use></svg></button>`;else if (btn === 'duplicate') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Duplicate')}" class="rte-duplicate"><svg class="is-icon-flex" style="width:20px;height:20px;margin-top:-1px;"><use xlink:href="#icon-duplicate"></use></svg></button>`;else if (btn === 'front') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Bring to Front')}" class="rte-front"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-stack-forward"></use></svg></button>`;else if (btn === 'backward') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Send to Back')}" class="rte-backward"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-stack-backward"></use></svg></button>`;else if (btn === 'moveup') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Move Up')}" class="rte-moveup"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-arrow-up"></use></svg></button>`;else if (btn === 'movedown') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Move Down')}" class="rte-movedown"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-arrow-down"></use></svg></button>`;else if (btn === 'delete') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Delete')}" class="rte-delete"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-trash"></use></svg></button>`;else if (btn === 'blocksettings') html_elementrte += `<button
|
89964
|
+
if (btn === 'left') html_elementrte += `<button tabindex="-1" title="${util.out('Align Left')}" data-align="left"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-left"></use></svg></button>`;else if (btn === 'center') html_elementrte += `<button tabindex="-1" title="${util.out('Align Center')}" data-align="center"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-center"></use></svg></button>`;else if (btn === 'right') html_elementrte += `<button tabindex="-1" title="${util.out('Align Right')}" data-align="right"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-right"></use></svg></button>`;else if (btn === 'full') html_elementrte += `<button tabindex="-1" title="${util.out('Align Full')}" data-align="justify"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'gridtool') html_elementrte += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;width:17px;height:17px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_elementrte += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_elementrte += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_elementrte += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'group') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Group')}" class="rte-group"><svg class="is-icon-flex" style="width:20px;height:20px;margin-top:-1px;"><use xlink:href="#icon-group"></use></svg></button>`;else if (btn === 'ungroup') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Ungroup')}" class="rte-ungroup"><svg class="is-icon-flex" style="width:20px;height:20px;margin-top:-1px;"><use xlink:href="#icon-ungroup"></use></svg></button>`;else if (btn === 'duplicate') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Duplicate')}" class="rte-duplicate"><svg class="is-icon-flex" style="width:20px;height:20px;margin-top:-1px;"><use xlink:href="#icon-duplicate"></use></svg></button>`;else if (btn === 'front') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Bring to Front')}" class="rte-front"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-stack-forward"></use></svg></button>`;else if (btn === 'backward') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Send to Back')}" class="rte-backward"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-stack-backward"></use></svg></button>`;else if (btn === 'moveup') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Move Up')}" class="rte-moveup"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-arrow-up"></use></svg></button>`;else if (btn === 'movedown') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Move Down')}" class="rte-movedown"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-arrow-down"></use></svg></button>`;else if (btn === 'delete') html_elementrte += `<button style="display:none" tabindex="-1" title="${util.out('Delete')}" class="rte-delete"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#icon-trash"></use></svg></button>`;else if (btn === 'blocksettings' && this.builder.canvas) html_elementrte += `<button tabindex="-1" title="${util.out('Block Settings')}" class="rte-blocksettings"><svg class="is-icon-flex"><use xlink:href="#icon-settings"></use></svg></button>`;else if (btn === 'undo') html_elementrte += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_elementrte += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_elementrte += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_elementrte += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="width:19px;height:19px;"><use xlink:href="#icon-snippets"></use></svg></button>`;else if (btn === 'more' && html_elementrtemore !== '') html_elementrte += `<button tabindex="-1" title="${util.out('More')}" class="rte-more"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-more"></use></svg></button>`;else if (btn === 'pageoptions') html_elementrte += `<button tabindex="-1" title="${util.out('Page Options')}" class="rte-pageoptions"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;transform:rotate(90deg)"><use xlink:href="#icon-pagesize"></use></svg></button>`;else if (btn === 'print') html_elementrte += `<button tabindex="-1" title="${util.out('Print')}" class="rte-print"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-print"></use></svg></button>`;else if (btn === 'zoom') html_elementrte += `<button tabindex="-1" title="${util.out('Zoom')}" class="rte-zoom"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-zoom-in"></use></svg></button>`;else if (btn === 'livepreview') html_elementrte += `<button tabindex="-1" title="${util.out('Live Preview')}" class="rte-livepreview"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-device-desktop"></use></svg></button>`;else if (btn === '|') {
|
89948
89965
|
html_elementrte += '<div class="rte-separator"></div>';
|
89949
89966
|
} else {
|
89950
89967
|
html_elementrte += `<button tabindex="-1" title="button not found" data-plugin="${btn}"></button>`; //temporary (later will be replaced with plugin button)
|
@@ -89964,7 +89981,7 @@ class Rte {
|
|
89964
89981
|
let html_iconrte = '';
|
89965
89982
|
for (j = 0; j < builder.opts.iconButtonsMore.length; j++) {
|
89966
89983
|
btn = builder.opts.iconButtonsMore[j].toLowerCase();
|
89967
|
-
if (btn === 'createlink') html_iconrtemore += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_iconrtemore += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px;"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_iconrtemore += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px;"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'align') html_iconrtemore += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'color') html_iconrtemore += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'gridtool') html_iconrtemore += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_iconrtemore += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_iconrtemore += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_iconrtemore += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'textsettings') html_iconrtemore += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'undo') html_iconrtemore += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_iconrtemore += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_iconrtemore += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_iconrtemore += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="margin-top:2px;width:
|
89984
|
+
if (btn === 'createlink') html_iconrtemore += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_iconrtemore += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px;"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_iconrtemore += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px;"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'align') html_iconrtemore += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'color') html_iconrtemore += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'gridtool') html_iconrtemore += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_iconrtemore += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_iconrtemore += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_iconrtemore += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'textsettings') html_iconrtemore += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'undo') html_iconrtemore += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_iconrtemore += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_iconrtemore += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_iconrtemore += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="width:19px;height:19px;"><use xlink:href="#icon-snippets"></use></svg></button>`;else if (btn === 'pageoptions') html_iconrtemore += `<button tabindex="-1" title="${util.out('Page Options')}" class="rte-pageoptions"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;transform:rotate(90deg)"><use xlink:href="#icon-pagesize"></use></svg></button>`;else if (btn === 'print') html_iconrtemore += `<button tabindex="-1" title="${util.out('Print')}" class="rte-print"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-print"></use></svg></button>`;else if (btn === 'zoom') html_iconrtemore += `<button tabindex="-1" title="${util.out('Zoom')}" class="rte-zoom"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-zoom-in"></use></svg></button>`;else if (btn === 'livepreview') html_iconrtemore += `<button tabindex="-1" title="${util.out('Live Preview')}" class="rte-livepreview"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-device-desktop"></use></svg></button>`;else if (btn === '|') {
|
89968
89985
|
html_iconrtemore += '<div class="rte-separator"></div>';
|
89969
89986
|
} else {
|
89970
89987
|
html_iconrtemore += `<button tabindex="-1" title="button not found" data-plugin="${btn}"></button>`; //temporary (later will be replaced with plugin button)
|
@@ -89973,7 +89990,7 @@ class Rte {
|
|
89973
89990
|
|
89974
89991
|
for (j = 0; j < builder.opts.iconButtons.length; j++) {
|
89975
89992
|
btn = builder.opts.iconButtons[j].toLowerCase();
|
89976
|
-
if (btn === 'createlink') html_iconrte += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_iconrte += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px;"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_iconrte += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px;"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'align') html_iconrte += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'color') html_iconrte += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'gridtool') html_iconrte += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_iconrte += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_iconrte += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_iconrte += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'textsettings') html_iconrte += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'undo') html_iconrte += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_iconrte += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_iconrte += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_iconrte += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="margin-top:2px;width:
|
89993
|
+
if (btn === 'createlink') html_iconrte += `<button tabindex="-1" title="${util.out('Hyperlink')}" class="rte-link"><svg class="is-icon-flex" style="width:14px;height:14px;"><use xlink:href="#ion-link"></use></svg></button>`;else if (btn === 'icon' && !this.builder.opts.emailMode) html_iconrte += `<button tabindex="-1" title="${util.out('Icon')}" class="rte-icon"><svg class="is-icon-flex" style="width:14px;height:14px;margin-top:2px;"><use xlink:href="#ion-android-happy"></use></svg></button>`;else if (btn === 'svg' && !this.builder.opts.emailMode) html_iconrte += `<button tabindex="-1" title="${util.out('SVG')}" class="rte-svg"><svg class="is-icon-flex" style="width:19px;height:19px;margin-top:2px;"><use xlink:href="#icon-svg"></use></svg></button>`;else if (btn === 'align') html_iconrte += `<button tabindex="-1" title="${util.out('Align')}" class="rte-align"><svg class="is-icon-flex" style="width:12px;height:12px;margin-top:-2px;"><use xlink:href="#icon-align-full"></use></svg></button>`;else if (btn === 'color') html_iconrte += `<button tabindex="-1" title="${util.out('Color')}" class="rte-color"><svg class="is-icon-flex" style="width:12px;height:12px;"><use xlink:href="#ion-contrast"></use></svg></button>`;else if (btn === 'gridtool') html_iconrte += `<button tabindex="-1" title="${util.out('Grid Tool')}" class="rte-grideditor"><svg class="is-icon-flex" style="margin-right:-3px;"><use xlink:href="#ion-grid"></use></svg></button>`;else if (btn === 'html') html_iconrte += `<button tabindex="-1" title="${util.out('HTML')}" class="rte-html"><svg class="is-icon-flex" style="margin-right:-3px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-left"></use></svg><svg class="is-icon-flex" style="margin-left:-2px;width:14px;height:14px;"><use xlink:href="#ion-ios-arrow-right"></use></svg></button>`;else if (btn === 'preferences') html_iconrte += `<button tabindex="-1" title="${util.out('Preferences')}" class="rte-preferences"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-wrench"></use></svg></button>`;else if (btn === 'addsnippet') html_iconrte += `<button tabindex="-1" title="${util.out('Add Snippet')}" class="rte-addsnippet"><svg class="is-icon-flex" style="width:18px;height:18px;margin-top:-1px;"><use xlink:href="#ion-ios-plus-empty"></use></svg></button>`;else if (btn === 'textsettings') html_iconrte += `<button tabindex="-1" title="${util.out('Text Settings')}" class="rte-textsettings"><svg class="is-icon-flex" style="width:16px;height:16px;"><use xlink:href="#ion-ios-settings"></use></svg></button>`;else if (btn === 'undo') html_iconrte += `<button tabindex="-1" title="${util.out('Undo')}" class="rte-undo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-undo"></use></svg></button>`;else if (btn === 'redo') html_iconrte += `<button tabindex="-1" title="${util.out('Redo')}" class="rte-redo"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#ion-ios-redo"></use></svg></button>`;else if (btn === 'aiassistant') html_iconrte += `<button tabindex="-1" title="${util.out('AI Assistant')}" class="rte-ai"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-message"></use></svg></button>`;else if (btn === 'snippets') html_iconrte += `<button tabindex="-1" title="${util.out('Snippets')}" class="rte-snippets"><svg class="is-icon-flex" style="width:19px;height:19px;"><use xlink:href="#icon-snippets"></use></svg></button>`;else if (btn === 'pageoptions') html_iconrte += `<button tabindex="-1" title="${util.out('Page Options')}" class="rte-pageoptions"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;transform:rotate(90deg)"><use xlink:href="#icon-pagesize"></use></svg></button>`;else if (btn === 'print') html_iconrte += `<button tabindex="-1" title="${util.out('Print')}" class="rte-print"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-print"></use></svg></button>`;else if (btn === 'zoom') html_iconrte += `<button tabindex="-1" title="${util.out('Zoom')}" class="rte-zoom"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-zoom-in"></use></svg></button>`;else if (btn === 'livepreview') html_iconrte += `<button tabindex="-1" title="${util.out('Live Preview')}" class="rte-livepreview"><svg class="is-icon-flex" style="margin-top:2px;width:15px;height:15px;"><use xlink:href="#icon-device-desktop"></use></svg></button>`;else if (btn === 'more' && html_rtemore !== '') html_iconrte += `<button tabindex="-1" title="${util.out('More')}" class="rte-more"><svg class="is-icon-flex" style="width:13px;height:13px;"><use xlink:href="#ion-more"></use></svg></button>`;else if (btn === '|') {
|
89977
89994
|
html_iconrte += '<div class="rte-separator"></div>';
|
89978
89995
|
} else {
|
89979
89996
|
html_iconrte += `<button tabindex="-1" title="button not found" data-plugin="${btn}"></button>`; //temporary (later will be replaced with plugin button)
|
@@ -90118,7 +90135,7 @@ class Rte {
|
|
90118
90135
|
<div>
|
90119
90136
|
<div class="is-label">${util.out('Zoom')}</div>
|
90120
90137
|
<div style="padding-top:4px">
|
90121
|
-
<input type="range" min="50" max="
|
90138
|
+
<input type="range" min="50" max="${zoomMax}" value="1" class="rte-zoom-slider is-rangeslider">
|
90122
90139
|
</div>
|
90123
90140
|
</div>
|
90124
90141
|
</div>
|
@@ -91067,6 +91084,22 @@ class Rte {
|
|
91067
91084
|
});
|
91068
91085
|
});
|
91069
91086
|
|
91087
|
+
// Page Options
|
91088
|
+
let btnPageOptions = builderStuff.querySelectorAll('button.rte-pageoptions');
|
91089
|
+
btnPageOptions.forEach(btn => {
|
91090
|
+
btn.addEventListener('click', () => {
|
91091
|
+
this.builder.openPageOptions();
|
91092
|
+
});
|
91093
|
+
});
|
91094
|
+
|
91095
|
+
// Print
|
91096
|
+
let btnPrint = builderStuff.querySelectorAll('button.rte-print');
|
91097
|
+
btnPrint.forEach(btn => {
|
91098
|
+
btn.addEventListener('click', () => {
|
91099
|
+
this.builder.print();
|
91100
|
+
});
|
91101
|
+
});
|
91102
|
+
|
91070
91103
|
// Zoom Settings
|
91071
91104
|
let zoomButton = builderStuff.querySelectorAll('button.rte-zoom');
|
91072
91105
|
zoomButton.forEach(btn => {
|
@@ -91183,6 +91216,14 @@ class Rte {
|
|
91183
91216
|
tools.forEach(tool => {
|
91184
91217
|
tool.style.display = 'none';
|
91185
91218
|
});
|
91219
|
+
tools = this.builder.doc.querySelectorAll('.is-canvas-tool');
|
91220
|
+
tools.forEach(tool => {
|
91221
|
+
tool.style.display = 'none';
|
91222
|
+
});
|
91223
|
+
tools = this.builder.doc.querySelectorAll('.is-canvasadd-tool');
|
91224
|
+
tools.forEach(tool => {
|
91225
|
+
tool.style.display = 'none';
|
91226
|
+
});
|
91186
91227
|
tools = this.builder.doc.querySelectorAll('.is-rowadd-tool');
|
91187
91228
|
tools.forEach(tool => {
|
91188
91229
|
tool.style.opacity = 0;
|
@@ -91204,6 +91245,14 @@ class Rte {
|
|
91204
91245
|
tools.forEach(tool => {
|
91205
91246
|
tool.style.display = '';
|
91206
91247
|
});
|
91248
|
+
tools = this.builder.doc.querySelectorAll('.is-canvas-tool');
|
91249
|
+
tools.forEach(tool => {
|
91250
|
+
tool.style.display = '';
|
91251
|
+
});
|
91252
|
+
tools = this.builder.doc.querySelectorAll('.is-canvasadd-tool');
|
91253
|
+
tools.forEach(tool => {
|
91254
|
+
tool.style.display = '';
|
91255
|
+
});
|
91207
91256
|
}, 350);
|
91208
91257
|
};
|
91209
91258
|
this.rteZoomSlider.value = this.builder.opts.zoom * 100;
|
@@ -91239,9 +91288,13 @@ class Rte {
|
|
91239
91288
|
this.rteZoomSlider.onchange = () => {
|
91240
91289
|
setTimeout(() => {
|
91241
91290
|
// setZoomOnControl
|
91242
|
-
if (this.builder.
|
91291
|
+
if (this.builder.isContentBox) {
|
91243
91292
|
const wrapper = this.builder.doc.querySelector(this.builder.opts.page);
|
91244
91293
|
this.builder.setZoomOnControl(wrapper);
|
91294
|
+
} else if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
|
91295
|
+
// freeform
|
91296
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
91297
|
+
this.builder.setZoomOnControl(docContainer);
|
91245
91298
|
} else {
|
91246
91299
|
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
91247
91300
|
builders.forEach(builder => {
|
@@ -91292,9 +91345,13 @@ class Rte {
|
|
91292
91345
|
this.inpZoomSlider.onchange = () => {
|
91293
91346
|
setTimeout(() => {
|
91294
91347
|
// setZoomOnControl
|
91295
|
-
if (this.builder.
|
91348
|
+
if (this.builder.isContentBox) {
|
91296
91349
|
const wrapper = this.builder.doc.querySelector(this.builder.opts.page);
|
91297
91350
|
this.builder.setZoomOnControl(wrapper);
|
91351
|
+
} else if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
|
91352
|
+
// freeform
|
91353
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
91354
|
+
this.builder.setZoomOnControl(docContainer);
|
91298
91355
|
} else {
|
91299
91356
|
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
91300
91357
|
builders.forEach(builder => {
|
@@ -91316,6 +91373,14 @@ class Rte {
|
|
91316
91373
|
tools.forEach(tool => {
|
91317
91374
|
tool.style.display = '';
|
91318
91375
|
});
|
91376
|
+
tools = this.builder.doc.querySelectorAll('.is-canvas-tool');
|
91377
|
+
tools.forEach(tool => {
|
91378
|
+
tool.style.display = '';
|
91379
|
+
});
|
91380
|
+
tools = this.builder.doc.querySelectorAll('.is-canvasadd-tool');
|
91381
|
+
tools.forEach(tool => {
|
91382
|
+
tool.style.display = '';
|
91383
|
+
});
|
91319
91384
|
if (this.builder.onZoomEnd) {
|
91320
91385
|
let val = this.rteZoomSlider.value;
|
91321
91386
|
let scale = val / 100;
|
@@ -92376,6 +92441,14 @@ class Rte {
|
|
92376
92441
|
tools.forEach(tool => {
|
92377
92442
|
tool.style.display = 'none';
|
92378
92443
|
});
|
92444
|
+
tools = this.builder.doc.querySelectorAll('.is-canvas-tool');
|
92445
|
+
tools.forEach(tool => {
|
92446
|
+
tool.style.display = 'none';
|
92447
|
+
});
|
92448
|
+
tools = this.builder.doc.querySelectorAll('.is-canvasadd-tool');
|
92449
|
+
tools.forEach(tool => {
|
92450
|
+
tool.style.display = 'none';
|
92451
|
+
});
|
92379
92452
|
tools = this.builder.doc.querySelectorAll('.is-rowadd-tool');
|
92380
92453
|
tools.forEach(tool => {
|
92381
92454
|
tool.style.opacity = 0;
|
@@ -92389,9 +92462,13 @@ class Rte {
|
|
92389
92462
|
zoomEnd(inp) {
|
92390
92463
|
setTimeout(() => {
|
92391
92464
|
// setZoomOnControl
|
92392
|
-
if (this.builder.
|
92465
|
+
if (this.builder.isContentBox) {
|
92393
92466
|
const wrapper = this.builder.doc.querySelector(this.builder.opts.page);
|
92394
92467
|
this.builder.setZoomOnControl(wrapper);
|
92468
|
+
} else if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
|
92469
|
+
// freeform
|
92470
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
92471
|
+
this.builder.setZoomOnControl(docContainer);
|
92395
92472
|
} else {
|
92396
92473
|
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
92397
92474
|
builders.forEach(builder => {
|
@@ -92413,6 +92490,14 @@ class Rte {
|
|
92413
92490
|
tools.forEach(tool => {
|
92414
92491
|
tool.style.display = '';
|
92415
92492
|
});
|
92493
|
+
tools = this.builder.doc.querySelectorAll('.is-canvas-tool');
|
92494
|
+
tools.forEach(tool => {
|
92495
|
+
tool.style.display = '';
|
92496
|
+
});
|
92497
|
+
tools = this.builder.doc.querySelectorAll('.is-canvasadd-tool');
|
92498
|
+
tools.forEach(tool => {
|
92499
|
+
tool.style.display = '';
|
92500
|
+
});
|
92416
92501
|
if (this.builder.onZoomEnd) {
|
92417
92502
|
let val = inp.value;
|
92418
92503
|
let scale = val / 100;
|
@@ -93201,11 +93286,12 @@ class Rte {
|
|
93201
93286
|
Array.prototype.forEach.call(elms, elm => {
|
93202
93287
|
elm.style.display = 'none';
|
93203
93288
|
});
|
93204
|
-
elms = this.elementRteTool.querySelectorAll('.rte-blocksettings');
|
93205
|
-
Array.prototype.forEach.call(elms, elm => {
|
93206
|
-
|
93207
|
-
});
|
93289
|
+
// elms = this.elementRteTool.querySelectorAll('.rte-blocksettings');
|
93290
|
+
// Array.prototype.forEach.call(elms, (elm) => {
|
93291
|
+
// elm.style.display = 'none';
|
93292
|
+
// });
|
93208
93293
|
}
|
93294
|
+
|
93209
93295
|
showAlignButtons() {
|
93210
93296
|
let separators = this.elementRteTool.querySelectorAll('.rte-separator');
|
93211
93297
|
Array.prototype.forEach.call(separators, separator => {
|
@@ -96600,7 +96686,7 @@ class Rte {
|
|
96600
96686
|
addIcon(classname) {
|
96601
96687
|
const dom = this.dom;
|
96602
96688
|
this.util.restoreSelection();
|
96603
|
-
if (this.builder.activeIcon) {
|
96689
|
+
if (this.builder.activeIcon && this.builder.doc.contains(this.builder.activeIcon)) {
|
96604
96690
|
this.builder.uo.saveForUndo();
|
96605
96691
|
|
96606
96692
|
/*
|
@@ -96632,6 +96718,12 @@ class Rte {
|
|
96632
96718
|
this.builder.uo.saveForUndo();
|
96633
96719
|
this.util.pasteHtmlAtCaret('<i class="' + classname + ' icon-active"></i>', true);
|
96634
96720
|
this.builder.activeIcon = this.builder.doc.querySelector('.icon-active');
|
96721
|
+
|
96722
|
+
// this.util.pasteHtmlAtCaret('<i class="icon-active"></i>', true);
|
96723
|
+
// const newIcon = this.builder.doc.querySelector('.icon-active');
|
96724
|
+
// newIcon.className = classname + ' icon-active';
|
96725
|
+
// this.builder.activeIcon = newIcon;
|
96726
|
+
|
96635
96727
|
dom.selectElementContents(this.builder.activeIcon);
|
96636
96728
|
this.util.saveSelection();
|
96637
96729
|
}
|
@@ -97184,7 +97276,39 @@ class SaveImages {
|
|
97184
97276
|
}
|
97185
97277
|
uploadImages(area) {
|
97186
97278
|
if (!area) return;
|
97279
|
+
|
97187
97280
|
//Check all images
|
97281
|
+
|
97282
|
+
const divs = area.querySelectorAll('.is-overlay-bg,.is-container > div > div,.is-lightbox,.block-click');
|
97283
|
+
divs.forEach(div => {
|
97284
|
+
let src = '';
|
97285
|
+
if (div.style.backgroundImage) {
|
97286
|
+
if (div.style.backgroundImage.indexOf('url(') !== -1) {
|
97287
|
+
src = div.style.backgroundImage.slice(4, -1).replace(/["']/g, '');
|
97288
|
+
}
|
97289
|
+
} else if (div.classList.contains('is-lightbox')) {
|
97290
|
+
src = div.getAttribute('href');
|
97291
|
+
} else if (div.classList.contains('block-click')) {
|
97292
|
+
src = div.getAttribute('data-modal-url');
|
97293
|
+
}
|
97294
|
+
if (src.includes('base64')) {
|
97295
|
+
if (this.opts.onBase64Upload) {
|
97296
|
+
let ext = 'jpg';
|
97297
|
+
if (src.includes('image/png')) {
|
97298
|
+
ext = 'png';
|
97299
|
+
}
|
97300
|
+
|
97301
|
+
//Read image (base64 string)
|
97302
|
+
let image = src;
|
97303
|
+
image = image.replace(/^data:image\/(png|svg\+xml|jpeg);base64,/, '');
|
97304
|
+
let filename = this.builder.util.makeId() + '.' + ext; //img.getAttribute('data-filename');
|
97305
|
+
|
97306
|
+
// console.log(div)
|
97307
|
+
this.opts.onBase64Upload(div, image, filename); // target image, base64 string, filename
|
97308
|
+
}
|
97309
|
+
}
|
97310
|
+
});
|
97311
|
+
|
97188
97312
|
const images = area.querySelectorAll('img');
|
97189
97313
|
Array.prototype.forEach.call(images, img => {
|
97190
97314
|
let src = img.getAttribute('src');
|
@@ -105934,16 +106058,30 @@ ${answer}
|
|
105934
106058
|
}
|
105935
106059
|
|
105936
106060
|
getContainer() {
|
105937
|
-
let container, builderActive
|
106061
|
+
let container, builderActive;
|
105938
106062
|
builderActive = this.builder.doc.querySelector('.builder-active');
|
105939
106063
|
if (builderActive) container = builderActive;else {
|
105940
|
-
|
105941
|
-
|
106064
|
+
if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
|
106065
|
+
// canvas mode
|
105942
106066
|
let activeBlock = this.builder.doc.querySelector('.is-block.cloned');
|
105943
106067
|
if (!activeBlock) activeBlock = this.builder.doc.querySelector('.is-block.active');
|
105944
|
-
if (activeBlock)
|
105945
|
-
|
106068
|
+
if (activeBlock) {
|
106069
|
+
container = activeBlock.querySelector(this.builder.container);
|
106070
|
+
if (!container) container = this.builder.doc.querySelector(this.builder.container);
|
106071
|
+
} else {
|
106072
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106073
|
+
let blockContainer = docContainer.querySelector('.box-select');
|
106074
|
+
if (!blockContainer) {
|
106075
|
+
blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106076
|
+
}
|
106077
|
+
if (blockContainer) {
|
106078
|
+
container = blockContainer.querySelector(this.builder.container);
|
106079
|
+
} else {
|
106080
|
+
container = this.builder.doc.querySelector(this.builder.container);
|
106081
|
+
}
|
106082
|
+
}
|
105946
106083
|
} else {
|
106084
|
+
// standard mode
|
105947
106085
|
container = this.builder.doc.querySelector(this.builder.container);
|
105948
106086
|
}
|
105949
106087
|
}
|
@@ -105951,56 +106089,92 @@ ${answer}
|
|
105951
106089
|
}
|
105952
106090
|
renderImage(src) {
|
105953
106091
|
this.builder.saveForUndo();
|
106092
|
+
if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
|
106093
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106094
|
+
let blockContainer = docContainer.querySelector('.box-select');
|
106095
|
+
if (!blockContainer) {
|
106096
|
+
blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106097
|
+
}
|
106098
|
+
if (!blockContainer) {
|
106099
|
+
this.builder.addPage();
|
106100
|
+
blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106101
|
+
}
|
106102
|
+
let html = `
|
106103
|
+
<div class="is-block" style="top:15%;left:30%;width:760px;height:760px;">
|
106104
|
+
<div class="is-block-overlay" style="background-image: url("${src}");"></div>
|
106105
|
+
</div>
|
106106
|
+
`;
|
106107
|
+
this.builder.addBlock(html, blockContainer);
|
106108
|
+
this.builder.settings.onChange();
|
106109
|
+
this.builder.settings.onRender();
|
106110
|
+
return;
|
106111
|
+
}
|
105954
106112
|
let container = this.getContainer();
|
105955
106113
|
if (!container) {
|
105956
|
-
|
105957
|
-
|
105958
|
-
|
105959
|
-
|
105960
|
-
|
105961
|
-
|
105962
|
-
<div class="is-
|
105963
|
-
|
106114
|
+
/*
|
106115
|
+
if(this.builder.canvas) {
|
106116
|
+
// Canvas Mode
|
106117
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106118
|
+
if(docContainer) {
|
106119
|
+
|
106120
|
+
// <div class="is-block block-steady height-auto" style="top: calc(24.4455% - 37.646px);left: calc(50% - 332px);width: 664px;">
|
106121
|
+
// <div class="is-container leading-12 size-17">
|
106122
|
+
// <div class="row"><div class="column"><img src="${src}"></div></div>
|
106123
|
+
// </div>
|
106124
|
+
// </div>
|
106125
|
+
let html = `
|
106126
|
+
<div class="is-block" style="top:15%;left:30%;width:760px;height:760px;">
|
106127
|
+
<div class="is-block-overlay" style="background-image: url("${src}");"></div>
|
105964
106128
|
</div>
|
105965
|
-
|
105966
|
-
|
105967
|
-
|
105968
|
-
|
105969
|
-
|
105970
|
-
|
105971
|
-
|
105972
|
-
|
105973
|
-
this.builder.addBlock(html, blockContainer);
|
105974
|
-
}
|
105975
|
-
} else {
|
105976
|
-
this.util.showMessage(this.util.out('No text container found.'));
|
105977
|
-
this.dictation.finish(); // Must be called after finished
|
105978
|
-
return;
|
106129
|
+
`;
|
106130
|
+
const blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106131
|
+
this.builder.addBlock(html, blockContainer);
|
106132
|
+
}
|
106133
|
+
} else {
|
106134
|
+
this.util.showMessage(this.util.out('No text container found.'));
|
106135
|
+
this.dictation.finish(); // Must be called after finished
|
106136
|
+
return;
|
105979
106137
|
}
|
106138
|
+
*/
|
106139
|
+
this.util.showMessage(this.util.out('No text container found.'));
|
106140
|
+
this.dictation.finish(); // Must be called after finished
|
106141
|
+
return;
|
105980
106142
|
} else {
|
105981
|
-
|
105982
|
-
|
105983
|
-
|
105984
|
-
|
106143
|
+
/*
|
106144
|
+
if(this.builder.canvas) {
|
106145
|
+
// Canvas Mode
|
106146
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106147
|
+
if(docContainer) {
|
106148
|
+
|
106149
|
+
let html = `
|
106150
|
+
<div class="is-block" style="top:15%;left:30%;width:760px;height:760px;">
|
106151
|
+
<div class="is-block-overlay" style="background-image: url("${src}");"></div>
|
106152
|
+
</div>
|
106153
|
+
`;
|
106154
|
+
const blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106155
|
+
this.builder.addBlock(html, blockContainer);
|
106156
|
+
}
|
106157
|
+
} else {
|
106158
|
+
// Normal
|
105985
106159
|
let html = `
|
105986
|
-
|
105987
|
-
|
105988
|
-
|
105989
|
-
|
105990
|
-
|
105991
|
-
|
105992
|
-
|
105993
|
-
} else {
|
105994
|
-
// Normal
|
105995
|
-
let html = `
|
105996
|
-
<div class="row"><div class="column"><img src="${src}"></div></div>
|
105997
|
-
`;
|
105998
|
-
container.insertAdjacentHTML('afterBegin', html);
|
105999
|
-
setTimeout(() => {
|
106000
|
-
container.firstElementChild.click();
|
106001
|
-
}, 300);
|
106002
|
-
this.builder.applyBehaviorOn(container);
|
106160
|
+
<div class="row"><div class="column"><img src="${src}"></div></div>
|
106161
|
+
`;
|
106162
|
+
container.insertAdjacentHTML('afterBegin', html);
|
106163
|
+
setTimeout(()=>{
|
106164
|
+
container.firstElementChild.click();
|
106165
|
+
}, 300);
|
106166
|
+
this.builder.applyBehaviorOn(container);
|
106003
106167
|
}
|
106168
|
+
*/
|
106169
|
+
// Normal
|
106170
|
+
let html = `
|
106171
|
+
<div class="row"><div class="column"><img src="${src}"></div></div>
|
106172
|
+
`;
|
106173
|
+
container.insertAdjacentHTML('afterBegin', html);
|
106174
|
+
setTimeout(() => {
|
106175
|
+
container.firstElementChild.click();
|
106176
|
+
}, 300);
|
106177
|
+
this.builder.applyBehaviorOn(container);
|
106004
106178
|
}
|
106005
106179
|
this.builder.settings.onChange();
|
106006
106180
|
this.builder.settings.onRender();
|
@@ -106013,50 +106187,87 @@ ${answer}
|
|
106013
106187
|
if (elm) {
|
106014
106188
|
html = elm.innerHTML;
|
106015
106189
|
}
|
106190
|
+
if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer) {
|
106191
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106192
|
+
let blockContainer = docContainer.querySelector('.box-select');
|
106193
|
+
if (!blockContainer) {
|
106194
|
+
blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106195
|
+
}
|
106196
|
+
if (!blockContainer) {
|
106197
|
+
this.builder.addPage();
|
106198
|
+
blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106199
|
+
}
|
106200
|
+
html = `
|
106201
|
+
<div class="is-block block-steady height-auto" style="top: calc(24.4455% - 37.646px);left: calc(50% - 332px);width: 664px;">
|
106202
|
+
<div class="is-container leading-12 size-17">
|
106203
|
+
${html}
|
106204
|
+
</div>
|
106205
|
+
</div>
|
106206
|
+
`;
|
106207
|
+
this.builder.addBlock(html, blockContainer);
|
106208
|
+
this.builder.settings.onChange();
|
106209
|
+
this.builder.settings.onRender();
|
106210
|
+
return;
|
106211
|
+
}
|
106016
106212
|
let container = this.getContainer();
|
106017
106213
|
if (!container) {
|
106018
|
-
|
106019
|
-
|
106020
|
-
|
106021
|
-
|
106022
|
-
|
106023
|
-
|
106024
|
-
|
106025
|
-
|
106026
|
-
|
106027
|
-
|
106028
|
-
|
106029
|
-
|
106030
|
-
|
106031
|
-
|
106032
|
-
|
106033
|
-
|
106034
|
-
|
106035
|
-
|
106214
|
+
/*
|
106215
|
+
if(this.builder.canvas) {
|
106216
|
+
// Canvas Mode
|
106217
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106218
|
+
if(docContainer) {
|
106219
|
+
|
106220
|
+
html = `
|
106221
|
+
<div class="is-block block-steady height-auto" style="top: calc(24.4455% - 37.646px);left: calc(50% - 332px);width: 664px;">
|
106222
|
+
<div class="is-container leading-12 size-17">
|
106223
|
+
${html}
|
106224
|
+
</div>
|
106225
|
+
</div>
|
106226
|
+
`;
|
106227
|
+
const blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106228
|
+
this.builder.addBlock(html, blockContainer);
|
106229
|
+
}
|
106230
|
+
} else {
|
106231
|
+
this.util.showMessage(this.util.out('No text container found.'));
|
106232
|
+
this.dictation.finish(); // Must be called after finished
|
106233
|
+
return;
|
106036
106234
|
}
|
106235
|
+
*/
|
106236
|
+
this.util.showMessage(this.util.out('No text container found.'));
|
106237
|
+
this.dictation.finish(); // Must be called after finished
|
106238
|
+
return;
|
106037
106239
|
} else {
|
106038
|
-
|
106039
|
-
|
106040
|
-
|
106041
|
-
|
106042
|
-
|
106043
|
-
|
106044
|
-
|
106045
|
-
|
106046
|
-
|
106047
|
-
|
106048
|
-
|
106049
|
-
|
106050
|
-
|
106051
|
-
|
106052
|
-
|
106053
|
-
|
106054
|
-
|
106055
|
-
|
106056
|
-
container.
|
106057
|
-
|
106058
|
-
|
106240
|
+
/*
|
106241
|
+
if(this.builder.canvas) {
|
106242
|
+
// Canvas Mode
|
106243
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
106244
|
+
if(docContainer) {
|
106245
|
+
|
106246
|
+
html = `
|
106247
|
+
<div class="is-block block-steady height-auto" style="top: calc(24.4455% - 37.646px);left: calc(50% - 332px);width: 664px;">
|
106248
|
+
<div class="is-container leading-12 size-17">
|
106249
|
+
${html}
|
106250
|
+
</div>
|
106251
|
+
</div>
|
106252
|
+
`;
|
106253
|
+
const blockContainer = docContainer.querySelector(this.builder.blockContainer);
|
106254
|
+
this.builder.addBlock(html, blockContainer);
|
106255
|
+
}
|
106256
|
+
} else {
|
106257
|
+
// Normal
|
106258
|
+
container.insertAdjacentHTML('afterBegin', html);
|
106259
|
+
setTimeout(()=>{
|
106260
|
+
container.firstElementChild.click();
|
106261
|
+
}, 300);
|
106262
|
+
this.builder.applyBehaviorOn(container);
|
106059
106263
|
}
|
106264
|
+
*/
|
106265
|
+
// Normal
|
106266
|
+
container.insertAdjacentHTML('afterBegin', html);
|
106267
|
+
setTimeout(() => {
|
106268
|
+
container.firstElementChild.click();
|
106269
|
+
}, 300);
|
106270
|
+
this.builder.applyBehaviorOn(container);
|
106060
106271
|
}
|
106061
106272
|
this.builder.settings.onChange();
|
106062
106273
|
this.builder.settings.onRender();
|
@@ -106973,7 +107184,11 @@ class Common {
|
|
106973
107184
|
this.matrix3d = new Matrix3D();
|
106974
107185
|
return this.matrix3d.transform2d(block, x1, y1, x2, y2, x3, y3, x4, y4);
|
106975
107186
|
}
|
107187
|
+
setZoom(scale) {
|
107188
|
+
this.zoom = scale;
|
107189
|
+
}
|
106976
107190
|
applyPercentage(block) {
|
107191
|
+
const zoom = this.zoom;
|
106977
107192
|
const rect = this.getRect(block);
|
106978
107193
|
const container = block.parentNode;
|
106979
107194
|
let isChildBlock = false;
|
@@ -106984,11 +107199,11 @@ class Common {
|
|
106984
107199
|
|
106985
107200
|
// const containerRect = container.getBoundingClientRect(); // if container has top/left
|
106986
107201
|
const containerRect = this.getRect(container); // if container has top/left
|
106987
|
-
|
106988
|
-
|
107202
|
+
let left = (rect.left - containerRect.left) / container.offsetWidth * 100;
|
107203
|
+
let top = (rect.top - containerRect.top) / container.offsetHeight * 100;
|
106989
107204
|
let isBlockFixed = block.classList.contains('block-steady');
|
106990
107205
|
if (isBlockFixed) {
|
106991
|
-
let dividerTop = (container.offsetHeight - block.offsetHeight) / (rect.top - containerRect.top);
|
107206
|
+
let dividerTop = (container.offsetHeight - block.offsetHeight) / (rect.top - containerRect.top) * zoom;
|
106992
107207
|
if (isNaN(dividerTop)) {
|
106993
107208
|
// there is possibility of 0/0
|
106994
107209
|
dividerTop = 1;
|
@@ -106997,7 +107212,7 @@ class Common {
|
|
106997
107212
|
if (isChildBlock) {
|
106998
107213
|
block.style.top = top + '%';
|
106999
107214
|
}
|
107000
|
-
let dividerLeft = (container.offsetWidth - block.offsetWidth) / (rect.left - containerRect.left);
|
107215
|
+
let dividerLeft = (container.offsetWidth - block.offsetWidth) / (rect.left - containerRect.left) * zoom;
|
107001
107216
|
if (isNaN(dividerLeft)) {
|
107002
107217
|
// there is possibility of 0/0
|
107003
107218
|
dividerLeft = 1;
|
@@ -107018,16 +107233,17 @@ class Common {
|
|
107018
107233
|
const height = block.offsetHeight / container.offsetHeight * 100;
|
107019
107234
|
block.style.width = width + '%';
|
107020
107235
|
block.style.height = height + '%';
|
107021
|
-
block.style.top = top + '%';
|
107022
|
-
block.style.left = left + '%';
|
107236
|
+
block.style.top = top / zoom + '%';
|
107237
|
+
block.style.left = left / zoom + '%';
|
107023
107238
|
if (block.classList.contains('height-auto')) block.style.height = '';
|
107024
107239
|
}
|
107025
107240
|
}
|
107026
107241
|
applyPixels(block) {
|
107242
|
+
const zoom = this.zoom;
|
107027
107243
|
const rect = this.getRect(block);
|
107028
107244
|
const containerRect = this.getRect(block.parentNode); // if container has top/left
|
107029
|
-
block.style.left = rect.left - containerRect.left + 'px';
|
107030
|
-
block.style.top = rect.top - containerRect.top + 'px';
|
107245
|
+
block.style.left = (rect.left - containerRect.left) / zoom + 'px';
|
107246
|
+
block.style.top = (rect.top - containerRect.top) / zoom + 'px';
|
107031
107247
|
block.style.width = block.offsetWidth + 'px';
|
107032
107248
|
}
|
107033
107249
|
updateHeight(block) {
|
@@ -107463,6 +107679,9 @@ class Ruler {
|
|
107463
107679
|
this.verticalRulerCenter = this.doc.getElementById('vertical-ruler-center');
|
107464
107680
|
this.setup();
|
107465
107681
|
}
|
107682
|
+
setZoom(scale) {
|
107683
|
+
this.zoom = scale;
|
107684
|
+
}
|
107466
107685
|
setup() {
|
107467
107686
|
this.elements = this.doc.querySelectorAll(this.selector);
|
107468
107687
|
}
|
@@ -107492,6 +107711,8 @@ class Ruler {
|
|
107492
107711
|
if (transform.includes('rotate') || transform.includes('matrix3d')) return;
|
107493
107712
|
let parentTransform = block.parentNode.style.transform;
|
107494
107713
|
if (parentTransform.includes('rotate')) return;
|
107714
|
+
if (this.zoom * 1 !== 1) return; // disable rulers on zoomed page
|
107715
|
+
|
107495
107716
|
this.hideRulers();
|
107496
107717
|
const rect = block.getBoundingClientRect();
|
107497
107718
|
const top = rect.top;
|
@@ -107853,6 +108074,11 @@ class Resizable {
|
|
107853
108074
|
win: this.win
|
107854
108075
|
});
|
107855
108076
|
}
|
108077
|
+
setZoom(scale) {
|
108078
|
+
this.zoom = scale;
|
108079
|
+
this.common.setZoom(scale);
|
108080
|
+
this.ruler.setZoom(scale);
|
108081
|
+
}
|
107856
108082
|
setup() {
|
107857
108083
|
this.elements.forEach(element => {
|
107858
108084
|
element.querySelectorAll('.handle').forEach(elm => elm.parentNode.removeChild(elm));
|
@@ -108022,35 +108248,38 @@ class Resizable {
|
|
108022
108248
|
this.ruler.hideRulers();
|
108023
108249
|
}
|
108024
108250
|
resizeTopLeft(deltaX, deltaY) {
|
108025
|
-
|
108026
|
-
this.target.style.
|
108251
|
+
const zoom = this.zoom;
|
108252
|
+
this.target.style.left = this.initialLeft / zoom + deltaX + 'px';
|
108253
|
+
this.target.style.top = this.initialTop / zoom + deltaY + 'px';
|
108027
108254
|
this.target.style.width = this.initialWidth - deltaX + 'px';
|
108028
108255
|
this.target.style.height = this.initialHeight - deltaY + 'px';
|
108029
108256
|
if (this.clonedTarget) {
|
108030
|
-
this.clonedTarget.style.left = this.initialLeft + deltaX + 'px';
|
108031
|
-
this.clonedTarget.style.top = this.initialTop + deltaY + 'px';
|
108257
|
+
this.clonedTarget.style.left = this.initialLeft / zoom + deltaX + 'px';
|
108258
|
+
this.clonedTarget.style.top = this.initialTop / zoom + deltaY + 'px';
|
108032
108259
|
this.clonedTarget.style.width = this.initialWidth - deltaX + 'px';
|
108033
108260
|
this.clonedTarget.style.height = this.initialHeight - deltaY + 'px';
|
108034
108261
|
}
|
108035
108262
|
}
|
108036
108263
|
resizeTopRight(deltaX, deltaY) {
|
108264
|
+
const zoom = this.zoom;
|
108037
108265
|
this.target.style.width = this.initialWidth + deltaX + 'px';
|
108038
|
-
this.target.style.top = this.initialTop + deltaY + 'px';
|
108266
|
+
this.target.style.top = this.initialTop / zoom + deltaY + 'px';
|
108039
108267
|
this.target.style.height = this.initialHeight - deltaY + 'px';
|
108040
108268
|
if (this.clonedTarget) {
|
108041
108269
|
this.clonedTarget.style.width = this.initialWidth + deltaX + 'px';
|
108042
|
-
this.clonedTarget.style.top = this.initialTop + deltaY + 'px';
|
108270
|
+
this.clonedTarget.style.top = this.initialTop / zoom + deltaY + 'px';
|
108043
108271
|
this.clonedTarget.style.height = this.initialHeight - deltaY + 'px';
|
108044
108272
|
}
|
108045
108273
|
}
|
108046
108274
|
resizeBottomLeft(deltaX, deltaY) {
|
108275
|
+
const zoom = this.zoom;
|
108047
108276
|
this.target.style.width = this.initialWidth - deltaX + 'px';
|
108048
108277
|
this.target.style.height = this.initialHeight + deltaY + 'px';
|
108049
|
-
this.target.style.left = this.initialLeft + deltaX + 'px';
|
108278
|
+
this.target.style.left = this.initialLeft / zoom + deltaX + 'px';
|
108050
108279
|
if (this.clonedTarget) {
|
108051
108280
|
this.clonedTarget.style.width = this.initialWidth - deltaX + 'px';
|
108052
108281
|
this.clonedTarget.style.height = this.initialHeight + deltaY + 'px';
|
108053
|
-
this.clonedTarget.style.left = this.initialLeft + deltaX + 'px';
|
108282
|
+
this.clonedTarget.style.left = this.initialLeft / zoom + deltaX + 'px';
|
108054
108283
|
}
|
108055
108284
|
}
|
108056
108285
|
resizeBottomRight(deltaX, deltaY) {
|
@@ -108062,10 +108291,11 @@ class Resizable {
|
|
108062
108291
|
}
|
108063
108292
|
}
|
108064
108293
|
resizeTop(deltaY) {
|
108065
|
-
|
108294
|
+
const zoom = this.zoom;
|
108295
|
+
this.target.style.top = this.initialTop / zoom + deltaY + 'px';
|
108066
108296
|
this.target.style.height = this.initialHeight - deltaY + 'px';
|
108067
108297
|
if (this.clonedTarget) {
|
108068
|
-
this.clonedTarget.style.top = this.initialTop + deltaY + 'px';
|
108298
|
+
this.clonedTarget.style.top = this.initialTop / zoom + deltaY + 'px';
|
108069
108299
|
this.clonedTarget.style.height = this.initialHeight - deltaY + 'px';
|
108070
108300
|
}
|
108071
108301
|
}
|
@@ -108076,11 +108306,12 @@ class Resizable {
|
|
108076
108306
|
}
|
108077
108307
|
}
|
108078
108308
|
resizeLeft(deltaX) {
|
108309
|
+
const zoom = this.zoom;
|
108079
108310
|
this.target.style.width = this.initialWidth - deltaX + 'px';
|
108080
|
-
this.target.style.left = this.initialLeft + deltaX + 'px';
|
108311
|
+
this.target.style.left = this.initialLeft / zoom + deltaX + 'px';
|
108081
108312
|
if (this.clonedTarget) {
|
108082
108313
|
this.clonedTarget.style.width = this.initialWidth - deltaX + 'px';
|
108083
|
-
this.clonedTarget.style.left = this.initialLeft + deltaX + 'px';
|
108314
|
+
this.clonedTarget.style.left = this.initialLeft / zoom + deltaX + 'px';
|
108084
108315
|
}
|
108085
108316
|
}
|
108086
108317
|
resizeRight(deltaX) {
|
@@ -108155,20 +108386,36 @@ class Resizable {
|
|
108155
108386
|
|
108156
108387
|
const largeScreenBreakpoint = 1920; //1920
|
108157
108388
|
|
108158
|
-
|
108159
|
-
|
108160
|
-
|
108161
|
-
|
108162
|
-
|
108163
|
-
|
108164
|
-
|
108165
|
-
|
108389
|
+
let isPrint = false;
|
108390
|
+
let elmBox = target.closest('[data-pagesize]');
|
108391
|
+
if (elmBox) {
|
108392
|
+
if (elmBox.getAttribute('data-pagesize').includes('web')) ; else {
|
108393
|
+
isPrint = true;
|
108394
|
+
}
|
108395
|
+
}
|
108396
|
+
if (isPrint) {
|
108166
108397
|
target.setAttribute('data--t', target.style.top);
|
108167
108398
|
target.setAttribute('data--l', target.style.left);
|
108168
108399
|
target.setAttribute('data--b', target.style.bottom);
|
108169
108400
|
target.setAttribute('data--r', target.style.right);
|
108170
108401
|
target.setAttribute('data--w', target.style.width);
|
108171
108402
|
target.setAttribute('data--h', target.style.height);
|
108403
|
+
} else {
|
108404
|
+
if (breakpoint && breakpoint < largeScreenBreakpoint) {
|
108405
|
+
target.setAttribute('data--t-' + breakpoint, target.style.top);
|
108406
|
+
target.setAttribute('data--l-' + breakpoint, target.style.left);
|
108407
|
+
target.setAttribute('data--b-' + breakpoint, target.style.bottom);
|
108408
|
+
target.setAttribute('data--r-' + breakpoint, target.style.right);
|
108409
|
+
if (!target.classList.contains('fluid')) target.setAttribute('data--w-' + breakpoint, target.style.width);
|
108410
|
+
target.setAttribute('data--h-' + breakpoint, target.style.height);
|
108411
|
+
} else {
|
108412
|
+
target.setAttribute('data--t', target.style.top);
|
108413
|
+
target.setAttribute('data--l', target.style.left);
|
108414
|
+
target.setAttribute('data--b', target.style.bottom);
|
108415
|
+
target.setAttribute('data--r', target.style.right);
|
108416
|
+
target.setAttribute('data--w', target.style.width);
|
108417
|
+
target.setAttribute('data--h', target.style.height);
|
108418
|
+
}
|
108172
108419
|
}
|
108173
108420
|
target.removeAttribute('data-prev'); // reset
|
108174
108421
|
target.removeAttribute('data-fluid');
|
@@ -108211,6 +108458,11 @@ class Draggable {
|
|
108211
108458
|
win: this.win
|
108212
108459
|
});
|
108213
108460
|
}
|
108461
|
+
setZoom(scale) {
|
108462
|
+
this.zoom = scale;
|
108463
|
+
this.common.setZoom(scale);
|
108464
|
+
this.ruler.setZoom(scale);
|
108465
|
+
}
|
108214
108466
|
setup() {
|
108215
108467
|
this.elements = this.doc.querySelectorAll(this.selector);
|
108216
108468
|
this.elements.forEach(element => {
|
@@ -108351,8 +108603,9 @@ class Draggable {
|
|
108351
108603
|
const startY = target.getAttribute('data-starty');
|
108352
108604
|
const newX = x - startX;
|
108353
108605
|
const newY = y - startY;
|
108354
|
-
|
108355
|
-
target.style.
|
108606
|
+
const zoom = this.zoom;
|
108607
|
+
target.style.left = newX / zoom + 'px';
|
108608
|
+
target.style.top = newY / zoom + 'px';
|
108356
108609
|
}
|
108357
108610
|
}
|
108358
108611
|
handleDragEnd() {
|
@@ -108402,20 +108655,36 @@ class Draggable {
|
|
108402
108655
|
|
108403
108656
|
const largeScreenBreakpoint = 1920; //1920
|
108404
108657
|
|
108405
|
-
|
108406
|
-
|
108407
|
-
|
108408
|
-
|
108409
|
-
|
108410
|
-
|
108411
|
-
|
108412
|
-
|
108658
|
+
let isPrint = false;
|
108659
|
+
let elmBox = target.closest('[data-pagesize]');
|
108660
|
+
if (elmBox) {
|
108661
|
+
if (elmBox.getAttribute('data-pagesize').includes('web')) ; else {
|
108662
|
+
isPrint = true;
|
108663
|
+
}
|
108664
|
+
}
|
108665
|
+
if (isPrint) {
|
108413
108666
|
target.setAttribute('data--t', target.style.top);
|
108414
108667
|
target.setAttribute('data--l', target.style.left);
|
108415
108668
|
target.setAttribute('data--b', target.style.bottom);
|
108416
108669
|
target.setAttribute('data--r', target.style.right);
|
108417
108670
|
target.setAttribute('data--w', target.style.width);
|
108418
108671
|
target.setAttribute('data--h', target.style.height);
|
108672
|
+
} else {
|
108673
|
+
if (breakpoint && breakpoint < largeScreenBreakpoint) {
|
108674
|
+
target.setAttribute('data--t-' + breakpoint, target.style.top);
|
108675
|
+
target.setAttribute('data--l-' + breakpoint, target.style.left);
|
108676
|
+
target.setAttribute('data--b-' + breakpoint, target.style.bottom);
|
108677
|
+
target.setAttribute('data--r-' + breakpoint, target.style.right);
|
108678
|
+
if (!target.classList.contains('fluid')) target.setAttribute('data--w-' + breakpoint, target.style.width);
|
108679
|
+
target.setAttribute('data--h-' + breakpoint, target.style.height);
|
108680
|
+
} else {
|
108681
|
+
target.setAttribute('data--t', target.style.top);
|
108682
|
+
target.setAttribute('data--l', target.style.left);
|
108683
|
+
target.setAttribute('data--b', target.style.bottom);
|
108684
|
+
target.setAttribute('data--r', target.style.right);
|
108685
|
+
target.setAttribute('data--w', target.style.width);
|
108686
|
+
target.setAttribute('data--h', target.style.height);
|
108687
|
+
}
|
108419
108688
|
}
|
108420
108689
|
target.removeAttribute('data-prev'); // reset
|
108421
108690
|
target.removeAttribute('data-fluid');
|
@@ -108832,7 +109101,8 @@ class EditableBlocks {
|
|
108832
109101
|
// onMultipleSelect: () => {},
|
108833
109102
|
disableOnMobile: 0,
|
108834
109103
|
rotate: true,
|
108835
|
-
clone: true
|
109104
|
+
clone: true,
|
109105
|
+
zoom: 1
|
108836
109106
|
// onDelete: () = {}
|
108837
109107
|
};
|
108838
109108
|
|
@@ -109097,6 +109367,12 @@ class EditableBlocks {
|
|
109097
109367
|
win: this.win,
|
109098
109368
|
onDuplicate: this.onDuplicate
|
109099
109369
|
});
|
109370
|
+
this.setZoom(this.zoom);
|
109371
|
+
}
|
109372
|
+
setZoom(scale) {
|
109373
|
+
this.common.setZoom(scale);
|
109374
|
+
this.draggable.setZoom(scale);
|
109375
|
+
this.resizable.setZoom(scale);
|
109100
109376
|
}
|
109101
109377
|
duplicate() {
|
109102
109378
|
this.common.duplicate();
|
@@ -109192,32 +109468,58 @@ class BlockModal {
|
|
109192
109468
|
let html = `
|
109193
109469
|
<div class="is-modal is-modal-content editblock" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
|
109194
109470
|
<div class="is-modal-bar is-draggable">
|
109195
|
-
|
109471
|
+
<span class="modal-title"></span>
|
109196
109472
|
<button class="is-modal-close" tabindex="-1" title="${util.out('Close')}">✕</button>
|
109197
109473
|
</div>
|
109198
|
-
<div class="modal-none" style="
|
109199
|
-
|
109474
|
+
<div class="modal-none" style="display:none;padding-bottom:28px;">
|
109475
|
+
|
109476
|
+
<div>${util.out('Please select a block or page.')}</div>
|
109477
|
+
|
109200
109478
|
</div>
|
109479
|
+
|
109480
|
+
<div class="modal-page-content" style="display:none;padding-bottom:28px;">
|
109481
|
+
|
109482
|
+
<div style="padding-bottom: 3px;">${util.out('Background Color')}:</div>
|
109483
|
+
<div style="display:flex;">
|
109484
|
+
<button title="${util.out('Background Color')}" class="input-page-bgcolor is-btn-color" style="margin-right:15px"></button>
|
109485
|
+
<button title="${util.out('Gradient')}" class="btn-page-gradient classic" data-value="+"> ${util.out('Gradient')} </button>
|
109486
|
+
</div>
|
109487
|
+
|
109488
|
+
<div style="padding-top:20px;padding-bottom: 3px;">${util.out('Background Image')}:</div>
|
109489
|
+
<div>
|
109490
|
+
<div class="asset-page-preview" style="display:none"></div>
|
109491
|
+
<div style="display: flex">
|
109492
|
+
<button title="${util.out('Image')}" class="btn-page-bgimage">
|
109493
|
+
<svg class="is-icon-flex"><use xlink:href="#ion-image"></use></svg>
|
109494
|
+
<span>${util.out('Image')}</span>
|
109495
|
+
</button>
|
109496
|
+
<button title="${util.out('Select')}" class="btn-page-asset">${this.builder.opts.selectIcon}</button>
|
109497
|
+
<button title="${util.out('Remove')}" class="btn-page-clear"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#icon-clean"></use></svg></button>
|
109498
|
+
<button title="${util.out('Adjust')}" class="btn-page-adjust" style="width:40px"><svg class="is-icon-flex"><use xlink:href="#ion-wrench"></use></svg></button>
|
109499
|
+
</div>
|
109500
|
+
</div>
|
109501
|
+
|
109502
|
+
</div>
|
109503
|
+
|
109201
109504
|
<div class="modal-content">
|
109202
109505
|
|
109203
109506
|
<div style="padding-bottom: 3px;">${util.out('Background Color')}:</div>
|
109204
109507
|
<div style="display:flex;">
|
109205
109508
|
<button title="${util.out('Background Color')}" class="input-block-bgcolor is-btn-color" style="margin-right:15px"></button>
|
109206
|
-
<button title="${util.out('Gradient')}" class="btn-gradient classic" data-value="+"> ${util.out('Gradient')} </button>
|
109509
|
+
<button title="${util.out('Gradient')}" class="btn-block-gradient classic" data-value="+"> ${util.out('Gradient')} </button>
|
109207
109510
|
</div>
|
109208
109511
|
|
109209
109512
|
<div style="padding-top:20px;padding-bottom: 3px;">${util.out('Background Image')}:</div>
|
109210
109513
|
<div>
|
109211
|
-
<div class="asset-preview" style="display:none"></div>
|
109514
|
+
<div class="asset-block-preview" style="display:none"></div>
|
109212
109515
|
<div style="display: flex">
|
109213
|
-
<
|
109214
|
-
<button title="${util.out('Image')}" class="btn-bgimage">
|
109516
|
+
<button title="${util.out('Image')}" class="btn-block-bgimage">
|
109215
109517
|
<svg class="is-icon-flex"><use xlink:href="#ion-image"></use></svg>
|
109216
109518
|
<span>${util.out('Image')}</span>
|
109217
109519
|
</button>
|
109218
|
-
<button title="${util.out('Select')}" class="btn-asset">${this.builder.opts.selectIcon}</button>
|
109219
|
-
<button title="${util.out('Remove')}" class="btn-clear"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#icon-clean"></use></svg></button>
|
109220
|
-
<button title="${util.out('Adjust')}" class="btn-adjust" style="width:40px"><svg class="is-icon-flex"><use xlink:href="#ion-wrench"></use></svg></button>
|
109520
|
+
<button title="${util.out('Select')}" class="btn-block-asset">${this.builder.opts.selectIcon}</button>
|
109521
|
+
<button title="${util.out('Remove')}" class="btn-block-clear"><svg class="is-icon-flex" style="width:11px;height:11px;"><use xlink:href="#icon-clean"></use></svg></button>
|
109522
|
+
<button title="${util.out('Adjust')}" class="btn-block-adjust" style="width:40px"><svg class="is-icon-flex"><use xlink:href="#ion-wrench"></use></svg></button>
|
109221
109523
|
</div>
|
109222
109524
|
</div>
|
109223
109525
|
|
@@ -109339,9 +109641,49 @@ class BlockModal {
|
|
109339
109641
|
this.hide();
|
109340
109642
|
});
|
109341
109643
|
|
109342
|
-
// Background color
|
109644
|
+
// Page Background color
|
109645
|
+
|
109646
|
+
const btnPageGradient = modal.querySelector('.btn-page-gradient');
|
109647
|
+
const btnPageColorPick = modal.querySelector('.input-page-bgcolor');
|
109648
|
+
btnPageColorPick.addEventListener('click', () => {
|
109649
|
+
this.builder.uo.saveForUndo(true); // checkLater = true
|
109650
|
+
|
109651
|
+
let page = this.getPage();
|
109652
|
+
let bgcolor = btnPageColorPick.style.backgroundColor;
|
109653
|
+
this.builder.colorPicker.open(s => {
|
109654
|
+
page.style.backgroundColor = s;
|
109655
|
+
if (page.style.backgroundImage && page.style.backgroundImage.includes('gradient')) {
|
109656
|
+
page.style.backgroundImage = ''; // remove gradient
|
109657
|
+
btnPageGradient.style.backgroundImage = ''; // preview
|
109658
|
+
}
|
109343
109659
|
|
109344
|
-
|
109660
|
+
btnPageColorPick.style.backgroundColor = s; // preview
|
109661
|
+
|
109662
|
+
this.builder.onChange();
|
109663
|
+
}, bgcolor, () => {
|
109664
|
+
btnPageColorPick.removeAttribute('data-focus');
|
109665
|
+
btnPageColorPick.focus();
|
109666
|
+
});
|
109667
|
+
btnPageColorPick.setAttribute('data-focus', true);
|
109668
|
+
});
|
109669
|
+
btnPageGradient.addEventListener('click', () => {
|
109670
|
+
this.builder.uo.saveForUndo(true); // checkLater = true
|
109671
|
+
|
109672
|
+
let page = this.getPage();
|
109673
|
+
let gradientPicker = this.builder.gradientpicker();
|
109674
|
+
gradientPicker.open(page, () => {
|
109675
|
+
page.style.backgroundColor = '';
|
109676
|
+
btnPageColorPick.style.backgroundColor = ''; // preview
|
109677
|
+
|
109678
|
+
this.updatePanelImage('');
|
109679
|
+
this.builder.onChange();
|
109680
|
+
btnPageGradient.style.backgroundImage = page.style.backgroundImage; // preview
|
109681
|
+
});
|
109682
|
+
});
|
109683
|
+
|
109684
|
+
// Block Background color
|
109685
|
+
|
109686
|
+
const btnGradient = modal.querySelector('.btn-block-gradient');
|
109345
109687
|
const btnColorPick = modal.querySelector('.input-block-bgcolor');
|
109346
109688
|
btnColorPick.addEventListener('click', () => {
|
109347
109689
|
this.builder.uo.saveForUndo(true); // checkLater = true
|
@@ -109379,10 +109721,63 @@ class BlockModal {
|
|
109379
109721
|
});
|
109380
109722
|
});
|
109381
109723
|
|
109382
|
-
// Background Image
|
109724
|
+
// Page Background Image
|
109725
|
+
|
109726
|
+
this.pageImagePreview = modal.querySelector('.asset-page-preview');
|
109727
|
+
const btnPageBgImage = modal.querySelector('.btn-page-bgimage');
|
109728
|
+
if (btnPageBgImage) dom.addEventListener(btnPageBgImage, 'click', () => {
|
109729
|
+
// Background image
|
109730
|
+
const page = this.getPage();
|
109731
|
+
let src = '';
|
109732
|
+
if (page) if (page.style.backgroundImage) {
|
109733
|
+
if (page.style.backgroundImage.indexOf('url(') !== -1) {
|
109734
|
+
src = page.style.backgroundImage.slice(4, -1).replace(/["']/g, '');
|
109735
|
+
}
|
109736
|
+
}
|
109737
|
+
this.openImagePicker(src, url => {
|
109738
|
+
const page = this.getPage();
|
109739
|
+
this.builder.uo.saveForUndo();
|
109740
|
+
page.style.backgroundImage = `url("${url}")`;
|
109741
|
+
page.style.backgroundSize = 'cover';
|
109742
|
+
page.style.backgroundRepeat = 'no-repeat';
|
109743
|
+
const div = this.pageImagePreview;
|
109744
|
+
const btnPageAdjust = modal.querySelector('.btn-page-adjust');
|
109745
|
+
const btnPageClear = modal.querySelector('.btn-page-clear');
|
109746
|
+
btnPageAdjust.style.display = 'none';
|
109747
|
+
btnPageClear.style.display = 'none';
|
109748
|
+
if (url !== '') {
|
109749
|
+
div.innerHTML = `<img src="${url}">`;
|
109750
|
+
btnPageAdjust.style.display = 'flex';
|
109751
|
+
btnPageClear.style.display = 'flex';
|
109752
|
+
} else {
|
109753
|
+
div.innerHTML = '';
|
109754
|
+
}
|
109755
|
+
this.builder.onChange();
|
109756
|
+
}, btnPageBgImage);
|
109757
|
+
});
|
109758
|
+
const btnPageOpenAsset = modal.querySelector('.btn-page-asset');
|
109759
|
+
btnPageOpenAsset.addEventListener('click', () => {
|
109760
|
+
this.builder.openAssetSelect('image', src => {
|
109761
|
+
this.updatePageImage(src);
|
109762
|
+
}, btnPageOpenAsset);
|
109763
|
+
});
|
109383
109764
|
|
109384
|
-
|
109385
|
-
|
109765
|
+
// Show/hide button
|
109766
|
+
if (!(this.builder.onImageSelectClick || this.builder.imageSelect)) btnPageOpenAsset.style.display = 'none';
|
109767
|
+
const btnPageClear = modal.querySelector('.btn-page-clear');
|
109768
|
+
btnPageClear.addEventListener('click', () => {
|
109769
|
+
this.updatePageImage('');
|
109770
|
+
});
|
109771
|
+
const btnPageAdjust = modal.querySelector('.btn-page-adjust');
|
109772
|
+
btnPageAdjust.addEventListener('click', () => {
|
109773
|
+
let page = this.getPage();
|
109774
|
+
this.builder.colTool.openImageAdjust(page, btnPageAdjust);
|
109775
|
+
});
|
109776
|
+
|
109777
|
+
// Block Background Image
|
109778
|
+
|
109779
|
+
this.imagePreview = modal.querySelector('.asset-block-preview');
|
109780
|
+
const btnBgImage = modal.querySelector('.btn-block-bgimage');
|
109386
109781
|
if (btnBgImage) dom.addEventListener(btnBgImage, 'click', () => {
|
109387
109782
|
// Background image
|
109388
109783
|
const blockOverlay = this.blockOverlay();
|
@@ -109399,8 +109794,8 @@ class BlockModal {
|
|
109399
109794
|
blockOverlay.style.backgroundSize = 'cover';
|
109400
109795
|
blockOverlay.style.backgroundRepeat = 'no-repeat';
|
109401
109796
|
const div = this.imagePreview;
|
109402
|
-
const btnAdjust = modal.querySelector('.btn-adjust');
|
109403
|
-
const btnClear = modal.querySelector('.btn-clear');
|
109797
|
+
const btnAdjust = modal.querySelector('.btn-block-adjust');
|
109798
|
+
const btnClear = modal.querySelector('.btn-block-clear');
|
109404
109799
|
btnAdjust.style.display = 'none';
|
109405
109800
|
btnClear.style.display = 'none';
|
109406
109801
|
if (url !== '') {
|
@@ -109413,7 +109808,7 @@ class BlockModal {
|
|
109413
109808
|
this.builder.onChange();
|
109414
109809
|
}, btnBgImage);
|
109415
109810
|
});
|
109416
|
-
const btnOpenAsset = modal.querySelector('.btn-asset');
|
109811
|
+
const btnOpenAsset = modal.querySelector('.btn-block-asset');
|
109417
109812
|
btnOpenAsset.addEventListener('click', () => {
|
109418
109813
|
this.builder.openAssetSelect('image', src => {
|
109419
109814
|
this.updateImage(src);
|
@@ -109422,11 +109817,11 @@ class BlockModal {
|
|
109422
109817
|
|
109423
109818
|
// Show/hide button
|
109424
109819
|
if (!(this.builder.onImageSelectClick || this.builder.imageSelect)) btnOpenAsset.style.display = 'none';
|
109425
|
-
const btnClear = modal.querySelector('.btn-clear');
|
109820
|
+
const btnClear = modal.querySelector('.btn-block-clear');
|
109426
109821
|
btnClear.addEventListener('click', () => {
|
109427
109822
|
this.updateImage('');
|
109428
109823
|
});
|
109429
|
-
const btnAdjust = modal.querySelector('.btn-adjust');
|
109824
|
+
const btnAdjust = modal.querySelector('.btn-block-adjust');
|
109430
109825
|
btnAdjust.addEventListener('click', () => {
|
109431
109826
|
let blockOverlay = this.blockOverlay();
|
109432
109827
|
this.builder.colTool.openImageAdjust(blockOverlay, btnAdjust);
|
@@ -109629,6 +110024,7 @@ class BlockModal {
|
|
109629
110024
|
target.classList.add('locked');
|
109630
110025
|
this.builder.eb.draggable.disableDrag(target);
|
109631
110026
|
this.lock(target);
|
110027
|
+
this.realtime();
|
109632
110028
|
});
|
109633
110029
|
} else {
|
109634
110030
|
elms.forEach(target => {
|
@@ -109657,6 +110053,12 @@ class BlockModal {
|
|
109657
110053
|
}
|
109658
110054
|
});
|
109659
110055
|
}
|
110056
|
+
} // constructor
|
110057
|
+
|
110058
|
+
getPage() {
|
110059
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
110060
|
+
const page = docContainer.querySelector('.box-select');
|
110061
|
+
return page;
|
109660
110062
|
}
|
109661
110063
|
lock() {
|
109662
110064
|
// target
|
@@ -109698,66 +110100,82 @@ class BlockModal {
|
|
109698
110100
|
}
|
109699
110101
|
realtime() {
|
109700
110102
|
const modal = this.modal;
|
110103
|
+
const page = this.getPage();
|
110104
|
+
const block = this.blockSelected();
|
110105
|
+
if (block) {
|
110106
|
+
const btnClearBreakpoints = modal.querySelector('.btn-clear-breakpoint');
|
110107
|
+
let hasBreakpoints = false;
|
110108
|
+
var attributes = block.attributes;
|
110109
|
+
for (var i = 0; i < attributes.length; i++) {
|
110110
|
+
let item = attributes[i].name;
|
110111
|
+
if (item.includes('data--t-') || item.includes('data--b-' )) {
|
110112
|
+
// has breakpoints
|
110113
|
+
hasBreakpoints = true;
|
110114
|
+
}
|
110115
|
+
}
|
110116
|
+
if (hasBreakpoints) {
|
110117
|
+
btnClearBreakpoints.style.display = '';
|
110118
|
+
} else {
|
110119
|
+
btnClearBreakpoints.style.display = 'none';
|
110120
|
+
}
|
109701
110121
|
|
109702
|
-
|
109703
|
-
|
109704
|
-
|
109705
|
-
|
109706
|
-
|
109707
|
-
|
110122
|
+
// Background image
|
110123
|
+
const blockOverlay = this.blockOverlay();
|
110124
|
+
let src = '';
|
110125
|
+
if (blockOverlay) if (blockOverlay.style.backgroundImage) {
|
110126
|
+
if (blockOverlay.style.backgroundImage.indexOf('url(') !== -1) {
|
110127
|
+
src = blockOverlay.style.backgroundImage.slice(4, -1).replace(/["']/g, '');
|
110128
|
+
}
|
109708
110129
|
}
|
109709
|
-
}
|
109710
110130
|
|
109711
|
-
|
109712
|
-
|
110131
|
+
// Update preview
|
110132
|
+
this.updatePanelImage(src);
|
109713
110133
|
|
109714
|
-
|
109715
|
-
|
109716
|
-
|
109717
|
-
|
109718
|
-
|
109719
|
-
|
109720
|
-
|
109721
|
-
|
109722
|
-
|
110134
|
+
// Show/hide grayscale
|
110135
|
+
const divGrayscale = modal.querySelector('.label.grayscale');
|
110136
|
+
if (src === '') {
|
110137
|
+
this.imagePreview.style.display = 'none';
|
110138
|
+
divGrayscale.style.display = 'none';
|
110139
|
+
} else {
|
110140
|
+
this.imagePreview.style.display = '';
|
110141
|
+
divGrayscale.style.display = '';
|
110142
|
+
}
|
109723
110143
|
|
109724
|
-
|
109725
|
-
|
109726
|
-
|
109727
|
-
|
109728
|
-
|
109729
|
-
|
109730
|
-
|
110144
|
+
// Grayscale
|
110145
|
+
const chkGrayscale = modal.querySelector('.chk-grayscale');
|
110146
|
+
chkGrayscale.checked = false;
|
110147
|
+
if (blockOverlay) {
|
110148
|
+
if (blockOverlay.style.filter) {
|
110149
|
+
if (blockOverlay.style.filter.indexOf('grayscale') !== -1) {
|
110150
|
+
chkGrayscale.checked = true;
|
110151
|
+
}
|
109731
110152
|
}
|
109732
110153
|
}
|
109733
|
-
}
|
109734
110154
|
|
109735
|
-
|
109736
|
-
|
109737
|
-
|
109738
|
-
|
109739
|
-
|
109740
|
-
|
109741
|
-
|
109742
|
-
|
110155
|
+
// Background color
|
110156
|
+
const btnColorPick = modal.querySelector('.input-block-bgcolor');
|
110157
|
+
if (blockOverlay) {
|
110158
|
+
let bgcolor = blockOverlay.style.backgroundColor;
|
110159
|
+
btnColorPick.style.backgroundColor = bgcolor; //preview
|
110160
|
+
} else {
|
110161
|
+
btnColorPick.style.backgroundColor = ''; //preview
|
110162
|
+
}
|
109743
110163
|
|
109744
|
-
|
109745
|
-
|
109746
|
-
|
109747
|
-
|
109748
|
-
|
110164
|
+
// Gradient
|
110165
|
+
const btnGradient = modal.querySelector('.btn-block-gradient');
|
110166
|
+
if (blockOverlay) {
|
110167
|
+
if (blockOverlay.style.backgroundImage && blockOverlay.style.backgroundImage.includes('gradient')) {
|
110168
|
+
btnGradient.style.backgroundImage = blockOverlay.style.backgroundImage;
|
110169
|
+
} else {
|
110170
|
+
btnGradient.style.backgroundImage = '';
|
110171
|
+
}
|
109749
110172
|
} else {
|
109750
110173
|
btnGradient.style.backgroundImage = '';
|
109751
110174
|
}
|
109752
|
-
|
109753
|
-
|
109754
|
-
|
109755
|
-
|
109756
|
-
btnClearText.style.display = 'none';
|
109757
|
-
const divContentColor = modal.querySelector('.div-content-textcolor');
|
109758
|
-
divContentColor.style.display = 'none';
|
109759
|
-
const block = this.blockSelected();
|
109760
|
-
if (block) {
|
110175
|
+
const btnClearText = modal.querySelector('.btn-clear-text');
|
110176
|
+
btnClearText.style.display = 'none';
|
110177
|
+
const divContentColor = modal.querySelector('.div-content-textcolor');
|
110178
|
+
divContentColor.style.display = 'none';
|
109761
110179
|
if (block.querySelector('.is-container')) {
|
109762
110180
|
btnClearText.style.display = '';
|
109763
110181
|
divContentColor.style.display = '';
|
@@ -109875,6 +110293,45 @@ class BlockModal {
|
|
109875
110293
|
inpHeight.value = '';
|
109876
110294
|
inpHeightUnit.value = '%';
|
109877
110295
|
}
|
110296
|
+
} else if (page) {
|
110297
|
+
// Background image
|
110298
|
+
let src = '';
|
110299
|
+
if (page) if (page.style.backgroundImage) {
|
110300
|
+
if (page.style.backgroundImage.indexOf('url(') !== -1) {
|
110301
|
+
src = page.style.backgroundImage.slice(4, -1).replace(/["']/g, '');
|
110302
|
+
}
|
110303
|
+
}
|
110304
|
+
|
110305
|
+
// Update preview
|
110306
|
+
this.updatePanelPageImage(src);
|
110307
|
+
|
110308
|
+
// Show/hide
|
110309
|
+
if (src === '') {
|
110310
|
+
this.pageImagePreview.style.display = 'none';
|
110311
|
+
} else {
|
110312
|
+
this.pageImagePreview.style.display = '';
|
110313
|
+
}
|
110314
|
+
|
110315
|
+
// Background color
|
110316
|
+
const btnPageColorPick = modal.querySelector('.input-page-bgcolor');
|
110317
|
+
if (page) {
|
110318
|
+
let bgcolor = page.style.backgroundColor;
|
110319
|
+
btnPageColorPick.style.backgroundColor = bgcolor; //preview
|
110320
|
+
} else {
|
110321
|
+
btnPageColorPick.style.backgroundColor = ''; //preview
|
110322
|
+
}
|
110323
|
+
|
110324
|
+
// Gradient
|
110325
|
+
const btnPageGradient = modal.querySelector('.btn-page-gradient');
|
110326
|
+
if (page) {
|
110327
|
+
if (page.style.backgroundImage && page.style.backgroundImage.includes('gradient')) {
|
110328
|
+
btnPageGradient.style.backgroundImage = page.style.backgroundImage;
|
110329
|
+
} else {
|
110330
|
+
btnPageGradient.style.backgroundImage = '';
|
110331
|
+
}
|
110332
|
+
} else {
|
110333
|
+
btnPageGradient.style.backgroundImage = '';
|
110334
|
+
}
|
109878
110335
|
}
|
109879
110336
|
}
|
109880
110337
|
openImagePicker(currentUrl, callback, btn) {
|
@@ -109896,6 +110353,43 @@ class BlockModal {
|
|
109896
110353
|
}, false, this.builder.assetPanelFullScreen);
|
109897
110354
|
if (btn) btn.setAttribute('data-focus', true);
|
109898
110355
|
}
|
110356
|
+
updatePageImage(src) {
|
110357
|
+
this.builder.uo.saveForUndo();
|
110358
|
+
let page = this.getPage();
|
110359
|
+
page.style.backgroundImage = 'url(\'' + src + '\')';
|
110360
|
+
|
110361
|
+
// Reset position & filter (grayscale)
|
110362
|
+
page.style.filter = '';
|
110363
|
+
page.style.backgroundSize = '';
|
110364
|
+
page.style.backgroundPosition = '50% 60%';
|
110365
|
+
page.removeAttribute('data-bg-xs');
|
110366
|
+
page.removeAttribute('data-bg-sm');
|
110367
|
+
page.removeAttribute('data-bg-md');
|
110368
|
+
page.removeAttribute('data-bg-lg');
|
110369
|
+
this.updatePanelPageImage(src);
|
110370
|
+
this.builder.onChange();
|
110371
|
+
}
|
110372
|
+
updatePanelPageImage(src) {
|
110373
|
+
const modal = this.modal;
|
110374
|
+
let previewHtml;
|
110375
|
+
if (!src) previewHtml = '';else previewHtml = `
|
110376
|
+
<img src="${src}">
|
110377
|
+
`;
|
110378
|
+
this.pageImagePreview.innerHTML = previewHtml;
|
110379
|
+
|
110380
|
+
// Show/hide image-related controls
|
110381
|
+
const btnPageClear = modal.querySelector('.btn-page-clear');
|
110382
|
+
const btnPageAdjust = modal.querySelector('.btn-page-adjust');
|
110383
|
+
if (src === '') {
|
110384
|
+
btnPageClear.style.display = 'none';
|
110385
|
+
btnPageAdjust.style.display = 'none';
|
110386
|
+
} else {
|
110387
|
+
btnPageClear.style.display = '';
|
110388
|
+
btnPageAdjust.style.display = '';
|
110389
|
+
}
|
110390
|
+
const btnPageGradient = modal.querySelector('.btn-page-gradient');
|
110391
|
+
btnPageGradient.style.backgroundImage = '';
|
110392
|
+
}
|
109899
110393
|
updateImage(src) {
|
109900
110394
|
this.builder.uo.saveForUndo();
|
109901
110395
|
let blockOverlay = this.blockOverlay();
|
@@ -109921,8 +110415,8 @@ class BlockModal {
|
|
109921
110415
|
this.imagePreview.innerHTML = previewHtml;
|
109922
110416
|
|
109923
110417
|
// Show/hide image-related controls
|
109924
|
-
const btnClear = modal.querySelector('.btn-clear');
|
109925
|
-
const btnAdjust = modal.querySelector('.btn-adjust');
|
110418
|
+
const btnClear = modal.querySelector('.btn-block-clear');
|
110419
|
+
const btnAdjust = modal.querySelector('.btn-block-adjust');
|
109926
110420
|
if (src === '') {
|
109927
110421
|
btnClear.style.display = 'none';
|
109928
110422
|
btnAdjust.style.display = 'none';
|
@@ -109930,7 +110424,7 @@ class BlockModal {
|
|
109930
110424
|
btnClear.style.display = '';
|
109931
110425
|
btnAdjust.style.display = '';
|
109932
110426
|
}
|
109933
|
-
const btnGradient = modal.querySelector('.btn-gradient');
|
110427
|
+
const btnGradient = modal.querySelector('.btn-block-gradient');
|
109934
110428
|
btnGradient.style.backgroundImage = '';
|
109935
110429
|
}
|
109936
110430
|
show() {
|
@@ -109950,22 +110444,48 @@ class BlockModal {
|
|
109950
110444
|
}
|
109951
110445
|
this.util.showModal(modal);
|
109952
110446
|
this.realtime();
|
109953
|
-
this.handleBlockClick =
|
109954
|
-
|
109955
|
-
|
109956
|
-
|
109957
|
-
|
110447
|
+
this.handleBlockClick = () => {
|
110448
|
+
this.showHideControls();
|
110449
|
+
};
|
110450
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
110451
|
+
docContainer.addEventListener('click', this.handleBlockClick);
|
110452
|
+
if (this.builder.iframe) {
|
110453
|
+
docContainer.addEventListener('click', this.handleBlockClick);
|
110454
|
+
}
|
110455
|
+
this.showHideControls();
|
110456
|
+
}
|
110457
|
+
showHideControls() {
|
110458
|
+
const modal = this.modal;
|
110459
|
+
const content1 = modal.querySelector('.modal-none');
|
110460
|
+
const content2 = modal.querySelector('.modal-content');
|
110461
|
+
const content3 = modal.querySelector('.modal-page-content');
|
110462
|
+
const activeBlock = this.builder.doc.querySelector('.is-block.active');
|
110463
|
+
const page = this.getPage();
|
110464
|
+
const modalTitle = modal.querySelector('.modal-title');
|
110465
|
+
if (activeBlock) {
|
110466
|
+
if (!activeBlock.closest('.multi')) {
|
109958
110467
|
content1.style.display = 'none';
|
109959
110468
|
content2.style.display = '';
|
109960
|
-
|
110469
|
+
content3.style.display = 'none';
|
110470
|
+
modalTitle.innerHTML = this.util.out('Block');
|
110471
|
+
this.realtime();
|
109961
110472
|
} else {
|
109962
|
-
content1.style.display = '';
|
110473
|
+
content1.style.display = 'none';
|
109963
110474
|
content2.style.display = 'none';
|
110475
|
+
content3.style.display = '';
|
110476
|
+
modalTitle.innerHTML = this.util.out('Page');
|
110477
|
+
this.realtime();
|
109964
110478
|
}
|
109965
|
-
}
|
109966
|
-
|
109967
|
-
|
109968
|
-
|
110479
|
+
} else if (page) {
|
110480
|
+
content1.style.display = 'none';
|
110481
|
+
content2.style.display = 'none';
|
110482
|
+
content3.style.display = '';
|
110483
|
+
modalTitle.innerHTML = this.util.out('Page');
|
110484
|
+
this.realtime();
|
110485
|
+
} else {
|
110486
|
+
content1.style.display = '';
|
110487
|
+
content2.style.display = 'none';
|
110488
|
+
content3.style.display = 'none';
|
109969
110489
|
}
|
109970
110490
|
}
|
109971
110491
|
hide() {
|
@@ -109978,11 +110498,380 @@ class BlockModal {
|
|
109978
110498
|
}
|
109979
110499
|
}
|
109980
110500
|
|
110501
|
+
class PageSize {
|
110502
|
+
constructor(builder) {
|
110503
|
+
this.builder = builder;
|
110504
|
+
const util = this.builder.util;
|
110505
|
+
this.util = util;
|
110506
|
+
const builderStuff = this.builder.builderStuff;
|
110507
|
+
this.builderStuff = builderStuff;
|
110508
|
+
const dom = this.builder.dom;
|
110509
|
+
this.dom = dom;
|
110510
|
+
}
|
110511
|
+
open() {
|
110512
|
+
const builderStuff = this.builderStuff;
|
110513
|
+
const util = this.util;
|
110514
|
+
const dom = this.dom;
|
110515
|
+
let modal = builderStuff.querySelector('.is-modal.pagesize');
|
110516
|
+
if (!modal) {
|
110517
|
+
const html = `
|
110518
|
+
<div class="is-modal pagesize" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
|
110519
|
+
<div class="is-modal-content">
|
110520
|
+
|
110521
|
+
<div class="div-page-sizes">
|
110522
|
+
<button title="Web" data-pagesize="100%,100vh,web" data-width="" data-height="" style="flex:none;width:180px;height:112.5px" class="paper-item">Web (full)</button>
|
110523
|
+
<button title="Web" data-pagesize="800px,1000px,web" data-width="" data-height="" style="flex:none;width:180px;height:112.5px" class="paper-item">Web (container)</button>
|
110524
|
+
<button title="8.27x5.52" data-pagesize="8.27in,5.52in" data-width="8.27in" data-height="5.52in" style="flex:none;width:124.05px;height:82.8px" class="paper-item">8.27x5.52</button>
|
110525
|
+
<button title="8.3x5.8" data-pagesize="8.3in,5.8in" data-width="8.3in" data-height="5.8in" style="flex:none;width:124.50000000000001px;height:87px" class="paper-item">A5</button>
|
110526
|
+
<button title="9x7" data-pagesize="9in,7in" data-width="9in" data-height="7in" style="flex:none;width:135px;height:105px" class="paper-item">9x7</button>
|
110527
|
+
<button title="11.7x8.3" data-pagesize="11.7in,8.3in" data-width="11.7in" data-height="8.3in" style="flex:none;width:175.5px;height:124.50000000000001px" class="paper-item">A4</button>
|
110528
|
+
<button title="11x8.5" data-pagesize="11in,8.5in" data-width="11in" data-height="8.5in" style="flex:none;width:165px;height:127.5px" class="paper-item">Letter</button>
|
110529
|
+
<button title="12.5x10" data-pagesize="12.5in,10in" data-width="12.5in" data-height="10in" style="flex:none;width:187.5px;height:150px" class="paper-item">12.5x10</button>
|
110530
|
+
<button title="14x11" data-pagesize="14in,11in" data-width="14in" data-height="11in" style="flex:none;width:210px;height:165px" class="paper-item">14x11</button>
|
110531
|
+
<button title="8.5x8.5" data-pagesize="8.5in,8.5in" data-width="8.5in" data-height="8.5in" style="flex:none;width:127.5px;height:127.5px" class="paper-item">8.5x8.5</button>
|
110532
|
+
<button title="10x10" data-pagesize="10in,10in" data-width="10in" data-height="10in" style="flex:none;width:150px;height:150px" class="paper-item on">10x10</button>
|
110533
|
+
<button title="12x12" data-pagesize="12in,12in" data-width="12in" data-height="12in" style="flex:none;width:180px;height:180px" class="paper-item">12x12</button>
|
110534
|
+
<button title="5.27x8.27" data-pagesize="5.27in,8.27in" data-width="5.27in" data-height="8.27in" style="flex:none;width:79.05px;height:124.05px" class="paper-item">5.27x8.27</button>
|
110535
|
+
<button title="5.8x8.3" data-pagesize="5.8in,8.3in" data-width="5.8in" data-height="8.3in" style="flex:none;width:87px;height:124.50000000000001px" class="paper-item">A5</button>
|
110536
|
+
<button title="6x9" data-pagesize="6in,9in" data-width="6in" data-height="9in" style="flex:none;width:90px;height:135px" class="paper-item">6x9</button>
|
110537
|
+
<button title="6.6x10.25" data-pagesize="6.6in,10.25in" data-width="6.6in" data-height="10.25in" style="flex:none;width:99px;height:153.75px" class="paper-item">6.6x10.25</button>
|
110538
|
+
<button title="8.5x11" data-pagesize="8.5in,11in" data-width="8.5in" data-height="11in" style="flex:none;width:127.5px;height:165px" class="paper-item">Letter</button>
|
110539
|
+
<button title="8.3x11.7" data-pagesize="8.3in,11.7in" data-width="8.3in" data-height="11.7in" style="flex:none;width:124.50000000000001px;height:175.5px" class="paper-item">A4</button>
|
110540
|
+
</div>
|
110541
|
+
|
110542
|
+
<div class="flex" style="gap:10px;justify-content:center;margin-top:15px;">
|
110543
|
+
<div>
|
110544
|
+
<label for="inpPageWidth" style="display:block">${util.out('Width')}:</label>
|
110545
|
+
<input id="inpPageWidth" class="input-width" type="text">
|
110546
|
+
</div>
|
110547
|
+
<div>
|
110548
|
+
<label for="inpPageWidth" style="display:block">${util.out('Height')}:</label>
|
110549
|
+
<input id="inpPageHeight" class="input-height" type="text">
|
110550
|
+
</div>
|
110551
|
+
</div>
|
110552
|
+
|
110553
|
+
<div style="text-align:right;margin-top:20px;display:none">
|
110554
|
+
<button title="${util.out('Cancel')}" class="input-cancel classic-secondary">${util.out('Cancel')}</button>
|
110555
|
+
<button title="${util.out('Ok')}" class="input-ok classic-primary">${util.out('Ok')}</button>
|
110556
|
+
</div>
|
110557
|
+
|
110558
|
+
</div>
|
110559
|
+
</div>
|
110560
|
+
<div class="is-modal viewprint" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
|
110561
|
+
<div class="is-modal-content" style="width:100%;height:100vh;padding:0;">
|
110562
|
+
<iframe tabindex="0" style="width:100vw;height:100vh;border: none;display: block;" src="about:blank"></iframe>
|
110563
|
+
</div>
|
110564
|
+
</div>
|
110565
|
+
`;
|
110566
|
+
dom.appendHtml(builderStuff, html);
|
110567
|
+
modal = builderStuff.querySelector('.pagesize');
|
110568
|
+
this.modal = modal;
|
110569
|
+
const inpWidth = modal.querySelector('.input-width');
|
110570
|
+
const inpHeight = modal.querySelector('.input-height');
|
110571
|
+
const current = localStorage.getItem('_pagesize');
|
110572
|
+
if (current) {
|
110573
|
+
const arrCurrent = current.split(',');
|
110574
|
+
inpWidth.value = arrCurrent[0].trim();
|
110575
|
+
inpHeight.value = arrCurrent[1].trim();
|
110576
|
+
}
|
110577
|
+
const btnPageSize = modal.querySelectorAll('[data-pagesize]');
|
110578
|
+
btnPageSize.forEach(btn => {
|
110579
|
+
btn.addEventListener('click', () => {
|
110580
|
+
const elmCss = document.querySelector('#__css_pagesize');
|
110581
|
+
if (elmCss) elmCss.remove();
|
110582
|
+
const s = btn.getAttribute('data-pagesize');
|
110583
|
+
this.setPageSize(s);
|
110584
|
+
inpWidth.value = '';
|
110585
|
+
inpHeight.value = '';
|
110586
|
+
const arr = s.split(',');
|
110587
|
+
inpWidth.value = arr[0].trim();
|
110588
|
+
inpHeight.value = arr[1].trim();
|
110589
|
+
});
|
110590
|
+
});
|
110591
|
+
let timer;
|
110592
|
+
inpWidth.addEventListener('input', () => {
|
110593
|
+
clearTimeout(timer);
|
110594
|
+
timer = setTimeout(() => {
|
110595
|
+
const current = localStorage.getItem('_pagesize');
|
110596
|
+
let isWeb = false;
|
110597
|
+
const arrCurrent = current.split(',');
|
110598
|
+
if (arrCurrent.length === 3) isWeb = true;
|
110599
|
+
let s = inpWidth.value + ',' + inpHeight.value + (isWeb ? ',web' : '');
|
110600
|
+
this.setPageSize(s);
|
110601
|
+
}, 600);
|
110602
|
+
});
|
110603
|
+
inpHeight.addEventListener('input', () => {
|
110604
|
+
clearTimeout(timer);
|
110605
|
+
timer = setTimeout(() => {
|
110606
|
+
const current = localStorage.getItem('_pagesize');
|
110607
|
+
let isWeb = false;
|
110608
|
+
const arrCurrent = current.split(',');
|
110609
|
+
if (arrCurrent.length === 3) isWeb = true;
|
110610
|
+
let s = inpWidth.value + ',' + inpHeight.value + (isWeb ? ',web' : '');
|
110611
|
+
this.setPageSize(s);
|
110612
|
+
}, 600);
|
110613
|
+
});
|
110614
|
+
const btnImageOk = modal.querySelector('.input-ok');
|
110615
|
+
dom.addEventListener(btnImageOk, 'click', () => {
|
110616
|
+
// const inpSrc = modal.querySelector('.input-src');
|
110617
|
+
// const url = inpSrc.value;
|
110618
|
+
|
110619
|
+
this.builder.hideModal(modal);
|
110620
|
+
});
|
110621
|
+
const btnImageCancel = modal.querySelector('.input-cancel');
|
110622
|
+
dom.addEventListener(btnImageCancel, 'click', () => {
|
110623
|
+
this.builder.hideModal(modal);
|
110624
|
+
});
|
110625
|
+
}
|
110626
|
+
this.util.showModal(modal, false);
|
110627
|
+
}
|
110628
|
+
setPageSize(s) {
|
110629
|
+
if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer && !this.builder.iframe) {
|
110630
|
+
localStorage.setItem('_pagesize', s);
|
110631
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
110632
|
+
const elms = docContainer.querySelectorAll('.is-box');
|
110633
|
+
elms.forEach(elm => {
|
110634
|
+
elm.setAttribute('data-pagesize', s);
|
110635
|
+
});
|
110636
|
+
const elmCss = document.querySelector('#__css_pagesize');
|
110637
|
+
if (elmCss) elmCss.remove();
|
110638
|
+
let css = this.getPageCss();
|
110639
|
+
document.head.insertAdjacentHTML('beforeend', css);
|
110640
|
+
|
110641
|
+
// for the tools position
|
110642
|
+
const arr = s.split(',');
|
110643
|
+
// let w = arr[0].trim();
|
110644
|
+
// let h = arr[1].trim();
|
110645
|
+
if (arr.length === 3) {
|
110646
|
+
// web
|
110647
|
+
const docWidth = docContainer.offsetWidth;
|
110648
|
+
const viewportWidth = this.builder.win.innerWidth;
|
110649
|
+
if (docWidth < viewportWidth - 50) {
|
110650
|
+
// web (container)
|
110651
|
+
docContainer.classList.remove('page-web');
|
110652
|
+
docContainer.classList.add('page-web-container');
|
110653
|
+
} else {
|
110654
|
+
// web (full)
|
110655
|
+
docContainer.classList.remove('page-web-container');
|
110656
|
+
docContainer.classList.add('page-web');
|
110657
|
+
}
|
110658
|
+
} else {
|
110659
|
+
// print
|
110660
|
+
docContainer.classList.remove('page-web');
|
110661
|
+
docContainer.classList.remove('page-web-container');
|
110662
|
+
}
|
110663
|
+
} else {
|
110664
|
+
alert('This function works in Canvas mode only.');
|
110665
|
+
}
|
110666
|
+
}
|
110667
|
+
print() {
|
110668
|
+
const builderStuff = this.builderStuff;
|
110669
|
+
const dom = this.dom;
|
110670
|
+
let modalIframe = builderStuff.querySelector('.viewprint');
|
110671
|
+
if (!modalIframe) {
|
110672
|
+
let html = `
|
110673
|
+
<div class="viewprint" style="display:none">
|
110674
|
+
<iframe tabindex="0" style="width:2000px;height:2000px;border: none;display: block;" src="about:blank"></iframe>
|
110675
|
+
</div>`;
|
110676
|
+
dom.appendHtml(builderStuff, html);
|
110677
|
+
modalIframe = builderStuff.querySelector('.viewprint');
|
110678
|
+
}
|
110679
|
+
if (this.builder.canvas && !this.builder.isContentBox && this.builder.docContainer && !this.builder.iframe) {
|
110680
|
+
const ifr = modalIframe.querySelector('iframe');
|
110681
|
+
ifr.srcdoc = this.getPrintHtml();
|
110682
|
+
} else {
|
110683
|
+
alert('This function works in Canvas mode only.');
|
110684
|
+
}
|
110685
|
+
}
|
110686
|
+
getPrintHtml() {
|
110687
|
+
let css = this.getPrintCss();
|
110688
|
+
let html = this.builder.html();
|
110689
|
+
return `
|
110690
|
+
<!DOCTYPE HTML>
|
110691
|
+
<html>
|
110692
|
+
<head>
|
110693
|
+
<meta charset="utf-8">
|
110694
|
+
<title></title>
|
110695
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
110696
|
+
<meta name="description" content="">
|
110697
|
+
|
110698
|
+
<link href="${this.builder.snippetPath}print.css" rel="stylesheet">
|
110699
|
+
|
110700
|
+
<style>
|
110701
|
+
|
110702
|
+
/* block.css */
|
110703
|
+
/* box-canvas */
|
110704
|
+
.is-box {
|
110705
|
+
position: relative;
|
110706
|
+
flex:none;
|
110707
|
+
}
|
110708
|
+
.is-block {
|
110709
|
+
position: absolute;
|
110710
|
+
box-sizing: border-box;
|
110711
|
+
padding: 0;
|
110712
|
+
}
|
110713
|
+
.is-block .is-container {
|
110714
|
+
max-width: unset !important;
|
110715
|
+
width: 100%;
|
110716
|
+
padding: 0;
|
110717
|
+
box-sizing: border-box;
|
110718
|
+
position: relative;
|
110719
|
+
z-index: 1;
|
110720
|
+
}
|
110721
|
+
.is-box.autolayout .is-block.block-steady.fluid {
|
110722
|
+
padding: 0;
|
110723
|
+
width: 100% !important;
|
110724
|
+
min-width: unset !important;
|
110725
|
+
left: auto !important
|
110726
|
+
}
|
110727
|
+
.is-block-overlay { background-size: cover; background-repeat: no-repeat; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; user-select: none; }
|
110728
|
+
|
110729
|
+
|
110730
|
+
body {
|
110731
|
+
background: #eee;
|
110732
|
+
}
|
110733
|
+
.is-page {
|
110734
|
+
position: relative;
|
110735
|
+
transform-origin: top;
|
110736
|
+
}
|
110737
|
+
.is-box {
|
110738
|
+
position: relative;
|
110739
|
+
flex:none;
|
110740
|
+
background: #fff;
|
110741
|
+
overflow: hidden;
|
110742
|
+
box-shadow: none;
|
110743
|
+
}
|
110744
|
+
${css}
|
110745
|
+
</style>
|
110746
|
+
</head>
|
110747
|
+
<body class="print">
|
110748
|
+
|
110749
|
+
<div class="is-page">${html}</div>
|
110750
|
+
|
110751
|
+
<script>
|
110752
|
+
window.print();
|
110753
|
+
</script>
|
110754
|
+
</body>
|
110755
|
+
</html>
|
110756
|
+
`;
|
110757
|
+
}
|
110758
|
+
getPageCss() {
|
110759
|
+
let s;
|
110760
|
+
if (localStorage.getItem('_pagesize') === '' || localStorage.getItem('_pagesize')) {
|
110761
|
+
s = localStorage.getItem('_pagesize');
|
110762
|
+
} else {
|
110763
|
+
s = this.pageSize || '';
|
110764
|
+
}
|
110765
|
+
let w, h;
|
110766
|
+
let css;
|
110767
|
+
if (s) {
|
110768
|
+
const arr = s.split(',');
|
110769
|
+
w = arr[0].trim();
|
110770
|
+
h = arr[1].trim();
|
110771
|
+
if (arr.length === 3) {
|
110772
|
+
// web
|
110773
|
+
css = `
|
110774
|
+
<style id="__css_pagesize">
|
110775
|
+
.is-page {
|
110776
|
+
${(w === '100%' || w === '100vw') && (h === '100%' || h === '100vh') ? '' : 'margin-top: 150px;'}
|
110777
|
+
}
|
110778
|
+
.is-box {
|
110779
|
+
width: 100%;
|
110780
|
+
max-width: ${w};
|
110781
|
+
height: ${h};
|
110782
|
+
margin: 0 auto;
|
110783
|
+
}
|
110784
|
+
</style>
|
110785
|
+
`;
|
110786
|
+
} else {
|
110787
|
+
// print
|
110788
|
+
css = `
|
110789
|
+
<style id="__css_pagesize">
|
110790
|
+
.is-page {
|
110791
|
+
margin-top:150px;
|
110792
|
+
gap: 45px;
|
110793
|
+
}
|
110794
|
+
.is-box {
|
110795
|
+
width: ${w};
|
110796
|
+
height: ${h};
|
110797
|
+
}
|
110798
|
+
</style>
|
110799
|
+
`;
|
110800
|
+
}
|
110801
|
+
}
|
110802
|
+
return css;
|
110803
|
+
}
|
110804
|
+
getPrintCss() {
|
110805
|
+
let s;
|
110806
|
+
if (localStorage.getItem('_pagesize') === '' || localStorage.getItem('_pagesize')) {
|
110807
|
+
s = localStorage.getItem('_pagesize');
|
110808
|
+
} else {
|
110809
|
+
s = this.pageSize || '';
|
110810
|
+
}
|
110811
|
+
let w, h;
|
110812
|
+
let css;
|
110813
|
+
if (s) {
|
110814
|
+
const arr = s.split(',');
|
110815
|
+
w = arr[0].trim();
|
110816
|
+
h = arr[1].trim();
|
110817
|
+
if (arr.length === 3) {
|
110818
|
+
// web
|
110819
|
+
const docContainer = this.builder.doc.querySelector(this.builder.docContainer);
|
110820
|
+
const box = docContainer.querySelector('.is-box');
|
110821
|
+
if (!box) return '';
|
110822
|
+
const docWidth = box.offsetWidth + 'px';
|
110823
|
+
const docHeight = box.offsetHeight + 'px';
|
110824
|
+
css = `
|
110825
|
+
<style id="__css_pagesize">
|
110826
|
+
.is-box {
|
110827
|
+
width: 100%;
|
110828
|
+
max-width: ${docWidth};
|
110829
|
+
height: ${docHeight};
|
110830
|
+
margin: 0 auto;
|
110831
|
+
}
|
110832
|
+
@media print {
|
110833
|
+
.is-box {
|
110834
|
+
width: ${docWidth};
|
110835
|
+
height: ${docHeight};
|
110836
|
+
}
|
110837
|
+
}
|
110838
|
+
@page {
|
110839
|
+
size:${docWidth} ${docHeight};;
|
110840
|
+
margin: 0;
|
110841
|
+
}
|
110842
|
+
</style>
|
110843
|
+
`;
|
110844
|
+
} else {
|
110845
|
+
// print
|
110846
|
+
css = `
|
110847
|
+
<style id="__css_pagesize">
|
110848
|
+
.is-box {
|
110849
|
+
width: ${w};
|
110850
|
+
height: ${h};
|
110851
|
+
}
|
110852
|
+
@media print {
|
110853
|
+
.is-box {
|
110854
|
+
width: ${w};
|
110855
|
+
height: ${h};
|
110856
|
+
}
|
110857
|
+
}
|
110858
|
+
@page {
|
110859
|
+
size:${w} ${h};
|
110860
|
+
margin: 0;
|
110861
|
+
}
|
110862
|
+
</style>
|
110863
|
+
`;
|
110864
|
+
}
|
110865
|
+
}
|
110866
|
+
return css;
|
110867
|
+
}
|
110868
|
+
}
|
110869
|
+
|
109981
110870
|
class ContentBuilder {
|
109982
110871
|
constructor(opts = {}) {
|
109983
110872
|
let defaults = {
|
109984
110873
|
page: '',
|
109985
|
-
container: '.container',
|
110874
|
+
container: '.is-container',
|
109986
110875
|
row: '',
|
109987
110876
|
cols: [],
|
109988
110877
|
colequal: [],
|
@@ -110224,6 +111113,8 @@ class ContentBuilder {
|
|
110224
111113
|
onUndo: function () {},
|
110225
111114
|
onRedo: function () {},
|
110226
111115
|
onBlockCanvasAdd: function () {},
|
111116
|
+
// docContainer: '.is-page',
|
111117
|
+
blockContainer: '.is-box',
|
110227
111118
|
/*
|
110228
111119
|
Deprecated:
|
110229
111120
|
snippetSampleImage: '',
|
@@ -111022,6 +111913,34 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111022
111913
|
}
|
111023
111914
|
this.settings = this.opts; // Backward compatible
|
111024
111915
|
|
111916
|
+
// freeform
|
111917
|
+
if (this.canvas && !this.isContentBox) {
|
111918
|
+
/*
|
111919
|
+
blockContainer: '.is-box',
|
111920
|
+
imageResizeOnBlock: false,
|
111921
|
+
toolbarDisplay: 'always',
|
111922
|
+
buttons: ['bold', 'italic', 'underline', 'formatting', 'color', 'align', 'textsettings', 'createLink', 'tags', '|', 'undo', 'redo', 'aiassistant', 'snippets', 'zoom', 'pageoptions', 'print', 'html', 'more'],
|
111923
|
+
buttonsMore: ['icon', 'image', '|', 'list', 'font', 'formatPara'],
|
111924
|
+
elementButtons: ['front', 'backward', 'moveup', 'movedown', 'group', 'ungroup', 'duplicate', 'delete','left', 'center', 'right', 'full' , 'undo', 'redo', 'aiassistant', 'snippets', 'blocksettings', 'zoom', 'pageoptions', 'print', 'html'],
|
111925
|
+
elementButtonsMore: [],
|
111926
|
+
iconButtons: ['icon', 'color','textsettings', 'createLink','|', 'undo', 'redo', 'aiassistant', 'snippets', 'zoom', 'pageoptions', 'print', 'html'],
|
111927
|
+
iconButtonsMore: [],
|
111928
|
+
*/
|
111929
|
+
this.blockContainer = '.is-box';
|
111930
|
+
this.imageResizeOnBlock = false;
|
111931
|
+
this.toolbarDisplay = 'always';
|
111932
|
+
this.buttons = ['bold', 'italic', 'underline', 'formatting', 'color', 'align', 'textsettings', 'createLink', 'tags', '|', 'undo', 'redo', 'aiassistant', 'snippets', 'zoom', 'pageoptions', 'print', 'html', 'more'];
|
111933
|
+
this.buttonsMore = ['icon', 'image', '|', 'list', 'font', 'formatPara'];
|
111934
|
+
this.elementButtons = ['front', 'backward', 'moveup', 'movedown', 'group', 'ungroup', 'duplicate', 'delete', 'left', 'center', 'right', 'full', 'undo', 'redo', 'aiassistant', 'snippets', 'blocksettings', 'zoom', 'pageoptions', 'print', 'html'];
|
111935
|
+
this.elementButtonsMore = [];
|
111936
|
+
this.iconButtons = ['icon', 'color', 'textsettings', 'createLink', '|', 'undo', 'redo', 'aiassistant', 'snippets', 'zoom', 'pageoptions', 'print', 'html'];
|
111937
|
+
this.iconButtonsMore = [];
|
111938
|
+
if (!this.docContainer && this.container !== '.is-container') {
|
111939
|
+
this.docContainer = this.container;
|
111940
|
+
this.container = '.is-container';
|
111941
|
+
this.opts.container = '.is-container';
|
111942
|
+
}
|
111943
|
+
}
|
111025
111944
|
if (this.opts.imageSelect !== '') {
|
111026
111945
|
this.opts.imageselect = this.opts.imageSelect;
|
111027
111946
|
} else if (this.opts.imageselect !== '') {
|
@@ -111160,6 +112079,10 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111160
112079
|
this.win = win;
|
111161
112080
|
this.doc = doc;
|
111162
112081
|
this.doc.body.classList.add('data-editor');
|
112082
|
+
if (this.canvas && !this.isContentBox && this.docContainer && !this.iframe) {
|
112083
|
+
const docContainer = document.querySelector(this.docContainer);
|
112084
|
+
docContainer.classList.add('is-page');
|
112085
|
+
}
|
111163
112086
|
|
111164
112087
|
// Disable on mobile
|
111165
112088
|
const viewportWidth = this.doc.body.clientWidth;
|
@@ -111407,6 +112330,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111407
112330
|
|
111408
112331
|
// freeform
|
111409
112332
|
if (this.canvas && !this.isContentBox) this.blockmodal = new BlockModal(this);
|
112333
|
+
if (this.canvas) this.pageoption = new PageSize(this);
|
111410
112334
|
|
111411
112335
|
// freeform
|
111412
112336
|
if (this.canvas) this.eb = new EditableBlocks({
|
@@ -111417,6 +112341,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111417
112341
|
parentSelector: '.box-canvas',
|
111418
112342
|
rotate: true,
|
111419
112343
|
// disableOnMobile: 760,
|
112344
|
+
zoom: this.opts.zoom,
|
111420
112345
|
onBeforeChange: () => {
|
111421
112346
|
this.uo.saveForUndo();
|
111422
112347
|
},
|
@@ -111424,15 +112349,15 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111424
112349
|
this.opts.onChange();
|
111425
112350
|
},
|
111426
112351
|
onEditStart: (event, block) => {
|
112352
|
+
let activeBlock = this.doc.querySelector('.is-block.cloned');
|
112353
|
+
if (!activeBlock) return;
|
112354
|
+
const container = activeBlock.querySelector('.is-container');
|
112355
|
+
if (!container) return;
|
111427
112356
|
block.classList.add('editable');
|
111428
112357
|
|
111429
112358
|
// get element to activate
|
111430
112359
|
let x = event.clientX;
|
111431
112360
|
let y = event.clientY;
|
111432
|
-
let activeBlock = this.doc.querySelector('.is-block.cloned');
|
111433
|
-
if (!activeBlock) return;
|
111434
|
-
const container = activeBlock.querySelector('.is-container');
|
111435
|
-
if (!container) return;
|
111436
112361
|
const cols = this.getAllColumns(container);
|
111437
112362
|
let clickedElm;
|
111438
112363
|
let clickedCol;
|
@@ -111545,10 +112470,11 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111545
112470
|
Array.prototype.forEach.call(elms, elm => {
|
111546
112471
|
elm.style.display = '';
|
111547
112472
|
});
|
111548
|
-
elms = this.rte.elementRteTool.querySelectorAll('.rte-blocksettings');
|
111549
|
-
Array.prototype.forEach.call(elms, elm => {
|
111550
|
-
|
111551
|
-
});
|
112473
|
+
// elms = this.rte.elementRteTool.querySelectorAll('.rte-blocksettings');
|
112474
|
+
// Array.prototype.forEach.call(elms, (elm) => {
|
112475
|
+
// elm.style.display = '';
|
112476
|
+
// });
|
112477
|
+
|
111552
112478
|
const viewportWidth = this.doc.body.clientWidth;
|
111553
112479
|
if (viewportWidth <= 768) {
|
111554
112480
|
elms = this.rte.elementRteTool.querySelectorAll('.rte-moveup');
|
@@ -111608,6 +112534,74 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111608
112534
|
if (this.onUnselectBlock) this.onUnselectBlock();
|
111609
112535
|
}
|
111610
112536
|
});
|
112537
|
+
|
112538
|
+
// SHIFT + Right Clidk to Zoom In
|
112539
|
+
if (this.canvas && !this.isContentBox && this.docContainer && !this.iframe) {
|
112540
|
+
//--- see loadHtml ---
|
112541
|
+
const docContainer = document.querySelector(this.docContainer);
|
112542
|
+
|
112543
|
+
// set page size
|
112544
|
+
let s;
|
112545
|
+
const elm = docContainer.querySelector('[data-pagesize]');
|
112546
|
+
if (elm) {
|
112547
|
+
s = elm.getAttribute('data-pagesize');
|
112548
|
+
} else {
|
112549
|
+
if (localStorage.getItem('_pagesize') === '' || localStorage.getItem('_pagesize')) {
|
112550
|
+
s = localStorage.getItem('_pagesize');
|
112551
|
+
} else {
|
112552
|
+
s = this.pageSize || '';
|
112553
|
+
}
|
112554
|
+
}
|
112555
|
+
this.setPageSize(s);
|
112556
|
+
this.applyBehaviorCanvas();
|
112557
|
+
const builders = docContainer.querySelectorAll(this.container);
|
112558
|
+
builders.forEach(builder => {
|
112559
|
+
this.applyBehaviorOn(builder);
|
112560
|
+
});
|
112561
|
+
this.refresh();
|
112562
|
+
if (this.win.Block) {
|
112563
|
+
this.win.Block.render();
|
112564
|
+
}
|
112565
|
+
docContainer.style.opacity = '';
|
112566
|
+
//--- /see loadHtml ---
|
112567
|
+
|
112568
|
+
// docContainer.style.transform = '';
|
112569
|
+
// this.opts.zoom = 1;
|
112570
|
+
// this.eb.setZoom(1);
|
112571
|
+
|
112572
|
+
document.addEventListener('contextmenu', this.toggleEnlargePage = e => {
|
112573
|
+
if (e.shiftKey && e.button === 2) {
|
112574
|
+
e.preventDefault();
|
112575
|
+
if (docContainer.style.transform.includes('scale(1)')) {
|
112576
|
+
docContainer.style.transform = '';
|
112577
|
+
}
|
112578
|
+
if (docContainer.classList.contains('expand')) {
|
112579
|
+
// back (zoom-out)
|
112580
|
+
docContainer.classList.remove('expand');
|
112581
|
+
docContainer.style.transform = '';
|
112582
|
+
this.opts.zoom = 1;
|
112583
|
+
localStorage.setItem('_zoom', 1);
|
112584
|
+
this.eb.setZoom(1);
|
112585
|
+
this.setZoomOnControl(docContainer);
|
112586
|
+
} else {
|
112587
|
+
// expand (zoom-in)
|
112588
|
+
docContainer.classList.add('expand');
|
112589
|
+
const viewportWidth = document.body.clientWidth;
|
112590
|
+
const targetWidth = viewportWidth * 0.8;
|
112591
|
+
const box = docContainer.querySelector(this.blockContainer);
|
112592
|
+
if (box) {
|
112593
|
+
let scale = targetWidth / box.offsetWidth;
|
112594
|
+
if (scale > 1.4) scale = 1.4;
|
112595
|
+
docContainer.style.transform = `scale(${scale})`;
|
112596
|
+
this.opts.zoom = scale;
|
112597
|
+
localStorage.setItem('_zoom', scale);
|
112598
|
+
this.eb.setZoom(scale);
|
112599
|
+
this.setZoomOnControl(docContainer);
|
112600
|
+
}
|
112601
|
+
}
|
112602
|
+
}
|
112603
|
+
});
|
112604
|
+
}
|
111611
112605
|
let previousWidth = this.win.innerWidth;
|
111612
112606
|
let timer;
|
111613
112607
|
const debounce = (func, delay) => {
|
@@ -111674,7 +112668,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111674
112668
|
|
111675
112669
|
// console.log('resize');
|
111676
112670
|
setTimeout(() => {
|
111677
|
-
if
|
112671
|
+
// if(this.blockmodal) this.blockmodal.realtime(); // freeform
|
111678
112672
|
if (this.onPageResizeDebounce) this.onPageResizeDebounce();
|
111679
112673
|
}, 300); // give time for block transition
|
111680
112674
|
}, 200);
|
@@ -111691,7 +112685,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111691
112685
|
const debouncedResizeHandler = debounce(() => {
|
111692
112686
|
// console.log('resize');
|
111693
112687
|
setTimeout(() => {
|
111694
|
-
if
|
112688
|
+
// if(this.blockmodal) this.blockmodal.realtime();
|
111695
112689
|
if (this.onPageResizeDebounce) this.onPageResizeDebounce();
|
111696
112690
|
}, 300); // give time for block transition
|
111697
112691
|
}, 200);
|
@@ -111988,6 +112982,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
111988
112982
|
.is-block.active.editable {
|
111989
112983
|
outline: none;
|
111990
112984
|
cursor: auto;
|
112985
|
+
z-index: 10;
|
111991
112986
|
}
|
111992
112987
|
.is-block.active.multi {
|
111993
112988
|
outline: var(--is-outline);
|
@@ -112397,9 +113392,27 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
112397
113392
|
rowaddtool.style.transform = `scale(${1 / this.opts.zoom})`;
|
112398
113393
|
// rowtool.style.transformOrigin = 'top';
|
112399
113394
|
});
|
112400
|
-
}
|
112401
113395
|
|
113396
|
+
// freeform
|
113397
|
+
let tools = area.querySelectorAll('.is-canvas-tool');
|
113398
|
+
tools.forEach(tool => {
|
113399
|
+
tool.style.transform = `scale(${1 / this.opts.zoom})`;
|
113400
|
+
tool.style.transformOrigin = 'top';
|
113401
|
+
});
|
113402
|
+
tools = area.querySelectorAll('.is-canvasadd-tool');
|
113403
|
+
tools.forEach(tool => {
|
113404
|
+
tool.style.transform = `scale(${1 / this.opts.zoom})`;
|
113405
|
+
tool.style.transformOrigin = 'top';
|
113406
|
+
});
|
113407
|
+
}
|
112402
113408
|
setZoomOnArea() {
|
113409
|
+
if (this.canvas && !this.isContentBox && this.docContainer) {
|
113410
|
+
// freeform
|
113411
|
+
const docContainer = this.doc.querySelector(this.docContainer);
|
113412
|
+
docContainer.style.transform = `scale(${this.opts.zoom})`;
|
113413
|
+
if (this.eb) this.eb.setZoom(this.opts.zoom);
|
113414
|
+
return;
|
113415
|
+
}
|
112403
113416
|
if (this.opts.page !== '') {
|
112404
113417
|
const wrapper = this.doc.querySelector(this.opts.page);
|
112405
113418
|
wrapper.style.transform = `scale(${this.opts.zoom})`;
|
@@ -112924,9 +113937,11 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
112924
113937
|
lang: this.opts.lang
|
112925
113938
|
});
|
112926
113939
|
}
|
112927
|
-
|
112928
|
-
|
112929
|
-
|
113940
|
+
|
113941
|
+
// simpleColorPicker(onPick,mode) {
|
113942
|
+
// return this.colorClassPicker.open(onPick,mode);
|
113943
|
+
// }
|
113944
|
+
|
112930
113945
|
openAIAssistant() {
|
112931
113946
|
this.dictation.openDictation();
|
112932
113947
|
}
|
@@ -113081,6 +114096,124 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113081
114096
|
if (!this.eb) return;
|
113082
114097
|
this.eb.quitEditable(target);
|
113083
114098
|
}
|
114099
|
+
addPage(box) {
|
114100
|
+
this.uo.saveForUndo();
|
114101
|
+
let s;
|
114102
|
+
if (localStorage.getItem('_pagesize') === '' || localStorage.getItem('_pagesize')) {
|
114103
|
+
s = localStorage.getItem('_pagesize');
|
114104
|
+
} else {
|
114105
|
+
s = this.pageSize || '';
|
114106
|
+
}
|
114107
|
+
const html = `
|
114108
|
+
<div class="is-box box-canvas autolayout new-canvas" data-pagesize="${s}">
|
114109
|
+
`;
|
114110
|
+
const docContainer = this.doc.querySelector(this.docContainer);
|
114111
|
+
if (box) {
|
114112
|
+
box.insertAdjacentHTML('afterend', html);
|
114113
|
+
} else {
|
114114
|
+
docContainer.insertAdjacentHTML('beforeend', html);
|
114115
|
+
}
|
114116
|
+
const newBox = docContainer.querySelector('.new-canvas');
|
114117
|
+
newBox.scrollIntoView({
|
114118
|
+
behavior: 'smooth',
|
114119
|
+
block: 'center'
|
114120
|
+
});
|
114121
|
+
newBox.classList.remove('new-canvas');
|
114122
|
+
this.applyBehaviorCanvas();
|
114123
|
+
this.opts.onChange();
|
114124
|
+
}
|
114125
|
+
setPageSize(s) {
|
114126
|
+
this.pageoption.setPageSize(s);
|
114127
|
+
}
|
114128
|
+
applyBehaviorCanvas() {
|
114129
|
+
if (this.canvas && !this.isContentBox && this.docContainer && !this.iframe) {
|
114130
|
+
let htmlTool = `
|
114131
|
+
<div class="is-tool is-canvas-tool" style="transform: scale(1); transform-origin: center top;">
|
114132
|
+
<button type="button" tabindex="-1" class="box-up" title="${this.util.out('Move Up')}"><svg class="is-icon-flex"><use xlink:href="#icon-arrow-up"></use></svg></button>
|
114133
|
+
<button type="button" tabindex="-1" class="box-down" title="${this.util.out('Move Down')}"><svg class="is-icon-flex"><use xlink:href="#icon-arrow-down"></use></svg></button>
|
114134
|
+
<!--
|
114135
|
+
<button type="button" tabindex="-1" class="box-settings" title="${this.util.out('Settings')}"><svg class="is-icon-flex"><use xlink:href="#ion-more"></use></svg></button>
|
114136
|
+
-->
|
114137
|
+
<button type="button" tabindex="-1" class="box-remove" title="${this.util.out('Remove')}"><svg class="is-icon-flex"><use xlink:href="#icon-trash"></use></svg></button>
|
114138
|
+
</div>
|
114139
|
+
<div class="is-tool is-canvasadd-tool" style="transform: scale(1); transform-origin: center top;">
|
114140
|
+
<button type="button" tabindex="-1" class="box-add" title="${this.util.out('Add')}"><svg class="is-icon-flex"><use xlink:href="#icon-plus2"></use></svg></button>
|
114141
|
+
</div>
|
114142
|
+
`;
|
114143
|
+
const docContainer = this.doc.querySelector(this.docContainer);
|
114144
|
+
const boxes = this.dom.elementChildren(docContainer);
|
114145
|
+
boxes.forEach(box => {
|
114146
|
+
let tool1 = box.querySelector('.is-canvas-tool');
|
114147
|
+
let tool2 = box.querySelector('.is-canvasadd-tool');
|
114148
|
+
if (tool1) tool1.remove();
|
114149
|
+
if (tool2) tool2.remove();
|
114150
|
+
if (!box.querySelector('.is-canvas-tool')) {
|
114151
|
+
box.addEventListener('click', () => {
|
114152
|
+
boxes.forEach(elm => elm.classList.remove('box-select'));
|
114153
|
+
box.classList.add('box-select');
|
114154
|
+
|
114155
|
+
// onSelectPage (see onSelectBlock)
|
114156
|
+
|
114157
|
+
let elms = this.rte.elementRteTool.querySelectorAll('.rte-blocksettings');
|
114158
|
+
Array.prototype.forEach.call(elms, elm => {
|
114159
|
+
elm.style.display = '';
|
114160
|
+
});
|
114161
|
+
});
|
114162
|
+
box.insertAdjacentHTML('afterbegin', htmlTool);
|
114163
|
+
const btnUp = box.querySelector('.is-canvas-tool .box-up');
|
114164
|
+
btnUp.addEventListener('click', e => {
|
114165
|
+
const box = e.target.closest('.is-box');
|
114166
|
+
this.uo.saveForUndo();
|
114167
|
+
let boxPrev = box.previousElementSibling;
|
114168
|
+
if (boxPrev) box.parentNode.insertBefore(box, boxPrev);
|
114169
|
+
box.scrollIntoView({
|
114170
|
+
behavior: 'smooth',
|
114171
|
+
block: 'center'
|
114172
|
+
});
|
114173
|
+
this.opts.onChange();
|
114174
|
+
});
|
114175
|
+
const btnDown = box.querySelector('.is-canvas-tool .box-down');
|
114176
|
+
btnDown.addEventListener('click', e => {
|
114177
|
+
const box = e.target.closest('.is-box');
|
114178
|
+
this.uo.saveForUndo();
|
114179
|
+
let boxNext = box.nextElementSibling;
|
114180
|
+
if (boxNext) box.parentNode.insertBefore(boxNext, box);
|
114181
|
+
box.scrollIntoView({
|
114182
|
+
behavior: 'smooth',
|
114183
|
+
block: 'center'
|
114184
|
+
});
|
114185
|
+
this.opts.onChange();
|
114186
|
+
});
|
114187
|
+
const btnRemove = box.querySelector('.is-canvas-tool .box-remove');
|
114188
|
+
btnRemove.addEventListener('click', e => {
|
114189
|
+
const box = e.target.closest('.is-box');
|
114190
|
+
this.uo.saveForUndo();
|
114191
|
+
box.remove();
|
114192
|
+
this.blockmodal.showHideControls();
|
114193
|
+
if (!docContainer.querySelector('.is-box')) this.addPage();
|
114194
|
+
this.opts.onChange();
|
114195
|
+
});
|
114196
|
+
const btnAdd = box.querySelector('.is-canvasadd-tool .box-add');
|
114197
|
+
btnAdd.addEventListener('click', e => {
|
114198
|
+
const box = e.target.closest('.is-box');
|
114199
|
+
this.addPage(box);
|
114200
|
+
});
|
114201
|
+
}
|
114202
|
+
});
|
114203
|
+
if (localStorage.getItem('_zoom') !== null) {
|
114204
|
+
this.opts.zoom = localStorage.getItem('_zoom'); // Get from saved localStorage
|
114205
|
+
}
|
114206
|
+
|
114207
|
+
this.eb.setZoom(this.opts.zoom);
|
114208
|
+
this.setZoomOnControl(docContainer);
|
114209
|
+
}
|
114210
|
+
}
|
114211
|
+
openPageOptions() {
|
114212
|
+
this.pageoption.open();
|
114213
|
+
}
|
114214
|
+
print() {
|
114215
|
+
this.pageoption.print();
|
114216
|
+
}
|
113084
114217
|
destroy() {
|
113085
114218
|
if (this.eb) this.eb.destroy();
|
113086
114219
|
this.doc.body.classList.remove('data-editor');
|
@@ -113121,6 +114254,13 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113121
114254
|
builder.appendChild(range.createContextualFragment(html)); // Use createContextualFragment so that embedded javascript code (code block) will be executed
|
113122
114255
|
});
|
113123
114256
|
|
114257
|
+
if (this.canvas && !this.isContentBox) {
|
114258
|
+
let html = this.html();
|
114259
|
+
let range = this.doc.createRange();
|
114260
|
+
const docContainer = this.doc.querySelector(this.docContainer);
|
114261
|
+
docContainer.innerHTML = '';
|
114262
|
+
docContainer.appendChild(range.createContextualFragment(html));
|
114263
|
+
}
|
113124
114264
|
Array.prototype.forEach.call(builders, builder => {
|
113125
114265
|
builder.removeAttribute('data-sort');
|
113126
114266
|
this.dom.removeClass(builder, 'is-builder');
|
@@ -113238,13 +114378,13 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113238
114378
|
if (this.targetAssetType === 'all') {
|
113239
114379
|
ok = true;
|
113240
114380
|
} else if (this.targetAssetType === 'media') {
|
113241
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp' || extension === 'mp4') {
|
114381
|
+
if (s.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp' || extension === 'mp4') {
|
113242
114382
|
ok = true;
|
113243
114383
|
} else {
|
113244
114384
|
alert(this.util.out('Please select an image or video file.'));
|
113245
114385
|
}
|
113246
114386
|
} else if (this.targetAssetType === 'image') {
|
113247
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
114387
|
+
if (s.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
113248
114388
|
ok = true;
|
113249
114389
|
} else {
|
113250
114390
|
alert(this.util.out('Please select an image file.'));
|
@@ -113306,7 +114446,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113306
114446
|
let extension = filename.split('.').pop();
|
113307
114447
|
extension = extension.toLowerCase();
|
113308
114448
|
let ok = false;
|
113309
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
114449
|
+
if (s.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
113310
114450
|
ok = true;
|
113311
114451
|
} else {
|
113312
114452
|
alert(out('Please select an image file.'));
|
@@ -113335,13 +114475,13 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113335
114475
|
let ext = filename.split('.').pop();
|
113336
114476
|
ext = ext.toLowerCase();
|
113337
114477
|
let ok = false;
|
113338
|
-
if (targetAssetType === 'image' && (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif' || ext === 'webm' || ext === 'webp')) {
|
114478
|
+
if (targetAssetType === 'image' && (s.includes('base64') || ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif' || ext === 'webm' || ext === 'webp')) {
|
113339
114479
|
ok = true;
|
113340
114480
|
} else if (targetAssetType === 'video' && ext === 'mp4') {
|
113341
114481
|
ok = true;
|
113342
114482
|
} else if (targetAssetType === 'audio' && ext === 'mp3') {
|
113343
114483
|
ok = true;
|
113344
|
-
} else if (targetAssetType === 'media' && (ext === 'mp4' || ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif' || ext === 'webm' || ext === 'webp')) {
|
114484
|
+
} else if (targetAssetType === 'media' && (s.includes('base64') || ext === 'mp4' || ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif' || ext === 'webm' || ext === 'webp')) {
|
113345
114485
|
ok = true;
|
113346
114486
|
} else if (targetAssetType === 'all') {
|
113347
114487
|
ok = true;
|
@@ -113379,7 +114519,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113379
114519
|
if (targetAssetType === 'all') {
|
113380
114520
|
ok = true;
|
113381
114521
|
} else if (targetAssetType === 'media') {
|
113382
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp' || extension === 'mp4') {
|
114522
|
+
if (s.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp' || extension === 'mp4') {
|
113383
114523
|
ok = true;
|
113384
114524
|
} else {
|
113385
114525
|
alert(out('Please select an image or video file.'));
|
@@ -113391,7 +114531,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
113391
114531
|
alert(out('Please select an mp4 file.'));
|
113392
114532
|
}
|
113393
114533
|
} else if (targetAssetType === 'image') {
|
113394
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
114534
|
+
if (s.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
113395
114535
|
ok = true;
|
113396
114536
|
} else {
|
113397
114537
|
alert(out('Please select an image file.'));
|
@@ -114115,6 +115255,20 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
114115
115255
|
docContainer.innerHTML = '';
|
114116
115256
|
docContainer.appendChild(range.createContextualFragment(html)); // We use createContextualFragment so that embedded javascript code (code block) will be executed
|
114117
115257
|
|
115258
|
+
// set page size
|
115259
|
+
let s;
|
115260
|
+
const elm = docContainer.querySelector('[data-pagesize]');
|
115261
|
+
if (elm) {
|
115262
|
+
s = elm.getAttribute('data-pagesize');
|
115263
|
+
} else {
|
115264
|
+
if (localStorage.getItem('_pagesize') === '' || localStorage.getItem('_pagesize')) {
|
115265
|
+
s = localStorage.getItem('_pagesize');
|
115266
|
+
} else {
|
115267
|
+
s = this.pageSize || '';
|
115268
|
+
}
|
115269
|
+
}
|
115270
|
+
this.setPageSize(s);
|
115271
|
+
this.applyBehaviorCanvas();
|
114118
115272
|
const builders = docContainer.querySelectorAll(this.container);
|
114119
115273
|
builders.forEach(builder => {
|
114120
115274
|
this.applyBehaviorOn(builder);
|
@@ -114324,7 +115478,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
114324
115478
|
url = elm.getAttribute('data-modal-url');
|
114325
115479
|
let extension = url.split('.').pop().split('?')[0].split('#')[0]; //
|
114326
115480
|
|
114327
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
115481
|
+
if (url.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
114328
115482
|
this.lightbox.openImage(url, theme, color);
|
114329
115483
|
} else if (extension === 'mp4') {
|
114330
115484
|
this.lightbox.openVideo(url, 'dark', color);
|
@@ -114654,7 +115808,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
114654
115808
|
let theme = link.getAttribute('data-modal-theme');
|
114655
115809
|
if (!theme) theme = 'light';
|
114656
115810
|
const color = elm.getAttribute('data-modal-color');
|
114657
|
-
if (extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
115811
|
+
if (url.includes('base64') || extension === 'jpg' || extension === 'jpeg' || extension === 'png' || extension === 'gif' || extension === 'webm' || extension === 'webp') {
|
114658
115812
|
this.lightbox.openImage(url, theme, color);
|
114659
115813
|
e.preventDefault();
|
114660
115814
|
return false;
|
@@ -114765,6 +115919,10 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
114765
115919
|
if (this.activeImage) {
|
114766
115920
|
this.util.hideControls(); //deleting an image should also clear the visible image tool (and resizer).
|
114767
115921
|
}
|
115922
|
+
|
115923
|
+
col.querySelectorAll('.is-social').forEach(elm => {
|
115924
|
+
elm.removeAttribute('contentEditable'); // Return back the div.is-social (See: Prevent div.is-social gets deleted)
|
115925
|
+
});
|
114768
115926
|
}
|
114769
115927
|
|
114770
115928
|
this.oriLen = col.textContent.length; // get character length
|
@@ -115088,6 +116246,12 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
115088
116246
|
}
|
115089
116247
|
}
|
115090
116248
|
handleCellKeyup(col, e) {
|
116249
|
+
if (e.which === 46 || e.which === 8) {
|
116250
|
+
col.querySelectorAll('.is-social').forEach(elm => {
|
116251
|
+
elm.contentEditable = false; // Prevent div.is-social gets deleted while deleting its next element
|
116252
|
+
});
|
116253
|
+
}
|
116254
|
+
|
115091
116255
|
if (this.dom.textSelection()) {
|
115092
116256
|
if (e.keyCode === '38') {
|
115093
116257
|
// Up arrow
|
@@ -115643,6 +116807,7 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
115643
116807
|
});
|
115644
116808
|
var html = result[0].html;
|
115645
116809
|
var noedit = result[0].noedit;
|
116810
|
+
const occurrences = this.dom.countOccurrences(html, 'column');
|
115646
116811
|
var bSnippet;
|
115647
116812
|
if (html.indexOf('"row') === -1) {
|
115648
116813
|
bSnippet = true; // Just snippet (without row/column grid)
|
@@ -115696,8 +116861,20 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
115696
116861
|
// Clean snippet from sortable related code
|
115697
116862
|
itemEl.removeAttribute('draggable');
|
115698
116863
|
this.dom.removeClass(itemEl, 'snippet-item');
|
116864
|
+
let bw = '';
|
116865
|
+
if (this.page && this.page === '.is-wrapper') {
|
116866
|
+
bw = '800px';
|
116867
|
+
} else {
|
116868
|
+
if (occurrences === 2) {
|
116869
|
+
bw = '800px';
|
116870
|
+
} else if (occurrences >= 3) {
|
116871
|
+
bw = '800px';
|
116872
|
+
} else {
|
116873
|
+
bw = '540px';
|
116874
|
+
}
|
116875
|
+
}
|
115699
116876
|
const blockTemplate = `
|
115700
|
-
<div class="is-block block-steady height-auto" data-new-dummy="1" style="top: 20%; left: 20%; width:
|
116877
|
+
<div class="is-block block-steady height-auto" data-new-dummy="1" style="top: 20%; left: 20%; width: ${bw};">
|
115701
116878
|
<div class="is-container container-new leading-12 size-17">
|
115702
116879
|
[%CONTENT%]
|
115703
116880
|
</div>
|
@@ -115734,8 +116911,20 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
|
|
115734
116911
|
var range = document.createRange();
|
115735
116912
|
range.setStart(itemEl, 0);
|
115736
116913
|
itemEl.appendChild(range.createContextualFragment(html));
|
116914
|
+
let bw = '';
|
116915
|
+
if (this.page && this.page === '.is-wrapper') {
|
116916
|
+
bw = '800px';
|
116917
|
+
} else {
|
116918
|
+
if (occurrences === 2) {
|
116919
|
+
bw = '800px';
|
116920
|
+
} else if (occurrences >= 3) {
|
116921
|
+
bw = '800px';
|
116922
|
+
} else {
|
116923
|
+
bw = '540px';
|
116924
|
+
}
|
116925
|
+
}
|
115737
116926
|
const blockTemplate = `
|
115738
|
-
<div class="is-block block-steady height-auto" data-new-dummy="1" style="top: 20%; left: 20%; width:
|
116927
|
+
<div class="is-block block-steady height-auto" data-new-dummy="1" style="top: 20%; left: 20%; width: ${bw};">
|
115739
116928
|
<div class="is-container container-new leading-12 size-17">
|
115740
116929
|
[%CONTENT%]
|
115741
116930
|
</div>
|
@@ -147276,7 +148465,8 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
|
|
147276
148465
|
}
|
147277
148466
|
.is-block.active.editable {
|
147278
148467
|
outline: none;
|
147279
|
-
cursor: auto;
|
148468
|
+
cursor: auto;
|
148469
|
+
z-index: 10;
|
147280
148470
|
}
|
147281
148471
|
.is-block.active.multi {
|
147282
148472
|
outline: var(--is-outline);
|
@@ -147516,7 +148706,12 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
|
|
147516
148706
|
transition: none !important;
|
147517
148707
|
z-index:1;
|
147518
148708
|
}
|
147519
|
-
|
148709
|
+
|
148710
|
+
|
148711
|
+
i.bi, i.icon { display: inline-flex; }
|
148712
|
+
|
148713
|
+
</style>`); // i.bi, i.icon { display: inline-flex; } => this makes icons more cursor friendly
|
148714
|
+
|
147520
148715
|
dom.appendHtml(document.head, `<style id="_contentboxstuff_css">
|
147521
148716
|
|
147522
148717
|
#_cbhtml .is-modal.editbox.is-modal-content {
|