@innovastudio/contentbuilder 1.4.118 → 1.4.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -2
- package/public/contentbuilder/contentbuilder.css +69 -71
- package/public/contentbuilder/contentbuilder.esm.js +1045 -924
- package/public/contentbuilder/contentbuilder.min.js +9 -9
- package/public/contentbuilder/plugins/symbols/plugin.js +1 -1
- package/public/contentbuilder/themes/dark-blue.css +4 -0
- package/public/contentbuilder/themes/dark-blue2.css +4 -0
- package/public/contentbuilder/themes/dark-blue3.css +4 -0
- package/public/contentbuilder/themes/dark-gray.css +4 -0
- package/public/contentbuilder/themes/dark-pink.css +4 -0
- package/public/contentbuilder/themes/dark-purple.css +4 -0
- package/public/contentbuilder/themes/dark-red.css +4 -0
- package/public/contentbuilder/themes/dark.css +4 -0
|
@@ -106,8 +106,8 @@ class Util {
|
|
|
106
106
|
callback(true);
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
-
confirm(message, callback, yesno, yestext) {
|
|
110
|
-
if (!this.builder.deleteConfirm) {
|
|
109
|
+
confirm(message, callback, yesno, yestext, forceOpen) {
|
|
110
|
+
if (!this.builder.deleteConfirm && !forceOpen) {
|
|
111
111
|
callback(true);
|
|
112
112
|
return;
|
|
113
113
|
}
|
|
@@ -468,6 +468,9 @@ class Util {
|
|
|
468
468
|
modal.style.display = '';
|
|
469
469
|
}
|
|
470
470
|
refreshModuleLayout(col) {
|
|
471
|
+
let savedHeight;
|
|
472
|
+
if (col.style.height) savedHeight = col.style.height;else col.style.height = `${col.offsetHeight}px`;
|
|
473
|
+
col.style.opacity = 0;
|
|
471
474
|
let html = decodeURIComponent(col.getAttribute('data-html'));
|
|
472
475
|
html = html.replace(/{id}/g, this.builder.util.makeId());
|
|
473
476
|
col.innerHTML = '';
|
|
@@ -483,6 +486,14 @@ class Util {
|
|
|
483
486
|
}
|
|
484
487
|
i++;
|
|
485
488
|
});
|
|
489
|
+
setTimeout(() => {
|
|
490
|
+
if (savedHeight) {
|
|
491
|
+
col.style.height = savedHeight;
|
|
492
|
+
} else {
|
|
493
|
+
col.style.height = '';
|
|
494
|
+
}
|
|
495
|
+
col.style.opacity = '';
|
|
496
|
+
}, 100);
|
|
486
497
|
}
|
|
487
498
|
removeColClasses(cell) {
|
|
488
499
|
cell.classList.remove('full');
|
|
@@ -1189,8 +1200,12 @@ class Util {
|
|
|
1189
1200
|
pop.style.transition = '';
|
|
1190
1201
|
}, 200);
|
|
1191
1202
|
});
|
|
1192
|
-
|
|
1193
|
-
document.querySelector('
|
|
1203
|
+
const movControlBox = document.querySelector('.moveable-control-box');
|
|
1204
|
+
const imageResizer = document.querySelector('#divImageResizer');
|
|
1205
|
+
if (movControlBox && !imageResizer.getAttribute('data-resizing')) {
|
|
1206
|
+
// this.builder.moveable.updateRect();
|
|
1207
|
+
movControlBox.style.display = 'none';
|
|
1208
|
+
}
|
|
1194
1209
|
}
|
|
1195
1210
|
hideControls() {
|
|
1196
1211
|
const dom = this.dom;
|
|
@@ -1225,15 +1240,14 @@ class Util {
|
|
|
1225
1240
|
Array.prototype.forEach.call(elms, elm => {
|
|
1226
1241
|
dom.removeClass(elm, 'elm-active');
|
|
1227
1242
|
});
|
|
1228
|
-
let elmTool =
|
|
1243
|
+
let elmTool = this.builder.doc.querySelector('.is-element-tool');
|
|
1229
1244
|
elmTool.style.display = '';
|
|
1230
|
-
let linkTool =
|
|
1245
|
+
let linkTool = this.builder.doc.querySelector('#divLinkTool');
|
|
1231
1246
|
linkTool.style.display = '';
|
|
1247
|
+
this.builder.activeIcon = null;
|
|
1248
|
+
this.builder.inspectedElement = null;
|
|
1249
|
+
this.builder.activeElement = null;
|
|
1232
1250
|
if (all) {
|
|
1233
|
-
this.builder.activeIcon = null;
|
|
1234
|
-
this.builder.inspectedElement = null;
|
|
1235
|
-
this.builder.activeElement = null;
|
|
1236
|
-
|
|
1237
1251
|
// RTE
|
|
1238
1252
|
let rtetool = builderStuff.querySelector('.is-rte-tool');
|
|
1239
1253
|
if (rtetool) rtetool.style.display = 'none';
|
|
@@ -1554,6 +1568,7 @@ class Util {
|
|
|
1554
1568
|
rows.forEach(row => {
|
|
1555
1569
|
if (dom.hasClass(row, 'row-add-initial')) return;
|
|
1556
1570
|
if (dom.hasClass(row, 'dummy-space')) return;
|
|
1571
|
+
if (row.tagName.toLowerCase() === 'link') return;
|
|
1557
1572
|
empty = false;
|
|
1558
1573
|
});
|
|
1559
1574
|
if (empty) {
|
|
@@ -10400,7 +10415,8 @@ class HtmlUtil {
|
|
|
10400
10415
|
language: 'html',
|
|
10401
10416
|
theme: this.builder.styleDark || this.builder.styleColoredDark ? 'vs-dark' : ''
|
|
10402
10417
|
});
|
|
10403
|
-
this.builder.codeEditorExternal.
|
|
10418
|
+
this.builder.codeEditorExternal.onDidChangeModelContent(() => {
|
|
10419
|
+
// this.builder.codeEditorExternal.onKeyUp(()=>{
|
|
10404
10420
|
const source = document.querySelector('textarea[data-source-active]');
|
|
10405
10421
|
source.value = this.builder.codeEditorExternal.getModel().getValue();
|
|
10406
10422
|
});
|
|
@@ -10425,6 +10441,18 @@ class HtmlUtil {
|
|
|
10425
10441
|
} else {
|
|
10426
10442
|
viewhtml = builderStuff.querySelector('.viewhtml');
|
|
10427
10443
|
}
|
|
10444
|
+
let modelContent = viewhtml.querySelector('.is-modal-content');
|
|
10445
|
+
let codeEditor = viewhtml.querySelector('.input-code-editor');
|
|
10446
|
+
codeEditor.style.opacity = 0.01;
|
|
10447
|
+
if (mode === 'full') {
|
|
10448
|
+
modelContent.style.width = this.builder.codeEditorWidth;
|
|
10449
|
+
modelContent.style.maxWidth = this.builder.codeEditorMaxWidth;
|
|
10450
|
+
codeEditor.style.height = this.builder.codeEditorHeight;
|
|
10451
|
+
} else {
|
|
10452
|
+
modelContent.style.width = this.builder.blockCodeEditorWidth;
|
|
10453
|
+
modelContent.style.maxWidth = this.builder.blockCodeEditorMaxWidth;
|
|
10454
|
+
codeEditor.style.height = this.builder.blockCodeEditorHeight;
|
|
10455
|
+
}
|
|
10428
10456
|
util.showModal(viewhtml, true, () => {
|
|
10429
10457
|
if (btn) {
|
|
10430
10458
|
btn.removeAttribute('data-focus');
|
|
@@ -10432,8 +10460,6 @@ class HtmlUtil {
|
|
|
10432
10460
|
}
|
|
10433
10461
|
});
|
|
10434
10462
|
if (btn) btn.setAttribute('data-focus', true);
|
|
10435
|
-
let codeEditor = viewhtml.querySelector('.input-code-editor');
|
|
10436
|
-
codeEditor.style.opacity = 0.01;
|
|
10437
10463
|
this._view(mode, area);
|
|
10438
10464
|
}
|
|
10439
10465
|
_view(mode, area) {
|
|
@@ -10468,7 +10494,8 @@ class HtmlUtil {
|
|
|
10468
10494
|
theme: this.builder.styleDark || this.builder.styleColoredDark ? 'vs-dark' : ''
|
|
10469
10495
|
});
|
|
10470
10496
|
let textarea = viewhtml.querySelector('textarea');
|
|
10471
|
-
this.builder.codeEditor.
|
|
10497
|
+
this.builder.codeEditor.onDidChangeModelContent(() => {
|
|
10498
|
+
// this.builder.codeEditor.onKeyUp(()=>{
|
|
10472
10499
|
textarea.value = this.builder.codeEditor.getModel().getValue();
|
|
10473
10500
|
});
|
|
10474
10501
|
});
|
|
@@ -10566,16 +10593,6 @@ class HtmlUtil {
|
|
|
10566
10593
|
this.builder.codeEditorArea = area;
|
|
10567
10594
|
let codeEditor = viewhtml.querySelector('.input-code-editor');
|
|
10568
10595
|
codeEditor.style.opacity = '';
|
|
10569
|
-
let modelContent = viewhtml.querySelector('.is-modal-content');
|
|
10570
|
-
if (mode === 'full') {
|
|
10571
|
-
modelContent.style.width = this.builder.codeEditorWidth;
|
|
10572
|
-
modelContent.style.maxWidth = this.builder.codeEditorMaxWidth;
|
|
10573
|
-
codeEditor.style.height = this.builder.codeEditorHeight;
|
|
10574
|
-
} else {
|
|
10575
|
-
modelContent.style.width = this.builder.blockCodeEditorWidth;
|
|
10576
|
-
modelContent.style.maxWidth = this.builder.blockCodeEditorMaxWidth;
|
|
10577
|
-
codeEditor.style.height = this.builder.blockCodeEditorHeight;
|
|
10578
|
-
}
|
|
10579
10596
|
}
|
|
10580
10597
|
fromViewToActual(html) {
|
|
10581
10598
|
for (var key in hash$1) {
|
|
@@ -11074,6 +11091,8 @@ class HtmlUtil {
|
|
|
11074
11091
|
if (!disableStaticSection) {
|
|
11075
11092
|
html = html_content + html_footer + html_others;
|
|
11076
11093
|
}
|
|
11094
|
+
html = tmp.innerHTML.trim();
|
|
11095
|
+
html = html.replace(/<font/g, '<span').replace(/<\/font/g, '</span');
|
|
11077
11096
|
} else {
|
|
11078
11097
|
let emptystyles = tmp.querySelectorAll('[style=""]');
|
|
11079
11098
|
Array.prototype.forEach.call(emptystyles, emptystyle => {
|
|
@@ -11771,6 +11790,29 @@ const prepareSvgIcons = builder => {
|
|
|
11771
11790
|
<path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z"></path>
|
|
11772
11791
|
</symbol>
|
|
11773
11792
|
|
|
11793
|
+
<symbol id="icon-undo" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
11794
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
11795
|
+
<path d="M9 14l-4 -4l4 -4"></path>
|
|
11796
|
+
<path d="M5 10h11a4 4 0 1 1 0 8h-1"></path>
|
|
11797
|
+
</symbol>
|
|
11798
|
+
<symbol id="icon-redo" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
11799
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
11800
|
+
<path d="M15 14l4 -4l-4 -4"></path>
|
|
11801
|
+
<path d="M19 10h-11a4 4 0 1 0 0 8h1"></path>
|
|
11802
|
+
</symbol>
|
|
11803
|
+
<symbol id="icon-save" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
11804
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
11805
|
+
<path d="M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2"></path>
|
|
11806
|
+
<path d="M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0"></path>
|
|
11807
|
+
<path d="M14 4l0 4l-6 0l0 -4"></path>
|
|
11808
|
+
</symbol>
|
|
11809
|
+
<symbol id="icon-back" viewBox="0 0 24 24" stroke-width="1.4" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
11810
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
11811
|
+
<path d="M9 14l-4 -4l4 -4"></path>
|
|
11812
|
+
<path d="M5 10h11a4 4 0 1 1 0 8h-1"></path>
|
|
11813
|
+
</symbol>
|
|
11814
|
+
|
|
11815
|
+
|
|
11774
11816
|
</defs>
|
|
11775
11817
|
</svg>`;
|
|
11776
11818
|
builder.dom.appendHtml(builder.builderStuff, html);
|
|
@@ -12243,6 +12285,21 @@ class Snippets {
|
|
|
12243
12285
|
width: 100% !important;
|
|
12244
12286
|
}
|
|
12245
12287
|
}
|
|
12288
|
+
|
|
12289
|
+
|
|
12290
|
+
* {
|
|
12291
|
+
scrollbar-width: thin;
|
|
12292
|
+
scrollbar-color: rgba(0, 0, 0, 0.2) auto;
|
|
12293
|
+
}
|
|
12294
|
+
*::-webkit-scrollbar {
|
|
12295
|
+
width: 12px;
|
|
12296
|
+
}
|
|
12297
|
+
*::-webkit-scrollbar-track {
|
|
12298
|
+
background: rgba(200, 200, 200, 0.2);
|
|
12299
|
+
}
|
|
12300
|
+
*::-webkit-scrollbar-thumb {
|
|
12301
|
+
background-color:rgba(0, 0, 0, 0.2);
|
|
12302
|
+
}
|
|
12246
12303
|
</style>
|
|
12247
12304
|
</head>
|
|
12248
12305
|
|
|
@@ -12997,31 +13054,13 @@ const renderQuickAdd = builder => {
|
|
|
12997
13054
|
</div>
|
|
12998
13055
|
|
|
12999
13056
|
<div class="is-modal snippets" tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true">
|
|
13000
|
-
<div class="is-modal-content" style="max-width:
|
|
13057
|
+
<div class="is-modal-content" style="max-width:1500px;width:80vw;height:80vh;padding:0;">
|
|
13001
13058
|
<iframe tabindex="0" style="width:100%;height:100%;border: none;display: block;" src="about:blank"></iframe>
|
|
13002
13059
|
</div>
|
|
13003
13060
|
</div>
|
|
13004
13061
|
`;
|
|
13005
13062
|
dom.appendHtml(builderStuff, html);
|
|
13006
13063
|
quickadd = builderStuff.querySelector('.quickadd');
|
|
13007
|
-
document.addEventListener('click', e => {
|
|
13008
|
-
e = e || window.event;
|
|
13009
|
-
var target = e.target || e.srcElement;
|
|
13010
|
-
if (quickadd.style.display === 'flex') {
|
|
13011
|
-
let a = dom.parentsHasClass(target, 'quickadd');
|
|
13012
|
-
let b = dom.parentsHasClass(target, 'row-add');
|
|
13013
|
-
let c = dom.parentsHasClass(target, 'is-rowadd-tool');
|
|
13014
|
-
let d = dom.parentsHasClass(target, 'cell-add');
|
|
13015
|
-
let f = dom.parentsHasClass(target, 'elm-add');
|
|
13016
|
-
let g = dom.parentsHasClass(target, 'row-add-initial');
|
|
13017
|
-
if (a || b || c || d || f || g) {
|
|
13018
|
-
return;
|
|
13019
|
-
} else {
|
|
13020
|
-
// quickadd.style.display = '';
|
|
13021
|
-
util.hidePop(quickadd);
|
|
13022
|
-
}
|
|
13023
|
-
}
|
|
13024
|
-
});
|
|
13025
13064
|
let tabs = quickadd.querySelectorAll('.is-pop-tab-item');
|
|
13026
13065
|
Array.prototype.forEach.call(tabs, tab => {
|
|
13027
13066
|
dom.addEventListener(tab, 'click', e => {
|
|
@@ -14520,30 +14559,9 @@ const renderGridEditor = builder => {
|
|
|
14520
14559
|
selector: '.is-draggable'
|
|
14521
14560
|
});
|
|
14522
14561
|
const grideditor = document.querySelector('.grideditor');
|
|
14523
|
-
document.addEventListener('click', e => {
|
|
14524
|
-
e = e || window.event;
|
|
14525
|
-
var target = e.target || e.srcElement;
|
|
14526
|
-
if (dom.hasClass(grideditor, 'active')) {
|
|
14527
|
-
let a = dom.parentsHasClass(target, 'is-builder');
|
|
14528
|
-
let b = dom.parentsHasClass(target, 'grideditor');
|
|
14529
|
-
let c = dom.parentsHasClass(target, 'is-modal');
|
|
14530
|
-
let d = dom.parentsHasClass(target, 'is-pop');
|
|
14531
|
-
let f = dom.parentsHasClass(target, 'rte-grideditor') || dom.hasClass(target, 'rte-grideditor');
|
|
14532
|
-
if (a || b || c || d || f) {
|
|
14533
|
-
grideditor.style.display = '';
|
|
14534
|
-
return;
|
|
14535
|
-
} else {
|
|
14536
|
-
grideditor.style.display = 'none';
|
|
14537
|
-
}
|
|
14538
|
-
}
|
|
14539
|
-
}, false);
|
|
14540
14562
|
let elm = grideditor.querySelector('.is-modal-close');
|
|
14541
14563
|
dom.addEventListener(elm, 'click', () => {
|
|
14542
|
-
|
|
14543
|
-
const builders = builder.doc.querySelectorAll(builder.opts.container);
|
|
14544
|
-
Array.prototype.forEach.call(builders, builder => {
|
|
14545
|
-
builder.removeAttribute('grideditor');
|
|
14546
|
-
});
|
|
14564
|
+
builder._rowTool.hideGridEditor();
|
|
14547
14565
|
});
|
|
14548
14566
|
const btnGridOutline = grideditor.querySelector('.grid-outline');
|
|
14549
14567
|
dom.addEventListener(btnGridOutline, 'click', () => {
|
|
@@ -14586,6 +14604,35 @@ const renderGridEditor = builder => {
|
|
|
14586
14604
|
} else {
|
|
14587
14605
|
quickadd.setAttribute('data-mode', 'cell-right');
|
|
14588
14606
|
}
|
|
14607
|
+
|
|
14608
|
+
//handleQuickAddClickOut
|
|
14609
|
+
const handleQuickAddClickOut = e => {
|
|
14610
|
+
// console.log('handleQuickAddClickOut');
|
|
14611
|
+
let elm = e.target;
|
|
14612
|
+
if (!elm) return;
|
|
14613
|
+
if (!elm.closest('.quickadd') && !elm.closest('.row-add') && !elm.closest('.is-rowadd-tool') && !elm.closest('.cell-add') && !elm.closest('.elm-add') && !elm.closest('.row-add-initial')) {
|
|
14614
|
+
// click outside
|
|
14615
|
+
|
|
14616
|
+
// hide
|
|
14617
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
|
14618
|
+
util.hidePop(quickadd);
|
|
14619
|
+
// console.log('HIDE');
|
|
14620
|
+
|
|
14621
|
+
// clear events
|
|
14622
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
|
14623
|
+
if (builder.iframeDocument) {
|
|
14624
|
+
builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
|
14625
|
+
}
|
|
14626
|
+
builder.handleQuickAddClickOut_ = false;
|
|
14627
|
+
}
|
|
14628
|
+
};
|
|
14629
|
+
if (!builder.handleQuickAddClickOut_) {
|
|
14630
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
|
14631
|
+
if (builder.iframeDocument) {
|
|
14632
|
+
builder.doc.addEventListener('click', handleQuickAddClickOut);
|
|
14633
|
+
}
|
|
14634
|
+
builder.handleQuickAddClickOut_ = true;
|
|
14635
|
+
}
|
|
14589
14636
|
});
|
|
14590
14637
|
elm = grideditor.querySelector('.cell-prev');
|
|
14591
14638
|
dom.addEventListener(elm, 'click', () => {
|
|
@@ -14649,9 +14696,9 @@ const renderGridEditor = builder => {
|
|
|
14649
14696
|
|
|
14650
14697
|
util.restoreSelection();
|
|
14651
14698
|
|
|
14652
|
-
// if(
|
|
14653
|
-
// dom.addClass(
|
|
14654
|
-
//
|
|
14699
|
+
// if(builder.activeElement) {
|
|
14700
|
+
// dom.addClass(builder.activeElement, 'elm-active');
|
|
14701
|
+
// builder.elmTool.repositionElementTool();
|
|
14655
14702
|
// }
|
|
14656
14703
|
|
|
14657
14704
|
btnCellSettings.removeAttribute('data-focus');
|
|
@@ -17835,7 +17882,7 @@ class Select {
|
|
|
17835
17882
|
}
|
|
17836
17883
|
}
|
|
17837
17884
|
|
|
17838
|
-
const renderSnippetPanel = builder => {
|
|
17885
|
+
const renderSnippetPanel = (builder, snippetOpen) => {
|
|
17839
17886
|
const util = builder.util;
|
|
17840
17887
|
const builderStuff = builder.builderStuff;
|
|
17841
17888
|
const dom = builder.dom;
|
|
@@ -18099,7 +18146,7 @@ const renderSnippetPanel = builder => {
|
|
|
18099
18146
|
util.clearControls();
|
|
18100
18147
|
});
|
|
18101
18148
|
const viewportWidth = window.innerWidth;
|
|
18102
|
-
if (builder.opts.snippetOpen && viewportWidth >= 960) {
|
|
18149
|
+
if ((builder.opts.snippetOpen || snippetOpen) && viewportWidth >= 960) {
|
|
18103
18150
|
snippetPanel.style.cssText = 'transition: all ease 0.8s;';
|
|
18104
18151
|
setTimeout(function () {
|
|
18105
18152
|
toggleSnippets(builder);
|
|
@@ -45411,7 +45458,7 @@ class Image$1 {
|
|
|
45411
45458
|
${this.builder.opts.selectIcon}
|
|
45412
45459
|
</button>
|
|
45413
45460
|
|
|
45414
|
-
<div class="image-larger1" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
45461
|
+
<div class="image-larger1 is-btn classic" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
45415
45462
|
<form class="form-upload-larger" target="frameTargetImageUpload" method="post" action="${this.builder.opts.largerImageHandler}" enctype="multipart/form-data" style="border-radius:1px;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;">
|
|
45416
45463
|
<input id="hidRefId1" name="hidRefId" type="hidden" value="" />
|
|
45417
45464
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
|
@@ -45434,7 +45481,7 @@ class Image$1 {
|
|
|
45434
45481
|
|
|
45435
45482
|
<button title="${util.out(this.builder.opts.otherSelectCaption)}" class="input-select-other" style="display:none;width:50px">${this.builder.opts.otherSelectIcon}</button>
|
|
45436
45483
|
|
|
45437
|
-
<div class="image-larger2" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
45484
|
+
<div class="image-larger2 is-btn classic" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
45438
45485
|
<form class="form-upload-larger" target="frameTargetImageUpload" method="post" action="${this.builder.opts.fileHandler ? this.builder.opts.fileHandler : this.builder.opts.largerImageHandler}" enctype="multipart/form-data" style="border-radius:1px;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;">
|
|
45439
45486
|
<input id="hidRefId2" name="hidRefId" type="hidden" value="" />
|
|
45440
45487
|
<svg class="is-icon-flex"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
|
@@ -45471,7 +45518,7 @@ class Image$1 {
|
|
|
45471
45518
|
|
|
45472
45519
|
<div id="divImageResizerOverlay" class="is-tool">
|
|
45473
45520
|
</div>
|
|
45474
|
-
<div id="divImageResizer"
|
|
45521
|
+
<div id="divImageResizer" class="keep-selection" style="position:absolute;">
|
|
45475
45522
|
</div>
|
|
45476
45523
|
`;
|
|
45477
45524
|
dom.appendHtml(builderStuff, html);
|
|
@@ -45529,24 +45576,26 @@ class Image$1 {
|
|
|
45529
45576
|
activeImage = activeImage.parentNode;
|
|
45530
45577
|
bCircular = true;
|
|
45531
45578
|
}
|
|
45579
|
+
let zoom = this.builder.opts.zoom;
|
|
45580
|
+
let win = this.builder.win;
|
|
45532
45581
|
if (!bCircular) {
|
|
45533
|
-
activeImage.style.width = `${width /
|
|
45582
|
+
activeImage.style.width = `${width / zoom}px`;
|
|
45534
45583
|
activeImage.style.height = 'auto';
|
|
45535
45584
|
} else {
|
|
45536
|
-
let pl = parseFloat(
|
|
45537
|
-
let pr = parseFloat(
|
|
45538
|
-
let maxWidth = activeImage.parentNode.offsetWidth *
|
|
45585
|
+
let pl = parseFloat(win.getComputedStyle(activeImage.parentNode).getPropertyValue('padding-left'));
|
|
45586
|
+
let pr = parseFloat(win.getComputedStyle(activeImage.parentNode).getPropertyValue('padding-right'));
|
|
45587
|
+
let maxWidth = activeImage.parentNode.offsetWidth * zoom - pl - pr;
|
|
45539
45588
|
if (width >= maxWidth) width = maxWidth;
|
|
45540
45589
|
if (height >= width) {
|
|
45541
|
-
activeImage.style.width = `${width /
|
|
45542
|
-
activeImage.style.height = `${width /
|
|
45543
|
-
activeImage.querySelector('img').style.width = `${width /
|
|
45544
|
-
activeImage.querySelector('img').style.height = `${width /
|
|
45590
|
+
activeImage.style.width = `${width / zoom}px`;
|
|
45591
|
+
activeImage.style.height = `${width / zoom}px`;
|
|
45592
|
+
activeImage.querySelector('img').style.width = `${width / zoom}px`;
|
|
45593
|
+
activeImage.querySelector('img').style.height = `${width / zoom}px`;
|
|
45545
45594
|
} else {
|
|
45546
|
-
activeImage.style.width = `${width /
|
|
45547
|
-
activeImage.style.height = `${height /
|
|
45548
|
-
activeImage.querySelector('img').style.width = `${width /
|
|
45549
|
-
activeImage.querySelector('img').style.height = `${height /
|
|
45595
|
+
activeImage.style.width = `${width / zoom}px`;
|
|
45596
|
+
activeImage.style.height = `${height / zoom}px`;
|
|
45597
|
+
activeImage.querySelector('img').style.width = `${width / zoom}px`;
|
|
45598
|
+
activeImage.querySelector('img').style.height = `${height / zoom}px`;
|
|
45550
45599
|
}
|
|
45551
45600
|
}
|
|
45552
45601
|
|
|
@@ -45564,8 +45613,8 @@ class Image$1 {
|
|
|
45564
45613
|
}
|
|
45565
45614
|
*/
|
|
45566
45615
|
newPos = this.builder.util.getElementPosition(activeImage);
|
|
45567
|
-
let top = newPos.top;
|
|
45568
|
-
let left = newPos.left;
|
|
45616
|
+
let top = newPos.top + window.pageYOffset;
|
|
45617
|
+
let left = newPos.left + window.pageXOffset;
|
|
45569
45618
|
target.style.top = top + 'px';
|
|
45570
45619
|
target.style.left = left + 'px';
|
|
45571
45620
|
target.style.width = activeImage.offsetWidth + 'px';
|
|
@@ -45579,9 +45628,11 @@ class Image$1 {
|
|
|
45579
45628
|
} else {
|
|
45580
45629
|
window.getSelection().removeAllRanges();
|
|
45581
45630
|
}
|
|
45631
|
+
imageResizer.setAttribute('data-resizing', '1'); // important: see util.hidePops()
|
|
45582
45632
|
}).on('resizeEnd', ({
|
|
45583
45633
|
target
|
|
45584
45634
|
}) => {
|
|
45635
|
+
imageResizer.removeAttribute('data-resizing');
|
|
45585
45636
|
imageResizerOverlay.style.display = '';
|
|
45586
45637
|
let activeImage = this.builder.activeImage;
|
|
45587
45638
|
let bCircular = false;
|
|
@@ -45608,6 +45659,7 @@ class Image$1 {
|
|
|
45608
45659
|
var elementWidth = activeImage.parentNode.offsetWidth - paddingX - borderX;
|
|
45609
45660
|
//var elementHeight = activeImage.parentNode.offsetHeight - paddingY - borderY;
|
|
45610
45661
|
|
|
45662
|
+
let win = this.builder.win;
|
|
45611
45663
|
let currentWidth;
|
|
45612
45664
|
if (!bCircular) {
|
|
45613
45665
|
const parentWidth = elementWidth; //activeImage.parentNode.offsetWidth;
|
|
@@ -45615,7 +45667,7 @@ class Image$1 {
|
|
|
45615
45667
|
const percentage = currentWidth / parentWidth * 100;
|
|
45616
45668
|
activeImage.style.width = percentage + '%';
|
|
45617
45669
|
} else {
|
|
45618
|
-
const _screenwidth =
|
|
45670
|
+
const _screenwidth = win.innerWidth;
|
|
45619
45671
|
currentWidth = activeImage.offsetWidth;
|
|
45620
45672
|
const percentage = currentWidth / _screenwidth * 100;
|
|
45621
45673
|
activeImage.style.width = percentage + 'vw';
|
|
@@ -45931,22 +45983,32 @@ class Image$1 {
|
|
|
45931
45983
|
this.builder.openImageSelect(src => {
|
|
45932
45984
|
this.builder.uo.saveForUndo();
|
|
45933
45985
|
let img = this.builder.activeImage;
|
|
45986
|
+
// img.setAttribute('src', src);
|
|
45987
|
+
img.addEventListener('load', () => {
|
|
45988
|
+
// this.builder.editor.element.image.repositionImageTool();
|
|
45989
|
+
if (this.builder.activeModule) {
|
|
45990
|
+
this.refreshIfIsModule(this.builder.activeModule);
|
|
45991
|
+
this.builder.activeModule.click();
|
|
45992
|
+
} else {
|
|
45993
|
+
this.repositionImageTool();
|
|
45994
|
+
this.builder.elmTool.repositionElementTool();
|
|
45995
|
+
}
|
|
45996
|
+
});
|
|
45934
45997
|
img.setAttribute('src', src);
|
|
45935
|
-
setTimeout(() => {
|
|
45936
|
-
img.click();
|
|
45937
|
-
let divImageResizer = document.querySelector('#divImageResizer');
|
|
45938
|
-
if (divImageResizer) divImageResizer.click();
|
|
45939
|
-
setTimeout(() => {
|
|
45940
|
-
img.click();
|
|
45941
|
-
let divImageResizer = document.querySelector('#divImageResizer');
|
|
45942
|
-
if (divImageResizer) divImageResizer.click();
|
|
45943
|
-
}, 600);
|
|
45944
|
-
}, 10);
|
|
45945
45998
|
|
|
45946
|
-
//
|
|
45947
|
-
|
|
45999
|
+
// setTimeout(()=>{
|
|
46000
|
+
// img.click();
|
|
46001
|
+
// let divImageResizer = document.querySelector('#divImageResizer');
|
|
46002
|
+
// if(divImageResizer) divImageResizer.click();
|
|
45948
46003
|
|
|
45949
|
-
//
|
|
46004
|
+
// setTimeout(()=>{
|
|
46005
|
+
// img.click();
|
|
46006
|
+
// let divImageResizer = document.querySelector('#divImageResizer');
|
|
46007
|
+
// if(divImageResizer) divImageResizer.click();
|
|
46008
|
+
// },600);
|
|
46009
|
+
// },10);
|
|
46010
|
+
|
|
46011
|
+
this.builder.opts.onChange();
|
|
45950
46012
|
this.builder.opts.onRender();
|
|
45951
46013
|
}, currentSrc);
|
|
45952
46014
|
});
|
|
@@ -46534,18 +46596,36 @@ class Image$1 {
|
|
|
46534
46596
|
}
|
|
46535
46597
|
imageTool.style.top = top + 'px';
|
|
46536
46598
|
imageTool.style.left = toolLeft + 'px';
|
|
46537
|
-
|
|
46538
|
-
|
|
46539
|
-
|
|
46540
|
-
|
|
46541
|
-
|
|
46542
|
-
|
|
46543
|
-
|
|
46599
|
+
if (!this.builder.activeImage.hasAttribute('data-noresize')) {
|
|
46600
|
+
let imageResizer = this.imageResizer;
|
|
46601
|
+
imageResizer.style.top = top + 'px';
|
|
46602
|
+
imageResizer.style.left = left + 'px';
|
|
46603
|
+
imageResizer.style.width = elm.offsetWidth * this.builder.opts.zoom + 'px';
|
|
46604
|
+
imageResizer.style.height = elm.offsetHeight * this.builder.opts.zoom + 'px';
|
|
46605
|
+
if (!this.builder.hideImageResizer) imageResizer.style.display = 'block';
|
|
46606
|
+
this.repositionHandler(elm.offsetWidth, elm.offsetHeight);
|
|
46544
46607
|
|
|
46545
|
-
|
|
46546
|
-
|
|
46547
|
-
|
|
46548
|
-
|
|
46608
|
+
// moveable
|
|
46609
|
+
if (this.builder.moveable) this.builder.moveable.updateRect();
|
|
46610
|
+
const movControlBox = document.querySelector('.moveable-control-box');
|
|
46611
|
+
if (movControlBox && !this.builder.hideImageResizer) movControlBox.style.display = 'block';
|
|
46612
|
+
}
|
|
46613
|
+
}
|
|
46614
|
+
}
|
|
46615
|
+
hideImageTool() {
|
|
46616
|
+
let imageTool = this.imageTool;
|
|
46617
|
+
imageTool.style.display = '';
|
|
46618
|
+
let imageResizer = this.imageResizer;
|
|
46619
|
+
imageResizer.style.display = 'none';
|
|
46620
|
+
|
|
46621
|
+
// moveable
|
|
46622
|
+
imageResizer.style.top = '-10px';
|
|
46623
|
+
imageResizer.style.left = '-10px';
|
|
46624
|
+
imageResizer.style.width = '1px';
|
|
46625
|
+
imageResizer.style.height = '1px';
|
|
46626
|
+
if (this.builder.moveable) {
|
|
46627
|
+
this.builder.moveable.updateRect();
|
|
46628
|
+
document.querySelector('.moveable-control-box').style.display = 'none';
|
|
46549
46629
|
}
|
|
46550
46630
|
}
|
|
46551
46631
|
click(e) {
|
|
@@ -46642,108 +46722,31 @@ class Image$1 {
|
|
|
46642
46722
|
if (this.builder.moveable) this.builder.moveable.updateRect();
|
|
46643
46723
|
const movControlBox = document.querySelector('.moveable-control-box');
|
|
46644
46724
|
if (movControlBox && !this.builder.hideImageResizer) movControlBox.style.display = 'block';
|
|
46645
|
-
|
|
46646
|
-
|
|
46647
|
-
|
|
46648
|
-
|
|
46649
|
-
|
|
46650
|
-
|
|
46651
|
-
|
|
46652
|
-
|
|
46653
|
-
|
|
46654
|
-
|
|
46655
|
-
|
|
46656
|
-
|
|
46657
|
-
|
|
46658
|
-
|
|
46659
|
-
|
|
46660
|
-
|
|
46661
|
-
|
|
46662
|
-
|
|
46663
|
-
|
|
46664
|
-
|
|
46665
|
-
|
|
46666
|
-
|
|
46667
|
-
|
|
46668
|
-
|
|
46669
|
-
|
|
46670
|
-
bCircular = true;
|
|
46671
|
-
}
|
|
46672
|
-
let pl = parseFloat(window.getComputedStyle(activeImage.parentNode).getPropertyValue('padding-left'));
|
|
46673
|
-
let pr = parseFloat(window.getComputedStyle(activeImage.parentNode).getPropertyValue('padding-right'));
|
|
46674
|
-
let maxWidth = activeImage.parentNode.offsetWidth - pl - pr;
|
|
46675
|
-
if(width>maxWidth) return;
|
|
46676
|
-
if(!bCircular) {
|
|
46677
|
-
// activeImage.style.width = `${width/this.builder.opts.zoom}px`;
|
|
46678
|
-
// activeImage.style.height = 'auto';
|
|
46679
|
-
activeImage.style.width = `${width}px`;
|
|
46680
|
-
activeImage.style.height = `${height}px`;
|
|
46681
|
-
} else {
|
|
46682
|
-
if(height>=width) {
|
|
46683
|
-
activeImage.style.width = `${width}px`;
|
|
46684
|
-
activeImage.style.height =`${width}px`;
|
|
46685
|
-
activeImage.querySelector('img').style.width = `${width}px`;
|
|
46686
|
-
activeImage.querySelector('img').style.height = `${width}px`;
|
|
46687
|
-
} else {
|
|
46688
|
-
activeImage.style.width = `${width}px`;
|
|
46689
|
-
activeImage.style.height =`${height}px`;
|
|
46690
|
-
activeImage.querySelector('img').style.width = `${width}px`;
|
|
46691
|
-
activeImage.querySelector('img').style.height = `${height}px`;
|
|
46692
|
-
}
|
|
46693
|
-
}
|
|
46694
|
-
|
|
46695
|
-
// https://stackoverflow.com/questions/29908261/prevent-text-selection-on-mouse-drag
|
|
46696
|
-
// prevent text selection
|
|
46697
|
-
if (document.selection) {
|
|
46698
|
-
document.selection.empty();
|
|
46699
|
-
} else {
|
|
46700
|
-
window.getSelection().removeAllRanges();
|
|
46701
|
-
}
|
|
46702
|
-
|
|
46703
|
-
}).on('resizeEnd', ({ target }) => {
|
|
46704
|
-
const builderStuff = this.builder.builderStuff;
|
|
46705
|
-
let activeImage = target;
|
|
46706
|
-
let bCircular = false;
|
|
46707
|
-
if(dom.hasClass(activeImage, 'img-circular')) {
|
|
46708
|
-
bCircular = true;
|
|
46709
|
-
}
|
|
46710
|
-
// https://stackoverflow.com/questions/25197184/get-the-height-of-an-element-minus-padding-margin-border-widths
|
|
46711
|
-
var cs = getComputedStyle(activeImage.parentNode);
|
|
46712
|
-
var paddingX = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);
|
|
46713
|
-
//var paddingY = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom);
|
|
46714
|
-
var borderX = parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth);
|
|
46715
|
-
//var borderY = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth);
|
|
46716
|
-
// Element width and height minus padding and border
|
|
46717
|
-
var elementWidth = activeImage.parentNode.offsetWidth - paddingX - borderX;
|
|
46718
|
-
//var elementHeight = activeImage.parentNode.offsetHeight - paddingY - borderY;
|
|
46719
|
-
if(!bCircular) {
|
|
46720
|
-
var parentWidth = elementWidth; //activeImage.parentNode.offsetWidth;
|
|
46721
|
-
var currentWidth = activeImage.offsetWidth;
|
|
46722
|
-
// var currentHeight = activeImage.offsetHeight;
|
|
46723
|
-
var percentage = (currentWidth / parentWidth) * 100;
|
|
46724
|
-
activeImage.style.width = percentage + '%';
|
|
46725
|
-
activeImage.style.height = 'auto';
|
|
46726
|
-
// activeImage.style.height = ((percentage*currentHeight)/currentWidth) + '%';//new
|
|
46727
|
-
}
|
|
46728
|
-
if(this.builder.opts.emailMode) {
|
|
46729
|
-
//activeImage.setAttribute('width', percentage + '%');
|
|
46730
|
-
activeImage.setAttribute('width', currentWidth);
|
|
46731
|
-
}
|
|
46732
|
-
target.setAttribute('data-resized', 1);
|
|
46733
|
-
setTimeout(()=>{
|
|
46734
|
-
target.setAttribute('data-resized', 0);
|
|
46735
|
-
},300);
|
|
46736
|
-
//Trigger Change event
|
|
46737
|
-
this.builder.opts.onChange();
|
|
46738
|
-
// Show column tool
|
|
46739
|
-
let columnTool = builderStuff.querySelector('.is-column-tool');
|
|
46740
|
-
dom.addClass(columnTool, 'active');
|
|
46741
|
-
|
|
46742
|
-
});
|
|
46743
|
-
elm.setAttribute('data-mov','1');
|
|
46744
|
-
this.builder.imgs.push(obj);
|
|
46745
|
-
}
|
|
46746
|
-
*/
|
|
46725
|
+
const handleImageToolClickOut = e => {
|
|
46726
|
+
// console.log('handleImageToolClickOut');
|
|
46727
|
+
let elm = e.target;
|
|
46728
|
+
if (!elm) return;
|
|
46729
|
+
if (!elm.closest('#divImageResizer') && !elm.closest('#divImageTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('.sl-wrapper') && !elm.closest('.sl-overlay') && !elm.closest('.sl-close') && !elm.closest('img')) {
|
|
46730
|
+
// click outside
|
|
46731
|
+
|
|
46732
|
+
// hide
|
|
46733
|
+
this.hideImageTool();
|
|
46734
|
+
// console.log('HIDE');
|
|
46735
|
+
|
|
46736
|
+
document.removeEventListener('click', handleImageToolClickOut);
|
|
46737
|
+
if (this.builder.iframeDocument) {
|
|
46738
|
+
this.builder.doc.removeEventListener('click', handleImageToolClickOut);
|
|
46739
|
+
}
|
|
46740
|
+
this.builder.handleImageToolClickOut_ = false;
|
|
46741
|
+
}
|
|
46742
|
+
};
|
|
46743
|
+
if (!this.builder.handleImageToolClickOut_) {
|
|
46744
|
+
document.addEventListener('click', handleImageToolClickOut);
|
|
46745
|
+
if (this.builder.iframeDocument) {
|
|
46746
|
+
this.builder.doc.addEventListener('click', handleImageToolClickOut);
|
|
46747
|
+
}
|
|
46748
|
+
this.builder.handleImageToolClickOut_ = true;
|
|
46749
|
+
}
|
|
46747
46750
|
} else {
|
|
46748
46751
|
let imageResizer = this.imageResizer;
|
|
46749
46752
|
imageResizer.style.display = 'none';
|
|
@@ -46763,18 +46766,7 @@ class Image$1 {
|
|
|
46763
46766
|
prog = true;
|
|
46764
46767
|
}
|
|
46765
46768
|
if (prog) {
|
|
46766
|
-
|
|
46767
|
-
let imageResizer = this.imageResizer;
|
|
46768
|
-
imageResizer.style.display = 'none';
|
|
46769
|
-
|
|
46770
|
-
// moveable
|
|
46771
|
-
imageResizer.style.top = '-10px';
|
|
46772
|
-
imageResizer.style.left = '-10px';
|
|
46773
|
-
imageResizer.style.width = '1px';
|
|
46774
|
-
imageResizer.style.height = '1px';
|
|
46775
|
-
if (this.builder.moveable) this.builder.moveable.updateRect();
|
|
46776
|
-
const movControlBox = document.querySelector('.moveable-control-box');
|
|
46777
|
-
if (movControlBox) movControlBox.style.display = 'none';
|
|
46769
|
+
this.hideImageTool();
|
|
46778
46770
|
}
|
|
46779
46771
|
|
|
46780
46772
|
// NOTE:
|
|
@@ -46788,36 +46780,11 @@ class Image$1 {
|
|
|
46788
46780
|
// },100);
|
|
46789
46781
|
// }
|
|
46790
46782
|
} else {
|
|
46791
|
-
let imageTool = this.imageTool;
|
|
46792
|
-
imageTool.style.display = '';
|
|
46793
46783
|
this.builder.activeImage = null;
|
|
46794
|
-
|
|
46795
|
-
imageResizer.style.display = 'none';
|
|
46796
|
-
|
|
46797
|
-
// moveable
|
|
46798
|
-
imageResizer.style.top = '-10px';
|
|
46799
|
-
imageResizer.style.left = '-10px';
|
|
46800
|
-
imageResizer.style.width = '1px';
|
|
46801
|
-
imageResizer.style.height = '1px';
|
|
46802
|
-
if (this.builder.moveable) this.builder.moveable.updateRect();
|
|
46803
|
-
const movControlBox = document.querySelector('.moveable-control-box');
|
|
46804
|
-
if (movControlBox) movControlBox.style.display = 'none';
|
|
46784
|
+
this.hideImageTool();
|
|
46805
46785
|
}
|
|
46806
46786
|
} else {
|
|
46807
|
-
let imageTool = this.imageTool;
|
|
46808
|
-
imageTool.style.display = '';
|
|
46809
46787
|
this.builder.activeImage = null;
|
|
46810
|
-
let imageResizer = this.imageResizer;
|
|
46811
|
-
imageResizer.style.display = 'none';
|
|
46812
|
-
|
|
46813
|
-
// moveable
|
|
46814
|
-
imageResizer.style.top = '-10px';
|
|
46815
|
-
imageResizer.style.left = '-10px';
|
|
46816
|
-
imageResizer.style.width = '1px';
|
|
46817
|
-
imageResizer.style.height = '1px';
|
|
46818
|
-
if (this.builder.moveable) this.builder.moveable.updateRect();
|
|
46819
|
-
const movControlBox = document.querySelector('.moveable-control-box');
|
|
46820
|
-
if (movControlBox) movControlBox.style.display = 'none';
|
|
46821
46788
|
}
|
|
46822
46789
|
}
|
|
46823
46790
|
|
|
@@ -48725,7 +48692,7 @@ class Hyperlink {
|
|
|
48725
48692
|
<button title="${util.out(this.builder.opts.otherSelectCaption)}" class="input-select-other" style="display:none;width:50px">
|
|
48726
48693
|
${this.builder.opts.otherSelectIcon}
|
|
48727
48694
|
</button>
|
|
48728
|
-
<div class="div-anyfile-upload" style="position: relative; flex: 0 0 auto; width:
|
|
48695
|
+
<div class="div-anyfile-upload is-btn classic" style="position: relative; flex: 0 0 auto; width: 50px; height: 43px; box-shadow: rgba(0, 0, 0, 0.32) 0px 3px 6px -6px;">
|
|
48729
48696
|
<form class="form-upload-larger" target="frameTargetAnyfileUpload" method="post" action="${this.builder.opts.fileHandler}" enctype="multipart/form-data" style="overflow:hidden;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:1px;display:flex;align-items: center;justify-content: center;">
|
|
48730
48697
|
<input class="input-anyfile-customval" name="hidRefId" type="hidden" value="${this.builder.customval}" />
|
|
48731
48698
|
<svg class="is-icon-flex"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
|
@@ -49127,8 +49094,6 @@ class Hyperlink {
|
|
|
49127
49094
|
|
|
49128
49095
|
this.showTool(link);
|
|
49129
49096
|
e.preventDefault();
|
|
49130
|
-
} else {
|
|
49131
|
-
this.hideTool();
|
|
49132
49097
|
}
|
|
49133
49098
|
}
|
|
49134
49099
|
showTool(link) {
|
|
@@ -49170,6 +49135,33 @@ class Hyperlink {
|
|
|
49170
49135
|
const h = linkTool.offsetHeight;
|
|
49171
49136
|
linkTool.style.top = top - h - 3 + 'px';
|
|
49172
49137
|
linkTool.style.left = left + link.offsetWidth * this.builder.opts.zoom - w + 'px';
|
|
49138
|
+
const handleLinkButtonClick = e => {
|
|
49139
|
+
// console.log('handleLinkButtonClick');
|
|
49140
|
+
let elm = e.target;
|
|
49141
|
+
if (!elm) return;
|
|
49142
|
+
if (!elm.closest('#divLinkTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('a')) {
|
|
49143
|
+
// click outside
|
|
49144
|
+
|
|
49145
|
+
// hide
|
|
49146
|
+
this.hideTool();
|
|
49147
|
+
// console.log('HIDE');
|
|
49148
|
+
|
|
49149
|
+
// Hide Button Editor Modal
|
|
49150
|
+
this.builder.element.hyperlink.buttonEditor.hide();
|
|
49151
|
+
document.removeEventListener('click', handleLinkButtonClick);
|
|
49152
|
+
if (this.builder.iframeDocument) {
|
|
49153
|
+
this.builder.doc.removeEventListener('click', handleLinkButtonClick);
|
|
49154
|
+
}
|
|
49155
|
+
this.builder.handleLinkButtonClick_ = false;
|
|
49156
|
+
}
|
|
49157
|
+
};
|
|
49158
|
+
if (!this.builder.handleLinkButtonClick_) {
|
|
49159
|
+
document.addEventListener('click', handleLinkButtonClick);
|
|
49160
|
+
if (this.builder.iframeDocument) {
|
|
49161
|
+
this.builder.doc.addEventListener('click', handleLinkButtonClick);
|
|
49162
|
+
}
|
|
49163
|
+
this.builder.handleLinkButtonClick_ = true;
|
|
49164
|
+
}
|
|
49173
49165
|
}
|
|
49174
49166
|
hideTool() {
|
|
49175
49167
|
this.linkTool.style.display = '';
|
|
@@ -49522,9 +49514,34 @@ class Button {
|
|
|
49522
49514
|
if (btn && !customcode && !noedit && !_protected) {
|
|
49523
49515
|
this.builder.activeButton = btn;
|
|
49524
49516
|
this.showTool(btn);
|
|
49517
|
+
const handleButtonClick = e => {
|
|
49518
|
+
// console.log('handleButtonClick');
|
|
49519
|
+
let elm = e.target;
|
|
49520
|
+
if (!elm) return;
|
|
49521
|
+
if (!elm.closest('#divButtonTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('button')) {
|
|
49522
|
+
// click outside
|
|
49523
|
+
|
|
49524
|
+
// hide
|
|
49525
|
+
this.hideTool();
|
|
49526
|
+
// console.log('HIDE');
|
|
49527
|
+
|
|
49528
|
+
// Hide Button Editor Modal
|
|
49529
|
+
this.builder.element.hyperlink.buttonEditor.hide();
|
|
49530
|
+
document.removeEventListener('click', handleButtonClick);
|
|
49531
|
+
if (this.builder.iframeDocument) {
|
|
49532
|
+
this.builder.doc.removeEventListener('click', handleButtonClick);
|
|
49533
|
+
}
|
|
49534
|
+
this.builder.handleButtonClick_ = false;
|
|
49535
|
+
}
|
|
49536
|
+
};
|
|
49537
|
+
if (!this.builder.handleButtonClick_) {
|
|
49538
|
+
document.addEventListener('click', handleButtonClick);
|
|
49539
|
+
if (this.builder.iframeDocument) {
|
|
49540
|
+
this.builder.doc.addEventListener('click', handleButtonClick);
|
|
49541
|
+
}
|
|
49542
|
+
this.builder.handleButtonClick_ = true;
|
|
49543
|
+
}
|
|
49525
49544
|
e.preventDefault();
|
|
49526
|
-
} else {
|
|
49527
|
-
this.hideTool();
|
|
49528
49545
|
}
|
|
49529
49546
|
}
|
|
49530
49547
|
editButton() {
|
|
@@ -49731,7 +49748,8 @@ class Module {
|
|
|
49731
49748
|
if (!moduleTool) {
|
|
49732
49749
|
let html = `
|
|
49733
49750
|
<div class="is-tool is-module-tool">
|
|
49734
|
-
<button title="${util.out('
|
|
49751
|
+
<button class="btn-module-refresh" title="${util.out('Refresh')}" data-title="${util.out('Refresh')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-reload"></use></svg></button>
|
|
49752
|
+
<button class="btn-module-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
|
|
49735
49753
|
</div>
|
|
49736
49754
|
|
|
49737
49755
|
<input id="hidContentModuleCode" type="hidden" />
|
|
@@ -49759,11 +49777,15 @@ class Module {
|
|
|
49759
49777
|
}
|
|
49760
49778
|
moduleModal = builderStuff.querySelector('.is-modal.custommodule');
|
|
49761
49779
|
this.moduleModal = moduleModal;
|
|
49762
|
-
|
|
49763
|
-
|
|
49764
|
-
|
|
49765
|
-
|
|
49766
|
-
|
|
49780
|
+
const btnModuleSettings = moduleTool.querySelector('.btn-module-settings');
|
|
49781
|
+
btnModuleSettings.addEventListener('click', async () => {
|
|
49782
|
+
this.edit(btnModuleSettings);
|
|
49783
|
+
});
|
|
49784
|
+
const btnModuleRefresh = moduleTool.querySelector('.btn-module-refresh');
|
|
49785
|
+
btnModuleRefresh.addEventListener('click', async () => {
|
|
49786
|
+
let module = this.builder.activeModule;
|
|
49787
|
+
module.click();
|
|
49788
|
+
this.util.refreshModuleLayout(module);
|
|
49767
49789
|
});
|
|
49768
49790
|
let btnOk = moduleModal.querySelector('.input-ok');
|
|
49769
49791
|
dom.addEventListener(btnOk, 'click', () => {
|
|
@@ -49811,16 +49833,16 @@ class Module {
|
|
|
49811
49833
|
});
|
|
49812
49834
|
let builderActive = this.builder.doc.querySelector('.builder-active');
|
|
49813
49835
|
if (builderActive) this.builder.applyBehaviorOn(builderActive);
|
|
49814
|
-
|
|
49815
|
-
//Trigger Change event
|
|
49816
49836
|
this.builder.opts.onChange();
|
|
49817
|
-
|
|
49818
|
-
//Trigger Render event
|
|
49819
49837
|
this.builder.opts.onRender();
|
|
49820
|
-
|
|
49821
|
-
this.util.
|
|
49822
|
-
|
|
49823
|
-
|
|
49838
|
+
|
|
49839
|
+
// this.util.hideControls();
|
|
49840
|
+
|
|
49841
|
+
// this.util.repositionColumnTool(true);
|
|
49842
|
+
// if(this.builder.onRefreshTool) this.builder.onRefreshTool();
|
|
49843
|
+
|
|
49844
|
+
// module.click();
|
|
49845
|
+
|
|
49824
49846
|
this.builder.hideModal(moduleModal);
|
|
49825
49847
|
});
|
|
49826
49848
|
let btnCancel = moduleModal.querySelector('.input-cancel');
|
|
@@ -49837,7 +49859,10 @@ class Module {
|
|
|
49837
49859
|
const dom = this.dom;
|
|
49838
49860
|
|
|
49839
49861
|
//-------- Set a flag to indicate active module -----------
|
|
49840
|
-
dom.removeAttributes(
|
|
49862
|
+
dom.removeAttributes(this.builder.doc.querySelectorAll('[data-module-active]'), 'data-module-active');
|
|
49863
|
+
// this.builder.doc.querySelectorAll('[data-module-active]').forEach(element => {
|
|
49864
|
+
// element.removeAttribute('data-module-active');
|
|
49865
|
+
// });
|
|
49841
49866
|
module.setAttribute('data-module-active', '1');
|
|
49842
49867
|
//-------- /Set a flag to indicate active module -----------
|
|
49843
49868
|
|
|
@@ -49953,26 +49978,27 @@ class Module {
|
|
|
49953
49978
|
index++;
|
|
49954
49979
|
});
|
|
49955
49980
|
*/
|
|
49981
|
+
if (module.getAttribute('data-panel') === 'side' && this.builder.controlPanel) ; else {
|
|
49982
|
+
this.util.showModal(moduleModal, true, () => {
|
|
49983
|
+
if (btn) {
|
|
49984
|
+
btn.removeAttribute('data-focus');
|
|
49985
|
+
btn.focus();
|
|
49986
|
+
}
|
|
49987
|
+
});
|
|
49988
|
+
if (btn) btn.setAttribute('data-focus', true);
|
|
49956
49989
|
|
|
49957
|
-
|
|
49958
|
-
|
|
49959
|
-
btn.removeAttribute('data-focus');
|
|
49960
|
-
btn.focus();
|
|
49961
|
-
}
|
|
49962
|
-
});
|
|
49963
|
-
if (btn) btn.setAttribute('data-focus', true);
|
|
49964
|
-
|
|
49965
|
-
// var d = new Date();
|
|
49966
|
-
// moduleModal.querySelector('iframe').src = this.builder.opts.modulePath + modulename + '.html?' + d.getTime(); //always refreshed
|
|
49990
|
+
// var d = new Date();
|
|
49991
|
+
// moduleModal.querySelector('iframe').src = this.builder.opts.modulePath + modulename + '.html?' + d.getTime(); //always refreshed
|
|
49967
49992
|
|
|
49968
|
-
|
|
49969
|
-
|
|
49970
|
-
|
|
49971
|
-
|
|
49972
|
-
|
|
49973
|
-
|
|
49974
|
-
|
|
49975
|
-
|
|
49993
|
+
let iframe = moduleModal.querySelector('iframe');
|
|
49994
|
+
let result = await fetch(this.builder.opts.modulePath + modulename + '.html');
|
|
49995
|
+
result = await result.text();
|
|
49996
|
+
result = result.replace(/<script>/g, `${this.builder.nonce ? `<script nonce="${this.builder.nonce}">` : '<script>'}`);
|
|
49997
|
+
let doc = iframe.contentWindow.document;
|
|
49998
|
+
doc.open();
|
|
49999
|
+
doc.write(result);
|
|
50000
|
+
doc.close();
|
|
50001
|
+
}
|
|
49976
50002
|
}
|
|
49977
50003
|
click(col) {
|
|
49978
50004
|
let custommodule = false;
|
|
@@ -49982,25 +50008,38 @@ class Module {
|
|
|
49982
50008
|
}
|
|
49983
50009
|
if (custommodule) {
|
|
49984
50010
|
this.builder.activeModule = col;
|
|
49985
|
-
let elm = col;
|
|
49986
50011
|
this.moduleTool.style.display = 'flex';
|
|
49987
|
-
|
|
49988
|
-
|
|
49989
|
-
|
|
49990
|
-
|
|
49991
|
-
|
|
49992
|
-
|
|
49993
|
-
|
|
49994
|
-
//Adjust left in case an element is outside the screen
|
|
49995
|
-
const _screenwidth = window.innerWidth;
|
|
49996
|
-
if (_toolwidth + left > _screenwidth) left = elm.getBoundingClientRect().left;
|
|
49997
|
-
this.moduleTool.style.top = top + 'px';
|
|
49998
|
-
this.moduleTool.style.left = left + 'px';
|
|
50012
|
+
const btn = this.moduleTool.querySelector('.btn-module-settings');
|
|
50013
|
+
if (col.getAttribute('data-panel') === 'side' && this.builder.controlPanel) {
|
|
50014
|
+
btn.style.display = 'none';
|
|
50015
|
+
} else {
|
|
50016
|
+
btn.style.display = '';
|
|
50017
|
+
}
|
|
50018
|
+
this.repositionModuleTool();
|
|
49999
50019
|
} else {
|
|
50000
50020
|
this.builder.activeModule = null;
|
|
50001
50021
|
this.moduleTool.style.display = '';
|
|
50002
50022
|
}
|
|
50003
50023
|
}
|
|
50024
|
+
repositionModuleTool() {
|
|
50025
|
+
if (!this.builder.activeModule) return;
|
|
50026
|
+
if (this.moduleTool.style.display !== 'flex') return;
|
|
50027
|
+
let elm = this.builder.activeModule;
|
|
50028
|
+
|
|
50029
|
+
// this.moduleTool.style.display = 'flex';
|
|
50030
|
+
let _toolwidth = this.moduleTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
|
|
50031
|
+
|
|
50032
|
+
let w = elm.offsetWidth * this.builder.opts.zoom;
|
|
50033
|
+
let top = elm.getBoundingClientRect().top + this.builder.win.pageYOffset;
|
|
50034
|
+
let left = elm.getBoundingClientRect().left - 2;
|
|
50035
|
+
left = left + (w - _toolwidth);
|
|
50036
|
+
|
|
50037
|
+
//Adjust left in case an element is outside the screen
|
|
50038
|
+
const _screenwidth = window.innerWidth;
|
|
50039
|
+
if (_toolwidth + left > _screenwidth) left = elm.getBoundingClientRect().left;
|
|
50040
|
+
this.moduleTool.style.top = top + 'px';
|
|
50041
|
+
this.moduleTool.style.left = left + 'px';
|
|
50042
|
+
}
|
|
50004
50043
|
}
|
|
50005
50044
|
|
|
50006
50045
|
class Code {
|
|
@@ -50433,21 +50472,6 @@ class Table {
|
|
|
50433
50472
|
tableTool = contentStuff.querySelector('.is-table-tool');
|
|
50434
50473
|
}
|
|
50435
50474
|
tableModal = builderStuff.querySelector('.is-modal.edittable');
|
|
50436
|
-
let btn = tableTool.querySelector('button');
|
|
50437
|
-
dom.addEventListener(btn, 'click', () => {
|
|
50438
|
-
// old 10317
|
|
50439
|
-
if (dom.hasClass(tableModal, 'active')) {
|
|
50440
|
-
// dom.removeClass(tableModal, 'active');
|
|
50441
|
-
util.hideModal(tableModal);
|
|
50442
|
-
} else {
|
|
50443
|
-
dom.addClass(tableModal, 'active');
|
|
50444
|
-
util.showModal(tableModal);
|
|
50445
|
-
}
|
|
50446
|
-
});
|
|
50447
|
-
let btnClose = tableModal.querySelector('.is-modal-close');
|
|
50448
|
-
dom.addEventListener(btnClose, 'click', () => {
|
|
50449
|
-
dom.removeClass(tableModal, 'active');
|
|
50450
|
-
});
|
|
50451
50475
|
const btnBgColor = tableModal.querySelector('.input-table-bgcolor');
|
|
50452
50476
|
btnBgColor.addEventListener('click', e => {
|
|
50453
50477
|
this.builder.uo.saveForUndo();
|
|
@@ -50609,7 +50633,7 @@ class Table {
|
|
|
50609
50633
|
|
|
50610
50634
|
//Table Layout
|
|
50611
50635
|
|
|
50612
|
-
btn = tableModal.querySelector('[data-table-cmd="rowabove"]');
|
|
50636
|
+
let btn = tableModal.querySelector('[data-table-cmd="rowabove"]');
|
|
50613
50637
|
btn.addEventListener('click', () => {
|
|
50614
50638
|
if (!this.builder.activeTd) return;
|
|
50615
50639
|
|
|
@@ -50746,47 +50770,99 @@ class Table {
|
|
|
50746
50770
|
//Trigger Change event
|
|
50747
50771
|
this.builder.opts.onChange();
|
|
50748
50772
|
});
|
|
50773
|
+
btn = tableTool.querySelector('button');
|
|
50774
|
+
dom.addEventListener(btn, 'click', () => {
|
|
50775
|
+
// old 10317
|
|
50776
|
+
|
|
50777
|
+
if (tableModal.classList.contains('active')) {
|
|
50778
|
+
this.hideTableEditor();
|
|
50779
|
+
} else {
|
|
50780
|
+
this.showTableEditor();
|
|
50781
|
+
}
|
|
50782
|
+
});
|
|
50783
|
+
let btnClose = tableModal.querySelector('.is-modal-close');
|
|
50784
|
+
dom.addEventListener(btnClose, 'click', () => {
|
|
50785
|
+
dom.removeClass(tableModal, 'active');
|
|
50786
|
+
});
|
|
50749
50787
|
}
|
|
50750
50788
|
this.tableTool = tableTool;
|
|
50751
50789
|
this.tableModal = tableModal;
|
|
50752
50790
|
}
|
|
50753
|
-
|
|
50754
|
-
const
|
|
50755
|
-
|
|
50756
|
-
|
|
50757
|
-
|
|
50758
|
-
|
|
50759
|
-
let
|
|
50760
|
-
|
|
50761
|
-
if (
|
|
50762
|
-
|
|
50763
|
-
|
|
50764
|
-
|
|
50765
|
-
|
|
50791
|
+
showTableEditor() {
|
|
50792
|
+
const tableModal = this.tableModal;
|
|
50793
|
+
this.util.showModal(tableModal);
|
|
50794
|
+
this.realtime();
|
|
50795
|
+
const handleTableClick = e => {
|
|
50796
|
+
// console.log('handleTableClick');
|
|
50797
|
+
let elm = e.target;
|
|
50798
|
+
if (!elm) return;
|
|
50799
|
+
if (!elm.closest('.is-table-tool') && !elm.closest('.is-sidebar') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('table')) {
|
|
50800
|
+
// click outside
|
|
50801
|
+
|
|
50802
|
+
// hide
|
|
50803
|
+
this.hideTableEditor();
|
|
50804
|
+
// console.log('HIDE');
|
|
50805
|
+
|
|
50806
|
+
document.removeEventListener('click', handleTableClick);
|
|
50807
|
+
if (this.builder.iframeDocument) {
|
|
50808
|
+
this.builder.doc.removeEventListener('click', handleTableClick);
|
|
50766
50809
|
}
|
|
50767
|
-
|
|
50810
|
+
this.builder.handleTableClick_ = false;
|
|
50768
50811
|
}
|
|
50769
|
-
|
|
50770
|
-
|
|
50812
|
+
if (elm.closest('table')) {
|
|
50813
|
+
this.realtime();
|
|
50814
|
+
}
|
|
50815
|
+
};
|
|
50816
|
+
if (!this.builder.handleTableClick_) {
|
|
50817
|
+
document.addEventListener('click', handleTableClick);
|
|
50818
|
+
if (this.builder.iframeDocument) {
|
|
50819
|
+
this.builder.doc.addEventListener('click', handleTableClick);
|
|
50771
50820
|
}
|
|
50772
|
-
|
|
50821
|
+
this.builder.handleTableClick_ = true;
|
|
50822
|
+
}
|
|
50823
|
+
}
|
|
50824
|
+
hideTableEditor() {
|
|
50825
|
+
const tableModal = this.tableModal;
|
|
50826
|
+
this.util.hideModal(tableModal);
|
|
50827
|
+
}
|
|
50828
|
+
realtime() {
|
|
50829
|
+
const tableModal = this.tableModal;
|
|
50830
|
+
if (tableModal.classList.contains('active') && this.builder.activeTable) {
|
|
50831
|
+
let activeTd = this.builder.activeTd;
|
|
50832
|
+
tableModal.querySelector('.input-table-bgcolor').style.backgroundColor = activeTd.style.backgroundColor;
|
|
50833
|
+
tableModal.querySelector('.input-table-textcolor').style.backgroundColor = activeTd.style.color;
|
|
50834
|
+
tableModal.querySelector('.input-table-bordercolor').style.backgroundColor = activeTd.style.borderColor;
|
|
50835
|
+
tableModal.querySelector('#selCellBorderWidth').value = parseInt(activeTd.style.borderWidth);
|
|
50836
|
+
} else {
|
|
50837
|
+
tableModal.querySelector('.input-table-bgcolor').style.backgroundColor = '';
|
|
50838
|
+
tableModal.querySelector('.input-table-textcolor').style.backgroundColor = '';
|
|
50839
|
+
tableModal.querySelector('.input-table-bordercolor').style.backgroundColor = '';
|
|
50840
|
+
tableModal.querySelector('#selCellBorderWidth').value = 0;
|
|
50841
|
+
}
|
|
50842
|
+
}
|
|
50843
|
+
click(e) {
|
|
50844
|
+
let elm = e.target;
|
|
50845
|
+
if (!elm) return;
|
|
50846
|
+
const dom = this.dom;
|
|
50847
|
+
const table = elm.closest('table');
|
|
50848
|
+
if (table) {
|
|
50849
|
+
let td = elm.closest('td');
|
|
50773
50850
|
if (dom.hasClass(table, 'default')) {
|
|
50774
50851
|
// only edit table.default
|
|
50775
50852
|
|
|
50776
50853
|
this.builder.activeTd = td;
|
|
50777
50854
|
this.builder.activeTable = table;
|
|
50778
|
-
let elm = table;
|
|
50779
50855
|
this.tableTool.style.display = 'flex';
|
|
50780
50856
|
let _toolwidth = this.tableTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
|
|
50781
50857
|
|
|
50782
|
-
let w =
|
|
50783
|
-
let top =
|
|
50784
|
-
let left =
|
|
50858
|
+
let w = table.offsetWidth * this.builder.opts.zoom;
|
|
50859
|
+
let top = table.getBoundingClientRect().top + this.builder.win.pageYOffset;
|
|
50860
|
+
let left = table.getBoundingClientRect().left - 2;
|
|
50785
50861
|
left = left + (w - _toolwidth);
|
|
50786
50862
|
|
|
50787
50863
|
//Adjust left in case an element is outside the screen
|
|
50788
50864
|
const _screenwidth = window.innerWidth;
|
|
50789
|
-
if (_toolwidth + left > _screenwidth) left =
|
|
50865
|
+
if (_toolwidth + left > _screenwidth) left = table.getBoundingClientRect().left;
|
|
50790
50866
|
this.tableTool.style.top = top + 'px';
|
|
50791
50867
|
this.tableTool.style.left = left + 'px';
|
|
50792
50868
|
} else {
|
|
@@ -50799,18 +50875,6 @@ class Table {
|
|
|
50799
50875
|
this.builder.activeTable = null;
|
|
50800
50876
|
this.tableTool.style.display = '';
|
|
50801
50877
|
}
|
|
50802
|
-
if (dom.hasClass(this.tableModal, 'active') && this.builder.activeTable) {
|
|
50803
|
-
let activeTd = this.builder.activeTd;
|
|
50804
|
-
this.tableModal.querySelector('.input-table-bgcolor').style.backgroundColor = activeTd.style.backgroundColor;
|
|
50805
|
-
this.tableModal.querySelector('.input-table-textcolor').style.backgroundColor = activeTd.style.color;
|
|
50806
|
-
this.tableModal.querySelector('.input-table-bordercolor').style.backgroundColor = activeTd.style.borderColor;
|
|
50807
|
-
this.tableModal.querySelector('#selCellBorderWidth').value = parseInt(activeTd.style.borderWidth);
|
|
50808
|
-
} else {
|
|
50809
|
-
this.tableModal.querySelector('.input-table-bgcolor').style.backgroundColor = '';
|
|
50810
|
-
this.tableModal.querySelector('.input-table-textcolor').style.backgroundColor = '';
|
|
50811
|
-
this.tableModal.querySelector('.input-table-bordercolor').style.backgroundColor = '';
|
|
50812
|
-
this.tableModal.querySelector('#selCellBorderWidth').value = 0;
|
|
50813
|
-
}
|
|
50814
50878
|
}
|
|
50815
50879
|
}
|
|
50816
50880
|
|
|
@@ -50857,7 +50921,7 @@ class Video {
|
|
|
50857
50921
|
<button title="${util.out('Select')}" class="input-select" style="flex:none;">
|
|
50858
50922
|
${this.builder.opts.selectIcon}
|
|
50859
50923
|
</button>
|
|
50860
|
-
<div class="video-larger1 input-upload" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
50924
|
+
<div class="video-larger1 input-upload is-btn classic" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
50861
50925
|
<form class="form-upload-larger" target="frameTargetVideoUpload" method="post" action="${this.builder.opts.videoHandler}" enctype="multipart/form-data" style="position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;">
|
|
50862
50926
|
<input id="hidRefId5" name="hidRefId" type="hidden" value="" />
|
|
50863
50927
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
|
@@ -51097,7 +51161,7 @@ class Audio {
|
|
|
51097
51161
|
<button title="${util.out('Select')}" class="input-select" style="flex:none;">
|
|
51098
51162
|
${this.builder.opts.selectIcon}
|
|
51099
51163
|
</button>
|
|
51100
|
-
<div class="audio-file-upload input-upload" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
51164
|
+
<div class="audio-file-upload input-upload is-btn classic" style="position:relative;flex:none;box-shadow: 0px 3px 6px -6px rgba(0, 0, 0, 0.32);">
|
|
51101
51165
|
<form class="form-upload-larger" target="frameTargetAudioUpload" method="post" action="${this.builder.opts.audioHandler}" enctype="multipart/form-data" style="position:absolute;top:0;left:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;">
|
|
51102
51166
|
<input id="hidRefAudio" name="hidRefId" type="hidden" value="" />
|
|
51103
51167
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
|
@@ -51248,66 +51312,7 @@ class Audio {
|
|
|
51248
51312
|
}
|
|
51249
51313
|
}
|
|
51250
51314
|
|
|
51251
|
-
//
|
|
51252
|
-
|
|
51253
|
-
class Svg {
|
|
51254
|
-
constructor(builder) {
|
|
51255
|
-
this.builder = builder;
|
|
51256
|
-
const util = this.builder.util;
|
|
51257
|
-
const builderStuff = this.builder.builderStuff;
|
|
51258
|
-
this.util = util;
|
|
51259
|
-
this.builderStuff = builderStuff;
|
|
51260
|
-
const dom = this.builder.dom;
|
|
51261
|
-
this.dom = dom;
|
|
51262
|
-
let svgTool = builderStuff.querySelector('#divSvgTool');
|
|
51263
|
-
if (!svgTool) {
|
|
51264
|
-
let html = `
|
|
51265
|
-
<div id="divSvgTool" class="is-tool">
|
|
51266
|
-
|
|
51267
|
-
</div>
|
|
51268
|
-
`;
|
|
51269
|
-
dom.appendHtml(builderStuff, html);
|
|
51270
|
-
svgTool = builderStuff.querySelector('#divSvgTool');
|
|
51271
|
-
}
|
|
51272
|
-
this.svgTool = svgTool;
|
|
51273
|
-
}
|
|
51274
|
-
click() {//e
|
|
51275
|
-
// Do Nothing
|
|
51276
|
-
/*
|
|
51277
|
-
const elm = e.target;
|
|
51278
|
-
if(elm.tagName.toLowerCase() === 'svg' || elm.tagName.toLowerCase() === 'path') {
|
|
51279
|
-
this.builder.activeSvg = elm.closest('svg');
|
|
51280
|
-
// prevent text selection
|
|
51281
|
-
if (document.selection) {
|
|
51282
|
-
document.selection.empty();
|
|
51283
|
-
} else {
|
|
51284
|
-
window.getSelection().removeAllRanges();
|
|
51285
|
-
}
|
|
51286
|
-
|
|
51287
|
-
this.showTool(this.builder.activeSvg);
|
|
51288
|
-
} else {
|
|
51289
|
-
this.hideTool();
|
|
51290
|
-
}
|
|
51291
|
-
*/
|
|
51292
|
-
}
|
|
51293
|
-
/*
|
|
51294
|
-
showTool(elm) {
|
|
51295
|
-
const top = elm.getBoundingClientRect().top + window.pageYOffset;
|
|
51296
|
-
const left = elm.getBoundingClientRect().left;
|
|
51297
|
-
this.svgTool.style.display = 'flex';
|
|
51298
|
-
|
|
51299
|
-
const w = this.svgTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
|
|
51300
|
-
const h = this.svgTool.offsetHeight;
|
|
51301
|
-
var bBox = elm.getBBox();
|
|
51302
|
-
this.svgTool.style.top = (top - h + window.pageYOffset - 3) + 'px';
|
|
51303
|
-
this.svgTool.style.left = (left + (bBox.width * this.builder.opts.zoom) - bBox.width) + 'px';
|
|
51304
|
-
}
|
|
51305
|
-
hideTool() {
|
|
51306
|
-
this.svgTool.style.display = '';
|
|
51307
|
-
}
|
|
51308
|
-
*/
|
|
51309
|
-
}
|
|
51310
|
-
|
|
51315
|
+
// import Svg from './elementsvg.js';
|
|
51311
51316
|
// import Moveable from 'moveable';
|
|
51312
51317
|
|
|
51313
51318
|
class Element$1 {
|
|
@@ -51329,8 +51334,9 @@ class Element$1 {
|
|
|
51329
51334
|
this.table = new Table(builder);
|
|
51330
51335
|
this.video = new Video(builder);
|
|
51331
51336
|
this.audio = new Audio(builder);
|
|
51332
|
-
this.svg = new Svg(builder);
|
|
51337
|
+
// this.svg = new Svg(builder);
|
|
51333
51338
|
}
|
|
51339
|
+
|
|
51334
51340
|
applyBehavior(col) {
|
|
51335
51341
|
const dom = this.dom;
|
|
51336
51342
|
let customcode = false;
|
|
@@ -51468,13 +51474,11 @@ class Element$1 {
|
|
|
51468
51474
|
//previously this is commented: && !noedit && !_protected
|
|
51469
51475
|
|
|
51470
51476
|
// Icon
|
|
51471
|
-
const icons =
|
|
51472
|
-
|
|
51473
|
-
dom.removeClass(icon, 'icon-active');
|
|
51474
|
-
});
|
|
51477
|
+
const icons = this.builder.doc.querySelectorAll('.icon-active');
|
|
51478
|
+
icons.forEach(icon => icon.classList.remove('icon-active'));
|
|
51475
51479
|
this.builder.activeIcon = null;
|
|
51476
51480
|
if (elm.tagName.toLowerCase() === 'i' && elm.innerHTML === '') {
|
|
51477
|
-
|
|
51481
|
+
elm.classList.add('icon-active');
|
|
51478
51482
|
dom.selectElementContents(elm);
|
|
51479
51483
|
this.builder.activeIcon = elm;
|
|
51480
51484
|
|
|
@@ -51515,7 +51519,7 @@ class Element$1 {
|
|
|
51515
51519
|
this.spacer.click(e);
|
|
51516
51520
|
|
|
51517
51521
|
// svg
|
|
51518
|
-
this.svg.click(e);
|
|
51522
|
+
// this.svg.click(e);
|
|
51519
51523
|
} else {
|
|
51520
51524
|
this.util.hideControls();
|
|
51521
51525
|
|
|
@@ -51536,49 +51540,6 @@ class Element$1 {
|
|
|
51536
51540
|
|
|
51537
51541
|
//Module
|
|
51538
51542
|
this.module.click(col, e);
|
|
51539
|
-
|
|
51540
|
-
/*
|
|
51541
|
-
// let elms = document.querySelectorAll('[data-resizable]');
|
|
51542
|
-
// elms.forEach((elm)=>{
|
|
51543
|
-
// if(elm.getAttribute('data-resizable')==='1') {
|
|
51544
|
-
// elm.destroy();
|
|
51545
|
-
// elm.setAttribute('data-resizable', '');
|
|
51546
|
-
// }
|
|
51547
|
-
// });
|
|
51548
|
-
// let rotate = 0;
|
|
51549
|
-
let elmResizable;
|
|
51550
|
-
if(elm.hasAttribute('data-resizable')) {
|
|
51551
|
-
elmResizable = elm;
|
|
51552
|
-
} else {
|
|
51553
|
-
elmResizable = dom.getParentByAttribute(elm,'data-resizable');
|
|
51554
|
-
}
|
|
51555
|
-
if(elmResizable) {
|
|
51556
|
-
if(elmResizable.getAttribute('data-resizable')!=='1') {
|
|
51557
|
-
new Moveable(document.body, {
|
|
51558
|
-
target: elmResizable, //document.querySelector('.resizable'),
|
|
51559
|
-
resizable: true,
|
|
51560
|
-
// draggable: true,
|
|
51561
|
-
// warpable: true,
|
|
51562
|
-
// rotatable: true,
|
|
51563
|
-
throttleResize: 0,
|
|
51564
|
-
keepRatio: true,
|
|
51565
|
-
}).on('resize', ({ target, width, height }) => {
|
|
51566
|
-
target.style.width = `${width}px`;
|
|
51567
|
-
target.style.height = `${height}px`;
|
|
51568
|
-
});
|
|
51569
|
-
|
|
51570
|
-
|
|
51571
|
-
// .on('rotate', ({ target, delta }) => {
|
|
51572
|
-
// rotate += delta;
|
|
51573
|
-
// target.style.transform = 'rotate(' + rotate + 'deg)';
|
|
51574
|
-
// }).on('drag', ({ target, left, top }) => {
|
|
51575
|
-
// target.style.left = left + 'px';
|
|
51576
|
-
// target.style.top = top + 'px';
|
|
51577
|
-
// });
|
|
51578
|
-
elmResizable.setAttribute('data-resizable', '1');
|
|
51579
|
-
}
|
|
51580
|
-
}
|
|
51581
|
-
*/
|
|
51582
51543
|
}
|
|
51583
51544
|
}
|
|
51584
51545
|
|
|
@@ -53270,6 +53231,7 @@ class RowTool {
|
|
|
53270
53231
|
const util = this.builder.util;
|
|
53271
53232
|
this.util = util;
|
|
53272
53233
|
const builderStuff = this.builder.builderStuff;
|
|
53234
|
+
this.builderStuff = builderStuff;
|
|
53273
53235
|
const dom = this.builder.dom;
|
|
53274
53236
|
this.dom = dom;
|
|
53275
53237
|
this.grid = new Grid(builder);
|
|
@@ -53451,6 +53413,11 @@ class RowTool {
|
|
|
53451
53413
|
// Open Row Settings
|
|
53452
53414
|
let elm = rowMore.querySelector('.row-settings');
|
|
53453
53415
|
if (elm) dom.addEventListener(elm, 'click', () => {
|
|
53416
|
+
if (this.builder.controlPanel) {
|
|
53417
|
+
this.builder.controlpanel.select('row', true);
|
|
53418
|
+
util.hidePop(this.rowMore);
|
|
53419
|
+
return;
|
|
53420
|
+
}
|
|
53454
53421
|
const row = this.rowOverlay();
|
|
53455
53422
|
if (!row) return;
|
|
53456
53423
|
this.readRowStyles(row);
|
|
@@ -54126,6 +54093,35 @@ class RowTool {
|
|
|
54126
54093
|
} else {
|
|
54127
54094
|
quickadd.setAttribute('data-mode', 'cell-right');
|
|
54128
54095
|
}
|
|
54096
|
+
|
|
54097
|
+
//handleQuickAddClickOut
|
|
54098
|
+
const handleQuickAddClickOut = e => {
|
|
54099
|
+
// console.log('handleQuickAddClickOut');
|
|
54100
|
+
let elm = e.target;
|
|
54101
|
+
if (!elm) return;
|
|
54102
|
+
if (!elm.closest('.quickadd') && !elm.closest('.row-add') && !elm.closest('.is-rowadd-tool') && !elm.closest('.cell-add') && !elm.closest('.elm-add') && !elm.closest('.row-add-initial')) {
|
|
54103
|
+
// click outside
|
|
54104
|
+
|
|
54105
|
+
// hide
|
|
54106
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
|
54107
|
+
util.hidePop(quickadd);
|
|
54108
|
+
// console.log('HIDE');
|
|
54109
|
+
|
|
54110
|
+
// clear events
|
|
54111
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
|
54112
|
+
if (this.builder.iframeDocument) {
|
|
54113
|
+
this.builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
|
54114
|
+
}
|
|
54115
|
+
this.builder.handleQuickAddClickOut_ = false;
|
|
54116
|
+
}
|
|
54117
|
+
};
|
|
54118
|
+
if (!this.builder.handleQuickAddClickOut_) {
|
|
54119
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
|
54120
|
+
if (this.builder.iframeDocument) {
|
|
54121
|
+
this.builder.doc.addEventListener('click', handleQuickAddClickOut);
|
|
54122
|
+
}
|
|
54123
|
+
this.builder.handleQuickAddClickOut_ = true;
|
|
54124
|
+
}
|
|
54129
54125
|
});
|
|
54130
54126
|
const btnCellMore = coltool.querySelector('.cell-more');
|
|
54131
54127
|
if (btnCellMore) dom.addEventListener(btnCellMore, 'click', () => {
|
|
@@ -54170,8 +54166,126 @@ class RowTool {
|
|
|
54170
54166
|
dom.removeClass(btnCellLocking, 'on');
|
|
54171
54167
|
// btnCellLocking.innerHTML = '<svg class="is-icon-flex"><use xlink:href="#icon-lock-off"></use></svg>';
|
|
54172
54168
|
}
|
|
54173
|
-
});
|
|
54174
54169
|
|
|
54170
|
+
// columnMore
|
|
54171
|
+
|
|
54172
|
+
const btnIncrease = columnMore.querySelector('.cell-increase');
|
|
54173
|
+
const btnDecrease = columnMore.querySelector('.cell-decrease');
|
|
54174
|
+
const btnPrev = columnMore.querySelector('.cell-prev');
|
|
54175
|
+
const btnNext = columnMore.querySelector('.cell-next');
|
|
54176
|
+
const btnUp = columnMore.querySelector('.cell-up');
|
|
54177
|
+
const btnDown = columnMore.querySelector('.cell-down');
|
|
54178
|
+
const btnDuplicate = columnMore.querySelector('.cell-duplicate');
|
|
54179
|
+
const btnLock = columnMore.querySelector('.cell-locking');
|
|
54180
|
+
const separator = columnMore.querySelector('.is-separator');
|
|
54181
|
+
let nogrid = cell.closest('[nogrid]'); //dom.parentsHasAttribute(col, 'nogrid');
|
|
54182
|
+
if (nogrid) {
|
|
54183
|
+
btnPrev.style.display = 'none';
|
|
54184
|
+
btnNext.style.display = 'none';
|
|
54185
|
+
btnUp.style.display = 'none';
|
|
54186
|
+
btnDown.style.display = 'none';
|
|
54187
|
+
if (btnIncrease) btnIncrease.style.display = 'none';
|
|
54188
|
+
if (btnDecrease) btnDecrease.style.display = 'none';
|
|
54189
|
+
btnDuplicate.style.display = 'none';
|
|
54190
|
+
btnPrev.setAttribute('disabled', 'disabled');
|
|
54191
|
+
btnNext.setAttribute('disabled', 'disabled');
|
|
54192
|
+
btnUp.setAttribute('disabled', 'disabled');
|
|
54193
|
+
btnDown.setAttribute('disabled', 'disabled');
|
|
54194
|
+
btnIncrease.setAttribute('disabled', 'disabled');
|
|
54195
|
+
btnDecrease.setAttribute('disabled', 'disabled');
|
|
54196
|
+
btnDuplicate.setAttribute('disabled', 'disabled');
|
|
54197
|
+
let btnColHtml = columnMore.querySelector('.cell-html');
|
|
54198
|
+
if (btnColHtml) btnColHtml.style.display = '';
|
|
54199
|
+
if (cell.getAttribute('data-html')) {
|
|
54200
|
+
columnMore.querySelector('.cell-html').style.display = 'none';
|
|
54201
|
+
this.columnTool.querySelector('.cell-more').style.display = 'none';
|
|
54202
|
+
columnMore.querySelector('.cell-html').setAttribute('disabled', 'disabled');
|
|
54203
|
+
this.columnTool.querySelector('.cell-more').setAttribute('disabled', 'disabled');
|
|
54204
|
+
}
|
|
54205
|
+
} else {
|
|
54206
|
+
btnPrev.style.display = '';
|
|
54207
|
+
btnNext.style.display = '';
|
|
54208
|
+
btnUp.style.display = '';
|
|
54209
|
+
btnDown.style.display = '';
|
|
54210
|
+
if (btnIncrease) btnIncrease.style.display = '';
|
|
54211
|
+
if (btnDecrease) btnDecrease.style.display = '';
|
|
54212
|
+
btnDuplicate.style.display = '';
|
|
54213
|
+
btnPrev.removeAttribute('disabled');
|
|
54214
|
+
btnNext.removeAttribute('disabled');
|
|
54215
|
+
btnUp.removeAttribute('disabled');
|
|
54216
|
+
btnDown.removeAttribute('disabled');
|
|
54217
|
+
if (btnIncrease) btnIncrease.removeAttribute('disabled');
|
|
54218
|
+
if (btnDecrease) btnDecrease.removeAttribute('disabled');
|
|
54219
|
+
btnDuplicate.removeAttribute('disabled');
|
|
54220
|
+
let btnColHtml = columnMore.querySelector('.cell-html');
|
|
54221
|
+
if (btnColHtml) {
|
|
54222
|
+
btnColHtml.style.display = '';
|
|
54223
|
+
btnColHtml.removeAttribute('disabled');
|
|
54224
|
+
}
|
|
54225
|
+
let row = cell.parentNode;
|
|
54226
|
+
let num = 3; //is-row-tool, is-col-tool & is-rowadd-tool
|
|
54227
|
+
if (row.querySelector('.is-row-overlay')) {
|
|
54228
|
+
num = 4; //is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
|
|
54229
|
+
}
|
|
54230
|
+
|
|
54231
|
+
if (row.childElementCount - num === 1) {
|
|
54232
|
+
//-num => minus is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
|
|
54233
|
+
btnPrev.style.display = 'none';
|
|
54234
|
+
btnNext.style.display = 'none';
|
|
54235
|
+
if (btnIncrease) btnIncrease.style.display = 'none';
|
|
54236
|
+
if (btnDecrease) btnDecrease.style.display = 'none';
|
|
54237
|
+
btnPrev.setAttribute('disabled', 'disabled');
|
|
54238
|
+
btnNext.setAttribute('disabled', 'disabled');
|
|
54239
|
+
if (btnIncrease) btnIncrease.setAttribute('disabled', 'disabled');
|
|
54240
|
+
if (btnDecrease) btnDecrease.setAttribute('disabled', 'disabled');
|
|
54241
|
+
} else {
|
|
54242
|
+
btnPrev.style.display = '';
|
|
54243
|
+
btnNext.style.display = '';
|
|
54244
|
+
if (btnIncrease) btnIncrease.style.display = '';
|
|
54245
|
+
if (btnDecrease) btnDecrease.style.display = '';
|
|
54246
|
+
btnPrev.removeAttribute('disabled');
|
|
54247
|
+
btnNext.removeAttribute('disabled');
|
|
54248
|
+
if (btnIncrease) btnIncrease.removeAttribute('disabled');
|
|
54249
|
+
if (btnDecrease) btnDecrease.removeAttribute('disabled');
|
|
54250
|
+
}
|
|
54251
|
+
|
|
54252
|
+
// let btnColHtml = columnMore.querySelector('.cell-html');
|
|
54253
|
+
let btnColDuplicate = btnDuplicate;
|
|
54254
|
+
if (cell.getAttribute('data-html')) {
|
|
54255
|
+
if (btnColHtml) {
|
|
54256
|
+
btnColHtml.style.display = 'none';
|
|
54257
|
+
btnColHtml.setAttribute('disabled', 'disabled');
|
|
54258
|
+
}
|
|
54259
|
+
if (btnColDuplicate) {
|
|
54260
|
+
btnColDuplicate.style.display = 'none';
|
|
54261
|
+
btnColDuplicate.setAttribute('disabled', 'disabled');
|
|
54262
|
+
}
|
|
54263
|
+
} else {
|
|
54264
|
+
if (btnColHtml) {
|
|
54265
|
+
btnColHtml.style.display = '';
|
|
54266
|
+
btnColHtml.removeAttribute('disabled');
|
|
54267
|
+
}
|
|
54268
|
+
if (btnColDuplicate) {
|
|
54269
|
+
btnColDuplicate.style.display = '';
|
|
54270
|
+
btnColDuplicate.removeAttribute('disabled');
|
|
54271
|
+
}
|
|
54272
|
+
}
|
|
54273
|
+
}
|
|
54274
|
+
if (cell.classList.contains('column-lock')) {
|
|
54275
|
+
btnPrev.style.display = 'none';
|
|
54276
|
+
btnNext.style.display = 'none';
|
|
54277
|
+
btnUp.style.display = 'none';
|
|
54278
|
+
btnDown.style.display = 'none';
|
|
54279
|
+
btnIncrease.style.display = 'none';
|
|
54280
|
+
btnDecrease.style.display = 'none';
|
|
54281
|
+
btnDuplicate.style.display = 'none';
|
|
54282
|
+
separator.style.display = 'none';
|
|
54283
|
+
btnLock.style.display = 'none';
|
|
54284
|
+
} else {
|
|
54285
|
+
separator.style.display = '';
|
|
54286
|
+
btnLock.style.display = '';
|
|
54287
|
+
}
|
|
54288
|
+
});
|
|
54175
54289
|
const btnCellRemove = coltool.querySelector('.cell-remove');
|
|
54176
54290
|
if (btnCellRemove) dom.addEventListener(btnCellRemove, 'click', () => {
|
|
54177
54291
|
const grid = new Grid(this.builder);
|
|
@@ -54181,47 +54295,7 @@ class RowTool {
|
|
|
54181
54295
|
});
|
|
54182
54296
|
let btnGridEditor = rowtool.querySelector('.row-grideditor');
|
|
54183
54297
|
if (btnGridEditor) dom.addEventListener(btnGridEditor, 'click', () => {
|
|
54184
|
-
|
|
54185
|
-
if (dom.hasClass(grideditor, 'active')) {
|
|
54186
|
-
dom.removeClass(grideditor, 'active');
|
|
54187
|
-
const builders = document.querySelectorAll(this.builder.opts.container);
|
|
54188
|
-
Array.prototype.forEach.call(builders, builder => {
|
|
54189
|
-
builder.removeAttribute('grideditor');
|
|
54190
|
-
});
|
|
54191
|
-
} else {
|
|
54192
|
-
// dom.addClass(grideditor, 'active');
|
|
54193
|
-
this.util.showModal(grideditor, false, () => {
|
|
54194
|
-
btnGridEditor.removeAttribute('data-focus');
|
|
54195
|
-
btnGridEditor.focus();
|
|
54196
|
-
});
|
|
54197
|
-
btnGridEditor.setAttribute('data-focus', true);
|
|
54198
|
-
const builders = document.querySelectorAll(this.builder.opts.container);
|
|
54199
|
-
Array.prototype.forEach.call(builders, builder => {
|
|
54200
|
-
builder.setAttribute('grideditor', '');
|
|
54201
|
-
});
|
|
54202
|
-
|
|
54203
|
-
// Grid Editor Status
|
|
54204
|
-
// On/off outline button
|
|
54205
|
-
const btnGridOutline = grideditor.querySelector('.grid-outline');
|
|
54206
|
-
const container = this.builder.doc.querySelector(this.builder.opts.container); // get one
|
|
54207
|
-
if (container.hasAttribute('gridoutline')) {
|
|
54208
|
-
dom.addClass(btnGridOutline, 'on');
|
|
54209
|
-
} else {
|
|
54210
|
-
dom.removeClass(btnGridOutline, 'on');
|
|
54211
|
-
}
|
|
54212
|
-
// On/off lock button
|
|
54213
|
-
const btnCellLocking = grideditor.querySelector('.cell-locking');
|
|
54214
|
-
let cell = util.cellSelected();
|
|
54215
|
-
if (cell) {
|
|
54216
|
-
if (cell.hasAttribute('data-noedit')) {
|
|
54217
|
-
dom.addClass(btnCellLocking, 'on');
|
|
54218
|
-
} else {
|
|
54219
|
-
dom.removeClass(btnCellLocking, 'on');
|
|
54220
|
-
}
|
|
54221
|
-
} else {
|
|
54222
|
-
dom.removeClass(btnCellLocking, 'on');
|
|
54223
|
-
}
|
|
54224
|
-
}
|
|
54298
|
+
this.showGridEditor();
|
|
54225
54299
|
});
|
|
54226
54300
|
const btnMore = rowtool.querySelector('.row-more');
|
|
54227
54301
|
if (btnMore) dom.addEventListener(btnMore, 'click', () => {
|
|
@@ -54310,6 +54384,92 @@ class RowTool {
|
|
|
54310
54384
|
});
|
|
54311
54385
|
}
|
|
54312
54386
|
}
|
|
54387
|
+
hideGridEditor() {
|
|
54388
|
+
const grideditor = this.builderStuff.querySelector('.grideditor');
|
|
54389
|
+
grideditor.classList.remove('active');
|
|
54390
|
+
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
|
54391
|
+
builders.forEach(builder => {
|
|
54392
|
+
builder.removeAttribute('grideditor');
|
|
54393
|
+
});
|
|
54394
|
+
}
|
|
54395
|
+
showGridEditor() {
|
|
54396
|
+
const grideditor = this.builderStuff.querySelector('.grideditor');
|
|
54397
|
+
const handleGridToolClickOut = e => {
|
|
54398
|
+
// console.log('handleGridToolClickOut');
|
|
54399
|
+
let elm = e.target;
|
|
54400
|
+
if (!elm) return;
|
|
54401
|
+
if (!elm.closest('.rte-grideditor') && !elm.closest('.grideditor') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('.is-sidebar') && !elm.closest('.is-rte-tool') && !elm.closest('.is-rte-pop') && !elm.closest('.is-elementrte-tool') && !elm.closest('.is-builder') && !elm.closest('.is-pop')) {
|
|
54402
|
+
// click outside
|
|
54403
|
+
|
|
54404
|
+
// hide
|
|
54405
|
+
this.hideGridEditor();
|
|
54406
|
+
// console.log('HIDE');
|
|
54407
|
+
|
|
54408
|
+
// clear events
|
|
54409
|
+
document.removeEventListener('click', handleGridToolClickOut);
|
|
54410
|
+
if (this.builder.iframeDocument) {
|
|
54411
|
+
this.builder.doc.removeEventListener('click', handleGridToolClickOut);
|
|
54412
|
+
}
|
|
54413
|
+
this.builder.handleGridToolClickOut_ = false;
|
|
54414
|
+
}
|
|
54415
|
+
};
|
|
54416
|
+
if (grideditor.classList.contains('active')) {
|
|
54417
|
+
// hide
|
|
54418
|
+
this.hideGridEditor();
|
|
54419
|
+
|
|
54420
|
+
// clear events
|
|
54421
|
+
document.removeEventListener('click', handleGridToolClickOut);
|
|
54422
|
+
if (this.builder.iframeDocument) {
|
|
54423
|
+
this.builder.doc.removeEventListener('click', handleGridToolClickOut);
|
|
54424
|
+
}
|
|
54425
|
+
this.builder.handleGridToolClickOut_ = false;
|
|
54426
|
+
return;
|
|
54427
|
+
}
|
|
54428
|
+
|
|
54429
|
+
// this.util.showModal(grideditor, false, ()=>{
|
|
54430
|
+
// btnGridEditor.removeAttribute('data-focus');
|
|
54431
|
+
// btnGridEditor.focus();
|
|
54432
|
+
// });
|
|
54433
|
+
// btnGridEditor.setAttribute('data-focus', true);
|
|
54434
|
+
|
|
54435
|
+
this.util.showModal(grideditor);
|
|
54436
|
+
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
|
54437
|
+
builders.forEach(builder => {
|
|
54438
|
+
builder.setAttribute('grideditor', '');
|
|
54439
|
+
});
|
|
54440
|
+
|
|
54441
|
+
/*
|
|
54442
|
+
// Grid Editor Status
|
|
54443
|
+
// On/off outline button
|
|
54444
|
+
const btnGridOutline = grideditor.querySelector('.grid-outline');
|
|
54445
|
+
const container = this.builder.doc.querySelector(this.builder.opts.container); // get one
|
|
54446
|
+
if(container.hasAttribute('gridoutline')) {
|
|
54447
|
+
dom.addClass(btnGridOutline, 'on');
|
|
54448
|
+
} else {
|
|
54449
|
+
dom.removeClass(btnGridOutline, 'on');
|
|
54450
|
+
}
|
|
54451
|
+
// On/off lock button
|
|
54452
|
+
const btnCellLocking = grideditor.querySelector('.cell-locking');
|
|
54453
|
+
let cell = util.cellSelected();
|
|
54454
|
+
if(cell) {
|
|
54455
|
+
if(cell.hasAttribute('data-noedit')) {
|
|
54456
|
+
dom.addClass(btnCellLocking, 'on');
|
|
54457
|
+
} else {
|
|
54458
|
+
dom.removeClass(btnCellLocking, 'on');
|
|
54459
|
+
}
|
|
54460
|
+
} else {
|
|
54461
|
+
dom.removeClass(btnCellLocking, 'on');
|
|
54462
|
+
}
|
|
54463
|
+
*/
|
|
54464
|
+
|
|
54465
|
+
if (!this.builder.handleGridToolClickOut_) {
|
|
54466
|
+
document.addEventListener('click', handleGridToolClickOut);
|
|
54467
|
+
if (this.builder.iframeDocument) {
|
|
54468
|
+
this.builder.doc.addEventListener('click', handleGridToolClickOut);
|
|
54469
|
+
}
|
|
54470
|
+
this.builder.handleGridToolClickOut_ = true;
|
|
54471
|
+
}
|
|
54472
|
+
}
|
|
54313
54473
|
readRowStyles(row) {
|
|
54314
54474
|
this.util.clearActiveElement();
|
|
54315
54475
|
|
|
@@ -54410,6 +54570,7 @@ class RowAddTool {
|
|
|
54410
54570
|
render(row) {
|
|
54411
54571
|
const dom = this.dom;
|
|
54412
54572
|
const util = this.builder.util;
|
|
54573
|
+
const builderStuff = this.builder.builderStuff;
|
|
54413
54574
|
const quickadd = renderQuickAdd(this.builder);
|
|
54414
54575
|
let rowaddtool = row.querySelector('.is-rowadd-tool');
|
|
54415
54576
|
if (!rowaddtool) {
|
|
@@ -54476,7 +54637,35 @@ class RowAddTool {
|
|
|
54476
54637
|
dom.addClass(quickadd, 'center');
|
|
54477
54638
|
}
|
|
54478
54639
|
quickadd.setAttribute('data-mode', 'row');
|
|
54479
|
-
|
|
54640
|
+
|
|
54641
|
+
//handleQuickAddClickOut
|
|
54642
|
+
const handleQuickAddClickOut = e => {
|
|
54643
|
+
// console.log('handleQuickAddClickOut');
|
|
54644
|
+
let elm = e.target;
|
|
54645
|
+
if (!elm) return;
|
|
54646
|
+
if (!elm.closest('.quickadd') && !elm.closest('.row-add') && !elm.closest('.is-rowadd-tool') && !elm.closest('.cell-add') && !elm.closest('.elm-add') && !elm.closest('.row-add-initial')) {
|
|
54647
|
+
// click outside
|
|
54648
|
+
|
|
54649
|
+
// hide
|
|
54650
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
|
54651
|
+
util.hidePop(quickadd);
|
|
54652
|
+
// console.log('HIDE');
|
|
54653
|
+
|
|
54654
|
+
// clear events
|
|
54655
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
|
54656
|
+
if (this.builder.iframeDocument) {
|
|
54657
|
+
this.builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
|
54658
|
+
}
|
|
54659
|
+
this.builder.handleQuickAddClickOut_ = false;
|
|
54660
|
+
}
|
|
54661
|
+
};
|
|
54662
|
+
if (!this.builder.handleQuickAddClickOut_) {
|
|
54663
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
|
54664
|
+
if (this.builder.iframeDocument) {
|
|
54665
|
+
this.builder.doc.addEventListener('click', handleQuickAddClickOut);
|
|
54666
|
+
}
|
|
54667
|
+
this.builder.handleQuickAddClickOut_ = true;
|
|
54668
|
+
}
|
|
54480
54669
|
});
|
|
54481
54670
|
}
|
|
54482
54671
|
}
|
|
@@ -54739,7 +54928,7 @@ class ColumnTool {
|
|
|
54739
54928
|
${this.builder.opts.otherSelectIcon}
|
|
54740
54929
|
</button>
|
|
54741
54930
|
|
|
54742
|
-
<div class="image-larger4" style="position: relative; flex: 0 0 auto; width: 40px; height: 38px; box-shadow: rgba(0, 0, 0, 0.32) 0px 3px 6px -6px;">
|
|
54931
|
+
<div class="image-larger4 is-btn classic" style="position: relative; flex: 0 0 auto; width: 40px; height: 38px; box-shadow: rgba(0, 0, 0, 0.32) 0px 3px 6px -6px;">
|
|
54743
54932
|
<form class="form-upload-larger" target="frameTargetLinkUpload" method="post" action="${this.builder.opts.largerImageHandler}" enctype="multipart/form-data" style="position:absolute;top:0;left:0;width:100%;height:100%;border-radius:1px;display:flex;align-items: center;justify-content: center;">
|
|
54744
54933
|
<input id="hidRefId4" name="hidRefId" type="hidden" value="">
|
|
54745
54934
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
|
@@ -55115,6 +55304,11 @@ class ColumnTool {
|
|
|
55115
55304
|
// Open Column Settings
|
|
55116
55305
|
elm = columnMore.querySelector('.cell-settings');
|
|
55117
55306
|
if (elm) dom.addEventListener(elm, 'click', () => {
|
|
55307
|
+
if (this.builder.controlPanel) {
|
|
55308
|
+
this.builder.controlpanel.select('column', true);
|
|
55309
|
+
util.hidePop(this.columnMore);
|
|
55310
|
+
return;
|
|
55311
|
+
}
|
|
55118
55312
|
let cell = util.cellSelected();
|
|
55119
55313
|
if (!cell) return;
|
|
55120
55314
|
this.readCellStyles(cell);
|
|
@@ -55514,6 +55708,8 @@ class ColumnTool {
|
|
|
55514
55708
|
cell.removeAttribute('data-scale');
|
|
55515
55709
|
};
|
|
55516
55710
|
inpImageHorSlider.onchange = () => {
|
|
55711
|
+
if (this.builder.win.adjustBgPos) this.builder.win.adjustBgPos(); // adjustBgPos() from box/flex.js
|
|
55712
|
+
|
|
55517
55713
|
//Trigger Change event
|
|
55518
55714
|
this.builder.opts.onChange();
|
|
55519
55715
|
};
|
|
@@ -55593,6 +55789,8 @@ class ColumnTool {
|
|
|
55593
55789
|
cell.removeAttribute('data-scale');
|
|
55594
55790
|
};
|
|
55595
55791
|
inpImageVertSlider.onchange = () => {
|
|
55792
|
+
if (this.builder.win.adjustBgPos) this.builder.win.adjustBgPos(); // adjustBgPos() from box/flex.js
|
|
55793
|
+
|
|
55596
55794
|
//Trigger Change event
|
|
55597
55795
|
this.builder.opts.onChange();
|
|
55598
55796
|
};
|
|
@@ -57135,144 +57333,28 @@ class ColumnTool {
|
|
|
57135
57333
|
}
|
|
57136
57334
|
}
|
|
57137
57335
|
click(col) {
|
|
57138
|
-
const dom = this.dom;
|
|
57139
|
-
|
|
57140
|
-
//---- New Col Tool ----
|
|
57141
57336
|
this.columnTool = col.parentNode.querySelector('.is-col-tool');
|
|
57142
57337
|
this.columnTool.style.left = col.offsetLeft + 'px';
|
|
57143
57338
|
this.columnTool.style.top = col.offsetTop + 'px';
|
|
57144
|
-
|
|
57145
|
-
|
|
57146
|
-
const
|
|
57147
|
-
|
|
57148
|
-
let nogrid = dom.parentsHasAttribute(col, 'nogrid');
|
|
57339
|
+
const btnAdd = this.columnTool.querySelector('.cell-add');
|
|
57340
|
+
const btnRemove = this.columnTool.querySelector('.cell-remove');
|
|
57341
|
+
const btnMore = this.columnTool.querySelector('.cell-more');
|
|
57342
|
+
let nogrid = col.closest('[nogrid]');
|
|
57149
57343
|
if (nogrid) {
|
|
57150
|
-
|
|
57151
|
-
|
|
57152
|
-
|
|
57153
|
-
|
|
57154
|
-
if (btnIncrease) btnIncrease.style.display = 'none';
|
|
57155
|
-
if (btnDecrease) btnDecrease.style.display = 'none';
|
|
57156
|
-
this.columnMore.querySelector('.cell-duplicate').style.display = 'none';
|
|
57157
|
-
this.columnMore.querySelector('.cell-prev').setAttribute('disabled', 'disabled');
|
|
57158
|
-
this.columnMore.querySelector('.cell-next').setAttribute('disabled', 'disabled');
|
|
57159
|
-
this.columnMore.querySelector('.cell-up').setAttribute('disabled', 'disabled');
|
|
57160
|
-
this.columnMore.querySelector('.cell-down').setAttribute('disabled', 'disabled');
|
|
57161
|
-
btnIncrease.setAttribute('disabled', 'disabled');
|
|
57162
|
-
btnDecrease.setAttribute('disabled', 'disabled');
|
|
57163
|
-
this.columnMore.querySelector('.cell-duplicate').setAttribute('disabled', 'disabled');
|
|
57164
|
-
let btnColHtml = this.columnMore.querySelector('.cell-html');
|
|
57165
|
-
if (btnColHtml) btnColHtml.style.display = '';
|
|
57166
|
-
this.columnTool.querySelector('.cell-add').style.display = 'none';
|
|
57167
|
-
this.columnTool.querySelector('.cell-remove').style.display = 'none';
|
|
57168
|
-
this.columnTool.querySelector('.cell-add').setAttribute('disabled', 'disabled');
|
|
57169
|
-
this.columnTool.querySelector('.cell-remove').setAttribute('disabled', 'disabled');
|
|
57344
|
+
btnAdd.style.display = 'none';
|
|
57345
|
+
btnRemove.style.display = 'none';
|
|
57346
|
+
btnAdd.setAttribute('disabled', 'disabled');
|
|
57347
|
+
btnRemove.setAttribute('disabled', 'disabled');
|
|
57170
57348
|
if (col.getAttribute('data-html')) {
|
|
57171
|
-
|
|
57172
|
-
|
|
57173
|
-
this.columnMore.querySelector('.cell-html').setAttribute('disabled', 'disabled');
|
|
57174
|
-
this.columnTool.querySelector('.cell-more').setAttribute('disabled', 'disabled');
|
|
57349
|
+
btnMore.style.display = 'none';
|
|
57350
|
+
btnMore.setAttribute('disabled', 'disabled');
|
|
57175
57351
|
}
|
|
57176
57352
|
} else {
|
|
57177
|
-
|
|
57178
|
-
|
|
57179
|
-
|
|
57180
|
-
|
|
57181
|
-
if (btnIncrease) btnIncrease.style.display = '';
|
|
57182
|
-
if (btnDecrease) btnDecrease.style.display = '';
|
|
57183
|
-
this.columnMore.querySelector('.cell-duplicate').style.display = '';
|
|
57184
|
-
this.columnMore.querySelector('.cell-prev').removeAttribute('disabled');
|
|
57185
|
-
this.columnMore.querySelector('.cell-next').removeAttribute('disabled');
|
|
57186
|
-
this.columnMore.querySelector('.cell-up').removeAttribute('disabled');
|
|
57187
|
-
this.columnMore.querySelector('.cell-down').removeAttribute('disabled');
|
|
57188
|
-
if (btnIncrease) btnIncrease.removeAttribute('disabled');
|
|
57189
|
-
if (btnDecrease) btnDecrease.removeAttribute('disabled');
|
|
57190
|
-
this.columnMore.querySelector('.cell-duplicate').removeAttribute('disabled');
|
|
57191
|
-
let btnColHtml = this.columnMore.querySelector('.cell-html');
|
|
57192
|
-
if (btnColHtml) {
|
|
57193
|
-
btnColHtml.style.display = '';
|
|
57194
|
-
btnColHtml.removeAttribute('disabled');
|
|
57195
|
-
}
|
|
57196
|
-
this.columnTool.querySelector('.cell-add').style.display = '';
|
|
57197
|
-
this.columnTool.querySelector('.cell-remove').style.display = '';
|
|
57198
|
-
this.columnTool.querySelector('.cell-add').removeAttribute('disabled');
|
|
57199
|
-
this.columnTool.querySelector('.cell-remove').removeAttribute('disabled');
|
|
57200
|
-
let row = col.parentNode;
|
|
57201
|
-
let num = 3; //is-row-tool, is-col-tool & is-rowadd-tool
|
|
57202
|
-
if (row.querySelector('.is-row-overlay')) {
|
|
57203
|
-
num = 4; //is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
|
|
57204
|
-
}
|
|
57205
|
-
|
|
57206
|
-
if (row.childElementCount - num === 1) {
|
|
57207
|
-
//-num => minus is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
|
|
57208
|
-
this.columnMore.querySelector('.cell-prev').style.display = 'none';
|
|
57209
|
-
this.columnMore.querySelector('.cell-next').style.display = 'none';
|
|
57210
|
-
if (btnIncrease) btnIncrease.style.display = 'none';
|
|
57211
|
-
if (btnDecrease) btnDecrease.style.display = 'none';
|
|
57212
|
-
this.columnMore.querySelector('.cell-prev').setAttribute('disabled', 'disabled');
|
|
57213
|
-
this.columnMore.querySelector('.cell-next').setAttribute('disabled', 'disabled');
|
|
57214
|
-
if (btnIncrease) btnIncrease.setAttribute('disabled', 'disabled');
|
|
57215
|
-
if (btnDecrease) btnDecrease.setAttribute('disabled', 'disabled');
|
|
57216
|
-
} else {
|
|
57217
|
-
this.columnMore.querySelector('.cell-prev').style.display = '';
|
|
57218
|
-
this.columnMore.querySelector('.cell-next').style.display = '';
|
|
57219
|
-
if (btnIncrease) btnIncrease.style.display = '';
|
|
57220
|
-
if (btnDecrease) btnDecrease.style.display = '';
|
|
57221
|
-
this.columnMore.querySelector('.cell-prev').removeAttribute('disabled');
|
|
57222
|
-
this.columnMore.querySelector('.cell-next').removeAttribute('disabled');
|
|
57223
|
-
if (btnIncrease) btnIncrease.removeAttribute('disabled');
|
|
57224
|
-
if (btnDecrease) btnDecrease.removeAttribute('disabled');
|
|
57225
|
-
}
|
|
57226
|
-
|
|
57227
|
-
// let btnColHtml = this.columnMore.querySelector('.cell-html');
|
|
57228
|
-
let btnColDuplicate = this.columnMore.querySelector('.cell-duplicate');
|
|
57229
|
-
if (col.getAttribute('data-html')) {
|
|
57230
|
-
if (btnColHtml) {
|
|
57231
|
-
btnColHtml.style.display = 'none';
|
|
57232
|
-
btnColHtml.setAttribute('disabled', 'disabled');
|
|
57233
|
-
}
|
|
57234
|
-
if (btnColDuplicate) {
|
|
57235
|
-
btnColDuplicate.style.display = 'none';
|
|
57236
|
-
btnColDuplicate.setAttribute('disabled', 'disabled');
|
|
57237
|
-
}
|
|
57238
|
-
} else {
|
|
57239
|
-
if (btnColHtml) {
|
|
57240
|
-
btnColHtml.style.display = '';
|
|
57241
|
-
btnColHtml.removeAttribute('disabled');
|
|
57242
|
-
}
|
|
57243
|
-
if (btnColDuplicate) {
|
|
57244
|
-
btnColDuplicate.style.display = '';
|
|
57245
|
-
btnColDuplicate.removeAttribute('disabled');
|
|
57246
|
-
}
|
|
57247
|
-
}
|
|
57248
|
-
|
|
57249
|
-
//data-protected
|
|
57250
|
-
/*
|
|
57251
|
-
if(row.hasAttribute('data-protected')){
|
|
57252
|
-
row.querySelector('.is-row-tool').style.display = 'none';
|
|
57253
|
-
this.columnTool.style.display = 'none'; // if row protected, then all column protected
|
|
57254
|
-
} else {
|
|
57255
|
-
if(row.querySelectorAll('[data-protected]').length>0){
|
|
57256
|
-
row.querySelector('.is-row-tool').style.display = 'none';
|
|
57257
|
-
} else {
|
|
57258
|
-
row.querySelector('.is-row-tool').style.display = '';
|
|
57259
|
-
}
|
|
57260
|
-
this.columnTool.style.display = '';
|
|
57261
|
-
//check columnTool buttons if need to show or hide
|
|
57262
|
-
let _protected = dom.parentsHasAttribute(col, 'data-protected');
|
|
57263
|
-
if(_protected){
|
|
57264
|
-
this.columnTool.querySelector('.cell-add').style.display = 'none';
|
|
57265
|
-
this.columnTool.querySelector('.cell-remove').style.display = 'none';
|
|
57266
|
-
this.columnTool.querySelector('.cell-more').style.display = 'none';
|
|
57267
|
-
} else {
|
|
57268
|
-
this.columnTool.querySelector('.cell-add').style.display = '';
|
|
57269
|
-
this.columnTool.querySelector('.cell-remove').style.display = '';
|
|
57270
|
-
this.columnTool.querySelector('.cell-more').style.display = '';
|
|
57271
|
-
}
|
|
57272
|
-
}
|
|
57273
|
-
*/
|
|
57353
|
+
btnAdd.style.display = '';
|
|
57354
|
+
btnRemove.style.display = '';
|
|
57355
|
+
btnAdd.removeAttribute('disabled');
|
|
57356
|
+
btnRemove.removeAttribute('disabled');
|
|
57274
57357
|
}
|
|
57275
|
-
|
|
57276
57358
|
let row = col.parentNode;
|
|
57277
57359
|
|
|
57278
57360
|
//data-protected
|
|
@@ -57285,42 +57367,22 @@ class ColumnTool {
|
|
|
57285
57367
|
rowaddtool.style.display = 'none';
|
|
57286
57368
|
}
|
|
57287
57369
|
} else {
|
|
57288
|
-
// if(row.querySelectorAll('[data-protected]').length>0){
|
|
57289
|
-
// row.querySelector('.is-row-tool').style.display = 'none';
|
|
57290
|
-
// } else {
|
|
57291
|
-
// row.querySelector('.is-row-tool').style.display = '';
|
|
57292
|
-
// }
|
|
57293
|
-
|
|
57294
57370
|
this.columnTool.style.display = '';
|
|
57295
57371
|
//check columnTool buttons if need to show or hide
|
|
57296
|
-
let _protected =
|
|
57372
|
+
let _protected = col.closest('[data-protected]');
|
|
57297
57373
|
if (_protected) {
|
|
57298
|
-
|
|
57299
|
-
|
|
57300
|
-
|
|
57374
|
+
btnAdd.style.display = 'none';
|
|
57375
|
+
btnRemove.style.display = 'none';
|
|
57376
|
+
btnMore.style.display = 'none';
|
|
57301
57377
|
} else {
|
|
57302
|
-
|
|
57303
|
-
|
|
57304
|
-
|
|
57378
|
+
btnAdd.style.display = '';
|
|
57379
|
+
btnRemove.style.display = '';
|
|
57380
|
+
btnMore.style.display = '';
|
|
57305
57381
|
}
|
|
57306
57382
|
}
|
|
57307
|
-
|
|
57308
|
-
// Column Lock will hide Add & Remove column
|
|
57309
57383
|
if (col.classList.contains('column-lock')) {
|
|
57310
|
-
|
|
57311
|
-
|
|
57312
|
-
this.columnMore.querySelector('.cell-prev').style.display = 'none';
|
|
57313
|
-
this.columnMore.querySelector('.cell-next').style.display = 'none';
|
|
57314
|
-
this.columnMore.querySelector('.cell-up').style.display = 'none';
|
|
57315
|
-
this.columnMore.querySelector('.cell-down').style.display = 'none';
|
|
57316
|
-
this.columnMore.querySelector('.cell-increase').style.display = 'none';
|
|
57317
|
-
this.columnMore.querySelector('.cell-decrease').style.display = 'none';
|
|
57318
|
-
this.columnMore.querySelector('.cell-duplicate').style.display = 'none';
|
|
57319
|
-
this.columnMore.querySelector('.is-separator').style.display = 'none';
|
|
57320
|
-
this.columnMore.querySelector('.cell-locking').style.display = 'none';
|
|
57321
|
-
} else {
|
|
57322
|
-
this.columnMore.querySelector('.is-separator').style.display = '';
|
|
57323
|
-
this.columnMore.querySelector('.cell-locking').style.display = '';
|
|
57384
|
+
btnAdd.style.display = 'none';
|
|
57385
|
+
btnRemove.style.display = 'none';
|
|
57324
57386
|
}
|
|
57325
57387
|
}
|
|
57326
57388
|
}
|
|
@@ -62246,8 +62308,10 @@ class ElementTool {
|
|
|
62246
62308
|
this.builderStuff = builderStuff;
|
|
62247
62309
|
const dom = this.builder.dom;
|
|
62248
62310
|
this.dom = dom;
|
|
62249
|
-
|
|
62250
|
-
|
|
62311
|
+
if (!this.builder.controlPanel) {
|
|
62312
|
+
const elementPanel = new ElementPanel(builder);
|
|
62313
|
+
this.elementPanel = elementPanel;
|
|
62314
|
+
}
|
|
62251
62315
|
let elementTool = builderStuff.querySelector('.is-element-tool');
|
|
62252
62316
|
let elementMore = builderStuff.querySelector('.elmmore');
|
|
62253
62317
|
if (!elementTool) {
|
|
@@ -62333,7 +62397,35 @@ class ElementTool {
|
|
|
62333
62397
|
dom.addClass(quickadd, 'center');
|
|
62334
62398
|
}
|
|
62335
62399
|
quickadd.setAttribute('data-mode', 'elm');
|
|
62336
|
-
|
|
62400
|
+
|
|
62401
|
+
//handleQuickAddClickOut
|
|
62402
|
+
const handleQuickAddClickOut = e => {
|
|
62403
|
+
// console.log('handleQuickAddClickOut');
|
|
62404
|
+
let elm = e.target;
|
|
62405
|
+
if (!elm) return;
|
|
62406
|
+
if (!elm.closest('.quickadd') && !elm.closest('.row-add') && !elm.closest('.is-rowadd-tool') && !elm.closest('.cell-add') && !elm.closest('.elm-add') && !elm.closest('.row-add-initial')) {
|
|
62407
|
+
// click outside
|
|
62408
|
+
|
|
62409
|
+
// hide
|
|
62410
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
|
62411
|
+
util.hidePop(quickadd);
|
|
62412
|
+
// console.log('HIDE');
|
|
62413
|
+
|
|
62414
|
+
// clear events
|
|
62415
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
|
62416
|
+
if (this.builder.iframeDocument) {
|
|
62417
|
+
this.builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
|
62418
|
+
}
|
|
62419
|
+
this.builder.handleQuickAddClickOut_ = false;
|
|
62420
|
+
}
|
|
62421
|
+
};
|
|
62422
|
+
if (!this.builder.handleQuickAddClickOut_) {
|
|
62423
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
|
62424
|
+
if (this.builder.iframeDocument) {
|
|
62425
|
+
this.builder.doc.addEventListener('click', handleQuickAddClickOut);
|
|
62426
|
+
}
|
|
62427
|
+
this.builder.handleQuickAddClickOut_ = true;
|
|
62428
|
+
}
|
|
62337
62429
|
});
|
|
62338
62430
|
const elmRemove = elementTool.querySelector('.elm-remove');
|
|
62339
62431
|
dom.addEventListener(elmRemove, 'click', () => {
|
|
@@ -62558,15 +62650,21 @@ class ElementTool {
|
|
|
62558
62650
|
|
|
62559
62651
|
const elmSettings = elementTool.querySelector('.elm-settings');
|
|
62560
62652
|
if (elmSettings) dom.addEventListener(elmSettings, 'click', () => {
|
|
62561
|
-
// elementMore.style.display = '';
|
|
62562
62653
|
util.hidePop(elementMore);
|
|
62563
|
-
this.
|
|
62654
|
+
if (this.builder.controlPanel) {
|
|
62655
|
+
this.builder.controlpanel.objDialogElement.open();
|
|
62656
|
+
} else {
|
|
62657
|
+
this.elementPanel.showPanel();
|
|
62658
|
+
}
|
|
62564
62659
|
});
|
|
62565
62660
|
const elmSettings2 = elementMore.querySelector('.elm-settings');
|
|
62566
62661
|
if (elmSettings2) dom.addEventListener(elmSettings2, 'click', () => {
|
|
62567
|
-
// elementMore.style.display = '';
|
|
62568
62662
|
util.hidePop(elementMore);
|
|
62569
|
-
this.
|
|
62663
|
+
if (this.builder.controlPanel) {
|
|
62664
|
+
this.builder.controlpanel.objDialogElement.open();
|
|
62665
|
+
} else {
|
|
62666
|
+
this.elementPanel.showPanel();
|
|
62667
|
+
}
|
|
62570
62668
|
});
|
|
62571
62669
|
|
|
62572
62670
|
// document.addEventListener('mousedown', (e) => {
|
|
@@ -62757,7 +62855,9 @@ class ElementTool {
|
|
|
62757
62855
|
// console.log(this.builder.inspectedElement);
|
|
62758
62856
|
// console.log(this.builder.activeElement);
|
|
62759
62857
|
|
|
62760
|
-
this.
|
|
62858
|
+
if (!this.builder.controlPanel) {
|
|
62859
|
+
this.elementPanel.click(e);
|
|
62860
|
+
}
|
|
62761
62861
|
}
|
|
62762
62862
|
refresh() {
|
|
62763
62863
|
if (this.builder.activeElement) {
|
|
@@ -62821,6 +62921,7 @@ class ElementTool {
|
|
|
62821
62921
|
pos() {
|
|
62822
62922
|
let elementTool = this.elementTool;
|
|
62823
62923
|
let elm = this.builder.activeElement;
|
|
62924
|
+
if (!elm) return;
|
|
62824
62925
|
if (elm.closest('.is-dock')) return;
|
|
62825
62926
|
let top, left;
|
|
62826
62927
|
if (!this.builder.iframe) {
|
|
@@ -65147,7 +65248,7 @@ class Rte {
|
|
|
65147
65248
|
let scale = val / 100;
|
|
65148
65249
|
this.builder.onZoomEnd(scale);
|
|
65149
65250
|
}
|
|
65150
|
-
},
|
|
65251
|
+
}, 350);
|
|
65151
65252
|
};
|
|
65152
65253
|
|
|
65153
65254
|
// Zoom Modal
|
|
@@ -66264,7 +66365,7 @@ class Rte {
|
|
|
66264
66365
|
// -----------------------------
|
|
66265
66366
|
|
|
66266
66367
|
// Click anywhere will hide Column tool
|
|
66267
|
-
this.builder.doc.addEventListener('click', this.builder.doRteClick = e => {
|
|
66368
|
+
if (!this.builder.controlPanel) this.builder.doc.addEventListener('click', this.builder.doRteClick = e => {
|
|
66268
66369
|
e = e || window.event;
|
|
66269
66370
|
var target = e.target || e.srcElement;
|
|
66270
66371
|
if (!this.builderStuff) return; // in case the builder is destroyed
|
|
@@ -66344,7 +66445,7 @@ class Rte {
|
|
|
66344
66445
|
if (this.builder.toolbarDisplay !== 'auto') {
|
|
66345
66446
|
this.showDefaultToolbar(); // first time
|
|
66346
66447
|
}
|
|
66347
|
-
}
|
|
66448
|
+
} //contructor
|
|
66348
66449
|
|
|
66349
66450
|
zoomStart() {
|
|
66350
66451
|
if (this.builder.onZoomStart) {
|
|
@@ -67208,6 +67309,7 @@ class Rte {
|
|
|
67208
67309
|
});
|
|
67209
67310
|
}
|
|
67210
67311
|
showDefaultToolbar() {
|
|
67312
|
+
if (this.builder.controlPanel) return;
|
|
67211
67313
|
this.elementRteTool.style.display = 'flex';
|
|
67212
67314
|
this.rteTool.style.display = 'none';
|
|
67213
67315
|
this.hideAlignButtons();
|
|
@@ -70295,7 +70397,8 @@ class Tabs {
|
|
|
70295
70397
|
const content = document.querySelector('#' + id);
|
|
70296
70398
|
content.style.display = 'flex';
|
|
70297
70399
|
dom$1.addClass(content, 'active');
|
|
70298
|
-
document.querySelector('.is-tabs-more')
|
|
70400
|
+
const tabMore = document.querySelector('.is-tabs-more');
|
|
70401
|
+
if (tabMore) tabMore.style.display = 'none';
|
|
70299
70402
|
|
|
70300
70403
|
// Close all dropdown
|
|
70301
70404
|
closeAllDropdowns();
|
|
@@ -70929,7 +71032,7 @@ class Resize {
|
|
|
70929
71032
|
let moduleWidth = item.offsetWidth / row.offsetWidth * 100;
|
|
70930
71033
|
item.style.width = moduleWidth + '%';
|
|
70931
71034
|
item.style.flex = 'none';
|
|
70932
|
-
this.builder.util.refreshModuleLayout(item);
|
|
71035
|
+
if (!item.hasAttribute('data-norefresh')) this.builder.util.refreshModuleLayout(item);
|
|
70933
71036
|
}
|
|
70934
71037
|
});
|
|
70935
71038
|
}
|
|
@@ -70997,7 +71100,8 @@ class ContentStuff {
|
|
|
70997
71100
|
<button title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;background:none;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
|
|
70998
71101
|
</div>
|
|
70999
71102
|
<div class="is-tool is-module-tool">
|
|
71000
|
-
<button title="${util.out('
|
|
71103
|
+
<button class="btn-module-refresh" title="${util.out('Refresh')}" data-title="${util.out('Refresh')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#icon-reload"></use></svg></button>
|
|
71104
|
+
<button class="btn-module-settings" title="${util.out('Settings')}" data-title="${util.out('Settings')}" style="width:40px;height:40px;"><svg class="is-icon-flex"><use xlink:href="#ion-ios-gear"></use></svg></button>
|
|
71001
71105
|
</div>
|
|
71002
71106
|
<div id="divSpacerTool" class="is-tool is-spacer-tool">
|
|
71003
71107
|
<button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#ion-ios-minus-empty"></use></svg></button>
|
|
@@ -71137,6 +71241,11 @@ class ContentStuff {
|
|
|
71137
71241
|
<path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
|
|
71138
71242
|
<path d="M20.2 20.2l1.8 1.8"></path>
|
|
71139
71243
|
</symbol>
|
|
71244
|
+
<symbol id="icon-reload" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
71245
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
71246
|
+
<path d="M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1.002 7.935 1.007 9.425 4.747"></path>
|
|
71247
|
+
<path d="M20 4v5h-5"></path>
|
|
71248
|
+
</symbol>
|
|
71140
71249
|
</defs>
|
|
71141
71250
|
</svg>
|
|
71142
71251
|
|
|
@@ -71870,14 +71979,6 @@ class ContentStuff {
|
|
|
71870
71979
|
right: auto;
|
|
71871
71980
|
left: -40px;
|
|
71872
71981
|
}
|
|
71873
|
-
.is-builder.builder-active > div:not(.row-active) {
|
|
71874
|
-
border-right: 120px rgba(0, 0, 0, 0) solid;
|
|
71875
|
-
margin-right: -120px;
|
|
71876
|
-
}
|
|
71877
|
-
.is-builder[leftrowtool].builder-active > div:not(.row-active) {
|
|
71878
|
-
border-left: 120px rgba(0, 0, 0, 0) solid;
|
|
71879
|
-
margin-left: -120px;
|
|
71880
|
-
}
|
|
71881
71982
|
.is-builder[rowoutline] .row-outline {
|
|
71882
71983
|
outline: none;
|
|
71883
71984
|
}
|
|
@@ -71950,21 +72051,6 @@ class ContentStuff {
|
|
|
71950
72051
|
}
|
|
71951
72052
|
|
|
71952
72053
|
|
|
71953
|
-
|
|
71954
|
-
|
|
71955
|
-
|
|
71956
|
-
.is-builder.builder-active > div:not(.row-active) {
|
|
71957
|
-
border-right: 120px rgba(0,0,0,0) solid;
|
|
71958
|
-
margin-right: -120px;
|
|
71959
|
-
}
|
|
71960
|
-
.is-builder[leftrowtool].builder-active > div:not(.row-active) {
|
|
71961
|
-
border-left: 120px rgba(0,0,0,0) solid;
|
|
71962
|
-
margin-left: -120px;
|
|
71963
|
-
}
|
|
71964
|
-
|
|
71965
|
-
|
|
71966
|
-
|
|
71967
|
-
|
|
71968
72054
|
/* Prevent css framework overide (Materialize) */
|
|
71969
72055
|
.is-ui [type="checkbox"]:not(:checked), .is-ui [type="checkbox"]:checked {
|
|
71970
72056
|
position: unset !important;
|
|
@@ -72014,6 +72100,20 @@ class ContentStuff {
|
|
|
72014
72100
|
}
|
|
72015
72101
|
|
|
72016
72102
|
|
|
72103
|
+
* {
|
|
72104
|
+
scrollbar-width: thin;
|
|
72105
|
+
scrollbar-color: rgba(0, 0, 0, 0.2) auto;
|
|
72106
|
+
}
|
|
72107
|
+
*::-webkit-scrollbar {
|
|
72108
|
+
width: 12px;
|
|
72109
|
+
}
|
|
72110
|
+
*::-webkit-scrollbar-track {
|
|
72111
|
+
background: rgba(200, 200, 200, 0.2);
|
|
72112
|
+
}
|
|
72113
|
+
*::-webkit-scrollbar-thumb {
|
|
72114
|
+
background-color:rgba(0, 0, 0, 0.2);
|
|
72115
|
+
}
|
|
72116
|
+
|
|
72017
72117
|
${this.builder.simpleEditingBreakpoint ? `
|
|
72018
72118
|
|
|
72019
72119
|
@media all and (max-width: ${this.builder.simpleEditingBreakpoint}) {
|
|
@@ -74004,7 +74104,7 @@ class Dictation {
|
|
|
74004
74104
|
</div>
|
|
74005
74105
|
</div>
|
|
74006
74106
|
<textarea class="inp-command"></textarea>
|
|
74007
|
-
<div style="display:flex;
|
|
74107
|
+
<div style="display:flex;">
|
|
74008
74108
|
<button title="${util.out('Settings')}" class="cmd-command-config classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
|
|
74009
74109
|
<svg class="is-icon-flex" style="width:15px;height:15px;flex:none;"><use xlink:href="#icon-settings"></use></svg>
|
|
74010
74110
|
</button>
|
|
@@ -74014,7 +74114,7 @@ class Dictation {
|
|
|
74014
74114
|
<button title="${util.out('Command Examples')}" class="cmd-command-list classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
|
|
74015
74115
|
<svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-message-search"></use></svg>
|
|
74016
74116
|
</button>
|
|
74017
|
-
<button title="${util.out('Clear')}" class="cmd-clear-command classic-secondary" style="
|
|
74117
|
+
<button title="${util.out('Clear')}" class="cmd-clear-command classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
|
|
74018
74118
|
<svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-eraser"></use></svg>
|
|
74019
74119
|
</button>
|
|
74020
74120
|
|
|
@@ -75008,34 +75108,7 @@ class Similarity {
|
|
|
75008
75108
|
}
|
|
75009
75109
|
}
|
|
75010
75110
|
|
|
75011
|
-
//
|
|
75012
|
-
// import {out} from './out.js';
|
|
75013
|
-
class ControlPanel {
|
|
75014
|
-
constructor(builder) {
|
|
75015
|
-
this.builder = builder;
|
|
75016
|
-
this.builderStuff = this.builder.builderStuff;
|
|
75017
|
-
/*
|
|
75018
|
-
let controlPanel = builderStuff.querySelector('.is-controlpanel');
|
|
75019
|
-
if(!controlPanel) {
|
|
75020
|
-
let html = `
|
|
75021
|
-
<style>
|
|
75022
|
-
|
|
75023
|
-
</style>
|
|
75024
|
-
<div class="is-controlpanel">
|
|
75025
|
-
</div>
|
|
75026
|
-
`;
|
|
75027
|
-
// const doc = this.builder.doc;
|
|
75028
|
-
// document.body.classList.add('controlpanel');
|
|
75029
|
-
builderStuff.insertAdjacentHTML('beforeend', html);
|
|
75030
|
-
controlPanel = builderStuff.querySelector('.is-controlpanel');
|
|
75031
|
-
} else {
|
|
75032
|
-
// Means ContentBox
|
|
75033
|
-
}
|
|
75034
|
-
this.controlPanel = controlPanel;
|
|
75035
|
-
// Add ContentBuilder controls
|
|
75036
|
-
*/
|
|
75037
|
-
}
|
|
75038
|
-
}
|
|
75111
|
+
// import ControlPanel from './controlpanel.js';
|
|
75039
75112
|
|
|
75040
75113
|
class ContentBuilder {
|
|
75041
75114
|
constructor(opts = {}) {
|
|
@@ -76096,11 +76169,31 @@ class ContentBuilder {
|
|
|
76096
76169
|
this.dom.appendChild(document.body, builderStuff);
|
|
76097
76170
|
}
|
|
76098
76171
|
this.builderStuff = builderStuff;
|
|
76099
|
-
this.controlpanel = new ControlPanel(this);
|
|
76100
76172
|
prepareSvgIcons(this); // Prepare icons (embed svg definitions for icons)
|
|
76101
76173
|
|
|
76102
|
-
this.preferences = new Preferences(this); // this will also call setUIColor() and getUIStyles() for theme
|
|
76103
|
-
|
|
76174
|
+
if (!this.controlPanel) this.preferences = new Preferences(this); // this will also call setUIColor() and getUIStyles() for theme
|
|
76175
|
+
else {
|
|
76176
|
+
if (localStorage.getItem('_theme') != null) {
|
|
76177
|
+
const n = localStorage.getItem('_theme');
|
|
76178
|
+
this.themeIndex = n;
|
|
76179
|
+
if (this.themes) {
|
|
76180
|
+
if (this.themes.length > 0) {
|
|
76181
|
+
const item = this.themes[n];
|
|
76182
|
+
if (item) {
|
|
76183
|
+
this.setUIColor(item[1], item[2]);
|
|
76184
|
+
this.renderIframeLater = true;
|
|
76185
|
+
}
|
|
76186
|
+
}
|
|
76187
|
+
}
|
|
76188
|
+
} else {
|
|
76189
|
+
this.setUIColor('', '');
|
|
76190
|
+
this.renderIframeLater = true;
|
|
76191
|
+
}
|
|
76192
|
+
if (!this.renderIframeLater) {
|
|
76193
|
+
// means setUIColor() not called, so we need to call getUIStyles() manually
|
|
76194
|
+
util.getUIStyles();
|
|
76195
|
+
}
|
|
76196
|
+
}
|
|
76104
76197
|
renderGridEditor(this); // Render Grid Editor
|
|
76105
76198
|
|
|
76106
76199
|
// Check if preview
|
|
@@ -76221,55 +76314,36 @@ class ContentBuilder {
|
|
|
76221
76314
|
});
|
|
76222
76315
|
}
|
|
76223
76316
|
|
|
76317
|
+
// if(!this.isContentBox && this.controlPanel) {
|
|
76318
|
+
// this.controlpanel = new ControlPanel(this);
|
|
76319
|
+
// }
|
|
76320
|
+
|
|
76224
76321
|
// Add document Click event
|
|
76225
76322
|
document.addEventListener('click', this.doDocumentClick = e => {
|
|
76226
|
-
|
|
76227
|
-
let target = e.target || e.srcElement;
|
|
76323
|
+
let target = e.target;
|
|
76228
76324
|
if (!target) return;
|
|
76229
76325
|
let rowClicked;
|
|
76230
|
-
if (target.parentNode) rowClicked =
|
|
76231
|
-
let containerClicked =
|
|
76232
|
-
let a =
|
|
76233
|
-
|
|
76234
|
-
|
|
76235
|
-
|
|
76236
|
-
|
|
76237
|
-
|
|
76238
|
-
|
|
76239
|
-
|
|
76240
|
-
|
|
76241
|
-
|
|
76242
|
-
let
|
|
76243
|
-
n = false,
|
|
76244
|
-
o = false,
|
|
76245
|
-
p = false;
|
|
76326
|
+
if (target.parentNode && target.parentNode.classList) rowClicked = target.parentNode.classList.contains('is-builder');
|
|
76327
|
+
let containerClicked = target.classList.contains('is-builder');
|
|
76328
|
+
let a = target.closest('.is-builder');
|
|
76329
|
+
let p = target.closest('.is-subblock');
|
|
76330
|
+
let b = target.closest('.is-modal') || target.closest('.keep-selection');
|
|
76331
|
+
let c = target.closest('.is-side') || target.closest('.is-sidebar');
|
|
76332
|
+
let d = target.closest('.is-pop');
|
|
76333
|
+
let f = target.closest('.is-tool');
|
|
76334
|
+
let g = target.closest('.is-rte-tool') || target.closest('.is-elementrte-tool');
|
|
76335
|
+
let h = target.closest('.is-rte-pop');
|
|
76336
|
+
let i = target.closest('.row-add-initial');
|
|
76337
|
+
let j = target.closest('.sl-wrapper') || target.closest('.sl-overlay') || target.closest('.sl-close');
|
|
76338
|
+
let k = target.closest('.is-selectbox') || target.closest('.is-selectbox-options');
|
|
76246
76339
|
let isSpecialElement = false;
|
|
76247
|
-
|
|
76248
|
-
|
|
76249
|
-
|
|
76250
|
-
if (element.tagName === 'BODY' || element.tagName === 'HTML') break;
|
|
76251
|
-
if (this.dom.hasClass(element, 'is-builder')) a = true;
|
|
76252
|
-
if (this.dom.hasClass(element, 'is-subblock')) p = true;
|
|
76253
|
-
if (this.dom.hasClass(element, 'is-modal') || this.dom.hasClass(element, 'keep-selection')) b = true;
|
|
76254
|
-
if (this.dom.hasClass(element, 'is-side') || this.dom.hasClass(element, 'is-sidebar')) c = true;
|
|
76255
|
-
if (this.dom.hasClass(element, 'is-pop')) d = true;
|
|
76256
|
-
if (this.dom.hasClass(element, 'is-tool')) f = true;
|
|
76257
|
-
if (this.dom.hasClass(element, 'is-rte-tool') || this.dom.hasClass(element, 'is-elementrte-tool')) g = true;
|
|
76258
|
-
if (this.dom.hasClass(element, 'is-rte-pop')) h = true;
|
|
76259
|
-
if (this.dom.hasClass(element, 'row-add-initial')) i = true;
|
|
76260
|
-
if (this.dom.hasClass(element, 'sl-wrapper') || this.dom.hasClass(element, 'sl-overlay') || this.dom.hasClass(element, 'sl-close')) j = true;
|
|
76261
|
-
if (this.dom.hasClass(element, 'is-selectbox') || this.dom.hasClass(element, 'is-selectbox-options')) k = true; // dropdown
|
|
76262
|
-
|
|
76263
|
-
if (this.opts.specialElementClasses) {
|
|
76264
|
-
for (let i = 0; i < this.opts.specialElementClasses.length; i++) {
|
|
76265
|
-
if (this.dom.hasClass(element, this.opts.specialElementClasses[i])) isSpecialElement = true;
|
|
76266
|
-
}
|
|
76340
|
+
if (this.opts.specialElementClasses) {
|
|
76341
|
+
for (let i = 0; i < this.opts.specialElementClasses.length; i++) {
|
|
76342
|
+
isSpecialElement = target.closest('.' + this.opts.specialElementClasses[i]);
|
|
76267
76343
|
}
|
|
76268
|
-
if (element.id === 'divImageTool') m = true;
|
|
76269
|
-
if (element.id === 'divImageResizer') n = true;
|
|
76270
|
-
if (this.preserveSelection) o = true;
|
|
76271
|
-
element = element.parentNode;
|
|
76272
76344
|
}
|
|
76345
|
+
let o;
|
|
76346
|
+
if (this.preserveSelection) o = true;
|
|
76273
76347
|
|
|
76274
76348
|
// dropdown
|
|
76275
76349
|
if (!k) {
|
|
@@ -76278,45 +76352,40 @@ class ContentBuilder {
|
|
|
76278
76352
|
dropdown.style.display = 'none';
|
|
76279
76353
|
});
|
|
76280
76354
|
}
|
|
76281
|
-
|
|
76282
|
-
//
|
|
76283
|
-
// let b = this.dom.parentsHasClass(target, 'is-modal'); // modal
|
|
76284
|
-
// let c = this.dom.parentsHasClass(target, 'is-side'); // side panel
|
|
76285
|
-
// let d = this.dom.parentsHasClass(target, 'is-pop'); // pop
|
|
76286
|
-
// let f = this.dom.parentsHasClass(target, 'is-tool'); // tool
|
|
76287
|
-
// let g = this.dom.parentsHasClass(target, 'is-rte-tool');
|
|
76288
|
-
// let h = this.dom.parentsHasClass(target, 'is-rte-pop');
|
|
76289
|
-
// let i = this.dom.parentsHasClass(target, 'row-add-initial');
|
|
76290
|
-
// let j = this.dom.hasClass(target, 'sl-overlay') ||
|
|
76291
|
-
// this.dom.parentsHasClass(target, 'sl-overlay') ||
|
|
76292
|
-
// this.dom.hasClass(target, 'sl-close') ||
|
|
76293
|
-
// this.dom.parentsHasClass(target, 'sl-close');
|
|
76355
|
+
const clrPicker = document.querySelector('.clr-picker.clr-open');
|
|
76356
|
+
// if(clrPicker) return;
|
|
76294
76357
|
|
|
76295
76358
|
// Image Resizer
|
|
76359
|
+
let n = target.closest('#divImageResizer');
|
|
76360
|
+
if (n) return;
|
|
76361
|
+
|
|
76362
|
+
/*
|
|
76363
|
+
let m = target.closest('#divImageTool');
|
|
76364
|
+
|
|
76296
76365
|
let resizeProcess = false;
|
|
76297
76366
|
let imageResizer = document.querySelector('#divImageResizer');
|
|
76298
|
-
if
|
|
76299
|
-
if
|
|
76300
|
-
|
|
76301
|
-
|
|
76302
|
-
|
|
76303
|
-
|
|
76304
|
-
|
|
76305
|
-
|
|
76306
|
-
|
|
76307
|
-
|
|
76308
|
-
|
|
76309
|
-
|
|
76310
|
-
|
|
76311
|
-
|
|
76312
|
-
|
|
76313
|
-
|
|
76314
|
-
|
|
76315
|
-
|
|
76316
|
-
document.querySelector('.moveable-control-box').style.display = 'none';
|
|
76317
|
-
}
|
|
76367
|
+
if(imageResizer) if(imageResizer.getAttribute('data-resized')==='1') resizeProcess = true;
|
|
76368
|
+
if(resizeProcess) return; // to prevent unwanted click/clearActiveCell during image resize end.
|
|
76369
|
+
if(!(b||j||m||n||target.tagName.toLowerCase() === 'img')) {
|
|
76370
|
+
let imageTool = document.querySelector('#divImageTool');
|
|
76371
|
+
imageTool.style.display = '';
|
|
76372
|
+
// this.activeImage = null; // Commented => Additional (to prevent lost focus)
|
|
76373
|
+
let imageResizer = document.querySelector('#divImageResizer');
|
|
76374
|
+
imageResizer.style.display = 'none';
|
|
76375
|
+
|
|
76376
|
+
// moveable
|
|
76377
|
+
imageResizer.style.top = '-10px';
|
|
76378
|
+
imageResizer.style.left = '-10px';
|
|
76379
|
+
imageResizer.style.width = '1px';
|
|
76380
|
+
imageResizer.style.height = '1px';
|
|
76381
|
+
if(this.moveable) {
|
|
76382
|
+
this.moveable.updateRect();
|
|
76383
|
+
document.querySelector('.moveable-control-box').style.display = 'none';
|
|
76384
|
+
}
|
|
76318
76385
|
}
|
|
76319
|
-
|
|
76386
|
+
*/
|
|
76387
|
+
|
|
76388
|
+
if (!(a || p || b || c || d || f || g || h || i || j || o || isSpecialElement || clrPicker) || rowClicked && !i || containerClicked) {
|
|
76320
76389
|
// Click anywhere but is not inside builder area, modal, popup, tool or rte, then clear row/column (cell) selection
|
|
76321
76390
|
|
|
76322
76391
|
if (!this.dom.getSelected()) {
|
|
@@ -76327,28 +76396,40 @@ class ContentBuilder {
|
|
|
76327
76396
|
|
|
76328
76397
|
util.clearActiveCell();
|
|
76329
76398
|
util.clearControls();
|
|
76330
|
-
if (this.toolbarDisplay !== 'auto') {
|
|
76399
|
+
if (!this.controlPanel) if (this.toolbarDisplay !== 'auto') {
|
|
76331
76400
|
this.rte.showDefaultToolbar();
|
|
76332
76401
|
}
|
|
76333
76402
|
if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
|
|
76403
|
+
|
|
76404
|
+
// if(this.settings.onPageContentClick) this.settings.onPageContentClick(e);
|
|
76334
76405
|
}
|
|
76335
76406
|
}
|
|
76407
|
+
|
|
76408
|
+
/*
|
|
76336
76409
|
this.element.hyperlink.buttonEditor.hide();
|
|
76410
|
+
*/
|
|
76337
76411
|
}
|
|
76338
76412
|
|
|
76413
|
+
/*
|
|
76339
76414
|
// Button Modal
|
|
76340
|
-
if
|
|
76341
|
-
|
|
76415
|
+
if(!this.activeLinkButton && !this.activeButton &&
|
|
76416
|
+
!target.closest('.buttoneditor') && !target.closest('.link-button-edit') &&
|
|
76417
|
+
!target.closest('.is-modal')) {
|
|
76418
|
+
this.element.hyperlink.buttonEditor.hide();
|
|
76342
76419
|
}
|
|
76420
|
+
*/
|
|
76343
76421
|
|
|
76422
|
+
/*
|
|
76344
76423
|
// Backward compatibility (for examples)
|
|
76345
|
-
if
|
|
76346
|
-
|
|
76347
|
-
|
|
76348
|
-
|
|
76349
|
-
|
|
76424
|
+
if(!d && !this.dom.parentsHasId(target, '_cbhtml')) {
|
|
76425
|
+
const pops = document.querySelectorAll('.is-pop');
|
|
76426
|
+
Array.prototype.forEach.call(pops, (pop) => {
|
|
76427
|
+
if(!this.dom.parentsHasId(pop, '_cbhtml')) pop.style.display = '';
|
|
76428
|
+
});
|
|
76350
76429
|
}
|
|
76430
|
+
*/
|
|
76351
76431
|
});
|
|
76432
|
+
|
|
76352
76433
|
if (this.iframe) {
|
|
76353
76434
|
this.doc.addEventListener('click', this.doDocumentClick);
|
|
76354
76435
|
}
|
|
@@ -76651,11 +76732,14 @@ class ContentBuilder {
|
|
|
76651
76732
|
// let outlineStyle = localStorage.getItem('_outlinestyle');
|
|
76652
76733
|
// this.preferences.setOutlineStyle(outlineStyle);
|
|
76653
76734
|
// }
|
|
76654
|
-
this.preferences.initBuilder(builder);
|
|
76735
|
+
if (this.preferences) this.preferences.initBuilder(builder);
|
|
76655
76736
|
|
|
76656
76737
|
// Apply behavior on each row
|
|
76657
76738
|
const rows = this.dom.elementChildren(builder);
|
|
76658
76739
|
rows.forEach(row => {
|
|
76740
|
+
// The saveForUndo also saves sortable class when start dragging. If Undo is performed, the classes are returned. Cleanup the classes here.
|
|
76741
|
+
row.classList.remove('sortable-ghost');
|
|
76742
|
+
row.classList.remove('sortable-chosen');
|
|
76659
76743
|
if (this.dom.hasClass(row, 'row-add-initial')) return;
|
|
76660
76744
|
|
|
76661
76745
|
// Hack. If a row has margin left/right specified, don't need to set hidden border (that is used to make smooth sortable)
|
|
@@ -76743,7 +76827,11 @@ class ContentBuilder {
|
|
|
76743
76827
|
// col.addEventListener('focus', this.handleCellFocus.bind(this, col));
|
|
76744
76828
|
|
|
76745
76829
|
// ON PASTE
|
|
76746
|
-
col.addEventListener('paste', this.handleCellPaste.bind(this));
|
|
76830
|
+
// col.addEventListener('paste', this.handleCellPaste.bind(this));
|
|
76831
|
+
col.addEventListener('paste', e => {
|
|
76832
|
+
const clipboardData = (e.clipboardData || window.clipboardData).getData('text');
|
|
76833
|
+
this.handleCellPaste(clipboardData);
|
|
76834
|
+
});
|
|
76747
76835
|
col.setAttribute('data-click', true);
|
|
76748
76836
|
}
|
|
76749
76837
|
});
|
|
@@ -76816,8 +76904,23 @@ class ContentBuilder {
|
|
|
76816
76904
|
this.util.checkEmpty(); // for multiple instances check
|
|
76817
76905
|
|
|
76818
76906
|
if (this.sortableOnPage) this.sortableOnPage.destroy(); // enable drop as section (ContentBox)
|
|
76819
|
-
},
|
|
76820
76907
|
|
|
76908
|
+
if (this.controlPanel) {
|
|
76909
|
+
// && document.body.classList.contains('controlpanel') (already opens)
|
|
76910
|
+
this.controlpanel.getActive();
|
|
76911
|
+
this.controlpanel.select('column');
|
|
76912
|
+
setTimeout(() => {
|
|
76913
|
+
// Hide element tool
|
|
76914
|
+
this.elmTool.hide();
|
|
76915
|
+
}, 600);
|
|
76916
|
+
}
|
|
76917
|
+
|
|
76918
|
+
//Trigger Change event
|
|
76919
|
+
this.opts.onChange();
|
|
76920
|
+
|
|
76921
|
+
//Trigger Render event
|
|
76922
|
+
this.opts.onRender();
|
|
76923
|
+
},
|
|
76821
76924
|
onAdd: evt => {
|
|
76822
76925
|
var itemEl = evt.item;
|
|
76823
76926
|
if (itemEl.getAttribute('data-id')) {
|
|
@@ -77291,6 +77394,8 @@ class ContentBuilder {
|
|
|
77291
77394
|
ok = true;
|
|
77292
77395
|
} else if (targetAssetType === 'media' && (ext === 'mp4' || ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif' || ext === 'webm' || ext === 'webp')) {
|
|
77293
77396
|
ok = true;
|
|
77397
|
+
} else if (targetAssetType === 'all') {
|
|
77398
|
+
ok = true;
|
|
77294
77399
|
} else {
|
|
77295
77400
|
if (targetAssetType === 'image') alert(out('Please select an image file.'));
|
|
77296
77401
|
if (targetAssetType === 'video') alert(out('Please select an mp4 file.'));
|
|
@@ -77771,6 +77876,18 @@ class ContentBuilder {
|
|
|
77771
77876
|
}
|
|
77772
77877
|
addButton(pluginName, html, selector, exec) {
|
|
77773
77878
|
if (!this.builderStuff) return;
|
|
77879
|
+
if (this.controlPanel && this.controlpanel.controlPanel) {
|
|
77880
|
+
const popMore = this.controlpanel.controlPanel.querySelector('.panel-pop.more');
|
|
77881
|
+
const pluginArea = popMore.querySelector('div.plugins');
|
|
77882
|
+
pluginArea.insertAdjacentHTML('beforeend', html);
|
|
77883
|
+
const btn = popMore.querySelector(selector);
|
|
77884
|
+
btn.addEventListener('click', e => {
|
|
77885
|
+
exec(e);
|
|
77886
|
+
});
|
|
77887
|
+
const label = popMore.querySelector('.label-plugins');
|
|
77888
|
+
label.style.display = ''; //show label
|
|
77889
|
+
}
|
|
77890
|
+
|
|
77774
77891
|
const rteTool = this.builderStuff.querySelector('.is-rte-tool');
|
|
77775
77892
|
const rteMoreOptions = this.builderStuff.querySelector('.rte-more-options');
|
|
77776
77893
|
var bUseMore = false;
|
|
@@ -77998,16 +78115,16 @@ class ContentBuilder {
|
|
|
77998
78115
|
htmlutil.view('full', area);
|
|
77999
78116
|
}
|
|
78000
78117
|
viewPreferences() {
|
|
78001
|
-
this.preferences.view();
|
|
78118
|
+
if (this.preferences) this.preferences.view();
|
|
78002
78119
|
}
|
|
78003
78120
|
viewConfig() {
|
|
78004
78121
|
//backward
|
|
78005
|
-
this.preferences.view();
|
|
78122
|
+
if (this.preferences) this.preferences.view();
|
|
78006
78123
|
}
|
|
78007
78124
|
viewZoom() {
|
|
78008
78125
|
this.rte.viewZoom();
|
|
78009
78126
|
}
|
|
78010
|
-
loadSnippets(snippetFile) {
|
|
78127
|
+
loadSnippets(snippetFile, snippetOpen) {
|
|
78011
78128
|
if (this.preview) return;
|
|
78012
78129
|
if (this.opts.snippetList === '#divSnippetList') {
|
|
78013
78130
|
let snippetPanel = document.querySelector(this.opts.snippetList);
|
|
@@ -78025,7 +78142,7 @@ class ContentBuilder {
|
|
|
78025
78142
|
this.opts.snippetPath = window._snippets_path;
|
|
78026
78143
|
}
|
|
78027
78144
|
if (this.opts.snippetJSON.snippets.length > 0) {
|
|
78028
|
-
renderSnippetPanel(this); // Render Snippet Panel
|
|
78145
|
+
renderSnippetPanel(this, snippetOpen); // Render Snippet Panel
|
|
78029
78146
|
}
|
|
78030
78147
|
};
|
|
78031
78148
|
|
|
@@ -78203,9 +78320,6 @@ class ContentBuilder {
|
|
|
78203
78320
|
// Font Family
|
|
78204
78321
|
let iframeRte = this.rte.rteFontFamilyOptions.querySelector('iframe');
|
|
78205
78322
|
let doc1 = iframeRte.contentWindow.document;
|
|
78206
|
-
const fontModal = this.builderStuff.querySelector('.is-modal.pickfontfamily');
|
|
78207
|
-
let iframePanel = fontModal.querySelector('iframe');
|
|
78208
|
-
let doc2 = iframePanel.contentWindow.document;
|
|
78209
78323
|
|
|
78210
78324
|
// Icons
|
|
78211
78325
|
let iframeIcons = this.rte.rteIconOptions.querySelector('iframe');
|
|
@@ -78221,16 +78335,21 @@ class ContentBuilder {
|
|
|
78221
78335
|
} else {
|
|
78222
78336
|
this.util.refreshFontFamilyStyle1();
|
|
78223
78337
|
}
|
|
78224
|
-
|
|
78225
|
-
|
|
78226
|
-
|
|
78227
|
-
|
|
78338
|
+
const fontModal = this.builderStuff.querySelector('.is-modal.pickfontfamily');
|
|
78339
|
+
if (fontModal) {
|
|
78340
|
+
let iframePanel = fontModal.querySelector('iframe');
|
|
78341
|
+
let doc2 = iframePanel.contentWindow.document;
|
|
78342
|
+
if (doc2.body.innerHTML === '') {
|
|
78343
|
+
doc2.open();
|
|
78344
|
+
if (!this.opts.emailMode) {
|
|
78345
|
+
doc2.write(util.getFontFamilyHTML(true));
|
|
78346
|
+
} else {
|
|
78347
|
+
doc2.write(util.getFontFamilyEmail(true));
|
|
78348
|
+
}
|
|
78349
|
+
doc2.close();
|
|
78228
78350
|
} else {
|
|
78229
|
-
|
|
78351
|
+
this.util.refreshFontFamilyStyle2();
|
|
78230
78352
|
}
|
|
78231
|
-
doc2.close();
|
|
78232
|
-
} else {
|
|
78233
|
-
this.util.refreshFontFamilyStyle2();
|
|
78234
78353
|
}
|
|
78235
78354
|
if (doc3.body.innerHTML === '') {
|
|
78236
78355
|
doc3.open();
|
|
@@ -78502,43 +78621,76 @@ class ContentBuilder {
|
|
|
78502
78621
|
util.clearActiveCell();
|
|
78503
78622
|
this.activeCol = col;
|
|
78504
78623
|
let elm = e.target;
|
|
78505
|
-
|
|
78506
|
-
let row = col.parentNode;
|
|
78507
|
-
|
|
78624
|
+
col.classList.add('cell-active');
|
|
78625
|
+
let row = col.parentNode;
|
|
78626
|
+
row.classList.add('row-active');
|
|
78508
78627
|
const builders = this.doc.querySelectorAll(this.opts.container);
|
|
78509
|
-
|
|
78510
|
-
|
|
78628
|
+
builders.forEach(builder => {
|
|
78629
|
+
builder.classList.remove('builder-active');
|
|
78511
78630
|
});
|
|
78512
|
-
|
|
78513
|
-
this.
|
|
78631
|
+
row.parentNode.classList.add('builder-active');
|
|
78632
|
+
this.doc.body.classList.add('content-edit');
|
|
78514
78633
|
if (row.childElementCount - 2 === 1) ; else {
|
|
78515
|
-
|
|
78634
|
+
row.classList.add('row-outline');
|
|
78516
78635
|
}
|
|
78517
78636
|
|
|
78518
|
-
//this.getState();
|
|
78519
|
-
|
|
78520
78637
|
// Call onContentClick to indicate click on editable content (eg. for plugin usage)
|
|
78521
|
-
// if (!col.hasAttribute('data-html')) {
|
|
78522
78638
|
if (this.opts.onContentClick) this.opts.onContentClick(e);
|
|
78523
|
-
// }
|
|
78524
|
-
|
|
78525
78639
|
this.element.click(col, e);
|
|
78526
78640
|
this.colTool.click(col);
|
|
78527
78641
|
this.elmTool.click(col, e);
|
|
78528
|
-
this.rte.click(col, e);
|
|
78642
|
+
if (!this.controlPanel) this.rte.click(col, e);else this.util.saveSelection(); // important (eg. for create/edit link)
|
|
78643
|
+
|
|
78644
|
+
/*
|
|
78645
|
+
// TODO: move to grideditor.js
|
|
78529
78646
|
// Grid Editor Status
|
|
78530
78647
|
// On/off lock button
|
|
78531
78648
|
const grideditor = document.querySelector('.grideditor.active');
|
|
78532
|
-
if
|
|
78533
|
-
|
|
78534
|
-
|
|
78535
|
-
|
|
78536
|
-
|
|
78537
|
-
|
|
78649
|
+
if(grideditor) {
|
|
78650
|
+
const btnCellLocking = grideditor.querySelector('.cell-locking');
|
|
78651
|
+
if(col.hasAttribute('data-noedit')) {
|
|
78652
|
+
btnCellLocking.classList.add('on');
|
|
78653
|
+
} else {
|
|
78654
|
+
btnCellLocking.classList.remove('on');
|
|
78655
|
+
}
|
|
78656
|
+
}
|
|
78657
|
+
*/
|
|
78658
|
+
|
|
78659
|
+
// If column only has spacer, locked or unlocked,
|
|
78660
|
+
// the text should not be able to edit (cursor should not be able to be placed)
|
|
78661
|
+
// So, make the column uneditable (text) if only has a spacer.
|
|
78662
|
+
if (col.childElementCount === 1) {
|
|
78663
|
+
let elm = col.children[0];
|
|
78664
|
+
if (elm) if (this.dom.hasClass(elm, 'spacer')) {
|
|
78665
|
+
col.contentEditable = false;
|
|
78538
78666
|
}
|
|
78539
78667
|
}
|
|
78540
|
-
|
|
78541
|
-
|
|
78668
|
+
|
|
78669
|
+
// Show Lock Indicator
|
|
78670
|
+
this.colTool.showHideLockIndicator(col);
|
|
78671
|
+
if (this.opts.enableDragResize) {
|
|
78672
|
+
if (this.resize) {
|
|
78673
|
+
// console.log(this.resize);
|
|
78674
|
+
this.resize.destroy(); // destroy previous instance
|
|
78675
|
+
}
|
|
78676
|
+
|
|
78677
|
+
// Enable resizable on click
|
|
78678
|
+
if (!col.classList.contains('noresize')) {
|
|
78679
|
+
// Disable on mobile
|
|
78680
|
+
const viewportWidth = this.doc.body.clientWidth;
|
|
78681
|
+
if (viewportWidth > 768) {
|
|
78682
|
+
this.resize = new Resize(col, this);
|
|
78683
|
+
this.resize.enable();
|
|
78684
|
+
}
|
|
78685
|
+
}
|
|
78686
|
+
}
|
|
78687
|
+
if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
|
|
78688
|
+
|
|
78689
|
+
// if(this.settings.onPageContentClick) this.settings.onPageContentClick(e);
|
|
78690
|
+
|
|
78691
|
+
// Lightbox
|
|
78692
|
+
let link = elm.closest('a');
|
|
78693
|
+
if (link) {
|
|
78542
78694
|
if (col.hasAttribute('data-noedit') || col.hasAttribute('data-protected')) {
|
|
78543
78695
|
// Link & Lightbox click allowed only on locked column
|
|
78544
78696
|
|
|
@@ -78606,25 +78758,6 @@ class ContentBuilder {
|
|
|
78606
78758
|
// return false;
|
|
78607
78759
|
}
|
|
78608
78760
|
|
|
78609
|
-
// LATER: (builder inside builder)
|
|
78610
|
-
// if (jQuery(e.target).parents('.is-builder').length>1) {
|
|
78611
|
-
// e.preventDefault();
|
|
78612
|
-
// e.stopImmediatePropagation();
|
|
78613
|
-
// }
|
|
78614
|
-
|
|
78615
|
-
// If column only has spacer, locked or unlocked,
|
|
78616
|
-
// the text should not be able to edit (cursor should not be able to be placed)
|
|
78617
|
-
// So, make the column uneditable (text) if only has a spacer.
|
|
78618
|
-
if (col.childElementCount === 1) {
|
|
78619
|
-
let elm = col.children[0];
|
|
78620
|
-
if (elm) if (this.dom.hasClass(elm, 'spacer')) {
|
|
78621
|
-
col.contentEditable = false;
|
|
78622
|
-
}
|
|
78623
|
-
}
|
|
78624
|
-
|
|
78625
|
-
// Show Lock Indicator
|
|
78626
|
-
this.colTool.showHideLockIndicator(col);
|
|
78627
|
-
|
|
78628
78761
|
// Extra: Check if last row, make sure the Row Add Tool visible
|
|
78629
78762
|
const tool = row.querySelector('.is-rowadd-tool');
|
|
78630
78763
|
const tollAddButton = tool.querySelector('button');
|
|
@@ -78647,23 +78780,6 @@ class ContentBuilder {
|
|
|
78647
78780
|
}
|
|
78648
78781
|
}
|
|
78649
78782
|
}
|
|
78650
|
-
if (this.opts.enableDragResize) {
|
|
78651
|
-
if (this.resize) {
|
|
78652
|
-
// console.log(this.resize);
|
|
78653
|
-
this.resize.destroy(); // destroy previous instance
|
|
78654
|
-
}
|
|
78655
|
-
|
|
78656
|
-
// Enable resizable on click
|
|
78657
|
-
if (!col.classList.contains('noresize')) {
|
|
78658
|
-
// Disable on mobile
|
|
78659
|
-
const viewportWidth = this.doc.body.clientWidth;
|
|
78660
|
-
if (viewportWidth > 768) {
|
|
78661
|
-
this.resize = new Resize(col, this);
|
|
78662
|
-
this.resize.enable();
|
|
78663
|
-
}
|
|
78664
|
-
}
|
|
78665
|
-
}
|
|
78666
|
-
if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
|
|
78667
78783
|
}
|
|
78668
78784
|
handleCellKeypress(e) {
|
|
78669
78785
|
if (e.ctrlKey || e.metaKey) {
|
|
@@ -78712,10 +78828,7 @@ class ContentBuilder {
|
|
|
78712
78828
|
// });
|
|
78713
78829
|
// this.autoclean=true;
|
|
78714
78830
|
|
|
78715
|
-
if ((e.ctrlKey || e.metaKey) && e.which === 86)
|
|
78716
|
-
//CTRL-V
|
|
78717
|
-
this.handleCellPaste();
|
|
78718
|
-
}
|
|
78831
|
+
if ((e.ctrlKey || e.metaKey) && e.which === 86) ;
|
|
78719
78832
|
if (this.opts.elementSelection && !this.emailMode) {
|
|
78720
78833
|
if ((e.ctrlKey || e.metaKey) && e.which === 65) {
|
|
78721
78834
|
//CTRL-A
|
|
@@ -79171,7 +79284,7 @@ class ContentBuilder {
|
|
|
79171
79284
|
this.opts.onChange();
|
|
79172
79285
|
}, 2000);
|
|
79173
79286
|
}
|
|
79174
|
-
handleCellPaste() {
|
|
79287
|
+
handleCellPaste(clipboardData) {
|
|
79175
79288
|
this.uo.saveForUndo();
|
|
79176
79289
|
const util = this.util;
|
|
79177
79290
|
util.saveSelection(); //required. Without this, CTRL-A (select element) & CTRL-V won't replace the element, but will paste at the end of the element.
|
|
@@ -79230,22 +79343,26 @@ class ContentBuilder {
|
|
|
79230
79343
|
}
|
|
79231
79344
|
if (!bPasteObject) {
|
|
79232
79345
|
if (this.opts.paste === 'text') {
|
|
79346
|
+
/*
|
|
79233
79347
|
let elms = contentword.querySelectorAll('p,h1,h2,h3,h4,h5,h6');
|
|
79234
|
-
Array.prototype.forEach.call(elms, elm => {
|
|
79235
|
-
|
|
79348
|
+
Array.prototype.forEach.call(elms, (elm) => {
|
|
79349
|
+
elm.innerHTML = elm.innerHTML + ' '; //add space ( )
|
|
79236
79350
|
});
|
|
79237
|
-
|
|
79238
|
-
// sPastedText = contentword.innerText;
|
|
79351
|
+
// sPastedText = contentword.innerText;
|
|
79239
79352
|
sPastedText = contentword.innerHTML;
|
|
79240
|
-
sPastedText = sPastedText.replace(/(<([^>]+)>)/ig,
|
|
79353
|
+
sPastedText = sPastedText.replace(/(<([^>]+)>)/ig,'<br>');
|
|
79241
79354
|
sPastedText = sPastedText.replace(/(<br\s*\/?>){3,}/gi, '<br>');
|
|
79242
|
-
if
|
|
79243
|
-
|
|
79355
|
+
if(sPastedText.indexOf('<br>')===0) {
|
|
79356
|
+
sPastedText = sPastedText.substring(4);
|
|
79244
79357
|
}
|
|
79245
|
-
if
|
|
79246
|
-
|
|
79358
|
+
if(sPastedText.substring(sPastedText.length-4)==='<br>'){
|
|
79359
|
+
sPastedText = sPastedText.substring(0, sPastedText.length-4);
|
|
79247
79360
|
}
|
|
79248
79361
|
sPastedText = sPastedText.trim();
|
|
79362
|
+
*/
|
|
79363
|
+
|
|
79364
|
+
sPastedText = clipboardData;
|
|
79365
|
+
// sPastedText = sPastedText.replace(/(?:\r\n|\r|\n)/g, '<br>');
|
|
79249
79366
|
} else {
|
|
79250
79367
|
sPastedText = contentword.innerHTML;
|
|
79251
79368
|
if (this.opts.paste === 'html') {
|
|
@@ -79574,7 +79691,8 @@ class ContentBuilder {
|
|
|
79574
79691
|
// </div>
|
|
79575
79692
|
// `;
|
|
79576
79693
|
itemEl.outerHTML = this.settings.sectionTemplate.replace('[%CONTENT%]', itemEl.outerHTML);
|
|
79577
|
-
|
|
79694
|
+
this.activeCol = null;
|
|
79695
|
+
if (this.opts.onBlockSectionAdd) this.opts.onBlockSectionAdd();
|
|
79578
79696
|
|
|
79579
79697
|
// //Trigger Change event
|
|
79580
79698
|
// this.opts.onChange();
|
|
@@ -79708,7 +79826,9 @@ class ContentBuilder {
|
|
|
79708
79826
|
}
|
|
79709
79827
|
// // After snippet has been added, re-apply behavior on builder areas
|
|
79710
79828
|
// this.applyBehaviorOn(builder);
|
|
79711
|
-
|
|
79829
|
+
|
|
79830
|
+
this.activeCol = null;
|
|
79831
|
+
if (this.opts.onBlockSectionAdd) this.opts.onBlockSectionAdd();
|
|
79712
79832
|
|
|
79713
79833
|
//Trigger Change event
|
|
79714
79834
|
this.opts.onChange();
|
|
@@ -79727,17 +79847,18 @@ class ContentBuilder {
|
|
|
79727
79847
|
}
|
|
79728
79848
|
}
|
|
79729
79849
|
hideElementTools() {
|
|
79730
|
-
let elmTool =
|
|
79731
|
-
let divImageTool = document.querySelector('#divImageTool');
|
|
79732
|
-
let divImageResizer = document.querySelector('#divImageResizer');
|
|
79733
|
-
if (divImageTool) if (divImageTool.style.display === 'flex') {
|
|
79734
|
-
if (this.editor.moveable) this.editor.moveable.updateRect();
|
|
79735
|
-
let controlBox = this.doc.querySelector('.moveable-control-box');
|
|
79736
|
-
if (controlBox) controlBox.style.display = 'none';
|
|
79737
|
-
}
|
|
79850
|
+
let elmTool = this.doc.querySelector('.is-element-tool');
|
|
79738
79851
|
if (elmTool) elmTool.style.display = '';
|
|
79739
|
-
|
|
79740
|
-
if (
|
|
79852
|
+
let linkTool = this.doc.querySelector('#divLinkTool');
|
|
79853
|
+
if (linkTool) linkTool.style.display = '';
|
|
79854
|
+
this.element.image.hideImageTool();
|
|
79855
|
+
this.doc.querySelectorAll('.icon-active').forEach(elm => elm.classList.remove('icon-active'));
|
|
79856
|
+
this.doc.querySelectorAll('.elm-inspected').forEach(elm => elm.classList.remove('elm-inspected'));
|
|
79857
|
+
this.doc.querySelectorAll('.elm-active').forEach(elm => elm.classList.remove('elm-active'));
|
|
79858
|
+
this.activeImage = null;
|
|
79859
|
+
this.activeIcon = null;
|
|
79860
|
+
this.inspectedElement = null;
|
|
79861
|
+
this.activeElement = null;
|
|
79741
79862
|
}
|
|
79742
79863
|
}
|
|
79743
79864
|
|