@schalkneethling/miyagi-core 4.4.1 → 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 +245 -178
  115. package/package.json +118 -117
@@ -3,61 +3,61 @@
3
3
  */
4
4
 
5
5
  class ConfigSwitcher {
6
- /**
7
- * @param {HTMLElement} form
8
- */
9
- constructor(form) {
10
- this.form = form;
11
- this.inputs = Array.from(
12
- this.form.querySelectorAll('[type="radio"], [type="checkbox"]'),
13
- );
14
- this.options = this.inputs.map((el) => el.value);
15
- this.name = this.inputs[0].name;
16
- this.cookieName = `miyagi_${document.title.replaceAll(" ", "-")}_${this.name}`;
17
- this.cookieValue = this.#getCookie(this.cookieName);
18
-
19
- this.inputs.forEach((input) => {
20
- input.addEventListener("change", this.onThemeChange.bind(this));
21
- });
22
-
23
- this.renderSwitcher();
24
- }
25
-
26
- /**
27
- * @param {Event} event
28
- * @param {HTMLInputElement} event.target
29
- */
30
- onThemeChange({ target }) {
31
- const { value } = target;
32
-
33
- this.saveTheme(value);
34
- this.renderTheme(value);
35
- }
36
-
37
- /**
38
- * @param {string} value
39
- */
40
- saveTheme(value) {
41
- document.cookie = `${this.cookieName}=${value};`;
42
- }
43
-
44
- /**
45
- * @param {Theme} value
46
- */
47
- renderSwitcher() {
48
- const input = this.form.querySelector(`[value="${this.cookieValue}"]`);
49
-
50
- if (input) {
51
- input.checked = true;
52
- }
53
- }
54
-
55
- #getCookie(name) {
56
- return document.cookie.split("; ").reduce((r, v) => {
57
- const parts = v.split("=");
58
- return parts[0] === name ? decodeURIComponent(parts[1]) : r;
59
- }, "");
60
- }
6
+ /**
7
+ * @param {HTMLElement} form
8
+ */
9
+ constructor(form) {
10
+ this.form = form;
11
+ this.inputs = Array.from(
12
+ this.form.querySelectorAll('[type="radio"], [type="checkbox"]'),
13
+ );
14
+ this.options = this.inputs.map((el) => el.value);
15
+ this.name = this.inputs[0].name;
16
+ this.cookieName = `miyagi_${document.title.replaceAll(" ", "-")}_${this.name}`;
17
+ this.cookieValue = this.#getCookie(this.cookieName);
18
+
19
+ this.inputs.forEach((input) => {
20
+ input.addEventListener("change", this.onThemeChange.bind(this));
21
+ });
22
+
23
+ this.renderSwitcher();
24
+ }
25
+
26
+ /**
27
+ * @param {Event} event
28
+ * @param {HTMLInputElement} event.target
29
+ */
30
+ onThemeChange({ target }) {
31
+ const { value } = target;
32
+
33
+ this.saveTheme(value);
34
+ this.renderTheme(value);
35
+ }
36
+
37
+ /**
38
+ * @param {string} value
39
+ */
40
+ saveTheme(value) {
41
+ document.cookie = `${this.cookieName}=${value};`;
42
+ }
43
+
44
+ /**
45
+ * @param {Theme} value
46
+ */
47
+ renderSwitcher() {
48
+ const input = this.form.querySelector(`[value="${this.cookieValue}"]`);
49
+
50
+ if (input) {
51
+ input.checked = true;
52
+ }
53
+ }
54
+
55
+ #getCookie(name) {
56
+ return document.cookie.split("; ").reduce((r, v) => {
57
+ const parts = v.split("=");
58
+ return parts[0] === name ? decodeURIComponent(parts[1]) : r;
59
+ }, "");
60
+ }
61
61
  }
62
62
 
63
63
  export default ConfigSwitcher;
@@ -1,30 +1,30 @@
1
1
  import ConfigSwitcher from "./index.js";
2
2
 
