@schalkneethling/miyagi-core 4.4.2 → 4.4.3

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 (115) hide show
  1. package/README.md +7 -2
  2. package/api/app.js +16 -16
  3. package/api/index.js +263 -262
  4. package/bin/miyagi.js +1 -1
  5. package/dist/css/iframe.css +6 -30
  6. package/frontend/assets/css/iframe/accordion-tabs.css +39 -39
  7. package/frontend/assets/css/iframe/jsontree.js.css +149 -149
  8. package/frontend/assets/css/iframe/prism.css +45 -45
  9. package/frontend/assets/css/iframe/styleguide/colors.css +27 -27
  10. package/frontend/assets/css/iframe/styleguide/fonts.css +23 -23
  11. package/frontend/assets/css/iframe/styleguide/index.css +58 -58
  12. package/frontend/assets/css/iframe/styleguide/spacings.css +10 -10
  13. package/frontend/assets/css/iframe.css +191 -191
  14. package/frontend/assets/css/main/menu/config-switcher.css +21 -21
  15. package/frontend/assets/css/main/menu/config-switchers.css +34 -34
  16. package/frontend/assets/css/main/menu/goto.css +16 -16
  17. package/frontend/assets/css/main/menu/nav.css +49 -49
  18. package/frontend/assets/css/main/menu/search.css +34 -34
  19. package/frontend/assets/css/main/menu/title.css +18 -18
  20. package/frontend/assets/css/main/menu.css +89 -89
  21. package/frontend/assets/css/main/reset.css +47 -47
  22. package/frontend/assets/css/main.css +41 -41
  23. package/frontend/assets/css/shared.css +16 -16
  24. package/frontend/assets/css/tokens.css +108 -107
  25. package/frontend/assets/js/_accordion-tabs.js +392 -392
  26. package/frontend/assets/js/_goto.js +59 -59
  27. package/frontend/assets/js/_iframe-links.js +14 -14
  28. package/frontend/assets/js/_is-triggered.js +3 -3
  29. package/frontend/assets/js/_main.js +369 -369
  30. package/frontend/assets/js/_mock-data.js +8 -8
  31. package/frontend/assets/js/_prism.js +1082 -1081
  32. package/frontend/assets/js/_search.js +186 -186
  33. package/frontend/assets/js/_socket.js +44 -44
  34. package/frontend/assets/js/config-switcher/development-mode.js +38 -38
  35. package/frontend/assets/js/config-switcher/index.js +55 -55
  36. package/frontend/assets/js/config-switcher/text-direction.js +22 -22
  37. package/frontend/assets/js/config-switcher/theme.js +68 -68
  38. package/frontend/assets/js/iframe.build.js +25 -25
  39. package/frontend/assets/js/iframe.js +38 -38
  40. package/frontend/assets/js/jsontree.js +979 -976
  41. package/frontend/assets/js/main.build.js +29 -29
  42. package/frontend/assets/js/main.js +31 -31
  43. package/frontend/assets/js/styleguide/color-converter.js +652 -652
  44. package/frontend/assets/js/styleguide/index.js +100 -100
  45. package/lib/build/index.js +1014 -1020
  46. package/lib/cli/app.js +16 -16
  47. package/lib/cli/component.js +50 -50
  48. package/lib/cli/doctor.js +130 -121
  49. package/lib/cli/drupal-assets.js +163 -157
  50. package/lib/cli/lint.js +196 -196
  51. package/lib/cli/run.js +150 -146
  52. package/lib/config.js +86 -86
  53. package/lib/constants/lint-log-levels.js +6 -6
  54. package/lib/drupal/load-assets-config.js +59 -60
  55. package/lib/drupal/resolve-library-assets.js +132 -141
  56. package/lib/errors.js +20 -20
  57. package/lib/generator/component.js +124 -124
  58. package/lib/generator/mocks.js +156 -156
  59. package/lib/helpers.js +68 -68
  60. package/lib/i18n/en.js +93 -93
  61. package/lib/i18n/index.js +8 -8
  62. package/lib/index.js +13 -13
  63. package/lib/init/args.js +153 -153
  64. package/lib/init/config.js +452 -438
  65. package/lib/init/engines.js +41 -41
  66. package/lib/init/index.js +83 -83
  67. package/lib/init/rendering.js +3 -3
  68. package/lib/init/static.js +90 -90
  69. package/lib/init/twing/cache.js +27 -27
  70. package/lib/init/twing/functions.js +37 -37
  71. package/lib/init/views.js +5 -5
  72. package/lib/logger.js +72 -72
  73. package/lib/mocks/get.js +88 -88
  74. package/lib/mocks/index.js +2 -2
  75. package/lib/mocks/resolve/ref.js +447 -447
  76. package/lib/mocks/resolve/tpl.js +218 -218
  77. package/lib/mocks/resolve.js +154 -154
  78. package/lib/render/helpers/resolve-assets.js +29 -39
  79. package/lib/render/helpers.js +27 -27
  80. package/lib/render/index.js +18 -18
  81. package/lib/render/views/iframe/component.docs.js +50 -50
  82. package/lib/render/views/iframe/component.js +249 -248
  83. package/lib/render/views/iframe/design-tokens/colors.js +38 -38
  84. package/lib/render/views/iframe/design-tokens/index.js +3 -3
  85. package/lib/render/views/iframe/design-tokens/sizes.js +35 -35
  86. package/lib/render/views/iframe/design-tokens/typography.js +37 -37
  87. package/lib/render/views/iframe/docs.js +42 -42
  88. package/lib/render/views/iframe/index.js +28 -28
  89. package/lib/render/views/iframe/variation.js +89 -89
  90. package/lib/render/views/iframe/variation.standalone.js +69 -68
  91. package/lib/render/views/main/component.docs.js +38 -38
  92. package/lib/render/views/main/component.js +55 -55
  93. package/lib/render/views/main/design-tokens.js +38 -38
  94. package/lib/render/views/main/docs.js +33 -33
  95. package/lib/render/views/main/index.js +33 -33
  96. package/lib/state/components.js +99 -99
  97. package/lib/state/css.js +33 -33
  98. package/lib/state/docs.js +72 -72
  99. package/lib/state/file-contents.js +154 -154
  100. package/lib/state/helpers.js +53 -53
  101. package/lib/state/index.js +39 -39
  102. package/lib/state/menu/index.js +202 -202
  103. package/lib/state/menu/structure.js +84 -84
  104. package/lib/state/partials.js +12 -12
  105. package/lib/state/source-tree.js +51 -51
  106. package/lib/styleguide/color-names.js +148 -148
  107. package/lib/styleguide/colors.js +113 -113
  108. package/lib/styleguide/helpers.js +33 -33
  109. package/lib/styleguide/index.js +4 -4
  110. package/lib/styleguide/media-queries.js +18 -18
  111. package/lib/styleguide/spacings.js +22 -22
  112. package/lib/styleguide/typography.js +46 -46
  113. package/lib/validator/mocks.js +110 -83
  114. package/lib/validator/schemas.js +236 -227
  115. package/package.json +118 -117
