@jsenv/core 24.0.0 → 24.2.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.
Files changed (68) hide show
  1. package/dist/jsenv_event_source_client.js +338 -0
  2. package/dist/jsenv_event_source_client.js.map +126 -0
  3. package/dist/jsenv_exploring_index.js.map +7 -7
  4. package/dist/jsenv_redirector.js +1386 -0
  5. package/dist/jsenv_redirector.js.map +384 -0
  6. package/dist/jsenv_toolbar.js +37 -504
  7. package/dist/jsenv_toolbar.js.map +37 -112
  8. package/dist/jsenv_toolbar_injector.js +31 -126
  9. package/dist/jsenv_toolbar_injector.js.map +11 -30
  10. package/package.json +1 -1
  11. package/src/buildProject.js +2 -0
  12. package/src/dev_server.js +108 -70
  13. package/src/internal/compiling/compile-directory/getOrGenerateCompiledFile.js +1 -2
  14. package/src/internal/compiling/compileFile.js +51 -23
  15. package/src/internal/compiling/createCompiledFileService.js +22 -10
  16. package/src/internal/compiling/html_source_file_service.js +43 -9
  17. package/src/internal/compiling/jsenvCompilerForHtml.js +146 -107
  18. package/src/internal/compiling/startCompileServer.js +60 -44
  19. package/src/internal/dev_server/event_source_client/event_source_client.js +63 -0
  20. package/src/internal/dev_server/event_source_client/event_source_client_file_info.js +17 -0
  21. package/src/internal/{toolbar/eventsource/connectEventSource.js → dev_server/event_source_client/event_source_connection.js} +47 -78
  22. package/src/internal/dev_server/event_source_client/file_changes.js +82 -0
  23. package/src/internal/dev_server/event_source_client/livereload_preference.js +13 -0
  24. package/src/internal/{exploring → dev_server/exploring}/exploring.css +0 -0
  25. package/src/internal/{exploring → dev_server/exploring}/exploring.html +1 -1
  26. package/src/internal/{exploring → dev_server/exploring}/exploring.js +0 -0
  27. package/src/internal/dev_server/exploring/exploring_file_info.js +21 -0
  28. package/src/internal/{exploring → dev_server/exploring}/fetchExploringJson.js +1 -1
  29. package/src/internal/{exploring/exploring.redirector.html → dev_server/redirector/redirector.html} +1 -1
  30. package/src/internal/{exploring/exploring.redirector.js → dev_server/redirector/redirector.js} +1 -1
  31. package/src/internal/dev_server/redirector/redirector_file_info.js +24 -0
  32. package/src/internal/{toolbar → dev_server/toolbar}/animation/toolbar.animation.js +0 -0
  33. package/src/internal/{toolbar → dev_server/toolbar}/backtolist/toolbar.backtolist.js +0 -0
  34. package/src/internal/{toolbar → dev_server/toolbar}/compilation/compilation.css +0 -0
  35. package/src/internal/{toolbar → dev_server/toolbar}/compilation/toolbar.compilation.js +1 -1
  36. package/src/internal/{toolbar → dev_server/toolbar}/eventsource/eventsource.css +0 -0
  37. package/src/internal/dev_server/toolbar/eventsource/toolbar.eventsource.js +83 -0
  38. package/src/internal/{toolbar → dev_server/toolbar}/execution/execution.css +0 -0
  39. package/src/internal/{toolbar → dev_server/toolbar}/execution/toolbar.execution.js +0 -0
  40. package/src/internal/{toolbar → dev_server/toolbar}/focus/focus.css +0 -0
  41. package/src/internal/{toolbar → dev_server/toolbar}/focus/toolbar.focus.js +0 -0
  42. package/src/internal/{toolbar → dev_server/toolbar}/jsenv-logo.svg +0 -0
  43. package/src/internal/{toolbar → dev_server/toolbar}/notification/toolbar.notification.js +0 -0
  44. package/src/internal/{toolbar → dev_server/toolbar}/responsive/overflow-menu.css +0 -0
  45. package/src/internal/{toolbar → dev_server/toolbar}/responsive/toolbar.responsive.js +0 -0
  46. package/src/internal/{toolbar → dev_server/toolbar}/settings/settings.css +0 -0
  47. package/src/internal/{toolbar → dev_server/toolbar}/settings/toolbar.settings.js +0 -0
  48. package/src/internal/{toolbar → dev_server/toolbar}/theme/jsenv-theme.css +0 -0
  49. package/src/internal/{toolbar → dev_server/toolbar}/theme/light-theme.css +0 -0
  50. package/src/internal/{toolbar → dev_server/toolbar}/theme/toolbar.theme.js +0 -0
  51. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.html +4 -37
  52. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.injector.js +3 -92
  53. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.main.css +0 -0
  54. package/src/internal/{toolbar → dev_server/toolbar}/toolbar.main.js +0 -0
  55. package/src/internal/dev_server/toolbar/toolbar_file_info.js +37 -0
  56. package/src/internal/{toolbar → dev_server/toolbar}/tooltip/tooltip.css +0 -0
  57. package/src/internal/{toolbar → dev_server/toolbar}/tooltip/tooltip.js +0 -0
  58. package/src/internal/{toolbar → dev_server/toolbar}/util/animation.js +0 -0
  59. package/src/internal/{toolbar → dev_server/toolbar}/util/dom.js +0 -0
  60. package/src/internal/{toolbar → dev_server/toolbar}/util/fetching.js +2 -2
  61. package/src/internal/{toolbar → dev_server/toolbar}/util/jsenvLogger.js +0 -0
  62. package/src/internal/{toolbar → dev_server/toolbar}/util/preferences.js +0 -0
  63. package/src/internal/{toolbar → dev_server/toolbar}/util/responsive.js +0 -0
  64. package/src/internal/{toolbar → dev_server/toolbar}/util/util.js +0 -0
  65. package/src/internal/{toolbar → dev_server/toolbar}/variant/variant.js +0 -0
  66. package/src/internal/jsenvInternalFiles.js +0 -58
  67. package/src/internal/toolbar/eventsource/connectCompileServerEventSource.js +0 -74
  68. package/src/internal/toolbar/eventsource/toolbar.eventsource.js +0 -239
