@raintonic/formaui 0.2.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/CHANGELOG.md +7 -0
- package/README.md +145 -0
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +806 -0
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs +86 -0
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +1757 -0
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +287 -0
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-accordion.mjs +217 -0
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-alert.mjs +161 -0
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +726 -0
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-avatar.mjs +92 -0
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-badge.mjs +107 -0
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-big-menu.mjs +68 -0
- package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +55 -0
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-button-group.mjs +103 -0
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-button.mjs +241 -0
- package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-card.mjs +270 -0
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +295 -0
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs +631 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +1331 -0
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-divider.mjs +41 -0
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-drawer.mjs +190 -0
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-dynamic-form.mjs +266 -0
- package/fesm2022/raintonic-formaui-components-dynamic-form.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +33 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +246 -0
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-form-field.mjs +482 -0
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-icon.mjs +117 -0
- package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-input.mjs +327 -0
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-list.mjs +149 -0
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-menu.mjs +896 -0
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-number-input.mjs +345 -0
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-paginator.mjs +139 -0
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-password-input.mjs +306 -0
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-popover.mjs +451 -0
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +148 -0
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-radio.mjs +260 -0
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-select.mjs +1011 -0
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +150 -0
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-sidebar.mjs +257 -0
- package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs +50 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-slider.mjs +347 -0
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-spinner.mjs +63 -0
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-stepper.mjs +317 -0
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs +197 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tag.mjs +78 -0
- package/fesm2022/raintonic-formaui-components-tag.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +644 -0
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs +171 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +140 -0
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +555 -0
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +314 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +103 -0
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree.mjs +430 -0
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-core.mjs +62 -0
- package/fesm2022/raintonic-formaui-core.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs +798 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-notification.mjs +391 -0
- package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-theme.mjs +248 -0
- package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-test-utils.mjs +66 -0
- package/fesm2022/raintonic-formaui-test-utils.mjs.map +1 -0
- package/fesm2022/raintonic-formaui.mjs +15 -0
- package/fesm2022/raintonic-formaui.mjs.map +1 -0
- package/llms-full.txt +1627 -0
- package/llms.txt +60 -0
- package/package.json +251 -0
- package/styles/_fonts-entry.scss +3 -0
- package/styles/fonts/dm-mono-400-latin.woff2 +0 -0
- package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
- package/styles/fonts/inter-tight-latin.woff2 +0 -0
- package/styles/index.scss +127 -0
- package/styles/partials/_constants.scss +29 -0
- package/styles/partials/_fonts.scss +36 -0
- package/styles/partials/_grid.scss +171 -0
- package/styles/partials/_mixins.scss +145 -0
- package/styles/partials/_motion.scss +252 -0
- package/styles/partials/_theme.scss +275 -0
- package/styles/partials/_typography.scss +112 -0
- package/styles/partials/_utilities.scss +480 -0
- package/styles/partials/themes/_dark.scss +254 -0
- package/styles/partials/themes/_light.scss +254 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts +196 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-form-field.d.ts +62 -0
- package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts +843 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -0
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +112 -0
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -0
- package/types/raintonic-formaui-components-accordion.d.ts +124 -0
- package/types/raintonic-formaui-components-accordion.d.ts.map +1 -0
- package/types/raintonic-formaui-components-alert.d.ts +143 -0
- package/types/raintonic-formaui-components-alert.d.ts.map +1 -0
- package/types/raintonic-formaui-components-autocomplete.d.ts +193 -0
- package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -0
- package/types/raintonic-formaui-components-avatar.d.ts +52 -0
- package/types/raintonic-formaui-components-avatar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-badge.d.ts +47 -0
- package/types/raintonic-formaui-components-badge.d.ts.map +1 -0
- package/types/raintonic-formaui-components-big-menu.d.ts +62 -0
- package/types/raintonic-formaui-components-big-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-breadcrumb.d.ts +26 -0
- package/types/raintonic-formaui-components-breadcrumb.d.ts.map +1 -0
- package/types/raintonic-formaui-components-button-group.d.ts +61 -0
- package/types/raintonic-formaui-components-button-group.d.ts.map +1 -0
- package/types/raintonic-formaui-components-button.d.ts +116 -0
- package/types/raintonic-formaui-components-button.d.ts.map +1 -0
- package/types/raintonic-formaui-components-card.d.ts +191 -0
- package/types/raintonic-formaui-components-card.d.ts.map +1 -0
- package/types/raintonic-formaui-components-checkbox.d.ts +132 -0
- package/types/raintonic-formaui-components-checkbox.d.ts.map +1 -0
- package/types/raintonic-formaui-components-data-table.d.ts +368 -0
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -0
- package/types/raintonic-formaui-components-date-picker.d.ts +341 -0
- package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -0
- package/types/raintonic-formaui-components-divider.d.ts +21 -0
- package/types/raintonic-formaui-components-divider.d.ts.map +1 -0
- package/types/raintonic-formaui-components-drawer.d.ts +48 -0
- package/types/raintonic-formaui-components-drawer.d.ts.map +1 -0
- package/types/raintonic-formaui-components-dynamic-form.d.ts +412 -0
- package/types/raintonic-formaui-components-dynamic-form.d.ts.map +1 -0
- package/types/raintonic-formaui-components-empty-state.d.ts +14 -0
- package/types/raintonic-formaui-components-empty-state.d.ts.map +1 -0
- package/types/raintonic-formaui-components-file-upload.d.ts +77 -0
- package/types/raintonic-formaui-components-file-upload.d.ts.map +1 -0
- package/types/raintonic-formaui-components-form-field.d.ts +271 -0
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -0
- package/types/raintonic-formaui-components-icon.d.ts +61 -0
- package/types/raintonic-formaui-components-icon.d.ts.map +1 -0
- package/types/raintonic-formaui-components-input.d.ts +149 -0
- package/types/raintonic-formaui-components-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-list.d.ts +48 -0
- package/types/raintonic-formaui-components-list.d.ts.map +1 -0
- package/types/raintonic-formaui-components-menu.d.ts +403 -0
- package/types/raintonic-formaui-components-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-number-input.d.ts +127 -0
- package/types/raintonic-formaui-components-number-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-paginator.d.ts +37 -0
- package/types/raintonic-formaui-components-paginator.d.ts.map +1 -0
- package/types/raintonic-formaui-components-password-input.d.ts +111 -0
- package/types/raintonic-formaui-components-password-input.d.ts.map +1 -0
- package/types/raintonic-formaui-components-popover.d.ts +131 -0
- package/types/raintonic-formaui-components-popover.d.ts.map +1 -0
- package/types/raintonic-formaui-components-progressbar.d.ts +111 -0
- package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-radio.d.ts +95 -0
- package/types/raintonic-formaui-components-radio.d.ts.map +1 -0
- package/types/raintonic-formaui-components-select.d.ts +307 -0
- package/types/raintonic-formaui-components-select.d.ts.map +1 -0
- package/types/raintonic-formaui-components-side-panel.d.ts +51 -0
- package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -0
- package/types/raintonic-formaui-components-sidebar.d.ts +174 -0
- package/types/raintonic-formaui-components-sidebar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-skeleton.d.ts +20 -0
- package/types/raintonic-formaui-components-skeleton.d.ts.map +1 -0
- package/types/raintonic-formaui-components-slider.d.ts +108 -0
- package/types/raintonic-formaui-components-slider.d.ts.map +1 -0
- package/types/raintonic-formaui-components-spinner.d.ts +42 -0
- package/types/raintonic-formaui-components-spinner.d.ts.map +1 -0
- package/types/raintonic-formaui-components-stepper.d.ts +126 -0
- package/types/raintonic-formaui-components-stepper.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tab.d.ts +96 -0
- package/types/raintonic-formaui-components-tab.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tag.d.ts +34 -0
- package/types/raintonic-formaui-components-tag.d.ts.map +1 -0
- package/types/raintonic-formaui-components-time-picker.d.ts +172 -0
- package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -0
- package/types/raintonic-formaui-components-toggle.d.ts +70 -0
- package/types/raintonic-formaui-components-toggle.d.ts.map +1 -0
- package/types/raintonic-formaui-components-toolbar.d.ts +128 -0
- package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tooltip.d.ts +268 -0
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-select.d.ts +80 -0
- package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-table.d.ts +90 -0
- package/types/raintonic-formaui-components-tree-table.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree.d.ts +104 -0
- package/types/raintonic-formaui-components-tree.d.ts.map +1 -0
- package/types/raintonic-formaui-core.d.ts +115 -0
- package/types/raintonic-formaui-core.d.ts.map +1 -0
- package/types/raintonic-formaui-services-dialog.d.ts +451 -0
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -0
- package/types/raintonic-formaui-services-notification.d.ts +221 -0
- package/types/raintonic-formaui-services-notification.d.ts.map +1 -0
- package/types/raintonic-formaui-services-theme.d.ts +126 -0
- package/types/raintonic-formaui-services-theme.d.ts.map +1 -0
- package/types/raintonic-formaui-test-utils.d.ts +24 -0
- package/types/raintonic-formaui-test-utils.d.ts.map +1 -0
- package/types/raintonic-formaui.d.ts +4 -0
- package/types/raintonic-formaui.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-cdk-drag-drop.mjs","sources":["../../../lib/cdk/drag-drop/drag-registry.service.ts","../../../lib/cdk/drag-drop/auto-scroller.ts","../../../lib/cdk/drag-drop/drag-ref.ts","../../../lib/cdk/drag-drop/fui-drag.directive.ts","../../../lib/cdk/drag-drop/fui-drop-zone.directive.ts","../../../lib/cdk/drag-drop/fui-sortable.directive.ts","../../../lib/cdk/drag-drop/raintonic-formaui-cdk-drag-drop.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { FuiActiveDrag, FuiDropZoneRef, FuiPoint, FuiSortableRef } from './drag-drop.types';\n\n@Injectable({ providedIn: 'root' })\nexport class FuiDragRegistryService {\n readonly activeDrag = signal<FuiActiveDrag | null>(null);\n\n private _dropZones = new Set<FuiDropZoneRef>();\n private _sortables = new Set<FuiSortableRef>();\n\n registerDropZone(zone: FuiDropZoneRef): void {\n this._dropZones.add(zone);\n }\n\n unregisterDropZone(zone: FuiDropZoneRef): void {\n this._dropZones.delete(zone);\n }\n\n registerSortable(sortable: FuiSortableRef): void {\n this._sortables.add(sortable);\n }\n\n unregisterSortable(sortable: FuiSortableRef): void {\n this._sortables.delete(sortable);\n }\n\n startDrag(drag: FuiActiveDrag): void {\n this.activeDrag.set(drag);\n }\n\n updateDrag(position: FuiPoint, _event: PointerEvent): void {\n const active = this.activeDrag();\n if (active) {\n active.currentPosition = position;\n this.activeDrag.set({ ...active });\n }\n }\n\n endDrag(_event: PointerEvent): void {\n this.activeDrag.set(null);\n }\n\n cancelDrag(): void {\n this.activeDrag.set(null);\n }\n\n getDropZoneAtPoint(point: FuiPoint): FuiDropZoneRef | null {\n const preview = this.activeDrag()?.previewElement;\n if (preview) {\n preview.style.pointerEvents = 'none';\n }\n const elementAtPoint =\n typeof document.elementFromPoint === 'function' ? document.elementFromPoint(point.x, point.y) : null;\n if (preview) {\n preview.style.pointerEvents = '';\n }\n if (!elementAtPoint) {\n return null;\n }\n for (const zone of this._dropZones) {\n if (zone.element.nativeElement.contains(elementAtPoint)) {\n return zone;\n }\n }\n return null;\n }\n\n getSortableAtPoint(point: FuiPoint): FuiSortableRef | null {\n const preview = this.activeDrag()?.previewElement;\n if (preview) {\n preview.style.pointerEvents = 'none';\n }\n const elementAtPoint =\n typeof document.elementFromPoint === 'function' ? document.elementFromPoint(point.x, point.y) : null;\n if (preview) {\n preview.style.pointerEvents = '';\n }\n if (!elementAtPoint) {\n return null;\n }\n for (const sortable of this._sortables) {\n if (sortable.element.nativeElement.contains(elementAtPoint)) {\n return sortable;\n }\n }\n return null;\n }\n}\n","import { FuiPoint } from './drag-drop.types';\n\nexport class FuiAutoScroller {\n private _rafId: number | null = null;\n private _scrollNode: HTMLElement | null = null;\n private readonly SCROLL_PROXIMITY_THRESHOLD = 30;\n private readonly MAX_SCROLL_SPEED = 15;\n\n checkAutoScroll(pointerPosition: FuiPoint): void {\n const scrollNode = this._getScrollableAtPoint(pointerPosition);\n if (!scrollNode) {\n this._stopAutoScroll();\n return;\n }\n this._scrollNode = scrollNode;\n const rect = scrollNode.getBoundingClientRect();\n let speedX = 0;\n let speedY = 0;\n\n if (pointerPosition.y - rect.top < this.SCROLL_PROXIMITY_THRESHOLD) {\n speedY = -this._calculateSpeed(pointerPosition.y - rect.top);\n }\n if (rect.bottom - pointerPosition.y < this.SCROLL_PROXIMITY_THRESHOLD) {\n speedY = this._calculateSpeed(rect.bottom - pointerPosition.y);\n }\n if (pointerPosition.x - rect.left < this.SCROLL_PROXIMITY_THRESHOLD) {\n speedX = -this._calculateSpeed(pointerPosition.x - rect.left);\n }\n if (rect.right - pointerPosition.x < this.SCROLL_PROXIMITY_THRESHOLD) {\n speedX = this._calculateSpeed(rect.right - pointerPosition.x);\n }\n\n if (speedX !== 0 || speedY !== 0) {\n this._startAutoScroll(speedX, speedY);\n } else {\n this._stopAutoScroll();\n }\n }\n\n stop(): void {\n this._stopAutoScroll();\n }\n\n destroy(): void {\n this._stopAutoScroll();\n }\n\n private _calculateSpeed(distanceFromEdge: number): number {\n const ratio = 1 - distanceFromEdge / this.SCROLL_PROXIMITY_THRESHOLD;\n return Math.ceil(ratio * this.MAX_SCROLL_SPEED);\n }\n\n private _startAutoScroll(speedX: number, speedY: number): void {\n if (this._rafId !== null) {\n cancelAnimationFrame(this._rafId);\n }\n const scroll = (): void => {\n if (this._scrollNode) {\n this._scrollNode.scrollTop += speedY;\n this._scrollNode.scrollLeft += speedX;\n }\n this._rafId = requestAnimationFrame(scroll);\n };\n this._rafId = requestAnimationFrame(scroll);\n }\n\n private _stopAutoScroll(): void {\n if (this._rafId !== null) {\n cancelAnimationFrame(this._rafId);\n this._rafId = null;\n }\n }\n\n private _getScrollableAtPoint(point: FuiPoint): HTMLElement | null {\n if (typeof document.elementFromPoint !== 'function') {\n return null;\n }\n let element = document.elementFromPoint(point.x, point.y) as HTMLElement | null;\n while (element) {\n const style = window.getComputedStyle(element);\n if ((style.overflowY === 'auto' || style.overflowY === 'scroll') && element.scrollHeight > element.clientHeight) {\n return element;\n }\n if ((style.overflowX === 'auto' || style.overflowX === 'scroll') && element.scrollWidth > element.clientWidth) {\n return element;\n }\n element = element.parentElement;\n }\n return null;\n }\n}\n","import { FuiPoint } from './drag-drop.types';\n\n/**\n * Internal helper that tracks positional state for a single drag operation.\n * Used by FuiDragDirective to keep the directive itself cleaner.\n */\nexport class FuiDragRef {\n startPosition: FuiPoint = { x: 0, y: 0 };\n currentPosition: FuiPoint = { x: 0, y: 0 };\n private _active = false;\n\n get active(): boolean {\n return this._active;\n }\n\n start(x: number, y: number): void {\n this.startPosition = { x, y };\n this.currentPosition = { x, y };\n this._active = true;\n }\n\n move(x: number, y: number): void {\n this.currentPosition = { x, y };\n }\n\n get distance(): FuiPoint {\n return {\n x: this.currentPosition.x - this.startPosition.x,\n y: this.currentPosition.y - this.startPosition.y,\n };\n }\n\n reset(): void {\n this.startPosition = { x: 0, y: 0 };\n this.currentPosition = { x: 0, y: 0 };\n this._active = false;\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n output,\n Renderer2,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { FuiDragRegistryService } from './drag-registry.service';\nimport { FuiAutoScroller } from './auto-scroller';\nimport { FuiDragRef } from './drag-ref';\nimport { FuiDragAxis, FuiDragEvent, FuiDropEvent, FuiPoint } from './drag-drop.types';\n\n@Directive({\n selector: '[fuiDrag]',\n standalone: true,\n host: {\n class: 'fui-drag',\n '[class.fui-drag--dragging]': '_isDragging()',\n '[attr.aria-grabbed]': '_isDragging()',\n '[attr.aria-roledescription]': '\"draggable item\"',\n tabindex: '0',\n '(pointerdown)': '_onPointerDown($event)',\n '(keydown)': '_onKeydown($event)',\n },\n})\nexport class FuiDragDirective implements OnDestroy {\n readonly fuiDragData = input<any>(null);\n readonly fuiDragDisabled = input(false);\n readonly fuiDragLockAxis = input<FuiDragAxis>('free');\n readonly fuiDragPreviewTemplate = input<TemplateRef<any> | null>(null);\n readonly fuiDragPlaceholderTemplate = input<TemplateRef<any> | null>(null);\n readonly fuiDragBoundary = input<string | ElementRef | null>(null);\n\n readonly fuiDragStarted = output<FuiDragEvent>();\n readonly fuiDragMoved = output<FuiDragEvent>();\n readonly fuiDragEnded = output<FuiDragEvent>();\n readonly fuiDragDropped = output<FuiDropEvent>();\n\n readonly element = inject(ElementRef<HTMLElement>);\n readonly _isDragging = signal(false);\n\n private readonly _registry = inject(FuiDragRegistryService);\n private readonly _renderer = inject(Renderer2);\n private readonly _document = inject(DOCUMENT);\n private readonly _ngZone = inject(NgZone);\n private readonly _autoScroller = new FuiAutoScroller();\n private readonly _dragRef = new FuiDragRef();\n\n private _previewElement: HTMLElement | null = null;\n private _placeholderElement: HTMLElement | null = null;\n private _pointerMoveHandler: ((e: PointerEvent) => void) | null = null;\n private _pointerUpHandler: ((e: PointerEvent) => void) | null = null;\n private _boundaryRect: DOMRect | null = null;\n\n // Keyboard drag state\n private _keyboardDragging = false;\n private _keyboardPosition: FuiPoint = { x: 0, y: 0 };\n private readonly KEYBOARD_STEP = 10;\n\n _onPointerDown(event: PointerEvent): void {\n if (this.fuiDragDisabled() || event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n\n const startPosition: FuiPoint = { x: event.clientX, y: event.clientY };\n this._dragRef.start(startPosition.x, startPosition.y);\n this._resolveBoundary();\n\n this._previewElement = this._createPreview();\n this._updatePreviewPosition(startPosition);\n this._document.body.appendChild(this._previewElement);\n\n // Create placeholder at source location\n this._placeholderElement = this._createPlaceholder();\n this.element.nativeElement.parentNode?.insertBefore(\n this._placeholderElement,\n this.element.nativeElement.nextSibling,\n );\n\n this._isDragging.set(true);\n\n this._registry.startDrag({\n source: this,\n previewElement: this._previewElement,\n placeholderElement: this._placeholderElement,\n startPosition,\n currentPosition: { ...startPosition },\n data: this.fuiDragData(),\n });\n\n this.fuiDragStarted.emit({\n source: this,\n data: this.fuiDragData(),\n pointerPosition: startPosition,\n distance: { x: 0, y: 0 },\n event,\n });\n\n this._ngZone.runOutsideAngular(() => {\n this._pointerMoveHandler = (e: PointerEvent): void => {\n this._onPointerMove(e);\n };\n this._pointerUpHandler = (e: PointerEvent): void => {\n this._onPointerUp(e);\n };\n this._document.addEventListener('pointermove', this._pointerMoveHandler);\n this._document.addEventListener('pointerup', this._pointerUpHandler);\n });\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const position = this._applyConstraints({ x: event.clientX, y: event.clientY });\n this._dragRef.move(position.x, position.y);\n\n if (this._previewElement) {\n this._updatePreviewPosition(position);\n }\n\n this._autoScroller.checkAutoScroll(position);\n this._registry.updateDrag(position, event);\n\n this._ngZone.run(() => {\n this.fuiDragMoved.emit({\n source: this,\n data: this.fuiDragData(),\n pointerPosition: position,\n distance: this._dragRef.distance,\n event,\n });\n });\n }\n\n private _onPointerUp(event: PointerEvent): void {\n this._removeListeners();\n this._autoScroller.stop();\n\n const position: FuiPoint = { x: event.clientX, y: event.clientY };\n const dropZone = this._registry.getDropZoneAtPoint(position);\n\n if (dropZone && !dropZone.fuiDropZoneDisabled()) {\n const predicate = dropZone.fuiDropZonePredicate();\n const accepted = !predicate || predicate(this);\n\n if (accepted) {\n this._ngZone.run(() => {\n const dropEvent: FuiDropEvent = {\n source: this,\n dragData: this.fuiDragData(),\n dropZoneData: dropZone.fuiDropZoneData(),\n dropZone,\n isPointerOverContainer: true,\n };\n this.fuiDragDropped.emit(dropEvent);\n dropZone.fuiDropped.emit(dropEvent);\n });\n }\n }\n\n this._cleanupDrag();\n\n this._ngZone.run(() => {\n this._registry.endDrag(event);\n this.fuiDragEnded.emit({\n source: this,\n data: this.fuiDragData(),\n pointerPosition: position,\n distance: this._dragRef.distance,\n event,\n });\n this._isDragging.set(false);\n });\n\n this._dragRef.reset();\n }\n\n _onKeydown(event: KeyboardEvent): void {\n if (this.fuiDragDisabled()) {\n return;\n }\n\n if (!this._keyboardDragging) {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this._startKeyboardDrag();\n }\n return;\n }\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this._moveKeyboard(0, -this.KEYBOARD_STEP);\n break;\n case 'ArrowDown':\n event.preventDefault();\n this._moveKeyboard(0, this.KEYBOARD_STEP);\n break;\n case 'ArrowLeft':\n event.preventDefault();\n this._moveKeyboard(-this.KEYBOARD_STEP, 0);\n break;\n case 'ArrowRight':\n event.preventDefault();\n this._moveKeyboard(this.KEYBOARD_STEP, 0);\n break;\n case 'Escape':\n event.preventDefault();\n this._cancelKeyboardDrag();\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n this._endKeyboardDrag();\n break;\n }\n }\n\n private _startKeyboardDrag(): void {\n const rect = (this.element.nativeElement as HTMLElement).getBoundingClientRect();\n const startPosition: FuiPoint = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n };\n\n this._keyboardDragging = true;\n this._keyboardPosition = { ...startPosition };\n this._dragRef.start(startPosition.x, startPosition.y);\n\n this._previewElement = this._createPreview();\n this._updatePreviewPosition(startPosition);\n this._document.body.appendChild(this._previewElement);\n\n this._isDragging.set(true);\n this._registry.startDrag({\n source: this,\n previewElement: this._previewElement,\n startPosition,\n currentPosition: { ...startPosition },\n data: this.fuiDragData(),\n });\n }\n\n private _moveKeyboard(dx: number, dy: number): void {\n const axis = this.fuiDragLockAxis();\n if (axis === 'x') {\n dy = 0;\n }\n if (axis === 'y') {\n dx = 0;\n }\n\n this._keyboardPosition.x += dx;\n this._keyboardPosition.y += dy;\n this._dragRef.move(this._keyboardPosition.x, this._keyboardPosition.y);\n\n if (this._previewElement) {\n this._updatePreviewPosition(this._keyboardPosition);\n }\n }\n\n private _endKeyboardDrag(): void {\n const position = this._keyboardPosition;\n const dropZone = this._registry.getDropZoneAtPoint(position);\n\n if (dropZone && !dropZone.fuiDropZoneDisabled()) {\n const predicate = dropZone.fuiDropZonePredicate();\n const accepted = !predicate || predicate(this);\n\n if (accepted) {\n const dropEvent: FuiDropEvent = {\n source: this,\n dragData: this.fuiDragData(),\n dropZoneData: dropZone.fuiDropZoneData(),\n dropZone,\n isPointerOverContainer: true,\n };\n this.fuiDragDropped.emit(dropEvent);\n dropZone.fuiDropped.emit(dropEvent);\n }\n }\n\n this._cleanupDrag();\n this._registry.cancelDrag();\n this._isDragging.set(false);\n this._keyboardDragging = false;\n this._dragRef.reset();\n }\n\n private _cancelKeyboardDrag(): void {\n this._cleanupDrag();\n this._registry.cancelDrag();\n this._isDragging.set(false);\n this._keyboardDragging = false;\n this._dragRef.reset();\n }\n\n private _createPreview(): HTMLElement {\n const sourceEl = this.element.nativeElement;\n const rect = sourceEl.getBoundingClientRect();\n const preview = sourceEl.cloneNode(true) as HTMLElement;\n\n preview.classList.add('fui-drag-preview');\n preview.style.position = 'fixed';\n preview.style.width = `${rect.width}px`;\n preview.style.height = `${rect.height}px`;\n preview.style.zIndex = '10000';\n preview.style.pointerEvents = 'none';\n preview.style.margin = '0';\n\n return preview;\n }\n\n private _createPlaceholder(): HTMLElement {\n const sourceEl = this.element.nativeElement;\n const rect = sourceEl.getBoundingClientRect();\n const placeholder = this._document.createElement('div');\n\n placeholder.classList.add('fui-drag-placeholder');\n placeholder.style.width = `${rect.width}px`;\n placeholder.style.height = `${rect.height}px`;\n placeholder.style.boxSizing = 'border-box';\n\n return placeholder;\n }\n\n private _updatePreviewPosition(position: FuiPoint): void {\n if (!this._previewElement) {\n return;\n }\n const sourceRect = this.element.nativeElement.getBoundingClientRect();\n const offsetX = sourceRect.width / 2;\n const offsetY = sourceRect.height / 2;\n\n this._previewElement.style.left = `${position.x - offsetX}px`;\n this._previewElement.style.top = `${position.y - offsetY}px`;\n }\n\n private _applyConstraints(position: FuiPoint): FuiPoint {\n const axis = this.fuiDragLockAxis();\n const start = this._dragRef.startPosition;\n let { x, y } = position;\n\n if (axis === 'x') {\n y = start.y;\n } else if (axis === 'y') {\n x = start.x;\n }\n\n if (this._boundaryRect) {\n const rect = this._boundaryRect;\n x = Math.max(rect.left, Math.min(x, rect.right));\n y = Math.max(rect.top, Math.min(y, rect.bottom));\n }\n\n return { x, y };\n }\n\n /** Pattern allowing simple CSS selectors (tag, class, id, attribute selectors) */\n private static readonly _SAFE_SELECTOR_PATTERN = /^[a-zA-Z0-9\\-_.#\\[\\]=~|^$*:\" >,+()]+$/;\n\n private _resolveBoundary(): void {\n const boundary = this.fuiDragBoundary();\n if (!boundary) {\n this._boundaryRect = null;\n return;\n }\n\n let boundaryElement: HTMLElement | null = null;\n if (typeof boundary === 'string') {\n // Validate selector to prevent injection of malicious strings\n if (!FuiDragDirective._SAFE_SELECTOR_PATTERN.test(boundary)) {\n console.warn(`[FormaUI] Invalid drag boundary selector: \"${boundary}\"`);\n this._boundaryRect = null;\n return;\n }\n boundaryElement = this._document.querySelector(boundary);\n } else {\n boundaryElement = boundary.nativeElement;\n }\n\n this._boundaryRect = boundaryElement ? boundaryElement.getBoundingClientRect() : null;\n }\n\n private _cleanupDrag(): void {\n if (this._previewElement?.parentNode) {\n this._previewElement.parentNode.removeChild(this._previewElement);\n }\n this._previewElement = null;\n\n if (this._placeholderElement?.parentNode) {\n this._placeholderElement.parentNode.removeChild(this._placeholderElement);\n }\n this._placeholderElement = null;\n }\n\n private _removeListeners(): void {\n if (this._pointerMoveHandler) {\n this._document.removeEventListener('pointermove', this._pointerMoveHandler);\n this._pointerMoveHandler = null;\n }\n if (this._pointerUpHandler) {\n this._document.removeEventListener('pointerup', this._pointerUpHandler);\n this._pointerUpHandler = null;\n }\n }\n\n ngOnDestroy(): void {\n this._removeListeners();\n this._cleanupDrag();\n this._autoScroller.destroy();\n this._dragRef.reset();\n }\n}\n","import { Directive, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal } from '@angular/core';\nimport { FuiDragRegistryService } from './drag-registry.service';\nimport { FuiDragEvent, FuiDragSource, FuiDropEvent } from './drag-drop.types';\n\n@Directive({\n selector: '[fuiDropZone]',\n standalone: true,\n host: {\n class: 'fui-drop-zone',\n '[class.fui-drop-zone--active]': '_isActive()',\n '[class.fui-drop-zone--over]': '_isOver()',\n '[attr.aria-dropeffect]': '\"move\"',\n },\n})\nexport class FuiDropZoneDirective implements OnInit, OnDestroy {\n readonly fuiDropZoneData = input<any>(null);\n readonly fuiDropZoneDisabled = input(false);\n readonly fuiDropZonePredicate = input<((drag: FuiDragSource) => boolean) | null>(null);\n\n readonly fuiDropZoneEntered = output<FuiDragEvent>();\n readonly fuiDropZoneExited = output<FuiDragEvent>();\n readonly fuiDropped = output<FuiDropEvent>();\n\n readonly element = inject(ElementRef<HTMLElement>);\n readonly _isActive = signal(false);\n readonly _isOver = signal(false);\n\n private readonly _registry = inject(FuiDragRegistryService);\n private _wasOver = false;\n\n constructor() {\n effect(() => {\n const activeDrag = this._registry.activeDrag();\n if (this.fuiDropZoneDisabled()) {\n this._isActive.set(false);\n this._isOver.set(false);\n return;\n }\n\n if (activeDrag) {\n this._isActive.set(true);\n\n // Check if pointer is over this drop zone\n const rect = this.element.nativeElement.getBoundingClientRect();\n const pos = activeDrag.currentPosition;\n const isOver = pos.x >= rect.left && pos.x <= rect.right && pos.y >= rect.top && pos.y <= rect.bottom;\n\n this._isOver.set(isOver);\n\n if (isOver && !this._wasOver) {\n this.fuiDropZoneEntered.emit({\n source: activeDrag.source,\n data: activeDrag.data,\n pointerPosition: activeDrag.currentPosition,\n distance: {\n x: activeDrag.currentPosition.x - activeDrag.startPosition.x,\n y: activeDrag.currentPosition.y - activeDrag.startPosition.y,\n },\n dropZone: this,\n event: null!,\n });\n } else if (!isOver && this._wasOver) {\n this.fuiDropZoneExited.emit({\n source: activeDrag.source,\n data: activeDrag.data,\n pointerPosition: activeDrag.currentPosition,\n distance: {\n x: activeDrag.currentPosition.x - activeDrag.startPosition.x,\n y: activeDrag.currentPosition.y - activeDrag.startPosition.y,\n },\n dropZone: this,\n event: null!,\n });\n }\n\n this._wasOver = isOver;\n } else {\n this._isActive.set(false);\n this._isOver.set(false);\n this._wasOver = false;\n }\n });\n }\n\n ngOnInit(): void {\n this._registry.registerDropZone(this);\n }\n\n ngOnDestroy(): void {\n this._registry.unregisterDropZone(this);\n }\n}\n","import {\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n signal,\n} from '@angular/core';\nimport { FuiDragRegistryService } from './drag-registry.service';\nimport { FuiDragDirective } from './fui-drag.directive';\nimport { FuiSortEvent, FuiSortableRef, FuiTransferEvent } from './drag-drop.types';\n\n@Directive({\n selector: '[fuiSortable]',\n standalone: true,\n host: {\n class: 'fui-sortable',\n '[class.fui-sortable--dragging]': '_hasDragging()',\n },\n})\nexport class FuiSortableDirective implements OnInit, OnDestroy {\n readonly fuiSortableData = input.required<any[]>();\n readonly fuiSortableDisabled = input(false);\n readonly fuiSortableOrientation = input<'vertical' | 'horizontal'>('vertical');\n readonly fuiSortableConnectedTo = input<FuiSortableDirective[]>([]);\n\n readonly fuiSortableSorted = output<FuiSortEvent>();\n readonly fuiSortableTransferred = output<FuiTransferEvent>();\n\n readonly element = inject(ElementRef<HTMLElement>);\n readonly _hasDragging = signal(false);\n\n readonly _dragItems = contentChildren(FuiDragDirective);\n\n private readonly _registry = inject(FuiDragRegistryService);\n private _activeDragStartIndex = -1;\n private _currentHoverIndex = -1;\n private _siblingRects: DOMRect[] = [];\n\n constructor() {\n effect(() => {\n const activeDrag = this._registry.activeDrag();\n if (this.fuiSortableDisabled()) {\n this._hasDragging.set(false);\n return;\n }\n\n if (activeDrag) {\n const dragItems = this._dragItems();\n const sourceIndex = dragItems.indexOf(activeDrag.source as FuiDragDirective);\n\n if (sourceIndex >= 0) {\n // Drag originated from this container\n this._hasDragging.set(true);\n\n if (this._activeDragStartIndex === -1) {\n this._activeDragStartIndex = sourceIndex;\n this._captureRects();\n }\n\n const insertIndex = this._getInsertionIndex(activeDrag.currentPosition);\n if (insertIndex !== this._currentHoverIndex) {\n this._currentHoverIndex = insertIndex;\n this._applyTransforms(sourceIndex, insertIndex);\n }\n } else {\n // Check if drag is over this container (cross-container)\n const rect = this.element.nativeElement.getBoundingClientRect();\n const pos = activeDrag.currentPosition;\n const isOver = pos.x >= rect.left && pos.x <= rect.right && pos.y >= rect.top && pos.y <= rect.bottom;\n\n if (isOver) {\n this._hasDragging.set(true);\n } else {\n this._hasDragging.set(false);\n }\n }\n } else {\n // Drag ended - check if we need to emit sort/transfer events\n if (this._hasDragging() && this._activeDragStartIndex >= 0) {\n this._finalizeDrop();\n }\n this._hasDragging.set(false);\n this._activeDragStartIndex = -1;\n this._currentHoverIndex = -1;\n this._clearTransforms();\n }\n });\n }\n\n ngOnInit(): void {\n this._registry.registerSortable(this);\n }\n\n ngOnDestroy(): void {\n this._registry.unregisterSortable(this);\n }\n\n private _captureRects(): void {\n const items = this._dragItems();\n this._siblingRects = items.map((item) => item.element.nativeElement.getBoundingClientRect());\n }\n\n private _getInsertionIndex(position: { x: number; y: number }): number {\n const orientation = this.fuiSortableOrientation();\n\n for (let i = 0; i < this._siblingRects.length; i++) {\n const rect = this._siblingRects[i];\n if (orientation === 'vertical') {\n const midY = rect.top + rect.height / 2;\n if (position.y < midY) {\n return i;\n }\n } else {\n const midX = rect.left + rect.width / 2;\n if (position.x < midX) {\n return i;\n }\n }\n }\n\n return this._siblingRects.length;\n }\n\n private _applyTransforms(sourceIndex: number, insertIndex: number): void {\n const items = this._dragItems();\n const orientation = this.fuiSortableOrientation();\n\n items.forEach((item, i) => {\n if (i === sourceIndex) {\n return; // Skip the dragged item\n }\n\n const el = item.element.nativeElement as HTMLElement;\n let offset = 0;\n\n if (sourceIndex < insertIndex) {\n // Dragging down/right: shift items between source+1..insert up/left\n if (i > sourceIndex && i < insertIndex) {\n const rect = this._siblingRects[sourceIndex];\n offset = orientation === 'vertical' ? -rect.height : -rect.width;\n }\n } else if (sourceIndex > insertIndex) {\n // Dragging up/left: shift items between insert..source-1 down/right\n if (i >= insertIndex && i < sourceIndex) {\n const rect = this._siblingRects[sourceIndex];\n offset = orientation === 'vertical' ? rect.height : rect.width;\n }\n }\n\n if (orientation === 'vertical') {\n el.style.transform = offset ? `translateY(${offset}px)` : '';\n } else {\n el.style.transform = offset ? `translateX(${offset}px)` : '';\n }\n el.style.transition = 'transform 150ms ease';\n });\n }\n\n private _clearTransforms(): void {\n const items = this._dragItems();\n items.forEach((item) => {\n const el = item.element.nativeElement as HTMLElement;\n el.style.transform = '';\n el.style.transition = '';\n });\n }\n\n private _finalizeDrop(): void {\n if (this._currentHoverIndex >= 0 && this._currentHoverIndex !== this._activeDragStartIndex) {\n const data = [...this.fuiSortableData()];\n const [moved] = data.splice(this._activeDragStartIndex, 1);\n const adjustedIndex =\n this._currentHoverIndex > this._activeDragStartIndex ? this._currentHoverIndex - 1 : this._currentHoverIndex;\n data.splice(adjustedIndex, 0, moved);\n\n this.fuiSortableSorted.emit({\n data,\n previousIndex: this._activeDragStartIndex,\n currentIndex: adjustedIndex,\n container: this,\n });\n }\n this._clearTransforms();\n }\n\n /** Called by external sortables for cross-container transfers. */\n emitTransfer(item: any, previousContainer: FuiSortableRef, previousIndex: number, currentIndex: number): void {\n this.fuiSortableTransferred.emit({\n item,\n previousContainer,\n container: this,\n previousIndex,\n currentIndex,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAIa,sBAAsB,CAAA;AACxB,IAAA,UAAU,GAAG,MAAM,CAAuB,IAAI,iFAAC;AAEhD,IAAA,UAAU,GAAG,IAAI,GAAG,EAAkB;AACtC,IAAA,UAAU,GAAG,IAAI,GAAG,EAAkB;AAE9C,IAAA,gBAAgB,CAAC,IAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,kBAAkB,CAAC,IAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B;AAEA,IAAA,gBAAgB,CAAC,QAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,kBAAkB,CAAC,QAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IAClC;AAEA,IAAA,SAAS,CAAC,IAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;IAEA,UAAU,CAAC,QAAkB,EAAE,MAAoB,EAAA;AACjD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,eAAe,GAAG,QAAQ;YACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;QACpC;IACF;AAEA,IAAA,OAAO,CAAC,MAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,kBAAkB,CAAC,KAAe,EAAA;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,cAAc;QACjD,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;QACtC;QACA,MAAM,cAAc,GAClB,OAAO,QAAQ,CAAC,gBAAgB,KAAK,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;QACtG,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE;QAClC;QACA,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YAClC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AACvD,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,kBAAkB,CAAC,KAAe,EAAA;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,cAAc;QACjD,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;QACtC;QACA,MAAM,cAAc,GAClB,OAAO,QAAQ,CAAC,gBAAgB,KAAK,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;QACtG,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE;QAClC;QACA,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACtC,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC3D,gBAAA,OAAO,QAAQ;YACjB;QACF;AACA,QAAA,OAAO,IAAI;IACb;uGAlFW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCDrB,eAAe,CAAA;IAClB,MAAM,GAAkB,IAAI;IAC5B,WAAW,GAAuB,IAAI;IAC7B,0BAA0B,GAAG,EAAE;IAC/B,gBAAgB,GAAG,EAAE;AAEtC,IAAA,eAAe,CAAC,eAAyB,EAAA;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;QAC9D,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,eAAe,EAAE;YACtB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE;QAC/C,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,MAAM,GAAG,CAAC;AAEd,QAAA,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAClE,YAAA,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9D;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACrE,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;QAChE;AACA,QAAA,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACnE,YAAA,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/D;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,0BAA0B,EAAE;AACpE,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;QAC/D;QAEA,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;QACvC;aAAO;YACL,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,OAAO,GAAA;QACL,IAAI,CAAC,eAAe,EAAE;IACxB;AAEQ,IAAA,eAAe,CAAC,gBAAwB,EAAA;QAC9C,MAAM,KAAK,GAAG,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAAC,0BAA0B;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACjD;IAEQ,gBAAgB,CAAC,MAAc,EAAE,MAAc,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACxB,YAAA,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC;QACA,MAAM,MAAM,GAAG,MAAW;AACxB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,MAAM;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM;YACvC;AACA,YAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;AAC7C,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAC7C;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACxB,YAAA,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QACpB;IACF;AAEQ,IAAA,qBAAqB,CAAC,KAAe,EAAA;AAC3C,QAAA,IAAI,OAAO,QAAQ,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACnD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAuB;QAC/E,OAAO,OAAO,EAAE;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE;AAC/G,gBAAA,OAAO,OAAO;YAChB;YACA,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,KAAK,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE;AAC7G,gBAAA,OAAO,OAAO;YAChB;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QACjC;AACA,QAAA,OAAO,IAAI;IACb;AACD;;ACxFD;;;AAGG;MACU,UAAU,CAAA;IACrB,aAAa,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACxC,eAAe,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAClC,OAAO,GAAG,KAAK;AAEvB,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;IAEA,KAAK,CAAC,CAAS,EAAE,CAAS,EAAA;QACxB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;QAC7B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;IAEA,IAAI,CAAC,CAAS,EAAE,CAAS,EAAA;QACvB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;IACjC;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;SACjD;IACH;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;IACtB;AACD;;MCNY,gBAAgB,CAAA;AAClB,IAAA,WAAW,GAAG,KAAK,CAAM,IAAI,kFAAC;AAC9B,IAAA,eAAe,GAAG,KAAK,CAAC,KAAK,sFAAC;AAC9B,IAAA,eAAe,GAAG,KAAK,CAAc,MAAM,sFAAC;AAC5C,IAAA,sBAAsB,GAAG,KAAK,CAA0B,IAAI,6FAAC;AAC7D,IAAA,0BAA0B,GAAG,KAAK,CAA0B,IAAI,iGAAC;AACjE,IAAA,eAAe,GAAG,KAAK,CAA6B,IAAI,sFAAC;IAEzD,cAAc,GAAG,MAAM,EAAgB;IACvC,YAAY,GAAG,MAAM,EAAgB;IACrC,YAAY,GAAG,MAAM,EAAgB;IACrC,cAAc,GAAG,MAAM,EAAgB;AAEvC,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAEnB,IAAA,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC1C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,aAAa,GAAG,IAAI,eAAe,EAAE;AACrC,IAAA,QAAQ,GAAG,IAAI,UAAU,EAAE;IAEpC,eAAe,GAAuB,IAAI;IAC1C,mBAAmB,GAAuB,IAAI;IAC9C,mBAAmB,GAAuC,IAAI;IAC9D,iBAAiB,GAAuC,IAAI;IAC5D,aAAa,GAAmB,IAAI;;IAGpC,iBAAiB,GAAG,KAAK;IACzB,iBAAiB,GAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACnC,aAAa,GAAG,EAAE;AAEnC,IAAA,cAAc,CAAC,KAAmB,EAAA;QAChC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD;QACF;QAEA,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,aAAa,GAAa,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;AACtE,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;;AAGrD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CACjD,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CACvC;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACvB,YAAA,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;YAC5C,aAAa;AACb,YAAA,eAAe,EAAE,EAAE,GAAG,aAAa,EAAE;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACzB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACxB,YAAA,eAAe,EAAE,aAAa;YAC9B,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACxB,KAAK;AACN,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAe,KAAU;AACnD,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACxB,YAAA,CAAC;AACD,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAe,KAAU;AACjD,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACtB,YAAA,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC;YACxE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACtE,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,cAAc,CAAC,KAAmB,EAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC/E,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE1C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QACvC;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAE1C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACxB,gBAAA,eAAe,EAAE,QAAQ;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAChC,KAAK;AACN,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,YAAY,CAAC,KAAmB,EAAA;QACtC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAEzB,QAAA,MAAM,QAAQ,GAAa,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QAE5D,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,oBAAoB,EAAE;YACjD,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC;YAE9C,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AACpB,oBAAA,MAAM,SAAS,GAAiB;AAC9B,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,wBAAA,YAAY,EAAE,QAAQ,CAAC,eAAe,EAAE;wBACxC,QAAQ;AACR,wBAAA,sBAAsB,EAAE,IAAI;qBAC7B;AACD,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,oBAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,gBAAA,CAAC,CAAC;YACJ;QACF;QAEA,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACxB,gBAAA,eAAe,EAAE,QAAQ;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBAChC,KAAK;AACN,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;YAC3B;YACA;QACF;AAEA,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC1C;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;gBACzC;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC1C;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBACzC;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,mBAAmB,EAAE;gBAC1B;AACF,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;gBACvB;;IAEN;IAEQ,kBAAkB,GAAA;QACxB,MAAM,IAAI,GAAI,IAAI,CAAC,OAAO,CAAC,aAA6B,CAAC,qBAAqB,EAAE;AAChF,QAAA,MAAM,aAAa,GAAa;YAC9B,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;YAC7B,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;SAC9B;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,aAAa,EAAE;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;AAErD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACvB,YAAA,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,aAAa;AACb,YAAA,eAAe,EAAE,EAAE,GAAG,aAAa,EAAE;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;AACzB,SAAA,CAAC;IACJ;IAEQ,aAAa,CAAC,EAAU,EAAE,EAAU,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,EAAE,GAAG,CAAC;QACR;AACA,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,EAAE,GAAG,CAAC;QACR;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEtE,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACrD;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QAE5D,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,oBAAoB,EAAE;YACjD,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC;YAE9C,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,SAAS,GAAiB;AAC9B,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,oBAAA,YAAY,EAAE,QAAQ,CAAC,eAAe,EAAE;oBACxC,QAAQ;AACR,oBAAA,sBAAsB,EAAE,IAAI;iBAC7B;AACD,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,gBAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YACrC;QACF;QAEA,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAC3C,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAgB;AAEvD,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACzC,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI;QACvC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA,EAAA,CAAI;AACzC,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACpC,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;AAE1B,QAAA,OAAO,OAAO;IAChB;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAC3C,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AAEvD,QAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;QACjD,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI;QAC3C,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA,EAAA,CAAI;AAC7C,QAAA,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;AAE1C,QAAA,OAAO,WAAW;IACpB;AAEQ,IAAA,sBAAsB,CAAC,QAAkB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB;QACF;QACA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACrE,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;AACpC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;AAErC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI;AAC7D,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI;IAC9D;AAEQ,IAAA,iBAAiB,CAAC,QAAkB,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AACzC,QAAA,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ;AAEvB,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,YAAA,CAAC,GAAG,KAAK,CAAC,CAAC;QACb;AAAO,aAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACvB,YAAA,CAAC,GAAG,KAAK,CAAC,CAAC;QACb;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa;YAC/B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD;AAEA,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;IACjB;;AAGQ,IAAA,OAAgB,sBAAsB,GAAG,uCAAuC;IAEhF,gBAAgB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;QACvC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YACzB;QACF;QAEA,IAAI,eAAe,GAAuB,IAAI;AAC9C,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;;YAEhC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC3D,gBAAA,OAAO,CAAC,IAAI,CAAC,8CAA8C,QAAQ,CAAA,CAAA,CAAG,CAAC;AACvE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;gBACzB;YACF;YACA,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC1D;aAAO;AACL,YAAA,eAAe,GAAG,QAAQ,CAAC,aAAa;QAC1C;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC,qBAAqB,EAAE,GAAG,IAAI;IACvF;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;YACpC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;QACnE;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,UAAU,EAAE;YACxC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC3E;AACA,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACjC;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC3E,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QACjC;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACvE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;uGApYW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,4BAA4B,EAAE,eAAe;AAC7C,wBAAA,qBAAqB,EAAE,eAAe;AACtC,wBAAA,6BAA6B,EAAE,kBAAkB;AACjD,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,eAAe,EAAE,wBAAwB;AACzC,wBAAA,WAAW,EAAE,oBAAoB;AAClC,qBAAA;AACF,iBAAA;;;MChBY,oBAAoB,CAAA;AACtB,IAAA,eAAe,GAAG,KAAK,CAAM,IAAI,sFAAC;AAClC,IAAA,mBAAmB,GAAG,KAAK,CAAC,KAAK,0FAAC;AAClC,IAAA,oBAAoB,GAAG,KAAK,CAA4C,IAAI,2FAAC;IAE7E,kBAAkB,GAAG,MAAM,EAAgB;IAC3C,iBAAiB,GAAG,MAAM,EAAgB;IAC1C,UAAU,GAAG,MAAM,EAAgB;AAEnC,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AAEf,IAAA,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC;IACnD,QAAQ,GAAG,KAAK;AAExB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC9C,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACvB;YACF;YAEA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;;gBAGxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC/D,gBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe;AACtC,gBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM;AAErG,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AAExB,gBAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;wBAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,wBAAA,QAAQ,EAAE;4BACR,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;4BAC5D,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7D,yBAAA;AACD,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,KAAK,EAAE,IAAK;AACb,qBAAA,CAAC;gBACJ;AAAO,qBAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;wBAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,eAAe,EAAE,UAAU,CAAC,eAAe;AAC3C,wBAAA,QAAQ,EAAE;4BACR,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;4BAC5D,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7D,yBAAA;AACD,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,KAAK,EAAE,IAAK;AACb,qBAAA,CAAC;gBACJ;AAEA,gBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;YACxB;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YACvB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACvC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACzC;uGA5EW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,+BAA+B,EAAE,aAAa;AAC9C,wBAAA,6BAA6B,EAAE,WAAW;AAC1C,wBAAA,wBAAwB,EAAE,QAAQ;AACnC,qBAAA;AACF,iBAAA;;;MCWY,oBAAoB,CAAA;AACtB,IAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,qFAAS;AACzC,IAAA,mBAAmB,GAAG,KAAK,CAAC,KAAK,0FAAC;AAClC,IAAA,sBAAsB,GAAG,KAAK,CAA4B,UAAU,6FAAC;AACrE,IAAA,sBAAsB,GAAG,KAAK,CAAyB,EAAE,6FAAC;IAE1D,iBAAiB,GAAG,MAAM,EAAgB;IAC1C,sBAAsB,GAAG,MAAM,EAAoB;AAEnD,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;AAE5B,IAAA,UAAU,GAAG,eAAe,CAAC,gBAAgB,iFAAC;AAEtC,IAAA,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC;IACnD,qBAAqB,GAAG,CAAC,CAAC;IAC1B,kBAAkB,GAAG,CAAC,CAAC;IACvB,aAAa,GAAc,EAAE;AAErC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC9C,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC5B;YACF;YAEA,IAAI,UAAU,EAAE;AACd,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;gBACnC,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,MAA0B,CAAC;AAE5E,gBAAA,IAAI,WAAW,IAAI,CAAC,EAAE;;AAEpB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAE3B,oBAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,CAAC,EAAE;AACrC,wBAAA,IAAI,CAAC,qBAAqB,GAAG,WAAW;wBACxC,IAAI,CAAC,aAAa,EAAE;oBACtB;oBAEA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,eAAe,CAAC;AACvE,oBAAA,IAAI,WAAW,KAAK,IAAI,CAAC,kBAAkB,EAAE;AAC3C,wBAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW;AACrC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;oBACjD;gBACF;qBAAO;;oBAEL,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC/D,oBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe;AACtC,oBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM;oBAErG,IAAI,MAAM,EAAE;AACV,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC7B;yBAAO;AACL,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC9B;gBACF;YACF;iBAAO;;gBAEL,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,EAAE;oBAC1D,IAAI,CAAC,aAAa,EAAE;gBACtB;AACA,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;AAC/B,gBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,EAAE;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACvC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACzC;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;IAC9F;AAEQ,IAAA,kBAAkB,CAAC,QAAkC,EAAA;AAC3D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAEjD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAClC,YAAA,IAAI,WAAW,KAAK,UAAU,EAAE;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACvC,gBAAA,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE;AACrB,oBAAA,OAAO,CAAC;gBACV;YACF;iBAAO;gBACL,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AACvC,gBAAA,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE;AACrB,oBAAA,OAAO,CAAC;gBACV;YACF;QACF;AAEA,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM;IAClC;IAEQ,gBAAgB,CAAC,WAAmB,EAAE,WAAmB,EAAA;AAC/D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACxB,YAAA,IAAI,CAAC,KAAK,WAAW,EAAE;AACrB,gBAAA,OAAO;YACT;AAEA,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAA4B;YACpD,IAAI,MAAM,GAAG,CAAC;AAEd,YAAA,IAAI,WAAW,GAAG,WAAW,EAAE;;gBAE7B,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,GAAG,WAAW,EAAE;oBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AAC5C,oBAAA,MAAM,GAAG,WAAW,KAAK,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK;gBAClE;YACF;AAAO,iBAAA,IAAI,WAAW,GAAG,WAAW,EAAE;;gBAEpC,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,GAAG,WAAW,EAAE;oBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AAC5C,oBAAA,MAAM,GAAG,WAAW,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK;gBAChE;YACF;AAEA,YAAA,IAAI,WAAW,KAAK,UAAU,EAAE;AAC9B,gBAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,CAAA,WAAA,EAAc,MAAM,CAAA,GAAA,CAAK,GAAG,EAAE;YAC9D;iBAAO;AACL,gBAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,CAAA,WAAA,EAAc,MAAM,CAAA,GAAA,CAAK,GAAG,EAAE;YAC9D;AACA,YAAA,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB;AAC9C,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAA4B;AACpD,YAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;AACvB,YAAA,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,qBAAqB,EAAE;YAC1F,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACxC,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAC1D,MAAM,aAAa,GACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB;YAC9G,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC;AAEpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAC1B,IAAI;gBACJ,aAAa,EAAE,IAAI,CAAC,qBAAqB;AACzC,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA,CAAC;QACJ;QACA,IAAI,CAAC,gBAAgB,EAAE;IACzB;;AAGA,IAAA,YAAY,CAAC,IAAS,EAAE,iBAAiC,EAAE,aAAqB,EAAE,YAAoB,EAAA;AACpG,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,IAAI;YACJ,iBAAiB;AACjB,YAAA,SAAS,EAAE,IAAI;YACf,aAAa;YACb,YAAY;AACb,SAAA,CAAC;IACJ;uGA/KW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,g9BAYO,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAZ3C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,gCAAgC,EAAE,gBAAgB;AACnD,qBAAA;AACF,iBAAA;+uBAauC,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACpCxD;;AAEG;;;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { inject, Injector } from '@angular/core';
|
|
2
|
+
import { NgControl, Validators } from '@angular/forms';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Injects NgControl via the deferred `Promise.resolve()` pattern used throughout FormaUI.
|
|
6
|
+
* Must be called inside a constructor (injection context).
|
|
7
|
+
*
|
|
8
|
+
* @returns A ref object whose `ngControl` property is populated asynchronously.
|
|
9
|
+
*/
|
|
10
|
+
function injectNgControl() {
|
|
11
|
+
const injector = inject(Injector);
|
|
12
|
+
const ref = { ngControl: null };
|
|
13
|
+
void Promise.resolve().then(() => {
|
|
14
|
+
ref.ngControl = injector.get(NgControl, null, { self: true, optional: true });
|
|
15
|
+
if (ref.ngControl != null) {
|
|
16
|
+
ref.ngControl.valueAccessor = null; // Will be set by the component
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
return ref;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Updates the error state by comparing current control validity against the error-state matcher.
|
|
23
|
+
* Call this in `ngDoCheck`.
|
|
24
|
+
*
|
|
25
|
+
* @param ngControl - The NgControl instance (may be null).
|
|
26
|
+
* @param errorState - Writable signal holding the current error state.
|
|
27
|
+
* @param errorStateMatcher - Consumer-provided matcher, or null to use the default.
|
|
28
|
+
* @param defaultErrorStateMatcher - The injected DefaultErrorStateMatcher.
|
|
29
|
+
* @param parentForm - The parent NgForm, if any.
|
|
30
|
+
* @param parentFormGroup - The parent FormGroupDirective, if any.
|
|
31
|
+
* @param stateChanges - Subject to notify of state changes.
|
|
32
|
+
*/
|
|
33
|
+
function updateErrorState(ngControl, errorState, errorStateMatcher, defaultErrorStateMatcher, parentForm, parentFormGroup, stateChanges) {
|
|
34
|
+
if (!ngControl?.control)
|
|
35
|
+
return;
|
|
36
|
+
const isOldState = errorState();
|
|
37
|
+
const parent = parentFormGroup ?? parentForm;
|
|
38
|
+
const matcher = errorStateMatcher ?? defaultErrorStateMatcher;
|
|
39
|
+
const control = ngControl.control;
|
|
40
|
+
const isNewState = control ? matcher.isErrorState(control, parent) : false;
|
|
41
|
+
if (isNewState !== isOldState) {
|
|
42
|
+
errorState.set(isNewState);
|
|
43
|
+
stateChanges.next();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Syncs the `required` signal from the form control's validators.
|
|
48
|
+
* Call this in `ngDoCheck`.
|
|
49
|
+
*
|
|
50
|
+
* @param ngControl - The NgControl instance (may be null).
|
|
51
|
+
* @param required - Writable signal holding the current required state.
|
|
52
|
+
* @param stateChanges - Subject to notify of state changes.
|
|
53
|
+
*/
|
|
54
|
+
function syncRequiredState(ngControl, required, stateChanges) {
|
|
55
|
+
if (!ngControl?.control)
|
|
56
|
+
return;
|
|
57
|
+
const req = ngControl.control.hasValidator(Validators.required) ?? false;
|
|
58
|
+
if (req !== required()) {
|
|
59
|
+
required.set(req);
|
|
60
|
+
stateChanges.next();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Syncs the NgControl's disabled state into a local signal.
|
|
65
|
+
* Call this in `ngDoCheck`.
|
|
66
|
+
*
|
|
67
|
+
* @param ngControl - The NgControl instance (may be null).
|
|
68
|
+
* @param ngControlDisabled - Writable signal holding the mirrored disabled state.
|
|
69
|
+
* @param stateChanges - Subject to notify of state changes.
|
|
70
|
+
*/
|
|
71
|
+
function syncNgControlDisabled(ngControl, ngControlDisabled, stateChanges) {
|
|
72
|
+
if (!ngControl)
|
|
73
|
+
return;
|
|
74
|
+
const ncd = ngControl.disabled ?? false;
|
|
75
|
+
if (ncd !== ngControlDisabled()) {
|
|
76
|
+
ngControlDisabled.set(ncd);
|
|
77
|
+
stateChanges.next();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Generated bundle index. Do not edit.
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
export { injectNgControl, syncNgControlDisabled, syncRequiredState, updateErrorState };
|
|
86
|
+
//# sourceMappingURL=raintonic-formaui-cdk-form-field.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-cdk-form-field.mjs","sources":["../../../lib/cdk/form-field/form-control-base.ts","../../../lib/cdk/form-field/raintonic-formaui-cdk-form-field.ts"],"sourcesContent":["import { inject, Injector } from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\n\n/**\n * Reference holder for NgControl resolved via the deferred Promise.resolve() pattern.\n * This avoids circular DI when a component provides both NG_VALUE_ACCESSOR and injects NgControl.\n */\nexport interface NgControlRef {\n ngControl: NgControl | null;\n}\n\n/**\n * Injects NgControl via the deferred `Promise.resolve()` pattern used throughout FormaUI.\n * Must be called inside a constructor (injection context).\n *\n * @returns A ref object whose `ngControl` property is populated asynchronously.\n */\nexport function injectNgControl(): NgControlRef {\n const injector = inject(Injector);\n const ref: NgControlRef = { ngControl: null };\n\n void Promise.resolve().then(() => {\n ref.ngControl = injector.get(NgControl, null, { self: true, optional: true });\n if (ref.ngControl != null) {\n ref.ngControl.valueAccessor = null; // Will be set by the component\n }\n });\n\n return ref;\n}\n\n/**\n * Updates the error state by comparing current control validity against the error-state matcher.\n * Call this in `ngDoCheck`.\n *\n * @param ngControl - The NgControl instance (may be null).\n * @param errorState - Writable signal holding the current error state.\n * @param errorStateMatcher - Consumer-provided matcher, or null to use the default.\n * @param defaultErrorStateMatcher - The injected DefaultErrorStateMatcher.\n * @param parentForm - The parent NgForm, if any.\n * @param parentFormGroup - The parent FormGroupDirective, if any.\n * @param stateChanges - Subject to notify of state changes.\n */\nexport function updateErrorState(\n ngControl: NgControl | null,\n errorState: { (): boolean; set: (v: boolean) => void },\n errorStateMatcher: ErrorStateMatcher | null,\n defaultErrorStateMatcher: DefaultErrorStateMatcher,\n parentForm: NgForm | null,\n parentFormGroup: FormGroupDirective | null,\n stateChanges: Subject<void>,\n): void {\n if (!ngControl?.control) return;\n\n const isOldState = errorState();\n const parent = parentFormGroup ?? parentForm;\n const matcher = errorStateMatcher ?? defaultErrorStateMatcher;\n const control = ngControl.control as FormControl;\n const isNewState = control ? matcher.isErrorState(control, parent) : false;\n\n if (isNewState !== isOldState) {\n errorState.set(isNewState);\n stateChanges.next();\n }\n}\n\n/**\n * Syncs the `required` signal from the form control's validators.\n * Call this in `ngDoCheck`.\n *\n * @param ngControl - The NgControl instance (may be null).\n * @param required - Writable signal holding the current required state.\n * @param stateChanges - Subject to notify of state changes.\n */\nexport function syncRequiredState(\n ngControl: NgControl | null,\n required: { (): boolean; set: (v: boolean) => void },\n stateChanges: Subject<void>,\n): void {\n if (!ngControl?.control) return;\n\n const req = ngControl.control.hasValidator(Validators.required) ?? false;\n if (req !== required()) {\n required.set(req);\n stateChanges.next();\n }\n}\n\n/**\n * Syncs the NgControl's disabled state into a local signal.\n * Call this in `ngDoCheck`.\n *\n * @param ngControl - The NgControl instance (may be null).\n * @param ngControlDisabled - Writable signal holding the mirrored disabled state.\n * @param stateChanges - Subject to notify of state changes.\n */\nexport function syncNgControlDisabled(\n ngControl: NgControl | null,\n ngControlDisabled: { (): boolean; set: (v: boolean) => void },\n stateChanges: Subject<void>,\n): void {\n if (!ngControl) return;\n\n const ncd = ngControl.disabled ?? false;\n if (ncd !== ngControlDisabled()) {\n ngControlDisabled.set(ncd);\n stateChanges.next();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAcA;;;;;AAKG;SACa,eAAe,GAAA;AAC7B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,GAAG,GAAiB,EAAE,SAAS,EAAE,IAAI,EAAE;IAE7C,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;QAC/B,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7E,QAAA,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE;YACzB,GAAG,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;QACrC;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,GAAG;AACZ;AAEA;;;;;;;;;;;AAWG;AACG,SAAU,gBAAgB,CAC9B,SAA2B,EAC3B,UAAsD,EACtD,iBAA2C,EAC3C,wBAAkD,EAClD,UAAyB,EACzB,eAA0C,EAC1C,YAA2B,EAAA;IAE3B,IAAI,CAAC,SAAS,EAAE,OAAO;QAAE;AAEzB,IAAA,MAAM,UAAU,GAAG,UAAU,EAAE;AAC/B,IAAA,MAAM,MAAM,GAAG,eAAe,IAAI,UAAU;AAC5C,IAAA,MAAM,OAAO,GAAG,iBAAiB,IAAI,wBAAwB;AAC7D,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAsB;AAChD,IAAA,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK;AAE1E,IAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,QAAA,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QAC1B,YAAY,CAAC,IAAI,EAAE;IACrB;AACF;AAEA;;;;;;;AAOG;SACa,iBAAiB,CAC/B,SAA2B,EAC3B,QAAoD,EACpD,YAA2B,EAAA;IAE3B,IAAI,CAAC,SAAS,EAAE,OAAO;QAAE;AAEzB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;AACxE,IAAA,IAAI,GAAG,KAAK,QAAQ,EAAE,EAAE;AACtB,QAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QACjB,YAAY,CAAC,IAAI,EAAE;IACrB;AACF;AAEA;;;;;;;AAOG;SACa,qBAAqB,CACnC,SAA2B,EAC3B,iBAA6D,EAC7D,YAA2B,EAAA;AAE3B,IAAA,IAAI,CAAC,SAAS;QAAE;AAEhB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,IAAI,KAAK;AACvC,IAAA,IAAI,GAAG,KAAK,iBAAiB,EAAE,EAAE;AAC/B,QAAA,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,YAAY,CAAC,IAAI,EAAE;IACrB;AACF;;AC/GA;;AAEG;;;;"}
|