@jsenv/plugin-toolbar 0.1.14 → 0.1.15

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 (58) hide show
  1. package/package.json +2 -2
  2. package/src/client/core/animation_actions.js +5 -5
  3. package/src/client/core/animation_effects.js +6 -6
  4. package/src/client/core/animation_signals.js +4 -4
  5. package/src/client/core/changes_actions.js +5 -5
  6. package/src/client/core/changes_signals.js +2 -2
  7. package/src/client/core/execution_actions.js +16 -16
  8. package/src/client/core/execution_effects.js +10 -10
  9. package/src/client/core/execution_signals.js +6 -6
  10. package/src/client/core/notification_actions.js +31 -31
  11. package/src/client/core/notification_context.js +2 -1
  12. package/src/client/core/notification_effects.js +6 -6
  13. package/src/client/core/notification_signals.js +5 -5
  14. package/src/client/core/parent_window_actions.js +18 -18
  15. package/src/client/core/parent_window_context.js +5 -5
  16. package/src/client/core/parent_window_effects.js +9 -9
  17. package/src/client/core/parent_window_signals.js +17 -17
  18. package/src/client/core/server_actions.js +5 -5
  19. package/src/client/core/server_effects.js +6 -6
  20. package/src/client/core/server_signals.js +7 -7
  21. package/src/client/core/settings_actions.js +5 -5
  22. package/src/client/core/settings_signals.js +2 -2
  23. package/src/client/core/theme_actions.js +5 -5
  24. package/src/client/core/theme_effects.js +5 -5
  25. package/src/client/core/theme_signals.js +4 -4
  26. package/src/client/core/toolbar_logger.js +8 -8
  27. package/src/client/core/toolbar_open_actions.js +5 -5
  28. package/src/client/core/toolbar_open_effects.js +4 -4
  29. package/src/client/core/toolbar_open_signals.js +4 -4
  30. package/src/client/core/toolbar_state_context.js +1 -1
  31. package/src/client/core/toolbar_state_effects.js +7 -7
  32. package/src/client/core/toolbar_state_signals.js +11 -11
  33. package/src/client/core/tooltip_actions.js +5 -5
  34. package/src/client/toolbar_core.js +8 -8
  35. package/src/client/toolbar_injector.js +97 -97
  36. package/src/client/ui/changes_indicator/changes_indicator.js +33 -33
  37. package/src/client/ui/document_execution_indicator/document_execution_indicator.js +28 -28
  38. package/src/client/ui/document_index_link/document_index_link.js +3 -3
  39. package/src/client/ui/server_indicator/server_indicator.js +30 -30
  40. package/src/client/ui/toolbar_close_button/toolbar_close_button.js +6 -6
  41. package/src/client/ui/toolbar_menu_overflow/toolbar_menu_overflow.js +50 -50
  42. package/src/client/ui/toolbar_opening/toolbar_opening.js +35 -35
  43. package/src/client/ui/toolbar_overlay/toolbar_overlay.js +36 -36
  44. package/src/client/ui/toolbar_settings/toolbar_animation_setting.js +13 -13
  45. package/src/client/ui/toolbar_settings/toolbar_autoreload_setting.js +19 -19
  46. package/src/client/ui/toolbar_settings/toolbar_notification_setting.js +47 -47
  47. package/src/client/ui/toolbar_settings/toolbar_settings.js +29 -29
  48. package/src/client/ui/toolbar_settings/toolbar_theme_setting.js +8 -8
  49. package/src/client/ui/toolbar_ui.js +19 -19
  50. package/src/client/ui/util/animation.js +116 -116
  51. package/src/client/ui/util/dom.js +29 -29
  52. package/src/client/ui/util/fetch_using_xhr.js +184 -184
  53. package/src/client/ui/util/fetching.js +6 -6
  54. package/src/client/ui/util/iframe_to_parent_href.js +6 -6
  55. package/src/client/ui/util/responsive.js +48 -48
  56. package/src/client/ui/util/util.js +13 -13
  57. package/src/client/ui/variant.js +27 -27
  58. package/src/jsenv_plugin_toolbar.js +17 -17
