@kismet-ux/constellation 1.0.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/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/brand/Logo/index.d.ts +2 -0
- package/dist/brand/Logo/index.d.ts.map +1 -0
- package/dist/brand/Logo/logo.d.ts +23 -0
- package/dist/brand/Logo/logo.d.ts.map +1 -0
- package/dist/brand/Logo/logo.js +28 -0
- package/dist/brand/Logo/logo.js.map +1 -0
- package/dist/brand/Logo/logo.module.scss.js +4 -0
- package/dist/brand/Logo/logo.module.scss.js.map +1 -0
- package/dist/brand/index.d.ts +2 -0
- package/dist/brand/index.d.ts.map +1 -0
- package/dist/brand.d.ts +25 -0
- package/dist/brand.js +2 -0
- package/dist/brand.js.map +1 -0
- package/dist/form/Checkbox/checkbox.d.ts +20 -0
- package/dist/form/Checkbox/checkbox.d.ts.map +1 -0
- package/dist/form/Checkbox/checkbox.js +57 -0
- package/dist/form/Checkbox/checkbox.js.map +1 -0
- package/dist/form/Checkbox/checkbox.module.scss.js +4 -0
- package/dist/form/Checkbox/checkbox.module.scss.js.map +1 -0
- package/dist/form/Checkbox/index.d.ts +2 -0
- package/dist/form/Checkbox/index.d.ts.map +1 -0
- package/dist/form/DatePicker/date-picker.d.ts +5 -0
- package/dist/form/DatePicker/date-picker.d.ts.map +1 -0
- package/dist/form/DatePicker/date-picker.js +251 -0
- package/dist/form/DatePicker/date-picker.js.map +1 -0
- package/dist/form/DatePicker/date-picker.module.scss.js +4 -0
- package/dist/form/DatePicker/date-picker.module.scss.js.map +1 -0
- package/dist/form/DatePicker/index.d.ts +2 -0
- package/dist/form/DatePicker/index.d.ts.map +1 -0
- package/dist/form/DatePicker/use-calendar.d.ts +40 -0
- package/dist/form/DatePicker/use-calendar.d.ts.map +1 -0
- package/dist/form/DatePicker/use-calendar.js +202 -0
- package/dist/form/DatePicker/use-calendar.js.map +1 -0
- package/dist/form/Input/index.d.ts +2 -0
- package/dist/form/Input/index.d.ts.map +1 -0
- package/dist/form/Input/input.d.ts +23 -0
- package/dist/form/Input/input.d.ts.map +1 -0
- package/dist/form/Input/input.js +24 -0
- package/dist/form/Input/input.js.map +1 -0
- package/dist/form/Input/input.module.scss.js +4 -0
- package/dist/form/Input/input.module.scss.js.map +1 -0
- package/dist/form/Label/index.d.ts +2 -0
- package/dist/form/Label/index.d.ts.map +1 -0
- package/dist/form/Label/label-variants.d.ts +5 -0
- package/dist/form/Label/label-variants.d.ts.map +1 -0
- package/dist/form/Label/label-variants.js +29 -0
- package/dist/form/Label/label-variants.js.map +1 -0
- package/dist/form/Label/label.d.ts +10 -0
- package/dist/form/Label/label.d.ts.map +1 -0
- package/dist/form/Label/label.js +13 -0
- package/dist/form/Label/label.js.map +1 -0
- package/dist/form/Label/label.module.scss.js +4 -0
- package/dist/form/Label/label.module.scss.js.map +1 -0
- package/dist/form/Select/index.d.ts +2 -0
- package/dist/form/Select/index.d.ts.map +1 -0
- package/dist/form/Select/select.d.ts +16 -0
- package/dist/form/Select/select.d.ts.map +1 -0
- package/dist/form/Select/select.js +857 -0
- package/dist/form/Select/select.js.map +1 -0
- package/dist/form/Select/select.module.scss.js +4 -0
- package/dist/form/Select/select.module.scss.js.map +1 -0
- package/dist/form/index.d.ts +6 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form.d.ts +5 -0
- package/dist/form.js +6 -0
- package/dist/form.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/layout/index.d.ts +2 -0
- package/dist/hooks/layout/index.d.ts.map +1 -0
- package/dist/hooks/layout/use-sidebar.d.ts +3 -0
- package/dist/hooks/layout/use-sidebar.d.ts.map +1 -0
- package/dist/hooks/layout/use-sidebar.js +13 -0
- package/dist/hooks/layout/use-sidebar.js.map +1 -0
- package/dist/hooks/ui/index.d.ts +3 -0
- package/dist/hooks/ui/index.d.ts.map +1 -0
- package/dist/hooks/ui/use-alerts.d.ts +3 -0
- package/dist/hooks/ui/use-alerts.d.ts.map +1 -0
- package/dist/hooks/ui/use-alerts.js +13 -0
- package/dist/hooks/ui/use-alerts.js.map +1 -0
- package/dist/hooks/ui/use-table-sorting.d.ts +6 -0
- package/dist/hooks/ui/use-table-sorting.d.ts.map +1 -0
- package/dist/hooks/ui/use-table-sorting.js +37 -0
- package/dist/hooks/ui/use-table-sorting.js.map +1 -0
- package/dist/hooks/use-appearance.d.ts +10 -0
- package/dist/hooks/use-appearance.d.ts.map +1 -0
- package/dist/hooks/use-appearance.js +123 -0
- package/dist/hooks/use-appearance.js.map +1 -0
- package/dist/hooks/use-initials.d.ts +2 -0
- package/dist/hooks/use-initials.d.ts.map +1 -0
- package/dist/hooks/use-initials.js +17 -0
- package/dist/hooks/use-initials.js.map +1 -0
- package/dist/hooks/use-mobile-navigation.d.ts +2 -0
- package/dist/hooks/use-mobile-navigation.d.ts.map +1 -0
- package/dist/hooks/use-mobile-navigation.js +11 -0
- package/dist/hooks/use-mobile-navigation.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +6 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +73 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index-Bzf20Rpc.d.ts +120 -0
- package/dist/index-DECPicJT.d.ts +450 -0
- package/dist/index-qbk6vH0X.d.ts +186 -0
- package/dist/index.css +7611 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/input-CWHXOpeH.d.ts +25 -0
- package/dist/internal/create-ripple.d.ts +8 -0
- package/dist/internal/create-ripple.d.ts.map +1 -0
- package/dist/internal/create-ripple.js +24 -0
- package/dist/internal/create-ripple.js.map +1 -0
- package/dist/internal/merge-refs.d.ts +3 -0
- package/dist/internal/merge-refs.d.ts.map +1 -0
- package/dist/internal/merge-refs.js +15 -0
- package/dist/internal/merge-refs.js.map +1 -0
- package/dist/internal/slot.d.ts +7 -0
- package/dist/internal/slot.d.ts.map +1 -0
- package/dist/internal/slot.js +42 -0
- package/dist/internal/slot.js.map +1 -0
- package/dist/internal/use-animation-state.d.ts +12 -0
- package/dist/internal/use-animation-state.d.ts.map +1 -0
- package/dist/internal/use-animation-state.js +36 -0
- package/dist/internal/use-animation-state.js.map +1 -0
- package/dist/internal/use-focus-trap.d.ts +3 -0
- package/dist/internal/use-focus-trap.d.ts.map +1 -0
- package/dist/internal/use-focus-trap.js +55 -0
- package/dist/internal/use-focus-trap.js.map +1 -0
- package/dist/internal/use-scroll-lock.d.ts +2 -0
- package/dist/internal/use-scroll-lock.d.ts.map +1 -0
- package/dist/internal/use-scroll-lock.js +22 -0
- package/dist/internal/use-scroll-lock.js.map +1 -0
- package/dist/internal/with-aria-hidden-children.d.ts +16 -0
- package/dist/internal/with-aria-hidden-children.d.ts.map +1 -0
- package/dist/internal/with-aria-hidden-children.js +29 -0
- package/dist/internal/with-aria-hidden-children.js.map +1 -0
- package/dist/layout/AppContent/app-content.d.ts +3 -0
- package/dist/layout/AppContent/app-content.d.ts.map +1 -0
- package/dist/layout/AppContent/app-content.js +11 -0
- package/dist/layout/AppContent/app-content.js.map +1 -0
- package/dist/layout/AppContent/app-content.module.scss.js +4 -0
- package/dist/layout/AppContent/app-content.module.scss.js.map +1 -0
- package/dist/layout/AppContent/index.d.ts +2 -0
- package/dist/layout/AppContent/index.d.ts.map +1 -0
- package/dist/layout/AppFooter/app-footer.d.ts +10 -0
- package/dist/layout/AppFooter/app-footer.d.ts.map +1 -0
- package/dist/layout/AppFooter/app-footer.js +19 -0
- package/dist/layout/AppFooter/app-footer.js.map +1 -0
- package/dist/layout/AppFooter/app-footer.module.scss.js +4 -0
- package/dist/layout/AppFooter/app-footer.module.scss.js.map +1 -0
- package/dist/layout/AppFooter/index.d.ts +2 -0
- package/dist/layout/AppFooter/index.d.ts.map +1 -0
- package/dist/layout/AppShell/app-shell.d.ts +11 -0
- package/dist/layout/AppShell/app-shell.d.ts.map +1 -0
- package/dist/layout/AppShell/app-shell.js +9 -0
- package/dist/layout/AppShell/app-shell.js.map +1 -0
- package/dist/layout/AppShell/index.d.ts +2 -0
- package/dist/layout/AppShell/index.d.ts.map +1 -0
- package/dist/layout/AppSidebar/app-sidebar.d.ts +14 -0
- package/dist/layout/AppSidebar/app-sidebar.d.ts.map +1 -0
- package/dist/layout/AppSidebar/app-sidebar.js +71 -0
- package/dist/layout/AppSidebar/app-sidebar.js.map +1 -0
- package/dist/layout/AppSidebar/index.d.ts +2 -0
- package/dist/layout/AppSidebar/index.d.ts.map +1 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts +13 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts.map +1 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.js +20 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.js.map +1 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.module.scss.js +4 -0
- package/dist/layout/AppSidebarHeader/app-sidebar-header.module.scss.js.map +1 -0
- package/dist/layout/AppSidebarHeader/index.d.ts +2 -0
- package/dist/layout/AppSidebarHeader/index.d.ts.map +1 -0
- package/dist/layout/Collapse/collapse.d.ts +8 -0
- package/dist/layout/Collapse/collapse.d.ts.map +1 -0
- package/dist/layout/Collapse/collapse.js +14 -0
- package/dist/layout/Collapse/collapse.js.map +1 -0
- package/dist/layout/Collapse/collapse.module.scss.js +4 -0
- package/dist/layout/Collapse/collapse.module.scss.js.map +1 -0
- package/dist/layout/Collapse/index.d.ts +2 -0
- package/dist/layout/Collapse/index.d.ts.map +1 -0
- package/dist/layout/Column/column.d.ts +4 -0
- package/dist/layout/Column/column.d.ts.map +1 -0
- package/dist/layout/Column/column.js +14 -0
- package/dist/layout/Column/column.js.map +1 -0
- package/dist/layout/Column/column.module.scss.js +4 -0
- package/dist/layout/Column/column.module.scss.js.map +1 -0
- package/dist/layout/Column/index.d.ts +3 -0
- package/dist/layout/Column/index.d.ts.map +1 -0
- package/dist/layout/Container/container.d.ts +4 -0
- package/dist/layout/Container/container.d.ts.map +1 -0
- package/dist/layout/Container/container.js +35 -0
- package/dist/layout/Container/container.js.map +1 -0
- package/dist/layout/Container/container.module.scss.js +4 -0
- package/dist/layout/Container/container.module.scss.js.map +1 -0
- package/dist/layout/Container/index.d.ts +2 -0
- package/dist/layout/Container/index.d.ts.map +1 -0
- package/dist/layout/Grid/grid.d.ts +5 -0
- package/dist/layout/Grid/grid.d.ts.map +1 -0
- package/dist/layout/Grid/grid.js +15 -0
- package/dist/layout/Grid/grid.js.map +1 -0
- package/dist/layout/Grid/grid.module.scss.js +4 -0
- package/dist/layout/Grid/grid.module.scss.js.map +1 -0
- package/dist/layout/Grid/index.d.ts +2 -0
- package/dist/layout/Grid/index.d.ts.map +1 -0
- package/dist/layout/Row/index.d.ts +3 -0
- package/dist/layout/Row/index.d.ts.map +1 -0
- package/dist/layout/Row/row.d.ts +4 -0
- package/dist/layout/Row/row.d.ts.map +1 -0
- package/dist/layout/Row/row.js +19 -0
- package/dist/layout/Row/row.js.map +1 -0
- package/dist/layout/Row/row.module.scss.js +4 -0
- package/dist/layout/Row/row.module.scss.js.map +1 -0
- package/dist/layout/Sidebar/index.d.ts +2 -0
- package/dist/layout/Sidebar/index.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar-context.d.ts +4 -0
- package/dist/layout/Sidebar/sidebar-context.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar-context.js +6 -0
- package/dist/layout/Sidebar/sidebar-context.js.map +1 -0
- package/dist/layout/Sidebar/sidebar-variants.d.ts +5 -0
- package/dist/layout/Sidebar/sidebar-variants.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar-variants.js +23 -0
- package/dist/layout/Sidebar/sidebar-variants.js.map +1 -0
- package/dist/layout/Sidebar/sidebar.d.ts +57 -0
- package/dist/layout/Sidebar/sidebar.d.ts.map +1 -0
- package/dist/layout/Sidebar/sidebar.js +200 -0
- package/dist/layout/Sidebar/sidebar.js.map +1 -0
- package/dist/layout/Sidebar/sidebar.module.scss.js +4 -0
- package/dist/layout/Sidebar/sidebar.module.scss.js.map +1 -0
- package/dist/layout/Skeleton/index.d.ts +2 -0
- package/dist/layout/Skeleton/index.d.ts.map +1 -0
- package/dist/layout/Skeleton/skeleton.d.ts +3 -0
- package/dist/layout/Skeleton/skeleton.d.ts.map +1 -0
- package/dist/layout/Skeleton/skeleton.js +10 -0
- package/dist/layout/Skeleton/skeleton.js.map +1 -0
- package/dist/layout/Skeleton/skeleton.module.scss.js +4 -0
- package/dist/layout/Skeleton/skeleton.module.scss.js.map +1 -0
- package/dist/layout/index.d.ts +13 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout.d.ts +10 -0
- package/dist/layout.js +13 -0
- package/dist/layout.js.map +1 -0
- package/dist/nav-user-CJIcWKyY.d.ts +41 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.d.ts +7 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.js +19 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.module.scss.js +4 -0
- package/dist/navigation/Breadcrumbs/breadcrumbs.module.scss.js.map +1 -0
- package/dist/navigation/Breadcrumbs/index.d.ts +2 -0
- package/dist/navigation/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.d.ts +50 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.d.ts.map +1 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.js +193 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.js.map +1 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.module.scss.js +4 -0
- package/dist/navigation/DropdownMenu/dropdown-menu.module.scss.js.map +1 -0
- package/dist/navigation/DropdownMenu/index.d.ts +2 -0
- package/dist/navigation/DropdownMenu/index.d.ts.map +1 -0
- package/dist/navigation/Link/index.d.ts +2 -0
- package/dist/navigation/Link/index.d.ts.map +1 -0
- package/dist/navigation/Link/link-variants.d.ts +6 -0
- package/dist/navigation/Link/link-variants.d.ts.map +1 -0
- package/dist/navigation/Link/link-variants.js +33 -0
- package/dist/navigation/Link/link-variants.js.map +1 -0
- package/dist/navigation/Link/link.d.ts +24 -0
- package/dist/navigation/Link/link.d.ts.map +1 -0
- package/dist/navigation/Link/link.js +49 -0
- package/dist/navigation/Link/link.js.map +1 -0
- package/dist/navigation/Link/link.module.scss.js +4 -0
- package/dist/navigation/Link/link.module.scss.js.map +1 -0
- package/dist/navigation/NavUser/index.d.ts +2 -0
- package/dist/navigation/NavUser/index.d.ts.map +1 -0
- package/dist/navigation/NavUser/nav-user.d.ts +8 -0
- package/dist/navigation/NavUser/nav-user.d.ts.map +1 -0
- package/dist/navigation/NavUser/nav-user.js +15 -0
- package/dist/navigation/NavUser/nav-user.js.map +1 -0
- package/dist/navigation/NavUser/nav-user.module.scss.js +4 -0
- package/dist/navigation/NavUser/nav-user.module.scss.js.map +1 -0
- package/dist/navigation/Router/index.d.ts +2 -0
- package/dist/navigation/Router/index.d.ts.map +1 -0
- package/dist/navigation/Router/router-context.d.ts +38 -0
- package/dist/navigation/Router/router-context.d.ts.map +1 -0
- package/dist/navigation/Router/router-context.js +49 -0
- package/dist/navigation/Router/router-context.js.map +1 -0
- package/dist/navigation/Sheet/index.d.ts +2 -0
- package/dist/navigation/Sheet/index.d.ts.map +1 -0
- package/dist/navigation/Sheet/sheet.d.ts +36 -0
- package/dist/navigation/Sheet/sheet.d.ts.map +1 -0
- package/dist/navigation/Sheet/sheet.js +104 -0
- package/dist/navigation/Sheet/sheet.js.map +1 -0
- package/dist/navigation/Sheet/sheet.module.scss.js +4 -0
- package/dist/navigation/Sheet/sheet.module.scss.js.map +1 -0
- package/dist/navigation/index.d.ts +7 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation.d.ts +160 -0
- package/dist/navigation.js +7 -0
- package/dist/navigation.js.map +1 -0
- package/dist/row-CS9-talZ.d.ts +14 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.d.ts +3 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.d.ts.map +1 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.js +27 -0
- package/dist/settings/AppearanceDropdown/appearance-dropdown.js.map +1 -0
- package/dist/settings/AppearanceDropdown/index.d.ts +2 -0
- package/dist/settings/AppearanceDropdown/index.d.ts.map +1 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.d.ts +7 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.d.ts.map +1 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.js +23 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.js.map +1 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.module.scss.js +4 -0
- package/dist/settings/AppearanceTabs/appearance-tabs.module.scss.js.map +1 -0
- package/dist/settings/AppearanceTabs/index.d.ts +2 -0
- package/dist/settings/AppearanceTabs/index.d.ts.map +1 -0
- package/dist/settings/index.d.ts +3 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings.d.ts +10 -0
- package/dist/settings.js +3 -0
- package/dist/settings.js.map +1 -0
- package/dist/styles/index.d.ts +2 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/tooltip-XagXjWLB.d.ts +41 -0
- package/dist/types/app.d.ts +7 -0
- package/dist/types/app.d.ts.map +1 -0
- package/dist/types/form/date-picker.d.ts +19 -0
- package/dist/types/form/date-picker.d.ts.map +1 -0
- package/dist/types/form/select.d.ts +52 -0
- package/dist/types/form/select.d.ts.map +1 -0
- package/dist/types/form/theme.d.ts +2 -0
- package/dist/types/form/theme.d.ts.map +1 -0
- package/dist/types/form/upload.d.ts +4 -0
- package/dist/types/form/upload.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/layout/column.d.ts +11 -0
- package/dist/types/layout/column.d.ts.map +1 -0
- package/dist/types/layout/container.d.ts +18 -0
- package/dist/types/layout/container.d.ts.map +1 -0
- package/dist/types/layout/grid.d.ts +23 -0
- package/dist/types/layout/grid.d.ts.map +1 -0
- package/dist/types/layout/row.d.ts +12 -0
- package/dist/types/layout/row.d.ts.map +1 -0
- package/dist/types/layout/sidebar.d.ts +14 -0
- package/dist/types/layout/sidebar.d.ts.map +1 -0
- package/dist/types/navigation.d.ts +30 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/ui/alerts.d.ts +20 -0
- package/dist/types/ui/alerts.d.ts.map +1 -0
- package/dist/types/ui/pagination.d.ts +10 -0
- package/dist/types/ui/pagination.d.ts.map +1 -0
- package/dist/types/ui/table.d.ts +11 -0
- package/dist/types/ui/table.d.ts.map +1 -0
- package/dist/typography/Heading/heading.d.ts +21 -0
- package/dist/typography/Heading/heading.d.ts.map +1 -0
- package/dist/typography/Heading/heading.js +21 -0
- package/dist/typography/Heading/heading.js.map +1 -0
- package/dist/typography/Heading/heading.module.scss.js +4 -0
- package/dist/typography/Heading/heading.module.scss.js.map +1 -0
- package/dist/typography/Heading/index.d.ts +2 -0
- package/dist/typography/Heading/index.d.ts.map +1 -0
- package/dist/typography/TruncatedText/index.d.ts +2 -0
- package/dist/typography/TruncatedText/index.d.ts.map +1 -0
- package/dist/typography/TruncatedText/truncated-text.d.ts +15 -0
- package/dist/typography/TruncatedText/truncated-text.d.ts.map +1 -0
- package/dist/typography/TruncatedText/truncated-text.js +61 -0
- package/dist/typography/TruncatedText/truncated-text.js.map +1 -0
- package/dist/typography/TruncatedText/truncated-text.module.scss.js +4 -0
- package/dist/typography/TruncatedText/truncated-text.module.scss.js.map +1 -0
- package/dist/typography/Typography/index.d.ts +2 -0
- package/dist/typography/Typography/index.d.ts.map +1 -0
- package/dist/typography/Typography/typography-variants.d.ts +9 -0
- package/dist/typography/Typography/typography-variants.d.ts.map +1 -0
- package/dist/typography/Typography/typography-variants.js +75 -0
- package/dist/typography/Typography/typography-variants.js.map +1 -0
- package/dist/typography/Typography/typography.d.ts +19 -0
- package/dist/typography/Typography/typography.d.ts.map +1 -0
- package/dist/typography/Typography/typography.js +43 -0
- package/dist/typography/Typography/typography.js.map +1 -0
- package/dist/typography/Typography/typography.module.scss.js +4 -0
- package/dist/typography/Typography/typography.module.scss.js.map +1 -0
- package/dist/typography/index.d.ts +4 -0
- package/dist/typography/index.d.ts.map +1 -0
- package/dist/typography-DOZHFR5A.d.ts +21 -0
- package/dist/typography.d.ts +37 -0
- package/dist/typography.js +4 -0
- package/dist/typography.js.map +1 -0
- package/dist/ui/Alert/alert-context.d.ts +3 -0
- package/dist/ui/Alert/alert-context.d.ts.map +1 -0
- package/dist/ui/Alert/alert-context.js +6 -0
- package/dist/ui/Alert/alert-context.js.map +1 -0
- package/dist/ui/Alert/alert-persist.d.ts +4 -0
- package/dist/ui/Alert/alert-persist.d.ts.map +1 -0
- package/dist/ui/Alert/alert-persist.js +27 -0
- package/dist/ui/Alert/alert-persist.js.map +1 -0
- package/dist/ui/Alert/alert-provider.d.ts +6 -0
- package/dist/ui/Alert/alert-provider.d.ts.map +1 -0
- package/dist/ui/Alert/alert-provider.js +57 -0
- package/dist/ui/Alert/alert-provider.js.map +1 -0
- package/dist/ui/Alert/alert-variants.d.ts +4 -0
- package/dist/ui/Alert/alert-variants.d.ts.map +1 -0
- package/dist/ui/Alert/alert-variants.js +23 -0
- package/dist/ui/Alert/alert-variants.js.map +1 -0
- package/dist/ui/Alert/alert.d.ts +24 -0
- package/dist/ui/Alert/alert.d.ts.map +1 -0
- package/dist/ui/Alert/alert.js +37 -0
- package/dist/ui/Alert/alert.js.map +1 -0
- package/dist/ui/Alert/alert.module.scss.js +4 -0
- package/dist/ui/Alert/alert.module.scss.js.map +1 -0
- package/dist/ui/Alert/index.d.ts +4 -0
- package/dist/ui/Alert/index.d.ts.map +1 -0
- package/dist/ui/Avatar/avatar.d.ts +9 -0
- package/dist/ui/Avatar/avatar.d.ts.map +1 -0
- package/dist/ui/Avatar/avatar.js +29 -0
- package/dist/ui/Avatar/avatar.js.map +1 -0
- package/dist/ui/Avatar/avatar.module.scss.js +4 -0
- package/dist/ui/Avatar/avatar.module.scss.js.map +1 -0
- package/dist/ui/Avatar/index.d.ts +2 -0
- package/dist/ui/Avatar/index.d.ts.map +1 -0
- package/dist/ui/Button/button-variants.d.ts +8 -0
- package/dist/ui/Button/button-variants.d.ts.map +1 -0
- package/dist/ui/Button/button-variants.js +45 -0
- package/dist/ui/Button/button-variants.js.map +1 -0
- package/dist/ui/Button/button.d.ts +9 -0
- package/dist/ui/Button/button.d.ts.map +1 -0
- package/dist/ui/Button/button.js +65 -0
- package/dist/ui/Button/button.js.map +1 -0
- package/dist/ui/Button/button.module.scss.js +4 -0
- package/dist/ui/Button/button.module.scss.js.map +1 -0
- package/dist/ui/Button/index.d.ts +2 -0
- package/dist/ui/Button/index.d.ts.map +1 -0
- package/dist/ui/Chip/chip-variants.d.ts +6 -0
- package/dist/ui/Chip/chip-variants.d.ts.map +1 -0
- package/dist/ui/Chip/chip-variants.js +32 -0
- package/dist/ui/Chip/chip-variants.js.map +1 -0
- package/dist/ui/Chip/chip.d.ts +8 -0
- package/dist/ui/Chip/chip.d.ts.map +1 -0
- package/dist/ui/Chip/chip.js +13 -0
- package/dist/ui/Chip/chip.js.map +1 -0
- package/dist/ui/Chip/chip.module.scss.js +4 -0
- package/dist/ui/Chip/chip.module.scss.js.map +1 -0
- package/dist/ui/Chip/index.d.ts +2 -0
- package/dist/ui/Chip/index.d.ts.map +1 -0
- package/dist/ui/CodeBlock/code-block-variants.d.ts +5 -0
- package/dist/ui/CodeBlock/code-block-variants.d.ts.map +1 -0
- package/dist/ui/CodeBlock/code-block-variants.js +29 -0
- package/dist/ui/CodeBlock/code-block-variants.js.map +1 -0
- package/dist/ui/CodeBlock/code-block.d.ts +20 -0
- package/dist/ui/CodeBlock/code-block.d.ts.map +1 -0
- package/dist/ui/CodeBlock/code-block.js +70 -0
- package/dist/ui/CodeBlock/code-block.js.map +1 -0
- package/dist/ui/CodeBlock/code-block.module.scss.js +4 -0
- package/dist/ui/CodeBlock/code-block.module.scss.js.map +1 -0
- package/dist/ui/CodeBlock/index.d.ts +2 -0
- package/dist/ui/CodeBlock/index.d.ts.map +1 -0
- package/dist/ui/DevIndicator/dev-indicator.d.ts +5 -0
- package/dist/ui/DevIndicator/dev-indicator.d.ts.map +1 -0
- package/dist/ui/DevIndicator/dev-indicator.js +20 -0
- package/dist/ui/DevIndicator/dev-indicator.js.map +1 -0
- package/dist/ui/DevIndicator/dev-indicator.module.scss.js +4 -0
- package/dist/ui/DevIndicator/dev-indicator.module.scss.js.map +1 -0
- package/dist/ui/DevIndicator/index.d.ts +2 -0
- package/dist/ui/DevIndicator/index.d.ts.map +1 -0
- package/dist/ui/Dialog/dialog.d.ts +50 -0
- package/dist/ui/Dialog/dialog.d.ts.map +1 -0
- package/dist/ui/Dialog/dialog.js +133 -0
- package/dist/ui/Dialog/dialog.js.map +1 -0
- package/dist/ui/Dialog/dialog.module.scss.js +4 -0
- package/dist/ui/Dialog/dialog.module.scss.js.map +1 -0
- package/dist/ui/Dialog/index.d.ts +2 -0
- package/dist/ui/Dialog/index.d.ts.map +1 -0
- package/dist/ui/EmptyState/empty-state-variants.d.ts +5 -0
- package/dist/ui/EmptyState/empty-state-variants.d.ts.map +1 -0
- package/dist/ui/EmptyState/empty-state-variants.js +29 -0
- package/dist/ui/EmptyState/empty-state-variants.js.map +1 -0
- package/dist/ui/EmptyState/empty-state.d.ts +16 -0
- package/dist/ui/EmptyState/empty-state.d.ts.map +1 -0
- package/dist/ui/EmptyState/empty-state.js +13 -0
- package/dist/ui/EmptyState/empty-state.js.map +1 -0
- package/dist/ui/EmptyState/empty-state.module.scss.js +4 -0
- package/dist/ui/EmptyState/empty-state.module.scss.js.map +1 -0
- package/dist/ui/EmptyState/index.d.ts +2 -0
- package/dist/ui/EmptyState/index.d.ts.map +1 -0
- package/dist/ui/Icon/icon-variants.d.ts +7 -0
- package/dist/ui/Icon/icon-variants.d.ts.map +1 -0
- package/dist/ui/Icon/icon-variants.js +43 -0
- package/dist/ui/Icon/icon-variants.js.map +1 -0
- package/dist/ui/Icon/icon.d.ts +44 -0
- package/dist/ui/Icon/icon.d.ts.map +1 -0
- package/dist/ui/Icon/icon.js +41 -0
- package/dist/ui/Icon/icon.js.map +1 -0
- package/dist/ui/Icon/icon.module.scss.js +4 -0
- package/dist/ui/Icon/icon.module.scss.js.map +1 -0
- package/dist/ui/Icon/index.d.ts +2 -0
- package/dist/ui/Icon/index.d.ts.map +1 -0
- package/dist/ui/List/index.d.ts +2 -0
- package/dist/ui/List/index.d.ts.map +1 -0
- package/dist/ui/List/list.d.ts +14 -0
- package/dist/ui/List/list.d.ts.map +1 -0
- package/dist/ui/List/list.js +20 -0
- package/dist/ui/List/list.js.map +1 -0
- package/dist/ui/List/list.module.scss.js +4 -0
- package/dist/ui/List/list.module.scss.js.map +1 -0
- package/dist/ui/Pagination/index.d.ts +2 -0
- package/dist/ui/Pagination/index.d.ts.map +1 -0
- package/dist/ui/Pagination/pagination.d.ts +5 -0
- package/dist/ui/Pagination/pagination.d.ts.map +1 -0
- package/dist/ui/Pagination/pagination.js +37 -0
- package/dist/ui/Pagination/pagination.js.map +1 -0
- package/dist/ui/Pagination/pagination.module.scss.js +4 -0
- package/dist/ui/Pagination/pagination.module.scss.js.map +1 -0
- package/dist/ui/ProgressBar/index.d.ts +2 -0
- package/dist/ui/ProgressBar/index.d.ts.map +1 -0
- package/dist/ui/ProgressBar/progress-bar-variants.d.ts +9 -0
- package/dist/ui/ProgressBar/progress-bar-variants.d.ts.map +1 -0
- package/dist/ui/ProgressBar/progress-bar-variants.js +46 -0
- package/dist/ui/ProgressBar/progress-bar-variants.js.map +1 -0
- package/dist/ui/ProgressBar/progress-bar.d.ts +12 -0
- package/dist/ui/ProgressBar/progress-bar.d.ts.map +1 -0
- package/dist/ui/ProgressBar/progress-bar.js +14 -0
- package/dist/ui/ProgressBar/progress-bar.js.map +1 -0
- package/dist/ui/ProgressBar/progress-bar.module.scss.js +4 -0
- package/dist/ui/ProgressBar/progress-bar.module.scss.js.map +1 -0
- package/dist/ui/Separator/index.d.ts +2 -0
- package/dist/ui/Separator/index.d.ts.map +1 -0
- package/dist/ui/Separator/separator.d.ts +8 -0
- package/dist/ui/Separator/separator.d.ts.map +1 -0
- package/dist/ui/Separator/separator.js +10 -0
- package/dist/ui/Separator/separator.js.map +1 -0
- package/dist/ui/Separator/separator.module.scss.js +4 -0
- package/dist/ui/Separator/separator.module.scss.js.map +1 -0
- package/dist/ui/StatCard/index.d.ts +2 -0
- package/dist/ui/StatCard/index.d.ts.map +1 -0
- package/dist/ui/StatCard/stat-card-variants.d.ts +6 -0
- package/dist/ui/StatCard/stat-card-variants.d.ts.map +1 -0
- package/dist/ui/StatCard/stat-card-variants.js +35 -0
- package/dist/ui/StatCard/stat-card-variants.js.map +1 -0
- package/dist/ui/StatCard/stat-card.d.ts +31 -0
- package/dist/ui/StatCard/stat-card.d.ts.map +1 -0
- package/dist/ui/StatCard/stat-card.js +56 -0
- package/dist/ui/StatCard/stat-card.js.map +1 -0
- package/dist/ui/StatCard/stat-card.module.scss.js +4 -0
- package/dist/ui/StatCard/stat-card.module.scss.js.map +1 -0
- package/dist/ui/StepProgress/index.d.ts +2 -0
- package/dist/ui/StepProgress/index.d.ts.map +1 -0
- package/dist/ui/StepProgress/step-progress-variants.d.ts +7 -0
- package/dist/ui/StepProgress/step-progress-variants.d.ts.map +1 -0
- package/dist/ui/StepProgress/step-progress-variants.js +39 -0
- package/dist/ui/StepProgress/step-progress-variants.js.map +1 -0
- package/dist/ui/StepProgress/step-progress.d.ts +20 -0
- package/dist/ui/StepProgress/step-progress.d.ts.map +1 -0
- package/dist/ui/StepProgress/step-progress.js +40 -0
- package/dist/ui/StepProgress/step-progress.js.map +1 -0
- package/dist/ui/StepProgress/step-progress.module.scss.js +4 -0
- package/dist/ui/StepProgress/step-progress.module.scss.js.map +1 -0
- package/dist/ui/Switch/index.d.ts +2 -0
- package/dist/ui/Switch/index.d.ts.map +1 -0
- package/dist/ui/Switch/switch-variants.d.ts +5 -0
- package/dist/ui/Switch/switch-variants.d.ts.map +1 -0
- package/dist/ui/Switch/switch-variants.js +29 -0
- package/dist/ui/Switch/switch-variants.js.map +1 -0
- package/dist/ui/Switch/switch.d.ts +10 -0
- package/dist/ui/Switch/switch.d.ts.map +1 -0
- package/dist/ui/Switch/switch.js +18 -0
- package/dist/ui/Switch/switch.js.map +1 -0
- package/dist/ui/Switch/switch.module.scss.js +4 -0
- package/dist/ui/Switch/switch.module.scss.js.map +1 -0
- package/dist/ui/Table/index.d.ts +2 -0
- package/dist/ui/Table/index.d.ts.map +1 -0
- package/dist/ui/Table/table-sort-context.d.ts +4 -0
- package/dist/ui/Table/table-sort-context.d.ts.map +1 -0
- package/dist/ui/Table/table-sort-context.js +6 -0
- package/dist/ui/Table/table-sort-context.js.map +1 -0
- package/dist/ui/Table/table.d.ts +32 -0
- package/dist/ui/Table/table.d.ts.map +1 -0
- package/dist/ui/Table/table.js +59 -0
- package/dist/ui/Table/table.js.map +1 -0
- package/dist/ui/Table/table.module.scss.js +4 -0
- package/dist/ui/Table/table.module.scss.js.map +1 -0
- package/dist/ui/TableActionCell/index.d.ts +2 -0
- package/dist/ui/TableActionCell/index.d.ts.map +1 -0
- package/dist/ui/TableActionCell/table-action-cell.d.ts +28 -0
- package/dist/ui/TableActionCell/table-action-cell.d.ts.map +1 -0
- package/dist/ui/TableActionCell/table-action-cell.js +27 -0
- package/dist/ui/TableActionCell/table-action-cell.js.map +1 -0
- package/dist/ui/TableActionCell/table-action-cell.module.scss.js +4 -0
- package/dist/ui/TableActionCell/table-action-cell.module.scss.js.map +1 -0
- package/dist/ui/TableToolbar/index.d.ts +2 -0
- package/dist/ui/TableToolbar/index.d.ts.map +1 -0
- package/dist/ui/TableToolbar/table-toolbar.d.ts +29 -0
- package/dist/ui/TableToolbar/table-toolbar.d.ts.map +1 -0
- package/dist/ui/TableToolbar/table-toolbar.js +18 -0
- package/dist/ui/TableToolbar/table-toolbar.js.map +1 -0
- package/dist/ui/TableToolbar/table-toolbar.module.scss.js +4 -0
- package/dist/ui/TableToolbar/table-toolbar.module.scss.js.map +1 -0
- package/dist/ui/Toggle/index.d.ts +2 -0
- package/dist/ui/Toggle/index.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle-group-context.d.ts +9 -0
- package/dist/ui/Toggle/toggle-group-context.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle-group-context.js +6 -0
- package/dist/ui/Toggle/toggle-group-context.js.map +1 -0
- package/dist/ui/Toggle/toggle-variants.d.ts +8 -0
- package/dist/ui/Toggle/toggle-variants.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle-variants.js +45 -0
- package/dist/ui/Toggle/toggle-variants.js.map +1 -0
- package/dist/ui/Toggle/toggle.d.ts +12 -0
- package/dist/ui/Toggle/toggle.d.ts.map +1 -0
- package/dist/ui/Toggle/toggle.js +49 -0
- package/dist/ui/Toggle/toggle.js.map +1 -0
- package/dist/ui/Toggle/toggle.module.scss.js +4 -0
- package/dist/ui/Toggle/toggle.module.scss.js.map +1 -0
- package/dist/ui/ToggleGroup/index.d.ts +2 -0
- package/dist/ui/ToggleGroup/index.d.ts.map +1 -0
- package/dist/ui/ToggleGroup/toggle-group.d.ts +24 -0
- package/dist/ui/ToggleGroup/toggle-group.d.ts.map +1 -0
- package/dist/ui/ToggleGroup/toggle-group.js +80 -0
- package/dist/ui/ToggleGroup/toggle-group.js.map +1 -0
- package/dist/ui/ToggleGroup/toggle-group.module.scss.js +4 -0
- package/dist/ui/ToggleGroup/toggle-group.module.scss.js.map +1 -0
- package/dist/ui/Tooltip/index.d.ts +2 -0
- package/dist/ui/Tooltip/index.d.ts.map +1 -0
- package/dist/ui/Tooltip/tooltip.d.ts +24 -0
- package/dist/ui/Tooltip/tooltip.d.ts.map +1 -0
- package/dist/ui/Tooltip/tooltip.js +192 -0
- package/dist/ui/Tooltip/tooltip.js.map +1 -0
- package/dist/ui/Tooltip/tooltip.module.scss.js +4 -0
- package/dist/ui/Tooltip/tooltip.module.scss.js.map +1 -0
- package/dist/ui/index.d.ts +23 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui.d.ts +6 -0
- package/dist/ui.js +25 -0
- package/dist/ui.js.map +1 -0
- package/dist/user/UserInfo/index.d.ts +2 -0
- package/dist/user/UserInfo/index.d.ts.map +1 -0
- package/dist/user/UserInfo/user-info.d.ts +6 -0
- package/dist/user/UserInfo/user-info.d.ts.map +1 -0
- package/dist/user/UserInfo/user-info.js +17 -0
- package/dist/user/UserInfo/user-info.js.map +1 -0
- package/dist/user/UserInfo/user-info.module.scss.js +4 -0
- package/dist/user/UserInfo/user-info.module.scss.js.map +1 -0
- package/dist/user/UserMenuContent/index.d.ts +2 -0
- package/dist/user/UserMenuContent/index.d.ts.map +1 -0
- package/dist/user/UserMenuContent/user-menu-content.d.ts +25 -0
- package/dist/user/UserMenuContent/user-menu-content.d.ts.map +1 -0
- package/dist/user/UserMenuContent/user-menu-content.js +23 -0
- package/dist/user/UserMenuContent/user-menu-content.js.map +1 -0
- package/dist/user/index.d.ts +3 -0
- package/dist/user/index.d.ts.map +1 -0
- package/dist/user-menu-content-D0Ldzigm.d.ts +34 -0
- package/dist/user.d.ts +10 -0
- package/dist/user.js +3 -0
- package/dist/user.js.map +1 -0
- package/dist/utils/csrf.d.ts +2 -0
- package/dist/utils/csrf.d.ts.map +1 -0
- package/dist/utils/csrf.js +13 -0
- package/dist/utils/csrf.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/package.json +208 -0
- package/src/styles/_mixins.scss +105 -0
- package/src/styles/_theme-context.scss +12 -0
- package/src/styles/mixins.scss +1 -0
- package/vite-plugin.d.ts +26 -0
- package/vite-plugin.mjs +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sources":["../../../src/form/Select/select.tsx"],"sourcesContent":["import inputStyles from '@constellation/form/Input/input.module.scss';\nimport { Label } from '@constellation/form/Label';\nimport { useBreakpoint } from '@constellation/hooks/use-mobile';\nimport {\n type SelectAlign,\n type SelectContentProps,\n type SelectFieldProps,\n type SelectPosition,\n type SelectProps,\n type SelectSide,\n} from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport cn from 'clsx';\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport s from './select.module.scss';\n\nconst SELECT_ANIMATION_DURATION = 200; // keep in sync with --select-duration in select.module.scss\nconst DEFAULT_SEARCH_THRESHOLD = 5;\nconst DEFAULT_COLLISION_PADDING = 8;\n\ntype SelectItemMeta = {\n value: string;\n label: string;\n disabled: boolean;\n};\n\ntype SelectContextValue = {\n contentId: string;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled: boolean;\n displayOpen: boolean;\n isClosing: boolean;\n items: SelectItemMeta[];\n open: boolean;\n selectedLabel?: string;\n setOpen: (open: boolean) => void;\n setValue: (value: string) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n value?: string;\n viewportRef: React.MutableRefObject<HTMLDivElement | null>;\n};\n\ntype SurfaceProps = {\n align?: SelectAlign;\n children: React.ReactNode;\n className?: string;\n collisionPadding?: number;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n displayOpen: boolean;\n isClosing?: boolean;\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n open: boolean;\n position?: SelectPosition;\n side?: SelectSide;\n sideOffset?: number;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'onKeyDown'>;\n\ntype ItemButtonElement = HTMLButtonElement;\ntype SelectChildElement = React.ReactElement<{\n children?: React.ReactNode;\n disabled?: boolean;\n value?: unknown;\n}>;\n\nconst SelectContext = React.createContext<SelectContextValue | null>(null);\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction readNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') {\n return '';\n }\n\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(readNodeText).join(' ').trim();\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return readNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction collectSelectItems(node: React.ReactNode): SelectItemMeta[] {\n const items: SelectItemMeta[] = [];\n\n const visit = (childNode: React.ReactNode) => {\n React.Children.forEach(childNode, child => {\n if (\n !React.isValidElement<{ children?: React.ReactNode; disabled?: boolean; value?: unknown }>(\n child,\n )\n ) {\n return;\n }\n\n if (child.props.value !== undefined) {\n items.push({\n value: String(child.props.value),\n label: readNodeText(child.props.children).trim(),\n disabled: Boolean(child.props.disabled),\n });\n return;\n }\n\n if (child.props.children) {\n visit(child.props.children);\n }\n });\n };\n\n visit(node);\n return items;\n}\n\nfunction getNavigableItems(viewport: HTMLDivElement | null, slot: string): ItemButtonElement[] {\n if (!viewport) {\n return [];\n }\n\n return Array.from(\n viewport.querySelectorAll<ItemButtonElement>(\n `[data-slot='${slot}']:not([data-disabled='true'])`,\n ),\n );\n}\n\nfunction focusItemByValue(viewport: HTMLDivElement | null, slot: string, value?: string) {\n const items = getNavigableItems(viewport, slot);\n\n if (!items.length) {\n return;\n }\n\n const target = value ? items.find(item => item.dataset.value === value) : undefined;\n (target ?? items[0])?.focus();\n}\n\nfunction moveItemFocus(\n viewport: HTMLDivElement | null,\n slot: string,\n direction: 'next' | 'prev' | 'first' | 'last',\n) {\n const items = getNavigableItems(viewport, slot);\n\n if (!items.length) {\n return;\n }\n\n if (direction === 'first') {\n items[0]?.focus();\n return;\n }\n\n if (direction === 'last') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const currentIndex = items.findIndex(item => item === document.activeElement);\n const fallbackIndex = direction === 'next' ? 0 : items.length - 1;\n\n if (currentIndex === -1) {\n items[fallbackIndex]?.focus();\n return;\n }\n\n const nextIndex =\n direction === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n\n items[nextIndex]?.focus();\n}\n\nfunction useDismissibleLayer({\n contentRef,\n onDismiss,\n open,\n triggerRef,\n}: {\n contentRef: React.MutableRefObject<HTMLElement | null>;\n onDismiss: () => void;\n open: boolean;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}) {\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointer = (event: MouseEvent | TouchEvent) => {\n const target = event.target;\n\n if (\n target instanceof Node &&\n (triggerRef.current?.contains(target) || contentRef.current?.contains(target))\n ) {\n return;\n }\n\n onDismiss();\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = event.target;\n\n if (\n target instanceof Node &&\n (triggerRef.current?.contains(target) || contentRef.current?.contains(target))\n ) {\n return;\n }\n\n onDismiss();\n };\n\n document.addEventListener('mousedown', handlePointer);\n document.addEventListener('touchstart', handlePointer);\n document.addEventListener('focusin', handleFocus);\n\n return () => {\n document.removeEventListener('mousedown', handlePointer);\n document.removeEventListener('touchstart', handlePointer);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [contentRef, onDismiss, open, triggerRef]);\n}\n\nfunction useSurfacePosition({\n align = 'start',\n collisionPadding = DEFAULT_COLLISION_PADDING,\n contentRef,\n displayOpen,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n triggerRef,\n}: {\n align?: SelectAlign;\n collisionPadding?: number;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n displayOpen: boolean;\n position?: SelectPosition;\n side?: SelectSide;\n sideOffset?: number;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}) {\n const [computedStyle, setComputedStyle] = React.useState<React.CSSProperties>({\n position: 'fixed',\n visibility: 'hidden',\n });\n const [resolvedSide, setResolvedSide] = React.useState<SelectSide>(side);\n\n React.useLayoutEffect(() => {\n if (!displayOpen) {\n return;\n }\n\n const triggerElement = triggerRef.current;\n const contentElement = contentRef.current;\n\n if (!triggerElement || !contentElement) {\n return;\n }\n\n const updatePosition = () => {\n const triggerRect = triggerElement.getBoundingClientRect();\n const contentRect = {\n width: contentElement.offsetWidth,\n height: contentElement.offsetHeight,\n };\n const padding = collisionPadding;\n // The surface is portaled to <body> and positioned `fixed`, so the\n // collision boundary is always the viewport — never an ancestor's box.\n const boundaryLeft = 0;\n const boundaryTop = 0;\n const boundaryWidth = window.innerWidth;\n const boundaryHeight = window.innerHeight;\n const boundaryRight = boundaryWidth;\n const boundaryBottom = boundaryHeight;\n let nextSide = side;\n\n if (side === 'bottom' || side === 'top') {\n const canFitBelow =\n triggerRect.bottom + sideOffset + contentRect.height <= boundaryBottom - padding;\n const canFitAbove =\n triggerRect.top - sideOffset - contentRect.height >= boundaryTop + padding;\n\n if (side === 'bottom' && !canFitBelow && canFitAbove) {\n nextSide = 'top';\n }\n\n if (side === 'top' && !canFitAbove && canFitBelow) {\n nextSide = 'bottom';\n }\n } else {\n const canFitRight =\n triggerRect.right + sideOffset + contentRect.width <= boundaryRight - padding;\n const canFitLeft =\n triggerRect.left - sideOffset - contentRect.width >= boundaryLeft + padding;\n\n if (side === 'right' && !canFitRight && canFitLeft) {\n nextSide = 'left';\n }\n\n if (side === 'left' && !canFitLeft && canFitRight) {\n nextSide = 'right';\n }\n }\n\n let top = triggerRect.bottom + sideOffset;\n let left = triggerRect.left;\n\n if (nextSide === 'bottom' || nextSide === 'top') {\n top =\n nextSide === 'bottom'\n ? triggerRect.bottom + sideOffset\n : triggerRect.top - contentRect.height - sideOffset;\n\n if (align === 'center') {\n left = triggerRect.left + (triggerRect.width - contentRect.width) / 2;\n } else if (align === 'end') {\n left = triggerRect.right - contentRect.width;\n } else {\n left = triggerRect.left;\n }\n } else {\n left =\n nextSide === 'right'\n ? triggerRect.right + sideOffset\n : triggerRect.left - contentRect.width - sideOffset;\n\n if (align === 'center') {\n top = triggerRect.top + (triggerRect.height - contentRect.height) / 2;\n } else if (align === 'end') {\n top = triggerRect.bottom - contentRect.height;\n } else {\n top = triggerRect.top;\n }\n }\n\n left = clamp(left, padding, Math.max(padding, boundaryWidth - contentRect.width - padding));\n top = clamp(top, padding, Math.max(padding, boundaryHeight - contentRect.height - padding));\n\n setResolvedSide(nextSide);\n setComputedStyle({ position: 'fixed', top, left });\n };\n\n updatePosition();\n\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(triggerElement);\n resizeObserver.observe(contentElement);\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [align, collisionPadding, contentRef, displayOpen, position, side, sideOffset, triggerRef]);\n\n return { computedStyle, resolvedSide };\n}\n\nfunction useSelectContext(componentName: string) {\n const context = React.useContext(SelectContext);\n\n if (!context) {\n throw new Error(`${componentName} must be used within Select.`);\n }\n\n return context;\n}\n\nfunction Surface({\n align = 'start',\n children,\n className,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n contentRef,\n displayOpen,\n isClosing = false,\n onKeyDown,\n open,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n triggerRef,\n ...props\n}: SurfaceProps) {\n const { computedStyle, resolvedSide } = useSurfacePosition({\n align,\n collisionPadding,\n contentRef,\n displayOpen,\n position,\n side,\n sideOffset,\n triggerRef,\n });\n\n if (!displayOpen || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(\n <div\n ref={contentRef}\n data-state={open ? 'open' : 'closed'}\n data-closing={isClosing ? 'true' : undefined}\n data-side={resolvedSide}\n className={className}\n style={computedStyle}\n onKeyDown={onKeyDown}\n {...props}\n >\n {children}\n </div>,\n // Always <body>: a Dialog/Sheet shell scrolls its own overflow, which would\n // clip a dropdown rendered inside it. The dialog dismisses via a click on\n // its overlay (not a document listener) and its focus trap only intercepts\n // Tab, so an out-of-tree surface stays safe on both counts.\n document.body,\n );\n}\n\nfunction Select({\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n children,\n ...props\n}: SelectProps) {\n const isOpenControlled = openProp !== undefined;\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const [isClosing, setIsClosing] = React.useState(false);\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const contentId = React.useId();\n const currentOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const currentValue = isValueControlled ? valueProp : uncontrolledValue;\n const displayOpen = currentOpen || isClosing;\n const items = React.useMemo(() => collectSelectItems(children), [children]);\n const selectedLabel = items.find(item => item.value === currentValue)?.label;\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n clearCloseTimer();\n setIsClosing(false);\n\n if (!isOpenControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n return;\n }\n\n onOpenChange?.(false);\n if (!isOpenControlled) {\n setUncontrolledOpen(false);\n }\n\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, SELECT_ANIMATION_DURATION);\n },\n [clearCloseTimer, isOpenControlled, onOpenChange],\n );\n\n const setValue = React.useCallback(\n (nextValue: string) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n setOpen(false);\n\n requestAnimationFrame(() => {\n triggerRef.current?.focus();\n });\n },\n [isValueControlled, onValueChange, setOpen],\n );\n\n useDismissibleLayer({\n contentRef,\n onDismiss: () => setOpen(false),\n open: currentOpen,\n triggerRef,\n });\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n const contextValue = React.useMemo<SelectContextValue>(\n () => ({\n contentId,\n contentRef,\n disabled,\n displayOpen,\n isClosing,\n items,\n open: currentOpen,\n selectedLabel,\n setOpen,\n setValue,\n triggerRef,\n value: currentValue,\n viewportRef,\n }),\n [\n contentId,\n currentOpen,\n currentValue,\n disabled,\n displayOpen,\n isClosing,\n items,\n selectedLabel,\n setOpen,\n setValue,\n ],\n );\n\n return (\n <SelectContext.Provider value={contextValue}>\n <div data-slot={'select'} {...props}>\n {children}\n </div>\n </SelectContext.Provider>\n );\n}\n\nfunction SelectGroup({ ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div data-slot={'select-group'} {...props} />;\n}\n\nfunction SelectValue({\n children,\n placeholder,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement> & { placeholder?: React.ReactNode }) {\n const context = useSelectContext('SelectValue');\n const content = children ?? context.selectedLabel ?? placeholder;\n\n return (\n <span data-slot={'select-value'} {...props}>\n {content}\n </span>\n );\n}\n\nfunction SelectTrigger({\n className,\n children,\n onClick,\n onKeyDown,\n type,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement>) {\n const context = useSelectContext('SelectTrigger');\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || context.disabled) {\n return;\n }\n\n context.setOpen(!context.open);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || context.disabled) {\n return;\n }\n\n if (\n event.key === 'Enter' ||\n event.key === ' ' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault();\n context.setOpen(true);\n }\n\n // Only claim Escape when the surface is actually open — an unguarded\n // preventDefault would swallow it from an enclosing Dialog/Sheet.\n if (event.key === 'Escape' && context.open) {\n event.preventDefault();\n context.setOpen(false);\n }\n };\n\n return (\n <button\n ref={context.triggerRef}\n data-slot={'select-trigger'}\n type={type ?? 'button'}\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-haspopup={'listbox'}\n disabled={context.disabled}\n className={cn(s.trigger, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n <ChevronDownIcon className={cn(s['trigger-icon'])} />\n </button>\n );\n}\n\nfunction SelectContent({\n align = 'start',\n className,\n children,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n onKeyDown,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n ...props\n}: SelectContentProps) {\n const context = useSelectContext('SelectContent');\n\n React.useEffect(() => {\n if (!context.open) {\n const content = context.contentRef.current;\n\n if (content) {\n content.style.maxWidth = '';\n }\n\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n const content = context.contentRef.current;\n\n const triggerHasInput = context.triggerRef.current?.querySelector('input') != null;\n if (!triggerHasInput && !content?.querySelector('input')) {\n focusItemByValue(context.viewportRef.current, 'select-item', context.value);\n }\n });\n\n return () => cancelAnimationFrame(frame);\n }, [context.open, context.value, context.contentRef, context.viewportRef, context.triggerRef]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n context.setOpen(false);\n context.triggerRef.current?.focus();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'prev');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'last');\n }\n };\n\n return (\n <Surface\n data-slot={'select-content'}\n open={context.open}\n displayOpen={context.displayOpen}\n isClosing={context.isClosing}\n triggerRef={context.triggerRef as React.MutableRefObject<HTMLElement | null>}\n contentRef={context.contentRef}\n align={align}\n side={side}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n position={position}\n className={cn(s.content, className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <div\n ref={context.viewportRef}\n className={cn(s.viewport, position === 'popper' && s['viewport-popper'])}\n id={context.contentId}\n role={'listbox'}\n >\n {children}\n </div>\n </Surface>\n );\n}\n\nfunction SelectItem({\n className,\n children,\n disabled = false,\n onClick,\n onMouseMove,\n value,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & { value: string }) {\n const context = useSelectContext('SelectItem');\n const selected = context.value === value;\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n context.setValue(value);\n };\n\n const handleMouseMove = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseMove?.(event);\n\n if (disabled) {\n return;\n }\n\n event.currentTarget.focus();\n };\n\n return (\n <button\n data-slot={'select-item'}\n data-value={value}\n data-disabled={disabled ? 'true' : undefined}\n type={'button'}\n role={'option'}\n aria-selected={selected}\n disabled={disabled}\n tabIndex={-1}\n className={cn(s.item, className)}\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n {...props}\n >\n <span className={s['item-indicator']}>{selected ? <CheckIcon /> : null}</span>\n <span>{children}</span>\n </button>\n );\n}\n\nfunction SelectSeparator({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div data-slot={'select-separator'} className={cn(s.separator, className)} {...props} />;\n}\n\nfunction SelectInputTrigger({\n className,\n id,\n onBlur,\n onFocus,\n placeholder,\n searchQuery,\n setSearchQuery,\n ...props\n}: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value'> & {\n searchQuery: string;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n}) {\n const context = useSelectContext('SelectInputTrigger');\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setWrapperRef = React.useCallback(\n (el: HTMLDivElement | null) => {\n (context.triggerRef as React.MutableRefObject<HTMLElement | null>).current = el;\n },\n [context.triggerRef],\n );\n\n const displayValue = context.open ? searchQuery : (context.selectedLabel ?? '');\n\n React.useEffect(() => {\n if (context.open) {\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n }\n }, [context.open]);\n\n const handleClick = () => {\n if (!context.disabled) {\n context.setOpen(true);\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!context.open) {\n const nativeEvent = event.nativeEvent as InputEvent;\n setSearchQuery(nativeEvent.data ?? '');\n context.setOpen(true);\n } else {\n setSearchQuery(event.target.value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (context.disabled) {\n return;\n }\n\n if ((event.key === 'Backspace' || event.key === 'Delete') && !context.open) {\n event.preventDefault();\n return;\n }\n\n if (event.key === ' ' && !context.open) {\n event.preventDefault();\n context.setOpen(true);\n return;\n }\n\n if (event.key === 'Escape' && context.open) {\n event.preventDefault();\n context.setOpen(false);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(context.viewportRef.current, 'select-item', 'next');\n });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(context.viewportRef.current, 'select-item', 'prev');\n });\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n } else if (searchQuery) {\n const firstItem = context.viewportRef.current?.querySelector(\n '[data-slot=\"select-item\"]:not([data-disabled=\"true\"])',\n ) as HTMLButtonElement | null;\n firstItem?.click();\n }\n return;\n }\n\n if (!context.open && event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n context.setOpen(true);\n }\n };\n\n return (\n <div\n ref={setWrapperRef}\n tabIndex={-1}\n className={cn(s.trigger, s['input-trigger'], className)}\n onClick={handleClick}\n onFocus={event => {\n if (event.target === event.currentTarget) {\n inputRef.current?.focus();\n }\n }}\n >\n <input\n ref={inputRef}\n id={id}\n type={'text'}\n value={displayValue}\n placeholder={placeholder}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={context.disabled}\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-haspopup={'listbox'}\n className={s['search-trigger-input']}\n autoComplete={'off'}\n {...props}\n />\n <ChevronDownIcon className={cn(s['trigger-icon'])} />\n </div>\n );\n}\n\ntype SharedSelectFieldProps = {\n contentProps?: SelectFieldProps['contentProps'];\n error: boolean;\n fieldClassName?: string;\n filteredItems: SelectChildElement[];\n getItemText: (child: SelectChildElement) => string;\n helperText?: React.ReactNode;\n isFocused: boolean;\n isRequired: boolean;\n label?: React.ReactNode;\n labelRef: React.MutableRefObject<HTMLLabelElement | null>;\n minWidth?: number;\n placeholder?: string;\n resolvedSize: 'sm' | 'md';\n searchable: boolean;\n selectableItems: SelectChildElement[];\n searchQuery: string;\n setIsFocused: React.Dispatch<React.SetStateAction<boolean>>;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n triggerId: string;\n};\n\ntype MultiSelectFieldInternalProps = Extract<SelectFieldProps, { multiple: true }> &\n SharedSelectFieldProps;\n\nfunction MultiSelectField({\n contentProps,\n defaultOpen,\n defaultValue,\n disabled = false,\n error,\n fieldClassName,\n filteredItems,\n getItemText,\n helperText,\n isFocused,\n isRequired,\n label,\n labelRef,\n minWidth,\n name,\n onOpenChange,\n onValueChange,\n open: openProp,\n placeholder,\n resolvedSize,\n searchable,\n selectableItems,\n searchQuery,\n setIsFocused,\n setSearchQuery,\n triggerId,\n value,\n}: MultiSelectFieldInternalProps) {\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const isOpenControlled = openProp !== undefined;\n const isValueControlled = value !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue ?? []);\n const [isClosing, setIsClosing] = React.useState(false);\n const currentOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const currentValue = isValueControlled ? value : uncontrolledValue;\n const displayOpen = currentOpen || isClosing;\n const selectedLabels = selectableItems\n .filter(child => currentValue.includes(String(child.props.value)))\n .map(getItemText)\n .filter(Boolean);\n const hasValue = currentValue.length > 0;\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n clearCloseTimer();\n setIsClosing(false);\n\n if (!isOpenControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n return;\n }\n\n onOpenChange?.(false);\n if (!isOpenControlled) {\n setUncontrolledOpen(false);\n }\n\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, SELECT_ANIMATION_DURATION);\n },\n [clearCloseTimer, isOpenControlled, onOpenChange],\n );\n\n const setValues = React.useCallback(\n (nextValue: string[]) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n },\n [isValueControlled, onValueChange],\n );\n\n useDismissibleLayer({\n contentRef,\n onDismiss: () => setOpen(false),\n open: currentOpen,\n triggerRef: triggerRef as React.MutableRefObject<HTMLElement | null>,\n });\n\n React.useEffect(() => {\n if (!displayOpen) {\n setSearchQuery('');\n }\n }, [displayOpen, setSearchQuery]);\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n React.useEffect(() => {\n if (!currentOpen) {\n const content = contentRef.current;\n\n if (content) {\n content.style.maxWidth = '';\n }\n\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n const content = contentRef.current;\n\n const triggerHasInput = triggerRef.current?.querySelector('input') != null;\n if (!triggerHasInput && !content?.querySelector('input')) {\n focusItemByValue(viewportRef.current, 'select-multi-item', currentValue[0]);\n }\n });\n\n return () => cancelAnimationFrame(frame);\n }, [currentOpen, currentValue]);\n\n React.useEffect(() => {\n if (searchable && currentOpen) {\n requestAnimationFrame(() => {\n const input = triggerRef.current?.querySelector('input');\n input?.focus();\n });\n }\n }, [currentOpen, searchable]);\n\n const containerClasses = cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: error },\n { [inputStyles.disabled]: disabled },\n { [inputStyles.placeholder]: placeholder },\n { [inputStyles['has-value']]: hasValue },\n { [inputStyles['is-focused']]: isFocused || currentOpen || isClosing },\n fieldClassName,\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (searchable) {\n const input = triggerRef.current?.querySelector('input');\n\n if (document.activeElement !== input) {\n if (event.key === 'Backspace') {\n event.preventDefault();\n setSearchQuery(prev => prev.slice(0, -1));\n input?.focus();\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n setSearchQuery(prev => prev + event.key);\n input?.focus();\n return;\n }\n }\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n setOpen(false);\n const input = triggerRef.current?.querySelector('input');\n (input ?? triggerRef.current)?.focus();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'prev');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'last');\n }\n };\n\n return (\n <>\n <div\n data-constellation-field\n className={containerClasses}\n style={minWidth ? { minWidth: Math.max(minWidth, 140) } : undefined}\n >\n <div className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId} ref={labelRef}>\n {label}\n {isRequired && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n {searchable ? (\n <div\n ref={triggerRef as React.MutableRefObject<HTMLDivElement | null>}\n tabIndex={-1}\n className={cn(s.trigger, s['input-trigger'])}\n data-placeholder={!hasValue ? 'true' : undefined}\n onClick={() => {\n if (!currentOpen) {\n setOpen(true);\n }\n }}\n onFocus={event => {\n if (event.target === event.currentTarget) {\n triggerRef.current?.querySelector('input')?.focus();\n }\n }}\n >\n <input\n id={triggerId}\n type={'text'}\n value={currentOpen ? searchQuery : hasValue ? selectedLabels.join(', ') : ''}\n placeholder={placeholder}\n aria-expanded={currentOpen}\n aria-haspopup={'listbox'}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n disabled={disabled}\n className={s['search-trigger-input']}\n autoComplete={'off'}\n onChange={event => {\n if (!currentOpen) {\n const nativeEvent = event.nativeEvent as InputEvent;\n setSearchQuery(nativeEvent.data ?? '');\n setOpen(true);\n } else {\n setSearchQuery(event.target.value);\n }\n }}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={event => {\n if ((event.key === 'Backspace' || event.key === 'Delete') && !currentOpen) {\n event.preventDefault();\n return;\n }\n\n if (event.key === ' ' && !currentOpen) {\n event.preventDefault();\n setOpen(true);\n return;\n }\n\n if (event.key === 'Escape' && currentOpen) {\n event.preventDefault();\n setOpen(false);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(viewportRef.current, 'select-multi-item', 'next');\n });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(viewportRef.current, 'select-multi-item', 'prev');\n });\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n return;\n }\n\n if (!currentOpen && event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n setOpen(true);\n }\n }}\n />\n <ChevronDownIcon className={s['trigger-icon']} />\n </div>\n ) : (\n <button\n ref={triggerRef as React.MutableRefObject<HTMLButtonElement | null>}\n id={triggerId}\n type={'button'}\n aria-expanded={currentOpen}\n aria-haspopup={'listbox'}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n disabled={disabled}\n className={cn(s.trigger, s['input-trigger'])}\n data-placeholder={!hasValue ? 'true' : undefined}\n onClick={() => setOpen(!currentOpen)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={event => {\n if (\n event.key === 'Enter' ||\n event.key === ' ' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault();\n setOpen(true);\n }\n }}\n >\n <span className={s['trigger-value']}>\n {hasValue ? selectedLabels.join(', ') : placeholder}\n </span>\n <ChevronDownIcon className={s['trigger-icon']} />\n </button>\n )}\n </div>\n {helperText ? (\n <Typography\n id={`${triggerId}-helper`}\n variant={'caption'}\n className={inputStyles['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n {name\n ? currentValue.map(itemValue => (\n <input key={itemValue} type={'hidden'} name={name} value={itemValue} />\n ))\n : null}\n </div>\n <Surface\n data-slot={'select-content'}\n open={currentOpen}\n displayOpen={displayOpen}\n isClosing={isClosing}\n triggerRef={triggerRef as React.MutableRefObject<HTMLElement | null>}\n contentRef={contentRef}\n align={contentProps?.align}\n side={contentProps?.side}\n sideOffset={contentProps?.sideOffset}\n collisionPadding={contentProps?.collisionPadding ?? DEFAULT_COLLISION_PADDING}\n className={cn(s.content, s['multi-content'], contentProps?.className)}\n onKeyDown={handleKeyDown}\n >\n <div ref={viewportRef} className={cn(s.viewport, s['multi-options'])} role={'listbox'}>\n {filteredItems.map(child => {\n const itemValue = String(child.props.value);\n const checked = currentValue.includes(itemValue);\n\n return (\n <button\n key={itemValue}\n data-slot={'select-multi-item'}\n data-value={itemValue}\n data-disabled={child.props.disabled ? 'true' : undefined}\n type={'button'}\n role={'option'}\n aria-selected={checked}\n disabled={child.props.disabled}\n tabIndex={-1}\n className={cn(s.item, s['multi-item'])}\n onClick={() =>\n setValues(\n checked\n ? currentValue.filter(currentItem => currentItem !== itemValue)\n : [...currentValue, itemValue],\n )\n }\n onMouseMove={event => {\n if (!child.props.disabled) {\n event.currentTarget.focus();\n }\n }}\n >\n <span className={s['item-indicator']}>{checked ? <CheckIcon /> : null}</span>\n <span>{child.props.children}</span>\n </button>\n );\n })}\n </div>\n </Surface>\n </>\n );\n}\n\nfunction SelectField(props: SelectFieldProps) {\n const {\n label,\n helperText,\n error = false,\n placeholder,\n children,\n fieldClassName,\n contentProps,\n id,\n sizeVariant,\n searchThreshold = DEFAULT_SEARCH_THRESHOLD,\n } = props;\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const { isBelow } = useBreakpoint();\n const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');\n const [isFocused, setIsFocused] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchQuery, setSearchQuery] = React.useState('');\n const [minWidth, setMinWidth] = React.useState<number | undefined>(undefined);\n const labelRef = React.useRef<HTMLLabelElement | null>(null);\n const childArray = React.useMemo(\n () =>\n React.Children.toArray(children).filter((child): child is SelectChildElement =>\n React.isValidElement(child),\n ),\n [children],\n );\n const selectableItems = React.useMemo(\n () => childArray.filter(child => child.props.value !== undefined),\n [childArray],\n );\n const searchable = selectableItems.length >= searchThreshold;\n const getItemText = React.useCallback((child: SelectChildElement) => {\n return readNodeText(child.props.children).trim();\n }, []);\n\n const matchesQuery = React.useCallback(\n (child: SelectChildElement) => {\n if (!searchQuery) {\n return true;\n }\n\n return getItemText(child).toLowerCase().includes(searchQuery.toLowerCase());\n },\n [getItemText, searchQuery],\n );\n\n const filteredItems = React.useMemo(() => {\n if (!searchQuery) {\n return selectableItems;\n }\n\n return selectableItems.filter(matchesQuery);\n }, [matchesQuery, searchQuery, selectableItems]);\n\n React.useLayoutEffect(() => {\n if (!label) {\n setMinWidth(undefined);\n return;\n }\n\n const labelElement = labelRef.current;\n\n if (!labelElement) {\n return;\n }\n\n const updateMinWidth = () => {\n const labelWidth = labelElement.getBoundingClientRect().width;\n const iconWidth = 16;\n const horizontalPadding = resolvedSize === 'sm' ? 20 : 24;\n const computedWidth = Math.ceil(labelWidth + iconWidth + horizontalPadding);\n setMinWidth(Math.max(computedWidth, 0));\n };\n\n updateMinWidth();\n\n const resizeObserver = new ResizeObserver(updateMinWidth);\n resizeObserver.observe(labelElement);\n\n return () => resizeObserver.disconnect();\n }, [label, resolvedSize]);\n\n const ariaRequired = props['aria-required'];\n const isRequired = Boolean(ariaRequired || props.required);\n const baseSelectProps = {\n open: props.open,\n defaultOpen: props.defaultOpen,\n onOpenChange: props.onOpenChange,\n disabled: props.disabled,\n required: props.required,\n name: props.name,\n };\n\n if (props.multiple) {\n return (\n <MultiSelectField\n {...props}\n contentProps={contentProps}\n error={error}\n fieldClassName={fieldClassName}\n filteredItems={filteredItems}\n getItemText={getItemText}\n helperText={helperText}\n isFocused={isFocused}\n isRequired={isRequired}\n label={label}\n labelRef={labelRef}\n minWidth={minWidth}\n placeholder={placeholder}\n resolvedSize={resolvedSize}\n searchable={searchable}\n selectableItems={selectableItems}\n searchQuery={searchQuery}\n setIsFocused={setIsFocused}\n setSearchQuery={setSearchQuery}\n triggerId={triggerId}\n />\n );\n }\n\n const { value, defaultValue, onValueChange } = props;\n\n const handleContentKeyDown = searchable\n ? (event: React.KeyboardEvent<HTMLDivElement>) => {\n const triggerInput = document.getElementById(triggerId);\n\n if (triggerInput instanceof HTMLInputElement && document.activeElement !== triggerInput) {\n if (event.key === 'Backspace') {\n event.preventDefault();\n setSearchQuery(prev => prev.slice(0, -1));\n triggerInput.focus();\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n setSearchQuery(prev => prev + event.key);\n triggerInput.focus();\n return;\n }\n }\n }\n : undefined;\n\n return (\n <Select\n {...baseSelectProps}\n onOpenChange={nextOpen => {\n props.onOpenChange?.(nextOpen);\n setIsOpen(nextOpen);\n\n if (!nextOpen) {\n setSearchQuery('');\n }\n }}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n >\n <div\n data-constellation-field\n className={cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: error },\n { [inputStyles.disabled]: props.disabled },\n { [inputStyles.placeholder]: placeholder },\n { [inputStyles['has-value']]: Boolean(value ?? defaultValue) },\n { [inputStyles['is-focused']]: isFocused || isOpen },\n fieldClassName,\n )}\n style={minWidth ? { minWidth: Math.max(minWidth, 140) } : undefined}\n >\n <div className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId} ref={labelRef}>\n {label}\n {isRequired && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n {searchable ? (\n <SelectInputTrigger\n id={triggerId}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n placeholder={placeholder}\n searchQuery={searchQuery}\n setSearchQuery={setSearchQuery}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n />\n ) : (\n <SelectTrigger\n id={triggerId}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n className={s['input-trigger']}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n )}\n </div>\n {helperText ? (\n <Typography\n id={`${triggerId}-helper`}\n variant={'caption'}\n className={inputStyles['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n </div>\n <SelectContent {...contentProps} onKeyDown={handleContentKeyDown}>\n {searchQuery ? filteredItems : childArray}\n </SelectContent>\n </Select>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectField,\n SelectGroup,\n SelectItem,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;AAkBA,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,wBAAwB,GAAG,CAAC;AAClC,MAAM,yBAAyB,GAAG,CAAC;AA+CnC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAA4B,IAAI,CAAC;AAE1E,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AACpD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;AAC5C;AAEA,SAAS,YAAY,CAAC,IAAqB,EAAA;IACzC,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;AAC7C,QAAA,OAAO,EAAE;IACX;IAEA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACxD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB;AAEA,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAChD;AAEA,IAAA,IAAI,KAAK,CAAC,cAAc,CAAiC,IAAI,CAAC,EAAE;QAC9D,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC1C;AAEA,IAAA,OAAO,EAAE;AACX;AAEA,SAAS,kBAAkB,CAAC,IAAqB,EAAA;IAC/C,MAAM,KAAK,GAAqB,EAAE;AAElC,IAAA,MAAM,KAAK,GAAG,CAAC,SAA0B,KAAI;QAC3C,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAG;YACxC,IACE,CAAC,KAAK,CAAC,cAAc,CACnB,KAAK,CACN,EACD;gBACA;YACF;YAEA,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;gBACnC,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;oBAChC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;oBAChD,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;AACxC,iBAAA,CAAC;gBACF;YACF;AAEA,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;AACxB,gBAAA,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,KAAK,CAAC,IAAI,CAAC;AACX,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,iBAAiB,CAAC,QAA+B,EAAE,IAAY,EAAA;IACtE,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CACf,QAAQ,CAAC,gBAAgB,CACvB,CAAA,YAAA,EAAe,IAAI,CAAA,8BAAA,CAAgC,CACpD,CACF;AACH;AAEA,SAAS,gBAAgB,CAAC,QAA+B,EAAE,IAAY,EAAE,KAAc,EAAA;IACrF,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC;AAE/C,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB;IACF;IAEA,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,SAAS;IACnF,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE;AAC/B;AAEA,SAAS,aAAa,CACpB,QAA+B,EAC/B,IAAY,EACZ,SAA6C,EAAA;IAE7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC;AAE/C,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB;IACF;AAEA,IAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,QAAA,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;QACjB;IACF;AAEA,IAAA,IAAI,SAAS,KAAK,MAAM,EAAE;QACxB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;QAChC;IACF;AAEA,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,aAAa,CAAC;AAC7E,IAAA,MAAM,aAAa,GAAG,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AAEjE,IAAA,IAAI,YAAY,KAAK,EAAE,EAAE;AACvB,QAAA,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE;QAC7B;IACF;AAEA,IAAA,MAAM,SAAS,GACb,SAAS,KAAK;UACV,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC;AAC7B,UAAE,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;AAEtD,IAAA,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE;AAC3B;AAEA,SAAS,mBAAmB,CAAC,EAC3B,UAAU,EACV,SAAS,EACT,IAAI,EACJ,UAAU,GAMX,EAAA;AACC,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,KAA8B,KAAI;AACvD,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;YAE3B,IACE,MAAM,YAAY,IAAI;AACtB,iBAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC9E;gBACA;YACF;AAEA,YAAA,SAAS,EAAE;AACb,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,KAAiB,KAAI;AACxC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;YAE3B,IACE,MAAM,YAAY,IAAI;AACtB,iBAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC9E;gBACA;YACF;AAEA,YAAA,SAAS,EAAE;AACb,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC;AACrD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC;AACtD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC;AAEjD,QAAA,OAAO,MAAK;AACV,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,CAAC;AACxD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,CAAC;AACzD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC;AACtD,QAAA,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC/C;AAEA,SAAS,kBAAkB,CAAC,EAC1B,KAAK,GAAG,OAAO,EACf,gBAAgB,GAAG,yBAAyB,EAC5C,UAAU,EACV,WAAW,EACX,QAAQ,GAAG,QAAQ,EACnB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,CAAC,EACd,UAAU,GAUX,EAAA;IACC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAsB;AAC5E,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,UAAU,EAAE,QAAQ;AACrB,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAa,IAAI,CAAC;AAExE,IAAA,KAAK,CAAC,eAAe,CAAC,MAAK;QACzB,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO;AACzC,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO;AAEzC,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE;YACtC;QACF;QAEA,MAAM,cAAc,GAAG,MAAK;AAC1B,YAAA,MAAM,WAAW,GAAG,cAAc,CAAC,qBAAqB,EAAE;AAC1D,YAAA,MAAM,WAAW,GAAG;gBAClB,KAAK,EAAE,cAAc,CAAC,WAAW;gBACjC,MAAM,EAAE,cAAc,CAAC,YAAY;aACpC;YACD,MAAM,OAAO,GAAG,gBAAgB;;;YAGhC,MAAM,YAAY,GAAG,CAAC;YACtB,MAAM,WAAW,GAAG,CAAC;AACrB,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;YACzC,MAAM,aAAa,GAAG,aAAa;YACnC,MAAM,cAAc,GAAG,cAAc;YACrC,IAAI,QAAQ,GAAG,IAAI;YAEnB,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE;AACvC,gBAAA,MAAM,WAAW,GACf,WAAW,CAAC,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,IAAI,cAAc,GAAG,OAAO;AAClF,gBAAA,MAAM,WAAW,GACf,WAAW,CAAC,GAAG,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,GAAG,OAAO;gBAE5E,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;oBACpD,QAAQ,GAAG,KAAK;gBAClB;gBAEA,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;oBACjD,QAAQ,GAAG,QAAQ;gBACrB;YACF;iBAAO;AACL,gBAAA,MAAM,WAAW,GACf,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,aAAa,GAAG,OAAO;AAC/E,gBAAA,MAAM,UAAU,GACd,WAAW,CAAC,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,YAAY,GAAG,OAAO;gBAE7E,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;oBAClD,QAAQ,GAAG,MAAM;gBACnB;gBAEA,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE;oBACjD,QAAQ,GAAG,OAAO;gBACpB;YACF;AAEA,YAAA,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,UAAU;AACzC,YAAA,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI;YAE3B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE;gBAC/C,GAAG;AACD,oBAAA,QAAQ,KAAK;AACX,0BAAE,WAAW,CAAC,MAAM,GAAG;0BACrB,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,UAAU;AAEvD,gBAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,oBAAA,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBACvE;AAAO,qBAAA,IAAI,KAAK,KAAK,KAAK,EAAE;oBAC1B,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;gBAC9C;qBAAO;AACL,oBAAA,IAAI,GAAG,WAAW,CAAC,IAAI;gBACzB;YACF;iBAAO;gBACL,IAAI;AACF,oBAAA,QAAQ,KAAK;AACX,0BAAE,WAAW,CAAC,KAAK,GAAG;0BACpB,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,UAAU;AAEvD,gBAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,oBAAA,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;gBACvE;AAAO,qBAAA,IAAI,KAAK,KAAK,KAAK,EAAE;oBAC1B,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;gBAC/C;qBAAO;AACL,oBAAA,GAAG,GAAG,WAAW,CAAC,GAAG;gBACvB;YACF;YAEA,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;YAC3F,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;YAE3F,eAAe,CAAC,QAAQ,CAAC;YACzB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACpD,QAAA,CAAC;AAED,QAAA,cAAc,EAAE;AAEhB,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;AACzD,QAAA,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;AACtC,QAAA,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;AACtC,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC;AAEvD,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,UAAU,EAAE;AAC3B,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC;YACpD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC;AAC5D,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE9F,IAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE;AACxC;AAEA,SAAS,gBAAgB,CAAC,aAAqB,EAAA;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,CAAA,4BAAA,CAA8B,CAAC;IACjE;AAEA,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,OAAO,CAAC,EACf,KAAK,GAAG,OAAO,EACf,QAAQ,EACR,SAAS,EACT,gBAAgB,GAAG,yBAAyB,EAC5C,UAAU,EACV,WAAW,EACX,SAAS,GAAG,KAAK,EACjB,SAAS,EACT,IAAI,EACJ,QAAQ,GAAG,QAAQ,EACnB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,CAAC,EACd,UAAU,EACV,GAAG,KAAK,EACK,EAAA;AACb,IAAA,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC;QACzD,KAAK;QACL,gBAAgB;QAChB,UAAU;QACV,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,UAAU;QACV,UAAU;AACX,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnD,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,YAAY,CACjBA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,UAAU,EAAA,YAAA,EACH,IAAI,GAAG,MAAM,GAAG,QAAQ,kBACtB,SAAS,GAAG,MAAM,GAAG,SAAS,EAAA,WAAA,EACjC,YAAY,EACvB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,SAAS,KAChB,KAAK,EAAA,QAAA,EAER,QAAQ,EAAA,CACL;;;;;IAKN,QAAQ,CAAC,IAAI,CACd;AACH;AAEA,SAAS,MAAM,CAAC,EACd,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,GAAG,KAAK,EACI,EAAA;AACZ,IAAA,MAAM,gBAAgB,GAAG,QAAQ,KAAK,SAAS;AAC/C,IAAA,MAAM,iBAAiB,GAAG,SAAS,KAAK,SAAS;AACjD,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;AACpF,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC9E,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAuC,IAAI,CAAC;IAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAA2B,IAAI,CAAC;IAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC;IAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC;AAC7D,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE;IAC/B,MAAM,WAAW,GAAG,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB;IAClE,MAAM,YAAY,GAAG,iBAAiB,GAAG,SAAS,GAAG,iBAAiB;AACtE,IAAA,MAAM,WAAW,GAAG,WAAW,IAAI,SAAS;AAC5C,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC3E,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,EAAE,KAAK;AAE5E,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,MAAK;AAC7C,QAAA,IAAI,aAAa,CAAC,OAAO,EAAE;AACzB,YAAA,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;AACnC,YAAA,aAAa,CAAC,OAAO,GAAG,IAAI;QAC9B;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC/B,CAAC,QAAiB,KAAI;QACpB,IAAI,QAAQ,EAAE;AACZ,YAAA,eAAe,EAAE;YACjB,YAAY,CAAC,KAAK,CAAC;YAEnB,IAAI,CAAC,gBAAgB,EAAE;gBACrB,mBAAmB,CAAC,IAAI,CAAC;YAC3B;AAEA,YAAA,YAAY,GAAG,IAAI,CAAC;YACpB;QACF;AAEA,QAAA,YAAY,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE;YACrB,mBAAmB,CAAC,KAAK,CAAC;QAC5B;QAEA,YAAY,CAAC,IAAI,CAAC;AAClB,QAAA,eAAe,EAAE;AACjB,QAAA,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;YACtC,YAAY,CAAC,KAAK,CAAC;QACrB,CAAC,EAAE,yBAAyB,CAAC;IAC/B,CAAC,EACD,CAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAClD;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,SAAiB,KAAI;QACpB,IAAI,CAAC,iBAAiB,EAAE;YACtB,oBAAoB,CAAC,SAAS,CAAC;QACjC;AAEA,QAAA,aAAa,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC;QAEd,qBAAqB,CAAC,MAAK;AACzB,YAAA,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,iBAAiB,EAAE,aAAa,EAAE,OAAO,CAAC,CAC5C;AAED,IAAA,mBAAmB,CAAC;QAClB,UAAU;AACV,QAAA,SAAS,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,EAAE,WAAW;QACjB,UAAU;AACX,KAAA,CAAC;AAEF,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,OAAO,MAAM,eAAe,EAAE;AAChC,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAErB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,OAAO;QACL,SAAS;QACT,UAAU;QACV,QAAQ;QACR,WAAW;QACX,SAAS;QACT,KAAK;AACL,QAAA,IAAI,EAAE,WAAW;QACjB,aAAa;QACb,OAAO;QACP,QAAQ;QACR,UAAU;AACV,QAAA,KAAK,EAAE,YAAY;QACnB,WAAW;AACZ,KAAA,CAAC,EACF;QACE,SAAS;QACT,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,SAAS;QACT,KAAK;QACL,aAAa;QACb,OAAO;QACP,QAAQ;AACT,KAAA,CACF;AAED,IAAA,QACEA,GAAA,CAAC,aAAa,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,YAAY,YACzCA,GAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EAAgB,QAAQ,KAAM,KAAK,EAAA,QAAA,EAChC,QAAQ,EAAA,CACL,EAAA,CACiB;AAE7B;AAEA,SAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAwC,EAAA;AACrE,IAAA,OAAOA,GAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EAAgB,cAAc,EAAA,GAAM,KAAK,GAAI;AACtD;AAEA,SAAS,WAAW,CAAC,EACnB,QAAQ,EACR,WAAW,EACX,GAAG,KAAK,EACkE,EAAA;AAC1E,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,CAAC,aAAa,IAAI,WAAW;IAEhE,QACEA,2BAAiB,cAAc,EAAA,GAAM,KAAK,EAAA,QAAA,EACvC,OAAO,EAAA,CACH;AAEX;AAEA,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,SAAS,EACT,IAAI,EACJ,GAAG,KAAK,EACsC,EAAA;AAC9C,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC;AAEjD,IAAA,MAAM,WAAW,GAAG,CAAC,KAA0C,KAAI;AACjE,QAAA,OAAO,GAAG,KAAK,CAAC;QAEhB,IAAI,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE;YAC9C;QACF;QAEA,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAA6C,KAAI;AACtE,QAAA,SAAS,GAAG,KAAK,CAAC;QAElB,IAAI,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE;YAC9C;QACF;AAEA,QAAA,IACE,KAAK,CAAC,GAAG,KAAK,OAAO;YACrB,KAAK,CAAC,GAAG,KAAK,GAAG;YACjB,KAAK,CAAC,GAAG,KAAK,WAAW;AACzB,YAAA,KAAK,CAAC,GAAG,KAAK,SAAS,EACvB;YACA,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACvB;;;QAIA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACxB;AACF,IAAA,CAAC;AAED,IAAA,QACEC,IAAA,CAAA,QAAA,EAAA,EACE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAA,WAAA,EACZ,gBAAgB,EAC3B,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAA,eAAA,EACP,OAAO,CAAC,SAAS,EAAA,eAAA,EACjB,OAAO,CAAC,IAAI,EAAA,eAAA,EACZ,SAAS,EACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EACnC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,KACpB,KAAK,EAAA,QAAA,EAAA,CAER,QAAQ,EACTD,GAAA,CAAC,eAAe,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAA,CAAI,CAAA,EAAA,CAC9C;AAEb;AAEA,SAAS,aAAa,CAAC,EACrB,KAAK,GAAG,OAAO,EACf,SAAS,EACT,QAAQ,EACR,gBAAgB,GAAG,yBAAyB,EAC5C,SAAS,EACT,QAAQ,GAAG,QAAQ,EACnB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EACW,EAAA;AACnB,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC;AAEjD,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO;YAE1C,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;YAC7B;YAEA;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAK;AACvC,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO;AAE1C,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI;YAClF,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE;AACxD,gBAAA,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC;YAC7E;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM,oBAAoB,CAAC,KAAK,CAAC;IAC1C,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAE9F,IAAA,MAAM,aAAa,GAAG,CAAC,KAA0C,KAAI;AACnE,QAAA,SAAS,GAAG,KAAK,CAAC;AAElB,QAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACtB,YAAA,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE;YACnC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;YACjE;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;YACjE;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC;YAClE;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;QACnE;AACF,IAAA,CAAC;IAED,QACEA,GAAA,CAAC,OAAO,EAAA,EAAA,WAAA,EACK,gBAAgB,EAC3B,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,UAAU,EAAE,OAAO,CAAC,UAAwD,EAC5E,UAAU,EAAE,OAAO,CAAC,UAAU,EAC9B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EACnC,SAAS,EAAE,aAAa,KACpB,KAAK,EAAA,QAAA,EAETA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,OAAO,CAAC,WAAW,EACxB,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,EACxE,EAAE,EAAE,OAAO,CAAC,SAAS,EACrB,IAAI,EAAE,SAAS,EAAA,QAAA,EAEd,QAAQ,EAAA,CACL,EAAA,CACE;AAEd;AAEA,SAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,WAAW,EACX,KAAK,EACL,GAAG,KAAK,EAC0D,EAAA;AAClE,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC;AAC9C,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK;AAExC,IAAA,MAAM,WAAW,GAAG,CAAC,KAA0C,KAAI;AACjE,QAAA,OAAO,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAI,KAAK,CAAC,gBAAgB,IAAI,QAAQ,EAAE;YACtC;QACF;AAEA,QAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,KAA0C,KAAI;AACrE,QAAA,WAAW,GAAG,KAAK,CAAC;QAEpB,IAAI,QAAQ,EAAE;YACZ;QACF;AAEA,QAAA,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;AAC7B,IAAA,CAAC;AAED,IAAA,QACEC,IAAA,CAAA,QAAA,EAAA,EAAA,WAAA,EACa,aAAa,EAAA,YAAA,EACZ,KAAK,mBACF,QAAQ,GAAG,MAAM,GAAG,SAAS,EAC5C,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,EAAA,eAAA,EACC,QAAQ,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAChC,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,eAAe,KACxB,KAAK,EAAA,QAAA,EAAA,CAETD,cAAM,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAG,QAAQ,GAAGA,GAAA,CAAC,SAAS,KAAG,GAAG,IAAI,GAAQ,EAC9EA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,QAAQ,EAAA,CAAQ,CAAA,EAAA,CAChB;AAEb;AAEA,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwC,EAAA;AACpF,IAAA,OAAOA,0BAAgB,kBAAkB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,GAAI;AACjG;AAEA,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,EAAE,EACF,MAAM,EACN,OAAO,EACP,WAAW,EACX,WAAW,EACX,cAAc,EACd,GAAG,KAAK,EAIT,EAAA;AACC,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAA0B,IAAI,CAAC;IAE5D,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,EAAyB,KAAI;AAC3B,QAAA,OAAO,CAAC,UAAyD,CAAC,OAAO,GAAG,EAAE;AACjF,IAAA,CAAC,EACD,CAAC,OAAO,CAAC,UAAU,CAAC,CACrB;AAED,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,WAAW,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;AAE/E,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,qBAAqB,CAAC,MAAK;AACzB,gBAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACvB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,KAA0C,KAAI;AAClE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAyB;AACnD,YAAA,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;AACtC,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACvB;aAAO;AACL,YAAA,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAA4C,KAAI;AACrE,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;YAC1E,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;QAEA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACtC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB;QACF;QAEA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YACtB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB;YAEA,qBAAqB,CAAC,MAAK;gBACzB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;AACnE,YAAA,CAAC,CAAC;YACF;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB;YAEA,qBAAqB,CAAC,MAAK;gBACzB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;AACnE,YAAA,CAAC,CAAC;YACF;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB;iBAAO,IAAI,WAAW,EAAE;AACtB,gBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,CAC1D,uDAAuD,CAC5B;gBAC7B,SAAS,EAAE,KAAK,EAAE;YACpB;YACA;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC/E,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACvB;AACF,IAAA,CAAC;AAED,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,EACvD,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,KAAK,IAAG;YACf,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;AACxC,gBAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YAC3B;AACF,QAAA,CAAC,aAEDD,GAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,CAAC,QAAQ,mBACX,OAAO,CAAC,SAAS,EAAA,eAAA,EACjB,OAAO,CAAC,IAAI,EAAA,eAAA,EACZ,SAAS,EACxB,SAAS,EAAE,CAAC,CAAC,sBAAsB,CAAC,EACpC,YAAY,EAAE,KAAK,EAAA,GACf,KAAK,EAAA,CACT,EACFA,IAAC,eAAe,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAA,CAAI,CAAA,EAAA,CACjD;AAEV;AA2BA,SAAS,gBAAgB,CAAC,EACxB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,SAAS,EACT,KAAK,GACyB,EAAA;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAqB,IAAI,CAAC;IACzD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC;IAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC;IAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAuC,IAAI,CAAC;AAC9E,IAAA,MAAM,gBAAgB,GAAG,QAAQ,KAAK,SAAS;AAC/C,IAAA,MAAM,iBAAiB,GAAG,KAAK,KAAK,SAAS;AAC7C,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;AACpF,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;AACpF,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvD,MAAM,WAAW,GAAG,gBAAgB,GAAG,QAAQ,GAAG,gBAAgB;IAClE,MAAM,YAAY,GAAG,iBAAiB,GAAG,KAAK,GAAG,iBAAiB;AAClE,IAAA,MAAM,WAAW,GAAG,WAAW,IAAI,SAAS;IAC5C,MAAM,cAAc,GAAG;AACpB,SAAA,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAChE,GAAG,CAAC,WAAW;SACf,MAAM,CAAC,OAAO,CAAC;AAClB,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;AAExC,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,MAAK;AAC7C,QAAA,IAAI,aAAa,CAAC,OAAO,EAAE;AACzB,YAAA,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC;AACnC,YAAA,aAAa,CAAC,OAAO,GAAG,IAAI;QAC9B;IACF,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAC/B,CAAC,QAAiB,KAAI;QACpB,IAAI,QAAQ,EAAE;AACZ,YAAA,eAAe,EAAE;YACjB,YAAY,CAAC,KAAK,CAAC;YAEnB,IAAI,CAAC,gBAAgB,EAAE;gBACrB,mBAAmB,CAAC,IAAI,CAAC;YAC3B;AAEA,YAAA,YAAY,GAAG,IAAI,CAAC;YACpB;QACF;AAEA,QAAA,YAAY,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE;YACrB,mBAAmB,CAAC,KAAK,CAAC;QAC5B;QAEA,YAAY,CAAC,IAAI,CAAC;AAClB,QAAA,eAAe,EAAE;AACjB,QAAA,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;YACtC,YAAY,CAAC,KAAK,CAAC;QACrB,CAAC,EAAE,yBAAyB,CAAC;IAC/B,CAAC,EACD,CAAC,eAAe,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAClD;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,SAAmB,KAAI;QACtB,IAAI,CAAC,iBAAiB,EAAE;YACtB,oBAAoB,CAAC,SAAS,CAAC;QACjC;AAEA,QAAA,aAAa,GAAG,SAAS,CAAC;AAC5B,IAAA,CAAC,EACD,CAAC,iBAAiB,EAAE,aAAa,CAAC,CACnC;AAED,IAAA,mBAAmB,CAAC;QAClB,UAAU;AACV,QAAA,SAAS,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,UAAU,EAAE,UAAwD;AACrE,KAAA,CAAC;AAEF,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,CAAC,WAAW,EAAE;YAChB,cAAc,CAAC,EAAE,CAAC;QACpB;AACF,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAEjC,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,OAAO,MAAM,eAAe,EAAE;AAChC,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;AAErB,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;YAElC,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;YAC7B;YAEA;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAK;AACvC,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;AAElC,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI;YAC1E,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE;AACxD,gBAAA,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7E;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM,oBAAoB,CAAC,KAAK,CAAC;AAC1C,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAE/B,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,UAAU,IAAI,WAAW,EAAE;YAC7B,qBAAqB,CAAC,MAAK;gBACzB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;gBACxD,KAAK,EAAE,KAAK,EAAE;AAChB,YAAA,CAAC,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAE7B,IAAA,MAAM,gBAAgB,GAAG,EAAE,CACzB,WAAW,CAAC,SAAS,EACrB,WAAW,CAAC,YAAY,CAAC,EACzB,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,EAAE,EAC9B,EAAE,CAAC,WAAW,CAAC,QAAQ,GAAG,QAAQ,EAAE,EACpC,EAAE,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,EAAE,EAC1C,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,EAAE,EACxC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,SAAS,IAAI,WAAW,IAAI,SAAS,EAAE,EACtE,cAAc,CACf;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAA0C,KAAI;QACnE,IAAI,UAAU,EAAE;YACd,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;AAExD,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE;AACpC,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;oBAC7B,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,cAAc,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,KAAK,EAAE,KAAK,EAAE;oBACd;gBACF;gBAEA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/E,KAAK,CAAC,cAAc,EAAE;oBACtB,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;oBACxC,KAAK,EAAE,KAAK,EAAE;oBACd;gBACF;YACF;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,OAAO,CAAC,KAAK,CAAC;YACd,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;YACxD,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,KAAK,EAAE;YACtC;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC;YAC/D;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC;YAC/D;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC;YAChE;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YACtB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC;QACjE;AACF,IAAA,CAAC;IAED,QACEC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACED,IAAA,CAAA,KAAA,EAAA,EAAA,0BAAA,EAAA,IAAA,EAEE,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAAA,QAAA,EAAA,CAEnEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,CAC5CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAC5CC,IAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAA,QAAA,EAAA,CACrC,KAAK,EACL,UAAU,IAAID,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAA,QAAA,EAAA,GAAA,EAAA,CAAU,CAAA,EAAA,CACxD,EAAA,CACJ,EACL,UAAU,IACTC,IAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,UAA2D,EAChE,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAA,kBAAA,EAC1B,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EAChD,OAAO,EAAE,MAAK;oCACZ,IAAI,CAAC,WAAW,EAAE;wCAChB,OAAO,CAAC,IAAI,CAAC;oCACf;AACF,gCAAA,CAAC,EACD,OAAO,EAAE,KAAK,IAAG;oCACf,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,EAAE;wCACxC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;oCACrD;AACF,gCAAA,CAAC,aAEDD,GAAA,CAAA,OAAA,EAAA,EACE,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAC5E,WAAW,EAAE,WAAW,EAAA,eAAA,EACT,WAAW,EAAA,eAAA,EACX,SAAS,EAAA,cAAA,EACV,KAAK,GAAG,MAAM,GAAG,SAAS,EAAA,kBAAA,EACtB,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,SAAS,EAChE,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,CAAC,CAAC,sBAAsB,CAAC,EACpC,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,KAAK,IAAG;4CAChB,IAAI,CAAC,WAAW,EAAE;AAChB,gDAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAyB;AACnD,gDAAA,cAAc,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;gDACtC,OAAO,CAAC,IAAI,CAAC;4CACf;iDAAO;AACL,gDAAA,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;4CACpC;wCACF,CAAC,EACD,OAAO,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EACjC,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,EACjC,SAAS,EAAE,KAAK,IAAG;AACjB,4CAAA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,KAAK,CAAC,WAAW,EAAE;gDACzE,KAAK,CAAC,cAAc,EAAE;gDACtB;4CACF;4CAEA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;gDACrC,KAAK,CAAC,cAAc,EAAE;gDACtB,OAAO,CAAC,IAAI,CAAC;gDACb;4CACF;4CAEA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,WAAW,EAAE;gDACzC,KAAK,CAAC,cAAc,EAAE;gDACtB,OAAO,CAAC,KAAK,CAAC;gDACd;4CACF;AAEA,4CAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;gDAC7B,KAAK,CAAC,cAAc,EAAE;gDAEtB,IAAI,CAAC,WAAW,EAAE;oDAChB,OAAO,CAAC,IAAI,CAAC;gDACf;gDAEA,qBAAqB,CAAC,MAAK;oDACzB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC;AACjE,gDAAA,CAAC,CAAC;gDACF;4CACF;AAEA,4CAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;gDAC3B,KAAK,CAAC,cAAc,EAAE;gDAEtB,IAAI,CAAC,WAAW,EAAE;oDAChB,OAAO,CAAC,IAAI,CAAC;gDACf;gDAEA,qBAAqB,CAAC,MAAK;oDACzB,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC;AACjE,gDAAA,CAAC,CAAC;gDACF;4CACF;AAEA,4CAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gDACzB,KAAK,CAAC,cAAc,EAAE;gDAEtB,IAAI,CAAC,WAAW,EAAE;oDAChB,OAAO,CAAC,IAAI,CAAC;gDACf;gDACA;4CACF;4CAEA,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gDAC9E,OAAO,CAAC,IAAI,CAAC;4CACf;wCACF,CAAC,EAAA,CACD,EACFA,GAAA,CAAC,eAAe,EAAA,EAAC,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAAA,CAAI,CAAA,EAAA,CAC7C,KAENC,IAAA,CAAA,QAAA,EAAA,EACE,GAAG,EAAE,UAA8D,EACnE,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,QAAQ,EAAA,eAAA,EACC,WAAW,EAAA,eAAA,EACX,SAAS,EAAA,cAAA,EACV,KAAK,GAAG,MAAM,GAAG,SAAS,EAAA,kBAAA,EACtB,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,SAAS,EAChE,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAA,kBAAA,EAC1B,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EAChD,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,WAAW,CAAC,EACpC,OAAO,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EACjC,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,EACjC,SAAS,EAAE,KAAK,IAAG;AACjB,oCAAA,IACE,KAAK,CAAC,GAAG,KAAK,OAAO;wCACrB,KAAK,CAAC,GAAG,KAAK,GAAG;wCACjB,KAAK,CAAC,GAAG,KAAK,WAAW;AACzB,wCAAA,KAAK,CAAC,GAAG,KAAK,SAAS,EACvB;wCACA,KAAK,CAAC,cAAc,EAAE;wCACtB,OAAO,CAAC,IAAI,CAAC;oCACf;AACF,gCAAA,CAAC,EAAA,QAAA,EAAA,CAEDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,EAAA,QAAA,EAChC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,GAC9C,EACPA,GAAA,CAAC,eAAe,EAAA,EAAC,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,EAAA,CAAI,CAAA,EAAA,CAC1C,CACV,CAAA,EAAA,CACG,EACL,UAAU,IACTA,GAAA,CAAC,UAAU,EAAA,EACT,EAAE,EAAE,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,EACzB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC,EAAA,QAAA,EAEpC,UAAU,EAAA,CACA,IACX,IAAI,EACP;0BACG,YAAY,CAAC,GAAG,CAAC,SAAS,KACxBA,GAAA,CAAA,OAAA,EAAA,EAAuB,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAA,EAAvD,SAAS,CAAkD,CACxE;0BACD,IAAI,CAAA,EAAA,CACJ,EACNA,IAAC,OAAO,EAAA,EAAA,WAAA,EACK,gBAAgB,EAC3B,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAwD,EACpE,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,YAAY,EAAE,KAAK,EAC1B,IAAI,EAAE,YAAY,EAAE,IAAI,EACxB,UAAU,EAAE,YAAY,EAAE,UAAU,EACpC,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,IAAI,yBAAyB,EAC7E,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,EACrE,SAAS,EAAE,aAAa,EAAA,QAAA,EAExBA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAA,QAAA,EAClF,aAAa,CAAC,GAAG,CAAC,KAAK,IAAG;wBACzB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;wBAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;AAEhD,wBAAA,QACEC,IAAA,CAAA,QAAA,EAAA,EAAA,WAAA,EAEa,mBAAmB,EAAA,YAAA,EAClB,SAAS,EAAA,eAAA,EACN,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EACxD,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,EAAA,eAAA,EACC,OAAO,EACtB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAC9B,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EACtC,OAAO,EAAE,MACP,SAAS,CACP;AACE,kCAAE,YAAY,CAAC,MAAM,CAAC,WAAW,IAAI,WAAW,KAAK,SAAS;AAC9D,kCAAE,CAAC,GAAG,YAAY,EAAE,SAAS,CAAC,CACjC,EAEH,WAAW,EAAE,KAAK,IAAG;AACnB,gCAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;AACzB,oCAAA,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;gCAC7B;AACF,4BAAA,CAAC,EAAA,QAAA,EAAA,CAEDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAG,OAAO,GAAGA,IAAC,SAAS,EAAA,EAAA,CAAG,GAAG,IAAI,EAAA,CAAQ,EAC7EA,wBAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAA,CAAQ,CAAA,EAAA,EAxB9B,SAAS,CAyBP;AAEb,oBAAA,CAAC,CAAC,EAAA,CACE,EAAA,CACE,CAAA,EAAA,CACT;AAEP;AAEA,SAAS,WAAW,CAAC,KAAuB,EAAA;IAC1C,MAAM,EACJ,KAAK,EACL,UAAU,EACV,KAAK,GAAG,KAAK,EACb,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,EAAE,EACF,WAAW,EACX,eAAe,GAAG,wBAAwB,GAC3C,GAAG,KAAK;AACT,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE;AACjC,IAAA,MAAM,SAAS,GAAG,EAAE,IAAI,WAAW;AACnC,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE;AACnC,IAAA,MAAM,YAAY,GAAG,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChE,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvD,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxD,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,SAAS,CAAC;IAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAA0B,IAAI,CAAC;AAC5D,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,MACE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAC5C,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAC5B,EACH,CAAC,QAAQ,CAAC,CACX;AACD,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CACnC,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,EACjE,CAAC,UAAU,CAAC,CACb;AACD,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,IAAI,eAAe;IAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAyB,KAAI;QAClE,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;IAClD,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,CAAC,KAAyB,KAAI;QAC5B,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC7E,IAAA,CAAC,EACD,CAAC,WAAW,EAAE,WAAW,CAAC,CAC3B;AAED,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAK;QACvC,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,eAAe;QACxB;AAEA,QAAA,OAAO,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC;IAC7C,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AAEhD,IAAA,KAAK,CAAC,eAAe,CAAC,MAAK;QACzB,IAAI,CAAC,KAAK,EAAE;YACV,WAAW,CAAC,SAAS,CAAC;YACtB;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO;QAErC,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;QAEA,MAAM,cAAc,GAAG,MAAK;YAC1B,MAAM,UAAU,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,KAAK;YAC7D,MAAM,SAAS,GAAG,EAAE;AACpB,YAAA,MAAM,iBAAiB,GAAG,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACzD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC;YAC3E,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACzC,QAAA,CAAC;AAED,QAAA,cAAc,EAAE;AAEhB,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC;AACzD,QAAA,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;AAEpC,QAAA,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE;AAC1C,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAEzB,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC;AAC1D,IAAA,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB;AAED,IAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,QAAA,QACEA,GAAA,CAAC,gBAAgB,EAAA,EAAA,GACX,KAAK,EACT,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EAAA,CACpB;IAEN;IAEA,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,KAAK;IAEpD,MAAM,oBAAoB,GAAG;AAC3B,UAAE,CAAC,KAA0C,KAAI;YAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAEvD,IAAI,YAAY,YAAY,gBAAgB,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;AACvF,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;oBAC7B,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,cAAc,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,YAAY,CAAC,KAAK,EAAE;oBACpB;gBACF;gBAEA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/E,KAAK,CAAC,cAAc,EAAE;oBACtB,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;oBACxC,YAAY,CAAC,KAAK,EAAE;oBACpB;gBACF;YACF;QACF;UACA,SAAS;IAEb,QACEC,IAAA,CAAC,MAAM,EAAA,EAAA,GACD,eAAe,EACnB,YAAY,EAAE,QAAQ,IAAG;AACvB,YAAA,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC9B,SAAS,CAAC,QAAQ,CAAC;YAEnB,IAAI,CAAC,QAAQ,EAAE;gBACb,cAAc,CAAC,EAAE,CAAC;YACpB;AACF,QAAA,CAAC,EACD,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAAA,QAAA,EAAA,CAE5BA,IAAA,CAAA,KAAA,EAAA,EAAA,0BAAA,EAAA,IAAA,EAEE,SAAS,EAAE,EAAE,CACX,WAAW,CAAC,SAAS,EACrB,WAAW,CAAC,YAAY,CAAC,EACzB,EAAE,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,EAAE,EAC9B,EAAE,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,EAC1C,EAAE,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,EAAE,EAC1C,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE,EAC9D,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,EACpD,cAAc,CACf,EACD,KAAK,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,aAEnEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC,aAC5CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAC5CC,IAAA,CAAC,KAAK,IAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAA,QAAA,EAAA,CACrC,KAAK,EACL,UAAU,IAAID,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAA,QAAA,EAAA,GAAA,EAAA,CAAU,CAAA,EAAA,CACxD,EAAA,CACJ,EACL,UAAU,IACTA,IAAC,kBAAkB,EAAA,EACjB,EAAE,EAAE,SAAS,EAAA,cAAA,EACC,KAAK,GAAG,MAAM,GAAG,SAAS,sBACtB,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,SAAS,EAChE,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EACjC,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,GACjC,KAEFA,IAAC,aAAa,EAAA,EACZ,EAAE,EAAE,SAAS,EAAA,cAAA,EACC,KAAK,GAAG,MAAM,GAAG,SAAS,sBACtB,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,OAAA,CAAS,GAAG,SAAS,EAChE,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,EAC7B,OAAO,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EACjC,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,YAEjCA,GAAA,CAAC,WAAW,EAAA,EAAC,WAAW,EAAE,WAAW,EAAA,CAAI,GAC3B,CACjB,CAAA,EAAA,CACG,EACL,UAAU,IACTA,GAAA,CAAC,UAAU,IACT,EAAE,EAAE,GAAG,SAAS,CAAA,OAAA,CAAS,EACzB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC,EAAA,QAAA,EAEpC,UAAU,GACA,IACX,IAAI,IACJ,EACNA,GAAA,CAAC,aAAa,EAAA,EAAA,GAAK,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAA,QAAA,EAC7D,WAAW,GAAG,aAAa,GAAG,UAAU,EAAA,CAC3B,CAAA,EAAA,CACT;AAEb;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var s = {"trigger":"select-module_trigger__S6njT","trigger-value":"select-module_trigger-value__f00uG","input-trigger":"select-module_input-trigger__t8qxd","trigger-icon":"select-module_trigger-icon__4hptP","content":"select-module_content__xkTJD","multi-content":"select-module_multi-content__RxqWV","viewport":"select-module_viewport__mySvI","viewport-popper":"select-module_viewport-popper__pnOKW","item":"select-module_item__NL-bS","search-trigger-input":"select-module_search-trigger-input__05rXr","multi-options":"select-module_multi-options__AgPFU","multi-item":"select-module_multi-item__2rF-C","item-indicator":"select-module_item-indicator__gCH3M","separator":"select-module_separator__qoXbe"};
|
|
2
|
+
|
|
3
|
+
export { s as default };
|
|
4
|
+
//# sourceMappingURL=select.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
package/dist/form.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { C as Checkbox, a as CheckboxProps, D as DatePicker, L as Label, c as LabelProps, S as Select, e as SelectContent, g as SelectField, i as SelectGroup, j as SelectItem, m as SelectSeparator, o as SelectTrigger, p as SelectValue } from './index-Bzf20Rpc.js';
|
|
2
|
+
export { I as Input, a as InputBaseProps } from './input-CWHXOpeH.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'class-variance-authority';
|
|
5
|
+
import 'class-variance-authority/types';
|
package/dist/form.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Checkbox } from './form/Checkbox/checkbox.js';
|
|
2
|
+
export { DatePicker } from './form/DatePicker/date-picker.js';
|
|
3
|
+
export { Input } from './form/Input/input.js';
|
|
4
|
+
export { Label } from './form/Label/label.js';
|
|
5
|
+
export { Select, SelectContent, SelectField, SelectGroup, SelectItem, SelectSeparator, SelectTrigger, SelectValue } from './form/Select/select.js';
|
|
6
|
+
//# sourceMappingURL=form.js.map
|
package/dist/form.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sidebar.d.ts","sourceRoot":"","sources":["../../../src/hooks/layout/use-sidebar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,wBAAgB,UAAU,IAAI,mBAAmB,CAOhD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SidebarContext } from '../../layout/Sidebar/sidebar-context.js';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
|
|
4
|
+
function useSidebar() {
|
|
5
|
+
const context = useContext(SidebarContext);
|
|
6
|
+
if (!context) {
|
|
7
|
+
throw new Error('useSidebar must be used within a SidebarProvider.');
|
|
8
|
+
}
|
|
9
|
+
return context;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { useSidebar };
|
|
13
|
+
//# sourceMappingURL=use-sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sidebar.js","sources":["../../../src/hooks/layout/use-sidebar.ts"],"sourcesContent":["import { SidebarContext } from '@constellation/layout/Sidebar/sidebar-context';\nimport { type SidebarContextValue } from '@constellation/types';\nimport { useContext } from 'react';\n\nexport function useSidebar(): SidebarContextValue {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n"],"names":[],"mappings":";;;SAIgB,UAAU,GAAA;AACxB,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;IACtE;AAEA,IAAA,OAAO,OAAO;AAChB;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-alerts.d.ts","sourceRoot":"","sources":["../../../src/hooks/ui/use-alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,wBAAgB,SAAS,IAAI,iBAAiB,CAO7C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AlertContext } from '../../ui/Alert/alert-context.js';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
|
|
4
|
+
function useAlerts() {
|
|
5
|
+
const context = useContext(AlertContext);
|
|
6
|
+
if (!context) {
|
|
7
|
+
throw new Error('useAlerts must be used within an AlertProvider.');
|
|
8
|
+
}
|
|
9
|
+
return context;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { useAlerts };
|
|
13
|
+
//# sourceMappingURL=use-alerts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-alerts.js","sources":["../../../src/hooks/ui/use-alerts.ts"],"sourcesContent":["import { type AlertContextValue } from '@constellation/types/ui/alerts';\nimport { AlertContext } from '@constellation/ui/Alert/alert-context';\nimport { useContext } from 'react';\n\nexport function useAlerts(): AlertContextValue {\n const context = useContext(AlertContext);\n if (!context) {\n throw new Error('useAlerts must be used within an AlertProvider.');\n }\n\n return context;\n}\n"],"names":[],"mappings":";;;SAIgB,SAAS,GAAA;AACvB,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;IACpE;AAEA,IAAA,OAAO,OAAO;AAChB;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare function useTableSorting<T extends object, K extends string>(rows: T[], accessors: Record<K, (row: T) => unknown>): {
|
|
2
|
+
sortedRows: T[];
|
|
3
|
+
sortState: import("../..").SortState | null | undefined;
|
|
4
|
+
};
|
|
5
|
+
export { useTableSorting };
|
|
6
|
+
//# sourceMappingURL=use-table-sorting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-table-sorting.d.ts","sourceRoot":"","sources":["../../../src/hooks/ui/use-table-sorting.ts"],"names":[],"mappings":"AAMA,iBAAS,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACzD,IAAI,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;;;EAiC1C;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TableSortContext } from '../../ui/Table/table-sort-context.js';
|
|
2
|
+
import { useContext, useMemo } from 'react';
|
|
3
|
+
|
|
4
|
+
// `T extends object` (not `Record<string, unknown>`): the hook never index-
|
|
5
|
+
// accesses rows — all reads go through the caller-supplied accessor functions —
|
|
6
|
+
// so consumers' row types don't need an index signature to qualify.
|
|
7
|
+
function useTableSorting(rows, accessors) {
|
|
8
|
+
const ctx = useContext(TableSortContext);
|
|
9
|
+
const sortState = ctx?.sortState;
|
|
10
|
+
const sortedRows = useMemo(() => {
|
|
11
|
+
if (!sortState || !(sortState.key in accessors)) {
|
|
12
|
+
return rows;
|
|
13
|
+
}
|
|
14
|
+
const accessor = accessors[sortState.key];
|
|
15
|
+
const sorted = [...rows].sort((a, b) => {
|
|
16
|
+
const aVal = accessor(a);
|
|
17
|
+
const bVal = accessor(b);
|
|
18
|
+
if (aVal == null && bVal != null)
|
|
19
|
+
return -1;
|
|
20
|
+
if (aVal != null && bVal == null)
|
|
21
|
+
return 1;
|
|
22
|
+
if (aVal == null && bVal == null)
|
|
23
|
+
return 0;
|
|
24
|
+
if (typeof aVal === 'number' && typeof bVal === 'number') {
|
|
25
|
+
return aVal - bVal;
|
|
26
|
+
}
|
|
27
|
+
const aStr = String(aVal).toLowerCase();
|
|
28
|
+
const bStr = String(bVal).toLowerCase();
|
|
29
|
+
return aStr.localeCompare(bStr);
|
|
30
|
+
});
|
|
31
|
+
return sortState.direction === 'asc' ? sorted : sorted.reverse();
|
|
32
|
+
}, [rows, sortState, accessors]);
|
|
33
|
+
return { sortedRows, sortState };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { useTableSorting };
|
|
37
|
+
//# sourceMappingURL=use-table-sorting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-table-sorting.js","sources":["../../../src/hooks/ui/use-table-sorting.ts"],"sourcesContent":["import { TableSortContext } from '@constellation/ui/Table/table-sort-context';\nimport { useContext, useMemo } from 'react';\n\n// `T extends object` (not `Record<string, unknown>`): the hook never index-\n// accesses rows — all reads go through the caller-supplied accessor functions —\n// so consumers' row types don't need an index signature to qualify.\nfunction useTableSorting<T extends object, K extends string>(\n rows: T[],\n accessors: Record<K, (row: T) => unknown>,\n) {\n const ctx = useContext(TableSortContext);\n const sortState = ctx?.sortState;\n\n const sortedRows = useMemo(() => {\n if (!sortState || !(sortState.key in accessors)) {\n return rows;\n }\n\n const accessor = accessors[sortState.key as K];\n const sorted = [...rows].sort((a, b) => {\n const aVal = accessor(a);\n const bVal = accessor(b);\n\n if (aVal == null && bVal != null) return -1;\n if (aVal != null && bVal == null) return 1;\n if (aVal == null && bVal == null) return 0;\n\n if (typeof aVal === 'number' && typeof bVal === 'number') {\n return aVal - bVal;\n }\n\n const aStr = String(aVal).toLowerCase();\n const bStr = String(bVal).toLowerCase();\n\n return aStr.localeCompare(bStr);\n });\n\n return sortState.direction === 'asc' ? sorted : sorted.reverse();\n }, [rows, sortState, accessors]);\n\n return { sortedRows, sortState };\n}\n\nexport { useTableSorting };\n"],"names":[],"mappings":";;;AAGA;AACA;AACA;AACA,SAAS,eAAe,CACtB,IAAS,EACT,SAAyC,EAAA;AAEzC,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC;AACxC,IAAA,MAAM,SAAS,GAAG,GAAG,EAAE,SAAS;AAEhC,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAK;AAC9B,QAAA,IAAI,CAAC,SAAS,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE;AAC/C,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,GAAQ,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;AACxB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;AAExB,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;gBAAE,OAAO,EAAE;AAC3C,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAE,gBAAA,OAAO,CAAC;AAC1C,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAE,gBAAA,OAAO,CAAC;YAE1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACxD,OAAO,IAAI,GAAG,IAAI;YACpB;YAEA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;AAEvC,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,SAAS,CAAC,SAAS,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE;IAClE,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAEhC,IAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AAClC;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type Appearance = 'light' | 'dark' | 'system';
|
|
2
|
+
export type ResolvedAppearance = 'light' | 'dark';
|
|
3
|
+
export declare function initializeTheme(): void;
|
|
4
|
+
export declare function useAppearance(): {
|
|
5
|
+
readonly updateAppearance: (mode: Appearance) => void;
|
|
6
|
+
readonly appearance: Appearance;
|
|
7
|
+
readonly resolvedAppearance: ResolvedAppearance;
|
|
8
|
+
readonly isDarkMode: boolean;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=use-appearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-appearance.d.ts","sourceRoot":"","sources":["../../src/hooks/use-appearance.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,MAAM,CAAC;AA2IlD,wBAAgB,eAAe,SAG9B;AAED,wBAAgB,aAAa;sCAOiB,UAAU;yBAhJ1C,UAAU;iCACF,kBAAkB;yBAC1B,OAAO;EA2JpB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { useSyncExternalStore, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
const APPEARANCE_STORAGE_KEY = 'appearance';
|
|
4
|
+
const APPEARANCE_COOKIE_KEY = 'appearance';
|
|
5
|
+
const DEFAULT_APPEARANCE = 'system';
|
|
6
|
+
const appearanceListeners = new Set();
|
|
7
|
+
let hasInitializedAppearanceStore = false;
|
|
8
|
+
let currentAppearance = DEFAULT_APPEARANCE;
|
|
9
|
+
let currentSnapshot = {
|
|
10
|
+
appearance: DEFAULT_APPEARANCE,
|
|
11
|
+
resolvedAppearance: 'light',
|
|
12
|
+
isDarkMode: false,
|
|
13
|
+
};
|
|
14
|
+
const isAppearance = (value) => value === 'light' || value === 'dark' || value === 'system';
|
|
15
|
+
const prefersDark = () => {
|
|
16
|
+
if (typeof window === 'undefined') {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
20
|
+
};
|
|
21
|
+
const resolveAppearance = (appearance) => appearance === 'system' ? (prefersDark() ? 'dark' : 'light') : appearance;
|
|
22
|
+
const createSnapshot = (appearance) => {
|
|
23
|
+
const resolvedAppearance = resolveAppearance(appearance);
|
|
24
|
+
return {
|
|
25
|
+
appearance,
|
|
26
|
+
resolvedAppearance,
|
|
27
|
+
isDarkMode: resolvedAppearance === 'dark',
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const emitAppearanceChange = () => {
|
|
31
|
+
appearanceListeners.forEach(listener => listener());
|
|
32
|
+
};
|
|
33
|
+
const setCookie = (name, value, days = 365) => {
|
|
34
|
+
if (typeof document === 'undefined') {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const maxAge = days * 24 * 60 * 60;
|
|
38
|
+
document.cookie = `${name}=${value};path=/;max-age=${maxAge};SameSite=Lax`;
|
|
39
|
+
};
|
|
40
|
+
const applyTheme = (appearance) => {
|
|
41
|
+
if (typeof document === 'undefined') {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
document.documentElement.classList.toggle('dark', resolveAppearance(appearance) === 'dark');
|
|
45
|
+
};
|
|
46
|
+
const readStoredAppearance = () => {
|
|
47
|
+
if (typeof window === 'undefined') {
|
|
48
|
+
return DEFAULT_APPEARANCE;
|
|
49
|
+
}
|
|
50
|
+
const storedAppearance = localStorage.getItem(APPEARANCE_STORAGE_KEY);
|
|
51
|
+
return isAppearance(storedAppearance) ? storedAppearance : DEFAULT_APPEARANCE;
|
|
52
|
+
};
|
|
53
|
+
const commitAppearance = (appearance) => {
|
|
54
|
+
currentAppearance = appearance;
|
|
55
|
+
currentSnapshot = createSnapshot(appearance);
|
|
56
|
+
applyTheme(appearance);
|
|
57
|
+
emitAppearanceChange();
|
|
58
|
+
};
|
|
59
|
+
const syncAppearanceFromStorage = () => {
|
|
60
|
+
commitAppearance(readStoredAppearance());
|
|
61
|
+
};
|
|
62
|
+
const handleSystemThemeChange = () => {
|
|
63
|
+
if (currentAppearance !== 'system') {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
commitAppearance('system');
|
|
67
|
+
};
|
|
68
|
+
const handleStorageChange = (event) => {
|
|
69
|
+
if (event.key !== null && event.key !== APPEARANCE_STORAGE_KEY) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
syncAppearanceFromStorage();
|
|
73
|
+
};
|
|
74
|
+
const initializeAppearanceStore = () => {
|
|
75
|
+
if (typeof window === 'undefined' || hasInitializedAppearanceStore) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
hasInitializedAppearanceStore = true;
|
|
79
|
+
currentAppearance = readStoredAppearance();
|
|
80
|
+
currentSnapshot = createSnapshot(currentAppearance);
|
|
81
|
+
applyTheme(currentAppearance);
|
|
82
|
+
window
|
|
83
|
+
.matchMedia('(prefers-color-scheme: dark)')
|
|
84
|
+
.addEventListener('change', handleSystemThemeChange);
|
|
85
|
+
window.addEventListener('storage', handleStorageChange);
|
|
86
|
+
};
|
|
87
|
+
const subscribeToAppearance = (listener) => {
|
|
88
|
+
initializeAppearanceStore();
|
|
89
|
+
appearanceListeners.add(listener);
|
|
90
|
+
return () => {
|
|
91
|
+
appearanceListeners.delete(listener);
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
const getAppearanceSnapshot = () => {
|
|
95
|
+
initializeAppearanceStore();
|
|
96
|
+
return currentSnapshot;
|
|
97
|
+
};
|
|
98
|
+
const getServerAppearanceSnapshot = () => ({
|
|
99
|
+
appearance: DEFAULT_APPEARANCE,
|
|
100
|
+
resolvedAppearance: 'light',
|
|
101
|
+
isDarkMode: false,
|
|
102
|
+
});
|
|
103
|
+
function initializeTheme() {
|
|
104
|
+
initializeAppearanceStore();
|
|
105
|
+
applyTheme(currentAppearance);
|
|
106
|
+
}
|
|
107
|
+
function useAppearance() {
|
|
108
|
+
const snapshot = useSyncExternalStore(subscribeToAppearance, getAppearanceSnapshot, getServerAppearanceSnapshot);
|
|
109
|
+
const updateAppearance = useCallback((mode) => {
|
|
110
|
+
if (typeof window !== 'undefined') {
|
|
111
|
+
localStorage.setItem(APPEARANCE_STORAGE_KEY, mode);
|
|
112
|
+
}
|
|
113
|
+
setCookie(APPEARANCE_COOKIE_KEY, mode);
|
|
114
|
+
commitAppearance(mode);
|
|
115
|
+
}, []);
|
|
116
|
+
return {
|
|
117
|
+
...snapshot,
|
|
118
|
+
updateAppearance,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export { initializeTheme, useAppearance };
|
|
123
|
+
//# sourceMappingURL=use-appearance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-appearance.js","sources":["../../src/hooks/use-appearance.tsx"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\n\nexport type Appearance = 'light' | 'dark' | 'system';\nexport type ResolvedAppearance = 'light' | 'dark';\n\nconst APPEARANCE_STORAGE_KEY = 'appearance';\nconst APPEARANCE_COOKIE_KEY = 'appearance';\nconst DEFAULT_APPEARANCE: Appearance = 'system';\n\ntype AppearanceSnapshot = {\n appearance: Appearance;\n resolvedAppearance: ResolvedAppearance;\n isDarkMode: boolean;\n};\n\nconst appearanceListeners = new Set<() => void>();\n\nlet hasInitializedAppearanceStore = false;\nlet currentAppearance: Appearance = DEFAULT_APPEARANCE;\nlet currentSnapshot: AppearanceSnapshot = {\n appearance: DEFAULT_APPEARANCE,\n resolvedAppearance: 'light',\n isDarkMode: false,\n};\n\nconst isAppearance = (value: string | null): value is Appearance =>\n value === 'light' || value === 'dark' || value === 'system';\n\nconst prefersDark = () => {\n if (typeof window === 'undefined') {\n return false;\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n};\n\nconst resolveAppearance = (appearance: Appearance): ResolvedAppearance =>\n appearance === 'system' ? (prefersDark() ? 'dark' : 'light') : appearance;\n\nconst createSnapshot = (appearance: Appearance): AppearanceSnapshot => {\n const resolvedAppearance = resolveAppearance(appearance);\n\n return {\n appearance,\n resolvedAppearance,\n isDarkMode: resolvedAppearance === 'dark',\n };\n};\n\nconst emitAppearanceChange = () => {\n appearanceListeners.forEach(listener => listener());\n};\n\nconst setCookie = (name: string, value: string, days = 365) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const maxAge = days * 24 * 60 * 60;\n document.cookie = `${name}=${value};path=/;max-age=${maxAge};SameSite=Lax`;\n};\n\nconst applyTheme = (appearance: Appearance) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.documentElement.classList.toggle('dark', resolveAppearance(appearance) === 'dark');\n};\n\nconst readStoredAppearance = (): Appearance => {\n if (typeof window === 'undefined') {\n return DEFAULT_APPEARANCE;\n }\n\n const storedAppearance = localStorage.getItem(APPEARANCE_STORAGE_KEY);\n return isAppearance(storedAppearance) ? storedAppearance : DEFAULT_APPEARANCE;\n};\n\nconst commitAppearance = (appearance: Appearance) => {\n currentAppearance = appearance;\n currentSnapshot = createSnapshot(appearance);\n applyTheme(appearance);\n emitAppearanceChange();\n};\n\nconst syncAppearanceFromStorage = () => {\n commitAppearance(readStoredAppearance());\n};\n\nconst handleSystemThemeChange = () => {\n if (currentAppearance !== 'system') {\n return;\n }\n\n commitAppearance('system');\n};\n\nconst handleStorageChange = (event: StorageEvent) => {\n if (event.key !== null && event.key !== APPEARANCE_STORAGE_KEY) {\n return;\n }\n\n syncAppearanceFromStorage();\n};\n\nconst initializeAppearanceStore = () => {\n if (typeof window === 'undefined' || hasInitializedAppearanceStore) {\n return;\n }\n\n hasInitializedAppearanceStore = true;\n currentAppearance = readStoredAppearance();\n currentSnapshot = createSnapshot(currentAppearance);\n applyTheme(currentAppearance);\n\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', handleSystemThemeChange);\n window.addEventListener('storage', handleStorageChange);\n};\n\nconst subscribeToAppearance = (listener: () => void) => {\n initializeAppearanceStore();\n appearanceListeners.add(listener);\n\n return () => {\n appearanceListeners.delete(listener);\n };\n};\n\nconst getAppearanceSnapshot = () => {\n initializeAppearanceStore();\n return currentSnapshot;\n};\n\nconst getServerAppearanceSnapshot = (): AppearanceSnapshot => ({\n appearance: DEFAULT_APPEARANCE,\n resolvedAppearance: 'light',\n isDarkMode: false,\n});\n\nexport function initializeTheme() {\n initializeAppearanceStore();\n applyTheme(currentAppearance);\n}\n\nexport function useAppearance() {\n const snapshot = useSyncExternalStore(\n subscribeToAppearance,\n getAppearanceSnapshot,\n getServerAppearanceSnapshot,\n );\n\n const updateAppearance = useCallback((mode: Appearance) => {\n if (typeof window !== 'undefined') {\n localStorage.setItem(APPEARANCE_STORAGE_KEY, mode);\n }\n\n setCookie(APPEARANCE_COOKIE_KEY, mode);\n commitAppearance(mode);\n }, []);\n\n return {\n ...snapshot,\n updateAppearance,\n } as const;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-initials.d.ts","sourceRoot":"","sources":["../../src/hooks/use-initials.tsx"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,eACK,MAAM,KAAG,MAAM,CAW9C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
function useInitials() {
|
|
4
|
+
return useCallback((fullName) => {
|
|
5
|
+
const names = fullName.trim().split(' ');
|
|
6
|
+
if (names.length === 0)
|
|
7
|
+
return '';
|
|
8
|
+
if (names.length === 1)
|
|
9
|
+
return names[0].charAt(0).toUpperCase();
|
|
10
|
+
const firstInitial = names[0].charAt(0);
|
|
11
|
+
const lastInitial = names[names.length - 1].charAt(0);
|
|
12
|
+
return `${firstInitial}${lastInitial}`.toUpperCase();
|
|
13
|
+
}, []);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { useInitials };
|
|
17
|
+
//# sourceMappingURL=use-initials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-initials.js","sources":["../../src/hooks/use-initials.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nexport function useInitials() {\n return useCallback((fullName: string): string => {\n const names = fullName.trim().split(' ');\n\n if (names.length === 0) return '';\n if (names.length === 1) return names[0].charAt(0).toUpperCase();\n\n const firstInitial = names[0].charAt(0);\n const lastInitial = names[names.length - 1].charAt(0);\n\n return `${firstInitial}${lastInitial}`.toUpperCase();\n }, []);\n}\n"],"names":[],"mappings":";;SAEgB,WAAW,GAAA;AACzB,IAAA,OAAO,WAAW,CAAC,CAAC,QAAgB,KAAY;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAExC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AACjC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAE/D,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAErD,OAAO,CAAA,EAAG,YAAY,CAAA,EAAG,WAAW,EAAE,CAAC,WAAW,EAAE;IACtD,CAAC,EAAE,EAAE,CAAC;AACR;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mobile-navigation.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mobile-navigation.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,eAKlC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
function useMobileNavigation() {
|
|
4
|
+
return useCallback(() => {
|
|
5
|
+
// Remove pointer-events style from body...
|
|
6
|
+
document.body.style.removeProperty('pointer-events');
|
|
7
|
+
}, []);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { useMobileNavigation };
|
|
11
|
+
//# sourceMappingURL=use-mobile-navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mobile-navigation.js","sources":["../../src/hooks/use-mobile-navigation.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nexport function useMobileNavigation() {\n return useCallback(() => {\n // Remove pointer-events style from body...\n document.body.style.removeProperty('pointer-events');\n }, []);\n}\n"],"names":[],"mappings":";;SAEgB,mBAAmB,GAAA;IACjC,OAAO,WAAW,CAAC,MAAK;;QAEtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IACtD,CAAC,EAAE,EAAE,CAAC;AACR;;"}
|