@jsenv/core 23.1.3 → 23.2.2
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/dist/jsenv_browser_system.js +36 -99
- package/dist/jsenv_browser_system.js.map +12 -21
- package/dist/jsenv_compile_proxy.js +18 -82
- package/dist/jsenv_compile_proxy.js.map +11 -21
- package/dist/jsenv_exploring_index.js +127 -274
- package/dist/jsenv_exploring_index.js.map +76 -90
- package/dist/jsenv_exploring_redirector.js +21 -89
- package/dist/jsenv_exploring_redirector.js.map +13 -25
- package/dist/jsenv_toolbar.js +81 -149
- package/dist/jsenv_toolbar.js.map +50 -61
- package/dist/jsenv_toolbar_injector.js +185 -231
- package/dist/jsenv_toolbar_injector.js.map +30 -42
- package/package.json +8 -9
- package/src/abort/abortable.js +172 -0
- package/src/abort/callback_list.js +64 -0
- package/src/abort/callback_race.js +34 -0
- package/src/abort/cleaner.js +22 -0
- package/src/abort/main.js +32 -0
- package/src/abort/process_teardown_events.js +59 -0
- package/src/buildProject.js +132 -123
- package/src/execute.js +108 -107
- package/src/executeTestPlan.js +107 -125
- package/src/importUsingChildProcess.js +2 -1
- package/src/internal/browser-launcher/executeHtmlFile.js +33 -12
- package/src/internal/browser-utils/fetch-browser.js +4 -29
- package/src/internal/browser-utils/fetchUsingXHR.js +5 -7
- package/src/internal/building/buildUsingRollup.js +60 -24
- package/src/internal/building/createJsenvRollupPlugin.js +13 -31
- package/src/internal/building/ressource_builder.js +3 -6
- package/src/internal/building/sourcemap_loader.js +4 -5
- package/src/internal/building/url_fetcher.js +2 -5
- package/src/internal/building/url_loader.js +3 -6
- package/src/internal/compiling/compileFile.js +1 -2
- package/src/internal/compiling/createCompiledFileService.js +8 -9
- package/src/internal/compiling/startCompileServer.js +74 -135
- package/src/internal/executing/coverage/generateCoverageJsonFile.js +20 -3
- package/src/internal/executing/coverage/relativeUrlToEmptyCoverage.js +19 -30
- package/src/internal/executing/coverage/reportToCoverage.js +44 -24
- package/src/internal/executing/coverage/v8CoverageFromNodeV8Directory.js +2 -15
- package/src/internal/executing/createSummaryLog.js +50 -37
- package/src/internal/executing/executeConcurrently.js +89 -47
- package/src/internal/executing/executePlan.js +33 -7
- package/src/internal/executing/executionLogs.js +25 -28
- package/src/internal/executing/execution_colors.js +15 -0
- package/src/internal/executing/generateExecutionSteps.js +3 -2
- package/src/internal/executing/launchAndExecute.js +217 -261
- package/src/internal/exploring/fetchExploringJson.js +3 -4
- package/src/internal/fetchUrl.js +6 -2
- package/src/internal/logs/log_style.js +16 -28
- package/src/internal/logs/msAsDuration.js +1 -1
- package/src/internal/node-launcher/createChildProcessOptions.js +4 -5
- package/src/internal/node-launcher/createControllableNodeProcess.js +117 -229
- package/src/internal/node-launcher/kill_process_tree.js +76 -0
- package/src/internal/node-launcher/nodeControllableFile.mjs +16 -10
- package/src/internal/{promise_track_race.js → promise_race.js} +2 -2
- package/src/internal/runtime/s.js +25 -24
- package/src/internal/toolbar/toolbar.html +157 -61
- package/src/internal/toolbar/toolbar.injector.js +8 -0
- package/src/internal/toolbar/util/animation.js +3 -7
- package/src/internal/toolbar/util/fetching.js +1 -30
- package/src/jsenvServiceWorkerFinalizer.js +1 -2
- package/src/launchBrowser.js +131 -127
- package/src/launchNode.js +29 -17
- package/src/playwright_browser_versions.js +3 -3
- package/src/requireUsingChildProcess.js +2 -1
- package/src/signal/signal.js +65 -0
- package/src/startExploring.js +70 -72
- package/src/internal/executeJsenvAsyncFunction.js +0 -34
- package/src/internal/toolbar/animation/toolbar-movie-icon.svg +0 -15
- package/src/internal/toolbar/compilation/flask.svg +0 -7
- package/src/internal/toolbar/compilation/info.svg +0 -9
- package/src/internal/toolbar/compilation/loupe.svg +0 -11
- package/src/internal/toolbar/compilation/toolbar_compilation.svg +0 -11
- package/src/internal/toolbar/eventsource/toolbar-power-icon.svg +0 -10
- package/src/internal/toolbar/eventsource/toolbar-power-off-icon.svg +0 -10
- package/src/internal/toolbar/responsive/toolbar-dots-icon.svg +0 -10
- package/src/internal/toolbar/settings/toolbar-settings-icon.svg +0 -9
- package/src/internal/toolbar/theme/toolbar-palette-icon.svg +0 -10
- package/src/internal/toolbar/toolbar-cross-icon.svg +0 -10
- package/src/internal/toolbar/toolbar-loading-icon.svg +0 -102
- package/src/internal/toolbar/toolbar-notif-icon.svg +0 -9
- package/src/internal/trackRessources.js +0 -23
|
@@ -41,69 +41,6 @@
|
|
|
41
41
|
return string;
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
var objectWithoutPropertiesLoose = (function (source, excluded) {
|
|
45
|
-
if (source === null) return {};
|
|
46
|
-
var target = {};
|
|
47
|
-
var sourceKeys = Object.keys(source);
|
|
48
|
-
var key;
|
|
49
|
-
var i;
|
|
50
|
-
|
|
51
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
|
52
|
-
key = sourceKeys[i];
|
|
53
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
54
|
-
target[key] = source[key];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return target;
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
var _objectWithoutProperties = (function (source, excluded) {
|
|
61
|
-
if (source === null) return {};
|
|
62
|
-
var target = objectWithoutPropertiesLoose(source, excluded);
|
|
63
|
-
var key;
|
|
64
|
-
var i;
|
|
65
|
-
|
|
66
|
-
if (Object.getOwnPropertySymbols) {
|
|
67
|
-
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
68
|
-
|
|
69
|
-
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
70
|
-
key = sourceSymbolKeys[i];
|
|
71
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
72
|
-
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
73
|
-
target[key] = source[key];
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return target;
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
var createCancellationToken = function createCancellationToken() {
|
|
81
|
-
var register = function register(callback) {
|
|
82
|
-
if (typeof callback !== "function") {
|
|
83
|
-
throw new Error("callback must be a function, got ".concat(callback));
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return {
|
|
87
|
-
callback: callback,
|
|
88
|
-
unregister: function unregister() {}
|
|
89
|
-
};
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
var throwIfRequested = function throwIfRequested() {
|
|
93
|
-
return undefined;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
return {
|
|
97
|
-
register: register,
|
|
98
|
-
cancellationRequested: false,
|
|
99
|
-
throwIfRequested: throwIfRequested
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
var isCancelError = function isCancelError(value) {
|
|
104
|
-
return value && _typeof(value) === "object" && value.name === "CANCEL_ERROR";
|
|
105
|
-
};
|
|
106
|
-
|
|
107
44
|
function ownKeys(object, enumerableOnly) {
|
|
108
45
|
var keys = Object.keys(object);
|
|
109
46
|
|
|
@@ -142,8 +79,41 @@
|
|
|
142
79
|
return target;
|
|
143
80
|
}
|
|
144
81
|
|
|
145
|
-
|
|
146
|
-
|
|
82
|
+
var objectWithoutPropertiesLoose = (function (source, excluded) {
|
|
83
|
+
if (source === null) return {};
|
|
84
|
+
var target = {};
|
|
85
|
+
var sourceKeys = Object.keys(source);
|
|
86
|
+
var key;
|
|
87
|
+
var i;
|
|
88
|
+
|
|
89
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
90
|
+
key = sourceKeys[i];
|
|
91
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
92
|
+
target[key] = source[key];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return target;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
var _objectWithoutProperties = (function (source, excluded) {
|
|
99
|
+
if (source === null) return {};
|
|
100
|
+
var target = objectWithoutPropertiesLoose(source, excluded);
|
|
101
|
+
var key;
|
|
102
|
+
var i;
|
|
103
|
+
|
|
104
|
+
if (Object.getOwnPropertySymbols) {
|
|
105
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
106
|
+
|
|
107
|
+
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
108
|
+
key = sourceSymbolKeys[i];
|
|
109
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
110
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
111
|
+
target[key] = source[key];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return target;
|
|
116
|
+
});
|
|
147
117
|
|
|
148
118
|
function _await$4(value, then, direct) {
|
|
149
119
|
if (direct) {
|
|
@@ -157,7 +127,7 @@
|
|
|
157
127
|
return then ? value.then(then) : value;
|
|
158
128
|
}
|
|
159
129
|
|
|
160
|
-
function _async$
|
|
130
|
+
function _async$4(f) {
|
|
161
131
|
return function () {
|
|
162
132
|
for (var args = [], i = 0; i < arguments.length; i++) {
|
|
163
133
|
args[i] = arguments[i];
|
|
@@ -184,10 +154,9 @@
|
|
|
184
154
|
}
|
|
185
155
|
}
|
|
186
156
|
|
|
187
|
-
var fetchUsingXHR = _async$
|
|
157
|
+
var fetchUsingXHR = _async$4(function (url) {
|
|
188
158
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
189
|
-
|
|
190
|
-
cancellationToken = _ref$cancellationToke === void 0 ? createCancellationToken() : _ref$cancellationToke,
|
|
159
|
+
signal = _ref.signal,
|
|
191
160
|
_ref$method = _ref.method,
|
|
192
161
|
method = _ref$method === void 0 ? "GET" : _ref$method,
|
|
193
162
|
_ref$credentials = _ref.credentials,
|
|
@@ -236,9 +205,11 @@
|
|
|
236
205
|
bodyPromise.resolve();
|
|
237
206
|
};
|
|
238
207
|
|
|
239
|
-
|
|
208
|
+
signal.addEventListener("abort", function () {
|
|
240
209
|
xhr.abort();
|
|
241
|
-
|
|
210
|
+
var abortError = new Error("aborted");
|
|
211
|
+
abortError.name = "AbortError";
|
|
212
|
+
failure(abortError);
|
|
242
213
|
});
|
|
243
214
|
|
|
244
215
|
xhr.onreadystatechange = function () {
|
|
@@ -311,7 +282,7 @@
|
|
|
311
282
|
return _call$1(text, JSON.parse);
|
|
312
283
|
};
|
|
313
284
|
|
|
314
|
-
var blob = _async$
|
|
285
|
+
var blob = _async$4(function () {
|
|
315
286
|
if (!hasBlob) {
|
|
316
287
|
throw new Error("blob not supported");
|
|
317
288
|
}
|
|
@@ -348,7 +319,7 @@
|
|
|
348
319
|
});
|
|
349
320
|
};
|
|
350
321
|
|
|
351
|
-
var formData = _async$
|
|
322
|
+
var formData = _async$4(function () {
|
|
352
323
|
if (!hasFormData) {
|
|
353
324
|
throw new Error("formData not supported");
|
|
354
325
|
}
|
|
@@ -529,7 +500,7 @@
|
|
|
529
500
|
return form;
|
|
530
501
|
};
|
|
531
502
|
|
|
532
|
-
var blobToArrayBuffer = _async$
|
|
503
|
+
var blobToArrayBuffer = _async$4(function (blob) {
|
|
533
504
|
var reader = new FileReader();
|
|
534
505
|
var promise = fileReaderReady(reader);
|
|
535
506
|
reader.readAsArrayBuffer(blob);
|
|
@@ -578,7 +549,7 @@
|
|
|
578
549
|
return view.buffer;
|
|
579
550
|
};
|
|
580
551
|
|
|
581
|
-
var _excluded = ["
|
|
552
|
+
var _excluded = ["mode"];
|
|
582
553
|
|
|
583
554
|
function _await$3(value, then, direct) {
|
|
584
555
|
if (direct) {
|
|
@@ -592,37 +563,16 @@
|
|
|
592
563
|
return then ? value.then(then) : value;
|
|
593
564
|
}
|
|
594
565
|
|
|
595
|
-
var fetchNative = _async$
|
|
596
|
-
|
|
566
|
+
var fetchNative = _async$3(function (url) {
|
|
597
567
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
598
568
|
|
|
599
|
-
var _ref$
|
|
600
|
-
cancellationToken = _ref$cancellationToke === void 0 ? createCancellationToken() : _ref$cancellationToke,
|
|
601
|
-
_ref$mode = _ref.mode,
|
|
569
|
+
var _ref$mode = _ref.mode,
|
|
602
570
|
mode = _ref$mode === void 0 ? "cors" : _ref$mode,
|
|
603
571
|
options = _objectWithoutProperties(_ref, _excluded);
|
|
604
572
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
cancelError = reason;
|
|
609
|
-
abortController.abort(reason);
|
|
610
|
-
});
|
|
611
|
-
var response;
|
|
612
|
-
return _continue(_catch$1(function () {
|
|
613
|
-
return _await$3(window.fetch(url, _objectSpread2({
|
|
614
|
-
signal: abortController.signal,
|
|
615
|
-
mode: mode
|
|
616
|
-
}, options)), function (_window$fetch) {
|
|
617
|
-
response = _window$fetch;
|
|
618
|
-
});
|
|
619
|
-
}, function (e) {
|
|
620
|
-
if (cancelError && e.name === "AbortError") {
|
|
621
|
-
throw cancelError;
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
throw e;
|
|
625
|
-
}), function (_result) {
|
|
573
|
+
return _await$3(window.fetch(url, _objectSpread2({
|
|
574
|
+
mode: mode
|
|
575
|
+
}, options)), function (response) {
|
|
626
576
|
return {
|
|
627
577
|
url: response.url,
|
|
628
578
|
status: response.status,
|
|
@@ -647,33 +597,7 @@
|
|
|
647
597
|
});
|
|
648
598
|
});
|
|
649
599
|
|
|
650
|
-
function
|
|
651
|
-
try {
|
|
652
|
-
var result = body();
|
|
653
|
-
} catch (e) {
|
|
654
|
-
return recover(e);
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
if (result && result.then) {
|
|
658
|
-
return result.then(void 0, recover);
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
return result;
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
var responseToHeaders = function responseToHeaders(response) {
|
|
665
|
-
var headers = {};
|
|
666
|
-
response.headers.forEach(function (value, name) {
|
|
667
|
-
headers[name] = value;
|
|
668
|
-
});
|
|
669
|
-
return headers;
|
|
670
|
-
};
|
|
671
|
-
|
|
672
|
-
function _continue(value, then) {
|
|
673
|
-
return value && value.then ? value.then(then) : then(value);
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
function _async$2(f) {
|
|
600
|
+
function _async$3(f) {
|
|
677
601
|
return function () {
|
|
678
602
|
for (var args = [], i = 0; i < arguments.length; i++) {
|
|
679
603
|
args[i] = arguments[i];
|
|
@@ -687,6 +611,14 @@
|
|
|
687
611
|
};
|
|
688
612
|
}
|
|
689
613
|
|
|
614
|
+
var responseToHeaders = function responseToHeaders(response) {
|
|
615
|
+
var headers = {};
|
|
616
|
+
response.headers.forEach(function (value, name) {
|
|
617
|
+
headers[name] = value;
|
|
618
|
+
});
|
|
619
|
+
return headers;
|
|
620
|
+
};
|
|
621
|
+
|
|
690
622
|
var fetchUrl = typeof window.fetch === "function" && typeof window.AbortController === "function" ? fetchNative : fetchUsingXHR;
|
|
691
623
|
|
|
692
624
|
function _await$2(value, then, direct) {
|
|
@@ -701,7 +633,7 @@
|
|
|
701
633
|
return then ? value.then(then) : value;
|
|
702
634
|
}
|
|
703
635
|
|
|
704
|
-
function _async$
|
|
636
|
+
function _async$2(f) {
|
|
705
637
|
return function () {
|
|
706
638
|
for (var args = [], i = 0; i < arguments.length; i++) {
|
|
707
639
|
args[i] = arguments[i];
|
|
@@ -715,7 +647,7 @@
|
|
|
715
647
|
};
|
|
716
648
|
}
|
|
717
649
|
|
|
718
|
-
var fetchJson = _async$
|
|
650
|
+
var fetchJson = _async$2(function (url) {
|
|
719
651
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
720
652
|
return _await$2(fetchUrl(url, options), function (response) {
|
|
721
653
|
return _await$2(response.json());
|
|
@@ -748,7 +680,7 @@
|
|
|
748
680
|
return result;
|
|
749
681
|
}
|
|
750
682
|
|
|
751
|
-
function _async(f) {
|
|
683
|
+
function _async$1(f) {
|
|
752
684
|
return function () {
|
|
753
685
|
for (var args = [], i = 0; i < arguments.length; i++) {
|
|
754
686
|
args[i] = arguments[i];
|
|
@@ -762,16 +694,16 @@
|
|
|
762
694
|
};
|
|
763
695
|
}
|
|
764
696
|
|
|
765
|
-
var fetchExploringJson = _async(function () {
|
|
697
|
+
var fetchExploringJson = _async$1(function () {
|
|
766
698
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
767
|
-
|
|
699
|
+
signal = _ref.signal;
|
|
768
700
|
|
|
769
701
|
return _catch(function () {
|
|
770
702
|
return _await$1(fetchJson("/.jsenv/exploring.json", {
|
|
771
|
-
|
|
703
|
+
signal: signal
|
|
772
704
|
}));
|
|
773
705
|
}, function (e) {
|
|
774
|
-
if (
|
|
706
|
+
if (signal && signal.aborted && e.name === "AbortError") {
|
|
775
707
|
throw e;
|
|
776
708
|
}
|
|
777
709
|
|
|
@@ -929,116 +861,138 @@
|
|
|
929
861
|
}
|
|
930
862
|
}
|
|
931
863
|
|
|
932
|
-
|
|
864
|
+
function _async(f) {
|
|
865
|
+
return function () {
|
|
866
|
+
for (var args = [], i = 0; i < arguments.length; i++) {
|
|
867
|
+
args[i] = arguments[i];
|
|
868
|
+
}
|
|
933
869
|
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
tabindex: -1,
|
|
942
|
-
// sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
|
|
943
|
-
// allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
|
|
944
|
-
allowtransparency: true
|
|
945
|
-
});
|
|
946
|
-
setStyles(iframe, {
|
|
947
|
-
"position": "fixed",
|
|
948
|
-
"zIndex": 1000,
|
|
949
|
-
"bottom": 0,
|
|
950
|
-
"left": 0,
|
|
951
|
-
"width": "100%",
|
|
952
|
-
"height": 0,
|
|
953
|
-
|
|
954
|
-
/* ensure toolbar children are not focusable when hidden */
|
|
955
|
-
"visibility": "hidden",
|
|
956
|
-
"transition-duration": "300ms",
|
|
957
|
-
"transition-property": "height, visibility",
|
|
958
|
-
"border": "none"
|
|
959
|
-
});
|
|
960
|
-
var iframeLoadedPromise = iframeToLoadedPromise(iframe);
|
|
961
|
-
var jsenvToolbarHtmlServerUrl = resolveUrl("./src/internal/toolbar/toolbar.html", jsenvDirectoryServerUrl); // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
|
|
962
|
-
|
|
963
|
-
iframe.setAttribute("src", jsenvToolbarHtmlServerUrl);
|
|
964
|
-
placeholder.parentNode.replaceChild(iframe, placeholder);
|
|
965
|
-
return _await(iframeLoadedPromise, function () {
|
|
966
|
-
iframe.removeAttribute("tabindex");
|
|
967
|
-
|
|
968
|
-
var listenToolbarIframeEvent = function listenToolbarIframeEvent(event, fn) {
|
|
969
|
-
window.addEventListener("message", function (messageEvent) {
|
|
970
|
-
var data = messageEvent.data;
|
|
971
|
-
if (_typeof(data) !== "object") return;
|
|
972
|
-
var jsenv = data.jsenv;
|
|
973
|
-
if (!jsenv) return;
|
|
974
|
-
var type = data.type;
|
|
975
|
-
if (type !== event) return;
|
|
976
|
-
fn(data.value);
|
|
977
|
-
}, false);
|
|
978
|
-
};
|
|
870
|
+
try {
|
|
871
|
+
return Promise.resolve(f.apply(this, args));
|
|
872
|
+
} catch (e) {
|
|
873
|
+
return Promise.reject(e);
|
|
874
|
+
}
|
|
875
|
+
};
|
|
876
|
+
}
|
|
979
877
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
878
|
+
window.__jsenv_eventsource__ = connectLivereload();
|
|
879
|
+
|
|
880
|
+
var injectToolbar = _async(function () {
|
|
881
|
+
return _await(new Promise(function (resolve) {
|
|
882
|
+
if (window.requestIdleCallback) {
|
|
883
|
+
window.requestIdleCallback(resolve);
|
|
884
|
+
} else {
|
|
885
|
+
window.requestAnimationFrame(resolve);
|
|
886
|
+
}
|
|
887
|
+
}), function () {
|
|
888
|
+
return _call(fetchExploringJson, function (_ref4) {
|
|
889
|
+
var jsenvDirectoryRelativeUrl = _ref4.jsenvDirectoryRelativeUrl;
|
|
890
|
+
var jsenvDirectoryServerUrl = resolveUrl(jsenvDirectoryRelativeUrl, document.location.origin);
|
|
891
|
+
var placeholder = getToolbarPlaceholder();
|
|
892
|
+
var iframe = document.createElement("iframe");
|
|
893
|
+
setAttributes(iframe, {
|
|
894
|
+
tabindex: -1,
|
|
895
|
+
// sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
|
|
896
|
+
// allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
|
|
897
|
+
allowtransparency: true
|
|
986
898
|
});
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
899
|
+
setStyles(iframe, {
|
|
900
|
+
"position": "fixed",
|
|
901
|
+
"zIndex": 1000,
|
|
902
|
+
"bottom": 0,
|
|
903
|
+
"left": 0,
|
|
904
|
+
"width": "100%",
|
|
905
|
+
"height": 0,
|
|
906
|
+
|
|
907
|
+
/* ensure toolbar children are not focusable when hidden */
|
|
908
|
+
"visibility": "hidden",
|
|
909
|
+
"transition-duration": "300ms",
|
|
910
|
+
"transition-property": "height, visibility",
|
|
911
|
+
"border": "none"
|
|
912
|
+
});
|
|
913
|
+
var iframeLoadedPromise = iframeToLoadedPromise(iframe);
|
|
914
|
+
var jsenvToolbarHtmlServerUrl = resolveUrl("./src/internal/toolbar/toolbar.html", jsenvDirectoryServerUrl); // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
|
|
915
|
+
|
|
916
|
+
iframe.setAttribute("src", jsenvToolbarHtmlServerUrl);
|
|
917
|
+
placeholder.parentNode.replaceChild(iframe, placeholder);
|
|
918
|
+
return _await(iframeLoadedPromise, function () {
|
|
919
|
+
iframe.removeAttribute("tabindex");
|
|
920
|
+
|
|
921
|
+
var listenToolbarIframeEvent = function listenToolbarIframeEvent(event, fn) {
|
|
922
|
+
window.addEventListener("message", function (messageEvent) {
|
|
923
|
+
var data = messageEvent.data;
|
|
924
|
+
if (_typeof(data) !== "object") return;
|
|
925
|
+
var jsenv = data.jsenv;
|
|
926
|
+
if (!jsenv) return;
|
|
927
|
+
var type = data.type;
|
|
928
|
+
if (type !== event) return;
|
|
929
|
+
fn(data.value);
|
|
930
|
+
}, false);
|
|
931
|
+
};
|
|
999
932
|
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
933
|
+
listenToolbarIframeEvent("toolbar-visibility-change", function (visible) {
|
|
934
|
+
if (visible) {
|
|
935
|
+
hideToolbarTrigger();
|
|
936
|
+
} else {
|
|
937
|
+
showToolbarTrigger();
|
|
938
|
+
}
|
|
939
|
+
});
|
|
940
|
+
var div = document.createElement("div");
|
|
941
|
+
var jsenvLogoUrl = resolveUrl("./src/internal/toolbar/jsenv-logo.svg", jsenvDirectoryServerUrl);
|
|
942
|
+
var jsenvLogoSvgSrc = jsenvLogoUrl;
|
|
943
|
+
div.innerHTML = "\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"".concat(jsenvLogoSvgSrc, "#jsenv-logo\"></use>\n </svg>\n <style>\n #jsenv-toolbar-trigger {\n display: block;\n overflow: hidden;\n position: fixed;\n z-index: 1000;\n bottom: -32px;\n right: 20px;\n height: 40px;\n width: 40px;\n padding: 0;\n border-radius: 5px 5px 0 0;\n border: 1px solid rgba(0, 0, 0, 0.33);\n border-bottom: none;\n box-shadow: 0px 0px 6px 2px rgba(0, 0, 0, 0.46);\n background: transparent;\n text-align: center;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger:hover {\n cursor: pointer;\n }\n\n #jsenv-toolbar-trigger[data-expanded] {\n bottom: 0;\n }\n\n #jsenv-toolbar-trigger-icon {\n width: 35px;\n height: 35px;\n opacity: 0;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger[data-expanded] #jsenv-toolbar-trigger-icon {\n opacity: 1;\n }\n </style>\n</div>");
|
|
944
|
+
var toolbarTrigger = div.firstElementChild;
|
|
945
|
+
iframe.parentNode.appendChild(toolbarTrigger);
|
|
946
|
+
var timer;
|
|
947
|
+
|
|
948
|
+
toolbarTrigger.onmouseenter = function () {
|
|
949
|
+
toolbarTrigger.setAttribute("data-animate", "");
|
|
950
|
+
timer = setTimeout(expandToolbarTrigger, 500);
|
|
951
|
+
};
|
|
1004
952
|
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
953
|
+
toolbarTrigger.onmouseleave = function () {
|
|
954
|
+
clearTimeout(timer);
|
|
955
|
+
collapseToolbarTrigger();
|
|
956
|
+
};
|
|
1009
957
|
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
};
|
|
958
|
+
toolbarTrigger.onfocus = function () {
|
|
959
|
+
toolbarTrigger.removeAttribute("data-animate");
|
|
960
|
+
expandToolbarTrigger();
|
|
961
|
+
};
|
|
1015
962
|
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
963
|
+
toolbarTrigger.onblur = function () {
|
|
964
|
+
toolbarTrigger.removeAttribute("data-animate");
|
|
965
|
+
clearTimeout(timer);
|
|
966
|
+
collapseToolbarTrigger();
|
|
967
|
+
};
|
|
1019
968
|
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
969
|
+
toolbarTrigger.onclick = function () {
|
|
970
|
+
window.__jsenv__.toolbar.show();
|
|
971
|
+
};
|
|
1023
972
|
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
973
|
+
var showToolbarTrigger = function showToolbarTrigger() {
|
|
974
|
+
toolbarTrigger.style.display = "block";
|
|
975
|
+
};
|
|
1027
976
|
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
977
|
+
var hideToolbarTrigger = function hideToolbarTrigger() {
|
|
978
|
+
toolbarTrigger.style.display = "none";
|
|
979
|
+
};
|
|
1031
980
|
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
981
|
+
var expandToolbarTrigger = function expandToolbarTrigger() {
|
|
982
|
+
toolbarTrigger.setAttribute("data-expanded", "");
|
|
983
|
+
};
|
|
1035
984
|
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
985
|
+
var collapseToolbarTrigger = function collapseToolbarTrigger() {
|
|
986
|
+
toolbarTrigger.removeAttribute("data-expanded", "");
|
|
987
|
+
};
|
|
988
|
+
|
|
989
|
+
hideToolbarTrigger();
|
|
990
|
+
iframe.contentWindow.renderToolbar();
|
|
991
|
+
return iframe;
|
|
992
|
+
});
|
|
1039
993
|
});
|
|
1040
994
|
});
|
|
1041
|
-
};
|
|
995
|
+
});
|
|
1042
996
|
|
|
1043
997
|
var getToolbarPlaceholder = function getToolbarPlaceholder() {
|
|
1044
998
|
var placeholder = queryPlaceholder();
|