@santi020k/lumen-elements 3.0.1 → 4.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 (66) hide show
  1. package/README.md +518 -5
  2. package/dist/bullet-chart-html.d.ts +5 -0
  3. package/dist/bullet-chart-html.d.ts.map +1 -0
  4. package/dist/bullet-chart-html.js +56 -0
  5. package/dist/chart-activation.d.ts +15 -0
  6. package/dist/chart-activation.d.ts.map +1 -0
  7. package/dist/chart-activation.js +93 -0
  8. package/dist/chart-html.d.ts +22 -0
  9. package/dist/chart-html.d.ts.map +1 -0
  10. package/dist/chart-html.js +1 -0
  11. package/dist/comparison-chart-html.d.ts +4 -0
  12. package/dist/comparison-chart-html.d.ts.map +1 -0
  13. package/dist/comparison-chart-html.js +36 -0
  14. package/dist/components/ai-surfaces.d.ts +115 -0
  15. package/dist/components/ai-surfaces.d.ts.map +1 -0
  16. package/dist/components/ai-surfaces.js +270 -0
  17. package/dist/components/button.d.ts +55 -2
  18. package/dist/components/button.d.ts.map +1 -1
  19. package/dist/components/button.js +110 -2
  20. package/dist/components/card.d.ts +6 -0
  21. package/dist/components/card.d.ts.map +1 -1
  22. package/dist/components/card.js +6 -1
  23. package/dist/components/combobox.d.ts +1 -2
  24. package/dist/components/combobox.d.ts.map +1 -1
  25. package/dist/components/combobox.js +27 -121
  26. package/dist/components/dashboard.d.ts +41 -0
  27. package/dist/components/dashboard.d.ts.map +1 -0
  28. package/dist/components/dashboard.js +88 -0
  29. package/dist/components/device-frame.d.ts +31 -0
  30. package/dist/components/device-frame.d.ts.map +1 -0
  31. package/dist/components/device-frame.js +95 -0
  32. package/dist/components/foundations.d.ts +58 -18
  33. package/dist/components/foundations.d.ts.map +1 -1
  34. package/dist/components/foundations.js +160 -9
  35. package/dist/components/image-comparison.d.ts +33 -0
  36. package/dist/components/image-comparison.d.ts.map +1 -0
  37. package/dist/components/image-comparison.js +144 -0
  38. package/dist/components/media-selection.d.ts +41 -0
  39. package/dist/components/media-selection.d.ts.map +1 -0
  40. package/dist/components/media-selection.js +114 -0
  41. package/dist/components/media-viewport.d.ts +30 -0
  42. package/dist/components/media-viewport.d.ts.map +1 -0
  43. package/dist/components/media-viewport.js +108 -0
  44. package/dist/components/virtual-list.d.ts +38 -0
  45. package/dist/components/virtual-list.d.ts.map +1 -0
  46. package/dist/components/virtual-list.js +30 -0
  47. package/dist/components/visual-interactions.d.ts +65 -0
  48. package/dist/components/visual-interactions.d.ts.map +1 -0
  49. package/dist/components/visual-interactions.js +91 -0
  50. package/dist/components/world-map.d.ts +46 -0
  51. package/dist/components/world-map.d.ts.map +1 -0
  52. package/dist/components/world-map.js +312 -0
  53. package/dist/consumer-behaviors.d.ts +36 -0
  54. package/dist/consumer-behaviors.d.ts.map +1 -0
  55. package/dist/consumer-behaviors.js +1 -0
  56. package/dist/define.d.ts +229 -6
  57. package/dist/define.d.ts.map +1 -1
  58. package/dist/define.js +1 -1
  59. package/dist/element-base.js +1 -1
  60. package/dist/expanded-chart-html.d.ts +9 -0
  61. package/dist/expanded-chart-html.d.ts.map +1 -0
  62. package/dist/expanded-chart-html.js +61 -0
  63. package/dist/index.d.ts +2 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/package.json +34 -6
  66. package/styles/critical.css +696 -66
