@jsenv/plugin-toolbar 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/css/toolbar_main.css +784 -0
  2. package/dist/html/toolbar.html +305 -0
  3. package/dist/js/toolbar_injector.js +300 -0
  4. package/dist/js/toolbar_main.js +900 -0
  5. package/dist/jsenv_plugin_toolbar.js +51 -0
  6. package/dist/other/jsenv_logo.svg +140 -0
  7. package/package.json +30 -0
  8. package/scripts/build.mjs +20 -0
  9. package/src/client/animation/toolbar_animation_core.js +30 -0
  10. package/src/client/animation/toolbar_animation_ui.js +21 -0
  11. package/src/client/communication/parent_window_communication.js +33 -0
  12. package/src/client/eventsource/eventsource.css +83 -0
  13. package/src/client/eventsource/toolbar_eventsource.js +57 -0
  14. package/src/client/execution/execution.css +79 -0
  15. package/src/client/execution/toolbar_execution.js +88 -0
  16. package/src/client/focus/focus.css +61 -0
  17. package/src/client/focus/toolbar_focus.js +19 -0
  18. package/src/client/jsenv_logo.svg +140 -0
  19. package/src/client/notification/toolbar_notification.js +181 -0
  20. package/src/client/responsive/overflow_menu.css +61 -0
  21. package/src/client/responsive/toolbar_responsive.js +103 -0
  22. package/src/client/settings/settings.css +201 -0
  23. package/src/client/settings/toolbar_settings.js +47 -0
  24. package/src/client/theme/jsenv_theme.css +77 -0
  25. package/src/client/theme/light_theme.css +106 -0
  26. package/src/client/theme/toolbar_theme.js +34 -0
  27. package/src/client/toolbar.html +452 -0
  28. package/src/client/toolbar_injector.js +230 -0
  29. package/src/client/toolbar_main.css +173 -0
  30. package/src/client/toolbar_main.js +174 -0
  31. package/src/client/toolbar_state.js +16 -0
  32. package/src/client/tooltip/tooltip.css +61 -0
  33. package/src/client/tooltip/tooltip.js +39 -0
  34. package/src/client/util/animation.js +305 -0
  35. package/src/client/util/dom.js +108 -0
  36. package/src/client/util/fetch_using_xhr.js +400 -0
  37. package/src/client/util/fetching.js +14 -0
  38. package/src/client/util/iframe_to_parent_href.js +10 -0
  39. package/src/client/util/jsenv_logger.js +28 -0
  40. package/src/client/util/preferences.js +10 -0
  41. package/src/client/util/responsive.js +112 -0
  42. package/src/client/util/util.js +19 -0
  43. package/src/client/variant/variant.js +74 -0
  44. package/src/jsenv_plugin_toolbar.js +63 -0
  45. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/ast/src/html/html_src_set.js +18 -0
  46. 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 +45 -0
  47. 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 +12 -0
  48. 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 +32 -0
  49. 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 +12 -0
  50. 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 +23 -0
  51. 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 +12 -0
  52. 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 +33 -0
  53. 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 +87 -0
  54. 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 +59 -0
  55. 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 +12 -0
  56. 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 +88 -0
  57. 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 +90 -0
  58. 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 +12 -0
  59. 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 +28 -0
  60. 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 +19 -0
  61. 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 +140 -0
  62. 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 +183 -0
  63. 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 +12 -0
  64. 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 +60 -0
  65. 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 +105 -0
  66. 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 +12 -0
  67. 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 +200 -0
  68. 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 +49 -0
  69. 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 +12 -0
  70. 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 +110 -0
  71. 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 +36 -0
  72. 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 +12 -0
  73. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/packages/jsenv-plugin-toolbar/src/client/toolbar.html +319 -0
  74. 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 +232 -0
  75. 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 +12 -0
  76. 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 +161 -0
  77. 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 +12 -0
  78. 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 +176 -0
  79. 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 +12 -0
  80. 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 +18 -0
  81. 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 +12 -0
  82. 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 +60 -0
  83. 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 +41 -0
  84. 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 +12 -0
  85. 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 +307 -0
  86. 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 +12 -0
  87. 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 +108 -0
  88. 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 +10 -0
  89. 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 +10 -0
  90. 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 +112 -0
  91. 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 +74 -0
  92. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload.js +201 -0
  93. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload.js.map +12 -0
  94. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/autoreload_preference.js +11 -0
  95. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/reload.js +138 -0
  96. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/reload.js.map +12 -0
  97. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/autoreload/client/url_helpers.js +20 -0
  98. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/explorer/client/explorer.html +590 -0
  99. 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 +7 -0
  100. 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 +12 -0
  101. 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 +114 -0
  102. 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 +124 -0
  103. 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 +227 -0
  104. 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 +28 -0
  105. 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 +82 -0
  106. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/ribbon/client/ribbon.js +51 -0
  107. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/connection_manager.js +165 -0
  108. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/server_events/client/events_manager.js +75 -0
  109. 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 +20 -0
  110. 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 +12 -0
  111. 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 +83 -0
  112. 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 +12 -0
  113. 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 +98 -0
  114. package/tests/toolbar_basic/.jsenv/chrome@107.00/@fs/Users/d.maillard/dev/jsenv/jsenv-core/src/plugins/supervisor/client/supervisor.js +966 -0
  115. package/tests/toolbar_basic/main.html +18 -0
  116. package/tests/toolbar_basic/start_dev_server.mjs +7 -0
  117. package/todo.txt +0 -0
