@cedx/base 0.19.0 → 0.21.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 (83) hide show
  1. package/ReadMe.md +1 -1
  2. package/lib/{DateExtensions.d.ts → Date.d.ts} +9 -9
  3. package/lib/Date.d.ts.map +1 -0
  4. package/lib/{DateExtensions.js → Date.js} +12 -10
  5. package/lib/{FileExtensions.d.ts → File.d.ts} +1 -1
  6. package/lib/File.d.ts.map +1 -0
  7. package/lib/{NumberExtensions.d.ts → Number.d.ts} +1 -1
  8. package/lib/Number.d.ts.map +1 -0
  9. package/lib/{StringExtensions.d.ts → String.d.ts} +1 -19
  10. package/lib/String.d.ts.map +1 -0
  11. package/lib/{StringExtensions.js → String.js} +0 -40
  12. package/lib/UI/Components/{MessageBox.d.ts → DialogBox.d.ts} +18 -48
  13. package/lib/UI/Components/DialogBox.d.ts.map +1 -0
  14. package/lib/UI/Components/{MessageBox.js → DialogBox.js} +49 -79
  15. package/lib/UI/Components/LoadingIndicator.d.ts +27 -2
  16. package/lib/UI/Components/LoadingIndicator.d.ts.map +1 -1
  17. package/lib/UI/Components/LoadingIndicator.js +55 -2
  18. package/lib/UI/Components/OfflineIndicator.d.ts +29 -0
  19. package/lib/UI/Components/OfflineIndicator.d.ts.map +1 -1
  20. package/lib/UI/Components/OfflineIndicator.js +70 -7
  21. package/lib/UI/Components/Toast.d.ts +11 -11
  22. package/lib/UI/Components/Toast.d.ts.map +1 -1
  23. package/lib/UI/Components/Toast.js +21 -21
  24. package/lib/UI/Components/Toaster.d.ts +6 -6
  25. package/lib/UI/Components/Toaster.d.ts.map +1 -1
  26. package/lib/UI/Components/Toaster.js +12 -13
  27. package/lib/UI/{FormExtensions.d.ts → Form.d.ts} +1 -1
  28. package/lib/UI/Form.d.ts.map +1 -0
  29. package/lib/UI/Tag.d.ts +15 -0
  30. package/lib/UI/Tag.d.ts.map +1 -0
  31. package/lib/UI/Tag.js +44 -0
  32. package/package.json +1 -1
  33. package/src/Client/{DateExtensions.ts → Date.ts} +13 -10
  34. package/src/Client/{StringExtensions.ts → String.ts} +0 -40
  35. package/src/Client/UI/Components/{MessageBox.ts → DialogBox.ts} +51 -106
  36. package/src/Client/UI/Components/LoadingIndicator.ts +57 -2
  37. package/src/Client/UI/Components/OfflineIndicator.ts +70 -7
  38. package/src/Client/UI/Components/Toast.ts +27 -27
  39. package/src/Client/UI/Components/Toaster.ts +14 -15
  40. package/src/Client/UI/Tag.ts +52 -0
  41. package/src/Client/tsconfig.json +0 -2
  42. package/lib/DateExtensions.d.ts.map +0 -1
  43. package/lib/FileExtensions.d.ts.map +0 -1
  44. package/lib/Hosting/Environment.d.ts +0 -22
  45. package/lib/Hosting/Environment.d.ts.map +0 -1
  46. package/lib/Hosting/Environment.js +0 -17
  47. package/lib/Hosting/HostEnvironment.d.ts +0 -61
  48. package/lib/Hosting/HostEnvironment.d.ts.map +0 -1
  49. package/lib/Hosting/HostEnvironment.js +0 -56
  50. package/lib/Net/Http/HttpMethod.d.ts +0 -46
  51. package/lib/Net/Http/HttpMethod.d.ts.map +0 -1
  52. package/lib/Net/Http/HttpMethod.js +0 -41
  53. package/lib/Net/Http/StatusCode.d.ts +0 -122
  54. package/lib/Net/Http/StatusCode.d.ts.map +0 -1
  55. package/lib/Net/Http/StatusCode.js +0 -117
  56. package/lib/Net/Mime/DispositionType.d.ts +0 -18
  57. package/lib/Net/Mime/DispositionType.d.ts.map +0 -1
  58. package/lib/Net/Mime/DispositionType.js +0 -13
  59. package/lib/Net/Mime/MediaType.d.ts +0 -151
  60. package/lib/Net/Mime/MediaType.d.ts.map +0 -1
  61. package/lib/Net/Mime/MediaType.js +0 -150
  62. package/lib/NumberExtensions.d.ts.map +0 -1
  63. package/lib/StringExtensions.d.ts.map +0 -1
  64. package/lib/UI/Components/MessageBox.d.ts.map +0 -1
  65. package/lib/UI/ElementExtensions.d.ts +0 -13
  66. package/lib/UI/ElementExtensions.d.ts.map +0 -1
  67. package/lib/UI/ElementExtensions.js +0 -18
  68. package/lib/UI/FormExtensions.d.ts.map +0 -1
  69. package/src/Client/Hosting/Environment.ts +0 -25
  70. package/src/Client/Hosting/HostEnvironment.ts +0 -86
  71. package/src/Client/Hosting/tsconfig.json +0 -13
  72. package/src/Client/Net/Http/HttpMethod.ts +0 -55
  73. package/src/Client/Net/Http/StatusCode.ts +0 -150
  74. package/src/Client/Net/Mime/DispositionType.ts +0 -20
  75. package/src/Client/Net/Mime/MediaType.ts +0 -185
  76. package/src/Client/Net/tsconfig.json +0 -13
  77. package/src/Client/UI/ElementExtensions.ts +0 -19
  78. /package/lib/{FileExtensions.js → File.js} +0 -0
  79. /package/lib/{NumberExtensions.js → Number.js} +0 -0
  80. /package/lib/UI/{FormExtensions.js → Form.js} +0 -0
  81. /package/src/Client/{FileExtensions.ts → File.ts} +0 -0
  82. /package/src/Client/{NumberExtensions.ts → Number.ts} +0 -0
  83. /package/src/Client/UI/{FormExtensions.ts → Form.ts} +0 -0