@@ -1,190 +1,190 @@
1
1
  import { search as searchIsTriggered } from "./_is-triggered.js";
2
2
 
3
3
  document.addEventListener("DOMContentLoaded", () => {
4
- const SEARCH_INPUT = document.querySelector(".Search-input");
5
- const SEARCH_CLEAR = document.querySelector(".Search-clear");
6
-
7
- const COMPONENTS = Array.from(document.querySelectorAll(".Nav-item")).map(
8
- (node) => {
9
- return {
10
- node,
11
- listItem: node.closest(".Nav-entry"),
12
- label: node.textContent,
13
- lowercaseLabel: node.textContent.toLowerCase(),
14
- matchesQuery: false,
15
- toggle: node.previousElementSibling || null,
16
- parentToggles: getParentToggles(node),
17
- initiallyOpened: node.previousElementSibling
18
- ? node.previousElementSibling.getAttribute("aria-expanded") === "true"
19
- ? true
20
- : false
21
- : false,
22
- };
23
- },
24
- );
25
-
26
- if (SEARCH_INPUT) {
27
- if (SEARCH_CLEAR) {
28
- SEARCH_CLEAR.addEventListener("click", onClearSearch);
29
- }
30
-
31
- SEARCH_INPUT.addEventListener("input", onInputSearch);
32
- SEARCH_INPUT.addEventListener("keyup", onInputKeyup);
33
-
34
- window.addEventListener("keyup", (e) => {
35
- const { path, originalTarget, target, key } = e;
36
- const el = path ? path[0] : originalTarget || target;
37
-
38
- if (searchIsTriggered(el, key)) {
39
- SEARCH_INPUT.focus();
40
- }
41
- });
42
- window.addEventListener("searchTriggered", () => {
43
- SEARCH_INPUT.focus();
44
- });
45
- }
46
-
47
- /**
48
- * @returns {void}
49
- */
50
- function onClearSearch() {
51
- SEARCH_INPUT.value = "";
52
- resetMenu();
53
- }
54
-
55
- /**
56
- * @param {object} event
57
- * @param {HTMLInputElement} event.target
58
- */
59
- function onInputSearch({ target }) {
60
- const QUERY = target.value.toLowerCase();
61
-
62
- if (QUERY.length > 0) {
63
- updateMenu(QUERY);
64
- } else {
65
- resetMenu();
66
- }
67
- }
68
-
69
- /**
70
- * @param {object} root0
71
- * @param {HTMLInputElement} root0.target
72
- * @param {string} root0.key
73
- */
74
- function onInputKeyup({ target, key }) {
75
- if (key.toLowerCase() === "escape") {
76
- target.value = "";
77
- target.blur();
78
- resetMenu();
79
- }
80
- }
81
-
82
- /**
83
- * @param {string} query
84
- */
85
- function updateMenu(query) {
86
- SEARCH_CLEAR.hidden = false;
87
-
88
- COMPONENTS.forEach((component) => {
89
- if (component.toggle) {
90
- document.getElementById(
91
- component.toggle.getAttribute("aria-controls"),
92
- ).hidden = true;
93
- component.toggle.setAttribute("aria-expanded", "false");
94
- }
95
- component.parentToggles.forEach((toggle) => {
96
- toggle.parentNode.classList.remove("has-match");
97
- });
98
- });
99
-
100
- COMPONENTS.forEach((component) => {
101
- component.matchesQuery = component.lowercaseLabel.includes(query);
102
- component.listItem.classList.toggle("is-match", component.matchesQuery);
103
- component.listItem.classList.toggle(
104
- "is-no-match",
105
- !component.matchesQuery,
106
- );
107
-
108
- if (component.matchesQuery) {
109
- component.node.innerHTML = component.label.replace(
110
- new RegExp(query, "g"),
111
- `<mark>${query}</mark>`,
112
- );
113
- component.parentToggles.forEach((toggle) => {
114
- toggle.parentNode.classList.add("has-match");
115
- toggle.parentNode.classList.remove("has-no-match");
116
- document.getElementById(toggle.getAttribute("aria-controls")).hidden =
117
- false;
118
- toggle.setAttribute("aria-expanded", "true");
119
- });
120
- } else {
121
- component.node.textContent = component.label;
122
- }
123
- });
124
-
125
- COMPONENTS.forEach((component) => {
126
- if (!component.listItem.classList.contains("has-match")) {
127
- component.listItem.classList.add("has-no-match");
128
- }
129
- });
130
- }
131
-
132
- /**
133
- * @returns {void}
134
- */
135
- function resetMenu() {
136
- SEARCH_CLEAR.hidden = true;
137
-
138
- COMPONENTS.forEach((component) => {
139
- if (component.matchesQuery) {
140
- component.node.textContent = component.label;
141
- }
142
-
143
- component.matchesQuery = false;
144
-
145
- if (component.toggle) {
146
- document.getElementById(
147
- component.toggle.getAttribute("aria-controls"),
148
- ).hidden = !component.initiallyOpened;
149
- component.toggle.setAttribute(
150
- "aria-expanded",
151
- component.initiallyOpened ? "true" : "false",
152
- );
153
- }
154
- });
155
-
156
- document
157
- .querySelectorAll(".is-match, .is-no-match, .has-match, .has-no-match")
158
- .forEach((el) =>
159
- el.classList.remove(
160
- "is-match",
161
- "is-no-match",
162
- "has-match",
163
- "has-no-match",
164
- ),
165
- );
166
- }
167
-
168
- /**
169
- * @param {HTMLElement} node
170
- * @returns {Array}
171
- */
172
- function getParentToggles(node) {
173
- const parentToggles = [];
174
- let element = node;
175
-
176
- while (element.closest(".Nav-entry").parentNode.closest(".Nav-entry")) {
177
- const toggle = element
178
- .closest(".Nav-entry")
179
- .parentNode.closest(".Nav-entry")
180
- .querySelector(".Nav-toggle");
181
-
182
- if (toggle) {
183
- parentToggles.push(toggle);
184
- }
185
- element = element.closest(".Nav-entry").parentNode.closest(".Nav-entry");
186
- }
187
-
188
- return parentToggles;
189
- }
4
+ const SEARCH_INPUT = document.querySelector(".Search-input");
5
+ const SEARCH_CLEAR = document.querySelector(".Search-clear");
6
+
7
+ const COMPONENTS = Array.from(document.querySelectorAll(".Nav-item")).map(
8
+ (node) => {
9
+ return {
10
+ node,
11
+ listItem: node.closest(".Nav-entry"),
12
+ label: node.textContent,
13
+ lowercaseLabel: node.textContent.toLowerCase(),
14
+ matchesQuery: false,
15
+ toggle: node.previousElementSibling || null,
16
+ parentToggles: getParentToggles(node),
17
+ initiallyOpened: node.previousElementSibling
18
+ ? node.previousElementSibling.getAttribute("aria-expanded") === "true"
19
+ ? true
20
+ : false
21
+ : false,
22
+ };
23
+ },
24
+ );
25
+
26
+ if (SEARCH_INPUT) {
27
+ if (SEARCH_CLEAR) {
28
+ SEARCH_CLEAR.addEventListener("click", onClearSearch);
29
+ }
30
+
31
+ SEARCH_INPUT.addEventListener("input", onInputSearch);
32
+ SEARCH_INPUT.addEventListener("keyup", onInputKeyup);
33
+
34
+ window.addEventListener("keyup", (e) => {
35
+ const { path, originalTarget, target, key } = e;
36
+ const el = path ? path[0] : originalTarget || target;
37
+
38
+ if (searchIsTriggered(el, key)) {
39
+ SEARCH_INPUT.focus();
40
+ }
41
+ });
42
+ window.addEventListener("searchTriggered", () => {
43
+ SEARCH_INPUT.focus();
44
+ });
45
+ }
46
+
47
+ /**
48
+ * @returns {void}
49
+ */
50
+ function onClearSearch() {
51
+ SEARCH_INPUT.value = "";
52
+ resetMenu();
53
+ }
54
+
55
+ /**
56
+ * @param {object} event
57
+ * @param {HTMLInputElement} event.target
58
+ */
59
+ function onInputSearch({ target }) {
60
+ const QUERY = target.value.toLowerCase();
61
+
62
+ if (QUERY.length > 0) {
63
+ updateMenu(QUERY);
64
+ } else {
65
+ resetMenu();
66
+ }
67
+ }
68
+
69
+ /**
70
+ * @param {object} root0
71
+ * @param {HTMLInputElement} root0.target
72
+ * @param {string} root0.key
73
+ */
74
+ function onInputKeyup({ target, key }) {
75
+ if (key.toLowerCase() === "escape") {
76
+ target.value = "";
77
+ target.blur();
78
+ resetMenu();
79
+ }
80
+ }
81
+
82
+ /**
83
+ * @param {string} query
84
+ */
85
+ function updateMenu(query) {
86
+ SEARCH_CLEAR.hidden = false;
87
+
88
+ COMPONENTS.forEach((component) => {
89
+ if (component.toggle) {
90
+ document.getElementById(
91
+ component.toggle.getAttribute("aria-controls"),
92
+ ).hidden = true;
93
+ component.toggle.setAttribute("aria-expanded", "false");
94
+ }
95
+ component.parentToggles.forEach((toggle) => {
96
+ toggle.parentNode.classList.remove("has-match");
97
+ });
98
+ });
99
+
100
+ COMPONENTS.forEach((component) => {
101
+ component.matchesQuery = component.lowercaseLabel.includes(query);
102
+ component.listItem.classList.toggle("is-match", component.matchesQuery);
103
+ component.listItem.classList.toggle(
104
+ "is-no-match",
105
+ !component.matchesQuery,
106
+ );
107
+
108
+ if (component.matchesQuery) {
109
+ component.node.innerHTML = component.label.replace(
110
+ new RegExp(query, "g"),
111
+ `<mark>${query}</mark>`,
112
+ );
113
+ component.parentToggles.forEach((toggle) => {
114
+ toggle.parentNode.classList.add("has-match");
115
+ toggle.parentNode.classList.remove("has-no-match");
116
+ document.getElementById(toggle.getAttribute("aria-controls")).hidden =
117
+ false;
118
+ toggle.setAttribute("aria-expanded", "true");
119
+ });
120
+ } else {
121
+ component.node.textContent = component.label;
122
+ }
123
+ });
124
+
125
+ COMPONENTS.forEach((component) => {
126
+ if (!component.listItem.classList.contains("has-match")) {
127
+ component.listItem.classList.add("has-no-match");
128
+ }
129
+ });
130
+ }
131
+
132
+ /**
133
+ * @returns {void}
134
+ */
135
+ function resetMenu() {
136
+ SEARCH_CLEAR.hidden = true;
137
+
138
+ COMPONENTS.forEach((component) => {
139
+ if (component.matchesQuery) {
140
+ component.node.textContent = component.label;
141
+ }
142
+
143
+ component.matchesQuery = false;
144
+
145
+ if (component.toggle) {
146
+ document.getElementById(
147
+ component.toggle.getAttribute("aria-controls"),
148
+ ).hidden = !component.initiallyOpened;
149
+ component.toggle.setAttribute(
150
+ "aria-expanded",
151
+ component.initiallyOpened ? "true" : "false",
152
+ );
153
+ }
154
+ });
155
+
156
+ document
157
+ .querySelectorAll(".is-match, .is-no-match, .has-match, .has-no-match")
158
+ .forEach((el) =>
159
+ el.classList.remove(
160
+ "is-match",
161
+ "is-no-match",
162
+ "has-match",
163
+ "has-no-match",
164
+ ),
165
+ );
166
+ }
167
+
168
+ /**
169
+ * @param {HTMLElement} node
170
+ * @returns {Array}
171
+ */
172
+ function getParentToggles(node) {
173
+ const parentToggles = [];
174
+ let element = node;
175
+
176
+ while (element.closest(".Nav-entry").parentNode.closest(".Nav-entry")) {
177
+ const toggle = element
178
+ .closest(".Nav-entry")
179
+ .parentNode.closest(".Nav-entry")
180
+ .querySelector(".Nav-toggle");
181
+
182
+ if (toggle) {
183
+ parentToggles.push(toggle);
184
+ }
185
+ element = element.closest(".Nav-entry").parentNode.closest(".Nav-entry");
186
+ }
187
+
188
+ return parentToggles;
189
+ }
190
190
  });
