@innovastudio/contentbuilder 1.4.118 → 1.4.120
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -2
- package/public/contentbuilder/contentbuilder.css +69 -71
- package/public/contentbuilder/contentbuilder.esm.js +1049 -926
- 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>
|
@@ -48882,15 +48849,17 @@ class Hyperlink {
|
|
48882
48849
|
}
|
48883
48850
|
link.setAttribute('title', title);
|
48884
48851
|
} else {
|
48885
|
-
link.outerHTML = link.innerHTML;
|
48852
|
+
// link.outerHTML = link.innerHTML;
|
48886
48853
|
this.hideTool();
|
48887
48854
|
if (this.builder.activeIcon) {
|
48888
48855
|
this.builder.activeIcon.setAttribute('dummy-sel', '');
|
48889
48856
|
link.outerHTML = this.builder.activeIcon.outerHTML;
|
48890
|
-
let icon =
|
48857
|
+
let icon = this.builder.doc.querySelector('[dummy-sel]');
|
48891
48858
|
icon.removeAttribute('dummy-sel');
|
48892
48859
|
this.builder.activeIcon = icon;
|
48893
48860
|
this.builder.activeIcon.click();
|
48861
|
+
} else {
|
48862
|
+
link.outerHTML = link.innerHTML;
|
48894
48863
|
}
|
48895
48864
|
}
|
48896
48865
|
|
@@ -49127,8 +49096,6 @@ class Hyperlink {
|
|
49127
49096
|
|
49128
49097
|
this.showTool(link);
|
49129
49098
|
e.preventDefault();
|
49130
|
-
} else {
|
49131
|
-
this.hideTool();
|
49132
49099
|
}
|
49133
49100
|
}
|
49134
49101
|
showTool(link) {
|
@@ -49170,6 +49137,33 @@ class Hyperlink {
|
|
49170
49137
|
const h = linkTool.offsetHeight;
|
49171
49138
|
linkTool.style.top = top - h - 3 + 'px';
|
49172
49139
|
linkTool.style.left = left + link.offsetWidth * this.builder.opts.zoom - w + 'px';
|
49140
|
+
const handleLinkButtonClick = e => {
|
49141
|
+
// console.log('handleLinkButtonClick');
|
49142
|
+
let elm = e.target;
|
49143
|
+
if (!elm) return;
|
49144
|
+
if (!elm.closest('#divLinkTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('a')) {
|
49145
|
+
// click outside
|
49146
|
+
|
49147
|
+
// hide
|
49148
|
+
this.hideTool();
|
49149
|
+
// console.log('HIDE');
|
49150
|
+
|
49151
|
+
// Hide Button Editor Modal
|
49152
|
+
this.builder.element.hyperlink.buttonEditor.hide();
|
49153
|
+
document.removeEventListener('click', handleLinkButtonClick);
|
49154
|
+
if (this.builder.iframeDocument) {
|
49155
|
+
this.builder.doc.removeEventListener('click', handleLinkButtonClick);
|
49156
|
+
}
|
49157
|
+
this.builder.handleLinkButtonClick_ = false;
|
49158
|
+
}
|
49159
|
+
};
|
49160
|
+
if (!this.builder.handleLinkButtonClick_) {
|
49161
|
+
document.addEventListener('click', handleLinkButtonClick);
|
49162
|
+
if (this.builder.iframeDocument) {
|
49163
|
+
this.builder.doc.addEventListener('click', handleLinkButtonClick);
|
49164
|
+
}
|
49165
|
+
this.builder.handleLinkButtonClick_ = true;
|
49166
|
+
}
|
49173
49167
|
}
|
49174
49168
|
hideTool() {
|
49175
49169
|
this.linkTool.style.display = '';
|
@@ -49522,9 +49516,34 @@ class Button {
|
|
49522
49516
|
if (btn && !customcode && !noedit && !_protected) {
|
49523
49517
|
this.builder.activeButton = btn;
|
49524
49518
|
this.showTool(btn);
|
49519
|
+
const handleButtonClick = e => {
|
49520
|
+
// console.log('handleButtonClick');
|
49521
|
+
let elm = e.target;
|
49522
|
+
if (!elm) return;
|
49523
|
+
if (!elm.closest('#divButtonTool') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('button')) {
|
49524
|
+
// click outside
|
49525
|
+
|
49526
|
+
// hide
|
49527
|
+
this.hideTool();
|
49528
|
+
// console.log('HIDE');
|
49529
|
+
|
49530
|
+
// Hide Button Editor Modal
|
49531
|
+
this.builder.element.hyperlink.buttonEditor.hide();
|
49532
|
+
document.removeEventListener('click', handleButtonClick);
|
49533
|
+
if (this.builder.iframeDocument) {
|
49534
|
+
this.builder.doc.removeEventListener('click', handleButtonClick);
|
49535
|
+
}
|
49536
|
+
this.builder.handleButtonClick_ = false;
|
49537
|
+
}
|
49538
|
+
};
|
49539
|
+
if (!this.builder.handleButtonClick_) {
|
49540
|
+
document.addEventListener('click', handleButtonClick);
|
49541
|
+
if (this.builder.iframeDocument) {
|
49542
|
+
this.builder.doc.addEventListener('click', handleButtonClick);
|
49543
|
+
}
|
49544
|
+
this.builder.handleButtonClick_ = true;
|
49545
|
+
}
|
49525
49546
|
e.preventDefault();
|
49526
|
-
} else {
|
49527
|
-
this.hideTool();
|
49528
49547
|
}
|
49529
49548
|
}
|
49530
49549
|
editButton() {
|
@@ -49731,7 +49750,8 @@ class Module {
|
|
49731
49750
|
if (!moduleTool) {
|
49732
49751
|
let html = `
|
49733
49752
|
<div class="is-tool is-module-tool">
|
49734
|
-
<button title="${util.out('
|
49753
|
+
<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>
|
49754
|
+
<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
49755
|
</div>
|
49736
49756
|
|
49737
49757
|
<input id="hidContentModuleCode" type="hidden" />
|
@@ -49759,11 +49779,15 @@ class Module {
|
|
49759
49779
|
}
|
49760
49780
|
moduleModal = builderStuff.querySelector('.is-modal.custommodule');
|
49761
49781
|
this.moduleModal = moduleModal;
|
49762
|
-
|
49763
|
-
|
49764
|
-
|
49765
|
-
|
49766
|
-
|
49782
|
+
const btnModuleSettings = moduleTool.querySelector('.btn-module-settings');
|
49783
|
+
btnModuleSettings.addEventListener('click', async () => {
|
49784
|
+
this.edit(btnModuleSettings);
|
49785
|
+
});
|
49786
|
+
const btnModuleRefresh = moduleTool.querySelector('.btn-module-refresh');
|
49787
|
+
btnModuleRefresh.addEventListener('click', async () => {
|
49788
|
+
let module = this.builder.activeModule;
|
49789
|
+
module.click();
|
49790
|
+
this.util.refreshModuleLayout(module);
|
49767
49791
|
});
|
49768
49792
|
let btnOk = moduleModal.querySelector('.input-ok');
|
49769
49793
|
dom.addEventListener(btnOk, 'click', () => {
|
@@ -49811,16 +49835,16 @@ class Module {
|
|
49811
49835
|
});
|
49812
49836
|
let builderActive = this.builder.doc.querySelector('.builder-active');
|
49813
49837
|
if (builderActive) this.builder.applyBehaviorOn(builderActive);
|
49814
|
-
|
49815
|
-
//Trigger Change event
|
49816
49838
|
this.builder.opts.onChange();
|
49817
|
-
|
49818
|
-
//Trigger Render event
|
49819
49839
|
this.builder.opts.onRender();
|
49820
|
-
|
49821
|
-
this.util.
|
49822
|
-
|
49823
|
-
|
49840
|
+
|
49841
|
+
// this.util.hideControls();
|
49842
|
+
|
49843
|
+
// this.util.repositionColumnTool(true);
|
49844
|
+
// if(this.builder.onRefreshTool) this.builder.onRefreshTool();
|
49845
|
+
|
49846
|
+
// module.click();
|
49847
|
+
|
49824
49848
|
this.builder.hideModal(moduleModal);
|
49825
49849
|
});
|
49826
49850
|
let btnCancel = moduleModal.querySelector('.input-cancel');
|
@@ -49837,7 +49861,10 @@ class Module {
|
|
49837
49861
|
const dom = this.dom;
|
49838
49862
|
|
49839
49863
|
//-------- Set a flag to indicate active module -----------
|
49840
|
-
dom.removeAttributes(
|
49864
|
+
dom.removeAttributes(this.builder.doc.querySelectorAll('[data-module-active]'), 'data-module-active');
|
49865
|
+
// this.builder.doc.querySelectorAll('[data-module-active]').forEach(element => {
|
49866
|
+
// element.removeAttribute('data-module-active');
|
49867
|
+
// });
|
49841
49868
|
module.setAttribute('data-module-active', '1');
|
49842
49869
|
//-------- /Set a flag to indicate active module -----------
|
49843
49870
|
|
@@ -49953,26 +49980,27 @@ class Module {
|
|
49953
49980
|
index++;
|
49954
49981
|
});
|
49955
49982
|
*/
|
49983
|
+
if (module.getAttribute('data-panel') === 'side' && this.builder.controlPanel) ; else {
|
49984
|
+
this.util.showModal(moduleModal, true, () => {
|
49985
|
+
if (btn) {
|
49986
|
+
btn.removeAttribute('data-focus');
|
49987
|
+
btn.focus();
|
49988
|
+
}
|
49989
|
+
});
|
49990
|
+
if (btn) btn.setAttribute('data-focus', true);
|
49956
49991
|
|
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
|
49992
|
+
// var d = new Date();
|
49993
|
+
// moduleModal.querySelector('iframe').src = this.builder.opts.modulePath + modulename + '.html?' + d.getTime(); //always refreshed
|
49967
49994
|
|
49968
|
-
|
49969
|
-
|
49970
|
-
|
49971
|
-
|
49972
|
-
|
49973
|
-
|
49974
|
-
|
49975
|
-
|
49995
|
+
let iframe = moduleModal.querySelector('iframe');
|
49996
|
+
let result = await fetch(this.builder.opts.modulePath + modulename + '.html');
|
49997
|
+
result = await result.text();
|
49998
|
+
result = result.replace(/<script>/g, `${this.builder.nonce ? `<script nonce="${this.builder.nonce}">` : '<script>'}`);
|
49999
|
+
let doc = iframe.contentWindow.document;
|
50000
|
+
doc.open();
|
50001
|
+
doc.write(result);
|
50002
|
+
doc.close();
|
50003
|
+
}
|
49976
50004
|
}
|
49977
50005
|
click(col) {
|
49978
50006
|
let custommodule = false;
|
@@ -49982,25 +50010,38 @@ class Module {
|
|
49982
50010
|
}
|
49983
50011
|
if (custommodule) {
|
49984
50012
|
this.builder.activeModule = col;
|
49985
|
-
let elm = col;
|
49986
50013
|
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';
|
50014
|
+
const btn = this.moduleTool.querySelector('.btn-module-settings');
|
50015
|
+
if (col.getAttribute('data-panel') === 'side' && this.builder.controlPanel) {
|
50016
|
+
btn.style.display = 'none';
|
50017
|
+
} else {
|
50018
|
+
btn.style.display = '';
|
50019
|
+
}
|
50020
|
+
this.repositionModuleTool();
|
49999
50021
|
} else {
|
50000
50022
|
this.builder.activeModule = null;
|
50001
50023
|
this.moduleTool.style.display = '';
|
50002
50024
|
}
|
50003
50025
|
}
|
50026
|
+
repositionModuleTool() {
|
50027
|
+
if (!this.builder.activeModule) return;
|
50028
|
+
if (this.moduleTool.style.display !== 'flex') return;
|
50029
|
+
let elm = this.builder.activeModule;
|
50030
|
+
|
50031
|
+
// this.moduleTool.style.display = 'flex';
|
50032
|
+
let _toolwidth = this.moduleTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
|
50033
|
+
|
50034
|
+
let w = elm.offsetWidth * this.builder.opts.zoom;
|
50035
|
+
let top = elm.getBoundingClientRect().top + this.builder.win.pageYOffset;
|
50036
|
+
let left = elm.getBoundingClientRect().left - 2;
|
50037
|
+
left = left + (w - _toolwidth);
|
50038
|
+
|
50039
|
+
//Adjust left in case an element is outside the screen
|
50040
|
+
const _screenwidth = window.innerWidth;
|
50041
|
+
if (_toolwidth + left > _screenwidth) left = elm.getBoundingClientRect().left;
|
50042
|
+
this.moduleTool.style.top = top + 'px';
|
50043
|
+
this.moduleTool.style.left = left + 'px';
|
50044
|
+
}
|
50004
50045
|
}
|
50005
50046
|
|
50006
50047
|
class Code {
|
@@ -50433,21 +50474,6 @@ class Table {
|
|
50433
50474
|
tableTool = contentStuff.querySelector('.is-table-tool');
|
50434
50475
|
}
|
50435
50476
|
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
50477
|
const btnBgColor = tableModal.querySelector('.input-table-bgcolor');
|
50452
50478
|
btnBgColor.addEventListener('click', e => {
|
50453
50479
|
this.builder.uo.saveForUndo();
|
@@ -50609,7 +50635,7 @@ class Table {
|
|
50609
50635
|
|
50610
50636
|
//Table Layout
|
50611
50637
|
|
50612
|
-
btn = tableModal.querySelector('[data-table-cmd="rowabove"]');
|
50638
|
+
let btn = tableModal.querySelector('[data-table-cmd="rowabove"]');
|
50613
50639
|
btn.addEventListener('click', () => {
|
50614
50640
|
if (!this.builder.activeTd) return;
|
50615
50641
|
|
@@ -50746,47 +50772,99 @@ class Table {
|
|
50746
50772
|
//Trigger Change event
|
50747
50773
|
this.builder.opts.onChange();
|
50748
50774
|
});
|
50775
|
+
btn = tableTool.querySelector('button');
|
50776
|
+
dom.addEventListener(btn, 'click', () => {
|
50777
|
+
// old 10317
|
50778
|
+
|
50779
|
+
if (tableModal.classList.contains('active')) {
|
50780
|
+
this.hideTableEditor();
|
50781
|
+
} else {
|
50782
|
+
this.showTableEditor();
|
50783
|
+
}
|
50784
|
+
});
|
50785
|
+
let btnClose = tableModal.querySelector('.is-modal-close');
|
50786
|
+
dom.addEventListener(btnClose, 'click', () => {
|
50787
|
+
dom.removeClass(tableModal, 'active');
|
50788
|
+
});
|
50749
50789
|
}
|
50750
50790
|
this.tableTool = tableTool;
|
50751
50791
|
this.tableModal = tableModal;
|
50752
50792
|
}
|
50753
|
-
|
50754
|
-
const
|
50755
|
-
|
50756
|
-
|
50757
|
-
|
50758
|
-
|
50759
|
-
let
|
50760
|
-
|
50761
|
-
if (
|
50762
|
-
|
50763
|
-
|
50764
|
-
|
50765
|
-
|
50793
|
+
showTableEditor() {
|
50794
|
+
const tableModal = this.tableModal;
|
50795
|
+
this.util.showModal(tableModal);
|
50796
|
+
this.realtime();
|
50797
|
+
const handleTableClick = e => {
|
50798
|
+
// console.log('handleTableClick');
|
50799
|
+
let elm = e.target;
|
50800
|
+
if (!elm) return;
|
50801
|
+
if (!elm.closest('.is-table-tool') && !elm.closest('.is-sidebar') && !elm.closest('.is-modal') && !elm.closest('.keep-selection') && !elm.closest('table')) {
|
50802
|
+
// click outside
|
50803
|
+
|
50804
|
+
// hide
|
50805
|
+
this.hideTableEditor();
|
50806
|
+
// console.log('HIDE');
|
50807
|
+
|
50808
|
+
document.removeEventListener('click', handleTableClick);
|
50809
|
+
if (this.builder.iframeDocument) {
|
50810
|
+
this.builder.doc.removeEventListener('click', handleTableClick);
|
50766
50811
|
}
|
50767
|
-
|
50812
|
+
this.builder.handleTableClick_ = false;
|
50768
50813
|
}
|
50769
|
-
|
50770
|
-
|
50814
|
+
if (elm.closest('table')) {
|
50815
|
+
this.realtime();
|
50816
|
+
}
|
50817
|
+
};
|
50818
|
+
if (!this.builder.handleTableClick_) {
|
50819
|
+
document.addEventListener('click', handleTableClick);
|
50820
|
+
if (this.builder.iframeDocument) {
|
50821
|
+
this.builder.doc.addEventListener('click', handleTableClick);
|
50771
50822
|
}
|
50772
|
-
|
50823
|
+
this.builder.handleTableClick_ = true;
|
50824
|
+
}
|
50825
|
+
}
|
50826
|
+
hideTableEditor() {
|
50827
|
+
const tableModal = this.tableModal;
|
50828
|
+
this.util.hideModal(tableModal);
|
50829
|
+
}
|
50830
|
+
realtime() {
|
50831
|
+
const tableModal = this.tableModal;
|
50832
|
+
if (tableModal.classList.contains('active') && this.builder.activeTable) {
|
50833
|
+
let activeTd = this.builder.activeTd;
|
50834
|
+
tableModal.querySelector('.input-table-bgcolor').style.backgroundColor = activeTd.style.backgroundColor;
|
50835
|
+
tableModal.querySelector('.input-table-textcolor').style.backgroundColor = activeTd.style.color;
|
50836
|
+
tableModal.querySelector('.input-table-bordercolor').style.backgroundColor = activeTd.style.borderColor;
|
50837
|
+
tableModal.querySelector('#selCellBorderWidth').value = parseInt(activeTd.style.borderWidth);
|
50838
|
+
} else {
|
50839
|
+
tableModal.querySelector('.input-table-bgcolor').style.backgroundColor = '';
|
50840
|
+
tableModal.querySelector('.input-table-textcolor').style.backgroundColor = '';
|
50841
|
+
tableModal.querySelector('.input-table-bordercolor').style.backgroundColor = '';
|
50842
|
+
tableModal.querySelector('#selCellBorderWidth').value = 0;
|
50843
|
+
}
|
50844
|
+
}
|
50845
|
+
click(e) {
|
50846
|
+
let elm = e.target;
|
50847
|
+
if (!elm) return;
|
50848
|
+
const dom = this.dom;
|
50849
|
+
const table = elm.closest('table');
|
50850
|
+
if (table) {
|
50851
|
+
let td = elm.closest('td');
|
50773
50852
|
if (dom.hasClass(table, 'default')) {
|
50774
50853
|
// only edit table.default
|
50775
50854
|
|
50776
50855
|
this.builder.activeTd = td;
|
50777
50856
|
this.builder.activeTable = table;
|
50778
|
-
let elm = table;
|
50779
50857
|
this.tableTool.style.display = 'flex';
|
50780
50858
|
let _toolwidth = this.tableTool.offsetWidth; //to get value, element must not hidden (display:none). So set display:flex before this.
|
50781
50859
|
|
50782
|
-
let w =
|
50783
|
-
let top =
|
50784
|
-
let left =
|
50860
|
+
let w = table.offsetWidth * this.builder.opts.zoom;
|
50861
|
+
let top = table.getBoundingClientRect().top + this.builder.win.pageYOffset;
|
50862
|
+
let left = table.getBoundingClientRect().left - 2;
|
50785
50863
|
left = left + (w - _toolwidth);
|
50786
50864
|
|
50787
50865
|
//Adjust left in case an element is outside the screen
|
50788
50866
|
const _screenwidth = window.innerWidth;
|
50789
|
-
if (_toolwidth + left > _screenwidth) left =
|
50867
|
+
if (_toolwidth + left > _screenwidth) left = table.getBoundingClientRect().left;
|
50790
50868
|
this.tableTool.style.top = top + 'px';
|
50791
50869
|
this.tableTool.style.left = left + 'px';
|
50792
50870
|
} else {
|
@@ -50799,18 +50877,6 @@ class Table {
|
|
50799
50877
|
this.builder.activeTable = null;
|
50800
50878
|
this.tableTool.style.display = '';
|
50801
50879
|
}
|
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
50880
|
}
|
50815
50881
|
}
|
50816
50882
|
|
@@ -50857,7 +50923,7 @@ class Video {
|
|
50857
50923
|
<button title="${util.out('Select')}" class="input-select" style="flex:none;">
|
50858
50924
|
${this.builder.opts.selectIcon}
|
50859
50925
|
</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);">
|
50926
|
+
<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
50927
|
<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
50928
|
<input id="hidRefId5" name="hidRefId" type="hidden" value="" />
|
50863
50929
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
@@ -51097,7 +51163,7 @@ class Audio {
|
|
51097
51163
|
<button title="${util.out('Select')}" class="input-select" style="flex:none;">
|
51098
51164
|
${this.builder.opts.selectIcon}
|
51099
51165
|
</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);">
|
51166
|
+
<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
51167
|
<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
51168
|
<input id="hidRefAudio" name="hidRefId" type="hidden" value="" />
|
51103
51169
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
@@ -51248,66 +51314,7 @@ class Audio {
|
|
51248
51314
|
}
|
51249
51315
|
}
|
51250
51316
|
|
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
|
-
|
51317
|
+
// import Svg from './elementsvg.js';
|
51311
51318
|
// import Moveable from 'moveable';
|
51312
51319
|
|
51313
51320
|
class Element$1 {
|
@@ -51329,8 +51336,9 @@ class Element$1 {
|
|
51329
51336
|
this.table = new Table(builder);
|
51330
51337
|
this.video = new Video(builder);
|
51331
51338
|
this.audio = new Audio(builder);
|
51332
|
-
this.svg = new Svg(builder);
|
51339
|
+
// this.svg = new Svg(builder);
|
51333
51340
|
}
|
51341
|
+
|
51334
51342
|
applyBehavior(col) {
|
51335
51343
|
const dom = this.dom;
|
51336
51344
|
let customcode = false;
|
@@ -51468,13 +51476,11 @@ class Element$1 {
|
|
51468
51476
|
//previously this is commented: && !noedit && !_protected
|
51469
51477
|
|
51470
51478
|
// Icon
|
51471
|
-
const icons =
|
51472
|
-
|
51473
|
-
dom.removeClass(icon, 'icon-active');
|
51474
|
-
});
|
51479
|
+
const icons = this.builder.doc.querySelectorAll('.icon-active');
|
51480
|
+
icons.forEach(icon => icon.classList.remove('icon-active'));
|
51475
51481
|
this.builder.activeIcon = null;
|
51476
51482
|
if (elm.tagName.toLowerCase() === 'i' && elm.innerHTML === '') {
|
51477
|
-
|
51483
|
+
elm.classList.add('icon-active');
|
51478
51484
|
dom.selectElementContents(elm);
|
51479
51485
|
this.builder.activeIcon = elm;
|
51480
51486
|
|
@@ -51515,7 +51521,7 @@ class Element$1 {
|
|
51515
51521
|
this.spacer.click(e);
|
51516
51522
|
|
51517
51523
|
// svg
|
51518
|
-
this.svg.click(e);
|
51524
|
+
// this.svg.click(e);
|
51519
51525
|
} else {
|
51520
51526
|
this.util.hideControls();
|
51521
51527
|
|
@@ -51536,49 +51542,6 @@ class Element$1 {
|
|
51536
51542
|
|
51537
51543
|
//Module
|
51538
51544
|
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
51545
|
}
|
51583
51546
|
}
|
51584
51547
|
|
@@ -53270,6 +53233,7 @@ class RowTool {
|
|
53270
53233
|
const util = this.builder.util;
|
53271
53234
|
this.util = util;
|
53272
53235
|
const builderStuff = this.builder.builderStuff;
|
53236
|
+
this.builderStuff = builderStuff;
|
53273
53237
|
const dom = this.builder.dom;
|
53274
53238
|
this.dom = dom;
|
53275
53239
|
this.grid = new Grid(builder);
|
@@ -53451,6 +53415,11 @@ class RowTool {
|
|
53451
53415
|
// Open Row Settings
|
53452
53416
|
let elm = rowMore.querySelector('.row-settings');
|
53453
53417
|
if (elm) dom.addEventListener(elm, 'click', () => {
|
53418
|
+
if (this.builder.controlPanel) {
|
53419
|
+
this.builder.controlpanel.select('row', true);
|
53420
|
+
util.hidePop(this.rowMore);
|
53421
|
+
return;
|
53422
|
+
}
|
53454
53423
|
const row = this.rowOverlay();
|
53455
53424
|
if (!row) return;
|
53456
53425
|
this.readRowStyles(row);
|
@@ -54126,6 +54095,35 @@ class RowTool {
|
|
54126
54095
|
} else {
|
54127
54096
|
quickadd.setAttribute('data-mode', 'cell-right');
|
54128
54097
|
}
|
54098
|
+
|
54099
|
+
//handleQuickAddClickOut
|
54100
|
+
const handleQuickAddClickOut = e => {
|
54101
|
+
// console.log('handleQuickAddClickOut');
|
54102
|
+
let elm = e.target;
|
54103
|
+
if (!elm) return;
|
54104
|
+
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')) {
|
54105
|
+
// click outside
|
54106
|
+
|
54107
|
+
// hide
|
54108
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
54109
|
+
util.hidePop(quickadd);
|
54110
|
+
// console.log('HIDE');
|
54111
|
+
|
54112
|
+
// clear events
|
54113
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
54114
|
+
if (this.builder.iframeDocument) {
|
54115
|
+
this.builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
54116
|
+
}
|
54117
|
+
this.builder.handleQuickAddClickOut_ = false;
|
54118
|
+
}
|
54119
|
+
};
|
54120
|
+
if (!this.builder.handleQuickAddClickOut_) {
|
54121
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
54122
|
+
if (this.builder.iframeDocument) {
|
54123
|
+
this.builder.doc.addEventListener('click', handleQuickAddClickOut);
|
54124
|
+
}
|
54125
|
+
this.builder.handleQuickAddClickOut_ = true;
|
54126
|
+
}
|
54129
54127
|
});
|
54130
54128
|
const btnCellMore = coltool.querySelector('.cell-more');
|
54131
54129
|
if (btnCellMore) dom.addEventListener(btnCellMore, 'click', () => {
|
@@ -54170,8 +54168,126 @@ class RowTool {
|
|
54170
54168
|
dom.removeClass(btnCellLocking, 'on');
|
54171
54169
|
// btnCellLocking.innerHTML = '<svg class="is-icon-flex"><use xlink:href="#icon-lock-off"></use></svg>';
|
54172
54170
|
}
|
54173
|
-
});
|
54174
54171
|
|
54172
|
+
// columnMore
|
54173
|
+
|
54174
|
+
const btnIncrease = columnMore.querySelector('.cell-increase');
|
54175
|
+
const btnDecrease = columnMore.querySelector('.cell-decrease');
|
54176
|
+
const btnPrev = columnMore.querySelector('.cell-prev');
|
54177
|
+
const btnNext = columnMore.querySelector('.cell-next');
|
54178
|
+
const btnUp = columnMore.querySelector('.cell-up');
|
54179
|
+
const btnDown = columnMore.querySelector('.cell-down');
|
54180
|
+
const btnDuplicate = columnMore.querySelector('.cell-duplicate');
|
54181
|
+
const btnLock = columnMore.querySelector('.cell-locking');
|
54182
|
+
const separator = columnMore.querySelector('.is-separator');
|
54183
|
+
let nogrid = cell.closest('[nogrid]'); //dom.parentsHasAttribute(col, 'nogrid');
|
54184
|
+
if (nogrid) {
|
54185
|
+
btnPrev.style.display = 'none';
|
54186
|
+
btnNext.style.display = 'none';
|
54187
|
+
btnUp.style.display = 'none';
|
54188
|
+
btnDown.style.display = 'none';
|
54189
|
+
if (btnIncrease) btnIncrease.style.display = 'none';
|
54190
|
+
if (btnDecrease) btnDecrease.style.display = 'none';
|
54191
|
+
btnDuplicate.style.display = 'none';
|
54192
|
+
btnPrev.setAttribute('disabled', 'disabled');
|
54193
|
+
btnNext.setAttribute('disabled', 'disabled');
|
54194
|
+
btnUp.setAttribute('disabled', 'disabled');
|
54195
|
+
btnDown.setAttribute('disabled', 'disabled');
|
54196
|
+
btnIncrease.setAttribute('disabled', 'disabled');
|
54197
|
+
btnDecrease.setAttribute('disabled', 'disabled');
|
54198
|
+
btnDuplicate.setAttribute('disabled', 'disabled');
|
54199
|
+
let btnColHtml = columnMore.querySelector('.cell-html');
|
54200
|
+
if (btnColHtml) btnColHtml.style.display = '';
|
54201
|
+
if (cell.getAttribute('data-html')) {
|
54202
|
+
columnMore.querySelector('.cell-html').style.display = 'none';
|
54203
|
+
this.columnTool.querySelector('.cell-more').style.display = 'none';
|
54204
|
+
columnMore.querySelector('.cell-html').setAttribute('disabled', 'disabled');
|
54205
|
+
this.columnTool.querySelector('.cell-more').setAttribute('disabled', 'disabled');
|
54206
|
+
}
|
54207
|
+
} else {
|
54208
|
+
btnPrev.style.display = '';
|
54209
|
+
btnNext.style.display = '';
|
54210
|
+
btnUp.style.display = '';
|
54211
|
+
btnDown.style.display = '';
|
54212
|
+
if (btnIncrease) btnIncrease.style.display = '';
|
54213
|
+
if (btnDecrease) btnDecrease.style.display = '';
|
54214
|
+
btnDuplicate.style.display = '';
|
54215
|
+
btnPrev.removeAttribute('disabled');
|
54216
|
+
btnNext.removeAttribute('disabled');
|
54217
|
+
btnUp.removeAttribute('disabled');
|
54218
|
+
btnDown.removeAttribute('disabled');
|
54219
|
+
if (btnIncrease) btnIncrease.removeAttribute('disabled');
|
54220
|
+
if (btnDecrease) btnDecrease.removeAttribute('disabled');
|
54221
|
+
btnDuplicate.removeAttribute('disabled');
|
54222
|
+
let btnColHtml = columnMore.querySelector('.cell-html');
|
54223
|
+
if (btnColHtml) {
|
54224
|
+
btnColHtml.style.display = '';
|
54225
|
+
btnColHtml.removeAttribute('disabled');
|
54226
|
+
}
|
54227
|
+
let row = cell.parentNode;
|
54228
|
+
let num = 3; //is-row-tool, is-col-tool & is-rowadd-tool
|
54229
|
+
if (row.querySelector('.is-row-overlay')) {
|
54230
|
+
num = 4; //is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
|
54231
|
+
}
|
54232
|
+
|
54233
|
+
if (row.childElementCount - num === 1) {
|
54234
|
+
//-num => minus is-row-tool, is-col-tool, is-rowadd-tool & is-row-overlay
|
54235
|
+
btnPrev.style.display = 'none';
|
54236
|
+
btnNext.style.display = 'none';
|
54237
|
+
if (btnIncrease) btnIncrease.style.display = 'none';
|
54238
|
+
if (btnDecrease) btnDecrease.style.display = 'none';
|
54239
|
+
btnPrev.setAttribute('disabled', 'disabled');
|
54240
|
+
btnNext.setAttribute('disabled', 'disabled');
|
54241
|
+
if (btnIncrease) btnIncrease.setAttribute('disabled', 'disabled');
|
54242
|
+
if (btnDecrease) btnDecrease.setAttribute('disabled', 'disabled');
|
54243
|
+
} else {
|
54244
|
+
btnPrev.style.display = '';
|
54245
|
+
btnNext.style.display = '';
|
54246
|
+
if (btnIncrease) btnIncrease.style.display = '';
|
54247
|
+
if (btnDecrease) btnDecrease.style.display = '';
|
54248
|
+
btnPrev.removeAttribute('disabled');
|
54249
|
+
btnNext.removeAttribute('disabled');
|
54250
|
+
if (btnIncrease) btnIncrease.removeAttribute('disabled');
|
54251
|
+
if (btnDecrease) btnDecrease.removeAttribute('disabled');
|
54252
|
+
}
|
54253
|
+
|
54254
|
+
// let btnColHtml = columnMore.querySelector('.cell-html');
|
54255
|
+
let btnColDuplicate = btnDuplicate;
|
54256
|
+
if (cell.getAttribute('data-html')) {
|
54257
|
+
if (btnColHtml) {
|
54258
|
+
btnColHtml.style.display = 'none';
|
54259
|
+
btnColHtml.setAttribute('disabled', 'disabled');
|
54260
|
+
}
|
54261
|
+
if (btnColDuplicate) {
|
54262
|
+
btnColDuplicate.style.display = 'none';
|
54263
|
+
btnColDuplicate.setAttribute('disabled', 'disabled');
|
54264
|
+
}
|
54265
|
+
} else {
|
54266
|
+
if (btnColHtml) {
|
54267
|
+
btnColHtml.style.display = '';
|
54268
|
+
btnColHtml.removeAttribute('disabled');
|
54269
|
+
}
|
54270
|
+
if (btnColDuplicate) {
|
54271
|
+
btnColDuplicate.style.display = '';
|
54272
|
+
btnColDuplicate.removeAttribute('disabled');
|
54273
|
+
}
|
54274
|
+
}
|
54275
|
+
}
|
54276
|
+
if (cell.classList.contains('column-lock')) {
|
54277
|
+
btnPrev.style.display = 'none';
|
54278
|
+
btnNext.style.display = 'none';
|
54279
|
+
btnUp.style.display = 'none';
|
54280
|
+
btnDown.style.display = 'none';
|
54281
|
+
btnIncrease.style.display = 'none';
|
54282
|
+
btnDecrease.style.display = 'none';
|
54283
|
+
btnDuplicate.style.display = 'none';
|
54284
|
+
separator.style.display = 'none';
|
54285
|
+
btnLock.style.display = 'none';
|
54286
|
+
} else {
|
54287
|
+
separator.style.display = '';
|
54288
|
+
btnLock.style.display = '';
|
54289
|
+
}
|
54290
|
+
});
|
54175
54291
|
const btnCellRemove = coltool.querySelector('.cell-remove');
|
54176
54292
|
if (btnCellRemove) dom.addEventListener(btnCellRemove, 'click', () => {
|
54177
54293
|
const grid = new Grid(this.builder);
|
@@ -54181,47 +54297,7 @@ class RowTool {
|
|
54181
54297
|
});
|
54182
54298
|
let btnGridEditor = rowtool.querySelector('.row-grideditor');
|
54183
54299
|
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
|
-
}
|
54300
|
+
this.showGridEditor();
|
54225
54301
|
});
|
54226
54302
|
const btnMore = rowtool.querySelector('.row-more');
|
54227
54303
|
if (btnMore) dom.addEventListener(btnMore, 'click', () => {
|
@@ -54310,6 +54386,92 @@ class RowTool {
|
|
54310
54386
|
});
|
54311
54387
|
}
|
54312
54388
|
}
|
54389
|
+
hideGridEditor() {
|
54390
|
+
const grideditor = this.builderStuff.querySelector('.grideditor');
|
54391
|
+
grideditor.classList.remove('active');
|
54392
|
+
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
54393
|
+
builders.forEach(builder => {
|
54394
|
+
builder.removeAttribute('grideditor');
|
54395
|
+
});
|
54396
|
+
}
|
54397
|
+
showGridEditor() {
|
54398
|
+
const grideditor = this.builderStuff.querySelector('.grideditor');
|
54399
|
+
const handleGridToolClickOut = e => {
|
54400
|
+
// console.log('handleGridToolClickOut');
|
54401
|
+
let elm = e.target;
|
54402
|
+
if (!elm) return;
|
54403
|
+
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')) {
|
54404
|
+
// click outside
|
54405
|
+
|
54406
|
+
// hide
|
54407
|
+
this.hideGridEditor();
|
54408
|
+
// console.log('HIDE');
|
54409
|
+
|
54410
|
+
// clear events
|
54411
|
+
document.removeEventListener('click', handleGridToolClickOut);
|
54412
|
+
if (this.builder.iframeDocument) {
|
54413
|
+
this.builder.doc.removeEventListener('click', handleGridToolClickOut);
|
54414
|
+
}
|
54415
|
+
this.builder.handleGridToolClickOut_ = false;
|
54416
|
+
}
|
54417
|
+
};
|
54418
|
+
if (grideditor.classList.contains('active')) {
|
54419
|
+
// hide
|
54420
|
+
this.hideGridEditor();
|
54421
|
+
|
54422
|
+
// clear events
|
54423
|
+
document.removeEventListener('click', handleGridToolClickOut);
|
54424
|
+
if (this.builder.iframeDocument) {
|
54425
|
+
this.builder.doc.removeEventListener('click', handleGridToolClickOut);
|
54426
|
+
}
|
54427
|
+
this.builder.handleGridToolClickOut_ = false;
|
54428
|
+
return;
|
54429
|
+
}
|
54430
|
+
|
54431
|
+
// this.util.showModal(grideditor, false, ()=>{
|
54432
|
+
// btnGridEditor.removeAttribute('data-focus');
|
54433
|
+
// btnGridEditor.focus();
|
54434
|
+
// });
|
54435
|
+
// btnGridEditor.setAttribute('data-focus', true);
|
54436
|
+
|
54437
|
+
this.util.showModal(grideditor);
|
54438
|
+
const builders = this.builder.doc.querySelectorAll(this.builder.opts.container);
|
54439
|
+
builders.forEach(builder => {
|
54440
|
+
builder.setAttribute('grideditor', '');
|
54441
|
+
});
|
54442
|
+
|
54443
|
+
/*
|
54444
|
+
// Grid Editor Status
|
54445
|
+
// On/off outline button
|
54446
|
+
const btnGridOutline = grideditor.querySelector('.grid-outline');
|
54447
|
+
const container = this.builder.doc.querySelector(this.builder.opts.container); // get one
|
54448
|
+
if(container.hasAttribute('gridoutline')) {
|
54449
|
+
dom.addClass(btnGridOutline, 'on');
|
54450
|
+
} else {
|
54451
|
+
dom.removeClass(btnGridOutline, 'on');
|
54452
|
+
}
|
54453
|
+
// On/off lock button
|
54454
|
+
const btnCellLocking = grideditor.querySelector('.cell-locking');
|
54455
|
+
let cell = util.cellSelected();
|
54456
|
+
if(cell) {
|
54457
|
+
if(cell.hasAttribute('data-noedit')) {
|
54458
|
+
dom.addClass(btnCellLocking, 'on');
|
54459
|
+
} else {
|
54460
|
+
dom.removeClass(btnCellLocking, 'on');
|
54461
|
+
}
|
54462
|
+
} else {
|
54463
|
+
dom.removeClass(btnCellLocking, 'on');
|
54464
|
+
}
|
54465
|
+
*/
|
54466
|
+
|
54467
|
+
if (!this.builder.handleGridToolClickOut_) {
|
54468
|
+
document.addEventListener('click', handleGridToolClickOut);
|
54469
|
+
if (this.builder.iframeDocument) {
|
54470
|
+
this.builder.doc.addEventListener('click', handleGridToolClickOut);
|
54471
|
+
}
|
54472
|
+
this.builder.handleGridToolClickOut_ = true;
|
54473
|
+
}
|
54474
|
+
}
|
54313
54475
|
readRowStyles(row) {
|
54314
54476
|
this.util.clearActiveElement();
|
54315
54477
|
|
@@ -54410,6 +54572,7 @@ class RowAddTool {
|
|
54410
54572
|
render(row) {
|
54411
54573
|
const dom = this.dom;
|
54412
54574
|
const util = this.builder.util;
|
54575
|
+
const builderStuff = this.builder.builderStuff;
|
54413
54576
|
const quickadd = renderQuickAdd(this.builder);
|
54414
54577
|
let rowaddtool = row.querySelector('.is-rowadd-tool');
|
54415
54578
|
if (!rowaddtool) {
|
@@ -54476,7 +54639,35 @@ class RowAddTool {
|
|
54476
54639
|
dom.addClass(quickadd, 'center');
|
54477
54640
|
}
|
54478
54641
|
quickadd.setAttribute('data-mode', 'row');
|
54479
|
-
|
54642
|
+
|
54643
|
+
//handleQuickAddClickOut
|
54644
|
+
const handleQuickAddClickOut = e => {
|
54645
|
+
// console.log('handleQuickAddClickOut');
|
54646
|
+
let elm = e.target;
|
54647
|
+
if (!elm) return;
|
54648
|
+
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')) {
|
54649
|
+
// click outside
|
54650
|
+
|
54651
|
+
// hide
|
54652
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
54653
|
+
util.hidePop(quickadd);
|
54654
|
+
// console.log('HIDE');
|
54655
|
+
|
54656
|
+
// clear events
|
54657
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
54658
|
+
if (this.builder.iframeDocument) {
|
54659
|
+
this.builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
54660
|
+
}
|
54661
|
+
this.builder.handleQuickAddClickOut_ = false;
|
54662
|
+
}
|
54663
|
+
};
|
54664
|
+
if (!this.builder.handleQuickAddClickOut_) {
|
54665
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
54666
|
+
if (this.builder.iframeDocument) {
|
54667
|
+
this.builder.doc.addEventListener('click', handleQuickAddClickOut);
|
54668
|
+
}
|
54669
|
+
this.builder.handleQuickAddClickOut_ = true;
|
54670
|
+
}
|
54480
54671
|
});
|
54481
54672
|
}
|
54482
54673
|
}
|
@@ -54739,7 +54930,7 @@ class ColumnTool {
|
|
54739
54930
|
${this.builder.opts.otherSelectIcon}
|
54740
54931
|
</button>
|
54741
54932
|
|
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;">
|
54933
|
+
<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
54934
|
<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
54935
|
<input id="hidRefId4" name="hidRefId" type="hidden" value="">
|
54745
54936
|
<svg class="is-icon-flex" style="width:18px;height:18px;"><use xlink:href="#ion-ios-cloud-upload-outline"></use></svg>
|
@@ -55115,6 +55306,11 @@ class ColumnTool {
|
|
55115
55306
|
// Open Column Settings
|
55116
55307
|
elm = columnMore.querySelector('.cell-settings');
|
55117
55308
|
if (elm) dom.addEventListener(elm, 'click', () => {
|
55309
|
+
if (this.builder.controlPanel) {
|
55310
|
+
this.builder.controlpanel.select('column', true);
|
55311
|
+
util.hidePop(this.columnMore);
|
55312
|
+
return;
|
55313
|
+
}
|
55118
55314
|
let cell = util.cellSelected();
|
55119
55315
|
if (!cell) return;
|
55120
55316
|
this.readCellStyles(cell);
|
@@ -55514,6 +55710,8 @@ class ColumnTool {
|
|
55514
55710
|
cell.removeAttribute('data-scale');
|
55515
55711
|
};
|
55516
55712
|
inpImageHorSlider.onchange = () => {
|
55713
|
+
if (this.builder.win.adjustBgPos) this.builder.win.adjustBgPos(); // adjustBgPos() from box/flex.js
|
55714
|
+
|
55517
55715
|
//Trigger Change event
|
55518
55716
|
this.builder.opts.onChange();
|
55519
55717
|
};
|
@@ -55593,6 +55791,8 @@ class ColumnTool {
|
|
55593
55791
|
cell.removeAttribute('data-scale');
|
55594
55792
|
};
|
55595
55793
|
inpImageVertSlider.onchange = () => {
|
55794
|
+
if (this.builder.win.adjustBgPos) this.builder.win.adjustBgPos(); // adjustBgPos() from box/flex.js
|
55795
|
+
|
55596
55796
|
//Trigger Change event
|
55597
55797
|
this.builder.opts.onChange();
|
55598
55798
|
};
|
@@ -57135,144 +57335,28 @@ class ColumnTool {
|
|
57135
57335
|
}
|
57136
57336
|
}
|
57137
57337
|
click(col) {
|
57138
|
-
const dom = this.dom;
|
57139
|
-
|
57140
|
-
//---- New Col Tool ----
|
57141
57338
|
this.columnTool = col.parentNode.querySelector('.is-col-tool');
|
57142
57339
|
this.columnTool.style.left = col.offsetLeft + 'px';
|
57143
57340
|
this.columnTool.style.top = col.offsetTop + 'px';
|
57144
|
-
|
57145
|
-
|
57146
|
-
const
|
57147
|
-
|
57148
|
-
let nogrid = dom.parentsHasAttribute(col, 'nogrid');
|
57341
|
+
const btnAdd = this.columnTool.querySelector('.cell-add');
|
57342
|
+
const btnRemove = this.columnTool.querySelector('.cell-remove');
|
57343
|
+
const btnMore = this.columnTool.querySelector('.cell-more');
|
57344
|
+
let nogrid = col.closest('[nogrid]');
|
57149
57345
|
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');
|
57346
|
+
btnAdd.style.display = 'none';
|
57347
|
+
btnRemove.style.display = 'none';
|
57348
|
+
btnAdd.setAttribute('disabled', 'disabled');
|
57349
|
+
btnRemove.setAttribute('disabled', 'disabled');
|
57170
57350
|
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');
|
57351
|
+
btnMore.style.display = 'none';
|
57352
|
+
btnMore.setAttribute('disabled', 'disabled');
|
57175
57353
|
}
|
57176
57354
|
} 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
|
-
*/
|
57355
|
+
btnAdd.style.display = '';
|
57356
|
+
btnRemove.style.display = '';
|
57357
|
+
btnAdd.removeAttribute('disabled');
|
57358
|
+
btnRemove.removeAttribute('disabled');
|
57274
57359
|
}
|
57275
|
-
|
57276
57360
|
let row = col.parentNode;
|
57277
57361
|
|
57278
57362
|
//data-protected
|
@@ -57285,42 +57369,22 @@ class ColumnTool {
|
|
57285
57369
|
rowaddtool.style.display = 'none';
|
57286
57370
|
}
|
57287
57371
|
} 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
57372
|
this.columnTool.style.display = '';
|
57295
57373
|
//check columnTool buttons if need to show or hide
|
57296
|
-
let _protected =
|
57374
|
+
let _protected = col.closest('[data-protected]');
|
57297
57375
|
if (_protected) {
|
57298
|
-
|
57299
|
-
|
57300
|
-
|
57376
|
+
btnAdd.style.display = 'none';
|
57377
|
+
btnRemove.style.display = 'none';
|
57378
|
+
btnMore.style.display = 'none';
|
57301
57379
|
} else {
|
57302
|
-
|
57303
|
-
|
57304
|
-
|
57380
|
+
btnAdd.style.display = '';
|
57381
|
+
btnRemove.style.display = '';
|
57382
|
+
btnMore.style.display = '';
|
57305
57383
|
}
|
57306
57384
|
}
|
57307
|
-
|
57308
|
-
// Column Lock will hide Add & Remove column
|
57309
57385
|
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 = '';
|
57386
|
+
btnAdd.style.display = 'none';
|
57387
|
+
btnRemove.style.display = 'none';
|
57324
57388
|
}
|
57325
57389
|
}
|
57326
57390
|
}
|
@@ -62246,8 +62310,10 @@ class ElementTool {
|
|
62246
62310
|
this.builderStuff = builderStuff;
|
62247
62311
|
const dom = this.builder.dom;
|
62248
62312
|
this.dom = dom;
|
62249
|
-
|
62250
|
-
|
62313
|
+
if (!this.builder.controlPanel) {
|
62314
|
+
const elementPanel = new ElementPanel(builder);
|
62315
|
+
this.elementPanel = elementPanel;
|
62316
|
+
}
|
62251
62317
|
let elementTool = builderStuff.querySelector('.is-element-tool');
|
62252
62318
|
let elementMore = builderStuff.querySelector('.elmmore');
|
62253
62319
|
if (!elementTool) {
|
@@ -62333,7 +62399,35 @@ class ElementTool {
|
|
62333
62399
|
dom.addClass(quickadd, 'center');
|
62334
62400
|
}
|
62335
62401
|
quickadd.setAttribute('data-mode', 'elm');
|
62336
|
-
|
62402
|
+
|
62403
|
+
//handleQuickAddClickOut
|
62404
|
+
const handleQuickAddClickOut = e => {
|
62405
|
+
// console.log('handleQuickAddClickOut');
|
62406
|
+
let elm = e.target;
|
62407
|
+
if (!elm) return;
|
62408
|
+
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')) {
|
62409
|
+
// click outside
|
62410
|
+
|
62411
|
+
// hide
|
62412
|
+
const quickadd = builderStuff.querySelector('.quickadd');
|
62413
|
+
util.hidePop(quickadd);
|
62414
|
+
// console.log('HIDE');
|
62415
|
+
|
62416
|
+
// clear events
|
62417
|
+
document.removeEventListener('click', handleQuickAddClickOut);
|
62418
|
+
if (this.builder.iframeDocument) {
|
62419
|
+
this.builder.doc.removeEventListener('click', handleQuickAddClickOut);
|
62420
|
+
}
|
62421
|
+
this.builder.handleQuickAddClickOut_ = false;
|
62422
|
+
}
|
62423
|
+
};
|
62424
|
+
if (!this.builder.handleQuickAddClickOut_) {
|
62425
|
+
document.addEventListener('click', handleQuickAddClickOut);
|
62426
|
+
if (this.builder.iframeDocument) {
|
62427
|
+
this.builder.doc.addEventListener('click', handleQuickAddClickOut);
|
62428
|
+
}
|
62429
|
+
this.builder.handleQuickAddClickOut_ = true;
|
62430
|
+
}
|
62337
62431
|
});
|
62338
62432
|
const elmRemove = elementTool.querySelector('.elm-remove');
|
62339
62433
|
dom.addEventListener(elmRemove, 'click', () => {
|
@@ -62558,15 +62652,21 @@ class ElementTool {
|
|
62558
62652
|
|
62559
62653
|
const elmSettings = elementTool.querySelector('.elm-settings');
|
62560
62654
|
if (elmSettings) dom.addEventListener(elmSettings, 'click', () => {
|
62561
|
-
// elementMore.style.display = '';
|
62562
62655
|
util.hidePop(elementMore);
|
62563
|
-
this.
|
62656
|
+
if (this.builder.controlPanel) {
|
62657
|
+
this.builder.controlpanel.objDialogElement.open();
|
62658
|
+
} else {
|
62659
|
+
this.elementPanel.showPanel();
|
62660
|
+
}
|
62564
62661
|
});
|
62565
62662
|
const elmSettings2 = elementMore.querySelector('.elm-settings');
|
62566
62663
|
if (elmSettings2) dom.addEventListener(elmSettings2, 'click', () => {
|
62567
|
-
// elementMore.style.display = '';
|
62568
62664
|
util.hidePop(elementMore);
|
62569
|
-
this.
|
62665
|
+
if (this.builder.controlPanel) {
|
62666
|
+
this.builder.controlpanel.objDialogElement.open();
|
62667
|
+
} else {
|
62668
|
+
this.elementPanel.showPanel();
|
62669
|
+
}
|
62570
62670
|
});
|
62571
62671
|
|
62572
62672
|
// document.addEventListener('mousedown', (e) => {
|
@@ -62757,7 +62857,9 @@ class ElementTool {
|
|
62757
62857
|
// console.log(this.builder.inspectedElement);
|
62758
62858
|
// console.log(this.builder.activeElement);
|
62759
62859
|
|
62760
|
-
this.
|
62860
|
+
if (!this.builder.controlPanel) {
|
62861
|
+
this.elementPanel.click(e);
|
62862
|
+
}
|
62761
62863
|
}
|
62762
62864
|
refresh() {
|
62763
62865
|
if (this.builder.activeElement) {
|
@@ -62821,6 +62923,7 @@ class ElementTool {
|
|
62821
62923
|
pos() {
|
62822
62924
|
let elementTool = this.elementTool;
|
62823
62925
|
let elm = this.builder.activeElement;
|
62926
|
+
if (!elm) return;
|
62824
62927
|
if (elm.closest('.is-dock')) return;
|
62825
62928
|
let top, left;
|
62826
62929
|
if (!this.builder.iframe) {
|
@@ -65147,7 +65250,7 @@ class Rte {
|
|
65147
65250
|
let scale = val / 100;
|
65148
65251
|
this.builder.onZoomEnd(scale);
|
65149
65252
|
}
|
65150
|
-
},
|
65253
|
+
}, 350);
|
65151
65254
|
};
|
65152
65255
|
|
65153
65256
|
// Zoom Modal
|
@@ -66264,7 +66367,7 @@ class Rte {
|
|
66264
66367
|
// -----------------------------
|
66265
66368
|
|
66266
66369
|
// Click anywhere will hide Column tool
|
66267
|
-
this.builder.doc.addEventListener('click', this.builder.doRteClick = e => {
|
66370
|
+
if (!this.builder.controlPanel) this.builder.doc.addEventListener('click', this.builder.doRteClick = e => {
|
66268
66371
|
e = e || window.event;
|
66269
66372
|
var target = e.target || e.srcElement;
|
66270
66373
|
if (!this.builderStuff) return; // in case the builder is destroyed
|
@@ -66344,7 +66447,7 @@ class Rte {
|
|
66344
66447
|
if (this.builder.toolbarDisplay !== 'auto') {
|
66345
66448
|
this.showDefaultToolbar(); // first time
|
66346
66449
|
}
|
66347
|
-
}
|
66450
|
+
} //contructor
|
66348
66451
|
|
66349
66452
|
zoomStart() {
|
66350
66453
|
if (this.builder.onZoomStart) {
|
@@ -67208,6 +67311,7 @@ class Rte {
|
|
67208
67311
|
});
|
67209
67312
|
}
|
67210
67313
|
showDefaultToolbar() {
|
67314
|
+
if (this.builder.controlPanel) return;
|
67211
67315
|
this.elementRteTool.style.display = 'flex';
|
67212
67316
|
this.rteTool.style.display = 'none';
|
67213
67317
|
this.hideAlignButtons();
|
@@ -70295,7 +70399,8 @@ class Tabs {
|
|
70295
70399
|
const content = document.querySelector('#' + id);
|
70296
70400
|
content.style.display = 'flex';
|
70297
70401
|
dom$1.addClass(content, 'active');
|
70298
|
-
document.querySelector('.is-tabs-more')
|
70402
|
+
const tabMore = document.querySelector('.is-tabs-more');
|
70403
|
+
if (tabMore) tabMore.style.display = 'none';
|
70299
70404
|
|
70300
70405
|
// Close all dropdown
|
70301
70406
|
closeAllDropdowns();
|
@@ -70929,7 +71034,7 @@ class Resize {
|
|
70929
71034
|
let moduleWidth = item.offsetWidth / row.offsetWidth * 100;
|
70930
71035
|
item.style.width = moduleWidth + '%';
|
70931
71036
|
item.style.flex = 'none';
|
70932
|
-
this.builder.util.refreshModuleLayout(item);
|
71037
|
+
if (!item.hasAttribute('data-norefresh')) this.builder.util.refreshModuleLayout(item);
|
70933
71038
|
}
|
70934
71039
|
});
|
70935
71040
|
}
|
@@ -70997,7 +71102,8 @@ class ContentStuff {
|
|
70997
71102
|
<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
71103
|
</div>
|
70999
71104
|
<div class="is-tool is-module-tool">
|
71000
|
-
<button title="${util.out('
|
71105
|
+
<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>
|
71106
|
+
<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
71107
|
</div>
|
71002
71108
|
<div id="divSpacerTool" class="is-tool is-spacer-tool">
|
71003
71109
|
<button title="${util.out('Decrease')}" data-value="-"><svg class="is-icon-flex"><use xlink:href="#ion-ios-minus-empty"></use></svg></button>
|
@@ -71137,6 +71243,11 @@ class ContentStuff {
|
|
71137
71243
|
<path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
|
71138
71244
|
<path d="M20.2 20.2l1.8 1.8"></path>
|
71139
71245
|
</symbol>
|
71246
|
+
<symbol id="icon-reload" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
71247
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
71248
|
+
<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>
|
71249
|
+
<path d="M20 4v5h-5"></path>
|
71250
|
+
</symbol>
|
71140
71251
|
</defs>
|
71141
71252
|
</svg>
|
71142
71253
|
|
@@ -71870,14 +71981,6 @@ class ContentStuff {
|
|
71870
71981
|
right: auto;
|
71871
71982
|
left: -40px;
|
71872
71983
|
}
|
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
71984
|
.is-builder[rowoutline] .row-outline {
|
71882
71985
|
outline: none;
|
71883
71986
|
}
|
@@ -71950,21 +72053,6 @@ class ContentStuff {
|
|
71950
72053
|
}
|
71951
72054
|
|
71952
72055
|
|
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
72056
|
/* Prevent css framework overide (Materialize) */
|
71969
72057
|
.is-ui [type="checkbox"]:not(:checked), .is-ui [type="checkbox"]:checked {
|
71970
72058
|
position: unset !important;
|
@@ -72014,6 +72102,20 @@ class ContentStuff {
|
|
72014
72102
|
}
|
72015
72103
|
|
72016
72104
|
|
72105
|
+
* {
|
72106
|
+
scrollbar-width: thin;
|
72107
|
+
scrollbar-color: rgba(0, 0, 0, 0.2) auto;
|
72108
|
+
}
|
72109
|
+
*::-webkit-scrollbar {
|
72110
|
+
width: 12px;
|
72111
|
+
}
|
72112
|
+
*::-webkit-scrollbar-track {
|
72113
|
+
background: rgba(200, 200, 200, 0.2);
|
72114
|
+
}
|
72115
|
+
*::-webkit-scrollbar-thumb {
|
72116
|
+
background-color:rgba(0, 0, 0, 0.2);
|
72117
|
+
}
|
72118
|
+
|
72017
72119
|
${this.builder.simpleEditingBreakpoint ? `
|
72018
72120
|
|
72019
72121
|
@media all and (max-width: ${this.builder.simpleEditingBreakpoint}) {
|
@@ -74004,7 +74106,7 @@ class Dictation {
|
|
74004
74106
|
</div>
|
74005
74107
|
</div>
|
74006
74108
|
<textarea class="inp-command"></textarea>
|
74007
|
-
<div style="display:flex;
|
74109
|
+
<div style="display:flex;">
|
74008
74110
|
<button title="${util.out('Settings')}" class="cmd-command-config classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
|
74009
74111
|
<svg class="is-icon-flex" style="width:15px;height:15px;flex:none;"><use xlink:href="#icon-settings"></use></svg>
|
74010
74112
|
</button>
|
@@ -74014,7 +74116,7 @@ class Dictation {
|
|
74014
74116
|
<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
74117
|
<svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-message-search"></use></svg>
|
74016
74118
|
</button>
|
74017
|
-
<button title="${util.out('Clear')}" class="cmd-clear-command classic-secondary" style="
|
74119
|
+
<button title="${util.out('Clear')}" class="cmd-clear-command classic-secondary" style="width:40px;height:43px;flex:none;padding:0;outline-offset:-2px;">
|
74018
74120
|
<svg class="is-icon-flex" style="width: 18px; height: 18px;"><use xlink:href="#icon-eraser"></use></svg>
|
74019
74121
|
</button>
|
74020
74122
|
|
@@ -75008,34 +75110,7 @@ class Similarity {
|
|
75008
75110
|
}
|
75009
75111
|
}
|
75010
75112
|
|
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
|
-
}
|
75113
|
+
// import ControlPanel from './controlpanel.js';
|
75039
75114
|
|
75040
75115
|
class ContentBuilder {
|
75041
75116
|
constructor(opts = {}) {
|
@@ -76096,11 +76171,31 @@ class ContentBuilder {
|
|
76096
76171
|
this.dom.appendChild(document.body, builderStuff);
|
76097
76172
|
}
|
76098
76173
|
this.builderStuff = builderStuff;
|
76099
|
-
this.controlpanel = new ControlPanel(this);
|
76100
76174
|
prepareSvgIcons(this); // Prepare icons (embed svg definitions for icons)
|
76101
76175
|
|
76102
|
-
this.preferences = new Preferences(this); // this will also call setUIColor() and getUIStyles() for theme
|
76103
|
-
|
76176
|
+
if (!this.controlPanel) this.preferences = new Preferences(this); // this will also call setUIColor() and getUIStyles() for theme
|
76177
|
+
else {
|
76178
|
+
if (localStorage.getItem('_theme') != null) {
|
76179
|
+
const n = localStorage.getItem('_theme');
|
76180
|
+
this.themeIndex = n;
|
76181
|
+
if (this.themes) {
|
76182
|
+
if (this.themes.length > 0) {
|
76183
|
+
const item = this.themes[n];
|
76184
|
+
if (item) {
|
76185
|
+
this.setUIColor(item[1], item[2]);
|
76186
|
+
this.renderIframeLater = true;
|
76187
|
+
}
|
76188
|
+
}
|
76189
|
+
}
|
76190
|
+
} else {
|
76191
|
+
this.setUIColor('', '');
|
76192
|
+
this.renderIframeLater = true;
|
76193
|
+
}
|
76194
|
+
if (!this.renderIframeLater) {
|
76195
|
+
// means setUIColor() not called, so we need to call getUIStyles() manually
|
76196
|
+
util.getUIStyles();
|
76197
|
+
}
|
76198
|
+
}
|
76104
76199
|
renderGridEditor(this); // Render Grid Editor
|
76105
76200
|
|
76106
76201
|
// Check if preview
|
@@ -76221,55 +76316,36 @@ class ContentBuilder {
|
|
76221
76316
|
});
|
76222
76317
|
}
|
76223
76318
|
|
76319
|
+
// if(!this.isContentBox && this.controlPanel) {
|
76320
|
+
// this.controlpanel = new ControlPanel(this);
|
76321
|
+
// }
|
76322
|
+
|
76224
76323
|
// Add document Click event
|
76225
76324
|
document.addEventListener('click', this.doDocumentClick = e => {
|
76226
|
-
|
76227
|
-
let target = e.target || e.srcElement;
|
76325
|
+
let target = e.target;
|
76228
76326
|
if (!target) return;
|
76229
76327
|
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;
|
76328
|
+
if (target.parentNode && target.parentNode.classList) rowClicked = target.parentNode.classList.contains('is-builder');
|
76329
|
+
let containerClicked = target.classList.contains('is-builder');
|
76330
|
+
let a = target.closest('.is-builder');
|
76331
|
+
let p = target.closest('.is-subblock');
|
76332
|
+
let b = target.closest('.is-modal') || target.closest('.keep-selection');
|
76333
|
+
let c = target.closest('.is-side') || target.closest('.is-sidebar');
|
76334
|
+
let d = target.closest('.is-pop');
|
76335
|
+
let f = target.closest('.is-tool');
|
76336
|
+
let g = target.closest('.is-rte-tool') || target.closest('.is-elementrte-tool');
|
76337
|
+
let h = target.closest('.is-rte-pop');
|
76338
|
+
let i = target.closest('.row-add-initial');
|
76339
|
+
let j = target.closest('.sl-wrapper') || target.closest('.sl-overlay') || target.closest('.sl-close');
|
76340
|
+
let k = target.closest('.is-selectbox') || target.closest('.is-selectbox-options');
|
76246
76341
|
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
|
-
}
|
76342
|
+
if (this.opts.specialElementClasses) {
|
76343
|
+
for (let i = 0; i < this.opts.specialElementClasses.length; i++) {
|
76344
|
+
isSpecialElement = target.closest('.' + this.opts.specialElementClasses[i]);
|
76267
76345
|
}
|
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
76346
|
}
|
76347
|
+
let o;
|
76348
|
+
if (this.preserveSelection) o = true;
|
76273
76349
|
|
76274
76350
|
// dropdown
|
76275
76351
|
if (!k) {
|
@@ -76278,45 +76354,40 @@ class ContentBuilder {
|
|
76278
76354
|
dropdown.style.display = 'none';
|
76279
76355
|
});
|
76280
76356
|
}
|
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');
|
76357
|
+
const clrPicker = document.querySelector('.clr-picker.clr-open');
|
76358
|
+
// if(clrPicker) return;
|
76294
76359
|
|
76295
76360
|
// Image Resizer
|
76361
|
+
let n = target.closest('#divImageResizer');
|
76362
|
+
if (n) return;
|
76363
|
+
|
76364
|
+
/*
|
76365
|
+
let m = target.closest('#divImageTool');
|
76366
|
+
|
76296
76367
|
let resizeProcess = false;
|
76297
76368
|
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
|
-
}
|
76369
|
+
if(imageResizer) if(imageResizer.getAttribute('data-resized')==='1') resizeProcess = true;
|
76370
|
+
if(resizeProcess) return; // to prevent unwanted click/clearActiveCell during image resize end.
|
76371
|
+
if(!(b||j||m||n||target.tagName.toLowerCase() === 'img')) {
|
76372
|
+
let imageTool = document.querySelector('#divImageTool');
|
76373
|
+
imageTool.style.display = '';
|
76374
|
+
// this.activeImage = null; // Commented => Additional (to prevent lost focus)
|
76375
|
+
let imageResizer = document.querySelector('#divImageResizer');
|
76376
|
+
imageResizer.style.display = 'none';
|
76377
|
+
|
76378
|
+
// moveable
|
76379
|
+
imageResizer.style.top = '-10px';
|
76380
|
+
imageResizer.style.left = '-10px';
|
76381
|
+
imageResizer.style.width = '1px';
|
76382
|
+
imageResizer.style.height = '1px';
|
76383
|
+
if(this.moveable) {
|
76384
|
+
this.moveable.updateRect();
|
76385
|
+
document.querySelector('.moveable-control-box').style.display = 'none';
|
76386
|
+
}
|
76318
76387
|
}
|
76319
|
-
|
76388
|
+
*/
|
76389
|
+
|
76390
|
+
if (!(a || p || b || c || d || f || g || h || i || j || o || isSpecialElement || clrPicker) || rowClicked && !i || containerClicked) {
|
76320
76391
|
// Click anywhere but is not inside builder area, modal, popup, tool or rte, then clear row/column (cell) selection
|
76321
76392
|
|
76322
76393
|
if (!this.dom.getSelected()) {
|
@@ -76327,28 +76398,40 @@ class ContentBuilder {
|
|
76327
76398
|
|
76328
76399
|
util.clearActiveCell();
|
76329
76400
|
util.clearControls();
|
76330
|
-
if (this.toolbarDisplay !== 'auto') {
|
76401
|
+
if (!this.controlPanel) if (this.toolbarDisplay !== 'auto') {
|
76331
76402
|
this.rte.showDefaultToolbar();
|
76332
76403
|
}
|
76333
76404
|
if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
|
76405
|
+
|
76406
|
+
// if(this.settings.onPageContentClick) this.settings.onPageContentClick(e);
|
76334
76407
|
}
|
76335
76408
|
}
|
76409
|
+
|
76410
|
+
/*
|
76336
76411
|
this.element.hyperlink.buttonEditor.hide();
|
76412
|
+
*/
|
76337
76413
|
}
|
76338
76414
|
|
76415
|
+
/*
|
76339
76416
|
// Button Modal
|
76340
|
-
if
|
76341
|
-
|
76417
|
+
if(!this.activeLinkButton && !this.activeButton &&
|
76418
|
+
!target.closest('.buttoneditor') && !target.closest('.link-button-edit') &&
|
76419
|
+
!target.closest('.is-modal')) {
|
76420
|
+
this.element.hyperlink.buttonEditor.hide();
|
76342
76421
|
}
|
76422
|
+
*/
|
76343
76423
|
|
76424
|
+
/*
|
76344
76425
|
// Backward compatibility (for examples)
|
76345
|
-
if
|
76346
|
-
|
76347
|
-
|
76348
|
-
|
76349
|
-
|
76426
|
+
if(!d && !this.dom.parentsHasId(target, '_cbhtml')) {
|
76427
|
+
const pops = document.querySelectorAll('.is-pop');
|
76428
|
+
Array.prototype.forEach.call(pops, (pop) => {
|
76429
|
+
if(!this.dom.parentsHasId(pop, '_cbhtml')) pop.style.display = '';
|
76430
|
+
});
|
76350
76431
|
}
|
76432
|
+
*/
|
76351
76433
|
});
|
76434
|
+
|
76352
76435
|
if (this.iframe) {
|
76353
76436
|
this.doc.addEventListener('click', this.doDocumentClick);
|
76354
76437
|
}
|
@@ -76651,11 +76734,14 @@ class ContentBuilder {
|
|
76651
76734
|
// let outlineStyle = localStorage.getItem('_outlinestyle');
|
76652
76735
|
// this.preferences.setOutlineStyle(outlineStyle);
|
76653
76736
|
// }
|
76654
|
-
this.preferences.initBuilder(builder);
|
76737
|
+
if (this.preferences) this.preferences.initBuilder(builder);
|
76655
76738
|
|
76656
76739
|
// Apply behavior on each row
|
76657
76740
|
const rows = this.dom.elementChildren(builder);
|
76658
76741
|
rows.forEach(row => {
|
76742
|
+
// The saveForUndo also saves sortable class when start dragging. If Undo is performed, the classes are returned. Cleanup the classes here.
|
76743
|
+
row.classList.remove('sortable-ghost');
|
76744
|
+
row.classList.remove('sortable-chosen');
|
76659
76745
|
if (this.dom.hasClass(row, 'row-add-initial')) return;
|
76660
76746
|
|
76661
76747
|
// 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 +76829,11 @@ class ContentBuilder {
|
|
76743
76829
|
// col.addEventListener('focus', this.handleCellFocus.bind(this, col));
|
76744
76830
|
|
76745
76831
|
// ON PASTE
|
76746
|
-
col.addEventListener('paste', this.handleCellPaste.bind(this));
|
76832
|
+
// col.addEventListener('paste', this.handleCellPaste.bind(this));
|
76833
|
+
col.addEventListener('paste', e => {
|
76834
|
+
const clipboardData = (e.clipboardData || window.clipboardData).getData('text');
|
76835
|
+
this.handleCellPaste(clipboardData);
|
76836
|
+
});
|
76747
76837
|
col.setAttribute('data-click', true);
|
76748
76838
|
}
|
76749
76839
|
});
|
@@ -76816,8 +76906,23 @@ class ContentBuilder {
|
|
76816
76906
|
this.util.checkEmpty(); // for multiple instances check
|
76817
76907
|
|
76818
76908
|
if (this.sortableOnPage) this.sortableOnPage.destroy(); // enable drop as section (ContentBox)
|
76819
|
-
},
|
76820
76909
|
|
76910
|
+
if (this.controlPanel) {
|
76911
|
+
// && document.body.classList.contains('controlpanel') (already opens)
|
76912
|
+
this.controlpanel.getActive();
|
76913
|
+
this.controlpanel.select('column');
|
76914
|
+
setTimeout(() => {
|
76915
|
+
// Hide element tool
|
76916
|
+
this.elmTool.hide();
|
76917
|
+
}, 600);
|
76918
|
+
}
|
76919
|
+
|
76920
|
+
//Trigger Change event
|
76921
|
+
this.opts.onChange();
|
76922
|
+
|
76923
|
+
//Trigger Render event
|
76924
|
+
this.opts.onRender();
|
76925
|
+
},
|
76821
76926
|
onAdd: evt => {
|
76822
76927
|
var itemEl = evt.item;
|
76823
76928
|
if (itemEl.getAttribute('data-id')) {
|
@@ -77291,6 +77396,8 @@ class ContentBuilder {
|
|
77291
77396
|
ok = true;
|
77292
77397
|
} else if (targetAssetType === 'media' && (ext === 'mp4' || ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif' || ext === 'webm' || ext === 'webp')) {
|
77293
77398
|
ok = true;
|
77399
|
+
} else if (targetAssetType === 'all') {
|
77400
|
+
ok = true;
|
77294
77401
|
} else {
|
77295
77402
|
if (targetAssetType === 'image') alert(out('Please select an image file.'));
|
77296
77403
|
if (targetAssetType === 'video') alert(out('Please select an mp4 file.'));
|
@@ -77771,6 +77878,18 @@ class ContentBuilder {
|
|
77771
77878
|
}
|
77772
77879
|
addButton(pluginName, html, selector, exec) {
|
77773
77880
|
if (!this.builderStuff) return;
|
77881
|
+
if (this.controlPanel && this.controlpanel.controlPanel) {
|
77882
|
+
const popMore = this.controlpanel.controlPanel.querySelector('.panel-pop.more');
|
77883
|
+
const pluginArea = popMore.querySelector('div.plugins');
|
77884
|
+
pluginArea.insertAdjacentHTML('beforeend', html);
|
77885
|
+
const btn = popMore.querySelector(selector);
|
77886
|
+
btn.addEventListener('click', e => {
|
77887
|
+
exec(e);
|
77888
|
+
});
|
77889
|
+
const label = popMore.querySelector('.label-plugins');
|
77890
|
+
label.style.display = ''; //show label
|
77891
|
+
}
|
77892
|
+
|
77774
77893
|
const rteTool = this.builderStuff.querySelector('.is-rte-tool');
|
77775
77894
|
const rteMoreOptions = this.builderStuff.querySelector('.rte-more-options');
|
77776
77895
|
var bUseMore = false;
|
@@ -77998,16 +78117,16 @@ class ContentBuilder {
|
|
77998
78117
|
htmlutil.view('full', area);
|
77999
78118
|
}
|
78000
78119
|
viewPreferences() {
|
78001
|
-
this.preferences.view();
|
78120
|
+
if (this.preferences) this.preferences.view();
|
78002
78121
|
}
|
78003
78122
|
viewConfig() {
|
78004
78123
|
//backward
|
78005
|
-
this.preferences.view();
|
78124
|
+
if (this.preferences) this.preferences.view();
|
78006
78125
|
}
|
78007
78126
|
viewZoom() {
|
78008
78127
|
this.rte.viewZoom();
|
78009
78128
|
}
|
78010
|
-
loadSnippets(snippetFile) {
|
78129
|
+
loadSnippets(snippetFile, snippetOpen) {
|
78011
78130
|
if (this.preview) return;
|
78012
78131
|
if (this.opts.snippetList === '#divSnippetList') {
|
78013
78132
|
let snippetPanel = document.querySelector(this.opts.snippetList);
|
@@ -78025,7 +78144,7 @@ class ContentBuilder {
|
|
78025
78144
|
this.opts.snippetPath = window._snippets_path;
|
78026
78145
|
}
|
78027
78146
|
if (this.opts.snippetJSON.snippets.length > 0) {
|
78028
|
-
renderSnippetPanel(this); // Render Snippet Panel
|
78147
|
+
renderSnippetPanel(this, snippetOpen); // Render Snippet Panel
|
78029
78148
|
}
|
78030
78149
|
};
|
78031
78150
|
|
@@ -78203,9 +78322,6 @@ class ContentBuilder {
|
|
78203
78322
|
// Font Family
|
78204
78323
|
let iframeRte = this.rte.rteFontFamilyOptions.querySelector('iframe');
|
78205
78324
|
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
78325
|
|
78210
78326
|
// Icons
|
78211
78327
|
let iframeIcons = this.rte.rteIconOptions.querySelector('iframe');
|
@@ -78221,16 +78337,21 @@ class ContentBuilder {
|
|
78221
78337
|
} else {
|
78222
78338
|
this.util.refreshFontFamilyStyle1();
|
78223
78339
|
}
|
78224
|
-
|
78225
|
-
|
78226
|
-
|
78227
|
-
|
78340
|
+
const fontModal = this.builderStuff.querySelector('.is-modal.pickfontfamily');
|
78341
|
+
if (fontModal) {
|
78342
|
+
let iframePanel = fontModal.querySelector('iframe');
|
78343
|
+
let doc2 = iframePanel.contentWindow.document;
|
78344
|
+
if (doc2.body.innerHTML === '') {
|
78345
|
+
doc2.open();
|
78346
|
+
if (!this.opts.emailMode) {
|
78347
|
+
doc2.write(util.getFontFamilyHTML(true));
|
78348
|
+
} else {
|
78349
|
+
doc2.write(util.getFontFamilyEmail(true));
|
78350
|
+
}
|
78351
|
+
doc2.close();
|
78228
78352
|
} else {
|
78229
|
-
|
78353
|
+
this.util.refreshFontFamilyStyle2();
|
78230
78354
|
}
|
78231
|
-
doc2.close();
|
78232
|
-
} else {
|
78233
|
-
this.util.refreshFontFamilyStyle2();
|
78234
78355
|
}
|
78235
78356
|
if (doc3.body.innerHTML === '') {
|
78236
78357
|
doc3.open();
|
@@ -78502,43 +78623,76 @@ class ContentBuilder {
|
|
78502
78623
|
util.clearActiveCell();
|
78503
78624
|
this.activeCol = col;
|
78504
78625
|
let elm = e.target;
|
78505
|
-
|
78506
|
-
let row = col.parentNode;
|
78507
|
-
|
78626
|
+
col.classList.add('cell-active');
|
78627
|
+
let row = col.parentNode;
|
78628
|
+
row.classList.add('row-active');
|
78508
78629
|
const builders = this.doc.querySelectorAll(this.opts.container);
|
78509
|
-
|
78510
|
-
|
78630
|
+
builders.forEach(builder => {
|
78631
|
+
builder.classList.remove('builder-active');
|
78511
78632
|
});
|
78512
|
-
|
78513
|
-
this.
|
78633
|
+
row.parentNode.classList.add('builder-active');
|
78634
|
+
this.doc.body.classList.add('content-edit');
|
78514
78635
|
if (row.childElementCount - 2 === 1) ; else {
|
78515
|
-
|
78636
|
+
row.classList.add('row-outline');
|
78516
78637
|
}
|
78517
78638
|
|
78518
|
-
//this.getState();
|
78519
|
-
|
78520
78639
|
// Call onContentClick to indicate click on editable content (eg. for plugin usage)
|
78521
|
-
// if (!col.hasAttribute('data-html')) {
|
78522
78640
|
if (this.opts.onContentClick) this.opts.onContentClick(e);
|
78523
|
-
// }
|
78524
|
-
|
78525
78641
|
this.element.click(col, e);
|
78526
78642
|
this.colTool.click(col);
|
78527
78643
|
this.elmTool.click(col, e);
|
78528
|
-
this.rte.click(col, e);
|
78644
|
+
if (!this.controlPanel) this.rte.click(col, e);else this.util.saveSelection(); // important (eg. for create/edit link)
|
78645
|
+
|
78646
|
+
/*
|
78647
|
+
// TODO: move to grideditor.js
|
78529
78648
|
// Grid Editor Status
|
78530
78649
|
// On/off lock button
|
78531
78650
|
const grideditor = document.querySelector('.grideditor.active');
|
78532
|
-
if
|
78533
|
-
|
78534
|
-
|
78535
|
-
|
78536
|
-
|
78537
|
-
|
78651
|
+
if(grideditor) {
|
78652
|
+
const btnCellLocking = grideditor.querySelector('.cell-locking');
|
78653
|
+
if(col.hasAttribute('data-noedit')) {
|
78654
|
+
btnCellLocking.classList.add('on');
|
78655
|
+
} else {
|
78656
|
+
btnCellLocking.classList.remove('on');
|
78657
|
+
}
|
78658
|
+
}
|
78659
|
+
*/
|
78660
|
+
|
78661
|
+
// If column only has spacer, locked or unlocked,
|
78662
|
+
// the text should not be able to edit (cursor should not be able to be placed)
|
78663
|
+
// So, make the column uneditable (text) if only has a spacer.
|
78664
|
+
if (col.childElementCount === 1) {
|
78665
|
+
let elm = col.children[0];
|
78666
|
+
if (elm) if (this.dom.hasClass(elm, 'spacer')) {
|
78667
|
+
col.contentEditable = false;
|
78538
78668
|
}
|
78539
78669
|
}
|
78540
|
-
|
78541
|
-
|
78670
|
+
|
78671
|
+
// Show Lock Indicator
|
78672
|
+
this.colTool.showHideLockIndicator(col);
|
78673
|
+
if (this.opts.enableDragResize) {
|
78674
|
+
if (this.resize) {
|
78675
|
+
// console.log(this.resize);
|
78676
|
+
this.resize.destroy(); // destroy previous instance
|
78677
|
+
}
|
78678
|
+
|
78679
|
+
// Enable resizable on click
|
78680
|
+
if (!col.classList.contains('noresize')) {
|
78681
|
+
// Disable on mobile
|
78682
|
+
const viewportWidth = this.doc.body.clientWidth;
|
78683
|
+
if (viewportWidth > 768) {
|
78684
|
+
this.resize = new Resize(col, this);
|
78685
|
+
this.resize.enable();
|
78686
|
+
}
|
78687
|
+
}
|
78688
|
+
}
|
78689
|
+
if (this.settings.onSelectionChange) this.settings.onSelectionChange(e);
|
78690
|
+
|
78691
|
+
// if(this.settings.onPageContentClick) this.settings.onPageContentClick(e);
|
78692
|
+
|
78693
|
+
// Lightbox
|
78694
|
+
let link = elm.closest('a');
|
78695
|
+
if (link) {
|
78542
78696
|
if (col.hasAttribute('data-noedit') || col.hasAttribute('data-protected')) {
|
78543
78697
|
// Link & Lightbox click allowed only on locked column
|
78544
78698
|
|
@@ -78606,25 +78760,6 @@ class ContentBuilder {
|
|
78606
78760
|
// return false;
|
78607
78761
|
}
|
78608
78762
|
|
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
78763
|
// Extra: Check if last row, make sure the Row Add Tool visible
|
78629
78764
|
const tool = row.querySelector('.is-rowadd-tool');
|
78630
78765
|
const tollAddButton = tool.querySelector('button');
|
@@ -78647,23 +78782,6 @@ class ContentBuilder {
|
|
78647
78782
|
}
|
78648
78783
|
}
|
78649
78784
|
}
|
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
78785
|
}
|
78668
78786
|
handleCellKeypress(e) {
|
78669
78787
|
if (e.ctrlKey || e.metaKey) {
|
@@ -78712,10 +78830,7 @@ class ContentBuilder {
|
|
78712
78830
|
// });
|
78713
78831
|
// this.autoclean=true;
|
78714
78832
|
|
78715
|
-
if ((e.ctrlKey || e.metaKey) && e.which === 86)
|
78716
|
-
//CTRL-V
|
78717
|
-
this.handleCellPaste();
|
78718
|
-
}
|
78833
|
+
if ((e.ctrlKey || e.metaKey) && e.which === 86) ;
|
78719
78834
|
if (this.opts.elementSelection && !this.emailMode) {
|
78720
78835
|
if ((e.ctrlKey || e.metaKey) && e.which === 65) {
|
78721
78836
|
//CTRL-A
|
@@ -79171,7 +79286,7 @@ class ContentBuilder {
|
|
79171
79286
|
this.opts.onChange();
|
79172
79287
|
}, 2000);
|
79173
79288
|
}
|
79174
|
-
handleCellPaste() {
|
79289
|
+
handleCellPaste(clipboardData) {
|
79175
79290
|
this.uo.saveForUndo();
|
79176
79291
|
const util = this.util;
|
79177
79292
|
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 +79345,26 @@ class ContentBuilder {
|
|
79230
79345
|
}
|
79231
79346
|
if (!bPasteObject) {
|
79232
79347
|
if (this.opts.paste === 'text') {
|
79348
|
+
/*
|
79233
79349
|
let elms = contentword.querySelectorAll('p,h1,h2,h3,h4,h5,h6');
|
79234
|
-
Array.prototype.forEach.call(elms, elm => {
|
79235
|
-
|
79350
|
+
Array.prototype.forEach.call(elms, (elm) => {
|
79351
|
+
elm.innerHTML = elm.innerHTML + ' '; //add space ( )
|
79236
79352
|
});
|
79237
|
-
|
79238
|
-
// sPastedText = contentword.innerText;
|
79353
|
+
// sPastedText = contentword.innerText;
|
79239
79354
|
sPastedText = contentword.innerHTML;
|
79240
|
-
sPastedText = sPastedText.replace(/(<([^>]+)>)/ig,
|
79355
|
+
sPastedText = sPastedText.replace(/(<([^>]+)>)/ig,'<br>');
|
79241
79356
|
sPastedText = sPastedText.replace(/(<br\s*\/?>){3,}/gi, '<br>');
|
79242
|
-
if
|
79243
|
-
|
79357
|
+
if(sPastedText.indexOf('<br>')===0) {
|
79358
|
+
sPastedText = sPastedText.substring(4);
|
79244
79359
|
}
|
79245
|
-
if
|
79246
|
-
|
79360
|
+
if(sPastedText.substring(sPastedText.length-4)==='<br>'){
|
79361
|
+
sPastedText = sPastedText.substring(0, sPastedText.length-4);
|
79247
79362
|
}
|
79248
79363
|
sPastedText = sPastedText.trim();
|
79364
|
+
*/
|
79365
|
+
|
79366
|
+
sPastedText = clipboardData;
|
79367
|
+
// sPastedText = sPastedText.replace(/(?:\r\n|\r|\n)/g, '<br>');
|
79249
79368
|
} else {
|
79250
79369
|
sPastedText = contentword.innerHTML;
|
79251
79370
|
if (this.opts.paste === 'html') {
|
@@ -79574,7 +79693,8 @@ class ContentBuilder {
|
|
79574
79693
|
// </div>
|
79575
79694
|
// `;
|
79576
79695
|
itemEl.outerHTML = this.settings.sectionTemplate.replace('[%CONTENT%]', itemEl.outerHTML);
|
79577
|
-
|
79696
|
+
this.activeCol = null;
|
79697
|
+
if (this.opts.onBlockSectionAdd) this.opts.onBlockSectionAdd();
|
79578
79698
|
|
79579
79699
|
// //Trigger Change event
|
79580
79700
|
// this.opts.onChange();
|
@@ -79708,7 +79828,9 @@ class ContentBuilder {
|
|
79708
79828
|
}
|
79709
79829
|
// // After snippet has been added, re-apply behavior on builder areas
|
79710
79830
|
// this.applyBehaviorOn(builder);
|
79711
|
-
|
79831
|
+
|
79832
|
+
this.activeCol = null;
|
79833
|
+
if (this.opts.onBlockSectionAdd) this.opts.onBlockSectionAdd();
|
79712
79834
|
|
79713
79835
|
//Trigger Change event
|
79714
79836
|
this.opts.onChange();
|
@@ -79727,17 +79849,18 @@ class ContentBuilder {
|
|
79727
79849
|
}
|
79728
79850
|
}
|
79729
79851
|
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
|
-
}
|
79852
|
+
let elmTool = this.doc.querySelector('.is-element-tool');
|
79738
79853
|
if (elmTool) elmTool.style.display = '';
|
79739
|
-
|
79740
|
-
if (
|
79854
|
+
let linkTool = this.doc.querySelector('#divLinkTool');
|
79855
|
+
if (linkTool) linkTool.style.display = '';
|
79856
|
+
this.element.image.hideImageTool();
|
79857
|
+
this.doc.querySelectorAll('.icon-active').forEach(elm => elm.classList.remove('icon-active'));
|
79858
|
+
this.doc.querySelectorAll('.elm-inspected').forEach(elm => elm.classList.remove('elm-inspected'));
|
79859
|
+
this.doc.querySelectorAll('.elm-active').forEach(elm => elm.classList.remove('elm-active'));
|
79860
|
+
this.activeImage = null;
|
79861
|
+
this.activeIcon = null;
|
79862
|
+
this.inspectedElement = null;
|
79863
|
+
this.activeElement = null;
|
79741
79864
|
}
|
79742
79865
|
}
|
79743
79866
|
|