@italia/radio 0.1.0-alpha.2
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/AUTHORS +3 -0
- package/LICENSE +11 -0
- package/README.md +106 -0
- package/custom-elements.json +852 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/it-radio-group.d.ts +117 -0
- package/dist/src/it-radio-group.d.ts.map +1 -0
- package/dist/src/it-radio-group.js +1725 -0
- package/dist/src/it-radio-group.js.map +1 -0
- package/dist/src/it-radio.d.ts +70 -0
- package/dist/src/it-radio.d.ts.map +1 -0
- package/dist/src/it-radio.js +1459 -0
- package/dist/src/it-radio.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"it-radio-group.js","sources":["../../../globals/dist/src/controllers/roving-tabindex-controller.js","../../../src/it-radio-group.ts"],"sourcesContent":["/**\n * Roving Tabindex Controller\n *\n * Implements the ARIA roving tabindex pattern for keyboard navigation.\n * See: https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n *\n * Usage:\n * ```ts\n * private rovingTabindex = new RovingTabindexController(this, {\n * getItems: () => Array.from(this.querySelectorAll('my-item')),\n * onSelect: (item) => this.selectItem(item),\n * });\n * ```\n */\nexport class RovingTabindexController {\n constructor(host, config) {\n this.host = host;\n this.config = {\n wrap: true,\n direction: 'both',\n selectOnFocus: false,\n skipItem: (item) => item.hasAttribute('disabled') || item.disabled === true,\n ...config,\n };\n host.addController(this);\n }\n // eslint-disable-next-line class-methods-use-this\n hostConnected() {\n // Controller is ready when host connects\n }\n // eslint-disable-next-line class-methods-use-this\n hostDisconnected() {\n // Cleanup if needed\n }\n /**\n * Update tabindex values for all items\n * @param activeIndex - Index of the item that should be tabbable (default: 0 or first non-disabled)\n */\n updateTabindices(activeIndex) {\n const items = this.config.getItems();\n if (!items || items.length === 0) {\n return;\n }\n // Find the active index\n let targetIndex = activeIndex ?? 0;\n // If no active index specified, use first non-disabled item\n if (activeIndex === undefined) {\n targetIndex = items.findIndex((item) => !this.config.skipItem(item));\n if (targetIndex === -1) {\n targetIndex = 0; // Fallback to first item if all disabled\n }\n }\n // Set tabindex for all items\n items.forEach((item, index) => {\n const itemElement = item;\n if (this.config.skipItem(itemElement)) {\n // eslint-disable-next-line no-param-reassign\n itemElement.tabIndex = -1;\n }\n else {\n // eslint-disable-next-line no-param-reassign\n itemElement.tabIndex = index === targetIndex ? 0 : -1;\n }\n });\n }\n /**\n * Handle keyboard navigation\n * @param currentItem - The currently focused item\n * @param event - The keyboard event\n * @returns true if the event was handled, false otherwise\n */\n handleKeydown(currentItem, event) {\n const { direction } = this.config;\n const { key } = event;\n // Determine if this key should be handled based on direction\n const isVertical = key === 'ArrowUp' || key === 'ArrowDown';\n const isHorizontal = key === 'ArrowLeft' || key === 'ArrowRight';\n const isHome = key === 'Home';\n const isEnd = key === 'End';\n const shouldHandle = isHome ||\n isEnd ||\n (direction === 'both' && (isVertical || isHorizontal)) ||\n (direction === 'vertical' && isVertical) ||\n (direction === 'horizontal' && isHorizontal);\n if (!shouldHandle) {\n return false;\n }\n // Prevent default behavior (page scrolling)\n event.preventDefault();\n const items = this.config.getItems();\n const currentIndex = items.indexOf(currentItem);\n if (currentIndex === -1) {\n return false;\n }\n let nextIndex = currentIndex;\n // Handle Home/End keys\n if (isHome) {\n nextIndex = 0;\n }\n else if (isEnd) {\n nextIndex = items.length - 1;\n }\n else {\n // Handle arrow keys\n const isNext = key === 'ArrowDown' || key === 'ArrowRight';\n const isPrev = key === 'ArrowUp' || key === 'ArrowLeft';\n if (isNext) {\n nextIndex = this.getNextIndex(items, currentIndex, 1);\n }\n else if (isPrev) {\n nextIndex = this.getNextIndex(items, currentIndex, -1);\n }\n }\n // Skip disabled items\n nextIndex = this.findNextValidIndex(items, nextIndex, nextIndex > currentIndex ? 1 : -1);\n if (nextIndex !== -1 && nextIndex !== currentIndex) {\n const nextItem = items[nextIndex];\n // Update tabindices\n this.updateTabindices(nextIndex);\n // Focus the next item\n nextItem.focus();\n // Optionally select/activate the item\n if (this.config.selectOnFocus && this.config.onSelect) {\n this.config.onSelect(nextItem, event);\n }\n return true;\n }\n return false;\n }\n /**\n * Get the next index based on direction\n */\n getNextIndex(items, currentIndex, direction) {\n const { wrap } = this.config;\n let nextIndex = currentIndex + direction;\n if (wrap) {\n // Wrap around\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n else if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n }\n else {\n // Clamp to bounds\n nextIndex = Math.max(0, Math.min(items.length - 1, nextIndex));\n }\n return nextIndex;\n }\n /**\n * Find the next valid (non-disabled) index\n */\n findNextValidIndex(items, startIndex, direction) {\n const maxAttempts = items.length;\n let attempts = 0;\n let index = startIndex;\n while (attempts < maxAttempts) {\n if (!this.config.skipItem(items[index])) {\n return index;\n }\n index = this.getNextIndex(items, index, direction);\n attempts += 1;\n }\n // All items are disabled\n return -1;\n }\n /**\n * Set focus to a specific item\n */\n focusItem(item) {\n const items = this.config.getItems();\n const index = items.indexOf(item);\n if (index !== -1) {\n this.updateTabindices(index);\n item.focus();\n }\n }\n /**\n * Set focus to the first non-disabled item\n */\n focusFirst() {\n const items = this.config.getItems();\n const firstValidIndex = this.findNextValidIndex(items, 0, 1);\n if (firstValidIndex !== -1) {\n this.focusItem(items[firstValidIndex]);\n }\n }\n /**\n * Set focus to the last non-disabled item\n */\n focusLast() {\n const items = this.config.getItems();\n const lastValidIndex = this.findNextValidIndex(items, items.length - 1, -1);\n if (lastValidIndex !== -1) {\n this.focusItem(items[lastValidIndex]);\n }\n }\n}\n//# sourceMappingURL=roving-tabindex-controller.js.map","import { html, PropertyValues } from 'lit';\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js';\nimport { FormControl, FormControlController, RovingTabindexController } from '@italia/globals';\nimport type { ItRadio } from '@italia/radio';\nimport styles from './radio-group.scss';\n\n/**\n * Radio group component - manages a collection of radio buttons\n *\n * @element it-radio-group\n * @slot - Contains the `<it-radio>` elements\n *\n */\n@customElement('it-radio-group')\nexport class ItRadioGroup extends FormControl {\n static styles = styles;\n\n static formAssociated = true;\n\n /**\n * The name of the radio group, used for form submission\n */\n @property({ type: String })\n name = '';\n\n /**\n * The currently selected value\n */\n @property({ type: String, reflect: true })\n value = '';\n\n /**\n * Whether the radio group is disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Whether a selection is required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * Optional prop for visual styling of grouped radios (borders between radios)\n */\n @property({ type: Boolean, reflect: true })\n grouped = false;\n\n /**\n * Whether the radios are displayed inline (horizontally) or stacked (vertically)\n */\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n /**\n * Get all slotted radio buttons\n */\n @queryAssignedElements()\n private _radios!: ItRadio[];\n\n @queryAssignedElements({ slot: 'label' })\n private _label!: HTMLElement[];\n\n /**\n * Track if validation has been triggered (via reportValidity or setCustomValidity)\n * ARIA best practice: don't show aria-invalid until user attempts submission\n */\n @state()\n private _validationTriggered = false;\n\n /**\n * Roving tabindex controller for keyboard navigation\n */\n private rovingTabindex = new RovingTabindexController<ItRadio>(this, {\n getItems: () => this._radios,\n onSelect: (radio, event) => this.selectRadio(radio, event),\n direction: 'both',\n selectOnFocus: true,\n });\n\n /**\n * Form control integration\n */\n private _formController = new FormControlController(this as any, {\n value: () => this.value,\n // disabled: () => this.disabled,\n setValue: (control: FormControl, value: unknown) => {\n const radioGroup = control as ItRadioGroup;\n radioGroup.value = value as string;\n },\n });\n\n /**\n * Override: Custom validity check for radio group\n */\n override get validity(): ValidityState {\n // Fallback: create a custom ValidityState-like object\n const valid = !this.required || !!this.value;\n return {\n valid,\n valueMissing: this.required && !this.value,\n typeMismatch: false,\n patternMismatch: false,\n tooLong: false,\n tooShort: false,\n rangeUnderflow: false,\n rangeOverflow: false,\n stepMismatch: false,\n badInput: false,\n customError: false,\n } as ValidityState;\n }\n\n /**\n * Override: Check validity for radio group\n */\n override checkValidity(): boolean {\n if (this.required && !this.value) {\n return false;\n }\n return true;\n }\n\n /**\n * Override: Report validity for radio group\n */\n override reportValidity(): boolean {\n this._validationTriggered = true; // Mark that validation has been attempted\n const isValid = this.checkValidity();\n this.handleValidationMessages();\n this._updateInvalidState();\n return isValid;\n }\n\n /** Sets a custom validation message. Pass an empty string to restore validity. */\n public override setCustomValidity(message: string) {\n // Only trigger validation state if message is non-empty (actual error)\n // Empty message during init or after correction should not trigger invalid state initially\n if (message && message.length > 0) {\n this._validationTriggered = true;\n }\n\n this.validationMessage = message;\n this.formControlController.updateValidity();\n // Update aria-invalid on group and children immediately\n this._updateInvalidState();\n }\n\n protected override handleValidationMessages() {\n const _v = this.validity;\n if (!this.customValidation) {\n if (_v.valueMissing) {\n this.setCustomValidity(this.$t('validityRequired'));\n } else this.setCustomValidity('');\n }\n }\n\n private _updateInvalidState() {\n // Only show aria-invalid if validation has been triggered (ARIA best practice)\n if (!this._validationTriggered) {\n return;\n }\n\n const invalid = this.checkValidity() === false || !!this.validationMessage;\n if (invalid) this.setAttribute('aria-invalid', 'true');\n else this.removeAttribute('aria-invalid');\n this._radios?.forEach((r) => {\n if (invalid) r.setAttribute('aria-invalid', 'true');\n else r.removeAttribute('aria-invalid');\n });\n\n // Update validation message in light DOM\n this._updateValidationMessage();\n }\n\n /**\n * Update validation message in light DOM (for aria-describedby cross-boundary support)\n */\n private _updateValidationMessage() {\n const validityMessage = this.validationMessage;\n const messageId = `invalid-feedback-${this._id}`;\n\n // Find or create validation message element in light DOM\n let messageEl = this.querySelector(`[slot=\"validation-message\"]`);\n\n if (validityMessage && validityMessage.length > 0) {\n // Create message element if it doesn't exist\n if (!messageEl) {\n messageEl = document.createElement('div');\n messageEl.setAttribute('slot', 'validation-message');\n this.appendChild(messageEl);\n }\n\n // Update message content and attributes\n messageEl.id = messageId;\n messageEl.className = 'invalid-feedback form-feedback form-text form-feedback just-validate-error-label';\n messageEl.setAttribute('role', 'alert');\n messageEl.removeAttribute('hidden');\n\n const labelText = this._label?.[0]?.textContent || '';\n messageEl.innerHTML = `<span class=\"visually-hidden\">${labelText}: </span>${validityMessage}`;\n\n // Update aria-describedby on host\n const existingDescribedBy = this._ariaAttributes['aria-describedby'] || '';\n const ariaDescribedBy = existingDescribedBy ? `${existingDescribedBy} ${messageId}` : messageId;\n this.setAttribute('aria-describedby', ariaDescribedBy);\n } else {\n // Remove message element if validation passed\n if (messageEl) {\n messageEl.remove();\n }\n\n // Update aria-describedby (remove message id)\n const existingDescribedBy = this._ariaAttributes['aria-describedby'] || '';\n if (existingDescribedBy) {\n this.setAttribute('aria-describedby', existingDescribedBy);\n } else {\n this.removeAttribute('aria-describedby');\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n this._handleReady();\n this.setAttribute('role', 'radiogroup');\n }\n\n firstUpdated() {\n const checkedRadio = this.querySelector<ItRadio>('it-radio[checked]');\n if (checkedRadio) {\n this.value = checkedRadio.value;\n }\n this.updateRadios();\n }\n\n private async updateRadios() {\n if (!this.hasUpdated) {\n // Initial validation has to happen after the initial render to allow\n // the buttons to be queries from the rendered <slot> element\n await this.updateComplete;\n }\n const radios = this.querySelectorAll<ItRadio>('it-radio');\n // eslint-disable-next-line no-return-assign, no-param-reassign\n radios.forEach((r) => {\n // eslint-disable-next-line no-param-reassign\n r.checked = r.value === this.value;\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback?.();\n }\n\n /**\n * Sync group value from checked radio (initialization)\n */\n private _syncValueFromRadios() {\n if (!this._radios) {\n return;\n }\n\n // Find the first checked radio\n const checkedRadio = this._radios.find((r) => r.checked);\n if (checkedRadio) {\n // Sync the group value from the checked radio\n this.value = checkedRadio.value;\n }\n }\n\n /**\n * PUBLIC API: Called by radio buttons to select themselves\n */\n selectRadio(radio: ItRadio, event: KeyboardEvent | PointerEvent | MouseEvent): void {\n if (radio.disabled || this.disabled) {\n return;\n }\n\n this.value = radio.value;\n\n // Uncheck other radios using their public API\n this._radios.forEach((r) => {\n if (r !== radio) {\n // eslint-disable-next-line no-param-reassign\n r.checked = false;\n } else {\n // eslint-disable-next-line no-param-reassign\n r.checked = true;\n }\n });\n\n // If validation was already triggered, update state after selection\n if (this._validationTriggered) {\n // For native validation, clear error if now valid\n if (!this.customValidation) {\n this.handleValidationMessages();\n this._updateInvalidState();\n }\n // For custom validation (JustValidate), the external validator will call setCustomValidity\n // but we still update the state based on current validationMessage\n else {\n this._updateInvalidState();\n }\n }\n\n if (event.type === 'click' || event.type === 'pointerdown') {\n this._handleClick(event);\n } else {\n this._handleChange(event);\n }\n }\n\n /**\n * PUBLIC API: Handle keyboard navigation from radio buttons\n */\n handleRadioKeyDown(radio: ItRadio, event: KeyboardEvent): void {\n // Delegate to roving tabindex controller\n const handled = this.rovingTabindex.handleKeydown(radio, event);\n if (handled) this._handleFocus(event);\n else this._handleBlur(event);\n }\n\n /**\n * Synchronize radio button states with group state\n */\n private _updateRadiosState() {\n if (!this._radios || this._radios.length === 0) {\n return;\n }\n\n this._radios.forEach((radio) => {\n // Set checked state based on value\n // eslint-disable-next-line no-param-reassign\n radio.checked = radio.value === this.value;\n\n // Sync disabled state from group to radios\n // Note: We don't override individual radio's disabled state\n // If the group is disabled, all radios should be disabled\n // But individual radios can be disabled independently\n if (this.disabled) {\n // eslint-disable-next-line no-param-reassign\n radio.disabled = true;\n }\n });\n\n // Update tabindex using roving tabindex controller\n // Priority: checked and enabled > first enabled > 0\n let tabbableIndex = 0;\n\n // First, try to find a checked radio that is not disabled\n const checkedEnabledIndex = this._radios.findIndex((r) => r.checked && !r.disabled);\n if (checkedEnabledIndex >= 0) {\n tabbableIndex = checkedEnabledIndex;\n } else {\n // If no checked enabled radio, find the first enabled radio\n const firstEnabledIndex = this._radios.findIndex((r) => !r.disabled);\n if (firstEnabledIndex >= 0) {\n tabbableIndex = firstEnabledIndex;\n }\n // If all radios are disabled, tabbableIndex stays 0 (but controller will set all to -1)\n }\n\n this.rovingTabindex.updateTabindices(tabbableIndex);\n }\n\n /**\n * Sync group state (name, grouped, inline, required) to child radios\n * This replaces the need for requestUpdate() calls\n */\n private _syncGroupStateToRadios() {\n if (!this._radios || this._radios.length === 0) {\n return;\n }\n\n const groupState = {\n name: this.name,\n grouped: this.grouped,\n inline: this.inline,\n required: this.required,\n };\n\n this._radios.forEach((radio) => {\n radio.syncFromGroup(groupState);\n });\n }\n\n updated(changed: PropertyValues) {\n super.updated(changed);\n\n // Update radios when value or name changes\n if (changed.has('value')) {\n this._updateRadiosState();\n this.dispatchEvent(new Event('change', { bubbles: true }));\n // Re-validate after value change (for native validation) only if validation was already triggered\n if (!this.customValidation && this._validationTriggered) {\n this.handleValidationMessages();\n this._updateInvalidState();\n }\n }\n\n // If validation message changed, update aria-invalid on group and children\n if (changed.has('validationMessage')) {\n this._updateInvalidState();\n }\n\n // If relevant group properties changed, sync to child radios\n const relevant = ['grouped', 'inline', 'name', 'required', 'disabled'];\n const hasChanged = Array.from(changed.keys()).some((k) => relevant.includes(String(k)));\n if (hasChanged && this._radios?.length) {\n this._syncGroupStateToRadios();\n }\n }\n\n /**\n * Handle slot changes (when radios are added/removed)\n */\n private _handleSlotChange = () => {\n this._syncValueFromRadios();\n this._updateRadiosState();\n // Sync group state to newly added radios\n this._syncGroupStateToRadios();\n };\n\n private _handleLabelSlotChange = () => {\n const labelId = this.generateId('it-radio-group-label');\n this._label[0]?.setAttribute('id', labelId);\n this.setAttribute('aria-labelledby', labelId);\n };\n\n /**\n * Render the component\n */\n render() {\n const validityMessage = this.validationMessage;\n const invalid = validityMessage?.length > 0 || (!this.customValidation && this?.checkValidity() === false);\n\n const groupWrapperClasses = this.composeClass(\n 'it-radio-group',\n 'it-form__control',\n this.inline && !this.grouped ? 'it-radio-group-inline' : '',\n this.grouped && !this.inline ? 'it-radio-group-stacked' : '',\n invalid ? 'is-invalid' : '',\n !invalid && this._touched ? 'just-validate-success-field' : '',\n );\n\n return html`<slot name=\"label\" @slotchange=${this._handleLabelSlotChange}></slot>\n <div class=${groupWrapperClasses}>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n <slot name=\"validation-message\"></slot>`;\n }\n}\n\n// Declare custom element\ndeclare global {\n interface HTMLElementTagNameMap {\n 'it-radio-group': ItRadioGroup;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { BaseComponent } from '@italia/globals';
|
|
2
|
+
import { type ItRadioGroup } from '@italia/radio';
|
|
3
|
+
export declare class ItRadio extends BaseComponent {
|
|
4
|
+
static styles: import("lit").CSSResultGroup;
|
|
5
|
+
/** The radio's value attribute */
|
|
6
|
+
value: string;
|
|
7
|
+
/** Whether the radio is disabled */
|
|
8
|
+
disabled: boolean;
|
|
9
|
+
/** Draws the radio in a checked state. */
|
|
10
|
+
checked: boolean;
|
|
11
|
+
/** The input's help text. */
|
|
12
|
+
supportText: string;
|
|
13
|
+
/**
|
|
14
|
+
* Internal reactive state synced from group
|
|
15
|
+
* These replace the old getters that read from this.group
|
|
16
|
+
*/
|
|
17
|
+
private _name;
|
|
18
|
+
private _grouped;
|
|
19
|
+
private _required;
|
|
20
|
+
private _inline;
|
|
21
|
+
labelElements: HTMLElement[];
|
|
22
|
+
get label(): string;
|
|
23
|
+
get group(): ItRadioGroup | null;
|
|
24
|
+
get name(): string;
|
|
25
|
+
get grouped(): boolean;
|
|
26
|
+
get required(): boolean;
|
|
27
|
+
get inline(): boolean;
|
|
28
|
+
get invalid(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* PUBLIC API: Called by group to sync state
|
|
31
|
+
* This replaces the need for requestUpdate() calls
|
|
32
|
+
*/
|
|
33
|
+
syncFromGroup(groupState: {
|
|
34
|
+
name?: string;
|
|
35
|
+
grouped?: boolean;
|
|
36
|
+
required?: boolean;
|
|
37
|
+
inline?: boolean;
|
|
38
|
+
}): void;
|
|
39
|
+
/**
|
|
40
|
+
* Activate the radio via the group's public API
|
|
41
|
+
*/
|
|
42
|
+
private activate;
|
|
43
|
+
/**
|
|
44
|
+
* Handle keyup for Space key
|
|
45
|
+
*/
|
|
46
|
+
private handleKeyup;
|
|
47
|
+
/**
|
|
48
|
+
* Handle keydown - delegate arrow keys to the group
|
|
49
|
+
*/
|
|
50
|
+
private handleKeydown;
|
|
51
|
+
/**
|
|
52
|
+
* Handle click on the host
|
|
53
|
+
*/
|
|
54
|
+
private handleClick;
|
|
55
|
+
connectedCallback(): void;
|
|
56
|
+
disconnectedCallback(): void;
|
|
57
|
+
updated(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
58
|
+
/**
|
|
59
|
+
* Render internal structure (like Spectrum)
|
|
60
|
+
* Just visual elements, no role/aria/events here (they're on the host)
|
|
61
|
+
*/
|
|
62
|
+
private _renderInput;
|
|
63
|
+
render(): import("lit").TemplateResult<1>;
|
|
64
|
+
}
|
|
65
|
+
declare global {
|
|
66
|
+
interface HTMLElementTagNameMap {
|
|
67
|
+
'it-radio': ItRadio;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=it-radio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"it-radio.d.ts","sourceRoot":"","sources":["../../src/it-radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,qBACa,OAAQ,SAAQ,aAAa;IACxC,MAAM,CAAC,MAAM,+BAAU;IAEvB,kCAAkC;IAElC,KAAK,SAAM;IAEX,oCAAoC;IAEpC,QAAQ,UAAS;IAEjB,0CAA0C;IAE1C,OAAO,UAAS;IAEhB,6BAA6B;IAE7B,WAAW,SAAM;IAEjB;;;OAGG;IAEH,OAAO,CAAC,KAAK,CAAM;IAGnB,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,OAAO,CAAS;IAGxB,aAAa,EAAG,WAAW,EAAE,CAAC;IAE9B,IAAI,KAAK,IAAI,MAAM,CAKlB;IAED,IAAI,KAAK,IAAI,YAAY,GAAG,IAAI,CAE/B;IAGD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,OAAO,IAAI,OAAO,CAIrB;IAED;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAM3G;;OAEG;IAEH,OAAO,CAAC,QAAQ;IAchB;;OAEG;IACH,OAAO,CAAC,WAAW,CAKjB;IAEF;;OAEG;IACH,OAAO,CAAC,aAAa,CAoBnB;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW,CAEjB;IAEO,iBAAiB;IAiBjB,oBAAoB;IAOpB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC;IAwC1E;;;OAGG;IAEH,OAAO,CAAC,YAAY;IAYX,MAAM;CA+BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
|