@@ -6,77 +6,77 @@ let retryDelay = INITIAL_RETRY_DELAY_MS;
6
6
  let websocket;
7
7
 
8
8
  function getWebSocketUrl() {
9
- const protocol = window.location.protocol === "https:" ? "wss" : "ws";
10
- return `${protocol}://${window.location.host}${SOCKET_PATH}`;
9
+ const protocol = window.location.protocol === "https:" ? "wss" : "ws";
10
+ return `${protocol}://${window.location.host}${SOCKET_PATH}`;
11
11
  }
12
12
 
13
13
  function triggerReload(scope) {
14
- if (scope === "parent") {
15
- parent.window.location.reload();
16
- return;
17
- }
14
+ if (scope === "parent") {
15
+ parent.window.location.reload();
16
+ return;
17
+ }
18
18
 
19
- window.location.reload();
19
+ window.location.reload();
20
20
  }
21
21
 
22
22
  function parseLegacyScope(messageData) {
23
- if (messageData === "reloadParent") {
24
- return "parent";
25
- }
23
+ if (messageData === "reloadParent") {
24
+ return "parent";
25
+ }
26
26
 
27
- if (typeof messageData === "string" && messageData.length === 0) {
28
- return "iframe";
29
- }
27
+ if (typeof messageData === "string" && messageData.length === 0) {
28
+ return "iframe";
29
+ }
30
30
 
31
- return null;
31
+ return null;
32
32
  }
