@innovastudio/contentbox 1.4.70 → 1.4.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@innovastudio/contentbox",
|
3
3
|
"type": "module",
|
4
|
-
"version": "1.4.
|
4
|
+
"version": "1.4.72",
|
5
5
|
"description": "",
|
6
6
|
"main": "public/contentbox/contentbox.esm.js",
|
7
7
|
"files": [
|
@@ -46,7 +46,7 @@
|
|
46
46
|
"webpack-dev-server": "^4.0.0"
|
47
47
|
},
|
48
48
|
"dependencies": {
|
49
|
-
"@innovastudio/contentbuilder": "^1.3.
|
49
|
+
"@innovastudio/contentbuilder": "^1.3.85",
|
50
50
|
"js-beautify": "^1.14.0"
|
51
51
|
}
|
52
52
|
}
|
@@ -484,6 +484,7 @@ const prepareSvgIcons$1 = builder => {
|
|
484
484
|
<circle cx="12" cy="17" r="1"></circle>
|
485
485
|
</symbol>
|
486
486
|
|
487
|
+
|
487
488
|
</defs>
|
488
489
|
</svg>`;
|
489
490
|
const builderStuff = builder.builderStuff;
|
@@ -28910,6 +28911,79 @@ class HtmlUtil {
|
|
28910
28911
|
block.getAttribute('data-settings', uniqueID);
|
28911
28912
|
}
|
28912
28913
|
});
|
28914
|
+
} //Make absolute (for Export/Download)
|
28915
|
+
|
28916
|
+
|
28917
|
+
if (this.builder.makeAbsolute) {
|
28918
|
+
const convertMediaUrl = imgUrl => {
|
28919
|
+
// make absolute
|
28920
|
+
let img = document.createElement('img');
|
28921
|
+
img.src = imgUrl;
|
28922
|
+
img.setAttribute('data-absoluteurl', img.src);
|
28923
|
+
imgUrl = img.getAttribute('data-absoluteurl');
|
28924
|
+
return imgUrl;
|
28925
|
+
};
|
28926
|
+
|
28927
|
+
const convertBgUrl = imgUrl => {
|
28928
|
+
// make absolute
|
28929
|
+
let img = document.createElement('img');
|
28930
|
+
img.src = imgUrl;
|
28931
|
+
img.setAttribute('data-absoluteurl', img.src);
|
28932
|
+
imgUrl = img.getAttribute('data-absoluteurl'); // Do not use imgUrl directly, change base to [%PATH%] instead
|
28933
|
+
// (to prevent auto converting back to relative path)
|
28934
|
+
|
28935
|
+
let urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
28936
|
+
return imgUrl.replace(urlBase, '[%PATH%]'); // Example:
|
28937
|
+
// url = http://localhost:8080/uploads/image.jpg
|
28938
|
+
// urlBase = http://localhost:8080
|
28939
|
+
// become: [%PATH%]/uploads/image.jpg
|
28940
|
+
};
|
28941
|
+
|
28942
|
+
const convertMedia = (elm, attrName) => {
|
28943
|
+
if (elm.hasAttribute(attrName)) {
|
28944
|
+
if (!(elm.parentNode.tagName.toLowerCase() === 'video' || elm.parentNode.tagName.toLowerCase() === 'audio')) return;
|
28945
|
+
let imgUrl = elm.getAttribute(attrName);
|
28946
|
+
imgUrl = convertMediaUrl(imgUrl);
|
28947
|
+
elm.setAttribute(attrName, `${imgUrl}`);
|
28948
|
+
}
|
28949
|
+
};
|
28950
|
+
|
28951
|
+
let imgs = tmp.querySelectorAll('img');
|
28952
|
+
Array.prototype.forEach.call(imgs, img => {
|
28953
|
+
let src = img.src;
|
28954
|
+
img.setAttribute('src', src);
|
28955
|
+
});
|
28956
|
+
let elms = tmp.querySelectorAll('*');
|
28957
|
+
elms.forEach(elm => {
|
28958
|
+
if (elm.style.backgroundImage) {
|
28959
|
+
let s = elm.style.backgroundImage;
|
28960
|
+
|
28961
|
+
if (s.indexOf('url(') !== -1) {
|
28962
|
+
let imgUrl = s.slice(4, -1).replace(/["']/g, '');
|
28963
|
+
imgUrl = convertBgUrl(imgUrl);
|
28964
|
+
elm.style.backgroundImage = `url(${imgUrl})`;
|
28965
|
+
}
|
28966
|
+
}
|
28967
|
+
|
28968
|
+
convertMedia(elm, 'src');
|
28969
|
+
convertMedia(elm, 'data-default');
|
28970
|
+
convertMedia(elm, 'data-240');
|
28971
|
+
convertMedia(elm, 'data-360');
|
28972
|
+
convertMedia(elm, 'data-480');
|
28973
|
+
convertMedia(elm, 'data-540');
|
28974
|
+
convertMedia(elm, 'data-720');
|
28975
|
+
convertMedia(elm, 'data-1080');
|
28976
|
+
convertMedia(elm, 'data-1440');
|
28977
|
+
convertMedia(elm, 'data-2160');
|
28978
|
+
|
28979
|
+
if (elm.hasAttribute('href')) {
|
28980
|
+
if (elm.tagName.toLowerCase() === 'link') {
|
28981
|
+
let imgUrl = elm.getAttribute('href');
|
28982
|
+
imgUrl = convertMediaUrl(imgUrl);
|
28983
|
+
elm.setAttribute('href', `${imgUrl}`);
|
28984
|
+
}
|
28985
|
+
}
|
28986
|
+
});
|
28913
28987
|
} //Cleaning
|
28914
28988
|
|
28915
28989
|
|
@@ -29047,7 +29121,75 @@ class HtmlUtil {
|
|
29047
29121
|
elms = tmp.querySelectorAll('[data-scroll]');
|
29048
29122
|
dom$h.removeAttributes(elms, 'data-scroll');
|
29049
29123
|
elms = tmp.querySelectorAll('[data-scroll-once]');
|
29050
|
-
dom$h.removeAttributes(elms, 'data-scroll-once');
|
29124
|
+
dom$h.removeAttributes(elms, 'data-scroll-once');
|
29125
|
+
|
29126
|
+
if (this.builder.shortenOutput) {
|
29127
|
+
elms = tmp.querySelectorAll('[data-noedit]');
|
29128
|
+
dom$h.removeAttributes(elms, 'data-noedit');
|
29129
|
+
elms = tmp.querySelectorAll('[data-module]');
|
29130
|
+
dom$h.removeAttributes(elms, 'data-module');
|
29131
|
+
elms = tmp.querySelectorAll('[data-module-desc]');
|
29132
|
+
dom$h.removeAttributes(elms, 'data-module-desc');
|
29133
|
+
elms = tmp.querySelectorAll('[data-dialog-width]');
|
29134
|
+
dom$h.removeAttributes(elms, 'data-dialog-width');
|
29135
|
+
elms = tmp.querySelectorAll('[data-dialog-height]');
|
29136
|
+
dom$h.removeAttributes(elms, 'data-dialog-height');
|
29137
|
+
elms = tmp.querySelectorAll('[data-html]');
|
29138
|
+
dom$h.removeAttributes(elms, 'data-html');
|
29139
|
+
elms = tmp.querySelectorAll('[data-settings]');
|
29140
|
+
dom$h.removeAttributes(elms, 'data-settings');
|
29141
|
+
elms = tmp.querySelectorAll('[data-html-1]');
|
29142
|
+
dom$h.removeAttributes(elms, 'data-html-1');
|
29143
|
+
elms = tmp.querySelectorAll('[data-html-2]');
|
29144
|
+
dom$h.removeAttributes(elms, 'data-html-2');
|
29145
|
+
elms = tmp.querySelectorAll('[data-html-3]');
|
29146
|
+
dom$h.removeAttributes(elms, 'data-html-3');
|
29147
|
+
elms = tmp.querySelectorAll('[data-html-4]');
|
29148
|
+
dom$h.removeAttributes(elms, 'data-html-4');
|
29149
|
+
elms = tmp.querySelectorAll('[data-html-5]');
|
29150
|
+
dom$h.removeAttributes(elms, 'data-html-5');
|
29151
|
+
elms = tmp.querySelectorAll('[data-html-6]');
|
29152
|
+
dom$h.removeAttributes(elms, 'data-html-6');
|
29153
|
+
elms = tmp.querySelectorAll('[data-html-7]');
|
29154
|
+
dom$h.removeAttributes(elms, 'data-html-7');
|
29155
|
+
elms = tmp.querySelectorAll('[data-html-8]');
|
29156
|
+
dom$h.removeAttributes(elms, 'data-html-8');
|
29157
|
+
elms = tmp.querySelectorAll('[data-html-9]');
|
29158
|
+
dom$h.removeAttributes(elms, 'data-html-9');
|
29159
|
+
elms = tmp.querySelectorAll('[data-html-10]');
|
29160
|
+
dom$h.removeAttributes(elms, 'data-html-10');
|
29161
|
+
elms = tmp.querySelectorAll('[data-html-12]');
|
29162
|
+
dom$h.removeAttributes(elms, 'data-html-12');
|
29163
|
+
elms = tmp.querySelectorAll('[data-html-13]');
|
29164
|
+
dom$h.removeAttributes(elms, 'data-html-13');
|
29165
|
+
elms = tmp.querySelectorAll('[data-html-14]');
|
29166
|
+
dom$h.removeAttributes(elms, 'data-html-14');
|
29167
|
+
elms = tmp.querySelectorAll('[data-html-15]');
|
29168
|
+
dom$h.removeAttributes(elms, 'data-html-15');
|
29169
|
+
elms = tmp.querySelectorAll('[data-html-16]');
|
29170
|
+
dom$h.removeAttributes(elms, 'data-html-16');
|
29171
|
+
elms = tmp.querySelectorAll('[data-html-17]');
|
29172
|
+
dom$h.removeAttributes(elms, 'data-html-17');
|
29173
|
+
elms = tmp.querySelectorAll('[data-html-18]');
|
29174
|
+
dom$h.removeAttributes(elms, 'data-html-18');
|
29175
|
+
elms = tmp.querySelectorAll('[data-html-19]');
|
29176
|
+
dom$h.removeAttributes(elms, 'data-html-19');
|
29177
|
+
elms = tmp.querySelectorAll('[data-html-20]');
|
29178
|
+
dom$h.removeAttributes(elms, 'data-html-20');
|
29179
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29180
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29181
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29182
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29183
|
+
elms = tmp.querySelectorAll('[data-html-22]');
|
29184
|
+
dom$h.removeAttributes(elms, 'data-html-22');
|
29185
|
+
elms = tmp.querySelectorAll('[data-html-23]');
|
29186
|
+
dom$h.removeAttributes(elms, 'data-html-23');
|
29187
|
+
elms = tmp.querySelectorAll('[data-html-24]');
|
29188
|
+
dom$h.removeAttributes(elms, 'data-html-24');
|
29189
|
+
elms = tmp.querySelectorAll('[data-html-25]');
|
29190
|
+
dom$h.removeAttributes(elms, 'data-html-25');
|
29191
|
+
} // cleaning
|
29192
|
+
|
29051
29193
|
|
29052
29194
|
elms = tmp.querySelectorAll('[data-bottom-top],[data-center],[data-center-bottom],[data-100-top],[data-50-top],[data-top],[data-top-bottom],[data-center-top],[data--300-bottom],[data--150-bottom],[data--50-bottom],[data-bottom],[data-100-bottom],[data-150-bottom],[data-400-bottom],' + '[data--400-bottom],[data--200-bottom],[data--100-bottom],[data-50-bottom],[data-200-bottom],[data-300-bottom],' + '[data-in],[data-in-150],[data-in-300],' + '[data-cen--150],[data-cen],[data-cen-150],[data-out--300],[data-out--150],[data-out]' + '[data-t],[data-t-100],[data-t-200],[data-t-300],[data-t-400],' + '[data-t-500],[data-t-600],[data-t-700],[data-t-800],[data-t-900],[data-t-1000],' + '[data-t-1100],[data-t-1200],[data-t-1300],[data-t-1400],[data-t-1500],[data-t-1600],' + '[data-t-1700],[data-t-1800],[data-t-1900],[data-t-2000],[data-t-2100],[data-t-2200],' + '[data-t-2300],[data-t-2400],[data-t-2500],[data-t-2600],[data-t-2700],[data-t-2800]'); // elms = tmp.querySelectorAll('[data-bottom-top],[data-center],[data-center-bottom],[data-100-top],[data-50-top],[data-top],[data-top-bottom],[data-center-top],[data--300-bottom],[data--150-bottom],[data--50-bottom],[data-bottom],[data-100-bottom],[data-150-bottom],[data-400-bottom],' +
|
29053
29195
|
// '[data--400-bottom],[data--200-bottom],[data--100-bottom],[data-50-bottom],[data-200-bottom],[data-300-bottom],' +
|
@@ -29161,6 +29303,74 @@ class HtmlUtil {
|
|
29161
29303
|
Array.prototype.forEach.call(emptystyles, emptystyle => {
|
29162
29304
|
emptystyle.removeAttribute('style');
|
29163
29305
|
});
|
29306
|
+
|
29307
|
+
if (this.builder.shortenOutput) {
|
29308
|
+
elms = tmp.querySelectorAll('[data-noedit]');
|
29309
|
+
dom$h.removeAttributes(elms, 'data-noedit');
|
29310
|
+
elms = tmp.querySelectorAll('[data-module]');
|
29311
|
+
dom$h.removeAttributes(elms, 'data-module');
|
29312
|
+
elms = tmp.querySelectorAll('[data-module-desc]');
|
29313
|
+
dom$h.removeAttributes(elms, 'data-module-desc');
|
29314
|
+
elms = tmp.querySelectorAll('[data-dialog-width]');
|
29315
|
+
dom$h.removeAttributes(elms, 'data-dialog-width');
|
29316
|
+
elms = tmp.querySelectorAll('[data-dialog-height]');
|
29317
|
+
dom$h.removeAttributes(elms, 'data-dialog-height');
|
29318
|
+
elms = tmp.querySelectorAll('[data-html]');
|
29319
|
+
dom$h.removeAttributes(elms, 'data-html');
|
29320
|
+
elms = tmp.querySelectorAll('[data-settings]');
|
29321
|
+
dom$h.removeAttributes(elms, 'data-settings');
|
29322
|
+
elms = tmp.querySelectorAll('[data-html-1]');
|
29323
|
+
dom$h.removeAttributes(elms, 'data-html-1');
|
29324
|
+
elms = tmp.querySelectorAll('[data-html-2]');
|
29325
|
+
dom$h.removeAttributes(elms, 'data-html-2');
|
29326
|
+
elms = tmp.querySelectorAll('[data-html-3]');
|
29327
|
+
dom$h.removeAttributes(elms, 'data-html-3');
|
29328
|
+
elms = tmp.querySelectorAll('[data-html-4]');
|
29329
|
+
dom$h.removeAttributes(elms, 'data-html-4');
|
29330
|
+
elms = tmp.querySelectorAll('[data-html-5]');
|
29331
|
+
dom$h.removeAttributes(elms, 'data-html-5');
|
29332
|
+
elms = tmp.querySelectorAll('[data-html-6]');
|
29333
|
+
dom$h.removeAttributes(elms, 'data-html-6');
|
29334
|
+
elms = tmp.querySelectorAll('[data-html-7]');
|
29335
|
+
dom$h.removeAttributes(elms, 'data-html-7');
|
29336
|
+
elms = tmp.querySelectorAll('[data-html-8]');
|
29337
|
+
dom$h.removeAttributes(elms, 'data-html-8');
|
29338
|
+
elms = tmp.querySelectorAll('[data-html-9]');
|
29339
|
+
dom$h.removeAttributes(elms, 'data-html-9');
|
29340
|
+
elms = tmp.querySelectorAll('[data-html-10]');
|
29341
|
+
dom$h.removeAttributes(elms, 'data-html-10');
|
29342
|
+
elms = tmp.querySelectorAll('[data-html-12]');
|
29343
|
+
dom$h.removeAttributes(elms, 'data-html-12');
|
29344
|
+
elms = tmp.querySelectorAll('[data-html-13]');
|
29345
|
+
dom$h.removeAttributes(elms, 'data-html-13');
|
29346
|
+
elms = tmp.querySelectorAll('[data-html-14]');
|
29347
|
+
dom$h.removeAttributes(elms, 'data-html-14');
|
29348
|
+
elms = tmp.querySelectorAll('[data-html-15]');
|
29349
|
+
dom$h.removeAttributes(elms, 'data-html-15');
|
29350
|
+
elms = tmp.querySelectorAll('[data-html-16]');
|
29351
|
+
dom$h.removeAttributes(elms, 'data-html-16');
|
29352
|
+
elms = tmp.querySelectorAll('[data-html-17]');
|
29353
|
+
dom$h.removeAttributes(elms, 'data-html-17');
|
29354
|
+
elms = tmp.querySelectorAll('[data-html-18]');
|
29355
|
+
dom$h.removeAttributes(elms, 'data-html-18');
|
29356
|
+
elms = tmp.querySelectorAll('[data-html-19]');
|
29357
|
+
dom$h.removeAttributes(elms, 'data-html-19');
|
29358
|
+
elms = tmp.querySelectorAll('[data-html-20]');
|
29359
|
+
dom$h.removeAttributes(elms, 'data-html-20');
|
29360
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29361
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29362
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29363
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29364
|
+
elms = tmp.querySelectorAll('[data-html-22]');
|
29365
|
+
dom$h.removeAttributes(elms, 'data-html-22');
|
29366
|
+
elms = tmp.querySelectorAll('[data-html-23]');
|
29367
|
+
dom$h.removeAttributes(elms, 'data-html-23');
|
29368
|
+
elms = tmp.querySelectorAll('[data-html-24]');
|
29369
|
+
dom$h.removeAttributes(elms, 'data-html-24');
|
29370
|
+
elms = tmp.querySelectorAll('[data-html-25]');
|
29371
|
+
dom$h.removeAttributes(elms, 'data-html-25');
|
29372
|
+
}
|
29373
|
+
|
29164
29374
|
html = tmp.innerHTML.trim();
|
29165
29375
|
html = html.replace(/<font/g, '<span').replace(/<\/font/g, '</span');
|
29166
29376
|
} // elm = builderStuff.querySelector('#tmp_content');
|
@@ -29178,6 +29388,13 @@ class HtmlUtil {
|
|
29178
29388
|
return html;
|
29179
29389
|
}
|
29180
29390
|
|
29391
|
+
beautify(html) {
|
29392
|
+
let beautify = JsBeautify.html;
|
29393
|
+
html = beautify(html);
|
29394
|
+
html = html.replace(/(\r\n|\r|\n){3,}/g, '$1\n');
|
29395
|
+
return html;
|
29396
|
+
}
|
29397
|
+
|
29181
29398
|
}
|
29182
29399
|
|
29183
29400
|
class UndoRedo {
|
@@ -29728,6 +29945,14 @@ const prepareSvgIcons = builder => {
|
|
29728
29945
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
29729
29946
|
<path d="M9.88 9.878a3 3 0 1 0 4.243 4.242m.581 -3.42a3.012 3.012 0 0 0 -1.45 -1.426m-3.877 -3.913a9.469 9.469 0 0 1 2.623 -.361c4 0 7.333 2.333 10 7c-.778 1.362 -1.613 2.524 -2.504 3.489m-2.138 1.859c-1.629 1.101 -3.415 1.652 -5.358 1.652c-4 0 -7.333 -2.333 -10 -7c1.374 -2.404 2.924 -4.189 4.652 -5.354m-3.652 -3.646l18 18"></path>
|
29730
29947
|
</symbol>
|
29948
|
+
|
29949
|
+
<symbol id="icon-download" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
29950
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
29951
|
+
<path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"></path>
|
29952
|
+
<path d="M7 11l5 5l5 -5"></path>
|
29953
|
+
<path d="M12 4l0 12"></path>
|
29954
|
+
</symbol>
|
29955
|
+
|
29731
29956
|
</defs>
|
29732
29957
|
</svg>`;
|
29733
29958
|
builder.dom.appendHtml(builder.builderStuff, html);
|
@@ -36765,7 +36990,7 @@ function getOffset(element) {
|
|
36765
36990
|
top: box.top + (window.pageYOffset - document.documentElement.clientTop)
|
36766
36991
|
};
|
36767
36992
|
}
|
36768
|
-
var location = WINDOW.location;
|
36993
|
+
var location$1 = WINDOW.location;
|
36769
36994
|
var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i;
|
36770
36995
|
/**
|
36771
36996
|
* Check if the given URL is a cross origin URL.
|
@@ -36775,7 +37000,7 @@ var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i;
|
|
36775
37000
|
|
36776
37001
|
function isCrossOriginURL(url) {
|
36777
37002
|
var parts = url.match(REGEXP_ORIGINS);
|
36778
|
-
return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
|
37003
|
+
return parts !== null && (parts[1] !== location$1.protocol || parts[2] !== location$1.hostname || parts[3] !== location$1.port);
|
36779
37004
|
}
|
36780
37005
|
/**
|
36781
37006
|
* Add timestamp to the given URL.
|
@@ -66196,7 +66421,7 @@ class Hyperlink {
|
|
66196
66421
|
<input id="inpCreateLinkText" class="input-text" type="text" style="width:100%;"/>
|
66197
66422
|
|
66198
66423
|
<label for="inpCreateLinkTitle" style="margin-top:14px;display:block">${util.out('Title')}:</label>
|
66199
|
-
<input id="inpCreateLinkTitle" class="input-title" type="text" style="width:100%;
|
66424
|
+
<input id="inpCreateLinkTitle" class="input-title" type="text" style="width:100%;"/>
|
66200
66425
|
|
66201
66426
|
<div style="text-align:right;margin-top:14px;">
|
66202
66427
|
<button title="${util.out('Cancel')}" class="input-cancel classic-secondary">${util.out('Cancel')}</button>
|
@@ -67516,10 +67741,12 @@ class Code {
|
|
67516
67741
|
viewhtml = this.builderStuff.querySelector('.viewhtml');
|
67517
67742
|
}
|
67518
67743
|
|
67519
|
-
let textarea = viewhtml.querySelector('textarea'); //
|
67520
|
-
// let beautify = JsBeautify.html;
|
67521
|
-
// html = beautify(html);
|
67744
|
+
let textarea = viewhtml.querySelector('textarea'); // Prevent {id} get formatted.
|
67522
67745
|
|
67746
|
+
html = html.replaceAll('{id}', '__id__');
|
67747
|
+
let beautify = JsBeautify.html;
|
67748
|
+
html = beautify(html);
|
67749
|
+
html = html.replaceAll('__id__', '{id}');
|
67523
67750
|
textarea.value = html;
|
67524
67751
|
this.htmlUtil.view('code');
|
67525
67752
|
});
|
@@ -69062,7 +69289,6 @@ class RowTool {
|
|
69062
69289
|
const dom = this.builder.dom;
|
69063
69290
|
this.dom = dom;
|
69064
69291
|
this.grid = new Grid(builder);
|
69065
|
-
const htmlutil = new HtmlUtil(builder);
|
69066
69292
|
let rowMore = builderStuff.querySelector('.rowmore');
|
69067
69293
|
let htmlbutton = '';
|
69068
69294
|
if (builder.opts.rowHtmlEditor) htmlbutton = `<button type="button" title="${util.out('HTML')}" class="row-html">
|
@@ -69111,6 +69337,7 @@ class RowTool {
|
|
69111
69337
|
}
|
69112
69338
|
|
69113
69339
|
if (!row) return;
|
69340
|
+
const htmlutil = new HtmlUtil(builder);
|
69114
69341
|
htmlutil.view('row');
|
69115
69342
|
});
|
69116
69343
|
}
|
@@ -76381,7 +76608,7 @@ class ElementTextStyles {
|
|
76381
76608
|
var sTextAlign = elm.style.textAlign;
|
76382
76609
|
this.panelStuff.querySelector('#inpElmTextAlign').value = sTextAlign;
|
76383
76610
|
this.panelStuff.querySelector('#inpElmFontSize').value = '';
|
76384
|
-
var nFontSize =
|
76611
|
+
var nFontSize = parseFloat(elm.style.fontSize);
|
76385
76612
|
|
76386
76613
|
if (!isNaN(nFontSize)) {
|
76387
76614
|
this.panelStuff.querySelector('#inpElmFontSize').value = nFontSize;
|
@@ -76441,7 +76668,7 @@ class ElementTextStyles {
|
|
76441
76668
|
if (!isNaN(elm.style.lineHeight)) {
|
76442
76669
|
this.panelStuff.querySelector('#inpElmLineHeight').value = elm.style.lineHeight;
|
76443
76670
|
} else {
|
76444
|
-
var nLineHeight =
|
76671
|
+
var nLineHeight = parseFloat(elm.style.lineHeight);
|
76445
76672
|
|
76446
76673
|
if (!isNaN(nLineHeight)) {
|
76447
76674
|
this.panelStuff.querySelector('#inpElmLineHeight').value = nLineHeight;
|
@@ -76462,14 +76689,14 @@ class ElementTextStyles {
|
|
76462
76689
|
|
76463
76690
|
this.panelStuff.querySelector('#inpElmLineHeightUnit').value = sLineHeightUnit;
|
76464
76691
|
this.panelStuff.querySelector('#inpElmLetterSpacing').value = '';
|
76465
|
-
var nLetterSpacing =
|
76692
|
+
var nLetterSpacing = parseFloat(elm.style.letterSpacing);
|
76466
76693
|
|
76467
76694
|
if (!isNaN(nLetterSpacing)) {
|
76468
76695
|
this.panelStuff.querySelector('#inpElmLetterSpacing').value = nLetterSpacing;
|
76469
76696
|
}
|
76470
76697
|
|
76471
76698
|
this.panelStuff.querySelector('#inpElmWordSpacing').value = '';
|
76472
|
-
var nWordSpacing =
|
76699
|
+
var nWordSpacing = parseFloat(elm.style.wordSpacing);
|
76473
76700
|
|
76474
76701
|
if (!isNaN(nWordSpacing)) {
|
76475
76702
|
this.panelStuff.querySelector('#inpElmWordSpacing').value = nWordSpacing;
|
@@ -89103,6 +89330,39 @@ class ContentBuilder {
|
|
89103
89330
|
</div>
|
89104
89331
|
</div>
|
89105
89332
|
`,
|
89333
|
+
pageTemplate: `<!DOCTYPE html>
|
89334
|
+
<html lang="en">
|
89335
|
+
<head>
|
89336
|
+
<meta charset="utf-8">
|
89337
|
+
<title>Page</title>
|
89338
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
89339
|
+
<meta name="description" content="">
|
89340
|
+
<link rel="shortcut icon" href="#" />
|
89341
|
+
|
89342
|
+
<link href="[%PATH%]/assets/minimalist-blocks/content.css" rel="stylesheet" type="text/css" />
|
89343
|
+
|
89344
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.core.css" rel="stylesheet" type="text/css" />
|
89345
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.theme.css" rel="stylesheet" type="text/css" />
|
89346
|
+
<script src="[%PATH%]/assets/scripts/glide/glide.js" type="text/javascript"></script>
|
89347
|
+
|
89348
|
+
<style>
|
89349
|
+
.container {
|
89350
|
+
margin: 150px auto 0;
|
89351
|
+
max-width: 800px;
|
89352
|
+
width: 100%;
|
89353
|
+
padding: 0 20px;
|
89354
|
+
box-sizing: border-box;
|
89355
|
+
}
|
89356
|
+
</style>
|
89357
|
+
</head>
|
89358
|
+
<body>
|
89359
|
+
|
89360
|
+
<div class="container">
|
89361
|
+
[%CONTENT%]
|
89362
|
+
</div>
|
89363
|
+
|
89364
|
+
</body>
|
89365
|
+
</html>`,
|
89106
89366
|
|
89107
89367
|
/*
|
89108
89368
|
onZoomStart: () => {
|
@@ -89685,6 +89945,7 @@ class ContentBuilder {
|
|
89685
89945
|
|
89686
89946
|
this.colTool = new ColumnTool(this); // Render Column Tool
|
89687
89947
|
|
89948
|
+
this._rowTool = new RowTool(this);
|
89688
89949
|
this.mediaPicker = new MediaPicker(this); // Extend the onChange function
|
89689
89950
|
|
89690
89951
|
var oldget = this.opts.onChange;
|
@@ -90207,8 +90468,8 @@ class ContentBuilder {
|
|
90207
90468
|
// Render Row tool
|
90208
90469
|
|
90209
90470
|
|
90210
|
-
this.
|
90211
|
-
|
90471
|
+
this._rowTool.render(row); // Render Row Add tool
|
90472
|
+
|
90212
90473
|
|
90213
90474
|
const rowaddtool = new RowAddTool(this);
|
90214
90475
|
rowaddtool.render(row); // Apply behavior on each column
|
@@ -90614,7 +90875,11 @@ class ContentBuilder {
|
|
90614
90875
|
|
90615
90876
|
const builders = this.doc.querySelectorAll(this.opts.container);
|
90616
90877
|
Array.prototype.forEach.call(builders, builder => {
|
90617
|
-
builder.innerHTML = htmlutil.readHtml(builder, true);
|
90878
|
+
// builder.innerHTML = htmlutil.readHtml(builder, true);
|
90879
|
+
let html = htmlutil.readHtml(builder, false);
|
90880
|
+
let range = this.doc.createRange();
|
90881
|
+
builder.innerHTML = '';
|
90882
|
+
builder.appendChild(range.createContextualFragment(html)); // Use createContextualFragment so that embedded javascript code (code block) will be executed
|
90618
90883
|
});
|
90619
90884
|
Array.prototype.forEach.call(builders, builder => {
|
90620
90885
|
builder.removeAttribute('data-sort');
|
@@ -90941,6 +91206,52 @@ class ContentBuilder {
|
|
90941
91206
|
|
90942
91207
|
saveForUndo(checkLater) {
|
90943
91208
|
this.uo.saveForUndo(checkLater);
|
91209
|
+
}
|
91210
|
+
|
91211
|
+
download(options = {}) {
|
91212
|
+
this.export(options, true);
|
91213
|
+
}
|
91214
|
+
|
91215
|
+
export(options = {}, shortenOutput = false) {
|
91216
|
+
let pageTemplate = this.pageTemplate;
|
91217
|
+
let output = ''; // [%CONTENT%]
|
91218
|
+
|
91219
|
+
this.makeAbsolute = true; //To make absolute (for Export/Download)
|
91220
|
+
|
91221
|
+
this.shortenOutput = shortenOutput;
|
91222
|
+
let html = this.html();
|
91223
|
+
this.makeAbsolute = false;
|
91224
|
+
this.shortenOutput = false;
|
91225
|
+
output = pageTemplate.replace('[%CONTENT%]', html); // Custom
|
91226
|
+
|
91227
|
+
if (options.replace) {
|
91228
|
+
options.replace.forEach(rule => {
|
91229
|
+
output = output.replaceAll(`${rule[0]}`, rule[1]);
|
91230
|
+
});
|
91231
|
+
} // [%PATH%]
|
91232
|
+
|
91233
|
+
|
91234
|
+
if (options.path) {
|
91235
|
+
output = output.replaceAll('[%PATH%]', options.path);
|
91236
|
+
} else {
|
91237
|
+
let urlBase;
|
91238
|
+
urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
91239
|
+
output = output.replaceAll('[%PATH%]', urlBase);
|
91240
|
+
} // Beautify
|
91241
|
+
|
91242
|
+
|
91243
|
+
output = this.beautify(output);
|
91244
|
+
const a = document.createElement('a');
|
91245
|
+
a.href = window.URL.createObjectURL(new Blob([output], {
|
91246
|
+
type: 'text/plain'
|
91247
|
+
}));
|
91248
|
+
a.download = 'page.html';
|
91249
|
+
a.click();
|
91250
|
+
}
|
91251
|
+
|
91252
|
+
beautify(html) {
|
91253
|
+
const htmlutil = new HtmlUtil(this);
|
91254
|
+
return htmlutil.beautify(html);
|
90944
91255
|
} // Module related
|
90945
91256
|
|
90946
91257
|
|
@@ -91772,8 +92083,7 @@ class ContentBuilder {
|
|
91772
92083
|
|
91773
92084
|
this.element.click(col, e);
|
91774
92085
|
this.colTool.click(col);
|
91775
|
-
this.elmTool.click(col, e);
|
91776
|
-
|
92086
|
+
this.elmTool.click(col, e);
|
91777
92087
|
this.rte.click(col, e); // Grid Editor Status
|
91778
92088
|
// On/off lock button
|
91779
92089
|
|
@@ -101477,6 +101787,59 @@ class ContentBox {
|
|
101477
101787
|
</div>
|
101478
101788
|
</div>
|
101479
101789
|
`,
|
101790
|
+
pageTemplate: `
|
101791
|
+
<!DOCTYPE html>
|
101792
|
+
<html lang="en">
|
101793
|
+
<head>
|
101794
|
+
<meta charset="utf-8">
|
101795
|
+
<title>Page</title>
|
101796
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
101797
|
+
<meta name="description" content="">
|
101798
|
+
<link rel="shortcut icon" href="#" />
|
101799
|
+
|
101800
|
+
<link href="[%PATH%]/assets/minimalist-blocks/content.css" rel="stylesheet" type="text/css" />
|
101801
|
+
<link href="[%PATH%]/box/box-flex.css" rel="stylesheet" type="text/css" />
|
101802
|
+
|
101803
|
+
[%MAINCSS%]
|
101804
|
+
[%SECTIONCSS%]
|
101805
|
+
</head>
|
101806
|
+
<body style="touch-action: pan-y">
|
101807
|
+
|
101808
|
+
<main id="main">
|
101809
|
+
<div class="is-wrapper">
|
101810
|
+
[%CONTENT%]
|
101811
|
+
</div>
|
101812
|
+
</main>
|
101813
|
+
|
101814
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.core.css" rel="stylesheet" type="text/css" />
|
101815
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.theme.css" rel="stylesheet" type="text/css" />
|
101816
|
+
<script src="[%PATH%]/assets/scripts/glide/glide.js" type="text/javascript"></script>
|
101817
|
+
|
101818
|
+
<link href="[%PATH%]/assets/scripts/navbar/navbar.css" rel="stylesheet" type="text/css" />
|
101819
|
+
<script src="[%PATH%]/assets/scripts/navbar/navbar.min.js" type="text/javascript"></script>
|
101820
|
+
|
101821
|
+
<script src="[%PATH%]/box/box-flex.js" type="text/javascript"></script>
|
101822
|
+
|
101823
|
+
<!-- Optional: if you want to add smooth scrolling -->
|
101824
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/smoothscroll/1.4.10/SmoothScroll.min.js" type="text/javascript"></script>
|
101825
|
+
<script>
|
101826
|
+
SmoothScroll({
|
101827
|
+
frameRate: 150,
|
101828
|
+
animationTime: 800,
|
101829
|
+
stepSize: 120,
|
101830
|
+
pulseAlgorithm: 1,
|
101831
|
+
pulseScale: 4,
|
101832
|
+
pulseNormalize: 1,
|
101833
|
+
accelerationDelta: 300,
|
101834
|
+
accelerationMax: 2,
|
101835
|
+
keyboardSupport: 1,
|
101836
|
+
arrowScroll: 50,
|
101837
|
+
fixedBackground: 0
|
101838
|
+
});
|
101839
|
+
</script>
|
101840
|
+
</body>
|
101841
|
+
</html>
|
101842
|
+
`,
|
101480
101843
|
contentStyleWithSample: false,
|
101481
101844
|
contentSizes: [300, 320, 340, 360, 380, 400, 420, 440, 460, 480, 500, 520, 540, 560, 580, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, 800, 820, 840, 860, 880, 900, 920, 940, 960, 970, 980, 1000, 1020, 1040, 1050, 1060, 1080, 1100, 1120, 1140, 1160, 1180, 1200, 1220, 1240, 1260, 1280, 1300, 1320, 1340, 1360, 1380, 1400, 1420, 1440, 1460, 1480, 1500, 1520, 1540, 1560, 1580, 1600, 1620, 1640, 1660, 1680, 1700, 1720, 1740, 1760, 1780, 1800, 1820, 1840, 1860, 1880, 1900, 1920, 1940, 1960, 1980, 2000, 2020, 2040, 2060, 2080, 2100, 2120, 2140, 2160, 2180, 2200, 2220, 2240, 2260, 2280, 2300, 2320, 2340, 2360, 2380, 2400, 2420, 2440, 2460, 2480, 2500, 2520, 2540, 2560, 2580, 2600, 2620, 2640, 2660, 2680, 2700],
|
101482
101845
|
contentStyles: {
|
@@ -106032,7 +106395,7 @@ class ContentBox {
|
|
106032
106395
|
this.editbox.boxImage(url, err);
|
106033
106396
|
}
|
106034
106397
|
|
106035
|
-
mainCss() {
|
106398
|
+
mainCss(absolute) {
|
106036
106399
|
let links = this.doc.getElementsByTagName('link');
|
106037
106400
|
let arrLinks = [];
|
106038
106401
|
|
@@ -106040,7 +106403,17 @@ class ContentBox {
|
|
106040
106403
|
let src = links[i].href.toLowerCase();
|
106041
106404
|
|
106042
106405
|
if (src.indexOf('basetype-') != -1) {
|
106043
|
-
|
106406
|
+
if (absolute) {
|
106407
|
+
// make absolute
|
106408
|
+
const link = links[i].cloneNode();
|
106409
|
+
let imgUrl = link.href;
|
106410
|
+
let urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
106411
|
+
imgUrl = imgUrl.replace(urlBase, '[%PATH%]');
|
106412
|
+
link.href = imgUrl;
|
106413
|
+
arrLinks.push(link.outerHTML);
|
106414
|
+
} else {
|
106415
|
+
arrLinks.push(links[i].outerHTML);
|
106416
|
+
}
|
106044
106417
|
}
|
106045
106418
|
} // arrLinks = [...new Set(arrLinks)]; // remove duplicates not needed, always single css
|
106046
106419
|
|
@@ -106064,7 +106437,7 @@ class ContentBox {
|
|
106064
106437
|
return arrLinks;
|
106065
106438
|
}
|
106066
106439
|
|
106067
|
-
sectionCss() {
|
106440
|
+
sectionCss(absolute) {
|
106068
106441
|
let links = this.doc.getElementsByTagName('link');
|
106069
106442
|
let arrLinks = [];
|
106070
106443
|
|
@@ -106072,7 +106445,17 @@ class ContentBox {
|
|
106072
106445
|
let src = links[i].href.toLowerCase();
|
106073
106446
|
|
106074
106447
|
if (src.indexOf('basetype-') != -1) ; else if (src.indexOf('type-') != -1) {
|
106075
|
-
|
106448
|
+
if (absolute) {
|
106449
|
+
// make absolute
|
106450
|
+
const link = links[i].cloneNode();
|
106451
|
+
let imgUrl = link.href;
|
106452
|
+
let urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
106453
|
+
imgUrl = imgUrl.replace(urlBase, '[%PATH%]');
|
106454
|
+
link.href = imgUrl;
|
106455
|
+
arrLinks.push(link.outerHTML);
|
106456
|
+
} else {
|
106457
|
+
arrLinks.push(links[i].outerHTML);
|
106458
|
+
}
|
106076
106459
|
}
|
106077
106460
|
}
|
106078
106461
|
|
@@ -106100,10 +106483,56 @@ class ContentBox {
|
|
106100
106483
|
|
106101
106484
|
html(bForView) {
|
106102
106485
|
this.cleanupUnused();
|
106103
|
-
|
106486
|
+
const html = this.editor.readHtml(this.wrapperEl, bForView, true);
|
106104
106487
|
return html;
|
106105
106488
|
}
|
106106
106489
|
|
106490
|
+
download(options = {}) {
|
106491
|
+
this.export(options, true);
|
106492
|
+
}
|
106493
|
+
|
106494
|
+
export(options = {}, shortenOutput = false) {
|
106495
|
+
let pageTemplate = this.pageTemplate;
|
106496
|
+
let output = ''; // [%CONTENT%]
|
106497
|
+
|
106498
|
+
this.cleanupUnused();
|
106499
|
+
this.editor.makeAbsolute = true;
|
106500
|
+
this.editor.shortenOutput = shortenOutput;
|
106501
|
+
let html = this.editor.readHtml(this.wrapperEl, false, true);
|
106502
|
+
this.editor.makeAbsolute = false;
|
106503
|
+
this.editor.shortenOutput = false;
|
106504
|
+
output = pageTemplate.replace('[%CONTENT%]', html); // [%MAINCSS%] & [%SECTIONCSS%]
|
106505
|
+
|
106506
|
+
let mainCss = this.mainCss(true);
|
106507
|
+
let sectionCss = this.sectionCss(true);
|
106508
|
+
output = output.replaceAll('[%MAINCSS%]', mainCss);
|
106509
|
+
output = output.replaceAll('[%SECTIONCSS%]', sectionCss); // Custom
|
106510
|
+
|
106511
|
+
if (options.replace) {
|
106512
|
+
options.replace.forEach(rule => {
|
106513
|
+
output = output.replaceAll(`${rule[0]}`, rule[1]);
|
106514
|
+
});
|
106515
|
+
} // [%PATH%]
|
106516
|
+
|
106517
|
+
|
106518
|
+
if (options.path) {
|
106519
|
+
output = output.replaceAll('[%PATH%]', options.path);
|
106520
|
+
} else {
|
106521
|
+
let urlBase;
|
106522
|
+
urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
106523
|
+
output = output.replaceAll('[%PATH%]', urlBase);
|
106524
|
+
} // Beautify
|
106525
|
+
|
106526
|
+
|
106527
|
+
output = this.editor.beautify(output);
|
106528
|
+
const a = document.createElement('a');
|
106529
|
+
a.href = window.URL.createObjectURL(new Blob([output], {
|
106530
|
+
type: 'text/plain'
|
106531
|
+
}));
|
106532
|
+
a.download = 'page.html';
|
106533
|
+
a.click();
|
106534
|
+
}
|
106535
|
+
|
106107
106536
|
viewZoom() {
|
106108
106537
|
this.editor.viewZoom();
|
106109
106538
|
}
|