@jsenv/core 25.4.0 → 25.4.1
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/build_manifest.js +4 -4
- package/dist/compile_proxy/asset-manifest.json +2 -2
- package/dist/compile_proxy/{compile_proxy.html__inline__20_2334a374.js.map → compile_proxy.html__inline__20_f4285042.js.map} +3 -2
- package/dist/compile_proxy/{compile_proxy_9f737eaf.html → compile_proxy_ab528227.html} +6 -4
- package/dist/redirector/asset-manifest.json +2 -2
- package/dist/redirector/{redirector.html__inline__12_009c47c7.js.map → redirector.html__inline__12_404b8295.js.map} +6 -5
- package/dist/redirector/{redirector_96f74871.html → redirector_6df2620a.html} +57 -52
- package/dist/toolbar/asset-manifest.json +2 -2
- package/dist/toolbar/{toolbar.main_86335f90.js.map → toolbar.main_279b3a68.js.map} +175 -180
- package/dist/toolbar/{toolbar_d3a918a4.html → toolbar_0a91ca3b.html} +1232 -1285
- package/dist/toolbar_injector/asset-manifest.json +2 -2
- package/dist/toolbar_injector/toolbar_injector_34f6ad8e.js +976 -0
- package/dist/toolbar_injector/toolbar_injector_34f6ad8e.js.map +294 -0
- package/package.json +3 -4
- package/src/dev_server.js +36 -6
- package/src/internal/compiling/startCompileServer.js +1 -0
- package/src/internal/dev_server/toolbar/compilation/toolbar.compilation.js +9 -2
- package/src/internal/dev_server/toolbar/toolbar.html +6 -0
- package/src/internal/dev_server/toolbar/toolbar.injector.js +11 -3
- package/src/internal/dev_server/toolbar/toolbar.main.js +10 -14
- package/src/internal/features/browser_feature_detection/browser_feature_detection.js +7 -3
- package/src/internal/redirector/redirector.html +6 -4
- package/dist/toolbar_injector/toolbar_injector_978bbd14.js +0 -267
- package/dist/toolbar_injector/toolbar_injector_978bbd14.js.map +0 -119
|
@@ -14,8 +14,11 @@ export const scanBrowserRuntimeFeatures = async ({
|
|
|
14
14
|
forceSource = false,
|
|
15
15
|
} = {}) => {
|
|
16
16
|
const jsenvCompileProfileUrl = "/__jsenv_compile_profile__"
|
|
17
|
-
const {
|
|
18
|
-
|
|
17
|
+
const {
|
|
18
|
+
jsenvDirectoryRelativeUrl,
|
|
19
|
+
inlineImportMapIntoHTML,
|
|
20
|
+
availableCompileIds,
|
|
21
|
+
} = await fetchJson(jsenvCompileProfileUrl)
|
|
19
22
|
const { name, version } = detectBrowser()
|
|
20
23
|
const featuresReport = await detectSupportedFeatures({
|
|
21
24
|
coverageHandledFromOutside,
|
|
@@ -42,9 +45,10 @@ export const scanBrowserRuntimeFeatures = async ({
|
|
|
42
45
|
return {
|
|
43
46
|
jsenvDirectoryRelativeUrl,
|
|
44
47
|
inlineImportMapIntoHTML,
|
|
48
|
+
availableCompileIds,
|
|
49
|
+
runtimeReport,
|
|
45
50
|
compileProfile,
|
|
46
51
|
compileId,
|
|
47
|
-
runtimeReport,
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
|
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
import { scanBrowserRuntimeFeatures } from "../features/browser_feature_detection/browser_feature_detection.js"
|
|
14
14
|
|
|
15
15
|
const redirect = async () => {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
)
|
|
19
|
-
const browserRuntimeProfile = await scanBrowserRuntimeFeatures(
|
|
16
|
+
const searchParams = new URLSearchParams(window.location.search)
|
|
17
|
+
const redirectTarget = searchParams.get("redirect")
|
|
18
|
+
const forceCompilation = searchParams.get("force_compilation")
|
|
19
|
+
const browserRuntimeProfile = await scanBrowserRuntimeFeatures({
|
|
20
|
+
forceCompilation: forceCompilation === "1",
|
|
21
|
+
})
|
|
20
22
|
const href = `${getDirectoryUrl(
|
|
21
23
|
browserRuntimeProfile,
|
|
22
24
|
)}${redirectTarget}`
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var nativeTypeOf = function nativeTypeOf(obj) {
|
|
5
|
-
return typeof obj;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
var customTypeOf = function customTypeOf(obj) {
|
|
9
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? nativeTypeOf : customTypeOf;
|
|
13
|
-
|
|
14
|
-
var setStyles = function setStyles(element, styles) {
|
|
15
|
-
var elementStyle = element.style;
|
|
16
|
-
var restoreStyles = Object.keys(styles).map(function (styleName) {
|
|
17
|
-
var restore;
|
|
18
|
-
|
|
19
|
-
if (styleName in elementStyle) {
|
|
20
|
-
var currentStyle = elementStyle[styleName];
|
|
21
|
-
|
|
22
|
-
restore = function restore() {
|
|
23
|
-
elementStyle[styleName] = currentStyle;
|
|
24
|
-
};
|
|
25
|
-
} else {
|
|
26
|
-
restore = function restore() {
|
|
27
|
-
delete elementStyle[styleName];
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
elementStyle[styleName] = styles[styleName];
|
|
32
|
-
return restore;
|
|
33
|
-
});
|
|
34
|
-
return function () {
|
|
35
|
-
restoreStyles.forEach(function (restore) {
|
|
36
|
-
return restore();
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
var setAttributes = function setAttributes(element, attributes) {
|
|
41
|
-
Object.keys(attributes).forEach(function (name) {
|
|
42
|
-
element.setAttribute(name, attributes[name]);
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
function _await(value, then, direct) {
|
|
47
|
-
if (direct) {
|
|
48
|
-
return then ? then(value) : value;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (!value || !value.then) {
|
|
52
|
-
value = Promise.resolve(value);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return then ? value.then(then) : value;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
var TOOLBAR_BUILD_RELATIVE_URL = "dist/toolbar/toolbar_d3a918a4.html";
|
|
59
|
-
|
|
60
|
-
function _async(f) {
|
|
61
|
-
return function () {
|
|
62
|
-
for (var args = [], i = 0; i < arguments.length; i++) {
|
|
63
|
-
args[i] = arguments[i];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
try {
|
|
67
|
-
return Promise.resolve(f.apply(this, args));
|
|
68
|
-
} catch (e) {
|
|
69
|
-
return Promise.reject(e);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
var jsenvLogoSvgUrl = new URL("assets/jsenv-logo_188b9ca6.svg", document.currentScript && document.currentScript.src || document.baseURI);
|
|
75
|
-
|
|
76
|
-
var injectToolbar = _async(function () {
|
|
77
|
-
return _await(new Promise(function (resolve) {
|
|
78
|
-
if (window.requestIdleCallback) {
|
|
79
|
-
window.requestIdleCallback(resolve, {
|
|
80
|
-
timeout: 400
|
|
81
|
-
});
|
|
82
|
-
} else {
|
|
83
|
-
window.requestAnimationFrame(resolve);
|
|
84
|
-
}
|
|
85
|
-
}), function () {
|
|
86
|
-
var placeholder = getToolbarPlaceholder();
|
|
87
|
-
var iframe = document.createElement("iframe");
|
|
88
|
-
setAttributes(iframe, {
|
|
89
|
-
tabindex: -1,
|
|
90
|
-
// sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
|
|
91
|
-
// allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
|
|
92
|
-
allowtransparency: true
|
|
93
|
-
});
|
|
94
|
-
setStyles(iframe, {
|
|
95
|
-
"position": "fixed",
|
|
96
|
-
"zIndex": 1000,
|
|
97
|
-
"bottom": 0,
|
|
98
|
-
"left": 0,
|
|
99
|
-
"width": "100%",
|
|
100
|
-
"height": 0,
|
|
101
|
-
|
|
102
|
-
/* ensure toolbar children are not focusable when hidden */
|
|
103
|
-
"visibility": "hidden",
|
|
104
|
-
"transition-duration": "300ms",
|
|
105
|
-
"transition-property": "height, visibility",
|
|
106
|
-
"border": "none"
|
|
107
|
-
});
|
|
108
|
-
var iframeLoadedPromise = iframeToLoadedPromise(iframe);
|
|
109
|
-
var jsenvToolbarHtmlServerUrl = "/".concat(TOOLBAR_BUILD_RELATIVE_URL); // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
|
|
110
|
-
|
|
111
|
-
iframe.setAttribute("src", jsenvToolbarHtmlServerUrl);
|
|
112
|
-
placeholder.parentNode.replaceChild(iframe, placeholder);
|
|
113
|
-
addToolbarEventCallback(iframe, "toolbar_ready", function () {
|
|
114
|
-
sendCommandToToolbar(iframe, "renderToolbar");
|
|
115
|
-
});
|
|
116
|
-
return _await(iframeLoadedPromise, function () {
|
|
117
|
-
iframe.removeAttribute("tabindex");
|
|
118
|
-
var div = document.createElement("div");
|
|
119
|
-
div.innerHTML = "\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"".concat(jsenvLogoSvgUrl, "#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 margin: 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>");
|
|
120
|
-
var toolbarTrigger = div.firstElementChild;
|
|
121
|
-
iframe.parentNode.appendChild(toolbarTrigger);
|
|
122
|
-
var timer;
|
|
123
|
-
|
|
124
|
-
toolbarTrigger.onmouseenter = function () {
|
|
125
|
-
toolbarTrigger.setAttribute("data-animate", "");
|
|
126
|
-
timer = setTimeout(expandToolbarTrigger, 500);
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
toolbarTrigger.onmouseleave = function () {
|
|
130
|
-
clearTimeout(timer);
|
|
131
|
-
collapseToolbarTrigger();
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
toolbarTrigger.onfocus = function () {
|
|
135
|
-
toolbarTrigger.removeAttribute("data-animate");
|
|
136
|
-
expandToolbarTrigger();
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
toolbarTrigger.onblur = function () {
|
|
140
|
-
toolbarTrigger.removeAttribute("data-animate");
|
|
141
|
-
clearTimeout(timer);
|
|
142
|
-
collapseToolbarTrigger();
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
toolbarTrigger.onclick = function () {
|
|
146
|
-
sendCommandToToolbar(iframe, "showToolbar");
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
var showToolbarTrigger = function showToolbarTrigger() {
|
|
150
|
-
toolbarTrigger.style.display = "block";
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
var hideToolbarTrigger = function hideToolbarTrigger() {
|
|
154
|
-
toolbarTrigger.style.display = "none";
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
var expandToolbarTrigger = function expandToolbarTrigger() {
|
|
158
|
-
toolbarTrigger.setAttribute("data-expanded", "");
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
var collapseToolbarTrigger = function collapseToolbarTrigger() {
|
|
162
|
-
toolbarTrigger.removeAttribute("data-expanded", "");
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
hideToolbarTrigger();
|
|
166
|
-
addToolbarEventCallback(iframe, "toolbar-visibility-change", function (visible) {
|
|
167
|
-
if (visible) {
|
|
168
|
-
hideToolbarTrigger();
|
|
169
|
-
} else {
|
|
170
|
-
showToolbarTrigger();
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
return iframe;
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
var addToolbarEventCallback = function addToolbarEventCallback(iframe, eventName, callback) {
|
|
179
|
-
var messageEventCallback = function messageEventCallback(messageEvent) {
|
|
180
|
-
var data = messageEvent.data;
|
|
181
|
-
|
|
182
|
-
if (_typeof(data) !== "object") {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
var __jsenv__ = data.__jsenv__;
|
|
187
|
-
|
|
188
|
-
if (!__jsenv__) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if (__jsenv__.event !== eventName) {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
callback(__jsenv__.data);
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
window.addEventListener("message", messageEventCallback, false);
|
|
200
|
-
return function () {
|
|
201
|
-
window.removeEventListener("message", messageEventCallback, false);
|
|
202
|
-
};
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
var sendCommandToToolbar = function sendCommandToToolbar(iframe, command) {
|
|
206
|
-
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
207
|
-
args[_key - 2] = arguments[_key];
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
iframe.contentWindow.postMessage({
|
|
211
|
-
__jsenv__: {
|
|
212
|
-
command: command,
|
|
213
|
-
args: args
|
|
214
|
-
}
|
|
215
|
-
}, window.origin);
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
var getToolbarPlaceholder = function getToolbarPlaceholder() {
|
|
219
|
-
var placeholder = queryPlaceholder();
|
|
220
|
-
|
|
221
|
-
if (placeholder) {
|
|
222
|
-
if (document.body.contains(placeholder)) {
|
|
223
|
-
return placeholder;
|
|
224
|
-
} // otherwise iframe would not be visible because in <head>
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
console.warn("element with [data-jsenv-toolbar-placeholder] must be inside document.body");
|
|
228
|
-
return createTooolbarPlaceholder();
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
return createTooolbarPlaceholder();
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
var queryPlaceholder = function queryPlaceholder() {
|
|
235
|
-
return document.querySelector("[data-jsenv-toolbar-placeholder]");
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
var createTooolbarPlaceholder = function createTooolbarPlaceholder() {
|
|
239
|
-
var placeholder = document.createElement("span");
|
|
240
|
-
document.body.appendChild(placeholder);
|
|
241
|
-
return placeholder;
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
var iframeToLoadedPromise = function iframeToLoadedPromise(iframe) {
|
|
245
|
-
return new Promise(function (resolve) {
|
|
246
|
-
var onload = function onload() {
|
|
247
|
-
iframe.removeEventListener("load", onload, true);
|
|
248
|
-
resolve();
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
iframe.addEventListener("load", onload, true);
|
|
252
|
-
});
|
|
253
|
-
};
|
|
254
|
-
|
|
255
|
-
if (document.readyState === "complete") {
|
|
256
|
-
injectToolbar();
|
|
257
|
-
} else {
|
|
258
|
-
window.addEventListener("load", injectToolbar); // document.addEventListener("readystatechange", () => {
|
|
259
|
-
// if (document.readyState === "complete") {
|
|
260
|
-
// injectToolbar()
|
|
261
|
-
// }
|
|
262
|
-
// })
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
})();
|
|
266
|
-
|
|
267
|
-
//# sourceMappingURL=toolbar_injector_978bbd14.js.map
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"file": "toolbar_injector_978bbd14.js",
|
|
4
|
-
"sources": [
|
|
5
|
-
"../../helpers/babel/typeof/typeof.js",
|
|
6
|
-
"../../src/internal/dev_server/toolbar/util/dom.js",
|
|
7
|
-
"../../src/internal/dev_server/toolbar/toolbar.injector.js"
|
|
8
|
-
],
|
|
9
|
-
"sourcesContent": [
|
|
10
|
-
"const nativeTypeOf = (obj) => typeof obj\n\nconst customTypeOf = (obj) => {\n return obj &&\n typeof Symbol === \"function\" &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? \"symbol\"\n : typeof obj\n}\n\nexport default typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\"\n ? nativeTypeOf\n : customTypeOf\n",
|
|
11
|
-
"export const updateIframeOverflowOnParentWindow = () => {\n if (!window.parent) {\n // can happen while parent iframe reloads\n return\n }\n\n const aTooltipIsOpened =\n document.querySelector(\"[data-tooltip-visible]\") ||\n document.querySelector(\"[data-tooltip-auto-visible]\")\n const settingsAreOpened = document.querySelector(\"#settings[data-active]\")\n\n if (aTooltipIsOpened || settingsAreOpened) {\n enableIframeOverflowOnParentWindow()\n } else {\n disableIframeOverflowOnParentWindow()\n }\n}\n\nlet iframeOverflowEnabled = false\nconst enableIframeOverflowOnParentWindow = () => {\n if (iframeOverflowEnabled) return\n iframeOverflowEnabled = true\n\n const iframe = getToolbarIframe()\n const transitionDuration = iframe.style.transitionDuration\n setStyles(iframe, { \"height\": \"100%\", \"transition-duration\": \"0ms\" })\n if (transitionDuration) {\n setTimeout(() => {\n setStyles(iframe, { \"transition-duration\": transitionDuration })\n })\n }\n}\n\nconst disableIframeOverflowOnParentWindow = () => {\n if (!iframeOverflowEnabled) return\n iframeOverflowEnabled = false\n\n const iframe = getToolbarIframe()\n const transitionDuration = iframe.style.transitionDuration\n setStyles(iframe, { \"height\": \"40px\", \"transition-duration\": \"0ms\" })\n if (transitionDuration) {\n setTimeout(() => {\n setStyles(iframe, { \"transition-duration\": transitionDuration })\n })\n }\n}\n\nexport const getToolbarIframe = () => {\n const iframes = Array.from(window.parent.document.querySelectorAll(\"iframe\"))\n return iframes.find((iframe) => iframe.contentWindow === window)\n}\n\nexport const forceHideElement = (element) => {\n element.setAttribute(\"data-force-hide\", \"\")\n}\n\nexport const removeForceHideElement = (element) => {\n element.removeAttribute(\"data-force-hide\")\n}\n\nexport const setStyles = (element, styles) => {\n const elementStyle = element.style\n const restoreStyles = Object.keys(styles).map((styleName) => {\n let restore\n if (styleName in elementStyle) {\n const currentStyle = elementStyle[styleName]\n restore = () => {\n elementStyle[styleName] = currentStyle\n }\n } else {\n restore = () => {\n delete elementStyle[styleName]\n }\n }\n\n elementStyle[styleName] = styles[styleName]\n\n return restore\n })\n return () => {\n restoreStyles.forEach((restore) => restore())\n }\n}\n\nexport const setAttributes = (element, attributes) => {\n Object.keys(attributes).forEach((name) => {\n element.setAttribute(name, attributes[name])\n })\n}\n\nexport const getDocumentScroll = () => {\n return {\n x: document.documentElement.scrollLeft,\n y: document.documentElement.scrollTop,\n }\n}\n\nexport const toolbarSectionIsActive = (element) => {\n return element.hasAttribute(\"data-active\")\n}\n\nexport const activateToolbarSection = (element) => {\n element.setAttribute(\"data-active\", \"\")\n}\n\nexport const deactivateToolbarSection = (element) => {\n element.removeAttribute(\"data-active\")\n}\n",
|
|
12
|
-
"import { setAttributes, setStyles } from \"./util/dom.js\"\n\n// eslint-disable-next-line no-undef\nconst TOOLBAR_BUILD_RELATIVE_URL = \"dist/toolbar/toolbar_d3a918a4.html\"\nconst jsenvLogoSvgUrl = new URL(\"./jsenv-logo.svg\", import.meta.url)\n\nconst injectToolbar = async () => {\n await new Promise((resolve) => {\n if (window.requestIdleCallback) {\n window.requestIdleCallback(resolve, { timeout: 400 })\n } else {\n window.requestAnimationFrame(resolve)\n }\n })\n\n const placeholder = getToolbarPlaceholder()\n\n const iframe = document.createElement(\"iframe\")\n setAttributes(iframe, {\n tabindex: -1,\n // sandbox: \"allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation\",\n // allow: \"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr\",\n allowtransparency: true,\n })\n setStyles(iframe, {\n \"position\": \"fixed\",\n \"zIndex\": 1000,\n \"bottom\": 0,\n \"left\": 0,\n \"width\": \"100%\",\n \"height\": 0,\n /* ensure toolbar children are not focusable when hidden */\n \"visibility\": \"hidden\",\n \"transition-duration\": \"300ms\",\n \"transition-property\": \"height, visibility\",\n \"border\": \"none\",\n })\n const iframeLoadedPromise = iframeToLoadedPromise(iframe)\n const jsenvToolbarHtmlServerUrl = `/${TOOLBAR_BUILD_RELATIVE_URL}`\n // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)\n iframe.setAttribute(\"src\", jsenvToolbarHtmlServerUrl)\n placeholder.parentNode.replaceChild(iframe, placeholder)\n\n addToolbarEventCallback(iframe, \"toolbar_ready\", () => {\n sendCommandToToolbar(iframe, \"renderToolbar\")\n })\n\n await iframeLoadedPromise\n iframe.removeAttribute(\"tabindex\")\n\n const div = document.createElement(\"div\")\n div.innerHTML = `\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"${jsenvLogoSvgUrl}#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 margin: 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>`\n const toolbarTrigger = div.firstElementChild\n iframe.parentNode.appendChild(toolbarTrigger)\n\n let timer\n toolbarTrigger.onmouseenter = () => {\n toolbarTrigger.setAttribute(\"data-animate\", \"\")\n timer = setTimeout(expandToolbarTrigger, 500)\n }\n toolbarTrigger.onmouseleave = () => {\n clearTimeout(timer)\n collapseToolbarTrigger()\n }\n toolbarTrigger.onfocus = () => {\n toolbarTrigger.removeAttribute(\"data-animate\")\n expandToolbarTrigger()\n }\n toolbarTrigger.onblur = () => {\n toolbarTrigger.removeAttribute(\"data-animate\")\n clearTimeout(timer)\n collapseToolbarTrigger()\n }\n toolbarTrigger.onclick = () => {\n sendCommandToToolbar(iframe, \"showToolbar\")\n }\n\n const showToolbarTrigger = () => {\n toolbarTrigger.style.display = \"block\"\n }\n\n const hideToolbarTrigger = () => {\n toolbarTrigger.style.display = \"none\"\n }\n\n const expandToolbarTrigger = () => {\n toolbarTrigger.setAttribute(\"data-expanded\", \"\")\n }\n\n const collapseToolbarTrigger = () => {\n toolbarTrigger.removeAttribute(\"data-expanded\", \"\")\n }\n\n hideToolbarTrigger()\n addToolbarEventCallback(iframe, \"toolbar-visibility-change\", (visible) => {\n if (visible) {\n hideToolbarTrigger()\n } else {\n showToolbarTrigger()\n }\n })\n\n return iframe\n}\n\nconst addToolbarEventCallback = (iframe, eventName, callback) => {\n const messageEventCallback = (messageEvent) => {\n const { data } = messageEvent\n if (typeof data !== \"object\") {\n return\n }\n const { __jsenv__ } = data\n if (!__jsenv__) {\n return\n }\n if (__jsenv__.event !== eventName) {\n return\n }\n callback(__jsenv__.data)\n }\n\n window.addEventListener(\"message\", messageEventCallback, false)\n return () => {\n window.removeEventListener(\"message\", messageEventCallback, false)\n }\n}\n\nconst sendCommandToToolbar = (iframe, command, ...args) => {\n iframe.contentWindow.postMessage(\n {\n __jsenv__: {\n command,\n args,\n },\n },\n window.origin,\n )\n}\n\nconst getToolbarPlaceholder = () => {\n const placeholder = queryPlaceholder()\n if (placeholder) {\n if (document.body.contains(placeholder)) {\n return placeholder\n }\n // otherwise iframe would not be visible because in <head>\n console.warn(\n \"element with [data-jsenv-toolbar-placeholder] must be inside document.body\",\n )\n return createTooolbarPlaceholder()\n }\n return createTooolbarPlaceholder()\n}\n\nconst queryPlaceholder = () => {\n return document.querySelector(\"[data-jsenv-toolbar-placeholder]\")\n}\n\nconst createTooolbarPlaceholder = () => {\n const placeholder = document.createElement(\"span\")\n document.body.appendChild(placeholder)\n return placeholder\n}\n\nconst iframeToLoadedPromise = (iframe) => {\n return new Promise((resolve) => {\n const onload = () => {\n iframe.removeEventListener(\"load\", onload, true)\n resolve()\n }\n iframe.addEventListener(\"load\", onload, true)\n })\n}\n\nif (document.readyState === \"complete\") {\n injectToolbar()\n} else {\n window.addEventListener(\"load\", injectToolbar)\n // document.addEventListener(\"readystatechange\", () => {\n // if (document.readyState === \"complete\") {\n // injectToolbar()\n // }\n // })\n}\n"
|
|
13
|
-
],
|
|
14
|
-
"names": [
|
|
15
|
-
"nativeTypeOf",
|
|
16
|
-
"obj",
|
|
17
|
-
"customTypeOf",
|
|
18
|
-
"Symbol",
|
|
19
|
-
"constructor",
|
|
20
|
-
"prototype",
|
|
21
|
-
"iterator",
|
|
22
|
-
"setStyles",
|
|
23
|
-
"element",
|
|
24
|
-
"styles",
|
|
25
|
-
"elementStyle",
|
|
26
|
-
"style",
|
|
27
|
-
"restoreStyles",
|
|
28
|
-
"Object",
|
|
29
|
-
"keys",
|
|
30
|
-
"map",
|
|
31
|
-
"styleName",
|
|
32
|
-
"restore",
|
|
33
|
-
"currentStyle",
|
|
34
|
-
"forEach",
|
|
35
|
-
"setAttributes",
|
|
36
|
-
"attributes",
|
|
37
|
-
"name",
|
|
38
|
-
"setAttribute",
|
|
39
|
-
"_await",
|
|
40
|
-
"value",
|
|
41
|
-
"then",
|
|
42
|
-
"direct",
|
|
43
|
-
"Promise",
|
|
44
|
-
"resolve",
|
|
45
|
-
"TOOLBAR_BUILD_RELATIVE_URL",
|
|
46
|
-
"_async",
|
|
47
|
-
"f",
|
|
48
|
-
"args",
|
|
49
|
-
"i",
|
|
50
|
-
"arguments",
|
|
51
|
-
"length",
|
|
52
|
-
"apply",
|
|
53
|
-
"e",
|
|
54
|
-
"reject",
|
|
55
|
-
"jsenvLogoSvgUrl",
|
|
56
|
-
"injectToolbar",
|
|
57
|
-
"window",
|
|
58
|
-
"requestIdleCallback",
|
|
59
|
-
"timeout",
|
|
60
|
-
"requestAnimationFrame",
|
|
61
|
-
"placeholder",
|
|
62
|
-
"getToolbarPlaceholder",
|
|
63
|
-
"iframe",
|
|
64
|
-
"document",
|
|
65
|
-
"createElement",
|
|
66
|
-
"tabindex",
|
|
67
|
-
"allowtransparency",
|
|
68
|
-
"iframeLoadedPromise",
|
|
69
|
-
"iframeToLoadedPromise",
|
|
70
|
-
"jsenvToolbarHtmlServerUrl",
|
|
71
|
-
"parentNode",
|
|
72
|
-
"replaceChild",
|
|
73
|
-
"addToolbarEventCallback",
|
|
74
|
-
"sendCommandToToolbar",
|
|
75
|
-
"removeAttribute",
|
|
76
|
-
"div",
|
|
77
|
-
"innerHTML",
|
|
78
|
-
"toolbarTrigger",
|
|
79
|
-
"firstElementChild",
|
|
80
|
-
"appendChild",
|
|
81
|
-
"timer",
|
|
82
|
-
"onmouseenter",
|
|
83
|
-
"setTimeout",
|
|
84
|
-
"expandToolbarTrigger",
|
|
85
|
-
"onmouseleave",
|
|
86
|
-
"clearTimeout",
|
|
87
|
-
"collapseToolbarTrigger",
|
|
88
|
-
"onfocus",
|
|
89
|
-
"onblur",
|
|
90
|
-
"onclick",
|
|
91
|
-
"showToolbarTrigger",
|
|
92
|
-
"display",
|
|
93
|
-
"hideToolbarTrigger",
|
|
94
|
-
"visible",
|
|
95
|
-
"eventName",
|
|
96
|
-
"callback",
|
|
97
|
-
"messageEventCallback",
|
|
98
|
-
"messageEvent",
|
|
99
|
-
"data",
|
|
100
|
-
"__jsenv__",
|
|
101
|
-
"event",
|
|
102
|
-
"addEventListener",
|
|
103
|
-
"removeEventListener",
|
|
104
|
-
"command",
|
|
105
|
-
"contentWindow",
|
|
106
|
-
"postMessage",
|
|
107
|
-
"origin",
|
|
108
|
-
"queryPlaceholder",
|
|
109
|
-
"body",
|
|
110
|
-
"contains",
|
|
111
|
-
"console",
|
|
112
|
-
"warn",
|
|
113
|
-
"createTooolbarPlaceholder",
|
|
114
|
-
"querySelector",
|
|
115
|
-
"onload",
|
|
116
|
-
"readyState"
|
|
117
|
-
],
|
|
118
|
-
"mappings": "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"
|
|
119
|
-
}
|