33
33
 
34
34
  function parseJsonScope(messageData) {
35
- try {
36
- const parsed = JSON.parse(messageData);
37
- return parsed.scope || "iframe";
38
- } catch {
39
- return "iframe";
40
- }
35
+ try {
36
+ const parsed = JSON.parse(messageData);
37
+ return parsed.scope || "iframe";
38
+ } catch {
39
+ return "iframe";
40
+ }
41
41
  }
42
42
 
43
43
  function parseScope(messageData) {
44
- const legacyScope = parseLegacyScope(messageData);
45
- if (legacyScope) {
46
- return legacyScope;
47
- }
44
+ const legacyScope = parseLegacyScope(messageData);
45
+ if (legacyScope) {
46
+ return legacyScope;
47
+ }
48
48
 
49
- return parseJsonScope(messageData);
49
+ return parseJsonScope(messageData);
50
50
  }
51
51
 
52
52
  function scheduleReconnect() {
53
- const jitter = Math.floor(Math.random() * 100);
54
- const delay = Math.min(retryDelay + jitter, MAX_RETRY_DELAY_MS);
55
- retryDelay = Math.min(retryDelay * 2, MAX_RETRY_DELAY_MS);
53
+ const jitter = Math.floor(Math.random() * 100);
54
+ const delay = Math.min(retryDelay + jitter, MAX_RETRY_DELAY_MS);
55
+ retryDelay = Math.min(retryDelay * 2, MAX_RETRY_DELAY_MS);
56
56
 
57
- window.setTimeout(() => {
58
- connect();
59
- }, delay);
57
+ window.setTimeout(() => {
58
+ connect();
59
+ }, delay);
60
60
  }