@@ -1,23 +1,23 @@
1
- import { paramsFromParentWindow } from "./parent_window_context.js"
1
+ import { paramsFromParentWindow } from "./parent_window_context.js";
2
2
 
3
- const logLevel = paramsFromParentWindow.logLevel
3
+ const logLevel = paramsFromParentWindow.logLevel;
4
4
 
5
5
  export const logger = {
6
6
  info: (...args) => {
7
7
  if (logLevel === "warn" || logLevel === "info" || logLevel === "debug") {
8
- console.info(...prefixArgs(...args))
8
+ console.info(...prefixArgs(...args));
9
9
  }
10
10
  },
11
11
 
12
12
  debug: (...args) => {
13
13
  if (logLevel === "debug") {
14
- console.debug(...prefixArgs(...args))
14
+ console.debug(...prefixArgs(...args));
15
15
  }
16
16
  },
17
- }
17
+ };
18
18
 
19
19
  // a nice yellow:ffdc00
20
- const backgroundColor = "#F7931E" // jsenv logo color
20
+ const backgroundColor = "#F7931E"; // jsenv logo color
21
21
 
22
22
  // eslint-disable-next-line no-unused-vars
23
23
  const prefixArgs = (...args) => {
@@ -25,5 +25,5 @@ const prefixArgs = (...args) => {
25
25
  `%cjsenv`,
26
26
  `background: ${backgroundColor}; color: black; padding: 1px 3px; margin: 0 1px`,
27
27
  ...args,
28
- ]
29
- }
28
+ ];
29
+ };
@@ -1,9 +1,9 @@
1
- import { openedSignal } from "./toolbar_open_signals.js"
1
+ import { openedSignal } from "./toolbar_open_signals.js";
2
2
 
3
3
  export const openToolbar = () => {
4
- openedSignal.value = true
5
- }
4
+ openedSignal.value = true;
5
+ };
6
6
 
7
7
  export const closeToolbar = () => {
8
- openedSignal.value = false
9
- }
8
+ openedSignal.value = false;
9
+ };
@@ -1,5 +1,5 @@
1
- import { addExternalCommandCallback } from "./parent_window_actions.js"
2
- import { openToolbar, closeToolbar } from "./toolbar_open_actions.js"
1
+ import { addExternalCommandCallback } from "./parent_window_actions.js";
2
+ import { openToolbar, closeToolbar } from "./toolbar_open_actions.js";
3
3
 
4
- addExternalCommandCallback("openToolbar", openToolbar)
5
- addExternalCommandCallback("closeToolbar", closeToolbar)
4
+ addExternalCommandCallback("openToolbar", openToolbar);
5
+ addExternalCommandCallback("closeToolbar", closeToolbar);
@@ -1,7 +1,7 @@
1
- import { signal } from "@preact/signals"
1
+ import { signal } from "@preact/signals";
2
2
 
3
- import { paramsFromParentWindow } from "./parent_window_context.js"
4
- import { stateFromLocalStorage } from "./toolbar_state_context.js"
3
+ import { paramsFromParentWindow } from "./parent_window_context.js";
4
+ import { stateFromLocalStorage } from "./toolbar_state_context.js";
5
5
 
6
6
  export const openedSignal = signal(
7
7
  typeof stateFromLocalStorage.opened === "boolean"
@@ -9,4 +9,4 @@ export const openedSignal = signal(
9
9
  : typeof paramsFromParentWindow.opened === "boolean"
10
10
  ? paramsFromParentWindow.opened
11
11
  : false,
12
- )
12
+ );
@@ -2,4 +2,4 @@ export const stateFromLocalStorage = localStorage.hasOwnProperty(
2
2
  "jsenv_toolbar",
3
3
  )