3
3
  class TextDirectionConfigSwitcher extends ConfigSwitcher {
4
- /**
5
- * @param {HTMLFormElement} form
6
- * @memberof TextDirectionConfigSwitcher
7
- */
8
- constructor(form) {
9
- super(form);
4
+ /**
5
+ * @param {HTMLFormElement} form
6
+ * @memberof TextDirectionConfigSwitcher
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 {string} value
22
- */
23
- renderTheme(value) {
24
- Array.from(window.frames.iframe.frames).forEach((frame) => {
25
- frame.document.documentElement.setAttribute("dir", value);
26
- });
27
- }
20
+ /**
21
+ * @param {string} value
22
+ */
23
+ renderTheme(value) {
24
+ Array.from(window.frames.iframe.frames).forEach((frame) => {
25
+ frame.document.documentElement.setAttribute("dir", value);
26
+ });
27
+ }
28
28
  }
29
29
 
30
30
  export default TextDirectionConfigSwitcher;
@@ -1,87 +1,87 @@
1
1
  import ConfigSwitcher from "./index.js";
2
2
 
3
3
  class ThemeConfigSwitcher extends ConfigSwitcher {
4
- /**
5
- * @param {HTMLFormElement} form
6
- * @memberof ThemeConfigSwitcher
7
- */
8
- constructor(form) {
9
- super(form);
4
+ /**
5
+ * @param {HTMLFormElement} form
6
+ * @memberof ThemeConfigSwitcher
7
+ */
8
+ constructor(form) {
9
+ super(form);
10
10
 
11
- this.logoWrapper = document.querySelector(".Title-logo");
12
- if (this.logoWrapper) {
13
- this.logoImage = this.logoWrapper.querySelector("img");
14
- }
11
+ this.logoWrapper = document.querySelector(".Title-logo");
12
+ if (this.logoWrapper) {
13
+ this.logoImage = this.logoWrapper.querySelector("img");
14
+ }
15
15
 
16
- if (window.frames.iframe) {
17
- if (this.cookieValue) {
18
- this.render(this.cookieValue);
19
- }
16
+ if (window.frames.iframe) {
17
+ if (this.cookieValue) {
18
+ this.render(this.cookieValue);
19
+ }
20
20
 
21
- window.frames.iframe.addEventListener("load", () => {
22
- if (this.cookieValue) {
23
- this.renderTheme(this.cookieValue);
24
- }
25
- });
26
- }
27
- }
21
+ window.frames.iframe.addEventListener("load", () => {
22
+ if (this.cookieValue) {
23
+ this.renderTheme(this.cookieValue);
24
+ }
25
+ });
26
+ }
27
+ }
28
28
 
29
- onThemeChange({ target }) {
30
- super.onThemeChange({ target });
29
+ onThemeChange({ target }) {
30
+ super.onThemeChange({ target });
31
31
 
32
- this.render(target.value);
33
- }
32
+ this.render(target.value);
33
+ }
34
34
 
35
- /**
36
- * @param {string} value
37
- */
38
- renderTheme(value) {
39
- this.options.forEach((option) => {
40
- if (window.frames.iframe.document.documentElement) {
41
- window.frames.iframe.document.documentElement.classList.remove(
42
- `theme-${option}`,
43
- );
44
- }
35
+ /**
36
+ * @param {string} value
37
+ */
38
+ renderTheme(value) {
39
+ this.options.forEach((option) => {
40
+ if (window.frames.iframe.document.documentElement) {
41
+ window.frames.iframe.document.documentElement.classList.remove(
42
+ `theme-${option}`,
43
+ );
44
+ }
45
45
 
46
- Array.from(window.frames.iframe.frames).forEach((frame) => {
47
- frame.document.documentElement.classList.remove(`theme-${option}`);
48
- });
49
- });
46
+ Array.from(window.frames.iframe.frames).forEach((frame) => {
47
+ frame.document.documentElement.classList.remove(`theme-${option}`);
48
+ });
49
+ });
50
50
 
51
- window.frames.iframe.document.documentElement.classList.add(
52
- `theme-${value}`,
53
- );
54
- Array.from(window.frames.iframe.frames).forEach((frame) => {
55
- frame.document.documentElement.classList.add(`theme-${value}`);
56
- });
57
- }
51
+ window.frames.iframe.document.documentElement.classList.add(
52
+ `theme-${value}`,
53
+ );
54
+ Array.from(window.frames.iframe.frames).forEach((frame) => {
55
+ frame.document.documentElement.classList.add(`theme-${value}`);
56
+ });
57
+ }
58
58
 
59
- render(value) {
60
- this.options.forEach((option) => {
61
- document.documentElement.classList.remove(`${this.name}-${option}`);
62
- });
59
+ render(value) {
60
+ this.options.forEach((option) => {
61
+ document.documentElement.classList.remove(`${this.name}-${option}`);
62
+ });
63
63
 
64
- document.documentElement.classList.add(`${this.name}-${value}`);
64
+ document.documentElement.classList.add(`${this.name}-${value}`);
65
65
 
66
- if (this.logoWrapper) {
67
- if (value === "auto") {
68
- this.options.forEach((option) => {
69
- if (option === "auto") return;
66
+ if (this.logoWrapper) {
67
+ if (value === "auto") {
68
+ this.options.forEach((option) => {
69
+ if (option === "auto") return;
70
70
 
71
- const source = document.createElement("source");
72
- source.srcset = this.logoImage.dataset[option];
73
- source.media = `(prefers-color-scheme: ${option})`;
71
+ const source = document.createElement("source");
72
+ source.srcset = this.logoImage.dataset[option];
73
+ source.media = `(prefers-color-scheme: ${option})`;
74
74
 
75
- this.logoWrapper.prepend(source);
76
- });
77
- } else {
78
- this.logoWrapper
79
- .querySelectorAll("source")
80
- .forEach((source) => source.remove());
81
- this.logoImage.src = this.logoImage.dataset[value];
82
- }
83
- }
84
- }
75
+ this.logoWrapper.prepend(source);
76
+ });
77
+ } else {
78
+ this.logoWrapper
79
+ .querySelectorAll("source")
80
+ .forEach((source) => source.remove());
81
+ this.logoImage.src = this.logoImage.dataset[value];
82
+ }
83
+ }
84
+ }
85
85
  }
86
86
 
87
87
  export default ThemeConfigSwitcher;
@@ -2,42 +2,42 @@ import "./_accordion-tabs.js";
2
2
  import "./_prism.js";
3
3
  import "./_iframe-links.js";
4
4
  import {
5
- goto as gotoIsTriggered,
6
- search as searchIsTriggered,
5
+ goto as gotoIsTriggered,
6
+ search as searchIsTriggered,
7
7
  } from "./_is-triggered.js";
8
8
 
9
9
  if (
10
- window.location.pathname.startsWith("/component-") &&
11
- window.location.href.endsWith("-embedded.html") &&
12
- window.self === window.top
10
+ window.location.pathname.startsWith("/component-") &&
11
+ window.location.href.endsWith("-embedded.html") &&
12
+ window.self === window.top
13
13
  ) {
14
- window.location = new URL(window.location).replace(
15
- /-embedded\.html$/,
16
- ".html",
17
- );
14
+ window.location = new URL(window.location).replace(
15
+ /-embedded\.html$/,
16
+ ".html",
17
+ );
18
18
  }
19
19
 
20
20
  document.addEventListener("DOMContentLoaded", function () {
21
- const styleguide = document.querySelector(".Styleguide");
21
+ const styleguide = document.querySelector(".Styleguide");
22
22
 
23
- if (styleguide) {
24
- import("./styleguide/index.js")
25
- .then((Styleguide) => new Styleguide.default(styleguide))
26
- .catch((err) => console.error(err));
27
- }
23
+ if (styleguide) {
24
+ import("./styleguide/index.js")
25
+ .then((Styleguide) => new Styleguide.default(styleguide))
26
+ .catch((err) => console.error(err));
27
+ }
28
28
 
29
- if (document.querySelector(".js-openMockData")) {
30
- import("./_mock-data.js");
31
- }
29
+ if (document.querySelector(".js-openMockData")) {
30
+ import("./_mock-data.js");
31
+ }
32
32
  });
33
33
 
34
34
  document.addEventListener("keyup", (e) => {
35
- const { path, originalTarget, target, key } = e;
36
- const el = path ? path[0] : originalTarget || target;
35
+ const { path, originalTarget, target, key } = e;
36
+ const el = path ? path[0] : originalTarget || target;
37
37
 
38
- if (searchIsTriggered(el, key)) {
39
- parent.window.dispatchEvent(new CustomEvent("searchTriggered"));
40
- } else if (gotoIsTriggered(el, key)) {
41
- parent.window.dispatchEvent(new CustomEvent("gotoTriggered"));
42
- }
38
+ if (searchIsTriggered(el, key)) {
39
+ parent.window.dispatchEvent(new CustomEvent("searchTriggered"));
40
+ } else if (gotoIsTriggered(el, key)) {
41
+ parent.window.dispatchEvent(new CustomEvent("gotoTriggered"));
42
+ }
43
43
  });
@@ -1,52 +1,52 @@
1
1
  import "./_accordion-tabs.js";
2
2
  import "./_socket.js";
3
3
  import {
4
- goto as gotoIsTriggered,
5
- search as searchIsTriggered,
4
+ goto as gotoIsTriggered,
5
+ search as searchIsTriggered,
6
6
  } from "./_is-triggered.js";
7
7
 
8
8
  if (
9
- window.location.pathname.startsWith("/component?") &&
10
- window.location.href.indexOf("&embedded=true") >= 0 &&
11
- window.self === window.top
9
+ window.location.pathname.startsWith("/component?") &&
10
+ window.location.href.indexOf("&embedded=true") >= 0 &&
11
+ window.self === window.top
12
12
  ) {
13
- window.location = new URL(window.location).replace("&embedded=true", "");
13
+ window.location = new URL(window.location).replace("&embedded=true", "");
14
14
  }
15
15
 
16
16
  document.addEventListener("DOMContentLoaded", function () {
17
- const links = Array.from(document.querySelectorAll(".Component-file"));
18
- const styleguide = document.querySelector(".Styleguide");
19
-
20
- if (links.length > 0) {
21
- import("./_iframe-links.js")
22
- .then((module) => {
23
- module.default(links);
24
- })
25
- .catch((err) => console.error(err));
26
- }
27
-
28
- if (document.querySelector(".Code")) {
29
- import("./_prism.js");
30
- }
31
-
32
- if (styleguide) {
33
- import("./styleguide/index.js")
34
- .then((Styleguide) => new Styleguide.default(styleguide))
35
- .catch((err) => console.error(err));
36
- }
37
-
38
- if (document.querySelector(".js-openMockData")) {
39
- import("./_mock-data.js");
40
- }
17
+ const links = Array.from(document.querySelectorAll(".Component-file"));
18
+ const styleguide = document.querySelector(".Styleguide");
19
+
20
+ if (links.length > 0) {
21
+ import("./_iframe-links.js")
22
+ .then((module) => {
23
+ module.default(links);
24
+ })
25
+ .catch((err) => console.error(err));
26
+ }
27
+
28
+ if (document.querySelector(".Code")) {
29
+ import("./_prism.js");
30
+ }
31
+
32
+ if (styleguide) {
33
+ import("./styleguide/index.js")
34
+ .then((Styleguide) => new Styleguide.default(styleguide))
35
+ .catch((err) => console.error(err));
36
+ }
37
+
38
+ if (document.querySelector(".js-openMockData")) {
39
+ import("./_mock-data.js");
40
+ }
41
41
  });
42
42
 
43
43
  document.addEventListener("keyup", (e) => {
44
- const { path, originalTarget, target, key } = e;
45
- const el = path ? path[0] : originalTarget || target;
46
-
47
- if (searchIsTriggered(el, key)) {
48
- parent.window.dispatchEvent(new CustomEvent("searchTriggered"));
49
- } else if (gotoIsTriggered(el, key)) {
50
- parent.window.dispatchEvent(new CustomEvent("gotoTriggered"));
51
- }
44
+ const { path, originalTarget, target, key } = e;
45
+ const el = path ? path[0] : originalTarget || target;
46
+
47
+ if (searchIsTriggered(el, key)) {
48
+ parent.window.dispatchEvent(new CustomEvent("searchTriggered"));
49
+ } else if (gotoIsTriggered(el, key)) {
50
+ parent.window.dispatchEvent(new CustomEvent("gotoTriggered"));
51
+ }
52
52
  });