@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.
Files changed (165) hide show
  1. package/dist/css/{toolbar_main.css → toolbar.css} +285 -319
  2. package/dist/html/toolbar.html +91 -80
  3. package/dist/js/toolbar_core.js +1792 -0
  4. package/dist/js/toolbar_injector.js +60 -121
  5. package/dist/jsenv_plugin_toolbar.js +18 -12
  6. package/package.json +10 -3
  7. package/src/client/core/animation_actions.js +8 -0
  8. package/src/client/core/animation_effects.js +12 -0
  9. package/src/client/core/animation_signals.js +12 -0
  10. package/src/client/core/changes_actions.js +9 -0
  11. package/src/client/core/changes_signals.js +3 -0
  12. package/src/client/core/execution_actions.js +50 -0
  13. package/src/client/core/execution_effects.js +22 -0
  14. package/src/client/core/execution_signals.js +19 -0
  15. package/src/client/core/notification_actions.js +71 -0
  16. package/src/client/core/notification_context.js +1 -0
  17. package/src/client/core/notification_effects.js +11 -0
  18. package/src/client/core/notification_signals.js +13 -0
  19. package/src/client/{communication/parent_window_communication.js → core/parent_window_actions.js} +10 -0
  20. package/src/client/core/parent_window_context.js +7 -0
  21. package/src/client/core/parent_window_effects.js +20 -0
  22. package/src/client/core/parent_window_signals.js +34 -0
  23. package/src/client/core/server_actions.js +9 -0
  24. package/src/client/core/server_effects.js +11 -0
  25. package/src/client/core/server_signals.js +12 -0
  26. package/src/client/core/settings_actions.js +9 -0
  27. package/src/client/core/settings_signals.js +3 -0
  28. package/src/client/core/theme_actions.js +9 -0
  29. package/src/client/core/theme_effects.js +8 -0
  30. package/src/client/core/theme_signals.js +12 -0
  31. package/src/client/core/toolbar_logger.js +29 -0
  32. package/src/client/core/toolbar_open_actions.js +9 -0
  33. package/src/client/core/toolbar_open_effects.js +5 -0
  34. package/src/client/core/toolbar_open_signals.js +12 -0
  35. package/src/client/core/toolbar_state_context.js +5 -0
  36. package/src/client/core/toolbar_state_effects.js +10 -0
  37. package/src/client/core/toolbar_state_signals.js +20 -0
  38. package/src/client/core/tooltip_actions.js +7 -0
  39. package/src/client/toolbar.html +116 -89
  40. package/src/client/toolbar_core.js +8 -0
  41. package/src/client/toolbar_injector.js +64 -39
  42. package/src/client/ui/changes_indicator/changes_indicator.js +66 -0
  43. package/src/client/{execution/execution.css → ui/document_execution_indicator/document_execution_indicator.css} +10 -14
  44. package/src/client/ui/document_execution_indicator/document_execution_indicator.js +66 -0
  45. package/src/client/ui/document_index_link/document_index_link.js +8 -0
  46. package/src/client/ui/globals.css +103 -0
  47. package/src/client/{jsenv_logo.svg → ui/jsenv_logo.svg} +0 -0
  48. package/src/client/{eventsource/eventsource.css → ui/server_indicator/server_indicator.css} +14 -24
  49. package/src/client/ui/server_indicator/server_indicator.js +62 -0
  50. package/src/client/ui/toolbar.css +76 -0
  51. package/src/client/ui/toolbar_close_button/toolbar_close_button.js +15 -0
  52. package/src/client/{responsive/overflow_menu.css → ui/toolbar_menu_overflow/toolbar_menu_overflow.css} +10 -11
  53. package/src/client/{responsive/toolbar_responsive.js → ui/toolbar_menu_overflow/toolbar_menu_overflow.js} +25 -31
  54. package/src/client/ui/toolbar_opening/toolbar_opening.js +73 -0
  55. package/src/client/ui/toolbar_overlay/toolbar_overlay.js +76 -0
  56. package/src/client/{theme → ui/toolbar_settings}/jsenv_theme.css +6 -6
  57. package/src/client/{theme/light_theme.css → ui/toolbar_settings/theme_light.css} +9 -10
  58. package/src/client/ui/toolbar_settings/toolbar_animation_setting.js +27 -0
  59. package/src/client/ui/toolbar_settings/toolbar_autoreload_setting.js +79 -0
  60. package/src/client/ui/toolbar_settings/toolbar_notification_setting.js +88 -0
  61. package/src/client/{settings/settings.css → ui/toolbar_settings/toolbar_settings.css} +24 -23
  62. package/src/client/ui/toolbar_settings/toolbar_settings.js +54 -0
  63. package/src/client/ui/toolbar_settings/toolbar_theme_setting.js +17 -0
  64. package/src/client/ui/toolbar_ui.js +21 -0
  65. package/src/client/{tooltip/tooltip.css → ui/tooltips/tooltips.css} +13 -7
  66. package/src/client/{util → ui/util}/animation.js +0 -0
  67. package/src/client/ui/util/dom.js +57 -0
  68. package/src/client/{util → ui/util}/fetch_using_xhr.js +0 -0
  69. package/src/client/{util → ui/util}/fetching.js +0 -0
  70. package/src/client/{util → ui/util}/iframe_to_parent_href.js +0 -0
  71. package/src/client/{util → ui/util}/responsive.js +0 -0
  72. package/src/client/{util → ui/util}/util.js +0 -0
  73. package/src/client/{variant → ui}/variant.js +0 -0
  74. package/src/jsenv_plugin_toolbar.js +19 -7
  75. package/dist/js/toolbar_main.js +0 -900
  76. package/scripts/build.mjs +0 -20
  77. package/src/client/animation/toolbar_animation_core.js +0 -30
  78. package/src/client/animation/toolbar_animation_ui.js +0 -21
  79. package/src/client/eventsource/toolbar_eventsource.js +0 -57
  80. package/src/client/execution/toolbar_execution.js +0 -88
  81. package/src/client/focus/focus.css +0 -61
  82. package/src/client/focus/toolbar_focus.js +0 -19
  83. package/src/client/notification/toolbar_notification.js +0 -181
  84. package/src/client/settings/toolbar_settings.js +0 -47
  85. package/src/client/theme/toolbar_theme.js +0 -34
  86. package/src/client/toolbar_main.css +0 -173
  87. package/src/client/toolbar_main.js +0 -174
  88. package/src/client/toolbar_state.js +0 -16
  89. package/src/client/tooltip/tooltip.js +0 -39
  90. package/src/client/util/dom.js +0 -108
  91. package/src/client/util/jsenv_logger.js +0 -28
  92. package/src/client/util/preferences.js +0 -10
  93. 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
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. 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
  102. 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
  103. 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
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. 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
  140. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload.js +0 -201
  141. 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
  142. 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
  143. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/reload.js +0 -138
  144. 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
  145. 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
  146. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html +0 -590
  147. 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
  148. 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
  149. 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
  150. 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
  151. 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
  152. 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
  153. 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
  154. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/ribbon/client/ribbon.js +0 -51
  155. 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
  156. 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
  157. 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
  158. 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
  159. 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
  160. 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
  161. 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
  162. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/supervisor/client/supervisor.js +0 -966
  163. package/tests/toolbar_basic/main.html +0 -18
  164. package/tests/toolbar_basic/start_dev_server.mjs +0 -7
  165. package/todo.txt +0 -0