4
4
  ? JSON.parse(localStorage.getItem("jsenv_toolbar"))
5
- : {}
5
+ : {};
@@ -1,10 +1,10 @@
1
- import { effect } from "@preact/signals"
1
+ import { effect } from "@preact/signals";
2
2
 
3
- import { toolbarStateSignal } from "./toolbar_state_signals.js"
4
- import { sendEventToParent } from "./parent_window_actions.js"
3
+ import { toolbarStateSignal } from "./toolbar_state_signals.js";
4
+ import { sendEventToParent } from "./parent_window_actions.js";
5
5
 
6
6
  effect(() => {
7
- const toolbarState = toolbarStateSignal.value
8
- localStorage.setItem("jsenv_toolbar", JSON.stringify(toolbarState))
9
- sendEventToParent("toolbar_state_change", toolbarState)
10
- })
7
+ const toolbarState = toolbarStateSignal.value;
8
+ localStorage.setItem("jsenv_toolbar", JSON.stringify(toolbarState));
9
+ sendEventToParent("toolbar_state_change", toolbarState);
10
+ });
@@ -1,20 +1,20 @@
1
- import { computed } from "@preact/signals"
1
+ import { computed } from "@preact/signals";
2
2
 
3
- import { openedSignal } from "./toolbar_open_signals.js"
4
- import { themeSignal } from "./theme_signals.js"
5
- import { animationsEnabledSignal } from "./animation_signals.js"
6
- import { notificationsEnabledSignal } from "./notification_signals.js"
3
+ import { openedSignal } from "./toolbar_open_signals.js";
4
+ import { themeSignal } from "./theme_signals.js";
5
+ import { animationsEnabledSignal } from "./animation_signals.js";
6
+ import { notificationsEnabledSignal } from "./notification_signals.js";
7
7
 
8
8
  export const toolbarStateSignal = computed(() => {
9
- const opened = openedSignal.value
10
- const theme = themeSignal.value
11
- const animationsEnabled = animationsEnabledSignal.value
12
- const notificationsEnabled = notificationsEnabledSignal.value
9
+ const opened = openedSignal.value;
10
+ const theme = themeSignal.value;
11
+ const animationsEnabled = animationsEnabledSignal.value;
12
+ const notificationsEnabled = notificationsEnabledSignal.value;
13
13
 
14
14
  return {
15
15
  opened,
16
16
  theme,
17
17
  animationsEnabled,
18
18
  notificationsEnabled,
19
- }
20
- })
19
+ };
20
+ });
@@ -1,7 +1,7 @@
1
- import { closeExecutionTooltip } from "./execution_actions.js"
2
- import { closeServerTooltip } from "./server_actions.js"
1
+ import { closeExecutionTooltip } from "./execution_actions.js";
2
+ import { closeServerTooltip } from "./server_actions.js";
3
3
 
4
4
  export const closeAllTooltips = () => {
5
- closeExecutionTooltip()
6
- closeServerTooltip()
7
- }
5
+ closeExecutionTooltip();
6
+ closeServerTooltip();
7
+ };
@@ -1,8 +1,8 @@
1
- import "./core/animation_effects.js"
2
- import "./core/execution_effects.js"
3
- import "./core/notification_effects.js"
4
- import "./core/parent_window_effects.js"
5
- import "./core/server_effects.js"
6
- import "./core/theme_effects.js"
7
- import "./core/toolbar_open_effects.js"
8
- import "./core/toolbar_state_effects.js"
1
+ import "./core/animation_effects.js";
2
+ import "./core/execution_effects.js";
3
+ import "./core/notification_effects.js";
4
+ import "./core/parent_window_effects.js";
5
+ import "./core/server_effects.js";
6
+ import "./core/theme_effects.js";
7
+ import "./core/toolbar_open_effects.js";
8
+ import "./core/toolbar_state_effects.js";
@@ -1,4 +1,4 @@
1
- const jsenvLogoSvgUrl = new URL("./ui/jsenv_logo.svg", import.meta.url)
1
+ const jsenvLogoSvgUrl = new URL("./ui/jsenv_logo.svg", import.meta.url);
2
2
 
