@cedx/base 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/License.md +20 -0
  2. package/ReadMe.md +21 -0
  3. package/lib/Abstractions/ILoadingIndicator.d.ts +17 -0
  4. package/lib/Abstractions/ILoadingIndicator.d.ts.map +1 -0
  5. package/lib/Abstractions/ILoadingIndicator.js +1 -0
  6. package/lib/DependencyInjection/Container.d.ts +43 -0
  7. package/lib/DependencyInjection/Container.d.ts.map +1 -0
  8. package/lib/DependencyInjection/Container.js +65 -0
  9. package/lib/Html/AppTheme.d.ts +34 -0
  10. package/lib/Html/AppTheme.d.ts.map +1 -0
  11. package/lib/Html/AppTheme.js +41 -0
  12. package/lib/Html/MenuAlignment.d.ts +18 -0
  13. package/lib/Html/MenuAlignment.d.ts.map +1 -0
  14. package/lib/Html/MenuAlignment.js +13 -0
  15. package/lib/Html/ViewportScroller.d.ts +49 -0
  16. package/lib/Html/ViewportScroller.d.ts.map +1 -0
  17. package/lib/Html/ViewportScroller.js +69 -0
  18. package/lib/Http/HttpClient.d.ts +68 -0
  19. package/lib/Http/HttpClient.d.ts.map +1 -0
  20. package/lib/Http/HttpClient.js +102 -0
  21. package/lib/Http/HttpError.d.ts +33 -0
  22. package/lib/Http/HttpError.d.ts.map +1 -0
  23. package/lib/Http/HttpError.js +66 -0
  24. package/lib/Http/StatusCodes.d.ts +114 -0
  25. package/lib/Http/StatusCodes.d.ts.map +1 -0
  26. package/lib/Http/StatusCodes.js +109 -0
  27. package/lib/Number.d.ts +8 -0
  28. package/lib/Number.d.ts.map +1 -0
  29. package/lib/Number.js +10 -0
  30. package/lib/UI/LoadingIndicator.d.ts +40 -0
  31. package/lib/UI/LoadingIndicator.d.ts.map +1 -0
  32. package/lib/UI/LoadingIndicator.js +50 -0
  33. package/lib/UI/OfflineIndicator.d.ts +39 -0
  34. package/lib/UI/OfflineIndicator.d.ts.map +1 -0
  35. package/lib/UI/OfflineIndicator.js +48 -0
  36. package/lib/UI/ThemeDropdown.d.ts +68 -0
  37. package/lib/UI/ThemeDropdown.d.ts.map +1 -0
  38. package/lib/UI/ThemeDropdown.js +123 -0
  39. package/package.json +59 -0
  40. package/src/Client/Abstractions/ILoadingIndicator.ts +16 -0
  41. package/src/Client/Abstractions/tsconfig.json +13 -0
  42. package/src/Client/Base/tsconfig.json +13 -0
  43. package/src/Client/DependencyInjection/Container.ts +75 -0
  44. package/src/Client/DependencyInjection/tsconfig.json +13 -0
  45. package/src/Client/Html/AppTheme.ts +51 -0
  46. package/src/Client/Html/MenuAlignment.ts +20 -0
  47. package/src/Client/Html/ViewportScroller.ts +89 -0
  48. package/src/Client/Html/tsconfig.json +13 -0
  49. package/src/Client/Http/HttpClient.ts +127 -0
  50. package/src/Client/Http/HttpError.ts +75 -0
  51. package/src/Client/Http/StatusCodes.ts +140 -0
  52. package/src/Client/Http/tsconfig.json +16 -0
  53. package/src/Client/Number.ts +10 -0
  54. package/src/Client/UI/LoadingIndicator.ts +66 -0
  55. package/src/Client/UI/OfflineIndicator.ts +61 -0
  56. package/src/Client/UI/ThemeDropdown.ts +134 -0
  57. package/src/Client/UI/tsconfig.json +19 -0
  58. package/src/Client/tsconfig.json +11 -0