@@ -0,0 +1,76 @@
1
+ @import "./globals.css";
2
+ @import "./document_execution_indicator/document_execution_indicator.css";
3
+ @import "./server_indicator/server_indicator.css";
4
+ @import "./toolbar_settings/toolbar_settings.css";
5
+ @import "./toolbar_menu_overflow/toolbar_menu_overflow.css";
6
+ @import "./tooltips/tooltips.css";
7
+
8
+ .toolbar_control {
9
+ background: none;
10
+ border: none;
11
+ display: flex;
12
+ justify-content: center;
13
+ align-items: center;
14
+ height: 40px;
15
+ width: 40px;
16
+ padding: 0;
17
+ }
18
+
19
+ .toolbar_control:hover {
20
+ cursor: pointer;
21
+ }
22
+
23
+ /* file and settings icons */
24
+ #document_index_icon,
25
+ .settings-icon {
26
+ width: 20px;
27
+ }
28
+
29
+ .toolbar_icon {
30
+ height: 40px;
31
+ fill: #cecece;
32
+ color: #cecece;
33
+ }
34
+
35
+ .toolbar_icon:hover {
36
+ fill: #909090 !important;
37
+ }
38
+
39
+ .toolbar_icon_wrapper {
40
+ height: 100%;
41
+ text-align: center;
42
+ width: 40px;
43
+ display: inline-block;
44
+ }
45
+
46
+ #file[data-active] {
47
+ background: rgba(31, 38, 44, 0.72);
48
+ }
49
+
50
+ #settings[data-active] button {
51
+ background: #030713;
52
+ }
53
+
54
+ #toolbar_close_button_icon {
55
+ width: 18px;
56
+ }
57
+
58
+ #toolbar a {
59
+ color: inherit;
60
+ }
61
+
62
+ #changes_indicator button {
63
+ display: flex;
64
+ justify-content: center;
65
+ align-items: stretch;
66
+ width: auto;
67
+ }
68
+
69
+ .changes_icon {
70
+ width: 32px;
71
+ }
72
+
73
+ .changes_text {
74
+ display: flex;
75
+ align-items: center;
76
+ }
@@ -0,0 +1,15 @@
1
+ import { openedSignal } from "../../core/toolbar_open_signals.js"
2
+ import { openToolbar, closeToolbar } from "../../core/toolbar_open_actions.js"
3
+
4
+ export const renderToolbarCloseButton = () => {
5
+ // if user click enter or space quickly while closing toolbar
6
+ // it will cancel the closing
7
+ // that's why I used toggleToolbar and not hideToolbar
8
+ document.querySelector("#toolbar_close_button").onclick = () => {
9
+ if (openedSignal.value) {
10
+ closeToolbar()
11
+ } else {
12
+ openToolbar()
13
+ }
14
+ }
15
+ }
@@ -1,4 +1,4 @@
1
- #overflow-menu-button {
1
+ #menu_overflow_button {
2
2
  display: none;