3
3
  export const injectToolbar = async ({
4
4
  toolbarUrl,
@@ -11,21 +11,21 @@ export const injectToolbar = async ({
11
11
  }) => {
12
12
  if (document.readyState !== "complete") {
13
13
  await new Promise((resolve) => {
14
- window.addEventListener("load", resolve)
15
- })
14
+ window.addEventListener("load", resolve);
15
+ });
16
16
  }
17
17
  await new Promise((resolve) => {
18
18
  if (window.requestIdleCallback) {
19
- window.requestIdleCallback(resolve, { timeout: 400 })
19
+ window.requestIdleCallback(resolve, { timeout: 400 });
20
20
  } else {
21
- window.requestAnimationFrame(resolve)
21
+ window.requestAnimationFrame(resolve);
22
22
  }
23
- })
24
- const placeholder = getToolbarPlaceholder()
23
+ });
24
+ const placeholder = getToolbarPlaceholder();
25
25
 
26
- const iframe = document.createElement("iframe")
27
- iframe.setAttribute("tabindex", -1)
28
- iframe.setAttribute("allowtransparency", true)
26
+ const iframe = document.createElement("iframe");
27
+ iframe.setAttribute("tabindex", -1);
28
+ iframe.setAttribute("allowtransparency", true);
29
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
30
  // allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
31
31
  Object.assign(iframe.style, {
@@ -40,51 +40,51 @@ export const injectToolbar = async ({
40
40
  "transition-duration": "0",
41
41
  "transition-property": "height, visibility",
42
42
  "border": "none",
43
- })
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)
43
+ });
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
48
  if (opened) {
49
- toolbarUrlObject.searchParams.set("opened", "")
49
+ toolbarUrlObject.searchParams.set("opened", "");
50
50
  }
51
51
  if (autoreload) {
52
- toolbarUrlObject.searchParams.set("autoreload", "")
52
+ toolbarUrlObject.searchParams.set("autoreload", "");
53
53
  }
54
54
  if (animationsEnabled) {
55
- toolbarUrlObject.searchParams.set("animationsEnabled", "")
55
+ toolbarUrlObject.searchParams.set("animationsEnabled", "");
56
56
  }
57
57
  if (notificationsEnabled) {
58
- toolbarUrlObject.searchParams.set("notificationsEnabled", "")
58
+ toolbarUrlObject.searchParams.set("notificationsEnabled", "");
59
59
  }
60
60
  // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
61
- iframe.setAttribute("src", toolbarUrlObject.href)
62
- iframe.name = "jsenv toolbar"
63
- placeholder.parentNode.replaceChild(iframe, placeholder)
61
+ iframe.setAttribute("src", toolbarUrlObject.href);
62
+ iframe.name = "jsenv toolbar";
63
+ placeholder.parentNode.replaceChild(iframe, placeholder);
64
64
 
65
65
  const listenToolbarStateChange = (callback) => {
66
- return addToolbarEventCallback(iframe, "toolbar_state_change", callback)
67
- }
66
+ return addToolbarEventCallback(iframe, "toolbar_state_change", callback);
67
+ };
68
68
 
69
69
  const cleanupInitOnReady = addToolbarEventCallback(
70
70
  iframe,
71
71
  "toolbar_ready",
72
72
  () => {
73
- cleanupInitOnReady()
74
- sendCommandToToolbar(iframe, "initToolbar")
73
+ cleanupInitOnReady();
74
+ sendCommandToToolbar(iframe, "initToolbar");
75
75
  setTimeout(() => {
76
76
  listenToolbarStateChange(({ animationsEnabled }) => {
77
77
  if (animationsEnabled) {
78
- iframe.style.transitionDuration = "300ms"
78
+ iframe.style.transitionDuration = "300ms";
79
79
  } else {
80
- iframe.style.transitionDuration = "0s"
80
+ iframe.style.transitionDuration = "0s";
81
81
  }
82
- })
83
- })
82
+ });
83
+ });
84
84
  },