61
61
 
62
62
  function connect() {
63
- websocket = new WebSocket(getWebSocketUrl());
63
+ websocket = new WebSocket(getWebSocketUrl());
64
64
 
65
- websocket.onopen = () => {
66
- retryDelay = INITIAL_RETRY_DELAY_MS;
67
- };
65
+ websocket.onopen = () => {
66
+ retryDelay = INITIAL_RETRY_DELAY_MS;
67
+ };
68
68
 
69
- websocket.onmessage = (message) => {
70
- triggerReload(parseScope(message.data));
71
- };
69
+ websocket.onmessage = (message) => {
70
+ triggerReload(parseScope(message.data));
71
+ };
72
72
 
73
- websocket.onerror = () => {
74
- websocket.close();
75
- };
73
+ websocket.onerror = () => {
74
+ websocket.close();
75
+ };
76
76
 
77
- websocket.onclose = () => {
78
- scheduleReconnect();
79
- };
77
+ websocket.onclose = () => {
78
+ scheduleReconnect();
79
+ };
80
80
  }
81
81
 
82
82
  connect();
@@ -1,49 +1,49 @@
1
1
  import ConfigSwitcher from "./index.js";
2
2
 
3
3
  class DevelopmentModeConfigSwitcher extends ConfigSwitcher {
4
- /**
5
- * @param {HTMLFormElement} form
6
- * @memberof DevelopmentModeConfigSwitcher
7
- */
8
- constructor(form) {
9
- super(form);
4
+ /**
5
+ * @param {HTMLFormElement} form
6
+ * @memberof DevelopmentModeConfigSwitcher
7
+ */
8
+ constructor(form) {
9
+ super(form);
10
10
 
11
- if (window.frames.iframe) {
12
- window.frames.iframe.addEventListener("load", () => {
13
- if (this.cookieValue) {
14
- this.renderTheme(this.cookieValue);
15
- }
16
- });
17
- }
18
- }
11
+ if (window.frames.iframe) {
12
+ window.frames.iframe.addEventListener("load", () => {
13
+ if (this.cookieValue) {
14
+ this.renderTheme(this.cookieValue);
15
+ }
16
+ });
17
+ }
18
+ }
19
19
 
20
- /**
21
- * @param {Event} event
22
- * @param {HTMLInputElement} event.target
23
- */
24
- onThemeChange({ target }) {
25
- const value = target.checked ? "dev" : "presentation";
20
+ /**
21
+ * @param {Event} event
22
+ * @param {HTMLInputElement} event.target
23
+ */
24
+ onThemeChange({ target }) {
25
+ const value = target.checked ? "dev" : "presentation";
26
26
 
27
- this.saveTheme(value);
28
- this.renderTheme(value);
29
- }
27
+ this.saveTheme(value);
28
+ this.renderTheme(value);
29
+ }
30
30
 
31
- /**
32
- * @param {string} value
33
- */
34
- renderSwitcher() {
35
- if (this.cookieValue) {
36
- this.form.querySelector('[type="checkbox"]').checked =
37
- this.cookieValue == "dev";
38
- }
39
- }
31
+ /**
32
+ * @param {string} value
33
+ */
34
+ renderSwitcher() {
35
+ if (this.cookieValue) {
36
+ this.form.querySelector('[type="checkbox"]').checked =
37
+ this.cookieValue == "dev";
38
+ }
39
+ }
40
40
 
41
- /**
42
- * @param {string} value
43
- */
44
- renderTheme(value) {
45
- window.frames.iframe.document.documentElement.dataset.mode = value;
46
- }
41
+ /**
42
+ * @param {string} value
43
+ */
44
+ renderTheme(value) {
45
+ window.frames.iframe.document.documentElement.dataset.mode = value;
46
+ }
47
47
  }
48
48
 
49
49
  export default DevelopmentModeConfigSwitcher;