@kodaris/krubble-components 1.0.61 → 1.0.63

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.
@@ -0,0 +1,71 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * A checkbox component that works with native browser forms.
4
+ *
5
+ * Uses ElementInternals for form association, allowing the component
6
+ * to participate in form submission, validation, and reset.
7
+ *
8
+ * @element kr-checkbox
9
+ * @fires change - Fired when the checked state changes
10
+ */
11
+ export declare class KRCheckbox extends LitElement {
12
+ static styles: import("lit").CSSResult[];
13
+ static formAssociated: boolean;
14
+ private _internals;
15
+ /**
16
+ * The checkbox label text
17
+ */
18
+ label: string;
19
+ /**
20
+ * The input name for form submission
21
+ */
22
+ name: string;
23
+ /**
24
+ * The value submitted when checked
25
+ */
26
+ value: string;
27
+ /**
28
+ * Whether the checkbox is checked
29
+ */
30
+ checked: boolean;
31
+ /**
32
+ * Whether the checkbox is disabled
33
+ */
34
+ disabled: boolean;
35
+ /**
36
+ * Whether the checkbox is required
37
+ */
38
+ required: boolean;
39
+ /**
40
+ * Helper text shown below the checkbox
41
+ */
42
+ hint: string;
43
+ private _touched;
44
+ constructor();
45
+ get form(): HTMLFormElement | null;
46
+ get validity(): ValidityState;
47
+ get validationMessage(): string;
48
+ get willValidate(): boolean;
49
+ checkValidity(): boolean;
50
+ reportValidity(): boolean;
51
+ formResetCallback(): void;
52
+ formStateRestoreCallback(state: string): void;
53
+ connectedCallback(): void;
54
+ disconnectedCallback(): void;
55
+ private _handleInvalid;
56
+ protected firstUpdated(): void;
57
+ updated(changedProperties: Map<string, unknown>): void;
58
+ private _syncFormValue;
59
+ private _updateValidity;
60
+ private _handleClick;
61
+ private _handleKeyDown;
62
+ render(): import("lit-html").TemplateResult<1>;
63
+ focus(): void;
64
+ blur(): void;
65
+ }
66
+ declare global {
67
+ interface HTMLElementTagNameMap {
68
+ 'kr-checkbox': KRCheckbox;
69
+ }
70
+ }
71
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/form/checkbox/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAKrD;;;;;;;;GAQG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,OAAgB,MAAM,4BAmFnB;IAEH,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAO,CAAC,UAAU,CAAmB;IAErC;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,KAAK,SAAQ;IAEb;;OAEG;IAEH,OAAO,UAAS;IAEhB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAGV,OAAO,CAAC,QAAQ,CAAS;;IAQzB,IAAI,IAAI,2BAEP;IAED,IAAI,QAAQ,kBAEX;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,YAAY,YAEf;IAED,aAAa;IAIb,cAAc;IAId,iBAAiB;IAOjB,wBAAwB,CAAC,KAAK,EAAE,MAAM;IAI7B,iBAAiB;IAKjB,oBAAoB;IAK7B,OAAO,CAAC,cAAc,CAGpB;cAEiB,YAAY;IAKtB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IASxD,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,cAAc;IAUb,MAAM;IA8Cf,KAAK;IAIL,IAAI;CAGL;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -0,0 +1,304 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css, nothing } from 'lit';
8
+ import { customElement, property, state } from 'lit/decorators.js';
9
+ import { classMap } from 'lit/directives/class-map.js';
10
+ import { krBaseCSS } from '../../style/base.js';
11
+ /**
12
+ * A checkbox component that works with native browser forms.
13
+ *
14
+ * Uses ElementInternals for form association, allowing the component
15
+ * to participate in form submission, validation, and reset.
16
+ *
17
+ * @element kr-checkbox
18
+ * @fires change - Fired when the checked state changes
19
+ */
20
+ let KRCheckbox = class KRCheckbox extends LitElement {
21
+ constructor() {
22
+ super();
23
+ /**
24
+ * The checkbox label text
25
+ */
26
+ this.label = '';
27
+ /**
28
+ * The input name for form submission
29
+ */
30
+ this.name = '';
31
+ /**
32
+ * The value submitted when checked
33
+ */
34
+ this.value = 'on';
35
+ /**
36
+ * Whether the checkbox is checked
37
+ */
38
+ this.checked = false;
39
+ /**
40
+ * Whether the checkbox is disabled
41
+ */
42
+ this.disabled = false;
43
+ /**
44
+ * Whether the checkbox is required
45
+ */
46
+ this.required = false;
47
+ /**
48
+ * Helper text shown below the checkbox
49
+ */
50
+ this.hint = '';
51
+ this._touched = false;
52
+ this._handleInvalid = (e) => {
53
+ e.preventDefault();
54
+ this._touched = true;
55
+ };
56
+ this._internals = this.attachInternals();
57
+ }
58
+ // Form-associated custom element callbacks
59
+ get form() {
60
+ return this._internals.form;
61
+ }
62
+ get validity() {
63
+ return this._internals.validity;
64
+ }
65
+ get validationMessage() {
66
+ return this._internals.validationMessage;
67
+ }
68
+ get willValidate() {
69
+ return this._internals.willValidate;
70
+ }
71
+ checkValidity() {
72
+ return this._internals.checkValidity();
73
+ }
74
+ reportValidity() {
75
+ return this._internals.reportValidity();
76
+ }
77
+ formResetCallback() {
78
+ this.checked = false;
79
+ this._touched = false;
80
+ this._internals.setFormValue('');
81
+ this._internals.setValidity({});
82
+ }
83
+ formStateRestoreCallback(state) {
84
+ this.checked = state === this.value;
85
+ }
86
+ connectedCallback() {
87
+ super.connectedCallback();
88
+ this.addEventListener('invalid', this._handleInvalid);
89
+ }
90
+ disconnectedCallback() {
91
+ super.disconnectedCallback();
92
+ this.removeEventListener('invalid', this._handleInvalid);
93
+ }
94
+ firstUpdated() {
95
+ this._syncFormValue();
96
+ this._updateValidity();
97
+ }
98
+ updated(changedProperties) {
99
+ if (changedProperties.has('checked') || changedProperties.has('value')) {
100
+ this._syncFormValue();
101
+ }
102
+ if (changedProperties.has('required') || changedProperties.has('checked')) {
103
+ this._updateValidity();
104
+ }
105
+ }
106
+ _syncFormValue() {
107
+ if (this.checked) {
108
+ this._internals.setFormValue(this.value);
109
+ }
110
+ else {
111
+ this._internals.setFormValue('');
112
+ }
113
+ }
114
+ _updateValidity() {
115
+ if (this.required && !this.checked) {
116
+ this._internals.setValidity({ valueMissing: true }, 'This field is required');
117
+ }
118
+ else {
119
+ this._internals.setValidity({});
120
+ }
121
+ }
122
+ _handleClick(e) {
123
+ if (this.disabled) {
124
+ return;
125
+ }
126
+ this.checked = !this.checked;
127
+ this._touched = true;
128
+ this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
129
+ }
130
+ _handleKeyDown(e) {
131
+ if (this.disabled) {
132
+ return;
133
+ }
134
+ if (e.key === ' ' || e.key === 'Enter') {
135
+ e.preventDefault();
136
+ this._handleClick(e);
137
+ }
138
+ }
139
+ render() {
140
+ return html `
141
+ <div class="wrapper">
142
+ <div
143
+ class=${classMap({
144
+ 'checkbox': true,
145
+ 'checkbox--disabled': this.disabled,
146
+ })}
147
+ role="checkbox"
148
+ aria-checked=${this.checked}
149
+ aria-disabled=${this.disabled}
150
+ aria-label=${this.label}
151
+ tabindex=${this.disabled ? -1 : 0}
152
+ @click=${this._handleClick}
153
+ @keydown=${this._handleKeyDown}
154
+ >
155
+ <div class=${classMap({
156
+ 'checkbox__box': true,
157
+ 'checkbox__box--checked': this.checked,
158
+ 'checkbox__box--invalid': this._touched && this.required && !this.checked,
159
+ })}>
160
+ <svg class=${classMap({
161
+ 'checkbox__check': true,
162
+ 'checkbox__check--hidden': !this.checked,
163
+ })} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
164
+ <polyline points="20 6 9 17 4 12"></polyline>
165
+ </svg>
166
+ </div>
167
+ ${this.label
168
+ ? html `
169
+ <span class="checkbox__label">
170
+ ${this.label}
171
+ ${this.required ? html `<span class="required" aria-hidden="true">*</span>` : nothing}
172
+ </span>
173
+ `
174
+ : nothing}
175
+ </div>
176
+ ${this._touched && this.required && !this.checked
177
+ ? html `<div class="validation-message">This field is required</div>`
178
+ : this.hint
179
+ ? html `<div class="hint">${this.hint}</div>`
180
+ : nothing}
181
+ </div>
182
+ `;
183
+ }
184
+ focus() {
185
+ this.shadowRoot?.querySelector('.checkbox')?.focus();
186
+ }
187
+ blur() {
188
+ this.shadowRoot?.querySelector('.checkbox')?.blur();
189
+ }
190
+ };
191
+ KRCheckbox.styles = [krBaseCSS, css `
192
+ :host {
193
+ display: inline-block;
194
+ font-family: inherit;
195
+ }
196
+
197
+ .wrapper {
198
+ display: flex;
199
+ flex-direction: column;
200
+ gap: 6px;
201
+ }
202
+
203
+ .checkbox {
204
+ display: inline-flex;
205
+ align-items: center;
206
+ gap: 8px;
207
+ cursor: pointer;
208
+ }
209
+
210
+ .checkbox--disabled {
211
+ opacity: 0.5;
212
+ cursor: not-allowed;
213
+ }
214
+
215
+ .checkbox__box {
216
+ flex-shrink: 0;
217
+ width: 18px;
218
+ height: 18px;
219
+ border: 2px solid var(--kr-checkbox-border-color, #0000003d);
220
+ border-radius: 4px;
221
+ background-color: var(--kr-checkbox-bg, #fff);
222
+ display: flex;
223
+ align-items: center;
224
+ justify-content: center;
225
+ transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;
226
+ }
227
+
228
+ .checkbox:focus-visible .checkbox__box {
229
+ outline: none;
230
+ box-shadow: 0 0 0 3px rgba(22, 48, 82, 0.1);
231
+ }
232
+
233
+ .checkbox__box--checked {
234
+ border-color: var(--kr-checkbox-checked-border-color, var(--kr-primary));
235
+ background-color: var(--kr-checkbox-checked-bg, var(--kr-primary));
236
+ }
237
+
238
+ .checkbox__box--invalid {
239
+ border-color: var(--kr-checkbox-error-border-color, #ef4444);
240
+ }
241
+
242
+ .checkbox__check {
243
+ width: 12px;
244
+ height: 12px;
245
+ color: var(--kr-checkbox-check-color, #fff);
246
+ }
247
+
248
+ .checkbox__check--hidden {
249
+ visibility: hidden;
250
+ }
251
+
252
+ .checkbox__label {
253
+ font-size: 14px;
254
+ color: var(--kr-checkbox-label-color, #000);
255
+ user-select: none;
256
+ }
257
+
258
+ .required {
259
+ color: var(--kr-checkbox-required-color, #ef4444);
260
+ margin-left: 0.125rem;
261
+ }
262
+
263
+ .hint {
264
+ font-size: 0.75rem;
265
+ color: var(--kr-checkbox-helper-color, #6b7280);
266
+ margin-left: 26px;
267
+ }
268
+
269
+ .validation-message {
270
+ font-size: 0.75rem;
271
+ color: var(--kr-checkbox-error-color, #ef4444);
272
+ margin-left: 26px;
273
+ }
274
+ `];
275
+ KRCheckbox.formAssociated = true;
276
+ __decorate([
277
+ property({ type: String })
278
+ ], KRCheckbox.prototype, "label", void 0);
279
+ __decorate([
280
+ property({ type: String })
281
+ ], KRCheckbox.prototype, "name", void 0);
282
+ __decorate([
283
+ property({ type: String })
284
+ ], KRCheckbox.prototype, "value", void 0);
285
+ __decorate([
286
+ property({ type: Boolean })
287
+ ], KRCheckbox.prototype, "checked", void 0);
288
+ __decorate([
289
+ property({ type: Boolean })
290
+ ], KRCheckbox.prototype, "disabled", void 0);
291
+ __decorate([
292
+ property({ type: Boolean })
293
+ ], KRCheckbox.prototype, "required", void 0);
294
+ __decorate([
295
+ property({ type: String })
296
+ ], KRCheckbox.prototype, "hint", void 0);
297
+ __decorate([
298
+ state()
299
+ ], KRCheckbox.prototype, "_touched", void 0);
300
+ KRCheckbox = __decorate([
301
+ customElement('kr-checkbox')
302
+ ], KRCheckbox);
303
+ export { KRCheckbox };
304
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/form/checkbox/checkbox.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,6 @@ export { KRTextareaField } from './textarea-field/textarea-field.js';
5
5
  export { KRDetailField } from './detail-field/detail-field.js';