85
- )
85
+ );
86
86
 
87
- const div = document.createElement("div")
87
+ const div = document.createElement("div");
88
88
  div.innerHTML = `
89
89
  <div id="jsenv_toolbar_trigger" style="display:none">
90
90
  <svg id="jsenv_toolbar_trigger_icon">
@@ -130,82 +130,82 @@ export const injectToolbar = async ({
130
130
  opacity: 1;
131
131
  }
132
132
  </style>
133
- </div>`
134
- const toolbarTrigger = div.firstElementChild
135
- iframe.parentNode.appendChild(toolbarTrigger)
133
+ </div>`;
134
+ const toolbarTrigger = div.firstElementChild;
135
+ iframe.parentNode.appendChild(toolbarTrigger);
136
136
 
137
- let timer
137
+ let timer;
138
138
  toolbarTrigger.onmouseenter = () => {
139
- toolbarTrigger.setAttribute("data-animate", "")
140
- timer = setTimeout(expandToolbarTrigger, 500)
141
- }
139
+ toolbarTrigger.setAttribute("data-animate", "");
140
+ timer = setTimeout(expandToolbarTrigger, 500);
141
+ };
142
142
  toolbarTrigger.onmouseleave = () => {
143
- clearTimeout(timer)
144
- collapseToolbarTrigger()
145
- }
143
+ clearTimeout(timer);
144
+ collapseToolbarTrigger();
145
+ };
146
146
  toolbarTrigger.onfocus = () => {
147
- toolbarTrigger.removeAttribute("data-animate")
148
- expandToolbarTrigger()
149
- }
147
+ toolbarTrigger.removeAttribute("data-animate");
148
+ expandToolbarTrigger();
149
+ };
150
150
  toolbarTrigger.onblur = () => {
151
- toolbarTrigger.removeAttribute("data-animate")
152
- clearTimeout(timer)
153
- collapseToolbarTrigger()
154
- }
151
+ toolbarTrigger.removeAttribute("data-animate");
152
+ clearTimeout(timer);
153
+ collapseToolbarTrigger();
154
+ };
155
155
  toolbarTrigger.onclick = () => {
156
- sendCommandToToolbar(iframe, "openToolbar")
157
- }
156
+ sendCommandToToolbar(iframe, "openToolbar");
157
+ };
158
158
 
159
159
  const showToolbarTrigger = () => {
160
- toolbarTrigger.style.display = "block"
161
- }
160
+ toolbarTrigger.style.display = "block";
161
+ };
162
162
 
163
163
  const hideToolbarTrigger = () => {
164
- toolbarTrigger.style.display = "none"
165
- }
164
+ toolbarTrigger.style.display = "none";
165
+ };
166
166
 
167
167
  const expandToolbarTrigger = () => {
168
- toolbarTrigger.setAttribute("data-expanded", "")
169
- }
168
+ toolbarTrigger.setAttribute("data-expanded", "");
169
+ };
170
170
 
171
171
  const collapseToolbarTrigger = () => {
172
- toolbarTrigger.removeAttribute("data-expanded", "")
173
- }
172
+ toolbarTrigger.removeAttribute("data-expanded", "");
173
+ };
174
174
 
175
175
  listenToolbarStateChange(({ opened }) => {
176
176
  if (opened) {
177
- hideToolbarTrigger()
177
+ hideToolbarTrigger();
178
178
  } else {
179
- showToolbarTrigger()
179
+ showToolbarTrigger();
180
180
  }
181
- })
181
+ });
182
182
 
183
- await iframeLoadedPromise
184
- iframe.removeAttribute("tabindex")
183
+ await iframeLoadedPromise;
184
+ iframe.removeAttribute("tabindex");
185
185
 
186
- return iframe
187
- }
186
+ return iframe;
187
+ };
188
188
 
189
189
  const addToolbarEventCallback = (iframe, eventName, callback) => {
190
190
  const messageEventCallback = (messageEvent) => {
191
- const { data } = messageEvent
191
+ const { data } = messageEvent;
192
192
  if (typeof data !== "object") {
193
- return
193
+ return;
194
194
  }
195
- const { __jsenv__ } = data
195
+ const { __jsenv__ } = data;
196
196
  if (!__jsenv__) {
197
- return
197
+ return;
198
198
  }
199
199
  if (__jsenv__.event !== eventName) {
200
- return
200
+ return;
201
201
  }
202
- callback(__jsenv__.data)
203
- }
204
- window.addEventListener("message", messageEventCallback, false)
202
+ callback(__jsenv__.data);
203
+ };
204
+ window.addEventListener("message", messageEventCallback, false);
205
205
  return () => {
206
- window.removeEventListener("message", messageEventCallback, false)
207
- }
208
- }
206
+ window.removeEventListener("message", messageEventCallback, false);
207
+ };
208
+ };
209
209
 
210
210
  const sendCommandToToolbar = (iframe, command, ...args) => {
211
211
  iframe.contentWindow.postMessage(
@@ -216,40 +216,40 @@ const sendCommandToToolbar = (iframe, command, ...args) => {
216
216
  },
217
217
  },
218
218
  window.origin,
219
- )
220
- }
219
+ );
220
+ };
221
221
 
222
222
  const getToolbarPlaceholder = () => {
223
- const placeholder = queryPlaceholder()
223
+ const placeholder = queryPlaceholder();
224
224
  if (placeholder) {
225
225
  if (document.body.contains(placeholder)) {
226
- return placeholder
226
+ return placeholder;
227
227
  }
228
228
  // otherwise iframe would not be visible because in <head>
229
229
  console.warn(
230
230
  "element with [data-jsenv-toolbar-placeholder] must be inside document.body",
231
- )
232
- return createTooolbarPlaceholder()
231
+ );
232
+ return createTooolbarPlaceholder();
233
233
  }
234
- return createTooolbarPlaceholder()
235
- }
234
+ return createTooolbarPlaceholder();
235
+ };
236
236
 
237
237
  const queryPlaceholder = () => {
238
- return document.querySelector("[data-jsenv-toolbar-placeholder]")
239
- }
238
+ return document.querySelector("[data-jsenv-toolbar-placeholder]");
239
+ };
240
240
 
241
241
  const createTooolbarPlaceholder = () => {
242
- const placeholder = document.createElement("span")
243
- document.body.appendChild(placeholder)
244
- return placeholder
245
- }
242
+ const placeholder = document.createElement("span");
243
+ document.body.appendChild(placeholder);
244
+ return placeholder;
245
+ };
246
246
 
247
247
  const iframeToLoadedPromise = (iframe) => {
248
248
  return new Promise((resolve) => {
249
249
  const onload = () => {
250
- iframe.removeEventListener("load", onload, true)
251
- resolve()
252
- }
253
- iframe.addEventListener("load", onload, true)
254
- })
255
- }
250
+ iframe.removeEventListener("load", onload, true);
251
+ resolve();
252
+ };
253
+ iframe.addEventListener("load", onload, true);
254
+ });
255
+ };
@@ -1,66 +1,66 @@
1
- import { effect } from "@preact/signals"
1
+ import { effect } from "@preact/signals";
2
2
 
3
- import { parentWindowReloader } from "../../core/parent_window_context.js"
3
+ import { parentWindowReloader } from "../../core/parent_window_context.js";
4
4
  import {
5
5
  autoreloadEnabledSignal,
6
6
  changesSignal,
7
- } from "../../core/parent_window_signals.js"
8
- import { changesTooltipOpenedSignal } from "../../core/changes_signals.js"
7
+ } from "../../core/parent_window_signals.js";
8
+ import { changesTooltipOpenedSignal } from "../../core/changes_signals.js";
9
9
  import {
10
10
  openChangesToolip,
11
11
  closeChangesToolip,
12
- } from "../../core/changes_actions.js"
13
- import { enableVariant } from "../variant.js"
12
+ } from "../../core/changes_actions.js";
13
+ import { enableVariant } from "../variant.js";
14
14
 
15
- const changesIndicator = document.querySelector("#changes_indicator")
15
+ const changesIndicator = document.querySelector("#changes_indicator");
16
16
 
17
17
  export const renderChangesIndicator = () => {
18
18
  effect(() => {
19
- const autoreloadEnabled = autoreloadEnabledSignal.value
20
- const changes = changesSignal.value
21
- const changeCount = changes.length
19
+ const autoreloadEnabled = autoreloadEnabledSignal.value;
20
+ const changes = changesSignal.value;
21
+ const changeCount = changes.length;
22
22
  enableVariant(changesIndicator, {
23
23
  changes: !autoreloadEnabled && changeCount ? "yes" : "no",
24
- })
24
+ });
25
25
  if (changeCount) {
26
26
  changesIndicator.querySelector(".tooltip_text").innerHTML =
27
- computeTooltipText({ changes })
27
+ computeTooltipText({ changes });
28
28
  changesIndicator.querySelector(".tooltip_text a").onclick = () => {
29
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
30
+ window.alert(JSON.stringify(changes, null, " "));
31
+ console.log(changes);
32
+ };
33
+ changesIndicator.querySelector(".changes_text").innerHTML = changeCount;
34
34
  }
35
- })
35
+ });
36
36
 
37
37
  changesIndicator.querySelector(".tooltip_action").onclick = () => {
38
- parentWindowReloader.reload()
39
- }
38
+ parentWindowReloader.reload();
39
+ };
40
40
 
41
41
  effect(() => {
42
- const changesTooltipOpened = changesTooltipOpenedSignal.value
42
+ const changesTooltipOpened = changesTooltipOpenedSignal.value;
43
43
  if (changesTooltipOpened) {
44
- changesIndicator.setAttribute("data-tooltip-visible", "")
44
+ changesIndicator.setAttribute("data-tooltip-visible", "");
45
45
  } else {
46
- changesIndicator.removeAttribute("data-tooltip-visible")
46
+ changesIndicator.removeAttribute("data-tooltip-visible");
47
47
  }
48
- })
49
- const button = changesIndicator.querySelector("button")
48
+ });
49
+ const button = changesIndicator.querySelector("button");
50
50
  button.onclick = () => {
51
- const changesTooltipOpened = changesTooltipOpenedSignal.value
51
+ const changesTooltipOpened = changesTooltipOpenedSignal.value;
52
52
  if (changesTooltipOpened) {
53
- closeChangesToolip()
53
+ closeChangesToolip();
54
54
  } else {
55
- openChangesToolip()
55
+ openChangesToolip();
56
56
  }
57
- }
58
- }
57
+ };
58
+ };
59
59
 
60
60
  const computeTooltipText = ({ changes }) => {
61
- const changesCount = changes.length
61
+ const changesCount = changes.length;
62
62
  if (changesCount === 1) {
63
- return `There is <a href="javascript:void(0)">1</a> change to apply`
63
+ return `There is <a href="javascript:void(0)">1</a> change to apply`;
64
64
  }
65
- return `There is <a href="javascript:void(0)">${changesCount}<a> changes to apply`
66
- }
65
+ return `There is <a href="javascript:void(0)">${changesCount}<a> changes to apply`;
66
+ };