@@ -4,14 +4,39 @@
4
4
  export declare class LoadingIndicator extends HTMLElement {
5
5
  #private;
6
6
  /**
7
- * Hides the loading indicator.
7
+ * The list of observed attributes.
8
+ */
9
+ static readonly observedAttributes: string[];
10
+ /**
11
+ * Value indicating whether to apply a transition.
12
+ */
13
+ get fade(): boolean;
14
+ set fade(value: boolean);
15
+ /**
16
+ * Value indicating whether to initially show this component.
17
+ */
18
+ get open(): boolean;
19
+ set open(value: boolean);
20
+ /**
21
+ * Method invoked when an attribute has been changed.
22
+ * @param attribute The attribute name.
23
+ * @param oldValue The previous attribute value.
24
+ * @param newValue The new attribute value.
25
+ */
26
+ attributeChangedCallback(attribute: string, oldValue: string | null, newValue: string | null): void;
27
+ /**
28
+ * Method invoked when this component is connected.
29
+ */
30
+ connectedCallback(): void;
31
+ /**
32
+ * Hides this loading indicator.
8
33
  * @param options Value indicating whether to force the loading indicator to hide.
9
34
  */
10
35
  hide(options?: {
11
36
  force?: boolean;
12
37
  }): void;
13
38
  /**
14
- * Shows the loading indicator.
39
+ * Shows this loading indicator.
15
40
  */
16
41
  show(): void;
17
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/LoadingIndicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;IAchD;;;OAGG;IACH,IAAI,CAAC,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,IAAI;IAS3C;;OAEG;IACH,IAAI,IAAI,IAAI;CAKZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
1
+ {"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/LoadingIndicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;IAEhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAY;IAc9C;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;OAGG;IACH,IAAI,CAAC,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,IAAI;IAU3C;;OAEG;IACH,IAAI,IAAI,IAAI;CAcZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
@@ -2,6 +2,10 @@
2
2
  * A component that shows up when an HTTP request starts, and hides when all concurrent HTTP requests are completed.
3
3
  */
4
4
  export class LoadingIndicator extends HTMLElement {
5
+ /**
6
+ * The list of observed attributes.
7
+ */
8
+ static observedAttributes = ["fade"];
5
9
  /**
6
10
  * The number of concurrent HTTP requests.
7
11
  */
@@ -13,7 +17,47 @@ export class LoadingIndicator extends HTMLElement {
13
17
  customElements.define("loading-indicator", this);
14
18
  }
15
19
  /**
16
- * Hides the loading indicator.
20
+ * Value indicating whether to apply a transition.
21
+ */
22
+ get fade() {
23
+ return this.hasAttribute("fade");
24
+ }
25
+ set fade(value) {
26
+ this.toggleAttribute("fade", value);
27
+ }
28
+ /**
29
+ * Value indicating whether to initially show this component.
30
+ */
31
+ get open() {
32
+ return this.hasAttribute("open");
33
+ }
34
+ set open(value) {
35
+ this.toggleAttribute("open", value);
36
+ }
37
+ /**
38
+ * Method invoked when an attribute has been changed.
39
+ * @param attribute The attribute name.
40
+ * @param oldValue The previous attribute value.
41
+ * @param newValue The new attribute value.
42
+ */
43
+ attributeChangedCallback(attribute, oldValue, newValue) {
44
+ if (newValue != oldValue)
45
+ switch (attribute) {
46
+ case "fade":
47
+ this.#updateFade(newValue != null);
48
+ break;
49
+ // No default
50
+ }
51
+ }
52
+ /**
53
+ * Method invoked when this component is connected.
54
+ */
55
+ connectedCallback() {
56
+ if (this.open)
57
+ this.show();
58
+ }
59
+ /**
60
+ * Hides this loading indicator.
17
61
  * @param options Value indicating whether to force the loading indicator to hide.
18
62
  */
19
63
  hide(options = {}) {
@@ -22,14 +66,23 @@ export class LoadingIndicator extends HTMLElement {
22
66
  this.#requestCount = 0;
23
67
  this.classList.add("hide");
24
68
  this.classList.remove("show");
69
+ document.body.classList.remove("loading");
25
70
  }
26
71
  }
27
72
  /**
28
- * Shows the loading indicator.
73
+ * Shows this loading indicator.
29
74
  */
30
75
  show() {
31
76
  this.#requestCount++;
32
77
  this.classList.remove("hide");
33
78
  this.classList.add("show");
79
+ document.body.classList.add("loading");
80
+ }
81
+ /**
82
+ * Updates the value indicating whether to apply a transition.
83
+ * @param value The new value.
84
+ */
85
+ #updateFade(value) {
86
+ this.classList.toggle("fade", value);
34
87
  }
35
88
  }
@@ -3,6 +3,27 @@
3
3
  */
4
4
  export declare class OfflineIndicator extends HTMLElement {
5
5
  #private;
6
+ /**
7
+ * The list of observed attributes.
8
+ */
9
+ static readonly observedAttributes: string[];
10
+ /**
11
+ * Value indicating whether to apply a transition.
12
+ */
13
+ get fade(): boolean;
14
+ set fade(value: boolean);
15
+ /**
16
+ * Value indicating whether to initially show this component.
17
+ */
18
+ get open(): boolean;
19
+ set open(value: boolean);
20
+ /**
21
+ * Method invoked when an attribute has been changed.
22
+ * @param attribute The attribute name.
23
+ * @param oldValue The previous attribute value.
24
+ * @param newValue The new attribute value.
25
+ */
26
+ attributeChangedCallback(attribute: string, oldValue: string | null, newValue: string | null): void;
6
27
  /**
7
28
  * Method invoked when this component is connected.
8
29
  */
@@ -11,6 +32,14 @@ export declare class OfflineIndicator extends HTMLElement {
11
32
  * Method invoked when this component is disconnected.
12
33
  */
13
34
  disconnectedCallback(): void;
35
+ /**
36
+ * Hides this offline indicator.
37
+ */
38
+ hide(): void;
39
+ /**
40
+ * Shows this offline indicator.
41
+ */
42
+ show(): void;
14
43
  }
15
44
  /**
16
45
  * Declaration merging.
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineIndicator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/OfflineIndicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;IAShD;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAKzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAW5B;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
1
+ {"version":3,"file":"OfflineIndicator.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/OfflineIndicator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;;IAEhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAY;IAS9C;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAMzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,IAAI,IAAI,IAAI;CAoBZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
@@ -2,32 +2,95 @@
2
2
  * A component that shows up when the network is unavailable, and hides when connectivity is restored.
3
3
  */
4
4
  export class OfflineIndicator extends HTMLElement {
5
+ /**
6
+ * The list of observed attributes.
7
+ */
8
+ static observedAttributes = ["fade"];
5
9
  /**
6
10
  * Registers the component.
7
11
  */
8
12
  static {
9
13
  customElements.define("offline-indicator", this);
10
14
  }
15
+ /**
16
+ * Value indicating whether to apply a transition.
17
+ */
18
+ get fade() {
19
+ return this.hasAttribute("fade");
20
+ }
21
+ set fade(value) {
22
+ this.toggleAttribute("fade", value);
23
+ }
24
+ /**
25
+ * Value indicating whether to initially show this component.
26
+ */
27
+ get open() {
28
+ return this.hasAttribute("open");
29
+ }
30
+ set open(value) {
31
+ this.toggleAttribute("open", value);
32
+ }
33
+ /**
34
+ * Method invoked when an attribute has been changed.
35
+ * @param attribute The attribute name.
36
+ * @param oldValue The previous attribute value.
37
+ * @param newValue The new attribute value.
38
+ */
39
+ attributeChangedCallback(attribute, oldValue, newValue) {
40
+ if (newValue != oldValue)
41
+ switch (attribute) {
42
+ case "fade":
43
+ this.#updateFade(newValue != null);
44
+ break;
45
+ // No default
46
+ }
47
+ }
11
48
  /**
12
49
  * Method invoked when this component is connected.
13
50
  */
14
51
  connectedCallback() {
15
- this.#update();
16
52
  for (const event of ["online", "offline"])
17
- addEventListener(event, this.#update);
53
+ addEventListener(event, this.#updateVisibility);
54
+ if (this.open)
55
+ this.show();
56
+ else
57
+ this.#updateVisibility();
18
58
  }
19
59
  /**
20
60
  * Method invoked when this component is disconnected.
21
61
  */
22
62
  disconnectedCallback() {
23
63
  for (const event of ["online", "offline"])
24
- removeEventListener(event, this.#update);
64
+ removeEventListener(event, this.#updateVisibility);
65
+ }
66
+ /**
67
+ * Hides this offline indicator.
68
+ */
69
+ hide() {
70
+ this.classList.remove("show");
71
+ this.classList.add("hide");
72
+ }
73
+ /**
74
+ * Shows this offline indicator.
75
+ */
76
+ show() {
77
+ this.classList.remove("hide");
78
+ this.classList.add("show");
79
+ }
80
+ /**
81
+ * Updates the value indicating whether to apply a transition.
82
+ * @param value The new value.
83
+ */
84
+ #updateFade(value) {
85
+ this.classList.toggle("fade", value);
25
86
  }
26
87
  /**
27
- * Updates this component.
88
+ * Updates the visibility of this component.
28
89
  */
29
- #update = () => {
30
- this.classList.toggle("hide", navigator.onLine);
31
- this.classList.toggle("show", !navigator.onLine);
90
+ #updateVisibility = () => {
91
+ if (navigator.onLine)
92
+ this.hide();
93
+ else
94
+ this.show();
32
95
  };
33
96
  }
@@ -3,10 +3,6 @@ import { Context } from "../Context.js";
3
3
  * Represents a notification.
4
4
  */
5
5
  export interface IToast {
6
- /**
7
- * Value indicating whether to apply a fade transition.
8
- */
9
- animation?: boolean;
10
6
  /**
11
7
  * Value indicating whether to automatically hide the toast.
12
8
  */
@@ -14,7 +10,7 @@ export interface IToast {
14
10
  /**
15
11
  * The child content displayed in the body.
16
12
  */
17
- body: DocumentFragment | string;
13
+ body: DocumentFragment;
18
14
  /**
19
15
  * The title displayed in the header.
20
16
  */
@@ -31,6 +27,10 @@ export interface IToast {
31
27
  * The delay, in milliseconds, to hide the toast.
32
28
  */
33
29
  delay?: number;
30
+ /**
31
+ * Value indicating whether to apply a transition.
32
+ */
33
+ fade?: boolean;
34
34
  /**
35
35
  * The icon displayed next to the caption.
36
36
  */
@@ -45,11 +45,6 @@ export declare class Toast extends HTMLElement {
45
45
  * The list of observed attributes.
46
46
  */
47
47
  static readonly observedAttributes: string[];
48
- /**
49
- * Value indicating whether to apply a fade transition.
50
- */
51
- get animation(): boolean;
52
- set animation(value: boolean);
53
48
  /**
54
49
  * Value indicating whether to automatically hide this toast.
55
50
  */
@@ -83,13 +78,18 @@ export declare class Toast extends HTMLElement {
83
78
  * The time elapsed since this component was initially shown, in milliseconds.
84
79
  */
85
80
  get elapsedTime(): number;
81
+ /**
82
+ * Value indicating whether to apply a transition.
83
+ */
84
+ get fade(): boolean;
85
+ set fade(value: boolean);
86
86
  /**
87
87
  * The icon displayed next to the caption.
88
88
  */
89
89
  get icon(): string | null;
90
90
  set icon(value: string | null);
91
91
  /**
92
- * Value indicating whether to initially show this toast.
92
+ * Value indicating whether to initially show this component.
93
93
  */
94
94
  get open(): boolean;
95
95
  set open(value: boolean);
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toast.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAiB,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,gBAAgB,GAAC,MAAM,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,WAAW;;IAErC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAA+E;IAkCjH;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAE3B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAE/B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAa/F;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;OAEG;IACH,IAAI,IAAI,IAAI;CAwFZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,cAAc,EAAE,KAAK,CAAC;KACtB;CACD"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toast.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAiB,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,gBAAgB,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,WAAW;;IAErC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAA0E;IAkC5G;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAE/B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAExB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAa/F;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,IAAI;IASzB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;OAEG;IACH,IAAI,IAAI,IAAI;CAwFZ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,cAAc,EAAE,KAAK,CAAC;KACtB;CACD"}
@@ -7,7 +7,7 @@ export class Toast extends HTMLElement {
7
7
  /**
8
8
  * The list of observed attributes.
9
9
  */
10
- static observedAttributes = ["animation", "autohide", "caption", "context", "culture", "delay", "icon"];
10
+ static observedAttributes = ["autohide", "caption", "context", "culture", "delay", "fade", "icon"];
11
11
  /**
12
12
  * The time units.
13
13
  */
@@ -34,15 +34,6 @@ export class Toast extends HTMLElement {
34
34
  static {
35
35
  customElements.define("toaster-item", this);
36
36
  }
37
- /**
38
- * Value indicating whether to apply a fade transition.
39
- */
40
- get animation() {
41
- return this.hasAttribute("animation");
42
- }
43
- set animation(value) {
44
- this.toggleAttribute("animation", value);
45
- }
46
37
  /**
47
38
  * Value indicating whether to automatically hide this toast.
48
39
  */
@@ -103,6 +94,15 @@ export class Toast extends HTMLElement {
103
94
  get elapsedTime() {
104
95
  return Date.now() - this.#initialTime;
105
96
  }
97
+ /**
98
+ * Value indicating whether to apply a transition.
99
+ */
100
+ get fade() {
101
+ return this.hasAttribute("fade");
102
+ }
103
+ set fade(value) {
104
+ this.toggleAttribute("fade", value);
105
+ }
106
106
  /**
107
107
  * The icon displayed next to the caption.
108
108
  */
@@ -117,7 +117,7 @@ export class Toast extends HTMLElement {
117
117
  this.removeAttribute("icon");
118
118
  }
119
119
  /**
120
- * Value indicating whether to initially show this toast.
120
+ * Value indicating whether to initially show this component.
121
121
  */
122
122
  get open() {
123
123
  return this.hasAttribute("open");
@@ -134,9 +134,6 @@ export class Toast extends HTMLElement {
134
134
  attributeChangedCallback(attribute, oldValue, newValue) {
135
135
  if (newValue != oldValue)
136
136
  switch (attribute) {
137
- case "animation":
138
- this.#updateAnimation(newValue != null);
139
- break;
140
137
  case "autohide":
141
138
  this.#updateAutoHide(newValue != null);
142
139
  break;
@@ -152,6 +149,9 @@ export class Toast extends HTMLElement {
152
149
  case "delay":
153
150
  this.#updateDelay(Number(newValue));
154
151
  break;
152
+ case "fade":
153
+ this.#updateFade(newValue != null);
154
+ break;
155
155
  case "icon":
156
156
  this.#updateIcon(newValue);
157
157
  break;
@@ -205,13 +205,6 @@ export class Toast extends HTMLElement {
205
205
  }
206
206
  return this.#formatter.format(Math.ceil(-elapsed), Toast.#timeUnits[index]);
207
207
  }
208
- /**
209
- * Updates the value indicating whether to apply a fade transition.
210
- * @param value The new value.
211
- */
212
- #updateAnimation(value) {
213
- this.firstElementChild.dataset.bsAnimation = value ? "true" : "false";
214
- }
215
208
  /**
216
209
  * Updates the value indicating whether to automatically hide this toast.
217
210
  * @param value The new value.
@@ -254,6 +247,13 @@ export class Toast extends HTMLElement {
254
247
  const { elapsedTime } = this;
255
248
  this.querySelector(".toast-header small").textContent = elapsedTime > 0 ? this.#formatTime(elapsedTime / 1_000) : "";
256
249
  };
250
+ /**
251
+ * Updates the value indicating whether to apply a transition.
252
+ * @param value The new value.
253
+ */
254
+ #updateFade(value) {
255
+ this.firstElementChild.dataset.bsAnimation = value ? "true" : "false";
256
+ }
257
257
  /**
258
258
  * Updates the icon displayed next to the caption.
259
259
  * @param value The new value.
@@ -14,11 +14,6 @@ export declare class Toaster extends HTMLElement {
14
14
  * Creates a new toaster.
15
15
  */
16
16
  constructor();
17
- /**
18
- * Value indicating whether to apply a fade transition.
19
- */
20
- get animation(): boolean;
21
- set animation(value: boolean);
22
17
  /**
23
18
  * Value indicating whether to automatically hide the toasts.
24
19
  */
@@ -39,6 +34,11 @@ export declare class Toaster extends HTMLElement {
39
34
  */
40
35
  get delay(): number;
41
36
  set delay(value: number);
37
+ /**
38
+ * Value indicating whether to apply a transition.
39
+ */
40
+ get fade(): boolean;
41
+ set fade(value: boolean);
42
42
  /**
43
43
  * The default icon displayed next to the captions.
44
44
  */
@@ -62,7 +62,7 @@ export declare class Toaster extends HTMLElement {
62
62
  * @param caption The title displayed in the toast header.
63
63
  * @param body The child content displayed in the toast body.
64
64
  */
65
- show(context: Context, caption: string, body: DocumentFragment | string): void;
65
+ show(context: Context, caption: string, body: DocumentFragment): void;
66
66
  /**
67
67
  * Shows a toast.
68
68
  * @param toast The toast to show.
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,qBAAa,OAAQ,SAAQ,WAAW;;IAEvC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAgB;IAOlD;;OAEG;;IAaH;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAE3B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAGvB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAE3B;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAC,MAAM,GAAG,IAAI;IAE5E;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAsCzB;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,OAAO,CAAC;KAC7B;CACD"}
1
+ {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/Client/UI/Components/Toaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,qBAAa,OAAQ,SAAQ,WAAW;;IAEvC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,WAAgB;IAOlD;;OAEG;;IAaH;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAE1B;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAGzB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAE7B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAEtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAC,IAAI,CAGtB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAC,IAAI,EAG1B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAGvB;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAE3B;IAED;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAO/F;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAErE;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAsCzB;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,OAAO,CAAC;KAC7B;CACD"}
@@ -1,5 +1,4 @@
1
1
  import { Context } from "../Context.js";
2
- import { createDocumentFragment } from "../ElementExtensions.js";
3
2
  import { Position, toCss } from "../Position.js";
4
3
  /**
5
4
  * Manages the notifications.
@@ -27,15 +26,6 @@ export class Toaster extends HTMLElement {
27
26
  static {
28
27
  customElements.define("toaster-container", this);
29
28
  }
30
- /**
31
- * Value indicating whether to apply a fade transition.
32
- */
33
- get animation() {
34
- return this.hasAttribute("animation");
35
- }
36
- set animation(value) {
37
- this.toggleAttribute("animation", value);
38
- }
39
29
  /**
40
30
  * Value indicating whether to automatically hide the toasts.
41
31
  */
@@ -75,6 +65,15 @@ export class Toaster extends HTMLElement {
75
65
  set delay(value) {
76
66
  this.setAttribute("delay", value.toString());
77
67
  }
68
+ /**
69
+ * Value indicating whether to apply a transition.
70
+ */
71
+ get fade() {
72
+ return this.hasAttribute("fade");
73
+ }
74
+ set fade(value) {
75
+ this.toggleAttribute("fade", value);
76
+ }
78
77
  /**
79
78
  * The default icon displayed next to the captions.
80
79
  */
@@ -119,20 +118,20 @@ export class Toaster extends HTMLElement {
119
118
  * @param caption The title displayed in the toast header.
120
119
  * @param body The child content displayed in the toast body.
121
120
  */
122
- show(toast, caption = "", body = "") {
121
+ show(toast, caption = "", body = document.createDocumentFragment()) {
123
122
  if (typeof toast == "string")
124
123
  toast = { context: toast, caption, body };
125
124
  const item = document.createElement("toaster-item");
126
125
  const childContent = this.#toastTemplate.cloneNode(true).querySelector(".toast");
127
126
  childContent.addEventListener("hidden.bs.toast", () => item.remove());
128
127
  item.appendChild(childContent);
129
- item.animation = toast.animation ?? this.animation;
130
128
  item.autoHide = toast.autoHide ?? this.autoHide;
131
- item.body = typeof toast.body == "string" ? createDocumentFragment(toast.body) : toast.body;
129
+ item.body = toast.body;
132
130
  item.caption = toast.caption;
133
131
  item.context = toast.context ?? this.context;
134
132
  item.culture = toast.culture ?? this.culture;
135
133
  item.delay = toast.delay ?? this.delay;
134
+ item.fade = toast.fade ?? this.fade;
136
135
  item.icon = toast.icon ?? this.icon;
137
136
  this.firstElementChild.appendChild(item);
138
137
  item.show();
@@ -30,4 +30,4 @@ export declare function resetValidity(element: Element): void;
30
30
  * @param element The element to process.
31
31
  */
32
32
  export declare function trimControl(element: Element): void;
33
- //# sourceMappingURL=FormExtensions.d.ts.map
33
+ //# sourceMappingURL=Form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Client/UI/Form.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAC,iBAAiB,GAAC,mBAAmB,CAAC;AAEjF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,EAAE,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAC,IAAI,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,WAAW,CAEtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGpD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIlD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Creates a CSS stylesheet from the specified template literal.
3
+ * @param fragments The string fragments.
4
+ * @param values The interpolated values.
5
+ * @returns The CSS stylesheet corresponding to the specified template literal.
6
+ */
7
+ export declare function css(fragments: TemplateStringsArray, ...values: unknown[]): CSSStyleSheet;
8
+ /**
9
+ * Creates a document fragment from the specified template literal.
10
+ * @param fragments The string fragments.
11
+ * @param values The interpolated values.
12
+ * @returns The document fragment corresponding to the specified template literal.
13
+ */
14
+ export declare function html(fragments: TemplateStringsArray, ...values: unknown[]): DocumentFragment;
15
+ //# sourceMappingURL=Tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../src/Client/UI/Tag.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAQxF;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAK5F"}
package/lib/UI/Tag.js ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Creates a CSS stylesheet from the specified template literal.
3
+ * @param fragments The string fragments.
4
+ * @param values The interpolated values.
5
+ * @returns The CSS stylesheet corresponding to the specified template literal.
6
+ */
7
+ export function css(fragments, ...values) {
8
+ const styleSheet = new CSSStyleSheet;
9
+ styleSheet.replaceSync(fragments.length == 1 ? fragments[0] : values.reduce((fragment, value, index) => fragment + stringFromCss(value) + fragments[index + 1], fragments[0]));
10
+ return styleSheet;
11
+ }
12
+ /**
13
+ * Creates a document fragment from the specified template literal.
14
+ * @param fragments The string fragments.
15
+ * @param values The interpolated values.
16
+ * @returns The document fragment corresponding to the specified template literal.
17
+ */
18
+ export function html(fragments, ...values) {
19
+ return document.createRange().createContextualFragment(fragments.length == 1 ? fragments[0] : values.reduce((fragment, value, index) => fragment + stringFromHtml(value) + fragments[index + 1], fragments[0]));
20
+ }
21
+ /**
22
+ * Converts the specified value to a CSS string.
23
+ * @param value A value representing a CSS fragment.
24
+ * @returns The CSS string corresponding to the specified value.
25
+ */
26
+ function stringFromCss(value) {
27
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
28
+ if (!(value instanceof CSSStyleSheet))
29
+ return value === null || typeof value == "undefined" ? "" : String(value);
30
+ return Array.from(value.cssRules).map(cssRule => cssRule.cssText).join("\n");
31
+ }
32
+ /**
33
+ * Converts the specified value to an HTML string.
34
+ * @param value A value representing an HTML fragment.
35
+ * @returns The HTML string corresponding to the specified value.
36
+ */
37
+ function stringFromHtml(value) {
38
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
39
+ if (!(value instanceof DocumentFragment))
40
+ return value === null || typeof value == "undefined" ? "" : String(value);
41
+ const element = document.createElement("div");
42
+ element.appendChild(value);
43
+ return element.innerHTML;
44
+ }
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "name": "@cedx/base",
8
8
  "repository": "cedx/base",
9
9
  "type": "module",
10
- "version": "0.19.0",
10
+ "version": "0.21.0",
11
11
  "devDependencies": {
12
12
  "@playwright/browser-chromium": "^1.55.0",
13
13
  "@types/bootstrap": "^5.2.10",