@@ -0,0 +1,108 @@
1
+ import { bindLumenMediaViewport, lumenMediaViewportActions, lumenMediaViewportLabels, syncLumenMediaViewport } from '@santi020k/lumen-core/media-viewport';
2
+ import { normalizeLumenMediaViewport } from '@santi020k/lumen-core/media-workspace';
3
+ import { defineLumenElement, LumenElement } from '../element-base.js';
4
+ export const lumenMediaViewportElementConfig = {
5
+ baseClassName: 'ui-media-viewport',
6
+ observedAttributes: ['label', 'disabled', 'max-zoom', 'zoom', 'pan-x', 'pan-y', 'ratio', 'locale', 'lang'],
7
+ tagName: 'lumen-media-viewport'
8
+ };
9
+ export class LumenMediaViewportElement extends LumenElement {
10
+ static config = lumenMediaViewportElementConfig;
11
+ cleanup;
12
+ stage;
13
+ copy = lumenMediaViewportLabels;
14
+ get value() {
15
+ return normalizeLumenMediaViewport({ zoom: Number(this.getAttribute('zoom') ?? 1), x: Number(this.getAttribute('pan-x') ?? 0), y: Number(this.getAttribute('pan-y') ?? 0) }, this.maxZoom);
16
+ }
17
+ set value(value) {
18
+ const next = normalizeLumenMediaViewport(value, this.maxZoom);
19
+ this.setAttribute('zoom', String(next.zoom));
20
+ this.setAttribute('pan-x', String(next.x));
21
+ this.setAttribute('pan-y', String(next.y));
22
+ }
23
+ set labels(value) {
24
+ this.copy = { ...lumenMediaViewportLabels, ...value };
25
+ this.update();
26
+ }
27
+ get maxZoom() {
28
+ return Number(this.getAttribute('max-zoom') ?? 4);
29
+ }
30
+ connectedCallback() {
31
+ super.connectedCallback();
32
+ if (!this.stage)
33
+ this.createContent();
34
+ this.cleanup?.();
35
+ this.cleanup = bindLumenMediaViewport(this, {
36
+ disabled: () => this.hasAttribute('disabled'),
37
+ getValue: () => this.value,
38
+ maxZoom: () => this.maxZoom,
39
+ onValueChange: value => {
40
+ this.value = value;
41
+ this.dispatchEvent(new CustomEvent('ui:media-viewport-change', { bubbles: true, detail: value }));
42
+ }
43
+ });
44
+ this.update();
45
+ }
46
+ disconnectedCallback() {
47
+ this.cleanup?.();
48
+ this.cleanup = undefined;
49
+ }
50
+ attributeChangedCallback() {
51
+ super.attributeChangedCallback();
52
+ this.update();
53
+ }
54
+ createContent() {
55
+ const stage = this.ownerDocument.createElement('div');
56
+ const content = this.ownerDocument.createElement('div');
57
+ const caption = this.ownerDocument.createElement('div');
58
+ const status = this.ownerDocument.createElement('span');
59
+ const actions = this.ownerDocument.createElement('div');
60
+ stage.className = 'ui-media-viewport__stage';
61
+ stage.dataset.uiMediaViewportStage = '';
62
+ stage.tabIndex = 0;
63
+ stage.setAttribute('role', 'group');
64
+ content.className = 'ui-media-viewport__content';
65
+ content.dataset.uiMediaViewportContent = '';
66
+ content.append(...this.childNodes);
67
+ stage.append(content);
68
+ status.dataset.uiMediaViewportStatus = '';
69
+ status.id = `media-viewport-${crypto.randomUUID()}`;
70
+ status.setAttribute('role', 'status');
71
+ status.setAttribute('aria-live', 'polite');
72
+ stage.setAttribute('aria-describedby', status.id);
73
+ actions.className = 'ui-media-viewport__actions';
74
+ actions.setAttribute('role', 'group');
75
+ for (const action of lumenMediaViewportActions) {
76
+ const button = this.ownerDocument.createElement('button');
77
+ button.type = 'button';
78
+ button.className = 'ui-button ui-button--outline';
79
+ button.dataset.uiMediaViewportAction = action;
80
+ actions.append(button);
81
+ }
82
+ caption.className = 'ui-media-viewport__caption';
83
+ caption.append(status, actions);
84
+ this.append(stage, caption);
85
+ this.stage = stage;
86
+ }
87
+ get locale() {
88
+ return this.getAttribute('locale') ?? this.closest('[lang]')?.getAttribute('lang') ?? undefined;
89
+ }
90
+ update() {
91
+ if (!this.stage)
92
+ return;
93
+ const ratio = Number(this.getAttribute('ratio') ?? 16 / 9);
94
+ const label = this.getAttribute('label') ?? 'Media preview';
95
+ this.stage.style.aspectRatio = String(Number.isFinite(ratio) && ratio >= 0.1 && ratio <= 10 ? ratio : 16 / 9);
96
+ this.stage.setAttribute('aria-label', label);
97
+ this.querySelector('.ui-media-viewport__actions')?.setAttribute('aria-label', label);
98
+ for (const [index, action] of lumenMediaViewportActions.entries()) {
99
+ const button = this.querySelectorAll('button[data-ui-media-viewport-action]')[index];
100
+ if (button)
101
+ button.textContent = this.copy[action];
102
+ }
103
+ syncLumenMediaViewport(this, this.value, this.maxZoom, this.hasAttribute('disabled'), this.locale);
104
+ }
105
+ }
106
+ export const defineLumenMediaViewport = (registry) => {
107
+ defineLumenElement(lumenMediaViewportElementConfig, LumenMediaViewportElement, registry);
108
+ };
@@ -0,0 +1,38 @@
1
+ import { type LumenCustomElementRegistry, LumenElement } from '../element-base.js';
2
+ export declare const lumenVirtualListElementConfig: {
3
+ readonly attributeClasses: {
4
+ readonly glass: {
5
+ readonly true: "ui-virtual-list--glass";
6
+ readonly subtle: "ui-virtual-list--glass ui-glass-subtle";
7
+ readonly strong: "ui-virtual-list--glass ui-glass-strong";
8
+ };
9
+ };
10
+ readonly baseClassName: "ui-virtual-list";
11
+ readonly defaults: {
12
+ readonly 'data-ui-virtual-list': "";
13
+ readonly tabindex: "0";
14
+ };
15
+ readonly tagName: "lumen-virtual-list";
16
+ };
17
+ export declare class LumenVirtualListElement extends LumenElement {
18
+ static config: {
19
+ readonly attributeClasses: {
20
+ readonly glass: {
21
+ readonly true: "ui-virtual-list--glass";
22
+ readonly subtle: "ui-virtual-list--glass ui-glass-subtle";
23
+ readonly strong: "ui-virtual-list--glass ui-glass-strong";
24
+ };
25
+ };
26
+ readonly baseClassName: "ui-virtual-list";
27
+ readonly defaults: {
28
+ readonly 'data-ui-virtual-list': "";
29
+ readonly tabindex: "0";
30
+ };
31
+ readonly tagName: "lumen-virtual-list";
32
+ };
33
+ private controller;
34
+ connectedCallback(): void;
35
+ disconnectedCallback(): void;
36
+ }
37
+ export declare const defineLumenVirtualList: (registry?: LumenCustomElementRegistry) => void;
38
+ //# sourceMappingURL=virtual-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-list.d.ts","sourceRoot":"","sources":["../../src/components/virtual-list.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,YAAY,EAEb,MAAM,oBAAoB,CAAA;AAE3B,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;CAWH,CAAA;AAEvC,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAgB,MAAM;;;;;;;;;;;;;;MAAgC;IAEtD,OAAO,CAAC,UAAU,CAAwC;IAEjD,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;CAKtC;AAED,eAAO,MAAM,sBAAsB,GAAI,WAAW,0BAA0B,KAAG,IAE9E,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { createLumenVirtualListController } from '@santi020k/lumen-core/virtual-list';
2
+ import { defineLumenElement, LumenElement } from '../element-base.js';
3
+ export const lumenVirtualListElementConfig = {
4
+ attributeClasses: {
5
+ glass: {
6
+ true: 'ui-virtual-list--glass',
7
+ subtle: 'ui-virtual-list--glass ui-glass-subtle',
8
+ strong: 'ui-virtual-list--glass ui-glass-strong'
9
+ }
10
+ },
11
+ baseClassName: 'ui-virtual-list',
12
+ defaults: { 'data-ui-virtual-list': '', tabindex: '0' },
13
+ tagName: 'lumen-virtual-list'
14
+ };
15
+ export class LumenVirtualListElement extends LumenElement {
16
+ static config = lumenVirtualListElementConfig;
17
+ controller;
18
+ connectedCallback() {
19
+ super.connectedCallback();
20
+ this.controller?.destroy();
21
+ this.controller = createLumenVirtualListController(this);
22
+ }
23
+ disconnectedCallback() {
24
+ this.controller?.destroy();
25
+ this.controller = undefined;
26
+ }
27
+ }
28
+ export const defineLumenVirtualList = (registry) => {
29
+ defineLumenElement(lumenVirtualListElementConfig, LumenVirtualListElement, registry);
30
+ };
@@ -0,0 +1,65 @@
1
+ import { LumenElement } from '../element-base.js';
2
+ export declare const lumenMotionGroupElementConfig: {
3
+ readonly baseClassName: "ui-motion-group";
4
+ readonly defaults: {
5
+ readonly 'data-ui-motion-group': "";
6
+ };
7
+ readonly observedAttributes: readonly ["duration", "enter-exit"];
8
+ readonly tagName: "lumen-motion-group";
9
+ };
10
+ export declare class LumenMotionGroupElement extends LumenElement {
11
+ static config: {
12
+ readonly baseClassName: "ui-motion-group";
13
+ readonly defaults: {
14
+ readonly 'data-ui-motion-group': "";
15
+ };
16
+ readonly observedAttributes: readonly ["duration", "enter-exit"];
17
+ readonly tagName: "lumen-motion-group";
18
+ };
19
+ private cleanup;
20
+ connectedCallback(): void;
21
+ disconnectedCallback(): void;
22
+ attributeChangedCallback(): void;
23
+ private bind;
24
+ }
25
+ export declare const lumenChartMotionElementConfig: {
26
+ readonly baseClassName: "ui-chart-motion";
27
+ readonly defaults: {
28
+ readonly 'data-ui-chart-motion': "";
29
+ };
30
+ readonly observedAttributes: readonly ["duration"];
31
+ readonly tagName: "lumen-chart-motion";
32
+ };
33
+ export declare class LumenChartMotionElement extends LumenElement {
34
+ static config: {
35
+ readonly baseClassName: "ui-chart-motion";
36
+ readonly defaults: {
37
+ readonly 'data-ui-chart-motion': "";
38
+ };
39
+ readonly observedAttributes: readonly ["duration"];
40
+ readonly tagName: "lumen-chart-motion";
41
+ };
42
+ private cleanup;
43
+ connectedCallback(): void;
44
+ disconnectedCallback(): void;
45
+ attributeChangedCallback(): void;
46
+ private bind;
47
+ }
48
+ export declare const lumenVisualEffectElementConfig: {
49
+ readonly baseClassName: "ui-visual-effect";
50
+ readonly observedAttributes: readonly ["variant", "animated", "intensity"];
51
+ readonly tagName: "lumen-visual-effect";
52
+ };
53
+ export declare class LumenVisualEffectElement extends LumenElement {
54
+ static config: {
55
+ readonly baseClassName: "ui-visual-effect";
56
+ readonly observedAttributes: readonly ["variant", "animated", "intensity"];
57
+ readonly tagName: "lumen-visual-effect";
58
+ };
59
+ private cleanup;
60
+ connectedCallback(): void;
61
+ disconnectedCallback(): void;
62
+ attributeChangedCallback(): void;
63
+ private update;
64
+ }
65
+ //# sourceMappingURL=visual-interactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-interactions.d.ts","sourceRoot":"","sources":["../../src/components/visual-interactions.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAA;AAE1E,eAAO,MAAM,6BAA6B;;;;;;;CAKH,CAAA;AAEvC,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAgB,MAAM;;;;;;;MAAgC;IACtD,OAAO,CAAC,OAAO,CAA0B;IAEhC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,wBAAwB,IAAI,IAAI;IAMzC,OAAO,CAAC,IAAI;CAQb;AAED,eAAO,MAAM,6BAA6B;;;;;;;CAKH,CAAA;AAEvC,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAgB,MAAM;;;;;;;MAAgC;IACtD,OAAO,CAAC,OAAO,CAA0B;IAChC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,wBAAwB,IAAI,IAAI;IAMzC,OAAO,CAAC,IAAI;CAOb;AAED,eAAO,MAAM,8BAA8B;;;;CAIJ,CAAA;AAEvC,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,OAAgB,MAAM;;;;MAAiC;IACvD,OAAO,CAAC,OAAO,CAA0B;IAEhC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,wBAAwB,IAAI,IAAI;IAMzC,OAAO,CAAC,MAAM;CAef"}
@@ -0,0 +1,91 @@
1
+ import { bindLumenChartMotion, bindLumenMotionGroup, createLumenSpotlightController, normalizeLumenEffectIntensity } from '@santi020k/lumen-core';
2
+ import { LumenElement } from '../element-base.js';
3
+ export const lumenMotionGroupElementConfig = {
4
+ baseClassName: 'ui-motion-group',
5
+ defaults: { 'data-ui-motion-group': '' },
6
+ observedAttributes: ['duration', 'enter-exit'],
7
+ tagName: 'lumen-motion-group'
8
+ };
9
+ export class LumenMotionGroupElement extends LumenElement {
10
+ static config = lumenMotionGroupElementConfig;
11
+ cleanup;
12
+ connectedCallback() {
13
+ super.connectedCallback();
14
+ this.bind();
15
+ }
16
+ disconnectedCallback() {
17
+ this.cleanup?.();
18
+ this.cleanup = undefined;
19
+ }
20
+ attributeChangedCallback() {
21
+ super.attributeChangedCallback();
22
+ if (this.isConnected)
23
+ this.bind();
24
+ }
25
+ bind() {
26
+ this.cleanup?.();
27
+ const value = this.getAttribute('duration');
28
+ const duration = value === 'fast' || value === 'slow' ? value : 'standard';
29
+ this.cleanup = bindLumenMotionGroup(this, { duration, enterExit: this.getAttribute('enter-exit') !== 'false' });
30
+ }
31
+ }
32
+ export const lumenChartMotionElementConfig = {
33
+ baseClassName: 'ui-chart-motion',
34
+ defaults: { 'data-ui-chart-motion': '' },
35
+ observedAttributes: ['duration'],
36
+ tagName: 'lumen-chart-motion'
37
+ };
38
+ export class LumenChartMotionElement extends LumenElement {
39
+ static config = lumenChartMotionElementConfig;
40
+ cleanup;
41
+ connectedCallback() {
42
+ super.connectedCallback();
43
+ this.bind();
44
+ }
45
+ disconnectedCallback() {
46
+ this.cleanup?.();
47
+ this.cleanup = undefined;
48
+ }
49
+ attributeChangedCallback() {
50
+ super.attributeChangedCallback();
51
+ if (this.isConnected)
52
+ this.bind();
53
+ }
54
+ bind() {
55
+ this.cleanup?.();
56
+ const duration = this.getAttribute('duration');
57
+ this.cleanup = bindLumenChartMotion(this, duration === 'fast' || duration === 'slow' ? duration : 'standard');
58
+ }
59
+ }
60
+ export const lumenVisualEffectElementConfig = {
61
+ baseClassName: 'ui-visual-effect',
62
+ observedAttributes: ['variant', 'animated', 'intensity'],
63
+ tagName: 'lumen-visual-effect'
64
+ };
65
+ export class LumenVisualEffectElement extends LumenElement {
66
+ static config = lumenVisualEffectElementConfig;
67
+ cleanup;
68
+ connectedCallback() {
69
+ super.connectedCallback();
70
+ this.update();
71
+ }
72
+ disconnectedCallback() {
73
+ this.cleanup?.();
74
+ this.cleanup = undefined;
75
+ }
76
+ attributeChangedCallback() {
77
+ super.attributeChangedCallback();
78
+ if (this.isConnected)
79
+ this.update();
80
+ }
81
+ update() {
82
+ this.cleanup?.();
83
+ this.cleanup = undefined;
84
+ this.dataset.uiVisualEffect = this.getAttribute('variant') ?? 'mesh';
85
+ this.dataset.uiEffectAnimated = String(this.hasAttribute('animated') && this.getAttribute('animated') !== 'false');
86
+ const raw = this.getAttribute('intensity');
87
+ this.style.setProperty('--ui-effect-intensity', String(normalizeLumenEffectIntensity(raw === null ? undefined : Number(raw))));
88
+ if (this.dataset.uiVisualEffect === 'spotlight')
89
+ this.cleanup = createLumenSpotlightController(this);
90
+ }
91
+ }
@@ -0,0 +1,46 @@
1
+ import { type LumenWorldMapCountryGeometry, type LumenWorldMapMarker } from '@santi020k/lumen-core/world-map';
2
+ import { type LumenCustomElementRegistry, LumenElement } from '../element-base.js';
3
+ export declare const lumenWorldMapElementConfig: {
4
+ readonly baseClassName: "ui-world-map";
5
+ readonly observedAttributes: readonly ["animated", "countries", "highlighted-countries", "interactive", "label", "labels", "list-label", "markers", "selected-country", "variant", "zoomable", "zoom-labels", "initial-view"];
6
+ readonly tagName: "lumen-world-map";
7
+ };
8
+ export declare class LumenWorldMapElement extends LumenElement {
9
+ static config: {
10
+ readonly baseClassName: "ui-world-map";
11
+ readonly observedAttributes: readonly ["animated", "countries", "highlighted-countries", "interactive", "label", "labels", "list-label", "markers", "selected-country", "variant", "zoomable", "zoom-labels", "initial-view"];
12
+ readonly tagName: "lumen-world-map";
13
+ };
14
+ private countryData;
15
+ private highlightedData;
16
+ private markerData;
17
+ private labelData;
18
+ private abortController;
19
+ private instanceId;
20
+ get countries(): readonly LumenWorldMapCountryGeometry[];
21
+ set countries(value: readonly LumenWorldMapCountryGeometry[]);
22
+ get highlightedCountries(): readonly string[];
23
+ set highlightedCountries(value: readonly string[]);
24
+ get markers(): readonly LumenWorldMapMarker[];
25
+ set markers(value: readonly LumenWorldMapMarker[]);
26
+ get labels(): Readonly<Record<string, string>>;
27
+ set labels(value: Readonly<Record<string, string>>);
28
+ get selectedCountry(): string;
29
+ set selectedCountry(value: string);
30
+ connectedCallback(): void;
31
+ disconnectedCallback(): void;
32
+ adoptedCallback(): void;
33
+ attributeChangedCallback(name: string): void;
34
+ private updateSelection;
35
+ private render;
36
+ private get zoomText();
37
+ private appendZoomControls;
38
+ private countryPath;
39
+ private highlightList;
40
+ private appendMarkers;
41
+ private bindPointer;
42
+ private appendChooser;
43
+ private selectCountry;
44
+ }
45
+ export declare const defineLumenWorldMap: (registry?: LumenCustomElementRegistry) => void;
46
+ //# sourceMappingURL=world-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-map.d.ts","sourceRoot":"","sources":["../../src/components/world-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EAMzB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAsB,KAAK,0BAA0B,EAAE,YAAY,EAA2B,MAAM,oBAAoB,CAAA;AAE/H,eAAO,MAAM,0BAA0B;;;;CAIA,CAAA;AAuDvC,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,OAAgB,MAAM;;;;MAA6B;IAEnD,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,UAAU,CAAwC;IAE1D,IAAI,SAAS,IAAI,SAAS,4BAA4B,EAAE,CAEvD;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,4BAA4B,EAAE,EAI3D;IAED,IAAI,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAI5C;IAED,IAAI,oBAAoB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAIhD;IAED,IAAI,OAAO,IAAI,SAAS,mBAAmB,EAAE,CAE5C;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EAIhD;IAED,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE7C;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAIjD;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,EAEhC;IAEQ,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAIrC,eAAe,IAAI,IAAI;IAId,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoBrD,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,MAAM;IAkEd,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,CAAC,kBAAkB;IAwC1B,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,aAAa;IA6CrB,OAAO,CAAC,aAAa;CActB;AAED,eAAO,MAAM,mBAAmB,GAAI,WAAW,0BAA0B,KAAG,IAE3E,CAAA"}