@innovastudio/contentbox 1.4.70 → 1.4.71
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.71",
|
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.84",
|
50
50
|
"js-beautify": "^1.14.0"
|
51
51
|
}
|
52
52
|
}
|
@@ -28910,6 +28910,79 @@ class HtmlUtil {
|
|
28910
28910
|
block.getAttribute('data-settings', uniqueID);
|
28911
28911
|
}
|
28912
28912
|
});
|
28913
|
+
} //Make absolute (for Export/Download)
|
28914
|
+
|
28915
|
+
|
28916
|
+
if (this.builder.makeAbsolute) {
|
28917
|
+
const convertMediaUrl = imgUrl => {
|
28918
|
+
// make absolute
|
28919
|
+
let img = document.createElement('img');
|
28920
|
+
img.src = imgUrl;
|
28921
|
+
img.setAttribute('data-absoluteurl', img.src);
|
28922
|
+
imgUrl = img.getAttribute('data-absoluteurl');
|
28923
|
+
return imgUrl;
|
28924
|
+
};
|
28925
|
+
|
28926
|
+
const convertBgUrl = imgUrl => {
|
28927
|
+
// make absolute
|
28928
|
+
let img = document.createElement('img');
|
28929
|
+
img.src = imgUrl;
|
28930
|
+
img.setAttribute('data-absoluteurl', img.src);
|
28931
|
+
imgUrl = img.getAttribute('data-absoluteurl'); // Do not use imgUrl directly, change base to [%PATH%] instead
|
28932
|
+
// (to prevent auto converting back to relative path)
|
28933
|
+
|
28934
|
+
let urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
28935
|
+
return imgUrl.replace(urlBase, '[%PATH%]'); // Example:
|
28936
|
+
// url = http://localhost:8080/uploads/image.jpg
|
28937
|
+
// urlBase = http://localhost:8080
|
28938
|
+
// become: [%PATH%]/uploads/image.jpg
|
28939
|
+
};
|
28940
|
+
|
28941
|
+
const convertMedia = (elm, attrName) => {
|
28942
|
+
if (elm.hasAttribute(attrName)) {
|
28943
|
+
if (!(elm.parentNode.tagName.toLowerCase() === 'video' || elm.parentNode.tagName.toLowerCase() === 'audio')) return;
|
28944
|
+
let imgUrl = elm.getAttribute(attrName);
|
28945
|
+
imgUrl = convertMediaUrl(imgUrl);
|
28946
|
+
elm.setAttribute(attrName, `${imgUrl}`);
|
28947
|
+
}
|
28948
|
+
};
|
28949
|
+
|
28950
|
+
let imgs = tmp.querySelectorAll('img');
|
28951
|
+
Array.prototype.forEach.call(imgs, img => {
|
28952
|
+
let src = img.src;
|
28953
|
+
img.setAttribute('src', src);
|
28954
|
+
});
|
28955
|
+
let elms = tmp.querySelectorAll('*');
|
28956
|
+
elms.forEach(elm => {
|
28957
|
+
if (elm.style.backgroundImage) {
|
28958
|
+
let s = elm.style.backgroundImage;
|
28959
|
+
|
28960
|
+
if (s.indexOf('url(') !== -1) {
|
28961
|
+
let imgUrl = s.slice(4, -1).replace(/["']/g, '');
|
28962
|
+
imgUrl = convertBgUrl(imgUrl);
|
28963
|
+
elm.style.backgroundImage = `url(${imgUrl})`;
|
28964
|
+
}
|
28965
|
+
}
|
28966
|
+
|
28967
|
+
convertMedia(elm, 'src');
|
28968
|
+
convertMedia(elm, 'data-default');
|
28969
|
+
convertMedia(elm, 'data-240');
|
28970
|
+
convertMedia(elm, 'data-360');
|
28971
|
+
convertMedia(elm, 'data-480');
|
28972
|
+
convertMedia(elm, 'data-540');
|
28973
|
+
convertMedia(elm, 'data-720');
|
28974
|
+
convertMedia(elm, 'data-1080');
|
28975
|
+
convertMedia(elm, 'data-1440');
|
28976
|
+
convertMedia(elm, 'data-2160');
|
28977
|
+
|
28978
|
+
if (elm.hasAttribute('href')) {
|
28979
|
+
if (elm.tagName.toLowerCase() === 'link') {
|
28980
|
+
let imgUrl = elm.getAttribute('href');
|
28981
|
+
imgUrl = convertMediaUrl(imgUrl);
|
28982
|
+
elm.setAttribute('href', `${imgUrl}`);
|
28983
|
+
}
|
28984
|
+
}
|
28985
|
+
});
|
28913
28986
|
} //Cleaning
|
28914
28987
|
|
28915
28988
|
|
@@ -29047,7 +29120,75 @@ class HtmlUtil {
|
|
29047
29120
|
elms = tmp.querySelectorAll('[data-scroll]');
|
29048
29121
|
dom$h.removeAttributes(elms, 'data-scroll');
|
29049
29122
|
elms = tmp.querySelectorAll('[data-scroll-once]');
|
29050
|
-
dom$h.removeAttributes(elms, 'data-scroll-once');
|
29123
|
+
dom$h.removeAttributes(elms, 'data-scroll-once');
|
29124
|
+
|
29125
|
+
if (this.builder.shortenOutput) {
|
29126
|
+
elms = tmp.querySelectorAll('[data-noedit]');
|
29127
|
+
dom$h.removeAttributes(elms, 'data-noedit');
|
29128
|
+
elms = tmp.querySelectorAll('[data-module]');
|
29129
|
+
dom$h.removeAttributes(elms, 'data-module');
|
29130
|
+
elms = tmp.querySelectorAll('[data-module-desc]');
|
29131
|
+
dom$h.removeAttributes(elms, 'data-module-desc');
|
29132
|
+
elms = tmp.querySelectorAll('[data-dialog-width]');
|
29133
|
+
dom$h.removeAttributes(elms, 'data-dialog-width');
|
29134
|
+
elms = tmp.querySelectorAll('[data-dialog-height]');
|
29135
|
+
dom$h.removeAttributes(elms, 'data-dialog-height');
|
29136
|
+
elms = tmp.querySelectorAll('[data-html]');
|
29137
|
+
dom$h.removeAttributes(elms, 'data-html');
|
29138
|
+
elms = tmp.querySelectorAll('[data-settings]');
|
29139
|
+
dom$h.removeAttributes(elms, 'data-settings');
|
29140
|
+
elms = tmp.querySelectorAll('[data-html-1]');
|
29141
|
+
dom$h.removeAttributes(elms, 'data-html-1');
|
29142
|
+
elms = tmp.querySelectorAll('[data-html-2]');
|
29143
|
+
dom$h.removeAttributes(elms, 'data-html-2');
|
29144
|
+
elms = tmp.querySelectorAll('[data-html-3]');
|
29145
|
+
dom$h.removeAttributes(elms, 'data-html-3');
|
29146
|
+
elms = tmp.querySelectorAll('[data-html-4]');
|
29147
|
+
dom$h.removeAttributes(elms, 'data-html-4');
|
29148
|
+
elms = tmp.querySelectorAll('[data-html-5]');
|
29149
|
+
dom$h.removeAttributes(elms, 'data-html-5');
|
29150
|
+
elms = tmp.querySelectorAll('[data-html-6]');
|
29151
|
+
dom$h.removeAttributes(elms, 'data-html-6');
|
29152
|
+
elms = tmp.querySelectorAll('[data-html-7]');
|
29153
|
+
dom$h.removeAttributes(elms, 'data-html-7');
|
29154
|
+
elms = tmp.querySelectorAll('[data-html-8]');
|
29155
|
+
dom$h.removeAttributes(elms, 'data-html-8');
|
29156
|
+
elms = tmp.querySelectorAll('[data-html-9]');
|
29157
|
+
dom$h.removeAttributes(elms, 'data-html-9');
|
29158
|
+
elms = tmp.querySelectorAll('[data-html-10]');
|
29159
|
+
dom$h.removeAttributes(elms, 'data-html-10');
|
29160
|
+
elms = tmp.querySelectorAll('[data-html-12]');
|
29161
|
+
dom$h.removeAttributes(elms, 'data-html-12');
|
29162
|
+
elms = tmp.querySelectorAll('[data-html-13]');
|
29163
|
+
dom$h.removeAttributes(elms, 'data-html-13');
|
29164
|
+
elms = tmp.querySelectorAll('[data-html-14]');
|
29165
|
+
dom$h.removeAttributes(elms, 'data-html-14');
|
29166
|
+
elms = tmp.querySelectorAll('[data-html-15]');
|
29167
|
+
dom$h.removeAttributes(elms, 'data-html-15');
|
29168
|
+
elms = tmp.querySelectorAll('[data-html-16]');
|
29169
|
+
dom$h.removeAttributes(elms, 'data-html-16');
|
29170
|
+
elms = tmp.querySelectorAll('[data-html-17]');
|
29171
|
+
dom$h.removeAttributes(elms, 'data-html-17');
|
29172
|
+
elms = tmp.querySelectorAll('[data-html-18]');
|
29173
|
+
dom$h.removeAttributes(elms, 'data-html-18');
|
29174
|
+
elms = tmp.querySelectorAll('[data-html-19]');
|
29175
|
+
dom$h.removeAttributes(elms, 'data-html-19');
|
29176
|
+
elms = tmp.querySelectorAll('[data-html-20]');
|
29177
|
+
dom$h.removeAttributes(elms, 'data-html-20');
|
29178
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29179
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29180
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29181
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29182
|
+
elms = tmp.querySelectorAll('[data-html-22]');
|
29183
|
+
dom$h.removeAttributes(elms, 'data-html-22');
|
29184
|
+
elms = tmp.querySelectorAll('[data-html-23]');
|
29185
|
+
dom$h.removeAttributes(elms, 'data-html-23');
|
29186
|
+
elms = tmp.querySelectorAll('[data-html-24]');
|
29187
|
+
dom$h.removeAttributes(elms, 'data-html-24');
|
29188
|
+
elms = tmp.querySelectorAll('[data-html-25]');
|
29189
|
+
dom$h.removeAttributes(elms, 'data-html-25');
|
29190
|
+
} // cleaning
|
29191
|
+
|
29051
29192
|
|
29052
29193
|
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
29194
|
// '[data--400-bottom],[data--200-bottom],[data--100-bottom],[data-50-bottom],[data-200-bottom],[data-300-bottom],' +
|
@@ -29161,6 +29302,74 @@ class HtmlUtil {
|
|
29161
29302
|
Array.prototype.forEach.call(emptystyles, emptystyle => {
|
29162
29303
|
emptystyle.removeAttribute('style');
|
29163
29304
|
});
|
29305
|
+
|
29306
|
+
if (this.builder.shortenOutput) {
|
29307
|
+
elms = tmp.querySelectorAll('[data-noedit]');
|
29308
|
+
dom$h.removeAttributes(elms, 'data-noedit');
|
29309
|
+
elms = tmp.querySelectorAll('[data-module]');
|
29310
|
+
dom$h.removeAttributes(elms, 'data-module');
|
29311
|
+
elms = tmp.querySelectorAll('[data-module-desc]');
|
29312
|
+
dom$h.removeAttributes(elms, 'data-module-desc');
|
29313
|
+
elms = tmp.querySelectorAll('[data-dialog-width]');
|
29314
|
+
dom$h.removeAttributes(elms, 'data-dialog-width');
|
29315
|
+
elms = tmp.querySelectorAll('[data-dialog-height]');
|
29316
|
+
dom$h.removeAttributes(elms, 'data-dialog-height');
|
29317
|
+
elms = tmp.querySelectorAll('[data-html]');
|
29318
|
+
dom$h.removeAttributes(elms, 'data-html');
|
29319
|
+
elms = tmp.querySelectorAll('[data-settings]');
|
29320
|
+
dom$h.removeAttributes(elms, 'data-settings');
|
29321
|
+
elms = tmp.querySelectorAll('[data-html-1]');
|
29322
|
+
dom$h.removeAttributes(elms, 'data-html-1');
|
29323
|
+
elms = tmp.querySelectorAll('[data-html-2]');
|
29324
|
+
dom$h.removeAttributes(elms, 'data-html-2');
|
29325
|
+
elms = tmp.querySelectorAll('[data-html-3]');
|
29326
|
+
dom$h.removeAttributes(elms, 'data-html-3');
|
29327
|
+
elms = tmp.querySelectorAll('[data-html-4]');
|
29328
|
+
dom$h.removeAttributes(elms, 'data-html-4');
|
29329
|
+
elms = tmp.querySelectorAll('[data-html-5]');
|
29330
|
+
dom$h.removeAttributes(elms, 'data-html-5');
|
29331
|
+
elms = tmp.querySelectorAll('[data-html-6]');
|
29332
|
+
dom$h.removeAttributes(elms, 'data-html-6');
|
29333
|
+
elms = tmp.querySelectorAll('[data-html-7]');
|
29334
|
+
dom$h.removeAttributes(elms, 'data-html-7');
|
29335
|
+
elms = tmp.querySelectorAll('[data-html-8]');
|
29336
|
+
dom$h.removeAttributes(elms, 'data-html-8');
|
29337
|
+
elms = tmp.querySelectorAll('[data-html-9]');
|
29338
|
+
dom$h.removeAttributes(elms, 'data-html-9');
|
29339
|
+
elms = tmp.querySelectorAll('[data-html-10]');
|
29340
|
+
dom$h.removeAttributes(elms, 'data-html-10');
|
29341
|
+
elms = tmp.querySelectorAll('[data-html-12]');
|
29342
|
+
dom$h.removeAttributes(elms, 'data-html-12');
|
29343
|
+
elms = tmp.querySelectorAll('[data-html-13]');
|
29344
|
+
dom$h.removeAttributes(elms, 'data-html-13');
|
29345
|
+
elms = tmp.querySelectorAll('[data-html-14]');
|
29346
|
+
dom$h.removeAttributes(elms, 'data-html-14');
|
29347
|
+
elms = tmp.querySelectorAll('[data-html-15]');
|
29348
|
+
dom$h.removeAttributes(elms, 'data-html-15');
|
29349
|
+
elms = tmp.querySelectorAll('[data-html-16]');
|
29350
|
+
dom$h.removeAttributes(elms, 'data-html-16');
|
29351
|
+
elms = tmp.querySelectorAll('[data-html-17]');
|
29352
|
+
dom$h.removeAttributes(elms, 'data-html-17');
|
29353
|
+
elms = tmp.querySelectorAll('[data-html-18]');
|
29354
|
+
dom$h.removeAttributes(elms, 'data-html-18');
|
29355
|
+
elms = tmp.querySelectorAll('[data-html-19]');
|
29356
|
+
dom$h.removeAttributes(elms, 'data-html-19');
|
29357
|
+
elms = tmp.querySelectorAll('[data-html-20]');
|
29358
|
+
dom$h.removeAttributes(elms, 'data-html-20');
|
29359
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29360
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29361
|
+
elms = tmp.querySelectorAll('[data-html-21]');
|
29362
|
+
dom$h.removeAttributes(elms, 'data-html-21');
|
29363
|
+
elms = tmp.querySelectorAll('[data-html-22]');
|
29364
|
+
dom$h.removeAttributes(elms, 'data-html-22');
|
29365
|
+
elms = tmp.querySelectorAll('[data-html-23]');
|
29366
|
+
dom$h.removeAttributes(elms, 'data-html-23');
|
29367
|
+
elms = tmp.querySelectorAll('[data-html-24]');
|
29368
|
+
dom$h.removeAttributes(elms, 'data-html-24');
|
29369
|
+
elms = tmp.querySelectorAll('[data-html-25]');
|
29370
|
+
dom$h.removeAttributes(elms, 'data-html-25');
|
29371
|
+
}
|
29372
|
+
|
29164
29373
|
html = tmp.innerHTML.trim();
|
29165
29374
|
html = html.replace(/<font/g, '<span').replace(/<\/font/g, '</span');
|
29166
29375
|
} // elm = builderStuff.querySelector('#tmp_content');
|
@@ -29178,6 +29387,13 @@ class HtmlUtil {
|
|
29178
29387
|
return html;
|
29179
29388
|
}
|
29180
29389
|
|
29390
|
+
beautify(html) {
|
29391
|
+
let beautify = JsBeautify.html;
|
29392
|
+
html = beautify(html);
|
29393
|
+
html = html.replace(/(\r\n|\r|\n){3,}/g, '$1\n');
|
29394
|
+
return html;
|
29395
|
+
}
|
29396
|
+
|
29181
29397
|
}
|
29182
29398
|
|
29183
29399
|
class UndoRedo {
|
@@ -29728,6 +29944,14 @@ const prepareSvgIcons = builder => {
|
|
29728
29944
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
29729
29945
|
<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
29946
|
</symbol>
|
29947
|
+
|
29948
|
+
<symbol id="icon-download" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
29949
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
29950
|
+
<path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"></path>
|
29951
|
+
<path d="M7 11l5 5l5 -5"></path>
|
29952
|
+
<path d="M12 4l0 12"></path>
|
29953
|
+
</symbol>
|
29954
|
+
|
29731
29955
|
</defs>
|
29732
29956
|
</svg>`;
|
29733
29957
|
builder.dom.appendHtml(builder.builderStuff, html);
|
@@ -36765,7 +36989,7 @@ function getOffset(element) {
|
|
36765
36989
|
top: box.top + (window.pageYOffset - document.documentElement.clientTop)
|
36766
36990
|
};
|
36767
36991
|
}
|
36768
|
-
var location = WINDOW.location;
|
36992
|
+
var location$1 = WINDOW.location;
|
36769
36993
|
var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i;
|
36770
36994
|
/**
|
36771
36995
|
* Check if the given URL is a cross origin URL.
|
@@ -36775,7 +36999,7 @@ var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i;
|
|
36775
36999
|
|
36776
37000
|
function isCrossOriginURL(url) {
|
36777
37001
|
var parts = url.match(REGEXP_ORIGINS);
|
36778
|
-
return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);
|
37002
|
+
return parts !== null && (parts[1] !== location$1.protocol || parts[2] !== location$1.hostname || parts[3] !== location$1.port);
|
36779
37003
|
}
|
36780
37004
|
/**
|
36781
37005
|
* Add timestamp to the given URL.
|
@@ -67516,10 +67740,12 @@ class Code {
|
|
67516
67740
|
viewhtml = this.builderStuff.querySelector('.viewhtml');
|
67517
67741
|
}
|
67518
67742
|
|
67519
|
-
let textarea = viewhtml.querySelector('textarea'); //
|
67520
|
-
// let beautify = JsBeautify.html;
|
67521
|
-
// html = beautify(html);
|
67743
|
+
let textarea = viewhtml.querySelector('textarea'); // Prevent {id} get formatted.
|
67522
67744
|
|
67745
|
+
html = html.replaceAll('{id}', '__id__');
|
67746
|
+
let beautify = JsBeautify.html;
|
67747
|
+
html = beautify(html);
|
67748
|
+
html = html.replaceAll('__id__', '{id}');
|
67523
67749
|
textarea.value = html;
|
67524
67750
|
this.htmlUtil.view('code');
|
67525
67751
|
});
|
@@ -76381,7 +76607,7 @@ class ElementTextStyles {
|
|
76381
76607
|
var sTextAlign = elm.style.textAlign;
|
76382
76608
|
this.panelStuff.querySelector('#inpElmTextAlign').value = sTextAlign;
|
76383
76609
|
this.panelStuff.querySelector('#inpElmFontSize').value = '';
|
76384
|
-
var nFontSize =
|
76610
|
+
var nFontSize = parseFloat(elm.style.fontSize);
|
76385
76611
|
|
76386
76612
|
if (!isNaN(nFontSize)) {
|
76387
76613
|
this.panelStuff.querySelector('#inpElmFontSize').value = nFontSize;
|
@@ -76441,7 +76667,7 @@ class ElementTextStyles {
|
|
76441
76667
|
if (!isNaN(elm.style.lineHeight)) {
|
76442
76668
|
this.panelStuff.querySelector('#inpElmLineHeight').value = elm.style.lineHeight;
|
76443
76669
|
} else {
|
76444
|
-
var nLineHeight =
|
76670
|
+
var nLineHeight = parseFloat(elm.style.lineHeight);
|
76445
76671
|
|
76446
76672
|
if (!isNaN(nLineHeight)) {
|
76447
76673
|
this.panelStuff.querySelector('#inpElmLineHeight').value = nLineHeight;
|
@@ -76462,14 +76688,14 @@ class ElementTextStyles {
|
|
76462
76688
|
|
76463
76689
|
this.panelStuff.querySelector('#inpElmLineHeightUnit').value = sLineHeightUnit;
|
76464
76690
|
this.panelStuff.querySelector('#inpElmLetterSpacing').value = '';
|
76465
|
-
var nLetterSpacing =
|
76691
|
+
var nLetterSpacing = parseFloat(elm.style.letterSpacing);
|
76466
76692
|
|
76467
76693
|
if (!isNaN(nLetterSpacing)) {
|
76468
76694
|
this.panelStuff.querySelector('#inpElmLetterSpacing').value = nLetterSpacing;
|
76469
76695
|
}
|
76470
76696
|
|
76471
76697
|
this.panelStuff.querySelector('#inpElmWordSpacing').value = '';
|
76472
|
-
var nWordSpacing =
|
76698
|
+
var nWordSpacing = parseFloat(elm.style.wordSpacing);
|
76473
76699
|
|
76474
76700
|
if (!isNaN(nWordSpacing)) {
|
76475
76701
|
this.panelStuff.querySelector('#inpElmWordSpacing').value = nWordSpacing;
|
@@ -89103,6 +89329,39 @@ class ContentBuilder {
|
|
89103
89329
|
</div>
|
89104
89330
|
</div>
|
89105
89331
|
`,
|
89332
|
+
pageTemplate: `<!DOCTYPE html>
|
89333
|
+
<html lang="en">
|
89334
|
+
<head>
|
89335
|
+
<meta charset="utf-8">
|
89336
|
+
<title>Page</title>
|
89337
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
89338
|
+
<meta name="description" content="">
|
89339
|
+
<link rel="shortcut icon" href="#" />
|
89340
|
+
|
89341
|
+
<link href="[%PATH%]/assets/minimalist-blocks/content.css" rel="stylesheet" type="text/css" />
|
89342
|
+
|
89343
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.core.css" rel="stylesheet" type="text/css" />
|
89344
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.theme.css" rel="stylesheet" type="text/css" />
|
89345
|
+
<script src="[%PATH%]/assets/scripts/glide/glide.js" type="text/javascript"></script>
|
89346
|
+
|
89347
|
+
<style>
|
89348
|
+
.container {
|
89349
|
+
margin: 150px auto 0;
|
89350
|
+
max-width: 800px;
|
89351
|
+
width: 100%;
|
89352
|
+
padding: 0 20px;
|
89353
|
+
box-sizing: border-box;
|
89354
|
+
}
|
89355
|
+
</style>
|
89356
|
+
</head>
|
89357
|
+
<body>
|
89358
|
+
|
89359
|
+
<div class="container">
|
89360
|
+
[%CONTENT%]
|
89361
|
+
</div>
|
89362
|
+
|
89363
|
+
</body>
|
89364
|
+
</html>`,
|
89106
89365
|
|
89107
89366
|
/*
|
89108
89367
|
onZoomStart: () => {
|
@@ -90614,7 +90873,11 @@ class ContentBuilder {
|
|
90614
90873
|
|
90615
90874
|
const builders = this.doc.querySelectorAll(this.opts.container);
|
90616
90875
|
Array.prototype.forEach.call(builders, builder => {
|
90617
|
-
builder.innerHTML = htmlutil.readHtml(builder, true);
|
90876
|
+
// builder.innerHTML = htmlutil.readHtml(builder, true);
|
90877
|
+
let html = htmlutil.readHtml(builder, false);
|
90878
|
+
let range = this.doc.createRange();
|
90879
|
+
builder.innerHTML = '';
|
90880
|
+
builder.appendChild(range.createContextualFragment(html)); // Use createContextualFragment so that embedded javascript code (code block) will be executed
|
90618
90881
|
});
|
90619
90882
|
Array.prototype.forEach.call(builders, builder => {
|
90620
90883
|
builder.removeAttribute('data-sort');
|
@@ -90941,6 +91204,52 @@ class ContentBuilder {
|
|
90941
91204
|
|
90942
91205
|
saveForUndo(checkLater) {
|
90943
91206
|
this.uo.saveForUndo(checkLater);
|
91207
|
+
}
|
91208
|
+
|
91209
|
+
download(options = {}) {
|
91210
|
+
this.export(options, true);
|
91211
|
+
}
|
91212
|
+
|
91213
|
+
export(options = {}, shortenOutput = false) {
|
91214
|
+
let pageTemplate = this.pageTemplate;
|
91215
|
+
let output = ''; // [%CONTENT%]
|
91216
|
+
|
91217
|
+
this.makeAbsolute = true; //To make absolute (for Export/Download)
|
91218
|
+
|
91219
|
+
this.shortenOutput = shortenOutput;
|
91220
|
+
let html = this.html();
|
91221
|
+
this.makeAbsolute = false;
|
91222
|
+
this.shortenOutput = false;
|
91223
|
+
output = pageTemplate.replace('[%CONTENT%]', html); // Custom
|
91224
|
+
|
91225
|
+
if (options.replace) {
|
91226
|
+
options.replace.forEach(rule => {
|
91227
|
+
output = output.replaceAll(`${rule[0]}`, rule[1]);
|
91228
|
+
});
|
91229
|
+
} // [%PATH%]
|
91230
|
+
|
91231
|
+
|
91232
|
+
if (options.path) {
|
91233
|
+
output = output.replaceAll('[%PATH%]', options.path);
|
91234
|
+
} else {
|
91235
|
+
let urlBase;
|
91236
|
+
urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
91237
|
+
output = output.replaceAll('[%PATH%]', urlBase);
|
91238
|
+
} // Beautify
|
91239
|
+
|
91240
|
+
|
91241
|
+
output = this.beautify(output);
|
91242
|
+
const a = document.createElement('a');
|
91243
|
+
a.href = window.URL.createObjectURL(new Blob([output], {
|
91244
|
+
type: 'text/plain'
|
91245
|
+
}));
|
91246
|
+
a.download = 'page.html';
|
91247
|
+
a.click();
|
91248
|
+
}
|
91249
|
+
|
91250
|
+
beautify(html) {
|
91251
|
+
const htmlutil = new HtmlUtil(this);
|
91252
|
+
return htmlutil.beautify(html);
|
90944
91253
|
} // Module related
|
90945
91254
|
|
90946
91255
|
|
@@ -101477,6 +101786,59 @@ class ContentBox {
|
|
101477
101786
|
</div>
|
101478
101787
|
</div>
|
101479
101788
|
`,
|
101789
|
+
pageTemplate: `
|
101790
|
+
<!DOCTYPE html>
|
101791
|
+
<html lang="en">
|
101792
|
+
<head>
|
101793
|
+
<meta charset="utf-8">
|
101794
|
+
<title>Page</title>
|
101795
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
101796
|
+
<meta name="description" content="">
|
101797
|
+
<link rel="shortcut icon" href="#" />
|
101798
|
+
|
101799
|
+
<link href="[%PATH%]/assets/minimalist-blocks/content.css" rel="stylesheet" type="text/css" />
|
101800
|
+
<link href="[%PATH%]/box/box-flex.css" rel="stylesheet" type="text/css" />
|
101801
|
+
|
101802
|
+
[%MAINCSS%]
|
101803
|
+
[%SECTIONCSS%]
|
101804
|
+
</head>
|
101805
|
+
<body style="touch-action: pan-y">
|
101806
|
+
|
101807
|
+
<main id="main">
|
101808
|
+
<div class="is-wrapper">
|
101809
|
+
[%CONTENT%]
|
101810
|
+
</div>
|
101811
|
+
</main>
|
101812
|
+
|
101813
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.core.css" rel="stylesheet" type="text/css" />
|
101814
|
+
<link href="[%PATH%]/assets/scripts/glide/css/glide.theme.css" rel="stylesheet" type="text/css" />
|
101815
|
+
<script src="[%PATH%]/assets/scripts/glide/glide.js" type="text/javascript"></script>
|
101816
|
+
|
101817
|
+
<link href="[%PATH%]/assets/scripts/navbar/navbar.css" rel="stylesheet" type="text/css" />
|
101818
|
+
<script src="[%PATH%]/assets/scripts/navbar/navbar.min.js" type="text/javascript"></script>
|
101819
|
+
|
101820
|
+
<script src="[%PATH%]/box/box-flex.js" type="text/javascript"></script>
|
101821
|
+
|
101822
|
+
<!-- Optional: if you want to add smooth scrolling -->
|
101823
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/smoothscroll/1.4.10/SmoothScroll.min.js" type="text/javascript"></script>
|
101824
|
+
<script>
|
101825
|
+
SmoothScroll({
|
101826
|
+
frameRate: 150,
|
101827
|
+
animationTime: 800,
|
101828
|
+
stepSize: 120,
|
101829
|
+
pulseAlgorithm: 1,
|
101830
|
+
pulseScale: 4,
|
101831
|
+
pulseNormalize: 1,
|
101832
|
+
accelerationDelta: 300,
|
101833
|
+
accelerationMax: 2,
|
101834
|
+
keyboardSupport: 1,
|
101835
|
+
arrowScroll: 50,
|
101836
|
+
fixedBackground: 0
|
101837
|
+
});
|
101838
|
+
</script>
|
101839
|
+
</body>
|
101840
|
+
</html>
|
101841
|
+
`,
|
101480
101842
|
contentStyleWithSample: false,
|
101481
101843
|
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
101844
|
contentStyles: {
|
@@ -106032,7 +106394,7 @@ class ContentBox {
|
|
106032
106394
|
this.editbox.boxImage(url, err);
|
106033
106395
|
}
|
106034
106396
|
|
106035
|
-
mainCss() {
|
106397
|
+
mainCss(absolute) {
|
106036
106398
|
let links = this.doc.getElementsByTagName('link');
|
106037
106399
|
let arrLinks = [];
|
106038
106400
|
|
@@ -106040,7 +106402,17 @@ class ContentBox {
|
|
106040
106402
|
let src = links[i].href.toLowerCase();
|
106041
106403
|
|
106042
106404
|
if (src.indexOf('basetype-') != -1) {
|
106043
|
-
|
106405
|
+
if (absolute) {
|
106406
|
+
// make absolute
|
106407
|
+
const link = links[i].cloneNode();
|
106408
|
+
let imgUrl = link.href;
|
106409
|
+
let urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
106410
|
+
imgUrl = imgUrl.replace(urlBase, '[%PATH%]');
|
106411
|
+
link.href = imgUrl;
|
106412
|
+
arrLinks.push(link.outerHTML);
|
106413
|
+
} else {
|
106414
|
+
arrLinks.push(links[i].outerHTML);
|
106415
|
+
}
|
106044
106416
|
}
|
106045
106417
|
} // arrLinks = [...new Set(arrLinks)]; // remove duplicates not needed, always single css
|
106046
106418
|
|
@@ -106064,7 +106436,7 @@ class ContentBox {
|
|
106064
106436
|
return arrLinks;
|
106065
106437
|
}
|
106066
106438
|
|
106067
|
-
sectionCss() {
|
106439
|
+
sectionCss(absolute) {
|
106068
106440
|
let links = this.doc.getElementsByTagName('link');
|
106069
106441
|
let arrLinks = [];
|
106070
106442
|
|
@@ -106072,7 +106444,17 @@ class ContentBox {
|
|
106072
106444
|
let src = links[i].href.toLowerCase();
|
106073
106445
|
|
106074
106446
|
if (src.indexOf('basetype-') != -1) ; else if (src.indexOf('type-') != -1) {
|
106075
|
-
|
106447
|
+
if (absolute) {
|
106448
|
+
// make absolute
|
106449
|
+
const link = links[i].cloneNode();
|
106450
|
+
let imgUrl = link.href;
|
106451
|
+
let urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
106452
|
+
imgUrl = imgUrl.replace(urlBase, '[%PATH%]');
|
106453
|
+
link.href = imgUrl;
|
106454
|
+
arrLinks.push(link.outerHTML);
|
106455
|
+
} else {
|
106456
|
+
arrLinks.push(links[i].outerHTML);
|
106457
|
+
}
|
106076
106458
|
}
|
106077
106459
|
}
|
106078
106460
|
|
@@ -106100,10 +106482,56 @@ class ContentBox {
|
|
106100
106482
|
|
106101
106483
|
html(bForView) {
|
106102
106484
|
this.cleanupUnused();
|
106103
|
-
|
106485
|
+
const html = this.editor.readHtml(this.wrapperEl, bForView, true);
|
106104
106486
|
return html;
|
106105
106487
|
}
|
106106
106488
|
|
106489
|
+
download(options = {}) {
|
106490
|
+
this.export(options, true);
|
106491
|
+
}
|
106492
|
+
|
106493
|
+
export(options = {}, shortenOutput = false) {
|
106494
|
+
let pageTemplate = this.pageTemplate;
|
106495
|
+
let output = ''; // [%CONTENT%]
|
106496
|
+
|
106497
|
+
this.cleanupUnused();
|
106498
|
+
this.editor.makeAbsolute = true;
|
106499
|
+
this.editor.shortenOutput = shortenOutput;
|
106500
|
+
let html = this.editor.readHtml(this.wrapperEl, false, true);
|
106501
|
+
this.editor.makeAbsolute = false;
|
106502
|
+
this.editor.shortenOutput = false;
|
106503
|
+
output = pageTemplate.replace('[%CONTENT%]', html); // [%MAINCSS%] & [%SECTIONCSS%]
|
106504
|
+
|
106505
|
+
let mainCss = this.mainCss(true);
|
106506
|
+
let sectionCss = this.sectionCss(true);
|
106507
|
+
output = output.replaceAll('[%MAINCSS%]', mainCss);
|
106508
|
+
output = output.replaceAll('[%SECTIONCSS%]', sectionCss); // Custom
|
106509
|
+
|
106510
|
+
if (options.replace) {
|
106511
|
+
options.replace.forEach(rule => {
|
106512
|
+
output = output.replaceAll(`${rule[0]}`, rule[1]);
|
106513
|
+
});
|
106514
|
+
} // [%PATH%]
|
106515
|
+
|
106516
|
+
|
106517
|
+
if (options.path) {
|
106518
|
+
output = output.replaceAll('[%PATH%]', options.path);
|
106519
|
+
} else {
|
106520
|
+
let urlBase;
|
106521
|
+
urlBase = location.href.substring(0, location.href.lastIndexOf('/'));
|
106522
|
+
output = output.replaceAll('[%PATH%]', urlBase);
|
106523
|
+
} // Beautify
|
106524
|
+
|
106525
|
+
|
106526
|
+
output = this.editor.beautify(output);
|
106527
|
+
const a = document.createElement('a');
|
106528
|
+
a.href = window.URL.createObjectURL(new Blob([output], {
|
106529
|
+
type: 'text/plain'
|
106530
|
+
}));
|
106531
|
+
a.download = 'page.html';
|
106532
|
+
a.click();
|
106533
|
+
}
|
106534
|
+
|
106107
106535
|
viewZoom() {
|
106108
106536
|
this.editor.viewZoom();
|
106109
106537
|
}
|