@@ -0,0 +1,201 @@
1
+ #settings-button {
2
+ position: relative;
3
+ }
4
+
5
+ #settings-button[data-warning] svg {
6
+ fill: #cb5909;
7
+ }
8
+
9
+ #settings-button[data-warning] svg:hover {
10
+ fill: darkorange !important;
11
+ }
12
+
13
+ #settings-box {
14
+ display: none;
15
+ position: absolute;
16
+ bottom: 40px;
17
+ right: 0;
18
+ text-align: center;
19
+ padding: 17px;
20
+ font-size: 14px;
21
+ color: #fff;
22
+ background-color: #030713;
23
+ border-radius: 5px 5px 0 0;
24
+ min-width: 250px;
25
+ min-height: 150px;
26
+ z-index: -1;
27
+ }
28
+
29
+ [data-active] #settings-box {
30
+ display: block;
31
+ animation: comeUp ease 0.3s;
32
+ }
33
+
34
+ @keyframes comeUp {
35
+ 0% {
36
+ opacity: 0;
37
+ transform: translate(0, 90px);
38
+ }
39
+ 100% {
40
+ opacity: 1;
41
+ transform: translate(0, 0);
42
+ }
43
+ }
44
+
45
+ #settings-box-body {
46
+ text-align: left;
47
+ padding: 18px 0;
48
+ max-height: 80vh;
49
+ overflow: auto;
50
+ width: 100vw;
51
+ display: flex;
52
+ justify-content: center;
53
+ }
54
+
55
+ .settings-box-items-wrapper {
56
+ max-width: 700px;
57
+ display: flex;
58
+ flex-wrap: wrap;
59
+ justify-content: center;
60
+ }
61
+
62
+ .settings-box-item {
63
+ padding: 15px;
64
+ background: #0c111b;
65
+ width: 250px;
66
+ margin: 9px 18px;
67
+ }
68
+
69
+ #settings-box-header .settings-icon {
70
+ fill: none;
71
+ stroke: #24b1b0;
72
+ stroke-width: 2;
73
+ margin-right: 10px;
74
+ width: 22px;
75
+ height: 22px;
76
+ position: relative;
77
+ top: 4px;
78
+ }
79
+
80
+ #settings-box h3 {
81
+ display: inline-block;
82
+ font-size: 20px;
83
+ margin: 10px 0;
84
+ color: #24b1b0;
85
+ }
86
+
87
+ #button-close-settings {
88
+ float: right;
89
+ fill: #24b1b0;
90
+ }
91
+
92
+ #button-close-settings:hover {
93
+ opacity: 0.6;
94
+ }
95
+
96
+ label {
97
+ color: #a9a8a8;
98
+ font-size: 14px;
99
+ padding-bottom: 3px;
100
+ display: block;
101
+ }
102
+
103
+ #settings-box .category-title {
104
+ color: #24b1b0;
105
+ font-size: 16px;
106
+ display: inline-block;
107
+ margin-bottom: 15px;
108
+ margin-top: 4px;
109
+ }
110
+
111
+ #settings-box .category-title svg {
112
+ fill: currentColor;
113
+ vertical-align: top;
114
+ margin-right: 5px;
115
+ width: 18px;
116
+ height: 18px;
117
+ }
118
+
119
+ #settings-box .category-subtitle {
120
+ color: #a9a8a8;
121
+ font-size: 14px;
122
+ max-width: 220px;
123
+ }
124
+
125
+ /* checkbox switch */
126
+ .switch {
127
+ position: relative;
128
+ float: right;
129
+ width: 3.5em;
130
+ height: 2em;
131
+ padding: 0;
132
+ cursor: pointer;
133
+ }
134
+ .switch input {
135
+ position: absolute;
136
+ opacity: 0;
137
+ width: 0;
138
+ height: 0;
139
+ }
140
+ .switch .slider {
141
+ position: absolute;
142
+ vertical-align: middle;
143
+ height: 0.3em;
144
+ left: 0.5em;
145
+ right: 0.5em;
146
+ top: 50%;
147
+ margin-top: -0.15em;
148
+ background-color: #4c4c4c;
149
+ transition: 0.4s;
150
+ border-radius: 0.15em;
151
+ }
152
+ .switch .square {
153
+ position: absolute;
154
+ content: "";
155
+ height: 1em;
156
+ width: 1em;
157
+ left: 0.5em;
158
+ top: 50%;
159
+ margin-top: -0.5em;
160
+ background-color: #4c4c4c;
161
+ color: #030713;
162
+ transition: 0.4s;
163
+ border-radius: 0.15em;
164
+ }
165
+ .switch input + * {
166
+ position: relative;
167
+ width: 100%;
168
+ height: 100%;
169
+
170
+ /* It's important to have a border (event transparent)
171
+ To be able to apply an outline to this element later*/
172
+ border-width: 1px;
173
+ border-color: transparent;
174
+ border-style: solid;
175
+ }
176
+ .switch input:checked + * .slider {
177
+ background-color: #24b1b0;
178
+ }
179
+ .switch input:checked + * .square {
180
+ transform: translateX(1.6em);
181
+ background-color: #24b1b0;
182
+ }
183
+
184
+ .settings-box-item[data-disabled] {
185
+ background-color: rgba(12, 17, 27, 0.4);
186
+ cursor: default;
187
+ }
188
+ .settings-box-item[data-disabled] .category-title,
189
+ .settings-box-item[data-disabled] .switch,
190
+ .settings-box-item[data-disabled] .category-subtitle {
191
+ opacity: 0.4;
192
+ }
193
+ .settings-box-item[data-disabled] .category-title span {
194
+ text-decoration: line-through;
195
+ }
196
+ .settings-box-item[data-disabled] .category-subtitle {
197
+ text-decoration: line-through;
198
+ }
199
+ .settings-box-item[data-disabled] .switch {
200
+ cursor: default;
201
+ }
@@ -0,0 +1,47 @@
1
+ import {
2
+ toolbarSectionIsActive,
3
+ deactivateToolbarSection,
4
+ activateToolbarSection,
5
+ updateIframeOverflowOnParentWindow,
6
+ } from "../util/dom.js"
7
+ import { enableVariant } from "../variant/variant.js"
8
+
9
+ export const renderToolbarSettings = () => {
10
+ document.querySelector("#settings-button").onclick = toggleSettings
11
+ document.querySelector("#button-close-settings").onclick = toggleSettings
12
+ disableWarningStyle()
13
+ }
14
+
15
+ const toggleSettings = () => {
16
+ if (settingsAreVisible()) {
17
+ hideSettings()
18
+ } else {
19
+ showSettings()
20
+ }
21
+ }
22
+
23
+ export const enableWarningStyle = () => {
24
+ enableVariant(document.querySelector("#settings-button"), {
25
+ has_warning: "yes",
26
+ })
27
+ }
28
+
29
+ export const disableWarningStyle = () => {
30
+ enableVariant(document.querySelector("#settings-button"), {
31
+ has_warning: "no",
32
+ })
33
+ }
34
+
35
+ export const settingsAreVisible = () => {
36
+ return toolbarSectionIsActive(document.querySelector(`#settings`))
37
+ }
38
+
39
+ export const hideSettings = () => {
40
+ deactivateToolbarSection(document.querySelector(`#settings`))
41
+ updateIframeOverflowOnParentWindow()
42
+ }
43
+
44
+ export const showSettings = () => {
45
+ activateToolbarSection(document.querySelector(`#settings`))
46
+ updateIframeOverflowOnParentWindow()
47
+ }
@@ -0,0 +1,77 @@
1
+ /* icons */
2
+ html[data-theme="jsenv"] .iconToolbar {
3
+ fill: #de5600;
4
+ }
5
+ html[data-theme="jsenv"] .iconToolbar:hover {
6
+ fill: #9a5300 !important;
7
+ }
8
+
9
+ /* loaders */
10
+ html[data-theme="jsenv"] #loader-icon {
11
+ color: #404040;
12
+ }
13
+
14
+ /* settings */
15
+ html[data-theme="jsenv"] #settings-box,
16
+ html[data-theme="jsenv"] #settings[data-active] button {
17
+ background: #f7931e;
18
+ }
19
+ html[data-theme="jsenv"] .settings-box-item {
20
+ background: #ffa641;
21
+ }
22
+ html[data-theme="jsenv"] #settings-box-header .settings-icon {
23
+ stroke: #076570;
24
+ }
25
+ html[data-theme="jsenv"] #button-close-settings {
26
+ fill: #076570;
27
+ }
28
+ html[data-theme="jsenv"] #settings-box h3,
29
+ html[data-theme="jsenv"] #settings-box .category-title {
30
+ color: #076570;
31
+ }
32
+ html[data-theme="jsenv"] #settings-box .category-title svg {
33
+ fill: #076570;
34
+ }
35
+ html[data-theme="jsenv"] #settings-box .category-subtitle {
36
+ color: #076570;
37
+ }
38
+ html[data-theme="jsenv"] label {
39
+ color: #002e33;
40
+ }
41
+ html[data-theme="jsenv"] input:checked + .slider,
42
+ html[data-theme="jsenv"] .switch input:checked + .slider:before {
43
+ background-color: #de5600;
44
+ }
45
+ html[data-theme="jsenv"] .switch .slider,
46
+ html[data-theme="jsenv"] .switch .slider:before {
47
+ background-color: grey;
48
+ }
49
+
50
+ /* tooltips */
51
+ html[data-theme="jsenv"] .tooltip {
52
+ background-color: #ffd390;
53
+ color: #884900;
54
+ }
55
+ html[data-theme="jsenv"] .tooltipAction {
56
+ border-color: #884900;
57
+ }
58
+ html[data-theme="jsenv"] .tooltipAction a {
59
+ color: #884900;
60
+ }
61
+ html[data-theme="jsenv"] .tooltipIcon {
62
+ fill: #884900;
63
+ }
64
+ html[data-theme="jsenv"] .tooltip::after {
65
+ border-color: #ffd390 transparent transparent transparent;
66
+ }
67
+
68
+ /* page file list */
69
+ html[data-theme="jsenv"] h2 {
70
+ color: orange;
71
+ }
72
+ html[data-theme="jsenv"] #fileIconSvgConfig {
73
+ fill: orange;
74
+ }
75
+ html[data-theme="jsenv"] #explorables h2 span {
76
+ color: #24b1b0;
77
+ }
@@ -0,0 +1,106 @@
1
+ /* general */
2
+ html[data-theme="light"] #toolbar {
3
+ background: #e8eff3;
4
+ }
5
+
6
+ /* icons */
7
+ html[data-theme="light"] .iconToolbar {
8
+ fill: #404040;
9
+ }
10
+ html[data-theme="light"] .iconToolbar:hover {
11
+ fill: #757575 !important;
12
+ }
13
+
14
+ /* loaders */
15
+ html[data-theme="light"] #loader-icon {
16
+ color: #404040;
17
+ }
18
+
19
+ /* settings */
20
+ html[data-theme="light"] #settings-box,
21
+ html[data-theme="light"] #settings[data-active] button {
22
+ background: #87acd3;
23
+ }
24
+ html[data-theme="light"] .settings-box-item {
25
+ background: #97b9da;
26
+ }
27
+ html[data-theme="light"] #settings-box-header .settings-icon {
28
+ stroke: #076570;
29
+ }
30
+ html[data-theme="light"] #button-close-settings {
31
+ fill: #076570;
32
+ }
33
+ html[data-theme="light"] #settings-box h3,
34
+ html[data-theme="light"] #settings-box .category-title {
35
+ color: #076570;
36
+ }
37
+ html[data-theme="light"] #settings-box .category-title svg {
38
+ fill: #076570;
39
+ }
40
+ html[data-theme="light"] #settings-box .category-subtitle {
41
+ color: #5d5d5d;
42
+ }
43
+ html[data-theme="light"] label {
44
+ color: #002e33;
45
+ }
46
+ html[data-theme="light"] .switch input + * .slider,
47
+ html[data-theme="light"] .switch input + * .square {
48
+ background-color: grey;
49
+ }
50
+ html[data-theme="light"] .switch input:checked + * .slider,
51
+ html[data-theme="light"] .switch input:checked + * .square {
52
+ background-color: #076570;
53
+ }
54
+
55
+ /* tooltips */
56
+ html[data-theme="light"] .tooltip {
57
+ background-color: rgb(138, 145, 154);
58
+ color: #fff;
59
+ }
60
+ html[data-theme="light"] .tooltipAction {
61
+ border-color: #fff;
62
+ }
63
+ html[data-theme="light"] .tooltip::after {
64
+ border-color: rgb(138, 145, 154) transparent transparent transparent;
65
+ }
66
+
67
+ /* overflow menu */
68
+ html[data-theme="light"] #overflow-menu-button {
69
+ background: #e8eff3;
70
+ }
71
+ html[data-theme="light"]
72
+ #toolbar[data-overflow-menu-visible]
73
+ #overflow-menu-button {
74
+ background: #a5a9ad;
75
+ }
76
+ html[data-theme="light"] #overflow-menu {
77
+ background: #dfe4e7;
78
+ }
79
+
80
+ /* page file list */
81
+ html[data-theme="light"] h2,
82
+ html[data-theme="light"] h4 {
83
+ color: #076570;
84
+ }
85
+ html[data-theme="light"] #fileIconSvgConfig {
86
+ fill: #076570;
87
+ }
88
+ html[data-theme="light"] #explorables h2 span {
89
+ color: #ff8d00;
90
+ }
91
+ html[data-theme="light"] article[data-page="file-list"],
92
+ html[data-theme="light"] #file-list-link[data-active] a {
93
+ background: #bbd5ea;
94
+ }
95
+ html[data-theme="light"] #explorables fieldset input:checked + * {
96
+ color: #ff8d00;
97
+ background: #bbd5ea;
98
+ }
99
+ html[data-theme="light"] #explorables #explorables-header,
100
+ html[data-theme="light"] #explorables fieldset label input + * {
101
+ background: #ddf0ff;
102
+ }
103
+ html[data-theme="light"] .execution-link {
104
+ background: #ddf0ff;
105
+ color: #076570;
106
+ }
@@ -0,0 +1,34 @@
1
+ import { createPreference } from "../util/preferences.js"
2
+
3
+ const DARK_THEME = "dark"
4
+ const LIGHT_THEME = "light"
5
+ const themePreference = createPreference("jsenv_toolbar_theme")
6
+
7
+ export const renderToolbarTheme = () => {
8
+ const theme = getThemePreference()
9
+ const checkbox = document.querySelector("#checkbox-dark-theme")
10
+ checkbox.checked = theme === DARK_THEME
11
+ setTheme(theme)
12
+ checkbox.onchange = () => {
13
+ if (checkbox.checked) {
14
+ setThemePreference(DARK_THEME)
15
+ setTheme(DARK_THEME)
16
+ } else {
17
+ setThemePreference(LIGHT_THEME)
18
+ setTheme(LIGHT_THEME)
19
+ }
20
+ }
21
+ }
22
+
23
+ const getThemePreference = () => {
24
+ return themePreference.has() ? themePreference.get() : DARK_THEME
25
+ }
26
+
27
+ const setThemePreference = (value) => {
28
+ themePreference.set(value)
29
+ setTheme(value)
30
+ }
31
+
32
+ const setTheme = (theme) => {
33
+ document.querySelector("html").setAttribute("data-theme", theme)
34
+ }