@@ -1,15 +1,9 @@
1
- export const connectEventSource = (
1
+ /* eslint-env browser */
2
+
3
+ export const createEventSourceConnection = (
2
4
  eventSourceUrl,
3
5
  events = {},
4
- {
5
- connecting = () => {},
6
- connected = () => {},
7
- cancelled = () => {},
8
- failed = () => {},
9
- retryMaxAttempt = Infinity,
10
- retryAllocatedMs = Infinity,
11
- lastEventId,
12
- } = {},
6
+ { retryMaxAttempt = Infinity, retryAllocatedMs = Infinity, lastEventId } = {},
13
7
  ) => {
14
8
  const { EventSource } = window
15
9
  if (typeof EventSource !== "function") {
@@ -18,82 +12,40 @@ export const connectEventSource = (
18
12
 
19
13
  const eventSourceOrigin = new URL(eventSourceUrl).origin
20
14
 
21
- // will be either abort, disconnect or a third function calling cancelled
22
- // depending on connectionStatus
23
- let cancelCurrentConnection = () => {}
15
+ let connectionStatus = "default"
16
+ let connectionStatusChangeCallback = () => {}
17
+ let disconnect = () => {}
24
18
 
25
- const reconnect = () => {
26
- attemptConnection(
27
- lastEventId
28
- ? addLastEventIdIntoUrlSearchParams(eventSourceUrl, lastEventId)
29
- : eventSourceUrl,
30
- )
19
+ const goToStatus = (newStatus) => {
20
+ connectionStatus = newStatus
21
+ connectionStatusChangeCallback()
31
22
  }
32
23
 
33
24
  const attemptConnection = (url) => {
34
25
  const eventSource = new EventSource(url, {
35
26
  withCredentials: true,
36
27
  })
37
-
38
- let connectionStatus = "connecting"
39
- const abort = () => {
40
- if (connectionStatus !== "connecting") {
41
- console.warn(`abort ignored because connection is ${connectionStatus}`)
28
+ disconnect = () => {
29
+ if (
30
+ connectionStatus !== "connecting" &&
31
+ connectionStatus !== "connected"
32
+ ) {
33
+ console.warn(
34
+ `disconnect() ignored because connection is ${connectionStatus}`,
35
+ )
42
36
  return
43
37
  }
44
- connectionStatus = "aborted"
45
38
  eventSource.onerror = undefined
46
39
  eventSource.close()
47
- cancelled({ connect: reconnect })
48
- }
49
- cancelCurrentConnection = abort
50
- connecting({ cancel: abort })
51
-
52
- eventSource.onopen = () => {
53
- connectionStatus = "connected"
54
- const disconnect = () => {
55
- if (connectionStatus !== "connected") {
56
- console.warn(
57
- `disconnect ignored because connection is ${connectionStatus}`,
58
- )
59
- return
60
- }
61
- connectionStatus = "disconnected"
62
- eventSource.onerror = undefined
63
- eventSource.close()
64
- cancelled({ connect: reconnect })
65
- }
66
- cancelCurrentConnection = disconnect
67
- connected({ cancel: disconnect })
40
+ goToStatus("disconnected")
68
41
  }
69
-
70
42
  let retryCount = 0
71
43
  let firstRetryMs = Date.now()
72
-
73
44
  eventSource.onerror = (errorEvent) => {
74
- const considerFailed = () => {
75
- connectionStatus = "disconnected"
76
- failed({
77
- cancel: () => {
78
- if (connectionStatus !== "failed") {
79
- console.warn(
80
- `disable ignored because connection is ${connectionStatus}`,
81
- )
82
- return
83
- }
84
- connectionStatus = "disabled"
85
- cancelled({ connect: reconnect })
86
- },
87
- connect: reconnect,
88
- })
89
- }
90
-
91
45
  if (errorEvent.target.readyState === EventSource.CONNECTING) {
92
46
  if (retryCount > retryMaxAttempt) {
93
47
  console.info(`could not connect after ${retryMaxAttempt} attempt`)
94
- eventSource.onerror = undefined
95
- eventSource.close()
96
- considerFailed()
48
+ disconnect()
97
49
  return
98
50
  }
99
51
 
@@ -105,24 +57,24 @@ export const connectEventSource = (
105
57
  console.info(
106
58
  `could not connect in less than ${retryAllocatedMs} ms`,
107
59
  )
108
- eventSource.onerror = undefined
109
- eventSource.close()
110
- considerFailed()
60
+ disconnect()
111
61
  return
112
62
  }
113
63
  }
114
64
 
115
- connectionStatus = "connecting"
116
65
  retryCount++
117
- connecting({ cancel: abort })
66
+ goToStatus("connecting")
118
67
  return
119
68
  }
120
69
 
121
70
  if (errorEvent.target.readyState === EventSource.CLOSED) {
122
- considerFailed()
71
+ disconnect()
123
72
  return
124
73
  }
125
74
  }
75
+ eventSource.onopen = () => {
76
+ goToStatus("connected")
77
+ }
126
78
  Object.keys(events).forEach((eventName) => {
127
79
  eventSource.addEventListener(eventName, (e) => {
128
80
  if (e.origin === eventSourceOrigin) {
@@ -140,21 +92,38 @@ export const connectEventSource = (
140
92
  }
141
93
  })
142
94
  }
95
+ goToStatus("connecting")
143
96
  }
144
97
 
145
- attemptConnection(eventSourceUrl)
146
- const disconnect = () => {
147
- cancelCurrentConnection()
98
+ let connect = () => {
99
+ attemptConnection(eventSourceUrl)
100
+ connect = () => {
101
+ attemptConnection(
102
+ lastEventId
103
+ ? addLastEventIdIntoUrlSearchParams(eventSourceUrl, lastEventId)
104
+ : eventSourceUrl,
105
+ )
106
+ }
148
107
  }
149
108
 
150
109
  const removePageUnloadListener = listenPageUnload(() => {
151
110
  disconnect()
152
111
  })
153
112
 
154
- return () => {
113
+ const destroy = () => {
155
114
  removePageUnloadListener()
156
115
  disconnect()
157
116
  }
117
+
118
+ return {
119
+ getConnectionStatus: () => connectionStatus,
120
+ setConnectionStatusCallback: (callback) => {
121
+ connectionStatusChangeCallback = callback
122
+ },
123
+ connect,
124
+ disconnect,
125
+ destroy,
126
+ }
158
127
  }
159
128
 
160
129
  const addLastEventIdIntoUrlSearchParams = (url, lastEventId) => {
@@ -0,0 +1,82 @@
1
+ /* eslint-env browser */
2
+
3
+ import { isLivereloadEnabled } from "./livereload_preference.js"
4
+
5
+ let fileChanges = {}
6
+ let filechangeCallback = () => {}
7
+
8
+ export const getFileChanges = () => fileChanges
9
+
10
+ export const addFileChange = ({ file, eventType }) => {
11
+ fileChanges[file] = eventType
12
+ if (isLivereloadEnabled()) {
13
+ reloadIfNeeded()
14
+ } else {
15
+ filechangeCallback()
16
+ }
17
+ }
18
+
19
+ export const setFileChangeCallback = (callback) => {
20
+ filechangeCallback = callback
21
+ }
22
+
23
+ export const reloadIfNeeded = () => {
24
+ const customReloads = []
25
+ const cssReloads = []
26
+ const fullReloads = []
27
+
28
+ Object.keys(fileChanges).forEach((key) => {
29
+ const livereloadCallback = window.__jsenv__.livereloadingCallbacks[key]
30
+ if (livereloadCallback) {
31
+ customReloads.push(() => {
32
+ delete fileChanges[key]
33
+ livereloadCallback({
34
+ reloadPage,
35
+ })
36
+ })
37
+ } else if (
38
+ key.endsWith(".css") ||
39
+ key.endsWith(".scss") ||
40
+ key.endsWith(".sass")
41
+ ) {
42
+ cssReloads.push(() => {
43
+ delete fileChanges[key]
44
+ })
45
+ } else {
46
+ fullReloads.push(key)
47
+ }
48
+ })
49
+
50
+ if (fullReloads.length > 0) {
51
+ reloadPage()
52
+ return
53
+ }
54
+
55
+ customReloads.forEach((customReload) => {
56
+ customReload()
57
+ })
58
+
59
+ if (cssReloads.length) {
60
+ reloadAllCss()
61
+ cssReloads.forEach((cssReload) => {
62
+ cssReload()
63
+ })
64
+ }
65
+
66
+ filechangeCallback()
67
+ }
68
+
69
+ const reloadAllCss = () => {
70
+ const links = Array.from(window.parent.document.getElementsByTagName("link"))
71
+ links.forEach((link) => {
72
+ if (link.rel === "stylesheet") {
73
+ const url = new URL(link.href)
74
+ url.searchParams.set("t", Date.now())
75
+ link.href = String(url)
76
+ }
77
+ })
78
+ }
79
+
80
+ const reloadPage = () => {
81
+ window.parent.location.reload(true)
82
+ }
@@ -0,0 +1,13 @@
1
+ /* eslint-env browser */
2
+
3
+ export const isLivereloadEnabled = () => {
4
+ const value = window.localStorage.hasOwnProperty("livereload")
5
+ if (value === "0") {
6
+ return false
7
+ }
8
+ return true
9
+ }
10
+
11
+ export const setLivereloadPreference = (value) => {
12
+ window.localStorage.setItem("livereload", value ? "1" : "0")
13
+ }
@@ -4,7 +4,7 @@
4
4
  <title>Exploring</title>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <meta charset="utf-8" />
7
- <link rel="icon" href="../jsenv.png" />
7
+ <link rel="icon" href="../../jsenv.png" />
8
8
  <link rel="stylesheet" type="text/css" href="./exploring.css" />
9
9
  </head>
10
10
 
@@ -0,0 +1,21 @@
1
+ import { jsenvCoreDirectoryUrl } from "@jsenv/core/src/internal/jsenvCoreDirectoryUrl.js"
2
+
3
+ const htmlSourceUrl = new URL(
4
+ "./src/internal/dev_server/exploring/exploring.html",
5
+ jsenvCoreDirectoryUrl,
6
+ ).href
7
+ export const exploringIndexHtmlFileInfo = {
8
+ sourceUrl: htmlSourceUrl,
9
+ }
10
+
11
+ const jsSourceRelativeUrl = "./src/internal/dev_server/exploring/exploring.js"
12
+ const jsBuildRelativeUrl = "./jsenv_exploring_index.js"
13
+ const jsBuildUrl = new URL(
14
+ "./dist/jsenv_exploring_index.js",
15
+ jsenvCoreDirectoryUrl,
16
+ ).href
17
+ export const exploringIndexJsFileInfo = {
18
+ sourceRelativeUrl: jsSourceRelativeUrl,
19
+ buildRelativeUrl: jsBuildRelativeUrl,
20
+ buildUrl: jsBuildUrl,
21
+ }
@@ -1,6 +1,6 @@
1
1
  import { createDetailedMessage } from "@jsenv/logger"
2
2
 
3
- import { fetchJson } from "../browser-utils/fetchJson.js"
3
+ import { fetchJson } from "../../browser-utils/fetchJson.js"
4
4
 
5
5
  export const fetchExploringJson = async ({ signal } = {}) => {
6
6
  try {
@@ -8,6 +8,6 @@
8
8
  </head>
9
9
 
10
10
  <body>
11
- <script src="/.jsenv/exploring.redirector.js"></script>
11
+ <script src="/.jsenv/redirector.js"></script>
12
12
  </body>
13
13
  </html>
@@ -1,4 +1,4 @@
1
- import { scanBrowserRuntimeFeatures } from "../runtime/createBrowserRuntime/scanBrowserRuntimeFeatures.js"
1
+ import { scanBrowserRuntimeFeatures } from "../../runtime/createBrowserRuntime/scanBrowserRuntimeFeatures.js"
2
2
 
3
3
  const redirect = async () => {
4
4
  const redirectTarget = new URLSearchParams(window.location.search).get(
@@ -0,0 +1,24 @@
1
+ /*
2
+ * auto redirection to a compile group depending on browser capabilities
3
+ */
4
+
5
+ import { jsenvCoreDirectoryUrl } from "@jsenv/core/src/internal/jsenvCoreDirectoryUrl.js"
6
+
7
+ const htmlSourceUrl = new URL(
8
+ "./src/internal/dev_server/redirector/redirector.html",
9
+ jsenvCoreDirectoryUrl,
10
+ ).href
11
+ export const redirectorHtmlFileInfo = {
12
+ sourceUrl: htmlSourceUrl,
13
+ }
14
+
15
+ const jsSourceRelativeUrl = "./src/internal/dev_server/redirector/redirector.js"
16
+ const jsBuildRelativeUrl = "./jsenv_redirector.js"
17
+ const jsSourceUrl = new URL(jsSourceRelativeUrl, jsenvCoreDirectoryUrl).href
18
+ const jsBuildUrl = new URL("./dist/jsenv_redirector.js", jsenvCoreDirectoryUrl)
19
+ export const redirectorJsFileInfo = {
20
+ sourceRelativeUrl: jsSourceRelativeUrl,
21
+ buildRelativeUrl: jsBuildRelativeUrl,
22
+ sourceUrl: jsSourceUrl,
23
+ buildUrl: jsBuildUrl,
24
+ }
@@ -1,4 +1,4 @@
1
- import { scanBrowserRuntimeFeatures } from "../../runtime/createBrowserRuntime/scanBrowserRuntimeFeatures.js"
1
+ import { scanBrowserRuntimeFeatures } from "../../../runtime/createBrowserRuntime/scanBrowserRuntimeFeatures.js"
2
2
  import { removeForceHideElement } from "../util/dom.js"
3
3
  import { enableVariant } from "../variant/variant.js"
4
4
 
@@ -0,0 +1,83 @@
1
+ import { removeForceHideElement } from "../util/dom.js"
2
+ import { enableVariant } from "../variant/variant.js"
3
+ import {
4
+ toggleTooltip,
5
+ removeAutoShowTooltip,
6
+ autoShowTooltip,
7
+ } from "../tooltip/tooltip.js"
8
+
9
+ let livereloadingAvailableOnServer = false
10
+ const parentEventSourceClient = window.parent.__jsenv_event_source_client__
11
+
12
+ export const initToolbarEventSource = ({ livereloading }) => {
13
+ removeForceHideElement(document.querySelector("#eventsource-indicator"))
14
+ livereloadingAvailableOnServer = livereloading
15
+ if (!livereloadingAvailableOnServer) {
16
+ disableLivereloadSetting()
17
+ }
18
+ parentEventSourceClient.setConnectionStatusChangeCallback = () => {
19
+ updateEventSourceIndicator()
20
+ }
21
+ const livereloadCheckbox = document.querySelector("#toggle-livereload")
22
+ livereloadCheckbox.checked = parentEventSourceClient.isLivereloadEnabled()
23
+ livereloadCheckbox.onchange = () => {
24
+ parentEventSourceClient.setLivereloadPreference(livereloadCheckbox.checked)
25
+ updateEventSourceIndicator()
26
+ }
27
+ updateEventSourceIndicator()
28
+ }
29
+
30
+ const updateEventSourceIndicator = () => {
31
+ const eventSourceIndicator = document.querySelector("#eventsource-indicator")
32
+ const fileChanges = parentEventSourceClient.getFileChanges()
33
+ const changeCount = Object.keys(fileChanges).length
34
+ const eventSourceConnectionState =
35
+ parentEventSourceClient.getConnectionStatus()
36
+ enableVariant(eventSourceIndicator, {
37
+ eventsource: eventSourceConnectionState,
38
+ livereload: parentEventSourceClient.isLivereloadEnabled() ? "on" : "off",
39
+ changes: changeCount > 0 ? "yes" : "no",
40
+ })
41
+
42
+ const variantNode = document.querySelector(
43
+ "#eventsource-indicator > [data-when-active]",
44
+ )
45
+ variantNode.querySelector("button").onclick = () => {
46
+ toggleTooltip(eventSourceIndicator)
47
+ }
48
+
49
+ if (eventSourceConnectionState === "connecting") {
50
+ variantNode.querySelector("a").onclick = () => {
51
+ parentEventSourceClient.disconnect()
52
+ }
53
+ } else if (eventSourceConnectionState === "connected") {
54
+ removeAutoShowTooltip(eventSourceIndicator)
55
+ if (changeCount) {
56
+ const changeLink = variantNode.querySelector(".eventsource-changes-link")
57
+ changeLink.innerHTML = changeCount
58
+ changeLink.onclick = () => {
59
+ console.log(JSON.stringify(fileChanges, null, " "), fileChanges)
60
+ // eslint-disable-next-line no-alert
61
+ window.parent.alert(JSON.stringify(fileChanges, null, " "))
62
+ }
63
+ variantNode.querySelector(".eventsource-reload-link").onclick = () => {
64
+ parentEventSourceClient.reloadIfNeeded()
65
+ }
66
+ }
67
+ } else if (eventSourceConnectionState === "disconnected") {
68
+ autoShowTooltip(eventSourceIndicator)
69
+ variantNode.querySelector("a").onclick = () => {
70
+ parentEventSourceClient.connect()
71
+ }
72
+ }
73
+ }
74
+
75
+ const disableLivereloadSetting = () => {
76
+ document
77
+ .querySelector(".settings-livereload")
78
+ .setAttribute("data-disabled", "true")
79
+ document
80
+ .querySelector(".settings-livereload")
81
+ .setAttribute("title", `Livereload not available: disabled by server`)
82
+ document.querySelector("#toggle-livereload").disabled = true
83
+ }
@@ -130,9 +130,9 @@
130
130
  </svg>
131
131
  </button>
132
132
  </div>
133
- <div data-when="eventsource:failed">
133
+ <div data-when="eventsource:disconnected">
134
134
  <div class="tooltip">
135
- Cannot connect to server
135
+ Disconnected from server
136
136
  <br />
137
137
  <div class="tooltipAction">
138
138
  <a href="javascript:void(0);">
@@ -147,7 +147,7 @@
147
147
  d="M16 9v4.66l-3.5 3.51V19h-1v-1.83L8 13.65V9h8m0-6h-2v4h-4V3H8v4h-.01C6.9 6.99 6 7.89 6 8.98v5.52L9.5 18v3h5v-3l3.5-3.51V9c0-1.1-.9-2-2-2V3z"
148
148
  />
149
149
  </svg>
150
- retry
150
+ connect
151
151
  </a>
152
152
  </div>
153
153
  </div>
@@ -155,7 +155,7 @@
155
155
  <svg>
156
156
  <circle
157
157
  class="eventsource-circle"
158
- data-variant="failed"
158
+ data-variant="off"
159
159
  cx="20"
160
160
  cy="20"
161
161
  r="5"
@@ -218,39 +218,6 @@
218
218
  </svg>
219
219
  </button>
220
220
  </div>
221
- <div data-when="eventsource:disabled">
222
- <div class="tooltip">
223
- Disconnected from server
224
- <br />
225
- <div class="tooltipAction">
226
- <a href="javascript:void(0);">
227
- <svg
228
- xmlns="http://www.w3.org/2000/svg"
229
- viewBox="0 0 24 24"
230
- id="powerIconSvg"
231
- class="tooltipIcon"
232
- >
233
- <path d="M0 0h24v24H0V0z" fill="none" />
234
- <path
235
- d="M16 9v4.66l-3.5 3.51V19h-1v-1.83L8 13.65V9h8m0-6h-2v4h-4V3H8v4h-.01C6.9 6.99 6 7.89 6 8.98v5.52L9.5 18v3h5v-3l3.5-3.51V9c0-1.1-.9-2-2-2V3z"
236
- />
237
- </svg>
238
- connect
239
- </a>
240
- </div>
241
- </div>
242
- <button>
243
- <svg>
244
- <circle
245
- class="eventsource-circle"
246
- data-variant="off"
247
- cx="20"
248
- cy="20"
249
- r="5"
250
- />
251
- </svg>
252
- </button>
253
- </div>
254
221
  </section>
255
222
 
256
223
  <section id="settings" data-responsive-toolbar-element>