@brightspot/ui 1.4.1 → 1.6.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.
- package/README.md +12 -0
- package/dist/components/avatar/Avatar.d.ts +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js +3 -1
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +109 -0
- package/dist/components/pagination/Pagination.d.ts.map +1 -0
- package/dist/components/pagination/Pagination.js +351 -0
- package/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/components/popover/Popover.d.ts +161 -0
- package/dist/components/popover/Popover.d.ts.map +1 -0
- package/dist/components/popover/Popover.js +436 -0
- package/dist/components/popover/Popover.js.map +1 -0
- package/dist/components/widget/Widget.css +104 -0
- package/dist/components/widget/Widget.d.ts +170 -0
- package/dist/components/widget/Widget.d.ts.map +1 -0
- package/dist/components/widget/Widget.js +434 -0
- package/dist/components/widget/Widget.js.map +1 -0
- package/dist/custom-elements.json +1151 -184
- package/dist/global.d.ts +5 -0
- package/dist/storybook/assets/{Avatar.stories-QxWs-YfX.js → Avatar.stories-CafEcy4T.js} +37 -32
- package/dist/storybook/assets/AvatarGroup.stories-BBkQuFKk.js +225 -0
- package/dist/storybook/assets/{Badge.stories-BpaApWbR.js → Badge.stories-mFZsls7i.js} +1 -1
- package/dist/storybook/assets/{Button.stories-C5h2usmd.js → Button.stories-CAWX17L1.js} +1 -1
- package/dist/storybook/assets/{CircularProgress.stories-DlPOiGja.js → CircularProgress.stories-DBVt4Cg2.js} +1 -1
- package/dist/storybook/assets/{ClipboardMixin.stories-Bb45-UOM.js → ClipboardMixin.stories-BH9E-OI6.js} +7 -7
- package/dist/storybook/assets/Color-6BZIO3FS-CVnTzq2p.js +1 -0
- package/dist/storybook/assets/{Colors.stories-DP2JKWUJ.js → Colors.stories-BFYmP0LL.js} +1 -1
- package/dist/storybook/assets/ComponentStatesMixin-Cu7YXkU8.js +1 -0
- package/dist/storybook/assets/{ComponentStatesMixin.stories-CyQ2aSTu.js → ComponentStatesMixin.stories-CAvyYt0H.js} +3 -3
- package/dist/storybook/assets/{CopyToClipboard.stories-DR7pckeV.js → CopyToClipboard.stories-DbJZsp_L.js} +1 -1
- package/dist/storybook/assets/{Debounce.stories-hkqyvqmg.js → Debounce.stories-BiFiH1K9.js} +1 -1
- package/dist/storybook/assets/{DocsRenderer-LL677BLK-Dtw9GMer.js → DocsRenderer-LL677BLK-Bq6G4eeC.js} +6 -6
- package/dist/storybook/assets/{Events.stories-BAgDzdyl.js → Events.stories-BsDBxh8_.js} +1 -1
- package/dist/storybook/assets/{Heading.stories-CN_fPsRf.js → Heading.stories-zGzWgHVO.js} +1 -1
- package/dist/storybook/assets/{Icon.stories-CSx_2K8V.js → Icon.stories-B4T6sSwf.js} +1 -1
- package/dist/storybook/assets/{LinearProgress.stories-In48DY2g.js → LinearProgress.stories-qzqmUUwY.js} +1 -1
- package/dist/storybook/assets/Pagination.stories-B6Q-7taJ.js +272 -0
- package/dist/storybook/assets/Popover.stories-CGkU0SGv.js +431 -0
- package/dist/storybook/assets/ReadyMixin-3YCzoG6W.js +1 -0
- package/dist/storybook/assets/{Rtc.stories-19d7WXe4.js → Rtc.stories-Y1MYTWAt.js} +1 -1
- package/dist/storybook/assets/{ScrollShadow.stories-BFjracVd.js → ScrollShadow.stories-B9kSpLT1.js} +1 -1
- package/dist/storybook/assets/{Throttle.stories-DD6ydiVq.js → Throttle.stories-BgvLDrS3.js} +1 -1
- package/dist/storybook/assets/Tooltip.stories-POo1M-ew.js +143 -0
- package/dist/storybook/assets/Widget.stories--JpqVyJe.js +233 -0
- package/dist/storybook/assets/{WithTooltip-65CFNBJE-Be1dKqOF.js → WithTooltip-65CFNBJE-DNbD9hAX.js} +2 -2
- package/dist/storybook/assets/custom-element-UsVr97OX.js +1 -0
- package/dist/storybook/assets/{formatter-EIJCOSYU-anC2P5HS.js → formatter-EIJCOSYU-Cy8KIxab.js} +1 -1
- package/dist/storybook/assets/if-defined-CngSGyRu.js +1 -0
- package/dist/storybook/assets/iframe-DiT9Iz2T.css +1 -0
- package/dist/storybook/assets/{iframe-Bl9oHz5c.js → iframe-Dz6CxatW.js} +95 -95
- package/dist/storybook/assets/{index-Cn5E5A3G.js → index-CebChkmF.js} +1 -1
- package/dist/storybook/assets/{onFind.stories-BMDLUk0l.js → onFind.stories-nHDImx0x.js} +1 -1
- package/dist/storybook/assets/{onRemove.stories-C3FcxtYh.js → onRemove.stories-CBxYVPwd.js} +1 -1
- package/dist/storybook/assets/{onVisible.stories-B8Zyu0Th.js → onVisible.stories-D4Qewc9Y.js} +1 -1
- package/dist/storybook/assets/style-map-BgW9piaW.js +1 -0
- package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-BfTKsIVL.js → syntaxhighlighter-ED5Y7EFY-CROW1475.js} +1 -1
- package/dist/storybook/iframe.html +2 -2
- package/dist/storybook/index.json +1 -1
- package/dist/storybook/project.json +1 -1
- package/dist/tailwind-plugin-pagination.d.ts +2 -0
- package/dist/tailwind-plugin-pagination.d.ts.map +1 -0
- package/dist/tailwind-plugin-pagination.js +164 -0
- package/dist/tailwind-plugin-pagination.js.map +1 -0
- package/dist/tailwind-plugin-pagination.ts +179 -0
- package/dist/tailwind-plugin-popover.d.ts +2 -0
- package/dist/tailwind-plugin-popover.d.ts.map +1 -0
- package/dist/tailwind-plugin-popover.js +177 -0
- package/dist/tailwind-plugin-popover.js.map +1 -0
- package/dist/tailwind-plugin-popover.ts +202 -0
- package/dist/tailwind-plugin-tooltip.d.ts +2 -0
- package/dist/tailwind-plugin-tooltip.d.ts.map +1 -0
- package/dist/tailwind-plugin-tooltip.js +184 -0
- package/dist/tailwind-plugin-tooltip.js.map +1 -0
- package/dist/tailwind-plugin-tooltip.ts +209 -0
- package/dist/tailwind.config.d.ts +1 -4
- package/dist/tailwind.config.d.ts.map +1 -1
- package/dist/tailwind.config.js +1 -0
- package/dist/tailwind.config.js.map +1 -1
- package/dist/tailwind.config.ts +1 -0
- package/dist/util/EventEmitterMixin.d.ts +20 -0
- package/dist/util/EventEmitterMixin.d.ts.map +1 -1
- package/dist/util/EventEmitterMixin.js +1 -1
- package/dist/util/EventEmitterMixin.js.map +1 -1
- package/dist/util/TooltipController.d.ts +37 -0
- package/dist/util/TooltipController.d.ts.map +1 -0
- package/dist/util/TooltipController.js +133 -0
- package/dist/util/TooltipController.js.map +1 -0
- package/dist/util/TooltipMixin.d.ts +42 -0
- package/dist/util/TooltipMixin.d.ts.map +1 -0
- package/dist/util/TooltipMixin.js +401 -0
- package/dist/util/TooltipMixin.js.map +1 -0
- package/dist/util/aria.d.ts.map +1 -1
- package/dist/util/aria.js +2 -1
- package/dist/util/aria.js.map +1 -1
- package/dist/util/i18n.d.ts +13 -0
- package/dist/util/i18n.d.ts.map +1 -0
- package/dist/util/i18n.js +21 -0
- package/dist/util/i18n.js.map +1 -0
- package/package.json +2 -2
- package/dist/storybook/assets/AvatarGroup.stories-Cy_Bvn7E.js +0 -211
- package/dist/storybook/assets/Color-6BZIO3FS-CcgGYVAo.js +0 -1
- package/dist/storybook/assets/ComponentStatesMixin-B7ci0thi.js +0 -1
- package/dist/storybook/assets/iframe-B4njXYq6.css +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* FOUC prevention: hide pseudo-slotted content before component upgrades */
|
|
2
|
+
btu-widget:not(:defined) > [slot] {
|
|
3
|
+
@apply hidden;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
btu-widget:not(:defined) {
|
|
7
|
+
@apply pointer-events-none block opacity-50;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/* Collapse/expand transition: grid-template-rows technique */
|
|
11
|
+
.btu-widget__collapsible {
|
|
12
|
+
@apply grid grid-rows-[1fr] opacity-100;
|
|
13
|
+
transition:
|
|
14
|
+
grid-template-rows 200ms ease,
|
|
15
|
+
opacity 150ms ease;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
btu-widget:state(collapsed) .btu-widget__collapsible {
|
|
19
|
+
@apply grid-rows-[0fr] opacity-0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
btu-widget:state(collapsed) .btu-widget__header {
|
|
23
|
+
@apply border-b-transparent;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.btu-widget__collapse-chevron {
|
|
27
|
+
transition: transform 200ms;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
btu-widget:state(collapsed) .btu-widget__collapse-chevron {
|
|
31
|
+
transform: rotate(-180deg);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.btu-widget__collapsible-inner {
|
|
35
|
+
@apply min-h-0 overflow-hidden;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* View Transition: Widget fullscreen animation
|
|
39
|
+
Easing: open-props --ease-spring-3
|
|
40
|
+
See: https://open-props.style/#easing */
|
|
41
|
+
html::view-transition-group(widget) {
|
|
42
|
+
animation-duration: 600ms;
|
|
43
|
+
animation-timing-function: linear(
|
|
44
|
+
0,
|
|
45
|
+
0.009,
|
|
46
|
+
0.035 2.1%,
|
|
47
|
+
0.141 4.4%,
|
|
48
|
+
0.723 12.9%,
|
|
49
|
+
0.938 16.7%,
|
|
50
|
+
1.017,
|
|
51
|
+
1.077,
|
|
52
|
+
1.121,
|
|
53
|
+
1.149 24.3%,
|
|
54
|
+
1.159,
|
|
55
|
+
1.163,
|
|
56
|
+
1.161,
|
|
57
|
+
1.154 29.9%,
|
|
58
|
+
1.129 32.8%,
|
|
59
|
+
1.051 39.6%,
|
|
60
|
+
1.017 43.1%,
|
|
61
|
+
0.991,
|
|
62
|
+
0.977 51%,
|
|
63
|
+
0.974 53.8%,
|
|
64
|
+
0.975 57.1%,
|
|
65
|
+
0.997 69.8%,
|
|
66
|
+
1.003 76.9%,
|
|
67
|
+
1
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
html::view-transition-old(widget) {
|
|
72
|
+
@apply opacity-0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
html::view-transition-new(widget) {
|
|
76
|
+
@apply animate-widget-maximize-fade-in;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Native dialog backdrop styling */
|
|
80
|
+
.btu-widget__dialog::backdrop {
|
|
81
|
+
@apply backdrop-blur transition-all duration-300 ease-out [background-color:theme(backdropColor.dialog)];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Backdrop entry animation */
|
|
85
|
+
@starting-style {
|
|
86
|
+
.btu-widget__dialog[open]::backdrop {
|
|
87
|
+
@apply opacity-0 [backdrop-filter:blur(0px)];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Reduced motion: disable view transition spring easing and backdrop transitions */
|
|
92
|
+
@media (prefers-reduced-motion: reduce) {
|
|
93
|
+
html::view-transition-group(widget) {
|
|
94
|
+
animation-duration: 0.01ms;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.btu-widget__collapsible {
|
|
98
|
+
@apply transition-none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.btu-widget__dialog::backdrop {
|
|
102
|
+
@apply transition-none;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { LitElement, type PropertyValues } from 'lit';
|
|
2
|
+
import '../icon/Icon.js';
|
|
3
|
+
import './Widget.css';
|
|
4
|
+
export interface WidgetProps {
|
|
5
|
+
heading?: string;
|
|
6
|
+
collapsible?: boolean;
|
|
7
|
+
collapsed?: boolean;
|
|
8
|
+
fullscreenable?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const Widget_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
|
|
11
|
+
/**
|
|
12
|
+
* A widget component for displaying content with header, body, and footer sections.
|
|
13
|
+
*
|
|
14
|
+
* ## Architecture: Light DOM + Manager Pattern
|
|
15
|
+
*
|
|
16
|
+
* This component uses **Light DOM** (no Shadow Root) with the **Manager Pattern**:
|
|
17
|
+
* - User-provided children are physically moved into internal containers
|
|
18
|
+
* - Movement is based on `slot` attributes (pseudo-slots)
|
|
19
|
+
* - The `onFind` utility automatically redistributes dynamically-added content
|
|
20
|
+
*
|
|
21
|
+
* ### Node Redistribution Rules
|
|
22
|
+
* - `slot="controls"` → Moved to header actions area (before system buttons)
|
|
23
|
+
* - `slot="footer"` → Moved to footer container
|
|
24
|
+
* - *(no slot)* → Moved to body container (default)
|
|
25
|
+
*
|
|
26
|
+
* ## Features
|
|
27
|
+
*
|
|
28
|
+
* - **Collapsible**: Optional chevron toggle to hide/show body and footer
|
|
29
|
+
* - **Fullscreen**: Optional maximize button for fullscreen mode via `:state(fullscreen)` custom state
|
|
30
|
+
* - **Dynamic Content**: `onFind` handles content added after initialization
|
|
31
|
+
* - **Accessible**: Full ARIA support and keyboard navigation
|
|
32
|
+
* - **Themeable**: CSS custom properties for colors and spacing
|
|
33
|
+
*
|
|
34
|
+
* ## Accessibility
|
|
35
|
+
*
|
|
36
|
+
* - **Collapse toggle**: `aria-expanded`, `aria-controls`, `aria-label`
|
|
37
|
+
* - **Fullscreen toggle**: `aria-pressed`, `aria-label`
|
|
38
|
+
* - **Body region**: `role="region"`, `aria-labelledby` linking to heading
|
|
39
|
+
* - **Tab order**: Natural flow via physical DOM placement
|
|
40
|
+
* - **Collapsed content**: Hidden via `inert` attribute and CSS grid collapse
|
|
41
|
+
*
|
|
42
|
+
* @element btu-widget
|
|
43
|
+
*
|
|
44
|
+
* @attr heading - Title text displayed in the header
|
|
45
|
+
* @attr collapsible - Whether the widget can be collapsed/expanded
|
|
46
|
+
* @attr collapsed - Whether the widget is currently collapsed (implies collapsible)
|
|
47
|
+
* @attr fullscreenable - Whether the widget can enter fullscreen mode
|
|
48
|
+
* @attr id - When set, collapsed state is automatically persisted to LocalStorage
|
|
49
|
+
*
|
|
50
|
+
* @fires {CustomEvent} btu-widget-ready - Fired after first render and redistribution
|
|
51
|
+
* @fires {CustomEvent<{collapsed: boolean}>} btu-widget-collapse-changed - Fired when collapsed state changes
|
|
52
|
+
* @fires {CustomEvent<{fullscreen: boolean}>} btu-widget-fullscreen-changed - Fired when fullscreen state changes
|
|
53
|
+
*
|
|
54
|
+
* @cssprop --widget-background - Body and footer background color (default: --btu-theme-white)
|
|
55
|
+
* @cssprop --widget-border - Widget border and dividers (default: 1px solid gray-200)
|
|
56
|
+
* @cssprop --header-background - Header background color (default: transparent)
|
|
57
|
+
*
|
|
58
|
+
* @cssstate collapsed - Applied when the widget is collapsed, targetable via :state(collapsed)
|
|
59
|
+
* @cssstate fullscreen - Applied when the widget is in fullscreen mode, targetable via :state(fullscreen)
|
|
60
|
+
*
|
|
61
|
+
* @slot - Default pseudo-slot: elements without slot attribute are moved to body
|
|
62
|
+
* @slot controls - Pseudo-slot: buttons/actions moved to header actions area
|
|
63
|
+
* @slot footer - Pseudo-slot: content moved to footer container
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```html
|
|
67
|
+
* <!-- Basic usage with heading property -->
|
|
68
|
+
* <btu-widget heading="My Widget">
|
|
69
|
+
* <button slot="controls">Action</button>
|
|
70
|
+
* <div>Main body content</div>
|
|
71
|
+
* </btu-widget>
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export default class Widget extends Widget_base {
|
|
75
|
+
private static _idCounter;
|
|
76
|
+
private _internals;
|
|
77
|
+
protected createRenderRoot(): HTMLElement | DocumentFragment;
|
|
78
|
+
/**
|
|
79
|
+
* Heading text displayed in the header.
|
|
80
|
+
* @attr
|
|
81
|
+
*/
|
|
82
|
+
heading: string;
|
|
83
|
+
/**
|
|
84
|
+
* Whether the widget can be collapsed/expanded.
|
|
85
|
+
* When true, a chevron toggle button appears in the header.
|
|
86
|
+
* @attr
|
|
87
|
+
*/
|
|
88
|
+
collapsible: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Whether the widget is currently collapsed.
|
|
91
|
+
* When true, body and footer are hidden. Implies collapsible.
|
|
92
|
+
* @attr
|
|
93
|
+
*/
|
|
94
|
+
collapsed: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Whether the widget can enter fullscreen mode.
|
|
97
|
+
* When true, a fullscreen toggle button appears in the header.
|
|
98
|
+
* @attr
|
|
99
|
+
*/
|
|
100
|
+
fullscreenable: boolean;
|
|
101
|
+
private _isFullscreen;
|
|
102
|
+
private _collapseTooltip;
|
|
103
|
+
private _fullscreenTooltip;
|
|
104
|
+
/**
|
|
105
|
+
* Whether the widget is currently in fullscreen mode (read-only).
|
|
106
|
+
* Use `btu-widget-fullscreen-changed` event to react to changes.
|
|
107
|
+
*/
|
|
108
|
+
get isFullscreen(): boolean;
|
|
109
|
+
/** @internal */
|
|
110
|
+
private _instanceId;
|
|
111
|
+
/** @internal */
|
|
112
|
+
private bodyId;
|
|
113
|
+
/** @internal */
|
|
114
|
+
private dialogId;
|
|
115
|
+
/** @internal */
|
|
116
|
+
private _dialog?;
|
|
117
|
+
/** @internal */
|
|
118
|
+
private _dialogCloseHandler?;
|
|
119
|
+
/** @internal - Light-dismiss handler bound to this instance */
|
|
120
|
+
private _lightDismissHandler?;
|
|
121
|
+
willUpdate(changed: PropertyValues): void;
|
|
122
|
+
connectedCallback(): void;
|
|
123
|
+
disconnectedCallback(): void;
|
|
124
|
+
firstUpdated(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Toggles the collapsed state of the widget.
|
|
127
|
+
* Emits 'btu-widget-collapse-changed' event with collapsed state.
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
130
|
+
private handleToggle;
|
|
131
|
+
/**
|
|
132
|
+
* Toggles the fullscreen state of the widget using native dialog element.
|
|
133
|
+
* Moves the content wrapper into the dialog on fullscreen, back out on exit.
|
|
134
|
+
* Uses dialog.showModal() for proper modal behavior with backdrop.
|
|
135
|
+
* Uses View Transition API for smooth fullscreen animation.
|
|
136
|
+
* Emits 'btu-widget-fullscreen-changed' event with fullscreen state.
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
private handleFullscreen;
|
|
140
|
+
/**
|
|
141
|
+
* Sets up the dialog element and event listeners.
|
|
142
|
+
* @internal
|
|
143
|
+
*/
|
|
144
|
+
private _setupDialog;
|
|
145
|
+
/**
|
|
146
|
+
* Restores widget state from LocalStorage if id is set.
|
|
147
|
+
* Only restores if no explicit collapsed attribute is present on the element.
|
|
148
|
+
*
|
|
149
|
+
* Attribute Precedence:
|
|
150
|
+
* - If collapsed attribute is explicitly present in HTML: Use that value (ignore LocalStorage)
|
|
151
|
+
* - If collapsed attribute is absent: Restore from LocalStorage
|
|
152
|
+
*
|
|
153
|
+
* @internal
|
|
154
|
+
*/
|
|
155
|
+
private _restoreState;
|
|
156
|
+
/**
|
|
157
|
+
* Persists widget state to LocalStorage if id is set.
|
|
158
|
+
*
|
|
159
|
+
* @internal
|
|
160
|
+
*/
|
|
161
|
+
private _persistState;
|
|
162
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
163
|
+
}
|
|
164
|
+
declare global {
|
|
165
|
+
interface HTMLElementTagNameMap {
|
|
166
|
+
'btu-widget': Widget;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export {};
|
|
170
|
+
//# sourceMappingURL=Widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Widget.d.ts","sourceRoot":"","sources":["../../../src/components/widget/Widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAO3D,OAAO,iBAAiB,CAAA;AACxB,OAAO,cAAc,CAAA;AAErB,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAyC;IAC3E,OAAO,CAAC,MAAM,CAAC,UAAU,CAAI;IAE7B,OAAO,CAAC,UAAU,CAAyB;IAE3C,SAAS,CAAC,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D;;;OAGG;IAEH,OAAO,SAAK;IAEZ;;;;OAIG;IAEH,WAAW,UAAQ;IAEnB;;;;OAIG;IAEH,SAAS,UAAQ;IAEjB;;;;OAIG;IAEH,cAAc,UAAQ;IAGtB,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,gBAAgB,CAMtB;IAEF,OAAO,CAAC,kBAAkB,CAMxB;IAEF;;;OAGG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAsB;IAEzC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAoC;IAElD,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAsC;IAEtD,gBAAgB;IAChB,OAAO,CAAC,OAAO,CAAC,CAAmB;IAEnC,gBAAgB;IAChB,OAAO,CAAC,mBAAmB,CAAC,CAAY;IAExC,+DAA+D;IAC/D,OAAO,CAAC,oBAAoB,CAAC,CAAyB;IAEtD,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAWzC,iBAAiB,IAAI,IAAI;IAkBzB,oBAAoB,IAAI,IAAI;IAgB5B,YAAY,IAAI,IAAI;IAwBpB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgCpB;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAerB,MAAM;CA6EP;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,MAAM,CAAA;KACrB;CACF"}
|