3
3
  position: absolute;
4
4
  top: 0;
@@ -7,11 +7,11 @@
7
7
  background: #404040;
8
8
  }
9
9
 
10
- #dotsIconSvg {
10
+ #menu_overflow_icon {
11
11
  width: 25px;
12
12
  }
13
13
 
14
- #overflow-menu {
14
+ #menu_overflow {
15
15
  visibility: hidden; /* disable keyboard navigation */
16
16
  display: none;
17
17
  position: absolute;
@@ -24,31 +24,30 @@
24
24
  opacity: 0;
25
25
  }
26
26
 
27
- #overflow-menu[data-animate] {
27
+ #menu_overflow[data-animate] {
28
28
  transition-property: left, opacity;
29
29
  transition-duration: 0.3s;
30
30
  }
31
31
 
32
- #overflow-menu > * {
33
- display: table-cell;
32
+ #menu_overflow > * {
34
33
  vertical-align: middle;
35
34
  text-align: center;
36
35
  }
37
36
 
38
- #toolbar[data-overflow-menu-enabled] #overflow-menu-button {
37
+ #toolbar[data-menu-overflow-enabled] #menu_overflow_button {
39
38
  display: block;
40
39
  }
41
40
 
42
- #toolbar[data-overflow-menu-visible] #overflow-menu-button {
41
+ #toolbar[data-menu-overflow-opened] #menu_overflow_button {
43
42
  background: #030713;
44
43
  }
45
44
 
46
- #toolbar[data-overflow-menu-enabled][data-overflow-menu-visible]
45
+ #toolbar[data-menu-overflow-enabled][data-menu-overflow-opened]
47
46
  #toolbar-wrapper {
48
47
  visibility: hidden; /* disable keyboard navigation */
49
48
  }
50
49
 
51
- #toolbar[data-overflow-menu-visible] #overflow-menu {
50
+ #toolbar[data-menu-overflow-opened] #menu_overflow {
52
51
  visibility: visible; /* restore keyboard navigation */
53
52
  display: block;
54
53
  opacity: 1;
