@jsenv/plugin-toolbar 0.0.1 → 0.1.0
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/css/{toolbar_main.css → toolbar.css} +285 -319
- package/dist/html/toolbar.html +91 -80
- package/dist/js/toolbar_core.js +1792 -0
- package/dist/js/toolbar_injector.js +60 -121
- package/dist/jsenv_plugin_toolbar.js +18 -12
- package/package.json +10 -3
- package/src/client/core/animation_actions.js +8 -0
- package/src/client/core/animation_effects.js +12 -0
- package/src/client/core/animation_signals.js +12 -0
- package/src/client/core/changes_actions.js +9 -0
- package/src/client/core/changes_signals.js +3 -0
- package/src/client/core/execution_actions.js +50 -0
- package/src/client/core/execution_effects.js +22 -0
- package/src/client/core/execution_signals.js +19 -0
- package/src/client/core/notification_actions.js +71 -0
- package/src/client/core/notification_context.js +1 -0
- package/src/client/core/notification_effects.js +11 -0
- package/src/client/core/notification_signals.js +13 -0
- package/src/client/{communication/parent_window_communication.js → core/parent_window_actions.js} +10 -0
- package/src/client/core/parent_window_context.js +7 -0
- package/src/client/core/parent_window_effects.js +20 -0
- package/src/client/core/parent_window_signals.js +34 -0
- package/src/client/core/server_actions.js +9 -0
- package/src/client/core/server_effects.js +11 -0
- package/src/client/core/server_signals.js +12 -0
- package/src/client/core/settings_actions.js +9 -0
- package/src/client/core/settings_signals.js +3 -0
- package/src/client/core/theme_actions.js +9 -0
- package/src/client/core/theme_effects.js +8 -0
- package/src/client/core/theme_signals.js +12 -0
- package/src/client/core/toolbar_logger.js +29 -0
- package/src/client/core/toolbar_open_actions.js +9 -0
- package/src/client/core/toolbar_open_effects.js +5 -0
- package/src/client/core/toolbar_open_signals.js +12 -0
- package/src/client/core/toolbar_state_context.js +5 -0
- package/src/client/core/toolbar_state_effects.js +10 -0
- package/src/client/core/toolbar_state_signals.js +20 -0
- package/src/client/core/tooltip_actions.js +7 -0
- package/src/client/toolbar.html +116 -89
- package/src/client/toolbar_core.js +8 -0
- package/src/client/toolbar_injector.js +64 -39
- package/src/client/ui/changes_indicator/changes_indicator.js +66 -0
- package/src/client/{execution/execution.css → ui/document_execution_indicator/document_execution_indicator.css} +10 -14
- package/src/client/ui/document_execution_indicator/document_execution_indicator.js +66 -0
- package/src/client/ui/document_index_link/document_index_link.js +8 -0
- package/src/client/ui/globals.css +103 -0
- package/src/client/{jsenv_logo.svg → ui/jsenv_logo.svg} +0 -0
- package/src/client/{eventsource/eventsource.css → ui/server_indicator/server_indicator.css} +14 -24
- package/src/client/ui/server_indicator/server_indicator.js +62 -0
- package/src/client/ui/toolbar.css +76 -0
- package/src/client/ui/toolbar_close_button/toolbar_close_button.js +15 -0
- package/src/client/{responsive/overflow_menu.css → ui/toolbar_menu_overflow/toolbar_menu_overflow.css} +10 -11
- package/src/client/{responsive/toolbar_responsive.js → ui/toolbar_menu_overflow/toolbar_menu_overflow.js} +25 -31
- package/src/client/ui/toolbar_opening/toolbar_opening.js +73 -0
- package/src/client/ui/toolbar_overlay/toolbar_overlay.js +76 -0
- package/src/client/{theme → ui/toolbar_settings}/jsenv_theme.css +6 -6
- package/src/client/{theme/light_theme.css → ui/toolbar_settings/theme_light.css} +9 -10
- package/src/client/ui/toolbar_settings/toolbar_animation_setting.js +27 -0
- package/src/client/ui/toolbar_settings/toolbar_autoreload_setting.js +79 -0
- package/src/client/ui/toolbar_settings/toolbar_notification_setting.js +88 -0
- package/src/client/{settings/settings.css → ui/toolbar_settings/toolbar_settings.css} +24 -23
- package/src/client/ui/toolbar_settings/toolbar_settings.js +54 -0
- package/src/client/ui/toolbar_settings/toolbar_theme_setting.js +17 -0
- package/src/client/ui/toolbar_ui.js +21 -0
- package/src/client/{tooltip/tooltip.css → ui/tooltips/tooltips.css} +13 -7
- package/src/client/{util → ui/util}/animation.js +0 -0
- package/src/client/ui/util/dom.js +57 -0
- package/src/client/{util → ui/util}/fetch_using_xhr.js +0 -0
- package/src/client/{util → ui/util}/fetching.js +0 -0
- package/src/client/{util → ui/util}/iframe_to_parent_href.js +0 -0
- package/src/client/{util → ui/util}/responsive.js +0 -0
- package/src/client/{util → ui/util}/util.js +0 -0
- package/src/client/{variant → ui}/variant.js +0 -0
- package/src/jsenv_plugin_toolbar.js +19 -7
- package/dist/js/toolbar_main.js +0 -900
- package/scripts/build.mjs +0 -20
- package/src/client/animation/toolbar_animation_core.js +0 -30
- package/src/client/animation/toolbar_animation_ui.js +0 -21
- package/src/client/eventsource/toolbar_eventsource.js +0 -57
- package/src/client/execution/toolbar_execution.js +0 -88
- package/src/client/focus/focus.css +0 -61
- package/src/client/focus/toolbar_focus.js +0 -19
- package/src/client/notification/toolbar_notification.js +0 -181
- package/src/client/settings/toolbar_settings.js +0 -47
- package/src/client/theme/toolbar_theme.js +0 -34
- package/src/client/toolbar_main.css +0 -173
- package/src/client/toolbar_main.js +0 -174
- package/src/client/toolbar_state.js +0 -16
- package/src/client/tooltip/tooltip.js +0 -39
- package/src/client/util/dom.js +0 -108
- package/src/client/util/jsenv_logger.js +0 -28
- package/src/client/util/preferences.js +0 -10
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/ast/src/html/html_src_set.js +0 -18
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/animation/toolbar_animation.js +0 -45
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/animation/toolbar_animation.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/animation/toolbar_animation_core.js +0 -32
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/animation/toolbar_animation_core.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/animation/toolbar_animation_ui.js +0 -23
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/animation/toolbar_animation_ui.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/communication/parent_window_communication.js +0 -33
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/eventsource/eventsource.css +0 -87
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/eventsource/toolbar_eventsource.js +0 -59
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/eventsource/toolbar_eventsource.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/execution/execution.css +0 -88
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/execution/toolbar_execution.js +0 -90
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/execution/toolbar_execution.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/focus/focus.css +0 -28
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/focus/toolbar_focus.js +0 -19
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/jsenv_logo.svg +0 -140
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/notification/toolbar_notification.js +0 -183
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/notification/toolbar_notification.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/responsive/overflow_menu.css +0 -60
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/responsive/toolbar_responsive.js +0 -105
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/responsive/toolbar_responsive.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/settings/settings.css +0 -200
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/settings/toolbar_settings.js +0 -49
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/settings/toolbar_settings.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/theme/light_theme.css +0 -110
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/theme/toolbar_theme.js +0 -36
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/theme/toolbar_theme.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar.html +0 -319
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_injector.js +0 -232
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_injector.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_main.css +0 -161
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_main.css.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_main.js +0 -176
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_main.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_state.js +0 -18
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar_state.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/tooltip/tooltip.css +0 -60
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/tooltip/tooltip.js +0 -41
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/tooltip/tooltip.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/util/animation.js +0 -307
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/util/animation.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/util/dom.js +0 -108
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/util/iframe_to_parent_href.js +0 -10
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/util/preferences.js +0 -10
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/util/responsive.js +0 -112
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/variant/variant.js +0 -74
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload.js +0 -201
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload_preference.js +0 -11
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/reload.js +0 -138
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/reload.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/url_helpers.js +0 -20
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html +0 -590
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html@L15C5-L20C12.js +0 -7
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html@L15C5-L20C12.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html@L368C5-L481C14.js +0 -114
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html@L482C5-L605C14.js +0 -124
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html@L69C5-L299C13.css +0 -227
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html@L8C5-L68C13.css +0 -28
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/import_meta_hot/client/import_meta_hot.js +0 -82
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/ribbon/client/ribbon.js +0 -51
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/connection_manager.js +0 -165
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/events_manager.js +0 -75
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/server_events_client.js +0 -20
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/server_events_client.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/web_socket_connection.js +0 -83
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/web_socket_connection.js.map +0 -12
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/supervisor/client/script_type_module_supervisor.js +0 -98
- package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/supervisor/client/supervisor.js +0 -966
- package/tests/toolbar_basic/main.html +0 -18
- package/tests/toolbar_basic/start_dev_server.mjs +0 -7
- package/todo.txt +0 -0
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
const jsenvLogoSvgUrl = new URL("./ui/jsenv_logo.svg", import.meta.url)
|
|
2
|
+
|
|
3
|
+
export const injectToolbar = async ({
|
|
4
|
+
toolbarUrl,
|
|
5
|
+
logLevel,
|
|
6
|
+
theme,
|
|
7
|
+
opened,
|
|
8
|
+
autoreload,
|
|
9
|
+
animationsEnabled,
|
|
10
|
+
notificationsEnabled,
|
|
11
|
+
}) => {
|
|
6
12
|
if (document.readyState !== "complete") {
|
|
7
13
|
await new Promise((resolve) => {
|
|
8
14
|
window.addEventListener("load", resolve)
|
|
@@ -18,13 +24,11 @@ export const injectToolbar = async ({ toolbarUrl, logs = false }) => {
|
|
|
18
24
|
const placeholder = getToolbarPlaceholder()
|
|
19
25
|
|
|
20
26
|
const iframe = document.createElement("iframe")
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
})
|
|
27
|
-
setStyles(iframe, {
|
|
27
|
+
iframe.setAttribute("tabindex", -1)
|
|
28
|
+
iframe.setAttribute("allowtransparency", true)
|
|
29
|
+
// sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
|
|
30
|
+
// allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
|
|
31
|
+
Object.assign(iframe.style, {
|
|
28
32
|
"position": "fixed",
|
|
29
33
|
"zIndex": 1000,
|
|
30
34
|
"bottom": 0,
|
|
@@ -33,42 +37,61 @@ export const injectToolbar = async ({ toolbarUrl, logs = false }) => {
|
|
|
33
37
|
"height": 0,
|
|
34
38
|
/* ensure toolbar children are not focusable when hidden */
|
|
35
39
|
"visibility": "hidden",
|
|
36
|
-
"transition-duration": "
|
|
40
|
+
"transition-duration": "0",
|
|
37
41
|
"transition-property": "height, visibility",
|
|
38
42
|
"border": "none",
|
|
39
43
|
})
|
|
40
44
|
const iframeLoadedPromise = iframeToLoadedPromise(iframe)
|
|
45
|
+
const toolbarUrlObject = new URL(toolbarUrl, window.location.href)
|
|
46
|
+
toolbarUrlObject.searchParams.set("logLevel", logLevel)
|
|
47
|
+
toolbarUrlObject.searchParams.set("theme", theme)
|
|
48
|
+
if (opened) {
|
|
49
|
+
toolbarUrlObject.searchParams.set("opened", "")
|
|
50
|
+
}
|
|
51
|
+
if (autoreload) {
|
|
52
|
+
toolbarUrlObject.searchParams.set("autoreload", "")
|
|
53
|
+
}
|
|
54
|
+
if (animationsEnabled) {
|
|
55
|
+
toolbarUrlObject.searchParams.set("animationsEnabled", "")
|
|
56
|
+
}
|
|
57
|
+
if (notificationsEnabled) {
|
|
58
|
+
toolbarUrlObject.searchParams.set("notificationsEnabled", "")
|
|
59
|
+
}
|
|
41
60
|
// set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
|
|
42
|
-
iframe.setAttribute("src",
|
|
61
|
+
iframe.setAttribute("src", toolbarUrlObject.href)
|
|
62
|
+
iframe.name = "jsenv toolbar"
|
|
43
63
|
placeholder.parentNode.replaceChild(iframe, placeholder)
|
|
44
64
|
|
|
45
65
|
const listenToolbarStateChange = (callback) => {
|
|
46
66
|
return addToolbarEventCallback(iframe, "toolbar_state_change", callback)
|
|
47
67
|
}
|
|
48
68
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
const cleanupInitOnReady = addToolbarEventCallback(
|
|
70
|
+
iframe,
|
|
71
|
+
"toolbar_ready",
|
|
72
|
+
() => {
|
|
73
|
+
cleanupInitOnReady()
|
|
74
|
+
sendCommandToToolbar(iframe, "initToolbar")
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
listenToolbarStateChange(({ animationsEnabled }) => {
|
|
77
|
+
if (animationsEnabled) {
|
|
78
|
+
iframe.style.transitionDuration = "300ms"
|
|
79
|
+
} else {
|
|
80
|
+
iframe.style.transitionDuration = "0s"
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
},
|
|
85
|
+
)
|
|
63
86
|
|
|
64
87
|
const div = document.createElement("div")
|
|
65
88
|
div.innerHTML = `
|
|
66
|
-
<div id="
|
|
67
|
-
<svg id="
|
|
89
|
+
<div id="jsenv_toolbar_trigger" style="display:none">
|
|
90
|
+
<svg id="jsenv_toolbar_trigger_icon">
|
|
68
91
|
<use xlink:href="${jsenvLogoSvgUrl}#jsenv_logo"></use>
|
|
69
92
|
</svg>
|
|
70
93
|
<style>
|
|
71
|
-
#
|
|
94
|
+
#jsenv_toolbar_trigger {
|
|
72
95
|
display: block;
|
|
73
96
|
overflow: hidden;
|
|
74
97
|
position: fixed;
|
|
@@ -88,22 +111,22 @@ export const injectToolbar = async ({ toolbarUrl, logs = false }) => {
|
|
|
88
111
|
transition: 600ms;
|
|
89
112
|
}
|
|
90
113
|
|
|
91
|
-
#
|
|
114
|
+
#jsenv_toolbar_trigger:hover {
|
|
92
115
|
cursor: pointer;
|
|
93
116
|
}
|
|
94
117
|
|
|
95
|
-
#
|
|
118
|
+
#jsenv_toolbar_trigger[data-expanded] {
|
|
96
119
|
bottom: 0;
|
|
97
120
|
}
|
|
98
121
|
|
|
99
|
-
#
|
|
122
|
+
#jsenv_toolbar_trigger_icon {
|
|
100
123
|
width: 35px;
|
|
101
124
|
height: 35px;
|
|
102
125
|
opacity: 0;
|
|
103
126
|
transition: 600ms;
|
|
104
127
|
}
|
|
105
128
|
|
|
106
|
-
#
|
|
129
|
+
#jsenv_toolbar_trigger[data-expanded] #jsenv_toolbar_trigger_icon {
|
|
107
130
|
opacity: 1;
|
|
108
131
|
}
|
|
109
132
|
</style>
|
|
@@ -130,7 +153,7 @@ export const injectToolbar = async ({ toolbarUrl, logs = false }) => {
|
|
|
130
153
|
collapseToolbarTrigger()
|
|
131
154
|
}
|
|
132
155
|
toolbarTrigger.onclick = () => {
|
|
133
|
-
sendCommandToToolbar(iframe, "
|
|
156
|
+
sendCommandToToolbar(iframe, "openToolbar")
|
|
134
157
|
}
|
|
135
158
|
|
|
136
159
|
const showToolbarTrigger = () => {
|
|
@@ -149,15 +172,17 @@ export const injectToolbar = async ({ toolbarUrl, logs = false }) => {
|
|
|
149
172
|
toolbarTrigger.removeAttribute("data-expanded", "")
|
|
150
173
|
}
|
|
151
174
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (visible) {
|
|
175
|
+
listenToolbarStateChange(({ opened }) => {
|
|
176
|
+
if (opened) {
|
|
155
177
|
hideToolbarTrigger()
|
|
156
178
|
} else {
|
|
157
179
|
showToolbarTrigger()
|
|
158
180
|
}
|
|
159
181
|
})
|
|
160
182
|
|
|
183
|
+
await iframeLoadedPromise
|
|
184
|
+
iframe.removeAttribute("tabindex")
|
|
185
|
+
|
|
161
186
|
return iframe
|
|
162
187
|
}
|
|
163
188
|
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { effect } from "@preact/signals"
|
|
2
|
+
|
|
3
|
+
import { parentWindowReloader } from "../../core/parent_window_context.js"
|
|
4
|
+
import {
|
|
5
|
+
autoreloadEnabledSignal,
|
|
6
|
+
changesSignal,
|
|
7
|
+
} from "../../core/parent_window_signals.js"
|
|
8
|
+
import { changesTooltipOpenedSignal } from "../../core/changes_signals.js"
|
|
9
|
+
import {
|
|
10
|
+
openChangesToolip,
|
|
11
|
+
closeChangesToolip,
|
|
12
|
+
} from "../../core/changes_actions.js"
|
|
13
|
+
import { enableVariant } from "../variant.js"
|
|
14
|
+
|
|
15
|
+
const changesIndicator = document.querySelector("#changes_indicator")
|
|
16
|
+
|
|
17
|
+
export const renderChangesIndicator = () => {
|
|
18
|
+
effect(() => {
|
|
19
|
+
const autoreloadEnabled = autoreloadEnabledSignal.value
|
|
20
|
+
const changes = changesSignal.value
|
|
21
|
+
const changeCount = changes.length
|
|
22
|
+
enableVariant(changesIndicator, {
|
|
23
|
+
changes: !autoreloadEnabled && changeCount ? "yes" : "no",
|
|
24
|
+
})
|
|
25
|
+
if (changeCount) {
|
|
26
|
+
changesIndicator.querySelector(".tooltip_text").innerHTML =
|
|
27
|
+
computeTooltipText({ changes })
|
|
28
|
+
changesIndicator.querySelector(".tooltip_text a").onclick = () => {
|
|
29
|
+
// eslint-disable-next-line no-alert
|
|
30
|
+
window.alert(JSON.stringify(changes, null, " "))
|
|
31
|
+
console.log(changes)
|
|
32
|
+
}
|
|
33
|
+
changesIndicator.querySelector(".changes_text").innerHTML = changeCount
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
changesIndicator.querySelector(".tooltip_action").onclick = () => {
|
|
38
|
+
parentWindowReloader.reload()
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
effect(() => {
|
|
42
|
+
const changesTooltipOpened = changesTooltipOpenedSignal.value
|
|
43
|
+
if (changesTooltipOpened) {
|
|
44
|
+
changesIndicator.setAttribute("data-tooltip-visible", "")
|
|
45
|
+
} else {
|
|
46
|
+
changesIndicator.removeAttribute("data-tooltip-visible")
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
const button = changesIndicator.querySelector("button")
|
|
50
|
+
button.onclick = () => {
|
|
51
|
+
const changesTooltipOpened = changesTooltipOpenedSignal.value
|
|
52
|
+
if (changesTooltipOpened) {
|
|
53
|
+
closeChangesToolip()
|
|
54
|
+
} else {
|
|
55
|
+
openChangesToolip()
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const computeTooltipText = ({ changes }) => {
|
|
61
|
+
const changesCount = changes.length
|
|
62
|
+
if (changesCount === 1) {
|
|
63
|
+
return `There is <a href="javascript:void(0)">1</a> change to apply`
|
|
64
|
+
}
|
|
65
|
+
return `There is <a href="javascript:void(0)">${changesCount}<a> changes to apply`
|
|
66
|
+
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
#loader-icon {
|
|
1
|
+
#execution_pending_icon {
|
|
3
2
|
width: 20px;
|
|
4
3
|
height: 20px;
|
|
5
4
|
margin: 10px;
|
|
6
5
|
transform: scaleX(-1);
|
|
7
6
|
color: #cecece;
|
|
8
7
|
}
|
|
9
|
-
#
|
|
8
|
+
#execution_pending_icon[data-animate] {
|
|
10
9
|
opacity: 0;
|
|
11
10
|
transform-origin: center;
|
|
12
11
|
animation: rotateLoader 1s linear infinite !important;
|
|
@@ -25,18 +24,16 @@
|
|
|
25
24
|
}
|
|
26
25
|
}
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
#check-icon {
|
|
27
|
+
#execution_completed_icon {
|
|
30
28
|
width: 25px;
|
|
31
29
|
height: 25px;
|
|
32
|
-
margin: 7px;
|
|
33
30
|
opacity: 0;
|
|
34
31
|
stroke-width: 5;
|
|
35
32
|
}
|
|
36
|
-
#
|
|
33
|
+
#execution_completed_icon[data-animate] {
|
|
37
34
|
opacity: 1;
|
|
38
35
|
}
|
|
39
|
-
#
|
|
36
|
+
#execution_completed_icon[data-animate] path {
|
|
40
37
|
transform-origin: 50% 50%;
|
|
41
38
|
stroke-dasharray: 48;
|
|
42
39
|
stroke-dashoffset: 48;
|
|
@@ -49,26 +46,25 @@
|
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
48
|
|
|
52
|
-
|
|
53
|
-
#cross-icon {
|
|
49
|
+
#execution_failed_icon {
|
|
54
50
|
width: 20px;
|
|
55
51
|
height: 20px;
|
|
56
52
|
margin: 10px;
|
|
57
53
|
opacity: 0;
|
|
58
54
|
stroke-width: 5;
|
|
59
55
|
}
|
|
60
|
-
#
|
|
56
|
+
#execution_failed_icon rect {
|
|
61
57
|
width: 33px;
|
|
62
58
|
height: 0;
|
|
63
59
|
fill: #d74640;
|
|
64
60
|
}
|
|
65
|
-
#
|
|
61
|
+
#execution_failed_icon[data-animate] {
|
|
66
62
|
opacity: 1;
|
|
67
63
|
}
|
|
68
|
-
#
|
|
64
|
+
#execution_failed_icon[data-animate] #cross_p1 {
|
|
69
65
|
animation: draw 0.5s cubic-bezier(0.65, 0, 0.45, 1) forwards;
|
|
70
66
|
}
|
|
71
|
-
#
|
|
67
|
+
#execution_failed_icon[data-animate] #cross_p2 {
|
|
72
68
|
animation: draw 0.5s cubic-bezier(0.65, 0, 0.45, 1) forwards 0.2s;
|
|
73
69
|
}
|
|
74
70
|
@keyframes draw {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { effect } from "@preact/signals"
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
executionSignal,
|
|
5
|
+
executionTooltipOpenedSignal,
|
|
6
|
+
} from "../../core/execution_signals.js"
|
|
7
|
+
import {
|
|
8
|
+
closeExecutionTooltip,
|
|
9
|
+
openExecutionTooltip,
|
|
10
|
+
} from "../../core/execution_actions.js"
|
|
11
|
+
import { removeForceHideElement } from "../util/dom.js"
|
|
12
|
+
import { enableVariant } from "../variant.js"
|
|
13
|
+
|
|
14
|
+
const executionIndicator = document.querySelector(
|
|
15
|
+
"#document_execution_indicator",
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
export const renderDocumentExecutionIndicator = async () => {
|
|
19
|
+
removeForceHideElement(
|
|
20
|
+
document.querySelector("#document_execution_indicator"),
|
|
21
|
+
)
|
|
22
|
+
effect(() => {
|
|
23
|
+
const execution = executionSignal.value
|
|
24
|
+
updateExecutionIndicator(execution)
|
|
25
|
+
})
|
|
26
|
+
effect(() => {
|
|
27
|
+
const executionTooltipOpened = executionTooltipOpenedSignal.value
|
|
28
|
+
if (executionTooltipOpened) {
|
|
29
|
+
executionIndicator.setAttribute("data-tooltip-visible", "")
|
|
30
|
+
} else {
|
|
31
|
+
executionIndicator.removeAttribute("data-tooltip-visible")
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const updateExecutionIndicator = ({ status, startTime, endTime } = {}) => {
|
|
37
|
+
enableVariant(executionIndicator, { execution: status })
|
|
38
|
+
const variantNode = executionIndicator.querySelector("[data-when-active]")
|
|
39
|
+
variantNode.querySelector("button").onclick = () => {
|
|
40
|
+
const executionTooltipOpened = executionTooltipOpenedSignal.value
|
|
41
|
+
if (executionTooltipOpened) {
|
|
42
|
+
closeExecutionTooltip()
|
|
43
|
+
} else {
|
|
44
|
+
openExecutionTooltip()
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
variantNode.querySelector(".tooltip").textContent = computeText({
|
|
48
|
+
status,
|
|
49
|
+
startTime,
|
|
50
|
+
endTime,
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// relative time: https://github.com/tc39/proposal-intl-relative-time/issues/118
|
|
55
|
+
const computeText = ({ status, startTime, endTime }) => {
|
|
56
|
+
if (status === "completed") {
|
|
57
|
+
return `Execution completed in ${endTime - startTime}ms`
|
|
58
|
+
}
|
|
59
|
+
if (status === "errored") {
|
|
60
|
+
return `Execution failed in ${endTime - startTime}ms`
|
|
61
|
+
}
|
|
62
|
+
if (status === "running") {
|
|
63
|
+
return "Executing..."
|
|
64
|
+
}
|
|
65
|
+
return ""
|
|
66
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
* {
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
}
|
|
4
|
+
html,
|
|
5
|
+
body {
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
height: 100%;
|
|
9
|
+
}
|
|
10
|
+
html {
|
|
11
|
+
font-family: arial, sans;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* global utils */
|
|
15
|
+
html[data-animation-disabled] * {
|
|
16
|
+
transition: none !important;
|
|
17
|
+
animation-duration: 0s !important;
|
|
18
|
+
animation-delay: 0s !important;
|
|
19
|
+
}
|
|
20
|
+
[data-when] {
|
|
21
|
+
display: none !important;
|
|
22
|
+
}
|
|
23
|
+
[data-force-hide] {
|
|
24
|
+
display: none !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* focus rules */
|
|
28
|
+
button:focus,
|
|
29
|
+
a:focus,
|
|
30
|
+
input:focus,
|
|
31
|
+
*[data-contains-hidden-input] input:focus + * {
|
|
32
|
+
outline-style: none;
|
|
33
|
+
outline-offset: -2px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
*[data-contains-hidden-input] input:focus + * {
|
|
37
|
+
outline-width: 4px;
|
|
38
|
+
outline-offset: -2px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
button:focus-visible,
|
|
42
|
+
a:focus-visible,
|
|
43
|
+
input:focus-visible,
|
|
44
|
+
*[data-contains-hidden-input] input:focus-visible + * {
|
|
45
|
+
outline-style: auto;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
*[data-contains-hidden-input] input:focus-visible + * {
|
|
49
|
+
outline-color: rgb(0, 150, 255);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
Don't try to replace @-moz-document url-prefix() this by
|
|
54
|
+
|
|
55
|
+
-moz-outline or -moz-outline-color
|
|
56
|
+
Because firefox would take into account outline instead of -moz-outline
|
|
57
|
+
|
|
58
|
+
:moz-focus-ring
|
|
59
|
+
Because for some element we set the focus outline on a div which would not match :focusring
|
|
60
|
+
*/
|
|
61
|
+
@-moz-document url-prefix() {
|
|
62
|
+
button:focus-visible,
|
|
63
|
+
a:focus-visible,
|
|
64
|
+
input:focus-visible,
|
|
65
|
+
*[data-input-customized] input:focus-visible + * {
|
|
66
|
+
outline-width: 2px;
|
|
67
|
+
outline-offset: 0;
|
|
68
|
+
outline-style: solid;
|
|
69
|
+
/*
|
|
70
|
+
force a blue color for firefox otherwise
|
|
71
|
+
it uses outline-color: inherit
|
|
72
|
+
making it unpredictible and sometimes hard to see
|
|
73
|
+
*/
|
|
74
|
+
outline-color: rgb(0, 150, 255);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
::-moz-focus-inner {
|
|
78
|
+
border: 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Layout */
|
|
82
|
+
#toolbar_wrapper {
|
|
83
|
+
display: flex;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#toolbar_overlay {
|
|
88
|
+
position: fixed;
|
|
89
|
+
left: 0;
|
|
90
|
+
top: 0;
|
|
91
|
+
width: 100%;
|
|
92
|
+
height: 100%;
|
|
93
|
+
filter: url(#better-blur);
|
|
94
|
+
background-color: rgba(0, 0, 0, 0.2);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
#toolbar {
|
|
98
|
+
position: fixed;
|
|
99
|
+
bottom: 0;
|
|
100
|
+
height: 40px;
|
|
101
|
+
width: 100%;
|
|
102
|
+
background: #404040;
|
|
103
|
+
}
|
|
File without changes
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
#server_indicator button {
|
|
2
2
|
position: relative;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
#server_indicator button svg {
|
|
6
6
|
width: 40px;
|
|
7
7
|
height: 40px;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
#server_indicator .autoreload {
|
|
11
11
|
position: absolute;
|
|
12
12
|
width: 32px;
|
|
13
13
|
height: 32px;
|
|
@@ -15,31 +15,24 @@
|
|
|
15
15
|
left: 0;
|
|
16
16
|
top: 0;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
.event-source-autoreload[data-variant="enabled"] {
|
|
18
|
+
.autoreload[data-variant="enabled"] {
|
|
20
19
|
color: green;
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
#
|
|
22
|
+
#server_indicator .icon {
|
|
24
23
|
width: 40px;
|
|
25
24
|
height: 40px;
|
|
26
25
|
}
|
|
27
26
|
|
|
28
|
-
.
|
|
27
|
+
.server_indicator_circle {
|
|
29
28
|
stroke: black;
|
|
30
29
|
stroke-width: 0;
|
|
31
30
|
}
|
|
32
|
-
|
|
33
|
-
.eventsource-circle[data-variant="off"] {
|
|
34
|
-
fill: #cecece;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.eventsource-circle[data-variant="connecting"] {
|
|
31
|
+
.server_indicator_circle[data-variant="connecting"] {
|
|
38
32
|
fill: #cecece;
|
|
39
33
|
animation: wink 1.2s ease-out infinite;
|
|
40
34
|
transform-origin: center;
|
|
41
35
|
}
|
|
42
|
-
|
|
43
36
|
@keyframes wink {
|
|
44
37
|
0% {
|
|
45
38
|
opacity: 0;
|
|
@@ -51,15 +44,20 @@
|
|
|
51
44
|
opacity: 0;
|
|
52
45
|
}
|
|
53
46
|
}
|
|
47
|
+
.server_indicator_circle[data-variant="connected"] {
|
|
48
|
+
fill: green;
|
|
49
|
+
}
|
|
50
|
+
.server_indicator_circle[data-variant="closed"] {
|
|
51
|
+
fill: #cc0000;
|
|
52
|
+
}
|
|
54
53
|
|
|
55
|
-
.
|
|
54
|
+
.server_indicator_ring {
|
|
56
55
|
stroke: rgba(206, 206, 206, 0.46);
|
|
57
56
|
stroke-width: 4;
|
|
58
57
|
fill: transparent;
|
|
59
58
|
animation: pulse 1.2s ease-out infinite;
|
|
60
59
|
transform-origin: center;
|
|
61
60
|
}
|
|
62
|
-
|
|
63
61
|
@keyframes pulse {
|
|
64
62
|
0% {
|
|
65
63
|
transform: scale(0);
|
|
@@ -73,11 +71,3 @@
|
|
|
73
71
|
opacity: 0;
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
|
-
|
|
77
|
-
.eventsource-circle[data-variant="connected"] {
|
|
78
|
-
fill: green;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.eventsource-circle[data-variant="failed"] {
|
|
82
|
-
fill: #cc0000;
|
|
83
|
-
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { effect } from "@preact/signals"
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
serverConnectionSignal,
|
|
5
|
+
serverTooltipOpenedSignal,
|
|
6
|
+
} from "../../core/server_signals.js"
|
|
7
|
+
import {
|
|
8
|
+
openServerTooltip,
|
|
9
|
+
closeServerTooltip,
|
|
10
|
+
} from "../../core/server_actions.js"
|
|
11
|
+
import { removeForceHideElement } from "../util/dom.js"
|
|
12
|
+
import { enableVariant } from "../variant.js"
|
|
13
|
+
|
|
14
|
+
const parentServerEvents = window.parent.__server_events__
|
|
15
|
+
const serverEvents = window.__server_events__
|
|
16
|
+
const serverIndicator = document.querySelector("#server_indicator")
|
|
17
|
+
|
|
18
|
+
export const renderServerIndicator = () => {
|
|
19
|
+
removeForceHideElement(document.querySelector("#server_indicator"))
|
|
20
|
+
effect(() => {
|
|
21
|
+
const serverConnection = serverConnectionSignal.value
|
|
22
|
+
updateServerIndicator(serverConnection)
|
|
23
|
+
})
|
|
24
|
+
effect(() => {
|
|
25
|
+
const serverTooltipOpened = serverTooltipOpenedSignal.value
|
|
26
|
+
if (serverTooltipOpened) {
|
|
27
|
+
serverIndicator.setAttribute("data-tooltip-visible", "")
|
|
28
|
+
} else {
|
|
29
|
+
serverIndicator.removeAttribute("data-tooltip-visible")
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const updateServerIndicator = (connectionState) => {
|
|
35
|
+
enableVariant(serverIndicator, { connectionState })
|
|
36
|
+
const variantNode = document.querySelector(
|
|
37
|
+
"#server_indicator > [data-when-active]",
|
|
38
|
+
)
|
|
39
|
+
variantNode.querySelector("button").onclick = () => {
|
|
40
|
+
const serverTooltipOpened = serverTooltipOpenedSignal.value
|
|
41
|
+
if (serverTooltipOpened) {
|
|
42
|
+
closeServerTooltip()
|
|
43
|
+
} else {
|
|
44
|
+
openServerTooltip()
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (connectionState === "connecting") {
|
|
48
|
+
variantNode.querySelector("a").onclick = () => {
|
|
49
|
+
if (parentServerEvents) {
|
|
50
|
+
parentServerEvents.disconnect()
|
|
51
|
+
}
|
|
52
|
+
serverEvents.disconnect()
|
|
53
|
+
}
|
|
54
|
+
} else if (connectionState === "closed") {
|
|
55
|
+
variantNode.querySelector("a").onclick = () => {
|
|
56
|
+
if (parentServerEvents) {
|
|
57
|
+
parentServerEvents.connect()
|
|
58
|
+
}
|
|
59
|
+
serverEvents.connect()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|