@tailng-ui/primitives 0.12.0 → 0.14.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/package.json +12 -6
- package/src/lib/feedback/empty/tng-empty.d.ts +11 -0
- package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.js +71 -66
- package/src/lib/feedback/empty/tng-empty.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +5 -0
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +48 -54
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +3 -0
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +34 -41
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts +3 -0
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +29 -32
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.d.ts +5 -0
- package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.js +49 -49
- package/src/lib/feedback/toast/tng-toast.js.map +1 -1
- package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +3 -0
- package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -1
- package/src/lib/form/_shared/id/tng-unique-id.service.js +9 -7
- package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +3 -0
- package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js +21 -20
- package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +9 -0
- package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.js +102 -98
- package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts +3 -0
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js +39 -38
- package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +6 -0
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +52 -46
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +3 -0
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +21 -20
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +9 -0
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js +105 -101
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts +5 -0
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.js +119 -155
- package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.d.ts +3 -0
- package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.js +94 -107
- package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts +7 -0
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +104 -115
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.d.ts +3 -0
- package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.js +15 -14
- package/src/lib/form/combobox/tng-combobox.js.map +1 -1
- package/src/lib/form/input/tng-input.d.ts +9 -0
- package/src/lib/form/input/tng-input.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.js +157 -141
- package/src/lib/form/input/tng-input.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts +3 -0
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +57 -70
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts +3 -0
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +23 -26
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/listbox/listbox.directive.d.ts +3 -0
- package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/listbox.directive.js +44 -43
- package/src/lib/form/listbox/listbox.directive.js.map +1 -1
- package/src/lib/form/listbox/option.directive.d.ts +3 -0
- package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/option.directive.js +39 -38
- package/src/lib/form/listbox/option.directive.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +22 -21
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +24 -23
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +34 -33
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +6 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +55 -46
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +15 -14
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +3 -0
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +51 -50
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.d.ts +3 -0
- package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.js +40 -36
- package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +6 -0
- package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.js +48 -45
- package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.d.ts +3 -0
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.js +15 -14
- package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts +3 -0
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +90 -101
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/select/tng-select.d.ts +3 -0
- package/src/lib/form/select/tng-select.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.js +40 -36
- package/src/lib/form/select/tng-select.js.map +1 -1
- package/src/lib/form/select/tng-select.listbox.d.ts +6 -0
- package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.listbox.js +48 -45
- package/src/lib/form/select/tng-select.listbox.js.map +1 -1
- package/src/lib/form/slider/tng-slider.d.ts +3 -0
- package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.js +41 -50
- package/src/lib/form/slider/tng-slider.js.map +1 -1
- package/src/lib/form/switch/tng-switch.d.ts +3 -0
- package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.js +43 -48
- package/src/lib/form/switch/tng-switch.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.d.ts +4 -0
- package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.js +39 -41
- package/src/lib/form/textarea/tng-textarea.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.d.ts +3 -0
- package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.js +70 -75
- package/src/lib/form/toggle/tng-toggle.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts +3 -0
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js +47 -50
- package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
- package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.js +139 -155
- package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +3 -0
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +15 -14
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
- package/src/lib/layout/card/tng-card.d.ts +21 -0
- package/src/lib/layout/card/tng-card.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.js +141 -131
- package/src/lib/layout/card/tng-card.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.d.ts +7 -0
- package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.js +79 -86
- package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.d.ts +13 -0
- package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.js +211 -226
- package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.d.ts +3 -0
- package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.js +15 -14
- package/src/lib/layout/grid/tng-grid.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.d.ts +3 -0
- package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.js +29 -30
- package/src/lib/layout/separator/tng-separator.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.d.ts +3 -0
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +15 -14
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +3 -0
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +54 -11
- package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.js +18 -17
- package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.js +21 -20
- package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.js +46 -53
- package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
- package/src/lib/layout/tree/tng-tree.d.ts +3 -0
- package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree.js +38 -43
- package/src/lib/layout/tree/tng-tree.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +11 -0
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +74 -69
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts +5 -0
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.js +42 -42
- package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +3 -0
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +15 -14
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.d.ts +13 -0
- package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.js +178 -186
- package/src/lib/navigation/menu/tng-menu.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.d.ts +5 -0
- package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.js +70 -70
- package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +3 -0
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +15 -14
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -0
- package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.js +228 -258
- package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts +3 -0
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +15 -14
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.d.ts +19 -0
- package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.js +240 -255
- package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.d.ts +9 -0
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.js +148 -170
- package/src/lib/overlay/popover/tng-popover.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts +7 -0
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +121 -130
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.d.ts +7 -0
- package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.js +43 -40
- package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts +3 -0
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +25 -40
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.d.ts +11 -0
- package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.js +71 -66
- package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts +3 -0
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +43 -52
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/press/tng-press.d.ts +3 -0
- package/src/lib/utility/press/tng-press.d.ts.map +1 -1
- package/src/lib/utility/press/tng-press.js +54 -61
- package/src/lib/utility/press/tng-press.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts +7 -0
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +91 -96
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-button-toggle.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/button-toggle/tng-button-toggle.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\ntype TngButtonToggleDirection = 'ltr' | 'rtl' | 'auto';\ntype TngButtonToggleOrientation = 'horizontal' | 'vertical';\ntype TngButtonToggleActivationMode = 'auto' | 'manual';\ntype TngButtonToggleType = 'single' | 'multiple';\ntype TngButtonToggleFocusMove = 'next' | 'prev' | 'first' | 'last';\ntype TngButtonToggleActionTrigger = 'pointer' | 'keyboard' | 'programmatic';\ntype TngButtonToggleFocusTrigger = 'pointer' | 'keyboard' | 'programmatic';\n\nexport type TngButtonToggleValue = string | number;\n\nexport type TngButtonToggleChangeEvent = Readonly<{\n value: TngButtonToggleValue;\n selected: boolean;\n previousValue: TngButtonToggleValue | null;\n previousValues: readonly TngButtonToggleValue[];\n values: readonly TngButtonToggleValue[];\n trigger: TngButtonToggleActionTrigger;\n}>;\n\nexport type TngButtonToggleFocusChangeEvent = Readonly<{\n value: TngButtonToggleValue;\n previousValue: TngButtonToggleValue | null;\n trigger: TngButtonToggleFocusTrigger;\n}>;\n\nconst createToggleId = createTngIdFactory('tng-button-toggle-item');\nlet nextRegistrationOrder = 0;\n\nfunction normalizeDirectionInput(value: unknown): TngButtonToggleDirection {\n if (value === 'ltr' || value === 'rtl' || value === 'auto') {\n return value;\n }\n\n return 'auto';\n}\n\nfunction normalizeOrientationInput(value: unknown): TngButtonToggleOrientation {\n return value === 'vertical' ? 'vertical' : 'horizontal';\n}\n\nfunction normalizeActivationInput(value: unknown): TngButtonToggleActivationMode {\n return value === 'manual' ? 'manual' : 'auto';\n}\n\nfunction normalizeTypeInput(value: unknown): TngButtonToggleType {\n return value === 'multiple' ? 'multiple' : 'single';\n}\n\nfunction normalizeOptionalValueInput(value: unknown): TngButtonToggleValue | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'number' || typeof value === 'string') {\n return value;\n }\n\n return String(value);\n}\n\nfunction normalizeValueArrayInput(value: unknown): readonly TngButtonToggleValue[] {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value\n .map((item) => normalizeOptionalValueInput(item))\n .filter((item): item is TngButtonToggleValue => item !== null && item !== undefined);\n }\n\n if (value instanceof Set) {\n return Array.from(value)\n .map((item) => normalizeOptionalValueInput(item))\n .filter((item): item is TngButtonToggleValue => item !== null && item !== undefined);\n }\n\n const normalized = normalizeOptionalValueInput(value);\n if (normalized === null || normalized === undefined) {\n return [];\n }\n\n return [normalized];\n}\n\nfunction normalizeOptionalValueArrayInput(\n value: unknown,\n): readonly TngButtonToggleValue[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n return normalizeValueArrayInput(value);\n}\n\nfunction uniqueValues(values: readonly TngButtonToggleValue[]): readonly TngButtonToggleValue[] {\n const unique = new Set<TngButtonToggleValue>();\n for (const value of values) {\n unique.add(value);\n }\n\n return Array.from(unique);\n}\n\nfunction valuesEqual(a: TngButtonToggleValue | null, b: TngButtonToggleValue | null): boolean {\n return a === b;\n}\n\nfunction compareByDomPosition(\n aElement: HTMLElement,\n bElement: HTMLElement,\n aOrder: number,\n bOrder: number,\n): number {\n if (aElement === bElement) {\n return 0;\n }\n\n const relativePosition = aElement.compareDocumentPosition(bElement);\n if (relativePosition & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n\n if (relativePosition & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n\n return aOrder - bOrder;\n}\n\nfunction isFocusableInteractiveElement(element: Element): boolean {\n return (\n element.matches('a[href]') ||\n element.matches('button') ||\n element.matches('input') ||\n element.matches('select') ||\n element.matches('textarea') ||\n element.matches('[tabindex]') ||\n element.matches('[contenteditable=\"true\"]')\n );\n}\n\nfunction setsEqual(\n a: ReadonlySet<TngButtonToggleValue>,\n b: ReadonlySet<TngButtonToggleValue>,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const value of a) {\n if (!b.has(value)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function resolveTngButtonToggleAriaPressed(pressed: boolean): 'false' | 'true' {\n return pressed ? 'true' : 'false';\n}\n\nexport function resolveTngButtonToggleDataState(pressed: boolean): 'off' | 'on' {\n return pressed ? 'on' : 'off';\n}\n\n@Directive({\n selector: '[tngButtonToggleGroup]',\n exportAs: 'tngButtonToggleGroup',\n standalone: true,\n})\nexport class TngButtonToggleGroup {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly toggles = new Set<TngButtonToggle>();\n\n private initializedType: TngButtonToggleType | null = null;\n private uncontrolledSingleValue: TngButtonToggleValue | null = null;\n private uncontrolledMultipleValues = new Set<TngButtonToggleValue>();\n private focusedValue: TngButtonToggleValue | null = null;\n private hasSingleUserSelection = false;\n private hasMultipleUserSelection = false;\n\n readonly type = input<TngButtonToggleType, unknown>('single', {\n transform: normalizeTypeInput,\n });\n readonly controlledValueInput = input<TngButtonToggleValue | null | undefined, unknown>(\n undefined,\n {\n alias: 'tngButtonToggleValue',\n transform: normalizeOptionalValueInput,\n },\n );\n readonly controlledValuesInput = input<readonly TngButtonToggleValue[] | undefined, unknown>(\n undefined,\n {\n alias: 'tngButtonToggleValues',\n transform: normalizeOptionalValueArrayInput,\n },\n );\n readonly defaultValueInput = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n alias: 'tngButtonToggleDefaultValue',\n transform: normalizeOptionalValueInput,\n });\n readonly defaultValuesInput = input<readonly TngButtonToggleValue[] | undefined, unknown>(\n undefined,\n {\n alias: 'tngButtonToggleDefaultValues',\n transform: normalizeOptionalValueArrayInput,\n },\n );\n readonly value = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueInput,\n });\n readonly values = input<readonly TngButtonToggleValue[] | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueArrayInput,\n });\n readonly defaultValue = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueInput,\n });\n readonly defaultValues = input<readonly TngButtonToggleValue[], unknown>([], {\n transform: normalizeValueArrayInput,\n });\n readonly allowEmpty = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n readonly disabled = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n readonly orientation = input<TngButtonToggleOrientation, unknown>('horizontal', {\n transform: normalizeOrientationInput,\n });\n readonly loop = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n readonly activation = input<TngButtonToggleActivationMode, unknown>('auto', {\n transform: normalizeActivationInput,\n });\n readonly dir = input<TngButtonToggleDirection, unknown>('auto', {\n transform: normalizeDirectionInput,\n });\n\n readonly valueChange = output<TngButtonToggleValue | null>();\n readonly valuesChange = output<readonly TngButtonToggleValue[]>();\n readonly toggleChange = output<TngButtonToggleChangeEvent>();\n readonly focusChange = output<TngButtonToggleFocusChangeEvent>();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'button-toggle-group' as const;\n\n @HostBinding('attr.data-type')\n protected get dataType(): TngButtonToggleType {\n return this.type();\n }\n\n @HostBinding('attr.data-orientation')\n protected get dataOrientation(): TngButtonToggleOrientation {\n return this.orientation();\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): 'true' | 'false' {\n return this.disabled() ? 'true' : 'false';\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'radiogroup' | 'group' {\n return this.type() === 'single' ? 'radiogroup' : 'group';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-orientation')\n protected get ariaOrientation(): TngButtonToggleOrientation {\n return this.orientation();\n }\n\n ngDoCheck(): void {\n this.syncStateFromRegistry();\n }\n\n registerToggle(toggle: TngButtonToggle): void {\n this.toggles.add(toggle);\n }\n\n unregisterToggle(toggle: TngButtonToggle): void {\n const orderedToggles = this.getOrderedToggles();\n const removedIndex = orderedToggles.indexOf(toggle);\n const removedValue = toggle.getValue();\n\n const selectedSingleValue = this.getEffectiveSingleSelectedValue();\n const focusedValue = this.resolveCurrentTabStopValue();\n\n this.toggles.delete(toggle);\n\n if (\n this.type() === 'single' &&\n !this.isSingleControlled() &&\n selectedSingleValue !== null &&\n valuesEqual(selectedSingleValue, removedValue)\n ) {\n this.uncontrolledSingleValue = this.allowEmpty()\n ? null\n : this.resolveNeighborValueOnRemoval(orderedToggles, removedIndex);\n }\n\n if (this.type() === 'multiple' && !this.isMultipleControlled()) {\n this.uncontrolledMultipleValues.delete(removedValue);\n }\n\n if (focusedValue !== null && valuesEqual(focusedValue, removedValue)) {\n this.focusedValue = this.resolveNeighborValueOnRemoval(orderedToggles, removedIndex);\n }\n\n this.syncStateFromRegistry();\n }\n\n notifyToggleMutated(toggle: TngButtonToggle): void {\n void toggle;\n this.syncStateFromRegistry();\n }\n\n isDisabled(): boolean {\n return this.disabled();\n }\n\n getToggleRole(): 'radio' | null {\n return this.type() === 'single' ? 'radio' : null;\n }\n\n getToggleTabIndex(toggle: TngButtonToggle): string {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return '-1';\n }\n\n const tabStop = this.resolveCurrentTabStopValue();\n if (tabStop === null) {\n return '-1';\n }\n\n return valuesEqual(tabStop, toggle.getValue()) ? '0' : '-1';\n }\n\n getToggleAriaChecked(toggle: TngButtonToggle): 'true' | 'false' | null {\n if (this.type() !== 'single') {\n return null;\n }\n\n return this.isToggleSelected(toggle) ? 'true' : 'false';\n }\n\n getToggleAriaPressed(toggle: TngButtonToggle): 'true' | 'false' | null {\n if (this.type() !== 'multiple') {\n return null;\n }\n\n return resolveTngButtonToggleAriaPressed(this.isToggleSelected(toggle));\n }\n\n isToggleSelected(toggle: TngButtonToggle): boolean {\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue === null) {\n return false;\n }\n\n return valuesEqual(selectedValue, toggle.getValue());\n }\n\n const selectedValues = this.getEffectiveMultipleSelectedValues();\n return selectedValues.has(toggle.getValue());\n }\n\n isToggleFocused(toggle: TngButtonToggle): boolean {\n const tabStop = this.resolveCurrentTabStopValue();\n if (tabStop === null) {\n return false;\n }\n\n return valuesEqual(tabStop, toggle.getValue());\n }\n\n onToggleFocused(toggle: TngButtonToggle, trigger: TngButtonToggleFocusTrigger): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n this.setFocusedValue(toggle.getValue(), trigger);\n }\n\n activateToggle(toggle: TngButtonToggle, trigger: TngButtonToggleActionTrigger): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n this.setFocusedValue(toggle.getValue(), trigger === 'programmatic' ? 'programmatic' : 'pointer');\n\n if (this.type() === 'single') {\n this.requestSingleToggle(toggle.getValue(), trigger);\n return;\n }\n\n this.requestMultipleToggle(toggle.getValue(), trigger);\n }\n\n handleToggleKeydown(toggle: TngButtonToggle, event: KeyboardEvent): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n const focusMove = this.resolveFocusMove(event.key);\n if (focusMove !== null) {\n event.preventDefault();\n this.moveFocusByAction(toggle, focusMove, 'keyboard');\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== ' ' && event.key !== 'Spacebar') {\n return;\n }\n\n event.preventDefault();\n this.activateToggle(toggle, 'keyboard');\n }\n\n select(value: TngButtonToggleValue): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n if (this.type() === 'single') {\n this.requestSingleSelection(value, 'programmatic');\n return;\n }\n\n this.requestMultipleSelection(value, true, 'programmatic');\n }\n\n deselect(value: TngButtonToggleValue): void {\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (\n selectedValue === null ||\n !valuesEqual(selectedValue, value) ||\n (!this.allowEmpty() && this.findEnabledToggleByValue(value) !== null)\n ) {\n return;\n }\n\n this.applySingleSelection(null, value, false, 'programmatic');\n return;\n }\n\n this.requestMultipleSelection(value, false, 'programmatic');\n }\n\n toggle(value: TngButtonToggleValue): void {\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue !== null && valuesEqual(selectedValue, value) && this.allowEmpty()) {\n this.applySingleSelection(null, value, false, 'programmatic');\n return;\n }\n\n this.requestSingleSelection(value, 'programmatic');\n return;\n }\n\n this.requestMultipleToggle(value, 'programmatic');\n }\n\n focus(value: TngButtonToggleValue): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n this.moveFocusToToggle(targetToggle, 'programmatic');\n }\n\n next(): void {\n this.moveFocusFromCurrentToggle('next', 'programmatic');\n }\n\n prev(): void {\n this.moveFocusFromCurrentToggle('prev', 'programmatic');\n }\n\n private requestSingleSelection(\n nextValue: TngButtonToggleValue,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(nextValue);\n if (targetToggle === null) {\n return;\n }\n\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue !== null && valuesEqual(selectedValue, nextValue)) {\n return;\n }\n\n this.applySingleSelection(nextValue, nextValue, true, trigger);\n }\n\n private requestSingleToggle(\n nextValue: TngButtonToggleValue,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(nextValue);\n if (targetToggle === null) {\n return;\n }\n\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue !== null && valuesEqual(selectedValue, nextValue)) {\n if (!this.allowEmpty()) {\n return;\n }\n\n this.applySingleSelection(null, nextValue, false, trigger);\n return;\n }\n\n this.applySingleSelection(nextValue, nextValue, true, trigger);\n }\n\n private applySingleSelection(\n nextValue: TngButtonToggleValue | null,\n toggledValue: TngButtonToggleValue,\n selected: boolean,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const previousValue = this.getEffectiveSingleSelectedValue();\n if (valuesEqual(previousValue, nextValue)) {\n return;\n }\n\n if (!this.isSingleControlled()) {\n this.uncontrolledSingleValue = nextValue;\n this.hasSingleUserSelection = true;\n }\n\n this.valueChange.emit(nextValue);\n this.toggleChange.emit({\n value: toggledValue,\n selected,\n previousValue,\n previousValues: previousValue === null ? [] : [previousValue],\n values: nextValue === null ? [] : [nextValue],\n trigger,\n });\n\n this.syncStateFromRegistry();\n }\n\n private requestMultipleSelection(\n value: TngButtonToggleValue,\n shouldSelect: boolean,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n const previousSelection = this.getEffectiveMultipleSelectedValues();\n const nextSelection = new Set(previousSelection);\n\n if (shouldSelect) {\n nextSelection.add(value);\n } else {\n nextSelection.delete(value);\n }\n\n if (setsEqual(previousSelection, nextSelection)) {\n return;\n }\n\n this.applyMultipleSelection(nextSelection, value, shouldSelect, trigger);\n }\n\n private requestMultipleToggle(\n value: TngButtonToggleValue,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n const previousSelection = this.getEffectiveMultipleSelectedValues();\n const nextSelection = new Set(previousSelection);\n const selected = !nextSelection.has(value);\n\n if (selected) {\n nextSelection.add(value);\n } else {\n nextSelection.delete(value);\n }\n\n this.applyMultipleSelection(nextSelection, value, selected, trigger);\n }\n\n private applyMultipleSelection(\n nextSelection: ReadonlySet<TngButtonToggleValue>,\n toggledValue: TngButtonToggleValue,\n selected: boolean,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const previousSelection = this.getEffectiveMultipleSelectedValues();\n if (setsEqual(previousSelection, nextSelection)) {\n return;\n }\n\n if (!this.isMultipleControlled()) {\n this.uncontrolledMultipleValues = new Set(nextSelection);\n this.hasMultipleUserSelection = true;\n }\n\n const previousValues = this.getSelectedValuesInDomOrder(previousSelection);\n const values = this.getSelectedValuesInDomOrder(nextSelection);\n\n this.valuesChange.emit(values);\n this.toggleChange.emit({\n value: toggledValue,\n selected,\n previousValue: null,\n previousValues,\n values,\n trigger,\n });\n\n this.syncStateFromRegistry();\n }\n\n private resolveFocusMove(key: string): TngButtonToggleFocusMove | null {\n if (key === 'Home') {\n return 'first';\n }\n\n if (key === 'End') {\n return 'last';\n }\n\n if (this.orientation() === 'vertical') {\n if (key === 'ArrowDown') {\n return 'next';\n }\n\n if (key === 'ArrowUp') {\n return 'prev';\n }\n\n return null;\n }\n\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return null;\n }\n\n const isRtl = this.resolveDirection() === 'rtl';\n const moveToNext = key === (isRtl ? 'ArrowLeft' : 'ArrowRight');\n return moveToNext ? 'next' : 'prev';\n }\n\n private moveFocusByAction(\n sourceToggle: TngButtonToggle,\n action: TngButtonToggleFocusMove,\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n const enabledToggles = this.getEnabledToggles();\n if (enabledToggles.length === 0) {\n return;\n }\n\n const currentIndex = enabledToggles.indexOf(sourceToggle);\n if (currentIndex < 0) {\n return;\n }\n\n const nextToggle = this.resolveFocusTarget(enabledToggles, currentIndex, action);\n if (nextToggle === null) {\n return;\n }\n\n this.moveFocusToToggle(nextToggle, trigger);\n\n if (this.activation() === 'auto' && this.type() === 'single') {\n this.requestSingleSelection(nextToggle.getValue(), trigger === 'programmatic' ? 'programmatic' : 'keyboard');\n }\n }\n\n private moveFocusToToggle(\n toggle: TngButtonToggle,\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n this.setFocusedValue(toggle.getValue(), trigger);\n toggle.focusSelf();\n }\n\n private moveFocusFromCurrentToggle(\n direction: 'next' | 'prev',\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n const enabledToggles = this.getEnabledToggles();\n if (enabledToggles.length === 0) {\n return;\n }\n\n const activeElement = this.hostRef.nativeElement.ownerDocument?.activeElement ?? null;\n const activeToggle = this.findToggleContainingElement(activeElement);\n const currentToggle =\n activeToggle ?? this.findEnabledToggleByValue(this.resolveCurrentTabStopValue(), enabledToggles);\n\n if (currentToggle === null) {\n return;\n }\n\n const currentIndex = enabledToggles.indexOf(currentToggle);\n if (currentIndex < 0) {\n return;\n }\n\n const nextToggle = this.resolveFocusTarget(enabledToggles, currentIndex, direction);\n if (nextToggle === null) {\n return;\n }\n\n this.moveFocusToToggle(nextToggle, trigger);\n\n if (this.activation() === 'auto' && this.type() === 'single') {\n this.requestSingleSelection(nextToggle.getValue(), trigger === 'programmatic' ? 'programmatic' : 'keyboard');\n }\n }\n\n private resolveFocusTarget(\n enabledToggles: readonly TngButtonToggle[],\n currentIndex: number,\n action: TngButtonToggleFocusMove,\n ): TngButtonToggle | null {\n if (enabledToggles.length === 0 || currentIndex < 0) {\n return null;\n }\n\n if (action === 'first') {\n return enabledToggles[0] ?? null;\n }\n\n if (action === 'last') {\n return enabledToggles[enabledToggles.length - 1] ?? null;\n }\n\n if (action === 'next') {\n if (currentIndex + 1 < enabledToggles.length) {\n return enabledToggles[currentIndex + 1] ?? null;\n }\n\n return this.loop()\n ? (enabledToggles[0] ?? null)\n : (enabledToggles[currentIndex] ?? null);\n }\n\n if (currentIndex - 1 >= 0) {\n return enabledToggles[currentIndex - 1] ?? null;\n }\n\n return this.loop()\n ? (enabledToggles[enabledToggles.length - 1] ?? null)\n : (enabledToggles[currentIndex] ?? null);\n }\n\n private setFocusedValue(\n value: TngButtonToggleValue,\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n const previousValue = this.focusedValue;\n if (previousValue !== null && valuesEqual(previousValue, value)) {\n return;\n }\n\n this.focusedValue = value;\n this.focusChange.emit({\n value,\n previousValue,\n trigger,\n });\n }\n\n private resolveDirection(): 'ltr' | 'rtl' {\n const configuredDirection = this.dir();\n if (configuredDirection !== 'auto') {\n return configuredDirection;\n }\n\n const host = this.hostRef.nativeElement;\n const nearestDirection =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement.getAttribute('dir');\n\n return nearestDirection?.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n }\n\n private syncStateFromRegistry(): void {\n const currentType = this.type();\n const enabledToggles = this.getEnabledToggles();\n\n if (this.initializedType !== currentType) {\n this.initializedType = currentType;\n this.focusedValue = null;\n this.hasSingleUserSelection = false;\n this.hasMultipleUserSelection = false;\n\n if (currentType === 'single') {\n this.uncontrolledMultipleValues.clear();\n if (!this.isSingleControlled()) {\n this.uncontrolledSingleValue = this.resolveInitialSingleValue(enabledToggles);\n }\n } else {\n this.uncontrolledSingleValue = null;\n if (!this.isMultipleControlled()) {\n this.uncontrolledMultipleValues = new Set(\n this.resolveInitialMultipleValues(enabledToggles),\n );\n }\n }\n }\n\n if (enabledToggles.length === 0) {\n if (currentType === 'single' && !this.isSingleControlled()) {\n this.uncontrolledSingleValue = null;\n }\n\n if (currentType === 'multiple' && !this.isMultipleControlled()) {\n this.uncontrolledMultipleValues.clear();\n }\n\n this.focusedValue = null;\n return;\n }\n\n if (currentType === 'single') {\n this.syncSingleState(enabledToggles);\n } else {\n this.syncMultipleState(enabledToggles);\n }\n\n this.focusedValue = this.resolveCurrentTabStopValue(enabledToggles);\n }\n\n private syncSingleState(enabledToggles: readonly TngButtonToggle[]): void {\n if (this.isSingleControlled()) {\n return;\n }\n\n const currentValue = this.uncontrolledSingleValue;\n const hasEnabledCurrentValue =\n currentValue !== null && this.findEnabledToggleByValue(currentValue, enabledToggles) !== null;\n\n if (hasEnabledCurrentValue) {\n return;\n }\n\n this.uncontrolledSingleValue = this.allowEmpty()\n ? null\n : (enabledToggles[0]?.getValue() ?? null);\n }\n\n private syncMultipleState(enabledToggles: readonly TngButtonToggle[]): void {\n if (this.isMultipleControlled()) {\n return;\n }\n\n const enabledSet = new Set(enabledToggles.map((toggle) => toggle.getValue()));\n\n const nextValues = new Set<TngButtonToggleValue>();\n for (const value of this.uncontrolledMultipleValues) {\n if (enabledSet.has(value)) {\n nextValues.add(value);\n }\n }\n\n this.uncontrolledMultipleValues = nextValues;\n }\n\n private resolveInitialSingleValue(\n enabledToggles: readonly TngButtonToggle[],\n ): TngButtonToggleValue | null {\n if (enabledToggles.length === 0) {\n return null;\n }\n\n const defaultValue = this.getDefaultSingleValueInput();\n if (\n defaultValue !== undefined &&\n defaultValue !== null &&\n this.findEnabledToggleByValue(defaultValue, enabledToggles) !== null\n ) {\n return defaultValue;\n }\n\n if (this.allowEmpty()) {\n return null;\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n private resolveInitialMultipleValues(\n enabledToggles: readonly TngButtonToggle[],\n ): readonly TngButtonToggleValue[] {\n if (enabledToggles.length === 0) {\n return [];\n }\n\n const defaultValues = new Set(uniqueValues(this.getDefaultMultipleValuesInput()));\n if (defaultValues.size === 0) {\n return [];\n }\n\n const selectedValues: TngButtonToggleValue[] = [];\n for (const toggle of enabledToggles) {\n const value = toggle.getValue();\n if (defaultValues.has(value)) {\n selectedValues.push(value);\n }\n }\n\n return selectedValues;\n }\n\n private resolveNeighborValueOnRemoval(\n orderedToggles: readonly TngButtonToggle[],\n removedIndex: number,\n ): TngButtonToggleValue | null {\n if (removedIndex < 0) {\n return this.getEnabledToggles()[0]?.getValue() ?? null;\n }\n\n for (let index = removedIndex + 1; index < orderedToggles.length; index += 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n for (let index = removedIndex - 1; index >= 0; index -= 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n return null;\n }\n\n private resolveNeighborForUnavailableToggle(toggle: TngButtonToggle): TngButtonToggleValue | null {\n const orderedToggles = this.getOrderedToggles();\n const currentIndex = orderedToggles.indexOf(toggle);\n\n if (currentIndex < 0) {\n return this.getEnabledToggles()[0]?.getValue() ?? null;\n }\n\n for (let index = currentIndex + 1; index < orderedToggles.length; index += 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n for (let index = currentIndex - 1; index >= 0; index -= 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n return null;\n }\n\n private isSingleControlled(): boolean {\n if (this.type() !== 'single') {\n return false;\n }\n\n return this.getControlledSingleValueInput() !== undefined;\n }\n\n private isMultipleControlled(): boolean {\n if (this.type() !== 'multiple') {\n return false;\n }\n\n return this.getControlledMultipleValuesInput() !== undefined;\n }\n\n private getEffectiveSingleSelectedValue(\n enabledToggles = this.getEnabledToggles(),\n ): TngButtonToggleValue | null {\n if (this.type() !== 'single' || enabledToggles.length === 0) {\n return null;\n }\n\n let selectedValue = this.isSingleControlled()\n ? ((this.getControlledSingleValueInput() ?? null) as TngButtonToggleValue | null)\n : this.uncontrolledSingleValue;\n\n if (!this.isSingleControlled() && !this.hasSingleUserSelection) {\n const defaultValue = this.getDefaultSingleValueInput();\n if (\n defaultValue !== undefined &&\n defaultValue !== null &&\n this.findEnabledToggleByValue(defaultValue, enabledToggles) !== null\n ) {\n selectedValue = defaultValue;\n } else if (defaultValue === null) {\n selectedValue = null;\n }\n }\n\n if (\n selectedValue !== null &&\n this.findEnabledToggleByValue(selectedValue, enabledToggles) !== null\n ) {\n return selectedValue;\n }\n\n if (this.allowEmpty()) {\n return null;\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n private getEffectiveMultipleSelectedValues(\n enabledToggles = this.getEnabledToggles(),\n ): ReadonlySet<TngButtonToggleValue> {\n if (this.type() !== 'multiple' || enabledToggles.length === 0) {\n return new Set<TngButtonToggleValue>();\n }\n\n const sourceValues = this.isMultipleControlled()\n ? uniqueValues(this.getControlledMultipleValuesInput() ?? [])\n : (!this.hasMultipleUserSelection\n ? uniqueValues(this.getDefaultMultipleValuesInput())\n : Array.from(this.uncontrolledMultipleValues));\n\n const sourceSet = new Set(sourceValues);\n const selectedSet = new Set<TngButtonToggleValue>();\n\n for (const toggle of enabledToggles) {\n const value = toggle.getValue();\n if (sourceSet.has(value)) {\n selectedSet.add(value);\n }\n }\n\n return selectedSet;\n }\n\n private resolveCurrentTabStopValue(\n enabledToggles = this.getEnabledToggles(),\n ): TngButtonToggleValue | null {\n if (enabledToggles.length === 0) {\n return null;\n }\n\n if (\n this.focusedValue !== null &&\n this.findEnabledToggleByValue(this.focusedValue, enabledToggles) !== null\n ) {\n return this.focusedValue;\n }\n\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue(enabledToggles);\n if (selectedValue !== null) {\n return selectedValue;\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n const selectedValues = this.getEffectiveMultipleSelectedValues(enabledToggles);\n for (const toggle of enabledToggles) {\n const value = toggle.getValue();\n if (selectedValues.has(value)) {\n return value;\n }\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n private getSelectedValuesInDomOrder(\n selectedValues: ReadonlySet<TngButtonToggleValue>,\n orderedToggles = this.getOrderedToggles(),\n ): readonly TngButtonToggleValue[] {\n if (selectedValues.size === 0) {\n return [];\n }\n\n const values: TngButtonToggleValue[] = [];\n for (const toggle of orderedToggles) {\n const value = toggle.getValue();\n if (selectedValues.has(value) && !toggle.isSelfDisabled()) {\n values.push(value);\n }\n }\n\n return values;\n }\n\n private getOrderedToggles(): TngButtonToggle[] {\n const toggles = Array.from(this.toggles);\n toggles.sort((a, b) =>\n compareByDomPosition(\n a.getHostElement(),\n b.getHostElement(),\n a.getRegistrationOrder(),\n b.getRegistrationOrder(),\n ),\n );\n\n return toggles;\n }\n\n private getEnabledToggles(): TngButtonToggle[] {\n return this.getOrderedToggles().filter((toggle) => !toggle.isSelfDisabled());\n }\n\n private findEnabledToggleByValue(\n value: TngButtonToggleValue | null,\n enabledToggles: readonly TngButtonToggle[] = this.getEnabledToggles(),\n ): TngButtonToggle | null {\n if (value === null) {\n return null;\n }\n\n return enabledToggles.find((toggle) => valuesEqual(toggle.getValue(), value)) ?? null;\n }\n\n private findToggleContainingElement(element: Element | null): TngButtonToggle | null {\n if (element === null) {\n return null;\n }\n\n const toggles = this.getOrderedToggles();\n return (\n toggles.find((toggle) => {\n const host = toggle.getHostElement();\n return host === element || host.contains(element);\n }) ?? null\n );\n }\n\n private getControlledSingleValueInput(): TngButtonToggleValue | null | undefined {\n const explicit = this.controlledValueInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.value();\n }\n\n private getControlledMultipleValuesInput(): readonly TngButtonToggleValue[] | undefined {\n const explicit = this.controlledValuesInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.values();\n }\n\n private getDefaultSingleValueInput(): TngButtonToggleValue | null | undefined {\n const explicit = this.defaultValueInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.defaultValue();\n }\n\n private getDefaultMultipleValuesInput(): readonly TngButtonToggleValue[] {\n const explicit = this.defaultValuesInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.defaultValues();\n }\n}\n\n@Directive({\n selector: 'button[tngButtonToggle]',\n exportAs: 'tngButtonToggle',\n standalone: true,\n})\nexport class TngButtonToggle {\n private readonly hostRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n private readonly group = inject(TngButtonToggleGroup, { optional: true });\n private resolvedId = createToggleId();\n private readonly registrationOrder = nextRegistrationOrder++;\n private lastKnownValue: TngButtonToggleValue | null = null;\n private lastKnownDisabled = false;\n\n readonly toggleValueInput = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n alias: 'tngButtonToggleValue',\n transform: normalizeOptionalValueInput,\n });\n readonly valueInput = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n alias: 'value',\n transform: normalizeOptionalValueInput,\n });\n readonly disabledInput = input<boolean, unknown>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly pressedInput = input<boolean, unknown>(false, {\n alias: 'pressed',\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'button-toggle' as const;\n\n @HostBinding('attr.id')\n protected get id(): string {\n return this.resolvedId;\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'radio' | null {\n return this.group?.getToggleRole() ?? null;\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): string | null {\n if (this.group === null) {\n return null;\n }\n\n return this.group.getToggleTabIndex(this);\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'true' | 'false' | null {\n if (this.group === null) {\n return null;\n }\n\n return this.group.getToggleAriaChecked(this);\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'true' | 'false' | null {\n if (this.group !== null) {\n return this.group.getToggleAriaPressed(this);\n }\n\n return resolveTngButtonToggleAriaPressed(this.pressedInput());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.isDisabledInContext() ? 'true' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): 'true' | 'false' {\n return this.isDisabledInContext() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): 'true' | 'false' {\n if (this.group === null) {\n return 'false';\n }\n\n return this.group.isToggleFocused(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-selected')\n protected get dataSelectedAttr(): 'true' | 'false' {\n if (this.group === null) {\n return this.pressedInput() ? 'true' : 'false';\n }\n\n return this.group.isToggleSelected(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'on' | 'off' {\n return resolveTngButtonToggleDataState(this.dataSelectedAttr === 'true');\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.isDisabledInContext() ? '' : null;\n }\n\n constructor() {\n this.group?.registerToggle(this);\n }\n\n ngOnInit(): void {\n this.syncResolvedIdFromHost();\n this.lastKnownValue = this.getValue();\n this.lastKnownDisabled = this.isDisabledInContext();\n this.group?.notifyToggleMutated(this);\n }\n\n ngDoCheck(): void {\n this.syncResolvedIdFromHost();\n this.lastKnownValue = this.getValue();\n this.lastKnownDisabled = this.isDisabledInContext();\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterToggle(this);\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (this.isDisabledInContext()) {\n event.preventDefault();\n return;\n }\n\n if (this.group === null) {\n return;\n }\n\n const target = event.target;\n if (target instanceof Element && target !== this.hostRef.nativeElement) {\n if (isFocusableInteractiveElement(target) && this.hostRef.nativeElement.contains(target)) {\n return;\n }\n }\n\n this.focusSelf();\n this.group.activateToggle(this, 'pointer');\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n if (this.group === null || this.isDisabledInContext()) {\n return;\n }\n\n this.group.onToggleFocused(this, 'pointer');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n this.group?.handleToggleKeydown(this, event);\n }\n\n getRegistrationOrder(): number {\n return this.registrationOrder;\n }\n\n getHostElement(): HTMLButtonElement {\n return this.hostRef.nativeElement;\n }\n\n getValue(): TngButtonToggleValue {\n const explicitValue = this.toggleValueInput() ?? this.valueInput();\n if (explicitValue !== undefined && explicitValue !== null) {\n return explicitValue;\n }\n\n const hostPropertyValue = this.hostRef.nativeElement.value;\n if (typeof hostPropertyValue === 'string' && hostPropertyValue.length > 0) {\n return hostPropertyValue;\n }\n\n const hostValue = this.hostRef.nativeElement.getAttribute('value');\n if (hostValue !== null && hostValue.length > 0) {\n return hostValue;\n }\n\n return this.resolvedId;\n }\n\n isDisabledInContext(): boolean {\n if (this.group?.isDisabled()) {\n return true;\n }\n\n return this.disabledInput();\n }\n\n isSelfDisabled(): boolean {\n return this.disabledInput();\n }\n\n focusSelf(): void {\n this.hostRef.nativeElement.focus();\n }\n\n private syncResolvedIdFromHost(): boolean {\n const hostId = this.hostRef.nativeElement.getAttribute('id');\n if (hostId === null || hostId.length === 0 || hostId === this.resolvedId) {\n return false;\n }\n\n this.resolvedId = hostId;\n return true;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-button-toggle.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/button-toggle/tng-button-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;;AA2BpD,MAAM,cAAc,GAAG,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;AACpE,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAE9B,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1D,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;aACrB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;aAChD,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,UAAU,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,gCAAgC,CACvC,KAAc;IAEd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,MAAuC;IAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,CAA8B,EAAE,CAA8B;IACjF,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAqB,EACrB,QAAqB,EACrB,MAAc,EACd,MAAc;IAEd,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACxD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACxD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAgB;IACrD,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,CAAoC,EACpC,CAAoC;IAEpC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAgB;IAChE,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAAgB;IAC9D,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,CAAC;AAMD,MAAM,OAAO,oBAAoB;IACd,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE9C,eAAe,GAA+B,IAAI,CAAC;IACnD,uBAAuB,GAAgC,IAAI,CAAC;IAC5D,0BAA0B,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7D,YAAY,GAAgC,IAAI,CAAC;IACjD,sBAAsB,GAAG,KAAK,CAAC;IAC/B,wBAAwB,GAAG,KAAK,CAAC;IAEhC,IAAI,GAAG,KAAK,CAA+B,QAAQ,iDAC1D,SAAS,EAAE,kBAAkB,GAC7B,CAAC;IACM,oBAAoB,GAAG,KAAK,CACnC,SAAS,iEAEP,KAAK,EAAE,sBAAsB;QAC7B,SAAS,EAAE,2BAA2B,GAEzC,CAAC;IACO,qBAAqB,GAAG,KAAK,CACpC,SAAS,kEAEP,KAAK,EAAE,uBAAuB;QAC9B,SAAS,EAAE,gCAAgC,GAE9C,CAAC;IACO,iBAAiB,GAAG,KAAK,CAAmD,SAAS,8DAC5F,KAAK,EAAE,6BAA6B;QACpC,SAAS,EAAE,2BAA2B,GACtC,CAAC;IACM,kBAAkB,GAAG,KAAK,CACjC,SAAS,+DAEP,KAAK,EAAE,8BAA8B;QACrC,SAAS,EAAE,gCAAgC,GAE9C,CAAC;IACO,KAAK,GAAG,KAAK,CAAmD,SAAS,kDAChF,SAAS,EAAE,2BAA2B,GACtC,CAAC;IACM,MAAM,GAAG,KAAK,CAAuD,SAAS,mDACrF,SAAS,EAAE,gCAAgC,GAC3C,CAAC;IACM,YAAY,GAAG,KAAK,CAAmD,SAAS,yDACvF,SAAS,EAAE,2BAA2B,GACtC,CAAC;IACM,aAAa,GAAG,KAAK,CAA2C,EAAE,0DACzE,SAAS,EAAE,wBAAwB,GACnC,CAAC;IACM,UAAU,GAAG,KAAK,CAAmB,KAAK,uDACjD,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACM,QAAQ,GAAG,KAAK,CAAmB,KAAK,qDAC/C,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACM,WAAW,GAAG,KAAK,CAAsC,YAAY,wDAC5E,SAAS,EAAE,yBAAyB,GACpC,CAAC;IACM,IAAI,GAAG,KAAK,CAAmB,IAAI,iDAC1C,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACM,UAAU,GAAG,KAAK,CAAyC,MAAM,uDACxE,SAAS,EAAE,wBAAwB,GACnC,CAAC;IACM,GAAG,GAAG,KAAK,CAAoC,MAAM,gDAC5D,SAAS,EAAE,uBAAuB,GAClC,CAAC;IAEM,WAAW,GAAG,MAAM,EAA+B,CAAC;IACpD,YAAY,GAAG,MAAM,EAAmC,CAAC;IACzD,YAAY,GAAG,MAAM,EAA8B,CAAC;IACpD,WAAW,GAAG,MAAM,EAAmC,CAAC;IAG9C,QAAQ,GAAG,qBAA8B,CAAC;IAE7D,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IACc,eAAe;QAC3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3D,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,IACc,eAAe;QAC3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,MAAuB;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,gBAAgB,CAAC,MAAuB;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAEvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5B,IACE,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;YACxB,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,mBAAmB,KAAK,IAAI;YAC5B,WAAW,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAC9C,CAAC;YACD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,UAAU,EAAE;gBAC9C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,YAAY,KAAK,IAAI,IAAI,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,mBAAmB,CAAC,MAAuB;QACzC,KAAK,MAAM,CAAC;QACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,iBAAiB,CAAC,MAAuB;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAED,oBAAoB,CAAC,MAAuB;QAC1C,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED,oBAAoB,CAAC,MAAuB;QAC1C,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,iCAAiC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB,CAAC,MAAuB;QACtC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAC7D,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACjE,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe,CAAC,MAAuB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,eAAe,CAAC,MAAuB,EAAE,OAAoC;QAC3E,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,MAAuB,EAAE,OAAqC;QAC3E,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEjG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,mBAAmB,CAAC,MAAuB,EAAE,KAAoB;QAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,KAA2B;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAC7D,IACE,aAAa,KAAK,IAAI;gBACtB,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EACrE,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,KAA2B;QAChC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAC7D,IAAI,aAAa,KAAK,IAAI,IAAI,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;gBACrF,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,KAA2B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,IAAI;QACF,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI;QACF,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAEO,sBAAsB,CAC5B,SAA+B,EAC/B,OAAqC;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAC7D,IAAI,aAAa,KAAK,IAAI,IAAI,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAEO,mBAAmB,CACzB,SAA+B,EAC/B,OAAqC;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAC7D,IAAI,aAAa,KAAK,IAAI,IAAI,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAEO,oBAAoB,CAC1B,SAAsC,EACtC,YAAkC,EAClC,QAAiB,EACjB,OAAqC;QAErC,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAC7D,IAAI,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;YACzC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,YAAY;YACnB,QAAQ;YACR,aAAa;YACb,cAAc,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC7D,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7C,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,wBAAwB,CAC9B,KAA2B,EAC3B,YAAqB,EACrB,OAAqC;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAEjD,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAEO,qBAAqB,CAC3B,KAA2B,EAC3B,OAAqC;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,QAAQ,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEO,sBAAsB,CAC5B,aAAgD,EAChD,YAAkC,EAClC,QAAiB,EACjB,OAAqC;QAErC,MAAM,iBAAiB,GAAG,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACpE,IAAI,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,0BAA0B,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YACzD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACvC,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;QAE/D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,YAAY;YACnB,QAAQ;YACR,aAAa,EAAE,IAAI;YACnB,cAAc;YACd,MAAM;YACN,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAClC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC;YACtC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAChE,OAAO,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IAEO,iBAAiB,CACvB,YAA6B,EAC7B,MAAgC,EAChC,OAAoC;QAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACjF,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAEO,iBAAiB,CACvB,MAAuB,EACvB,OAAoC;QAEpC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAEO,0BAA0B,CAChC,SAA0B,EAC1B,OAAoC;QAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,aAAa,GACjB,YAAY,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,cAAc,CAAC,CAAC;QAEnG,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACpF,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAEO,kBAAkB,CACxB,cAA0C,EAC1C,YAAoB,EACpB,MAAgC;QAEhC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACnC,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAC3D,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,IAAI,YAAY,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC7C,OAAO,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;YAClD,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,EAAE;gBAChB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC7B,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,EAAE;YAChB,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;YACrD,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,eAAe,CACrB,KAA2B,EAC3B,OAAoC;QAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,IAAI,aAAa,KAAK,IAAI,IAAI,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,KAAK;YACL,aAAa;YACb,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,mBAAmB,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAc,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1D,OAAO,gBAAgB,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IAEO,qBAAqB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEhD,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;YAEtC,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAC/B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,0BAA0B,GAAG,IAAI,GAAG,CACvC,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAClD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,WAAW,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC3D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACtC,CAAC;YAED,IAAI,WAAW,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBAC/D,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;IAEO,eAAe,CAAC,cAA0C;QAChE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAClD,MAAM,sBAAsB,GAC1B,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,CAAC;QAEhG,IAAI,sBAAsB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,UAAU,EAAE;YAC9C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,iBAAiB,CAAC,cAA0C;QAClE,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE9E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACpD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,0BAA0B,GAAG,UAAU,CAAC;IAC/C,CAAC;IAEO,yBAAyB,CAC/B,cAA0C;QAE1C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACvD,IACE,YAAY,KAAK,SAAS;YAC1B,YAAY,KAAK,IAAI;YACrB,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,EACpE,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;IAC/C,CAAC;IAEO,4BAA4B,CAClC,cAA0C;QAE1C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAClF,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,cAAc,GAA2B,EAAE,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,6BAA6B,CACnC,cAA0C,EAC1C,YAAoB;QAEpB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;QACzD,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7E,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3D,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3D,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mCAAmC,CAAC,MAAuB;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;QACzD,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7E,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3D,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3D,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,6BAA6B,EAAE,KAAK,SAAS,CAAC;IAC5D,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,gCAAgC,EAAE,KAAK,SAAS,CAAC;IAC/D,CAAC;IAEO,+BAA+B,CACrC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE;YAC3C,CAAC,CAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,IAAI,CAAiC;YACjF,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACvD,IACE,YAAY,KAAK,SAAS;gBAC1B,YAAY,KAAK,IAAI;gBACrB,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,EACpE,CAAC;gBACD,aAAa,GAAG,YAAY,CAAC;YAC/B,CAAC;iBAAM,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBACjC,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IACE,aAAa,KAAK,IAAI;YACtB,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,cAAc,CAAC,KAAK,IAAI,EACrE,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;IAC/C,CAAC;IAEO,kCAAkC,CACxC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,GAAG,EAAwB,CAAC;QACzC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAC9C,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,EAAE,CAAC;YAC7D,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB;gBAC/B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACpD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAEnD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEpD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,0BAA0B,CAChC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAEzC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,IAAI,CAAC,YAAY,KAAK,IAAI;YAC1B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,EACzE,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;YAC3E,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,aAAa,CAAC;YACvB,CAAC;YAED,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;QAC/C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,kCAAkC,CAAC,cAAc,CAAC,CAAC;QAC/E,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;IAC/C,CAAC;IAEO,2BAA2B,CACjC,cAAiD,EACjD,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAEzC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpB,oBAAoB,CAClB,CAAC,CAAC,cAAc,EAAE,EAClB,CAAC,CAAC,cAAc,EAAE,EAClB,CAAC,CAAC,oBAAoB,EAAE,EACxB,CAAC,CAAC,oBAAoB,EAAE,CACzB,CACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC;IAEO,wBAAwB,CAC9B,KAAkC,EAClC,iBAA6C,IAAI,CAAC,iBAAiB,EAAE;QAErE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;IACxF,CAAC;IAEO,2BAA2B,CAAC,OAAuB;QACzD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YACrC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,IAAI,IAAI,CACX,CAAC;IACJ,CAAC;IAEO,6BAA6B;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEO,gCAAgC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAEO,0BAA0B;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAEO,6BAA6B;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;uGAngCU,oBAAoB;2FAApB,oBAAoB;;2FAApB,oBAAoB;kBAJhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,wBAAwB;oBAClC,QAAQ,EAAE,sBAAsB;iBACjC;;sBA4EE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,uBAAuB;;sBAKnC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,uBAAuB;;AAm6BtC,MAAM,OAAO,eAAe;IACT,OAAO,GAAG,MAAM,CAAgC,UAAU,CAAC,CAAC;IAC5D,KAAK,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,UAAU,GAAG,cAAc,EAAE,CAAC;IACrB,iBAAiB,GAAG,qBAAqB,EAAE,CAAC;IACrD,cAAc,GAAgC,IAAI,CAAC;IACnD,iBAAiB,GAAG,KAAK,CAAC;IAEzB,gBAAgB,GAAG,KAAK,CAAmD,SAAS,6DAC3F,KAAK,EAAE,sBAAsB;QAC7B,SAAS,EAAE,2BAA2B,GACtC,CAAC;IACM,UAAU,GAAG,KAAK,CAAmD,SAAS,uDACrF,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,2BAA2B,GACtC,CAAC;IACM,aAAa,GAAG,KAAK,CAAmB,KAAK,0DACpD,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACM,YAAY,GAAG,KAAK,CAAmB,KAAK,yDACnD,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IAGgB,QAAQ,GAAG,eAAwB,CAAC;IAEvD,IACc,EAAE;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAEhD,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED,IACc,YAAY;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,IACc,eAAe;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IACc,eAAe;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,iCAAiC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACvD,CAAC;IAED,IACc,eAAe;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,CAAC;IAED,IACc,gBAAgB;QAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,CAAC;IAED,IACc,aAAa;QACzB,OAAO,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,KAAK,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED;QACE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACtD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAGS,OAAO,CAAC,KAAiB;QACjC,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,YAAY,OAAO,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACvE,IAAI,6BAA6B,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzF,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAGS,OAAO;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAGS,SAAS,CAAC,KAAoB;QACtC,IAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,QAAQ;QACN,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;QAC3D,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAEO,sBAAsB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;uGAtNU,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAJ3B,SAAS;mBAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,QAAQ,EAAE,iBAAiB;iBAC5B;;sBA0BE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,SAAS;;sBAKrB,WAAW;uBAAC,WAAW;;sBAGvB,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,eAAe;;sBAS3B,WAAW;uBAAC,mBAAmB;;sBAS/B,WAAW;uBAAC,mBAAmB;;sBAS/B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,mBAAmB;;sBAS/B,WAAW;uBAAC,oBAAoB;;sBAShC,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,eAAe;;sBA0B3B,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAsBhC,YAAY;uBAAC,OAAO;;sBASpB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n booleanAttribute,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\ntype TngButtonToggleDirection = 'ltr' | 'rtl' | 'auto';\ntype TngButtonToggleOrientation = 'horizontal' | 'vertical';\ntype TngButtonToggleActivationMode = 'auto' | 'manual';\ntype TngButtonToggleType = 'single' | 'multiple';\ntype TngButtonToggleFocusMove = 'next' | 'prev' | 'first' | 'last';\ntype TngButtonToggleActionTrigger = 'pointer' | 'keyboard' | 'programmatic';\ntype TngButtonToggleFocusTrigger = 'pointer' | 'keyboard' | 'programmatic';\n\nexport type TngButtonToggleValue = string | number;\n\nexport type TngButtonToggleChangeEvent = Readonly<{\n value: TngButtonToggleValue;\n selected: boolean;\n previousValue: TngButtonToggleValue | null;\n previousValues: readonly TngButtonToggleValue[];\n values: readonly TngButtonToggleValue[];\n trigger: TngButtonToggleActionTrigger;\n}>;\n\nexport type TngButtonToggleFocusChangeEvent = Readonly<{\n value: TngButtonToggleValue;\n previousValue: TngButtonToggleValue | null;\n trigger: TngButtonToggleFocusTrigger;\n}>;\n\nconst createToggleId = createTngIdFactory('tng-button-toggle-item');\nlet nextRegistrationOrder = 0;\n\nfunction normalizeDirectionInput(value: unknown): TngButtonToggleDirection {\n if (value === 'ltr' || value === 'rtl' || value === 'auto') {\n return value;\n }\n\n return 'auto';\n}\n\nfunction normalizeOrientationInput(value: unknown): TngButtonToggleOrientation {\n return value === 'vertical' ? 'vertical' : 'horizontal';\n}\n\nfunction normalizeActivationInput(value: unknown): TngButtonToggleActivationMode {\n return value === 'manual' ? 'manual' : 'auto';\n}\n\nfunction normalizeTypeInput(value: unknown): TngButtonToggleType {\n return value === 'multiple' ? 'multiple' : 'single';\n}\n\nfunction normalizeOptionalValueInput(value: unknown): TngButtonToggleValue | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'number' || typeof value === 'string') {\n return value;\n }\n\n return String(value);\n}\n\nfunction normalizeValueArrayInput(value: unknown): readonly TngButtonToggleValue[] {\n if (value === null || value === undefined) {\n return [];\n }\n\n if (Array.isArray(value)) {\n return value\n .map((item) => normalizeOptionalValueInput(item))\n .filter((item): item is TngButtonToggleValue => item !== null && item !== undefined);\n }\n\n if (value instanceof Set) {\n return Array.from(value)\n .map((item) => normalizeOptionalValueInput(item))\n .filter((item): item is TngButtonToggleValue => item !== null && item !== undefined);\n }\n\n const normalized = normalizeOptionalValueInput(value);\n if (normalized === null || normalized === undefined) {\n return [];\n }\n\n return [normalized];\n}\n\nfunction normalizeOptionalValueArrayInput(\n value: unknown,\n): readonly TngButtonToggleValue[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n return normalizeValueArrayInput(value);\n}\n\nfunction uniqueValues(values: readonly TngButtonToggleValue[]): readonly TngButtonToggleValue[] {\n const unique = new Set<TngButtonToggleValue>();\n for (const value of values) {\n unique.add(value);\n }\n\n return Array.from(unique);\n}\n\nfunction valuesEqual(a: TngButtonToggleValue | null, b: TngButtonToggleValue | null): boolean {\n return a === b;\n}\n\nfunction compareByDomPosition(\n aElement: HTMLElement,\n bElement: HTMLElement,\n aOrder: number,\n bOrder: number,\n): number {\n if (aElement === bElement) {\n return 0;\n }\n\n const relativePosition = aElement.compareDocumentPosition(bElement);\n if (relativePosition & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n\n if (relativePosition & Node.DOCUMENT_POSITION_PRECEDING) {\n return 1;\n }\n\n return aOrder - bOrder;\n}\n\nfunction isFocusableInteractiveElement(element: Element): boolean {\n return (\n element.matches('a[href]') ||\n element.matches('button') ||\n element.matches('input') ||\n element.matches('select') ||\n element.matches('textarea') ||\n element.matches('[tabindex]') ||\n element.matches('[contenteditable=\"true\"]')\n );\n}\n\nfunction setsEqual(\n a: ReadonlySet<TngButtonToggleValue>,\n b: ReadonlySet<TngButtonToggleValue>,\n): boolean {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const value of a) {\n if (!b.has(value)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function resolveTngButtonToggleAriaPressed(pressed: boolean): 'false' | 'true' {\n return pressed ? 'true' : 'false';\n}\n\nexport function resolveTngButtonToggleDataState(pressed: boolean): 'off' | 'on' {\n return pressed ? 'on' : 'off';\n}\n\n@Directive({\n selector: '[tngButtonToggleGroup]',\n exportAs: 'tngButtonToggleGroup',\n})\nexport class TngButtonToggleGroup {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly toggles = new Set<TngButtonToggle>();\n\n private initializedType: TngButtonToggleType | null = null;\n private uncontrolledSingleValue: TngButtonToggleValue | null = null;\n private uncontrolledMultipleValues = new Set<TngButtonToggleValue>();\n private focusedValue: TngButtonToggleValue | null = null;\n private hasSingleUserSelection = false;\n private hasMultipleUserSelection = false;\n\n readonly type = input<TngButtonToggleType, unknown>('single', {\n transform: normalizeTypeInput,\n });\n readonly controlledValueInput = input<TngButtonToggleValue | null | undefined, unknown>(\n undefined,\n {\n alias: 'tngButtonToggleValue',\n transform: normalizeOptionalValueInput,\n },\n );\n readonly controlledValuesInput = input<readonly TngButtonToggleValue[] | undefined, unknown>(\n undefined,\n {\n alias: 'tngButtonToggleValues',\n transform: normalizeOptionalValueArrayInput,\n },\n );\n readonly defaultValueInput = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n alias: 'tngButtonToggleDefaultValue',\n transform: normalizeOptionalValueInput,\n });\n readonly defaultValuesInput = input<readonly TngButtonToggleValue[] | undefined, unknown>(\n undefined,\n {\n alias: 'tngButtonToggleDefaultValues',\n transform: normalizeOptionalValueArrayInput,\n },\n );\n readonly value = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueInput,\n });\n readonly values = input<readonly TngButtonToggleValue[] | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueArrayInput,\n });\n readonly defaultValue = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n transform: normalizeOptionalValueInput,\n });\n readonly defaultValues = input<readonly TngButtonToggleValue[], unknown>([], {\n transform: normalizeValueArrayInput,\n });\n readonly allowEmpty = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n readonly disabled = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n readonly orientation = input<TngButtonToggleOrientation, unknown>('horizontal', {\n transform: normalizeOrientationInput,\n });\n readonly loop = input<boolean, unknown>(true, {\n transform: booleanAttribute,\n });\n readonly activation = input<TngButtonToggleActivationMode, unknown>('auto', {\n transform: normalizeActivationInput,\n });\n readonly dir = input<TngButtonToggleDirection, unknown>('auto', {\n transform: normalizeDirectionInput,\n });\n\n readonly valueChange = output<TngButtonToggleValue | null>();\n readonly valuesChange = output<readonly TngButtonToggleValue[]>();\n readonly toggleChange = output<TngButtonToggleChangeEvent>();\n readonly focusChange = output<TngButtonToggleFocusChangeEvent>();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'button-toggle-group' as const;\n\n @HostBinding('attr.data-type')\n protected get dataType(): TngButtonToggleType {\n return this.type();\n }\n\n @HostBinding('attr.data-orientation')\n protected get dataOrientation(): TngButtonToggleOrientation {\n return this.orientation();\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): 'true' | 'false' {\n return this.disabled() ? 'true' : 'false';\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'radiogroup' | 'group' {\n return this.type() === 'single' ? 'radiogroup' : 'group';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-orientation')\n protected get ariaOrientation(): TngButtonToggleOrientation {\n return this.orientation();\n }\n\n ngDoCheck(): void {\n this.syncStateFromRegistry();\n }\n\n registerToggle(toggle: TngButtonToggle): void {\n this.toggles.add(toggle);\n }\n\n unregisterToggle(toggle: TngButtonToggle): void {\n const orderedToggles = this.getOrderedToggles();\n const removedIndex = orderedToggles.indexOf(toggle);\n const removedValue = toggle.getValue();\n\n const selectedSingleValue = this.getEffectiveSingleSelectedValue();\n const focusedValue = this.resolveCurrentTabStopValue();\n\n this.toggles.delete(toggle);\n\n if (\n this.type() === 'single' &&\n !this.isSingleControlled() &&\n selectedSingleValue !== null &&\n valuesEqual(selectedSingleValue, removedValue)\n ) {\n this.uncontrolledSingleValue = this.allowEmpty()\n ? null\n : this.resolveNeighborValueOnRemoval(orderedToggles, removedIndex);\n }\n\n if (this.type() === 'multiple' && !this.isMultipleControlled()) {\n this.uncontrolledMultipleValues.delete(removedValue);\n }\n\n if (focusedValue !== null && valuesEqual(focusedValue, removedValue)) {\n this.focusedValue = this.resolveNeighborValueOnRemoval(orderedToggles, removedIndex);\n }\n\n this.syncStateFromRegistry();\n }\n\n notifyToggleMutated(toggle: TngButtonToggle): void {\n void toggle;\n this.syncStateFromRegistry();\n }\n\n isDisabled(): boolean {\n return this.disabled();\n }\n\n getToggleRole(): 'radio' | null {\n return this.type() === 'single' ? 'radio' : null;\n }\n\n getToggleTabIndex(toggle: TngButtonToggle): string {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return '-1';\n }\n\n const tabStop = this.resolveCurrentTabStopValue();\n if (tabStop === null) {\n return '-1';\n }\n\n return valuesEqual(tabStop, toggle.getValue()) ? '0' : '-1';\n }\n\n getToggleAriaChecked(toggle: TngButtonToggle): 'true' | 'false' | null {\n if (this.type() !== 'single') {\n return null;\n }\n\n return this.isToggleSelected(toggle) ? 'true' : 'false';\n }\n\n getToggleAriaPressed(toggle: TngButtonToggle): 'true' | 'false' | null {\n if (this.type() !== 'multiple') {\n return null;\n }\n\n return resolveTngButtonToggleAriaPressed(this.isToggleSelected(toggle));\n }\n\n isToggleSelected(toggle: TngButtonToggle): boolean {\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue === null) {\n return false;\n }\n\n return valuesEqual(selectedValue, toggle.getValue());\n }\n\n const selectedValues = this.getEffectiveMultipleSelectedValues();\n return selectedValues.has(toggle.getValue());\n }\n\n isToggleFocused(toggle: TngButtonToggle): boolean {\n const tabStop = this.resolveCurrentTabStopValue();\n if (tabStop === null) {\n return false;\n }\n\n return valuesEqual(tabStop, toggle.getValue());\n }\n\n onToggleFocused(toggle: TngButtonToggle, trigger: TngButtonToggleFocusTrigger): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n this.setFocusedValue(toggle.getValue(), trigger);\n }\n\n activateToggle(toggle: TngButtonToggle, trigger: TngButtonToggleActionTrigger): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n this.setFocusedValue(toggle.getValue(), trigger === 'programmatic' ? 'programmatic' : 'pointer');\n\n if (this.type() === 'single') {\n this.requestSingleToggle(toggle.getValue(), trigger);\n return;\n }\n\n this.requestMultipleToggle(toggle.getValue(), trigger);\n }\n\n handleToggleKeydown(toggle: TngButtonToggle, event: KeyboardEvent): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n const focusMove = this.resolveFocusMove(event.key);\n if (focusMove !== null) {\n event.preventDefault();\n this.moveFocusByAction(toggle, focusMove, 'keyboard');\n return;\n }\n\n if (event.key !== 'Enter' && event.key !== ' ' && event.key !== 'Spacebar') {\n return;\n }\n\n event.preventDefault();\n this.activateToggle(toggle, 'keyboard');\n }\n\n select(value: TngButtonToggleValue): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n if (this.type() === 'single') {\n this.requestSingleSelection(value, 'programmatic');\n return;\n }\n\n this.requestMultipleSelection(value, true, 'programmatic');\n }\n\n deselect(value: TngButtonToggleValue): void {\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (\n selectedValue === null ||\n !valuesEqual(selectedValue, value) ||\n (!this.allowEmpty() && this.findEnabledToggleByValue(value) !== null)\n ) {\n return;\n }\n\n this.applySingleSelection(null, value, false, 'programmatic');\n return;\n }\n\n this.requestMultipleSelection(value, false, 'programmatic');\n }\n\n toggle(value: TngButtonToggleValue): void {\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue !== null && valuesEqual(selectedValue, value) && this.allowEmpty()) {\n this.applySingleSelection(null, value, false, 'programmatic');\n return;\n }\n\n this.requestSingleSelection(value, 'programmatic');\n return;\n }\n\n this.requestMultipleToggle(value, 'programmatic');\n }\n\n focus(value: TngButtonToggleValue): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n this.moveFocusToToggle(targetToggle, 'programmatic');\n }\n\n next(): void {\n this.moveFocusFromCurrentToggle('next', 'programmatic');\n }\n\n prev(): void {\n this.moveFocusFromCurrentToggle('prev', 'programmatic');\n }\n\n private requestSingleSelection(\n nextValue: TngButtonToggleValue,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(nextValue);\n if (targetToggle === null) {\n return;\n }\n\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue !== null && valuesEqual(selectedValue, nextValue)) {\n return;\n }\n\n this.applySingleSelection(nextValue, nextValue, true, trigger);\n }\n\n private requestSingleToggle(\n nextValue: TngButtonToggleValue,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(nextValue);\n if (targetToggle === null) {\n return;\n }\n\n const selectedValue = this.getEffectiveSingleSelectedValue();\n if (selectedValue !== null && valuesEqual(selectedValue, nextValue)) {\n if (!this.allowEmpty()) {\n return;\n }\n\n this.applySingleSelection(null, nextValue, false, trigger);\n return;\n }\n\n this.applySingleSelection(nextValue, nextValue, true, trigger);\n }\n\n private applySingleSelection(\n nextValue: TngButtonToggleValue | null,\n toggledValue: TngButtonToggleValue,\n selected: boolean,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const previousValue = this.getEffectiveSingleSelectedValue();\n if (valuesEqual(previousValue, nextValue)) {\n return;\n }\n\n if (!this.isSingleControlled()) {\n this.uncontrolledSingleValue = nextValue;\n this.hasSingleUserSelection = true;\n }\n\n this.valueChange.emit(nextValue);\n this.toggleChange.emit({\n value: toggledValue,\n selected,\n previousValue,\n previousValues: previousValue === null ? [] : [previousValue],\n values: nextValue === null ? [] : [nextValue],\n trigger,\n });\n\n this.syncStateFromRegistry();\n }\n\n private requestMultipleSelection(\n value: TngButtonToggleValue,\n shouldSelect: boolean,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n const previousSelection = this.getEffectiveMultipleSelectedValues();\n const nextSelection = new Set(previousSelection);\n\n if (shouldSelect) {\n nextSelection.add(value);\n } else {\n nextSelection.delete(value);\n }\n\n if (setsEqual(previousSelection, nextSelection)) {\n return;\n }\n\n this.applyMultipleSelection(nextSelection, value, shouldSelect, trigger);\n }\n\n private requestMultipleToggle(\n value: TngButtonToggleValue,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const targetToggle = this.findEnabledToggleByValue(value);\n if (targetToggle === null) {\n return;\n }\n\n const previousSelection = this.getEffectiveMultipleSelectedValues();\n const nextSelection = new Set(previousSelection);\n const selected = !nextSelection.has(value);\n\n if (selected) {\n nextSelection.add(value);\n } else {\n nextSelection.delete(value);\n }\n\n this.applyMultipleSelection(nextSelection, value, selected, trigger);\n }\n\n private applyMultipleSelection(\n nextSelection: ReadonlySet<TngButtonToggleValue>,\n toggledValue: TngButtonToggleValue,\n selected: boolean,\n trigger: TngButtonToggleActionTrigger,\n ): void {\n const previousSelection = this.getEffectiveMultipleSelectedValues();\n if (setsEqual(previousSelection, nextSelection)) {\n return;\n }\n\n if (!this.isMultipleControlled()) {\n this.uncontrolledMultipleValues = new Set(nextSelection);\n this.hasMultipleUserSelection = true;\n }\n\n const previousValues = this.getSelectedValuesInDomOrder(previousSelection);\n const values = this.getSelectedValuesInDomOrder(nextSelection);\n\n this.valuesChange.emit(values);\n this.toggleChange.emit({\n value: toggledValue,\n selected,\n previousValue: null,\n previousValues,\n values,\n trigger,\n });\n\n this.syncStateFromRegistry();\n }\n\n private resolveFocusMove(key: string): TngButtonToggleFocusMove | null {\n if (key === 'Home') {\n return 'first';\n }\n\n if (key === 'End') {\n return 'last';\n }\n\n if (this.orientation() === 'vertical') {\n if (key === 'ArrowDown') {\n return 'next';\n }\n\n if (key === 'ArrowUp') {\n return 'prev';\n }\n\n return null;\n }\n\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return null;\n }\n\n const isRtl = this.resolveDirection() === 'rtl';\n const moveToNext = key === (isRtl ? 'ArrowLeft' : 'ArrowRight');\n return moveToNext ? 'next' : 'prev';\n }\n\n private moveFocusByAction(\n sourceToggle: TngButtonToggle,\n action: TngButtonToggleFocusMove,\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n const enabledToggles = this.getEnabledToggles();\n if (enabledToggles.length === 0) {\n return;\n }\n\n const currentIndex = enabledToggles.indexOf(sourceToggle);\n if (currentIndex < 0) {\n return;\n }\n\n const nextToggle = this.resolveFocusTarget(enabledToggles, currentIndex, action);\n if (nextToggle === null) {\n return;\n }\n\n this.moveFocusToToggle(nextToggle, trigger);\n\n if (this.activation() === 'auto' && this.type() === 'single') {\n this.requestSingleSelection(nextToggle.getValue(), trigger === 'programmatic' ? 'programmatic' : 'keyboard');\n }\n }\n\n private moveFocusToToggle(\n toggle: TngButtonToggle,\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n if (this.disabled() || toggle.isDisabledInContext()) {\n return;\n }\n\n this.setFocusedValue(toggle.getValue(), trigger);\n toggle.focusSelf();\n }\n\n private moveFocusFromCurrentToggle(\n direction: 'next' | 'prev',\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n const enabledToggles = this.getEnabledToggles();\n if (enabledToggles.length === 0) {\n return;\n }\n\n const activeElement = this.hostRef.nativeElement.ownerDocument?.activeElement ?? null;\n const activeToggle = this.findToggleContainingElement(activeElement);\n const currentToggle =\n activeToggle ?? this.findEnabledToggleByValue(this.resolveCurrentTabStopValue(), enabledToggles);\n\n if (currentToggle === null) {\n return;\n }\n\n const currentIndex = enabledToggles.indexOf(currentToggle);\n if (currentIndex < 0) {\n return;\n }\n\n const nextToggle = this.resolveFocusTarget(enabledToggles, currentIndex, direction);\n if (nextToggle === null) {\n return;\n }\n\n this.moveFocusToToggle(nextToggle, trigger);\n\n if (this.activation() === 'auto' && this.type() === 'single') {\n this.requestSingleSelection(nextToggle.getValue(), trigger === 'programmatic' ? 'programmatic' : 'keyboard');\n }\n }\n\n private resolveFocusTarget(\n enabledToggles: readonly TngButtonToggle[],\n currentIndex: number,\n action: TngButtonToggleFocusMove,\n ): TngButtonToggle | null {\n if (enabledToggles.length === 0 || currentIndex < 0) {\n return null;\n }\n\n if (action === 'first') {\n return enabledToggles[0] ?? null;\n }\n\n if (action === 'last') {\n return enabledToggles[enabledToggles.length - 1] ?? null;\n }\n\n if (action === 'next') {\n if (currentIndex + 1 < enabledToggles.length) {\n return enabledToggles[currentIndex + 1] ?? null;\n }\n\n return this.loop()\n ? (enabledToggles[0] ?? null)\n : (enabledToggles[currentIndex] ?? null);\n }\n\n if (currentIndex - 1 >= 0) {\n return enabledToggles[currentIndex - 1] ?? null;\n }\n\n return this.loop()\n ? (enabledToggles[enabledToggles.length - 1] ?? null)\n : (enabledToggles[currentIndex] ?? null);\n }\n\n private setFocusedValue(\n value: TngButtonToggleValue,\n trigger: TngButtonToggleFocusTrigger,\n ): void {\n const previousValue = this.focusedValue;\n if (previousValue !== null && valuesEqual(previousValue, value)) {\n return;\n }\n\n this.focusedValue = value;\n this.focusChange.emit({\n value,\n previousValue,\n trigger,\n });\n }\n\n private resolveDirection(): 'ltr' | 'rtl' {\n const configuredDirection = this.dir();\n if (configuredDirection !== 'auto') {\n return configuredDirection;\n }\n\n const host = this.hostRef.nativeElement;\n const nearestDirection =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement.getAttribute('dir');\n\n return nearestDirection?.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n }\n\n private syncStateFromRegistry(): void {\n const currentType = this.type();\n const enabledToggles = this.getEnabledToggles();\n\n if (this.initializedType !== currentType) {\n this.initializedType = currentType;\n this.focusedValue = null;\n this.hasSingleUserSelection = false;\n this.hasMultipleUserSelection = false;\n\n if (currentType === 'single') {\n this.uncontrolledMultipleValues.clear();\n if (!this.isSingleControlled()) {\n this.uncontrolledSingleValue = this.resolveInitialSingleValue(enabledToggles);\n }\n } else {\n this.uncontrolledSingleValue = null;\n if (!this.isMultipleControlled()) {\n this.uncontrolledMultipleValues = new Set(\n this.resolveInitialMultipleValues(enabledToggles),\n );\n }\n }\n }\n\n if (enabledToggles.length === 0) {\n if (currentType === 'single' && !this.isSingleControlled()) {\n this.uncontrolledSingleValue = null;\n }\n\n if (currentType === 'multiple' && !this.isMultipleControlled()) {\n this.uncontrolledMultipleValues.clear();\n }\n\n this.focusedValue = null;\n return;\n }\n\n if (currentType === 'single') {\n this.syncSingleState(enabledToggles);\n } else {\n this.syncMultipleState(enabledToggles);\n }\n\n this.focusedValue = this.resolveCurrentTabStopValue(enabledToggles);\n }\n\n private syncSingleState(enabledToggles: readonly TngButtonToggle[]): void {\n if (this.isSingleControlled()) {\n return;\n }\n\n const currentValue = this.uncontrolledSingleValue;\n const hasEnabledCurrentValue =\n currentValue !== null && this.findEnabledToggleByValue(currentValue, enabledToggles) !== null;\n\n if (hasEnabledCurrentValue) {\n return;\n }\n\n this.uncontrolledSingleValue = this.allowEmpty()\n ? null\n : (enabledToggles[0]?.getValue() ?? null);\n }\n\n private syncMultipleState(enabledToggles: readonly TngButtonToggle[]): void {\n if (this.isMultipleControlled()) {\n return;\n }\n\n const enabledSet = new Set(enabledToggles.map((toggle) => toggle.getValue()));\n\n const nextValues = new Set<TngButtonToggleValue>();\n for (const value of this.uncontrolledMultipleValues) {\n if (enabledSet.has(value)) {\n nextValues.add(value);\n }\n }\n\n this.uncontrolledMultipleValues = nextValues;\n }\n\n private resolveInitialSingleValue(\n enabledToggles: readonly TngButtonToggle[],\n ): TngButtonToggleValue | null {\n if (enabledToggles.length === 0) {\n return null;\n }\n\n const defaultValue = this.getDefaultSingleValueInput();\n if (\n defaultValue !== undefined &&\n defaultValue !== null &&\n this.findEnabledToggleByValue(defaultValue, enabledToggles) !== null\n ) {\n return defaultValue;\n }\n\n if (this.allowEmpty()) {\n return null;\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n private resolveInitialMultipleValues(\n enabledToggles: readonly TngButtonToggle[],\n ): readonly TngButtonToggleValue[] {\n if (enabledToggles.length === 0) {\n return [];\n }\n\n const defaultValues = new Set(uniqueValues(this.getDefaultMultipleValuesInput()));\n if (defaultValues.size === 0) {\n return [];\n }\n\n const selectedValues: TngButtonToggleValue[] = [];\n for (const toggle of enabledToggles) {\n const value = toggle.getValue();\n if (defaultValues.has(value)) {\n selectedValues.push(value);\n }\n }\n\n return selectedValues;\n }\n\n private resolveNeighborValueOnRemoval(\n orderedToggles: readonly TngButtonToggle[],\n removedIndex: number,\n ): TngButtonToggleValue | null {\n if (removedIndex < 0) {\n return this.getEnabledToggles()[0]?.getValue() ?? null;\n }\n\n for (let index = removedIndex + 1; index < orderedToggles.length; index += 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n for (let index = removedIndex - 1; index >= 0; index -= 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n return null;\n }\n\n private resolveNeighborForUnavailableToggle(toggle: TngButtonToggle): TngButtonToggleValue | null {\n const orderedToggles = this.getOrderedToggles();\n const currentIndex = orderedToggles.indexOf(toggle);\n\n if (currentIndex < 0) {\n return this.getEnabledToggles()[0]?.getValue() ?? null;\n }\n\n for (let index = currentIndex + 1; index < orderedToggles.length; index += 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n for (let index = currentIndex - 1; index >= 0; index -= 1) {\n const candidate = orderedToggles[index];\n if (candidate !== undefined && !candidate.isSelfDisabled()) {\n return candidate.getValue();\n }\n }\n\n return null;\n }\n\n private isSingleControlled(): boolean {\n if (this.type() !== 'single') {\n return false;\n }\n\n return this.getControlledSingleValueInput() !== undefined;\n }\n\n private isMultipleControlled(): boolean {\n if (this.type() !== 'multiple') {\n return false;\n }\n\n return this.getControlledMultipleValuesInput() !== undefined;\n }\n\n private getEffectiveSingleSelectedValue(\n enabledToggles = this.getEnabledToggles(),\n ): TngButtonToggleValue | null {\n if (this.type() !== 'single' || enabledToggles.length === 0) {\n return null;\n }\n\n let selectedValue = this.isSingleControlled()\n ? ((this.getControlledSingleValueInput() ?? null) as TngButtonToggleValue | null)\n : this.uncontrolledSingleValue;\n\n if (!this.isSingleControlled() && !this.hasSingleUserSelection) {\n const defaultValue = this.getDefaultSingleValueInput();\n if (\n defaultValue !== undefined &&\n defaultValue !== null &&\n this.findEnabledToggleByValue(defaultValue, enabledToggles) !== null\n ) {\n selectedValue = defaultValue;\n } else if (defaultValue === null) {\n selectedValue = null;\n }\n }\n\n if (\n selectedValue !== null &&\n this.findEnabledToggleByValue(selectedValue, enabledToggles) !== null\n ) {\n return selectedValue;\n }\n\n if (this.allowEmpty()) {\n return null;\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n private getEffectiveMultipleSelectedValues(\n enabledToggles = this.getEnabledToggles(),\n ): ReadonlySet<TngButtonToggleValue> {\n if (this.type() !== 'multiple' || enabledToggles.length === 0) {\n return new Set<TngButtonToggleValue>();\n }\n\n const sourceValues = this.isMultipleControlled()\n ? uniqueValues(this.getControlledMultipleValuesInput() ?? [])\n : (!this.hasMultipleUserSelection\n ? uniqueValues(this.getDefaultMultipleValuesInput())\n : Array.from(this.uncontrolledMultipleValues));\n\n const sourceSet = new Set(sourceValues);\n const selectedSet = new Set<TngButtonToggleValue>();\n\n for (const toggle of enabledToggles) {\n const value = toggle.getValue();\n if (sourceSet.has(value)) {\n selectedSet.add(value);\n }\n }\n\n return selectedSet;\n }\n\n private resolveCurrentTabStopValue(\n enabledToggles = this.getEnabledToggles(),\n ): TngButtonToggleValue | null {\n if (enabledToggles.length === 0) {\n return null;\n }\n\n if (\n this.focusedValue !== null &&\n this.findEnabledToggleByValue(this.focusedValue, enabledToggles) !== null\n ) {\n return this.focusedValue;\n }\n\n if (this.type() === 'single') {\n const selectedValue = this.getEffectiveSingleSelectedValue(enabledToggles);\n if (selectedValue !== null) {\n return selectedValue;\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n const selectedValues = this.getEffectiveMultipleSelectedValues(enabledToggles);\n for (const toggle of enabledToggles) {\n const value = toggle.getValue();\n if (selectedValues.has(value)) {\n return value;\n }\n }\n\n return enabledToggles[0]?.getValue() ?? null;\n }\n\n private getSelectedValuesInDomOrder(\n selectedValues: ReadonlySet<TngButtonToggleValue>,\n orderedToggles = this.getOrderedToggles(),\n ): readonly TngButtonToggleValue[] {\n if (selectedValues.size === 0) {\n return [];\n }\n\n const values: TngButtonToggleValue[] = [];\n for (const toggle of orderedToggles) {\n const value = toggle.getValue();\n if (selectedValues.has(value) && !toggle.isSelfDisabled()) {\n values.push(value);\n }\n }\n\n return values;\n }\n\n private getOrderedToggles(): TngButtonToggle[] {\n const toggles = Array.from(this.toggles);\n toggles.sort((a, b) =>\n compareByDomPosition(\n a.getHostElement(),\n b.getHostElement(),\n a.getRegistrationOrder(),\n b.getRegistrationOrder(),\n ),\n );\n\n return toggles;\n }\n\n private getEnabledToggles(): TngButtonToggle[] {\n return this.getOrderedToggles().filter((toggle) => !toggle.isSelfDisabled());\n }\n\n private findEnabledToggleByValue(\n value: TngButtonToggleValue | null,\n enabledToggles: readonly TngButtonToggle[] = this.getEnabledToggles(),\n ): TngButtonToggle | null {\n if (value === null) {\n return null;\n }\n\n return enabledToggles.find((toggle) => valuesEqual(toggle.getValue(), value)) ?? null;\n }\n\n private findToggleContainingElement(element: Element | null): TngButtonToggle | null {\n if (element === null) {\n return null;\n }\n\n const toggles = this.getOrderedToggles();\n return (\n toggles.find((toggle) => {\n const host = toggle.getHostElement();\n return host === element || host.contains(element);\n }) ?? null\n );\n }\n\n private getControlledSingleValueInput(): TngButtonToggleValue | null | undefined {\n const explicit = this.controlledValueInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.value();\n }\n\n private getControlledMultipleValuesInput(): readonly TngButtonToggleValue[] | undefined {\n const explicit = this.controlledValuesInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.values();\n }\n\n private getDefaultSingleValueInput(): TngButtonToggleValue | null | undefined {\n const explicit = this.defaultValueInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.defaultValue();\n }\n\n private getDefaultMultipleValuesInput(): readonly TngButtonToggleValue[] {\n const explicit = this.defaultValuesInput();\n if (explicit !== undefined) {\n return explicit;\n }\n\n return this.defaultValues();\n }\n}\n\n@Directive({\n selector: 'button[tngButtonToggle]',\n exportAs: 'tngButtonToggle',\n})\nexport class TngButtonToggle {\n private readonly hostRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n private readonly group = inject(TngButtonToggleGroup, { optional: true });\n private resolvedId = createToggleId();\n private readonly registrationOrder = nextRegistrationOrder++;\n private lastKnownValue: TngButtonToggleValue | null = null;\n private lastKnownDisabled = false;\n\n readonly toggleValueInput = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n alias: 'tngButtonToggleValue',\n transform: normalizeOptionalValueInput,\n });\n readonly valueInput = input<TngButtonToggleValue | null | undefined, unknown>(undefined, {\n alias: 'value',\n transform: normalizeOptionalValueInput,\n });\n readonly disabledInput = input<boolean, unknown>(false, {\n alias: 'disabled',\n transform: booleanAttribute,\n });\n readonly pressedInput = input<boolean, unknown>(false, {\n alias: 'pressed',\n transform: booleanAttribute,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'button-toggle' as const;\n\n @HostBinding('attr.id')\n protected get id(): string {\n return this.resolvedId;\n }\n\n @HostBinding('attr.type')\n protected readonly typeAttr = 'button' as const;\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'radio' | null {\n return this.group?.getToggleRole() ?? null;\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): string | null {\n if (this.group === null) {\n return null;\n }\n\n return this.group.getToggleTabIndex(this);\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaCheckedAttr(): 'true' | 'false' | null {\n if (this.group === null) {\n return null;\n }\n\n return this.group.getToggleAriaChecked(this);\n }\n\n @HostBinding('attr.aria-pressed')\n protected get ariaPressedAttr(): 'true' | 'false' | null {\n if (this.group !== null) {\n return this.group.getToggleAriaPressed(this);\n }\n\n return resolveTngButtonToggleAriaPressed(this.pressedInput());\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabledAttr(): 'true' | null {\n return this.isDisabledInContext() ? 'true' : null;\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): 'true' | 'false' {\n return this.isDisabledInContext() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-focused')\n protected get dataFocusedAttr(): 'true' | 'false' {\n if (this.group === null) {\n return 'false';\n }\n\n return this.group.isToggleFocused(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-selected')\n protected get dataSelectedAttr(): 'true' | 'false' {\n if (this.group === null) {\n return this.pressedInput() ? 'true' : 'false';\n }\n\n return this.group.isToggleSelected(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'on' | 'off' {\n return resolveTngButtonToggleDataState(this.dataSelectedAttr === 'true');\n }\n\n @HostBinding('attr.disabled')\n protected get disabledAttr(): '' | null {\n return this.isDisabledInContext() ? '' : null;\n }\n\n constructor() {\n this.group?.registerToggle(this);\n }\n\n ngOnInit(): void {\n this.syncResolvedIdFromHost();\n this.lastKnownValue = this.getValue();\n this.lastKnownDisabled = this.isDisabledInContext();\n this.group?.notifyToggleMutated(this);\n }\n\n ngDoCheck(): void {\n this.syncResolvedIdFromHost();\n this.lastKnownValue = this.getValue();\n this.lastKnownDisabled = this.isDisabledInContext();\n }\n\n ngOnDestroy(): void {\n this.group?.unregisterToggle(this);\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (this.isDisabledInContext()) {\n event.preventDefault();\n return;\n }\n\n if (this.group === null) {\n return;\n }\n\n const target = event.target;\n if (target instanceof Element && target !== this.hostRef.nativeElement) {\n if (isFocusableInteractiveElement(target) && this.hostRef.nativeElement.contains(target)) {\n return;\n }\n }\n\n this.focusSelf();\n this.group.activateToggle(this, 'pointer');\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n if (this.group === null || this.isDisabledInContext()) {\n return;\n }\n\n this.group.onToggleFocused(this, 'pointer');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n this.group?.handleToggleKeydown(this, event);\n }\n\n getRegistrationOrder(): number {\n return this.registrationOrder;\n }\n\n getHostElement(): HTMLButtonElement {\n return this.hostRef.nativeElement;\n }\n\n getValue(): TngButtonToggleValue {\n const explicitValue = this.toggleValueInput() ?? this.valueInput();\n if (explicitValue !== undefined && explicitValue !== null) {\n return explicitValue;\n }\n\n const hostPropertyValue = this.hostRef.nativeElement.value;\n if (typeof hostPropertyValue === 'string' && hostPropertyValue.length > 0) {\n return hostPropertyValue;\n }\n\n const hostValue = this.hostRef.nativeElement.getAttribute('value');\n if (hostValue !== null && hostValue.length > 0) {\n return hostValue;\n }\n\n return this.resolvedId;\n }\n\n isDisabledInContext(): boolean {\n if (this.group?.isDisabled()) {\n return true;\n }\n\n return this.disabledInput();\n }\n\n isSelfDisabled(): boolean {\n return this.disabledInput();\n }\n\n focusSelf(): void {\n this.hostRef.nativeElement.focus();\n }\n\n private syncResolvedIdFromHost(): boolean {\n const hostId = this.hostRef.nativeElement.getAttribute('id');\n if (hostId === null || hostId.length === 0 || hostId === this.resolvedId) {\n return false;\n }\n\n this.resolvedId = hostId;\n return true;\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
1
2
|
type NullableBooleanInput = '' | 'false' | 'true' | boolean | null | undefined;
|
|
2
3
|
export declare function coerceTngCheckboxNullableBoolean(value: NullableBooleanInput): boolean | null;
|
|
3
4
|
export declare function resolveTngCheckboxAriaChecked(checked: boolean, indeterminate: boolean): 'false' | 'mixed' | 'true';
|
|
@@ -43,6 +44,8 @@ export declare class TngCheckbox {
|
|
|
43
44
|
onFocus(): void;
|
|
44
45
|
onReadonlyChange(): void;
|
|
45
46
|
private isInvalid;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TngCheckbox, never>;
|
|
48
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TngCheckbox, "input[tngCheckbox]", ["tngCheckbox"], { "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
46
49
|
}
|
|
47
50
|
export {};
|
|
48
51
|
//# sourceMappingURL=tng-checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-checkbox.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/checkbox/tng-checkbox.ts"],"names":[],"mappings":"AAUA,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAW/E,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAc5F;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,GACrB,OAAO,GAAG,OAAO,GAAG,MAAM,CAM5B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,GACrB,SAAS,GAAG,OAAO,GAAG,WAAW,CAMnC;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAUT;AAED,
|
|
1
|
+
{"version":3,"file":"tng-checkbox.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/form/checkbox/tng-checkbox.ts"],"names":[],"mappings":";AAUA,KAAK,oBAAoB,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAW/E,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAc5F;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,GACrB,OAAO,GAAG,OAAO,GAAG,MAAM,CAM5B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,GACrB,SAAS,GAAG,OAAO,GAAG,WAAW,CAMnC;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,EAAE,OAAO,GAAG,IAAI,GAC1B,OAAO,CAUT;AAED,qBAIa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoD;IAC/E,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAAgB,eAAe,qDAA8B;IAC7D,SAAgB,WAAW,yFAExB;IACH,SAAgB,OAAO,8EAEpB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,OAAO,yFAEpB;IACH,SAAgB,aAAa,8EAE1B;IACH,SAAgB,IAAI,qDAA8B;IAClD,SAAgB,QAAQ,8EAErB;IACH,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IAGlD,SAAS,KAAK,WAAW,IAAI,OAAO,CAEnC;IAGD,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAEzC;IAGD,SAAS,KAAK,eAAe,IAAI,OAAO,GAAG,OAAO,GAAG,MAAM,CAE1D;IAGD,SAAS,KAAK,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEjD;IAGD,SAAS,KAAK,eAAe,IAAI,MAAM,GAAG,IAAI,CAE7C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,oBAAoB,IAAI,EAAE,GAAG,IAAI,CAE9C;IAGD,SAAS,KAAK,eAAe,IAAI,EAAE,GAAG,IAAI,CAEzC;IAGD,SAAS,KAAK,aAAa,IAAI,EAAE,GAAG,IAAI,CAEvC;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,gBAAgB,IAAI,EAAE,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,aAAa,IAAI,SAAS,GAAG,OAAO,GAAG,WAAW,CAE/D;IAGD,SAAS,KAAK,iBAAiB,IAAI,EAAE,GAAG,IAAI,CAE3C;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,EAAE,GAAG,IAAI,CAEtC;IAGD,SAAS,KAAK,YAAY,IAAI,UAAU,CAEvC;IAGD,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,IAAI,CAEvC;IAGM,MAAM,IAAI,IAAI;IAMd,OAAO,IAAI,IAAI;IAMf,gBAAgB,IAAI,IAAI;IAU/B,OAAO,CAAC,SAAS;yCA/JN,WAAW;2CAAX,WAAW;CAkKvB"}
|