@@ -56,6 +55,6 @@
56
55
  margin-left: -40px;
57
56
  }
58
57
 
59
- #toolbar[data-overflow-menu-enabled] #settings-box {
58
+ #toolbar[data-menu-overflow-enabled] #settings_box {
60
59
  right: -40px;
61
60
  }
@@ -1,14 +1,14 @@
1
+ import { closeAllTooltips } from "../../core/tooltip_actions.js"
1
2
  import {
2
3
  forceHideElement,
3
4
  removeForceHideElement,
4
5
  deactivateToolbarSection,
5
6
  } from "../util/dom.js"
6
7
  import { createHorizontalBreakpoint } from "../util/responsive.js"
7
- import { hideTooltip } from "../tooltip/tooltip.js"
8
8
 
9
9
  const WINDOW_SMALL_WIDTH = 420
10
10
 
11
- export const makeToolbarResponsive = () => {
11
+ export const initToolbarMenuOverflow = () => {
12
12
  // apply responsive design on toolbar icons if needed + add listener on resize screen
13
13
  // ideally we should listen breakpoint once, for now restore toolbar
14
14
  const overflowMenuBreakpoint = createHorizontalBreakpoint(WINDOW_SMALL_WIDTH)
@@ -18,15 +18,18 @@ export const makeToolbarResponsive = () => {
18
18
  handleOverflowMenuBreakpoint()
19
19
  overflowMenuBreakpoint.changed.listen(handleOverflowMenuBreakpoint)
20
20
 
21
- // overflow menu
22
- document.querySelector("#overflow-menu-button").onclick = () =>
23
- toggleOverflowMenu()
21
+ document.querySelector("#menu_overflow_button").onclick = () => {
22
+ if (overflowMenuIsOpened()) {
23
+ closeOverflowMenu()
24
+ } else {
25
+ openOverflowMenu()
26
+ }
27
+ }
24
28
  }
25
29
 
26
30
  const responsiveToolbar = (overflowMenuBreakpoint) => {
27
31
  // close all tooltips in case opened
28
- hideTooltip(document.querySelector("#eventsource-indicator"))
29
- hideTooltip(document.querySelector("#execution-indicator"))
32
+ closeAllTooltips()
30
33
  // close settings box in case opened
31
34
  deactivateToolbarSection(document.querySelector("#settings"))
32
35
 
@@ -44,7 +47,7 @@ const enableOverflow = () => {
44
47
  const responsiveToolbarElements = document.querySelectorAll(
45
48
  "[data-responsive-toolbar-element]",
46
49
  )
47
- const overflowMenu = document.querySelector("#overflow-menu")
50
+ const overflowMenu = document.querySelector("#menu_overflow")
48
51
 
49
52
  // keep a placeholder element to know where to move them back
50
53
  moves = Array.from(responsiveToolbarElements).map((element) => {
@@ -58,46 +61,37 @@ const enableOverflow = () => {
58
61
 
59
62
  document
60
63
  .querySelector("#toolbar")
61
- .setAttribute("data-overflow-menu-enabled", "")
62
- removeForceHideElement(document.querySelector("#overflow-menu-button"))
64
+ .setAttribute("data-menu-overflow-enabled", "")
65
+ removeForceHideElement(document.querySelector("#menu_overflow_button"))
63
66
  }
64
67
 
65
68
  const disableOverflow = () => {
66
69
  // close overflow menu in case it's open & unselect toggleOverflowMenu button in case it's selected
67
- hideOverflowMenu()
68
- deactivateToolbarSection(document.querySelector("#overflow-menu"))
70
+ closeOverflowMenu()
71
+ deactivateToolbarSection(document.querySelector("#menu_overflow"))
69
72
  moves.forEach(({ element, placeholder }) => {
70
73
  placeholder.parentNode.replaceChild(element, placeholder)
71
74
  })
72
75
  moves = []
73
-
74
76
  document
75
77
  .querySelector("#toolbar")
76
- .removeAttribute("data-overflow-menu-enabled")
77
- forceHideElement(document.querySelector("#overflow-menu-button"))
78
- }
79
-
80
- const toggleOverflowMenu = () => {
81
- if (overflowMenuIsVisible()) {
82
- hideOverflowMenu()
83
- } else {
84
- showOverflowMenu()
85
- }
78
+ .removeAttribute("data-menu-overflow-enabled")
79
+ forceHideElement(document.querySelector("#menu_overflow_button"))
86
80
  }
87
81
 
88
- const overflowMenuIsVisible = () => {
82
+ const overflowMenuIsOpened = () => {
89
83
  const toolbar = document.querySelector("#toolbar")
90
- return toolbar.hasAttribute("data-overflow-menu-visible")
84
+ return toolbar.hasAttribute("data-menu-overflow-opened")
91
85
  }
92
86
 
93
- const showOverflowMenu = () => {
87
+ const openOverflowMenu = () => {
94
88
  const toolbar = document.querySelector("#toolbar")
95
- document.querySelector("#overflow-menu").setAttribute("data-animate", "")
96
- toolbar.setAttribute("data-overflow-menu-visible", "")
89
+ document.querySelector("#menu_overflow").setAttribute("data-animate", "")
90
+ toolbar.setAttribute("data-menu-overflow-opened", "")
97
91
  }
98
92
 
99
- const hideOverflowMenu = () => {
93
+ const closeOverflowMenu = () => {
100
94
  const toolbar = document.querySelector("#toolbar")
101
- toolbar.removeAttribute("data-overflow-menu-visible")
102
- document.querySelector("#overflow-menu").removeAttribute("data-animate")
95
+ toolbar.removeAttribute("data-menu-overflow-opened")
96
+ document.querySelector("#menu_overflow").removeAttribute("data-animate")
103
97
  }
@@ -0,0 +1,73 @@
1
+ import { effect } from "@preact/signals"
2
+
3
+ import { closeAllTooltips } from "../../core/tooltip_actions.js"
4
+ import { animationsEnabledSignal } from "../../core/animation_signals.js"
5
+ import { openedSignal } from "../../core/toolbar_open_signals.js"
6
+ import { getToolbarIframe, setStyles } from "../util/dom.js"
7
+ import { startJavaScriptAnimation } from "../util/animation.js"
8
+
9
+ export const initToolbarOpening = () => {
10
+ effect(() => {
11
+ const opened = openedSignal.value
12
+ if (opened) {
13
+ showToolbar()
14
+ } else {
15
+ hideToolbar()
16
+ }
17
+ })
18
+ }
19
+
20
+ let restoreToolbarIframeParentStyles = () => {}
21
+ let restoreToolbarIframeStyles = () => {}
22
+
23
+ const hideToolbar = () => {
24
+ closeAllTooltips()
25
+ restoreToolbarIframeParentStyles()
26
+ restoreToolbarIframeStyles()
27
+ document.documentElement.removeAttribute("data-toolbar-visible")
28
+ }
29
+
30
+ // (by the way it might be cool to have the toolbar auto show when)
31
+ // it has something to say (being disconnected from server)
32
+ const showToolbar = () => {
33
+ const animationsEnabled = animationsEnabledSignal.peek()
34
+ document.documentElement.setAttribute("data-toolbar-visible", "")
35
+
36
+ const toolbarIframe = getToolbarIframe()
37
+ const toolbarIframeParent = toolbarIframe.parentNode
38
+ const parentWindow = window.parent
39
+ const parentDocumentElement =
40
+ parentWindow.document.compatMode === "CSS1Compat"
41
+ ? parentWindow.document.documentElement
42
+ : parentWindow.document.body
43
+
44
+ const scrollYMax =
45
+ parentDocumentElement.scrollHeight - parentWindow.innerHeight
46
+ const scrollY = parentDocumentElement.scrollTop
47
+ const scrollYRemaining = scrollYMax - scrollY
48
+
49
+ setStyles(toolbarIframeParent, {
50
+ "transition-property": "padding-bottom",
51
+ "transition-duration": animationsEnabled ? "300ms" : "0s",
52
+ })
53
+ // maybe we should use js animation here because we would not conflict with css
54
+ restoreToolbarIframeParentStyles = setStyles(toolbarIframeParent, {
55
+ "scroll-padding-bottom": "40px", // same here we should add 40px
56
+ "padding-bottom": "40px", // if there is already one we should add 40px
57
+ })
58
+ restoreToolbarIframeStyles = setStyles(toolbarIframe, {
59
+ height: "40px",
60
+ visibility: "visible",
61
+ })
62
+
63
+ if (scrollYRemaining < 40 && scrollYMax > 0) {
64
+ const scrollEnd = scrollY + 40
65
+ startJavaScriptAnimation({
66
+ duration: 300,
67
+ onProgress: ({ progress }) => {
68
+ const value = scrollY + (scrollEnd - scrollY) * progress
69
+ parentDocumentElement.scrollTop = value
70
+ },
71
+ })
72
+ }
73
+ }
@@ -0,0 +1,76 @@
1
+ import { effect } from "@preact/signals"
2
+
3
+ import { openedSignal } from "../../core/toolbar_open_signals.js"
4
+ import { settingsOpenedSignal } from "../../core/settings_signals.js"
5
+ import { closeSettings } from "../../core/settings_actions.js"
6
+ import { closeAllTooltips } from "../../core/tooltip_actions.js"
7
+ import { executionTooltipOpenedSignal } from "../../core/execution_signals.js"
8
+ import { changesTooltipOpenedSignal } from "../../core/changes_signals.js"
9
+ import { serverTooltipOpenedSignal } from "../../core/server_signals.js"
10
+ import { getToolbarIframe, setStyles } from "../util/dom.js"
11
+
12
+ export const renderToolbarOverlay = () => {
13
+ const toolbarOverlay = document.querySelector("#toolbar_overlay")
14
+ toolbarOverlay.onclick = () => {
15
+ closeAllTooltips()
16
+ closeSettings()
17
+ }
18
+
19
+ effect(() => {
20
+ if (!window.parent) {
21
+ // can happen while parent iframe reloads
22
+ return
23
+ }
24
+ const opened = openedSignal.value
25
+ const settingsOpened = settingsOpenedSignal.value
26
+ const executionTooltipOpened = executionTooltipOpenedSignal.value
27
+ const changesTooltipOpened = changesTooltipOpenedSignal.value
28
+ const serverTooltipOpened = serverTooltipOpenedSignal.value
29
+ if (!opened) {
30
+ return
31
+ }
32
+ if (
33
+ settingsOpened ||
34
+ executionTooltipOpened ||
35
+ changesTooltipOpened ||
36
+ serverTooltipOpened
37
+ ) {
38
+ enableIframeOverflowOnParentWindow()
39
+ } else {
40
+ disableIframeOverflowOnParentWindow()
41
+ }
42
+ })
43
+ }
44
+
45
+ const enableIframeOverflowOnParentWindow = () => {
46
+ const iframe = getToolbarIframe()
47
+
48
+ const transitionDuration = iframe.style.transitionDuration
49
+ setStyles(iframe, {
50
+ "height": "100%",
51
+ // we don't want to animate height transition
52
+ // but if it was enabled, we'll restore it afterwards
53
+ "transition-duration": "0ms",
54
+ })
55
+ if (transitionDuration) {
56
+ setTimeout(() => {
57
+ setStyles(iframe, { "transition-duration": transitionDuration })
58
+ })
59
+ }
60
+ }
61
+
62
+ const disableIframeOverflowOnParentWindow = () => {
63
+ const iframe = getToolbarIframe()
64
+ const transitionDuration = iframe.style.transitionDuration
65
+ setStyles(iframe, {
66
+ "height": "40px",
67
+ // we don't want to animate height transition
68
+ // but if it was enabled, we'll restore it afterwards
69
+ "transition-duration": "0ms",
70
+ })
71
+ if (transitionDuration) {
72
+ setTimeout(() => {
73
+ setStyles(iframe, { "transition-duration": transitionDuration })
74
+ })
75
+ }
76
+ }
@@ -1,8 +1,8 @@
1
1
  /* icons */
2
- html[data-theme="jsenv"] .iconToolbar {
2
+ html[data-theme="jsenv"] .toolbar_icon {
3
3
  fill: #de5600;
4
4
  }
5
- html[data-theme="jsenv"] .iconToolbar:hover {
5
+ html[data-theme="jsenv"] .toolbar_icon:hover {
6
6
  fill: #9a5300 !important;
7
7
  }
8
8
 
@@ -52,13 +52,13 @@ html[data-theme="jsenv"] .tooltip {
52
52
  background-color: #ffd390;
53
53
  color: #884900;
54
54
  }
55
- html[data-theme="jsenv"] .tooltipAction {
55
+ html[data-theme="jsenv"] .tooltip_action {
56
56
  border-color: #884900;
57
57
  }
58
- html[data-theme="jsenv"] .tooltipAction a {
58
+ html[data-theme="jsenv"] .tooltip_action a {
59
59
  color: #884900;
60
60
  }
61
- html[data-theme="jsenv"] .tooltipIcon {
61
+ html[data-theme="jsenv"] .tooltip_icon {
62
62
  fill: #884900;
63
63
  }
64
64
  html[data-theme="jsenv"] .tooltip::after {
@@ -69,7 +69,7 @@ html[data-theme="jsenv"] .tooltip::after {
69
69
  html[data-theme="jsenv"] h2 {
70
70
  color: orange;
71
71
  }
72
- html[data-theme="jsenv"] #fileIconSvgConfig {
72
+ html[data-theme="jsenv"] #explorables_icon {
73
73
  fill: orange;
74
74
  }
75
75
  html[data-theme="jsenv"] #explorables h2 span {
@@ -4,10 +4,10 @@ html[data-theme="light"] #toolbar {
4
4
  }
5
5
 
6
6
  /* icons */
7
- html[data-theme="light"] .iconToolbar {
7
+ html[data-theme="light"] .toolbar_icon {
8
8
  fill: #404040;
9
9
  }
10
- html[data-theme="light"] .iconToolbar:hover {
10
+ html[data-theme="light"] .toolbar_icon:hover {
11
11
  fill: #757575 !important;
12
12
  }
13
13
 
@@ -57,7 +57,7 @@ html[data-theme="light"] .tooltip {
57
57
  background-color: rgb(138, 145, 154);
58
58
  color: #fff;
59
59
  }
60
- html[data-theme="light"] .tooltipAction {
60
+ html[data-theme="light"] .tooltip_action {
61
61
  border-color: #fff;
62
62
  }
63
63
  html[data-theme="light"] .tooltip::after {
@@ -65,15 +65,15 @@ html[data-theme="light"] .tooltip::after {
65
65
  }
66
66
 
67
67
  /* overflow menu */
68
- html[data-theme="light"] #overflow-menu-button {
68
+ html[data-theme="light"] #menu_overflow_button {
69
69
  background: #e8eff3;
70
70
  }
71
71
  html[data-theme="light"]
72
- #toolbar[data-overflow-menu-visible]
73
- #overflow-menu-button {
72
+ #toolbar[data-menu-overflow-opened]
73
+ #menu_overflow_button {
74
74
  background: #a5a9ad;
75
75
  }
76
- html[data-theme="light"] #overflow-menu {
76
+ html[data-theme="light"] #menu_overflow {
77
77
  background: #dfe4e7;
78
78
  }
79
79
 
@@ -82,14 +82,13 @@ html[data-theme="light"] h2,
82
82
  html[data-theme="light"] h4 {
83
83
  color: #076570;
84
84
  }
85
- html[data-theme="light"] #fileIconSvgConfig {
85
+ html[data-theme="light"] #explorables_icon {
86
86
  fill: #076570;
87
87
  }
88
88
  html[data-theme="light"] #explorables h2 span {
89
89
  color: #ff8d00;
90
90
  }
91
- html[data-theme="light"] article[data-page="file-list"],
92
- html[data-theme="light"] #file-list-link[data-active] a {
91
+ html[data-theme="light"] article[data-page="file-list"] {
93
92
  background: #bbd5ea;
94
93
  }
95
94
  html[data-theme="light"] #explorables fieldset input:checked + * {
@@ -0,0 +1,27 @@
1
+ import { effect } from "@preact/signals"
2
+
3
+ import { animationsEnabledSignal } from "../../core/animation_signals.js"
4
+ import {
5
+ enableAnimations,
6
+ disableAnimations,
7
+ } from "../../core/animation_actions.js"
8
+
9
+ export const renderToolbarAnimationSetting = () => {
10
+ const animCheckbox = document.querySelector("#toggle_anims")
11
+
12
+ effect(() => {
13
+ const animationsEnabled = animationsEnabledSignal.value
14
+ animCheckbox.checked = animationsEnabled
15
+ })
16
+ animCheckbox.onchange = () => {
17
+ if (animCheckbox.checked) {
18
+ enableAnimations()
19
+ } else {
20
+ disableAnimations()
21
+ }
22
+ }
23
+ // enable toolbar transition only after first render
24
+ setTimeout(() => {
25
+ document.querySelector("#toolbar").setAttribute("data-animate", "")
26
+ })
27
+ }
@@ -0,0 +1,79 @@
1
+ import { effect } from "@preact/signals"
2
+
3
+ import { autoreloadEnabledSignal } from "../../core/parent_window_signals.js"
4
+ import {
5
+ disableAutoreload,
6
+ enableAutoreload,
7
+ } from "../../core/parent_window_actions.js"
8
+
9
+ export const renderToolbarAutoreloadSetting = () => {
10
+ const parentWindowReloader = window.parent.__reloader__
11
+ if (!parentWindowReloader) {
12
+ disableAutoreloadSetting()
13
+ return
14
+ }
15
+
16
+ const autoreloadCheckbox = document.querySelector("#toggle_autoreload")
17
+ effect(() => {
18
+ const autoreloadEnabled = autoreloadEnabledSignal.value
19
+ if (autoreloadEnabled) {
20
+ autoreloadCheckbox.checked = true
21
+ } else {
22
+ autoreloadCheckbox.checked = false
23
+ }
24
+ })
25
+
26
+ autoreloadCheckbox.onchange = () => {
27
+ if (autoreloadCheckbox.checked) {
28
+ enableAutoreload()
29
+ } else {
30
+ disableAutoreload()
31
+ }
32
+ }
33
+ }
34
+
35
+ const disableAutoreloadSetting = () => {
36
+ document
37
+ .querySelector(".settings_autoreload")
38
+ .setAttribute("data-disabled", "true")
39
+ document
40
+ .querySelector(".settings_autoreload")
41
+ .setAttribute("title", `Autoreload not enabled on server`)
42
+ document.querySelector("#toggle_autoreload").disabled = true
43
+ }
44
+
45
+ // const changeLink = variantNode.querySelector(".eventsource-changes-link")
46
+ // changeLink.innerHTML = reloadMessageCount
47
+ // changeLink.onclick = () => {
48
+ // console.log(reloadMessages)
49
+ // // eslint-disable-next-line no-alert
50
+ // window.parent.alert(JSON.stringify(reloadMessages, null, " "))
51
+ // }
52
+
53
+ // const someFailed = reloadMessages.some((m) => m.status === "failed")
54
+ // const somePending = reloadMessages.some((m) => m.status === "pending")
55
+ // const applyLink = variantNode.querySelector(".eventsource-reload-link")
56
+ // applyLink.innerHTML = someFailed
57
+ // ? "failed"
58
+ // : somePending
59
+ // ? "applying..."
60
+ // : "apply changes"
61
+ // applyLink.onclick = someFailed
62
+ // ? () => {
63
+ // parentEventSourceClient.applyReloadMessageEffects()
64
+ // }
65
+ // : somePending
66
+ // ? () => {}
67
+ // : () => {
68
+ // parentEventSourceClient.applyReloadMessageEffects()
69
+ // }
70
+
71
+ // parentEventSourceClient.reloadMessagesSignal.onchange = () => {
72
+ // updateEventSourceIndicator()
73
+ // }
74
+ // const autoreloadCheckbox = document.querySelector("#toggle-autoreload")
75
+ // autoreloadCheckbox.checked = parentEventSourceClient.isAutoreloadEnabled()
76
+ // autoreloadCheckbox.onchange = () => {
77
+ // parentEventSourceClient.setAutoreloadPreference(autoreloadCheckbox.checked)
78
+ // updateEventSourceIndicator()
79
+ // }