6
6
  export { KRAutoSuggest } from './auto-suggest/auto-suggest.js';
7
7
  export { KRComboBox } from './combo-box/combo-box.js';
8
+ export { KRRadioCards } from './radio-cards/radio-cards.js';
9
+ export { KRCheckbox } from './checkbox/checkbox.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
@@ -6,4 +6,6 @@ export { KRTextareaField } from './textarea-field/textarea-field.js';
6
6
  export { KRDetailField } from './detail-field/detail-field.js';
7
7
  export { KRAutoSuggest } from './auto-suggest/auto-suggest.js';
8
8
  export { KRComboBox } from './combo-box/combo-box.js';
9
+ export { KRRadioCards } from './radio-cards/radio-cards.js';
10
+ export { KRCheckbox } from './checkbox/checkbox.js';
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { LitElement } from 'lit';
2
+ export interface KRRadioCardsOption {
3
+ value: string;
4
+ label: string;
5
+ description?: string;
6
+ disabled?: boolean;
7
+ }
8
+ /**
9
+ * A card-style radio group for selecting between a small number of options.
10
+ * Each option renders as a bordered card with a radio indicator, label, and optional description.
11
+ *
12
+ * Uses ElementInternals for form association, allowing the component
13
+ * to participate in form submission, validation, and reset.
14
+ *
15
+ * @element kr-radio-cards
16
+ * @fires change - Fired when the selected value changes
17
+ */
18
+ export declare class KRRadioCards extends LitElement {
19
+ static styles: import("lit").CSSResult[];
20
+ static formAssociated: boolean;
21
+ private _internals;
22
+ private _focusedIndex;
23
+ /**
24
+ * The label text above the cards
25
+ */
26
+ label: string;
27
+ /**
28
+ * The input name for form submission
29
+ */
30
+ name: string;
31
+ /**
32
+ * The currently selected value
33
+ */
34
+ value: string;
35
+ /**
36
+ * The card options to display
37
+ */
38
+ options: KRRadioCardsOption[];
39
+ /**
40
+ * Whether the field is disabled
41
+ */
42
+ disabled: boolean;
43
+ /**
44
+ * Whether the field is required
45
+ */
46
+ required: boolean;
47
+ /**
48
+ * Helper text shown below the cards
49
+ */
50
+ hint: string;
51
+ /**
52
+ * Layout direction: 'row' or 'column'
53
+ */
54
+ direction: 'row' | 'column';
55
+ private _touched;
56
+ constructor();
57
+ get form(): HTMLFormElement | null;
58
+ get validity(): ValidityState;
59
+ get validationMessage(): string;
60
+ get willValidate(): boolean;
61
+ checkValidity(): boolean;
62
+ reportValidity(): boolean;
63
+ formResetCallback(): void;
64
+ formStateRestoreCallback(state: string): void;
65
+ connectedCallback(): void;
66
+ disconnectedCallback(): void;
67
+ private _handleInvalid;
68
+ protected firstUpdated(): void;
69
+ updated(changedProperties: Map<string, unknown>): void;
70
+ private _updateValidity;
71
+ private _handleCardClick;
72
+ private _handleKeyDown;
73
+ private _findNextEnabledIndex;
74
+ render(): import("lit-html").TemplateResult<1>;
75
+ }
76
+ declare global {
77
+ interface HTMLElementTagNameMap {
78
+ 'kr-radio-cards': KRRadioCards;
79
+ }
80
+ }
81
+ //# sourceMappingURL=radio-cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-cards.d.ts","sourceRoot":"","sources":["../../../src/form/radio-cards/radio-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAKrD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,4BA2HnB;IAEH,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,aAAa,CAAM;IAE3B;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,OAAO,EAAE,kBAAkB,EAAE,CAAM;IAEnC;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAS;IAGpC,OAAO,CAAC,QAAQ,CAAS;;IAQzB,IAAI,IAAI,2BAEP;IAED,IAAI,QAAQ,kBAEX;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,YAAY,YAEf;IAED,aAAa;IAIb,cAAc;IAId,iBAAiB;IAOjB,wBAAwB,CAAC,KAAK,EAAE,MAAM;IAI7B,iBAAiB;IAKjB,oBAAoB;IAK7B,OAAO,CAAC,cAAc,CAGpB;cAEiB,YAAY;IAItB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,qBAAqB;IAWpB,MAAM;CA2DhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}