@@ -0,0 +1,66 @@
1
+ import { StatusCodes } from "./StatusCodes.js";
2
+ /**
3
+ * An object thrown when an HTTP error occurs.
4
+ */
5
+ export class HttpError extends globalThis.Error {
6
+ /**
7
+ * The validation errors.
8
+ */
9
+ #validationErrors = null;
10
+ /**
11
+ * Creates a new HTTP error.
12
+ * @param response The server response.
13
+ */
14
+ constructor(response) {
15
+ super(`${response.status} ${response.statusText}`, { cause: response });
16
+ this.name = "HttpError";
17
+ }
18
+ /**
19
+ * The server response.
20
+ */
21
+ get cause() {
22
+ return super.cause;
23
+ }
24
+ /**
25
+ * Value indicating whether the response's status code is between 400 and 499.
26
+ */
27
+ get isClientError() {
28
+ const { status } = this;
29
+ return status >= 400 && status < 500;
30
+ }
31
+ /**
32
+ * Value indicating whether the response's status code is between 500 and 599.
33
+ */
34
+ get isServerError() {
35
+ const { status } = this;
36
+ return status >= 500 && status < 600;
37
+ }
38
+ /**
39
+ * The response's status code.
40
+ */
41
+ get status() {
42
+ return this.cause.status;
43
+ }
44
+ /**
45
+ * The validation errors.
46
+ */
47
+ get validationErrors() {
48
+ return this.#validationErrors
49
+ ? Promise.resolve(this.#validationErrors)
50
+ : this.#parseValidationErrors().then(errors => this.#validationErrors = errors);
51
+ }
52
+ /**
53
+ * Parses the validation errors returned in the body of the specified response.
54
+ * @returns The validation errors provided by the response body.
55
+ */
56
+ async #parseValidationErrors() {
57
+ try {
58
+ const statuses = new Set([StatusCodes.BadRequest, StatusCodes.UnprocessableContent]);
59
+ const ignoreBody = this.cause.bodyUsed || !statuses.has(this.status);
60
+ return new Map(ignoreBody ? [] : Object.entries(await this.cause.json()));
61
+ }
62
+ catch {
63
+ return new Map;
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Provides common HTTP status codes.
3
+ */
4
+ export declare const StatusCodes: Readonly<{
5
+ /**
6
+ * The `OK` status.
7
+ */
8
+ OK: 200;
9
+ /**
10
+ * The `Created` status.
11
+ */
12
+ Created: 201;
13
+ /**
14
+ * The `No Content` status.
15
+ */
16
+ NoContent: 204;
17
+ /**
18
+ * The `Moved Permanently` status.
19
+ */
20
+ MovedPermanently: 301;
21
+ /**
22
+ * The `Found` status.
23
+ */
24
+ Found: 302;
25
+ /**
26
+ * The `Not Modified` status.
27
+ */
28
+ NotModified: 304;
29
+ /**
30
+ * The `Bad Request` status.
31
+ */
32
+ BadRequest: 400;
33
+ /**
34
+ * The `Unauthorized` status.
35
+ */
36
+ Unauthorized: 401;
37
+ /**
38
+ * The `Payment Required` status.
39
+ */
40
+ PaymentRequired: 402;
41
+ /**
42
+ * The `Forbidden` status.
43
+ */
44
+ Forbidden: 403;
45
+ /**
46
+ * The `Not Found` status.
47
+ */
48
+ NotFound: 404;
49
+ /**
50
+ * The `Method Not Allowed` status.
51
+ */
52
+ MethodNotAllowed: 405;
53
+ /**
54
+ * The `Not Acceptable` status.
55
+ */
56
+ NotAcceptable: 406;
57
+ /**
58
+ * The `Request Timeout` status.
59
+ */
60
+ RequestTimeout: 408;
61
+ /**
62
+ * The `Conflict` status.
63
+ */
64
+ Conflict: 409;
65
+ /**
66
+ * The `Payload Too Large` status.
67
+ */
68
+ PayloadTooLarge: 413;
69
+ /**
70
+ * The `Unsupported Media Type` status.
71
+ */
72
+ UnsupportedMediaType: 415;
73
+ /**
74
+ * The `Page Expired` status.
75
+ */
76
+ PageExpired: 419;
77
+ /**
78
+ * The `Unprocessable Content` status.
79
+ */
80
+ UnprocessableContent: 422;
81
+ /**
82
+ * The `Too Many Requests` status.
83
+ */
84
+ TooManyRequests: 429;
85
+ /**
86
+ * The `Internal Server Error` status.
87
+ */
88
+ InternalServerError: 500;
89
+ /**
90
+ * The `Not Implemented` status.
91
+ */
92
+ NotImplemented: 501;
93
+ /**
94
+ * The `Bad Gateway` status.
95
+ */
96
+ BadGateway: 502;
97
+ /**
98
+ * The `Service Unavailable` status.
99
+ */
100
+ ServiceUnavailable: 503;
101
+ /**
102
+ * The `Gateway Timeout` status.
103
+ */
104
+ GatewayTimeout: 504;
105
+ /**
106
+ * The `Bandwidth Limit Exceeded` status
107
+ */
108
+ BandwidthLimitExceeded: 509;
109
+ }>;
110
+ /**
111
+ * Provides common HTTP status codes.
112
+ */
113
+ export type StatusCodes = typeof StatusCodes[keyof typeof StatusCodes];
114
+ //# sourceMappingURL=StatusCodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusCodes.d.ts","sourceRoot":"","sources":["../../src/Client/Http/StatusCodes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW;IAEvB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;EAEF,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Provides common HTTP status codes.
3
+ */
4
+ export const StatusCodes = Object.freeze({
5
+ /**
6
+ * The `OK` status.
7
+ */
8
+ OK: 200,
9
+ /**
10
+ * The `Created` status.
11
+ */
12
+ Created: 201,
13
+ /**
14
+ * The `No Content` status.
15
+ */
16
+ NoContent: 204,
17
+ /**
18
+ * The `Moved Permanently` status.
19
+ */
20
+ MovedPermanently: 301,
21
+ /**
22
+ * The `Found` status.
23
+ */
24
+ Found: 302,
25
+ /**
26
+ * The `Not Modified` status.
27
+ */
28
+ NotModified: 304,
29
+ /**
30
+ * The `Bad Request` status.
31
+ */
32
+ BadRequest: 400,
33
+ /**
34
+ * The `Unauthorized` status.
35
+ */
36
+ Unauthorized: 401,
37
+ /**
38
+ * The `Payment Required` status.
39
+ */
40
+ PaymentRequired: 402,
41
+ /**
42
+ * The `Forbidden` status.
43
+ */
44
+ Forbidden: 403,
45
+ /**
46
+ * The `Not Found` status.
47
+ */
48
+ NotFound: 404,
49
+ /**
50
+ * The `Method Not Allowed` status.
51
+ */
52
+ MethodNotAllowed: 405,
53
+ /**
54
+ * The `Not Acceptable` status.
55
+ */
56
+ NotAcceptable: 406,
57
+ /**
58
+ * The `Request Timeout` status.
59
+ */
60
+ RequestTimeout: 408,
61
+ /**
62
+ * The `Conflict` status.
63
+ */
64
+ Conflict: 409,
65
+ /**
66
+ * The `Payload Too Large` status.
67
+ */
68
+ PayloadTooLarge: 413,
69
+ /**
70
+ * The `Unsupported Media Type` status.
71
+ */
72
+ UnsupportedMediaType: 415,
73
+ /**
74
+ * The `Page Expired` status.
75
+ */
76
+ PageExpired: 419,
77
+ /**
78
+ * The `Unprocessable Content` status.
79
+ */
80
+ UnprocessableContent: 422,
81
+ /**
82
+ * The `Too Many Requests` status.
83
+ */
84
+ TooManyRequests: 429,
85
+ /**
86
+ * The `Internal Server Error` status.
87
+ */
88
+ InternalServerError: 500,
89
+ /**
90
+ * The `Not Implemented` status.
91
+ */
92
+ NotImplemented: 501,
93
+ /**
94
+ * The `Bad Gateway` status.
95
+ */
96
+ BadGateway: 502,
97
+ /**
98
+ * The `Service Unavailable` status.
99
+ */
100
+ ServiceUnavailable: 503,
101
+ /**
102
+ * The `Gateway Timeout` status.
103
+ */
104
+ GatewayTimeout: 504,
105
+ /**
106
+ * The `Bandwidth Limit Exceeded` status
107
+ */
108
+ BandwidthLimitExceeded: 509
109
+ });
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Rounds a floating-point number.
3
+ * @param value The value to round.
4
+ * @param precision The optional number of decimal digits to round to.
5
+ * @returns The value rounded to the given precision.
6
+ */
7
+ export declare function round(value: number, precision?: number): number;
8
+ //# sourceMappingURL=Number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Number.d.ts","sourceRoot":"","sources":["../src/Client/Number.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM,CAG1D"}
package/lib/Number.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Rounds a floating-point number.
3
+ * @param value The value to round.
4
+ * @param precision The optional number of decimal digits to round to.
5
+ * @returns The value rounded to the given precision.
6
+ */
7
+ export function round(value, precision = 0) {
8
+ const operand = 10 ** precision;
9
+ return Math.round(value * operand) / operand;
10
+ }
@@ -0,0 +1,40 @@
1
+ import type { ILoadingIndicator } from "#Abstractions/ILoadingIndicator.js";
2
+ import { LitElement, type TemplateResult } from "lit";
3
+ /**
4
+ * A component that shows up when an HTTP request starts, and hides when all concurrent HTTP requests are completed.
5
+ */
6
+ export declare class LoadingIndicator extends LitElement implements ILoadingIndicator {
7
+ #private;
8
+ /**
9
+ * Creates a new loading indicator.
10
+ */
11
+ constructor();
12
+ /**
13
+ * Starts the loading indicator.
14
+ */
15
+ start(): void;
16
+ /**
17
+ * Stops the loading indicator.
18
+ * @param options Value indicating whether to force the loading indicator to stop.
19
+ */
20
+ stop(options?: {
21
+ force?: boolean;
22
+ }): void;
23
+ /**
24
+ * Renders this component.
25
+ * @returns The view template.
26
+ */
27
+ protected render(): TemplateResult;
28
+ }
29
+ /**
30
+ * Declaration merging.
31
+ */
32
+ declare global {
33
+ /**
34
+ * The map of HTML tag names.
35
+ */
36
+ interface HTMLElementTagNameMap {
37
+ "loading-indicator": LoadingIndicator;
38
+ }
39
+ }
40
+ //# sourceMappingURL=LoadingIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../src/Client/UI/LoadingIndicator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAO,UAAU,EAAE,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAG1D;;GAEG;AACH,qBACa,gBAAiB,SAAQ,UAAW,YAAW,iBAAiB;;IAO5E;;OAEG;;IAMH;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,IAAI,CAAC,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,IAAI;IAS3C;;;OAGG;cACgB,MAAM,IAAI,cAAc;CAG3C;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
@@ -0,0 +1,50 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from "lit";
3
+ import { customElement } from "lit/decorators.js";
4
+ /**
5
+ * A component that shows up when an HTTP request starts, and hides when all concurrent HTTP requests are completed.
6
+ */
7
+ let LoadingIndicator = class LoadingIndicator extends LitElement {
8
+ /**
9
+ * The number of concurrent HTTP requests.
10
+ */
11
+ #requestCount = 0;
12
+ /**
13
+ * Creates a new loading indicator.
14
+ */
15
+ constructor() {
16
+ super();
17
+ this.hidden = true;
18
+ }
19
+ /**
20
+ * Starts the loading indicator.
21
+ */
22
+ start() {
23
+ this.#requestCount++;
24
+ this.hidden = false;
25
+ document.body.classList.add("loading");
26
+ }
27
+ /**
28
+ * Stops the loading indicator.
29
+ * @param options Value indicating whether to force the loading indicator to stop.
30
+ */
31
+ stop(options = {}) {
32
+ this.#requestCount--;
33
+ if (options.force || this.#requestCount <= 0) {
34
+ this.#requestCount = 0;
35
+ this.hidden = true;
36
+ document.body.classList.remove("loading");
37
+ }
38
+ }
39
+ /**
40
+ * Renders this component.
41
+ * @returns The view template.
42
+ */
43
+ render() {
44
+ return html `<slot></slot>`;
45
+ }
46
+ };
47
+ LoadingIndicator = __decorate([
48
+ customElement("loading-indicator")
49
+ ], LoadingIndicator);
50
+ export { LoadingIndicator };
@@ -0,0 +1,39 @@
1
+ import { LitElement, type TemplateResult } from "lit";
2
+ /**
3
+ * A component that shows up when the network is unavailable, and hides when connectivity is restored.
4
+ */
5
+ export declare class OfflineIndicator extends LitElement {
6
+ /**
7
+ * Creates a new offline indicator.
8
+ */
9
+ constructor();
10
+ /**
11
+ * Method invoked when this component is connected.
12
+ */
13
+ connectedCallback(): void;
14
+ /**
15
+ * Method invoked when this component is disconnected.
16
+ */
17
+ disconnectedCallback(): void;
18
+ /**
19
+ * Handles the events.
20
+ */
21
+ handleEvent(): void;
22
+ /**
23
+ * Renders this component.
24
+ * @returns The view template.
25
+ */
26
+ protected render(): TemplateResult;
27
+ }
28
+ /**
29
+ * Declaration merging.
30
+ */
31
+ declare global {
32
+ /**
33
+ * The map of HTML tag names.
34
+ */
35
+ interface HTMLElementTagNameMap {
36
+ "offline-indicator": OfflineIndicator;
37
+ }
38
+ }
39
+ //# sourceMappingURL=OfflineIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OfflineIndicator.d.ts","sourceRoot":"","sources":["../../src/Client/UI/OfflineIndicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAE,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAG1D;;GAEG;AACH,qBACa,gBAAiB,SAAQ,UAAU;IAE/C;;OAEG;;IAMH;;OAEG;IACM,iBAAiB,IAAI,IAAI;IAKlC;;OAEG;IACM,oBAAoB,IAAI,IAAI;IAKrC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;OAGG;cACgB,MAAM,IAAI,cAAc;CAG3C;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,gBAAgB,CAAC;KACtC;CACD"}
@@ -0,0 +1,48 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from "lit";
3
+ import { customElement } from "lit/decorators.js";
4
+ /**
5
+ * A component that shows up when the network is unavailable, and hides when connectivity is restored.
6
+ */
7
+ let OfflineIndicator = class OfflineIndicator extends LitElement {
8
+ /**
9
+ * Creates a new offline indicator.
10
+ */
11
+ constructor() {
12
+ super();
13
+ this.hidden = navigator.onLine;
14
+ }
15
+ /**
16
+ * Method invoked when this component is connected.
17
+ */
18
+ connectedCallback() {
19
+ super.connectedCallback();
20
+ for (const event of ["online", "offline"])
21
+ addEventListener(event, this);
22
+ }
23
+ /**
24
+ * Method invoked when this component is disconnected.
25
+ */
26
+ disconnectedCallback() {
27
+ for (const event of ["online", "offline"])
28
+ removeEventListener(event, this);
29
+ super.disconnectedCallback();
30
+ }
31
+ /**
32
+ * Handles the events.
33
+ */
34
+ handleEvent() {
35
+ this.hidden = navigator.onLine;
36
+ }
37
+ /**
38
+ * Renders this component.
39
+ * @returns The view template.
40
+ */
41
+ render() {
42
+ return html `<slot></slot>`;
43
+ }
44
+ };
45
+ OfflineIndicator = __decorate([
46
+ customElement("offline-indicator")
47
+ ], OfflineIndicator);
48
+ export { OfflineIndicator };
@@ -0,0 +1,68 @@
1
+ import { AppTheme } from "#Html/AppTheme.js";
2
+ import { MenuAlignment } from "#Html/MenuAlignment.js";
3
+ import { LitElement, type TemplateResult } from "lit";
4
+ /**
5
+ * A dropdown menu for switching the color mode.
6
+ */
7
+ export declare class ThemeDropdown extends LitElement {
8
+ #private;
9
+ /**
10
+ * The alignment of the dropdown menu.
11
+ */
12
+ alignment: MenuAlignment;
13
+ /**
14
+ * The label of the dropdown menu.
15
+ */
16
+ label: string;
17
+ /**
18
+ * The key of the storage entry providing the saved theme.
19
+ */
20
+ storageKey: string;
21
+ /**
22
+ * The current application theme.
23
+ */
24
+ private appTheme;
25
+ /**
26
+ * Creates a new theme dropdown.
27
+ */
28
+ constructor();
29
+ /**
30
+ * The current theme mode.
31
+ */
32
+ get theme(): AppTheme;
33
+ set theme(value: AppTheme);
34
+ /**
35
+ * Method invoked when this component is connected.
36
+ */
37
+ connectedCallback(): void;
38
+ /**
39
+ * Method invoked when this component is disconnected.
40
+ */
41
+ disconnectedCallback(): void;
42
+ /**
43
+ * Handles the events.
44
+ */
45
+ handleEvent(): void;
46
+ /**
47
+ * Returns the node into which this component should render.
48
+ * @returns The node into which this component should render.
49
+ */
50
+ protected createRenderRoot(): DocumentFragment | HTMLElement;
51
+ /**
52
+ * Renders this component.
53
+ * @returns The view template.
54
+ */
55
+ protected render(): TemplateResult;
56
+ }
57
+ /**
58
+ * Declaration merging.
59
+ */
60
+ declare global {
61
+ /**
62
+ * The map of HTML tag names.
63
+ */
64
+ interface HTMLElementTagNameMap {
65
+ "theme-dropdown": ThemeDropdown;
66
+ }
67
+ }
68
+ //# sourceMappingURL=ThemeDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeDropdown.d.ts","sourceRoot":"","sources":["../../src/Client/UI/ThemeDropdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAwB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAO,UAAU,EAAE,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAK1D;;GAEG;AACH,qBACa,aAAc,SAAQ,UAAU;;IAE5C;;OAEG;IACS,SAAS,EAAE,aAAa,CAAqB;IAEzD;;OAEG;IACS,KAAK,SAAM;IAEvB;;OAEG;IACS,UAAU,SAAc;IAEpC;;OAEG;IACM,OAAO,CAAC,QAAQ,CAAW;IAOpC;;OAEG;;IAOH;;OAEG;IACH,IAAI,KAAK,IAAI,QAAQ,CAA0B;IAC/C,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAGxB;IAED;;OAEG;IACM,iBAAiB,IAAI,IAAI;IAMlC;;OAEG;IACM,oBAAoB,IAAI,IAAI;IAKrC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;OAGG;cACgB,gBAAgB,IAAI,gBAAgB,GAAC,WAAW;IAInE;;;OAGG;cACgB,MAAM,IAAI,cAAc;CA4B3C;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,aAAa,CAAC;KAChC;CACD"}