@tailng-ui/primitives 0.13.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 +2 -2
- package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
- package/src/lib/feedback/empty/tng-empty.js +0 -5
- package/src/lib/feedback/empty/tng-empty.js.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
- package/src/lib/feedback/progress-bar/tng-progress-bar.js +0 -2
- package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +0 -1
- package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js +0 -1
- package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
- package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
- package/src/lib/feedback/toast/tng-toast.js +0 -2
- package/src/lib/feedback/toast/tng-toast.js.map +1 -1
- 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 +0 -1
- 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.map +1 -1
- package/src/lib/form/_shared/select/tng-select.parts.shared.js +0 -4
- package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js +0 -1
- package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +0 -2
- package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +0 -1
- package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js +0 -4
- package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
- package/src/lib/form/button-toggle/tng-button-toggle.js +0 -2
- package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
- package/src/lib/form/checkbox/tng-checkbox.js +0 -1
- package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
- package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
- package/src/lib/form/chips/tng-chips.js +0 -3
- package/src/lib/form/chips/tng-chips.js.map +1 -1
- package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
- package/src/lib/form/combobox/tng-combobox.js +0 -1
- package/src/lib/form/combobox/tng-combobox.js.map +1 -1
- package/src/lib/form/input/tng-input.d.ts.map +1 -1
- package/src/lib/form/input/tng-input.js +0 -4
- package/src/lib/form/input/tng-input.js.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
- package/src/lib/form/input-otp/tng-input-otp.js +0 -1
- package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
- package/src/lib/form/label/tng-label.d.ts.map +1 -1
- package/src/lib/form/label/tng-label.js +0 -1
- package/src/lib/form/label/tng-label.js.map +1 -1
- package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/listbox.directive.js +0 -1
- package/src/lib/form/listbox/listbox.directive.js.map +1 -1
- package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
- package/src/lib/form/listbox/option.directive.js +0 -1
- package/src/lib/form/listbox/option.directive.js.map +1 -1
- 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 +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +0 -2
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.js +0 -1
- 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.map +1 -1
- package/src/lib/form/multi-select/tng-multi-select.listbox.js +0 -2
- package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
- package/src/lib/form/multiselect/tng-multiselect.js +0 -1
- package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
- package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
- package/src/lib/form/radio/tng-radio.js +0 -1
- package/src/lib/form/radio/tng-radio.js.map +1 -1
- package/src/lib/form/select/tng-select.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.js +0 -1
- package/src/lib/form/select/tng-select.js.map +1 -1
- package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
- package/src/lib/form/select/tng-select.listbox.js +0 -2
- package/src/lib/form/select/tng-select.listbox.js.map +1 -1
- package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
- package/src/lib/form/slider/tng-slider.js +0 -1
- package/src/lib/form/slider/tng-slider.js.map +1 -1
- package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
- package/src/lib/form/switch/tng-switch.js +0 -1
- package/src/lib/form/switch/tng-switch.js.map +1 -1
- package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
- package/src/lib/form/textarea/tng-textarea.js +0 -1
- package/src/lib/form/textarea/tng-textarea.js.map +1 -1
- package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
- package/src/lib/form/toggle/tng-toggle.js +0 -1
- package/src/lib/form/toggle/tng-toggle.js.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js +0 -1
- package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
- package/src/lib/layout/accordion/tng-accordion.js +0 -4
- package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +0 -1
- package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
- package/src/lib/layout/card/tng-card.d.ts.map +1 -1
- package/src/lib/layout/card/tng-card.js +0 -10
- package/src/lib/layout/card/tng-card.js.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
- package/src/lib/layout/collapsible/tng-collapsible.js +0 -3
- package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
- package/src/lib/layout/drawer/tng-drawer.js +0 -6
- package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
- package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
- package/src/lib/layout/grid/tng-grid.js +0 -1
- package/src/lib/layout/grid/tng-grid.js.map +1 -1
- package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
- package/src/lib/layout/separator/tng-separator.js +0 -1
- package/src/lib/layout/separator/tng-separator.js.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
- package/src/lib/layout/stepper/tng-stepper.js +0 -1
- package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-group.js +0 -1
- package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-indicator.js +0 -1
- package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree-item.js +0 -1
- package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
- package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
- package/src/lib/layout/tree/tng-tree.js +0 -1
- package/src/lib/layout/tree/tng-tree.js.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +0 -5
- package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
- package/src/lib/navigation/context-menu/tng-context-menu.js +0 -2
- package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +0 -1
- package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
- package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
- package/src/lib/navigation/menu/tng-menu.js +0 -6
- package/src/lib/navigation/menu/tng-menu.js.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
- package/src/lib/navigation/menubar/tng-menubar.js +0 -2
- package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +0 -1
- package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
- package/src/lib/navigation/tabs/tng-tabs.js +0 -6
- package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js +0 -1
- package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
- package/src/lib/overlay/dialog/tng-dialog.js +0 -9
- package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
- package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
- package/src/lib/overlay/popover/tng-popover.js +0 -4
- package/src/lib/overlay/popover/tng-popover.js.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
- package/src/lib/overlay/tooltip/tng-tooltip.js +0 -3
- package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
- package/src/lib/utility/avatar/tng-avatar.js +0 -3
- package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
- package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
- package/src/lib/utility/badge/tng-badge.js +0 -1
- package/src/lib/utility/badge/tng-badge.js.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
- package/src/lib/utility/code-block/tng-code-block.js +0 -5
- package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
- package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
- package/src/lib/utility/copy/tng-copy.js +0 -1
- package/src/lib/utility/copy/tng-copy.js.map +1 -1
- package/src/lib/utility/press/tng-press.d.ts.map +1 -1
- package/src/lib/utility/press/tng-press.js +0 -1
- package/src/lib/utility/press/tng-press.js.map +1 -1
- package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
- package/src/lib/utility/tag/tng-tag.js +0 -3
- package/src/lib/utility/tag/tng-tag.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menu/tng-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;;AAoBpD,SAAS,YAAY,CAAC,YAAoB,EAAE,KAAa;IACvD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,YAAoB,EAAE,KAAa;IACvD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACzC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,MAA0B,EAC1B,YAAoB,EACpB,KAAa,EACb,IAAa;IAEb,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,IAAI,CAAC,IAAI,IAAI,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACvC,OAAO,KAAK,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,MAAM;YACT,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;YACD,OAAO,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,CAAC,CAAC;QACX,KAAK,MAAM;YACT,OAAO,KAAK,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC7D,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AACnE,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAO/B,MAAM,OAAO,OAAO;IACV,MAAM,CAAC,YAAY,GAAmB,IAAI,CAAC;IAClC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;IAC7E,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACpD,yBAAyB,GAAwB,IAAI,CAAC;IACtD,oBAAoB,GAAyC,IAAI,CAAC;IAClE,mBAAmB,GAAkC,IAAI,CAAC;IAC1D,iBAAiB,GAAgC,IAAI,CAAC;IACtD,0BAA0B,GAAG,KAAK,CAAC;IACnC,gBAAgB,GAAwB,IAAI,CAAC;IAC7C,cAAc,GAAuB,IAAI,CAAC;IAC1C,YAAY,GAAkB,IAAI,CAAC;IACnC,UAAU,GAAmB,IAAI,CAAC;IAClC,cAAc,GAAuB,IAAI,CAAC;IAC1C,WAAW,GAAmB,IAAI,CAAC;IACnC,SAAS,GAAG,KAAK,CAAC;IAClB,eAAe,GAAG,EAAE,CAAC;IAEpB,IAAI,GAAG,KAAK,CAAU,IAAI,gDAAC,CAAC;IAC5B,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC,CAAC;IACjC,aAAa,GAAG,KAAK,CAAU,IAAI,yDAAC,CAAC;IACrC,qBAAqB,GAAG,KAAK,CAAU,IAAI,iEAAC,CAAC;IAC7C,iBAAiB,GAAG,KAAK,CAAU,KAAK,6DAAC,CAAC;IAC1C,aAAa,GAAG,MAAM,EAAQ,CAAC;IAC/B,aAAa,GAAG,MAAM,EAAQ,CAAC;IAC/B,aAAa,GAAG,MAAM,EAAsB,CAAC;IAGnC,QAAQ,GAAG,MAAe,CAAC;IAG3B,IAAI,GAAG,MAAe,CAAC;IAGjC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAE9B,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACrE,CAAC;IAED,IACc,SAAS;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,IACc,MAAM;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IACc,oBAAoB;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,iBAAiB,CAAC,cAA2B,EAAE,gBAA6B;QAC1E,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,cAA4B;QAC3C,IAAI,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,6BAA6B,CAAC,0BAAmC;QAC/D,IAAI,CAAC,0BAA0B,GAAG,0BAA0B,CAAC;IAC/D,CAAC;IAED,sBAAsB,CAAC,mBAAkD;QACvE,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAC,iBAA8C;QACjE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,UAAmB,EAAE,cAA2B;QAC5D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,2BAA2B,CAAC,MAAuB;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,IAAiB;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,IAAiB;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;QAEtF,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY;gBACf,SAAS,GAAG,CAAC;oBACX,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrD,CAAC,CAAC,IAAI,CAAC,+CAA+C,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,yBAAyB,CAAC,IAAiB;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,6BAA6B,CAAC,IAAiB;QAC7C,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,CAAC,cAAsC,MAAM;QAC/C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACnE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC1B,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,WAAW;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC,IAAiB,EAAE,OAA6B;QAC5D,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;YACxB,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,aAAa,CAAC,IAAiB;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,oBAAoB,CAAC,YAAyB;QAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,eAAe,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,OAAgB;QAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,mBAAmB,CAAC,OAAgB;QAClC,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,kBAA2B;QAC3D,IAAI,WAAW,GAAmB,IAAI,CAAC;QAEvC,OAAO,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,gBAAgB,GAAmB,WAAW,CAAC,UAAU,CAAC;YAChE,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,IAAI,IAAI,kBAAkB,CAAC;YAC3E,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACtC,WAAW,GAAG,gBAAgB,CAAC;QACjC,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAkB,eAAe,CAAC,CAAC,CAAC;QACxG,MAAM,YAAY,GAA8B,EAAE,CAAC;QAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,4BAA4B,CAAC,eAAuB;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAkB,eAAe,CAAC,CAAC,CAAC;QACxG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC;QAC9E,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;QACnD,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,cAAc,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,OAAO,SAAS,CAAC,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,cAAc,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,OAAO,SAAS,CAAC,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,+CAA+C,CACrD,KAA6B,EAC7B,cAAsB;QAEtB,KAAK,IAAI,KAAK,GAAG,cAAc,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvF,OAAO,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,cAAc,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvF,OAAO,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB,CAAC,IAAqB;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;IACtE,CAAC;IAEO,qBAAqB,CAAC,KAA0B;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAEO,0BAA0B,CAAC,MAAY;QAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACvE,CAAC;IAGS,UAAU,CAAC,KAAiB;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC1C,IAAI,aAAa,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACxF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAEO,gCAAgC;QACtC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,KAAmB,EAAQ,EAAE;YAC5C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE;YACjC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,yBAAyB,GAAG,GAAG,EAAE;gBACpC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAE1C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;IAEO,gCAAgC;QACtC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,MAA0B;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1C,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,6BAA6B,EAAE,CAAC;IACvC,CAAC;IAEO,6BAA6B;QACnC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7F,wCAAwC;QAC1C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;QACrG,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAChF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,GAAW;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,mBAAmB,GACvB,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAEzE,IAAI,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,aAAa,EAAE,CAAC;QAC5F,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAEvE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YAC9C,KAAK,GAAG,aAAa,CAAC;YACtB,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CACxB,KAAyC,EACzC,KAAa,EACb,mBAA4B;QAE5B,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,mBAAmB,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpG,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACnD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YAE3D,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAAC,UAAkB;QAC7C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAElC,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACnC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAA2B;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAc,oBAAoB,CAAC,CAAC;QACtE,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5E,CAAC;IAGS,SAAS,CAAC,KAA2B;QAC7C,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1G,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;YACrG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC;gBACjE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;gBACzE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;gBAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;YACrG,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxE,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;uGAxnBU,OAAO;2FAAP,OAAO;;2FAAP,OAAO;kBALnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,SAAS;oBACnB,UAAU,EAAE,IAAI;iBACjB;;sBA+BE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,WAAW;;sBAGvB,WAAW;uBAAC,SAAS;;sBAGrB,WAAW;uBAAC,eAAe;;sBAK3B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,aAAa;;sBAKzB,WAAW;uBAAC,4BAA4B;;sBAwVxC,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;sBAqKnC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;AA6ErC,MAAM,OAAO,WAAW;IACL,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC;IAC1F,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,gBAAgB,GAAG,KAAK,CAAC;IACzB,eAAe,GAAmB,IAAI,CAAC;IAEtC,KAAK,GAAG,KAAK,CAAU,SAAS,kDACvC,KAAK,EAAE,kBAAkB,GACzB,CAAC;IACM,QAAQ,GAAG,KAAK,CAAkB,UAAU,qDACnD,KAAK,EAAE,iBAAiB,GACxB,CAAC;IACM,OAAO,GAAG,KAAK,CAAU,KAAK,oDACrC,KAAK,EAAE,oBAAoB,GAC3B,CAAC;IACM,OAAO,GAAG,KAAK,CAAiB,IAAI,oDAC3C,KAAK,EAAE,oBAAoB,GAC3B,CAAC;IAEH;QACE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAGkB,QAAQ,GAAG,WAAoB,CAAC;IAEnD,IACc,IAAI;QAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAGkB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAGrB,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEjC,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,IACc,WAAW;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;IAED,IACc,UAAU;QACtB,OAAO,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC;IACpC,CAAC;IAGS,OAAO,CAAC,KAAiB;QACjC,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,SAAS;QACP,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/C,IAAI,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;YAC9C,IAAI,CAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,qBAAqB,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtD,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,mBAAmB,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;YAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,UAAU;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAE5B,CAAC;QAEF,OAAO,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAA6B;QAClC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,kBAAkB,EAAE,CAAC;YAC3C,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,eAAe,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,WAAmC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAEO,oBAAoB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAEO,gBAAgB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChG,CAAC;IAEO,kCAAkC,CAAC,KAAiB;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CACtC,gJAAgJ,CACjJ,CAAC;QAEF,OAAO,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,CAAC;IAClE,CAAC;IAEO,eAAe;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAE5B,CAAC;QAEF,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACrH,CAAC;uGApOU,WAAW;2FAAX,WAAW;;2FAAX,WAAW;kBALvB,SAAS;mBAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,IAAI;iBACjB;;sBAoCE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,SAAS;;sBAGrB,WAAW;uBAAC,eAAe;;sBAG3B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,mBAAmB;;sBAS/B,WAAW;uBAAC,kBAAkB;;sBAK9B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;AA8JnC,MAAM,OAAO,gBAAgB;IAER,QAAQ,GAAG,gBAAyB,CAAC;IAGrC,IAAI,GAAG,WAAoB,CAAC;uGALpC,gBAAgB;2FAAhB,gBAAgB;;2FAAhB,gBAAgB;kBAL5B,SAAS;mBAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,kBAAkB;oBAC5B,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,WAAW;;AAS1B,MAAM,OAAO,iBAAiB;IAET,QAAQ,GAAG,kBAA2B,CAAC;IAGvC,IAAI,GAAG,cAAuB,CAAC;uGALvC,iBAAiB;2FAAjB,iBAAiB;;2FAAjB,iBAAiB;kBAL7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,WAAW;;AAS1B,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,KAAK,CAAiB,IAAI,iDACxC,KAAK,EAAE,iBAAiB,GACxB,CAAC;IAGgB,QAAQ,GAAG,eAAwB,CAAC;IAG7C,OAAO;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;uGAdU,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAL3B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,IAAI;iBACjB;;sBAME,WAAW;uBAAC,gBAAgB;;sBAG5B,YAAY;uBAAC,OAAO;;AAcvB,MAAM,OAAO,cAAc;IACR,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC;IAC7F,UAAU,GAAmB,IAAI,CAAC;IAEjC,IAAI,GAAG,KAAK,CAAiB,IAAI,iDACxC,KAAK,EAAE,gBAAgB,GACvB,CAAC;IAGgB,QAAQ,GAAG,cAAuB,CAAC;IAGnC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAGrB,YAAY,GAAG,MAAe,CAAC;IAElD,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAExD,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAGS,OAAO;QACf,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAGS,SAAS,CAAC,KAA2B;QAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEjC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC;YACb,KAAK,GAAG;gBACN,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtB,OAAO;YACT,KAAK,WAAW;gBACd,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,KAAK,SAAS;gBACZ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtB,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;oBACnB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;gBACD,OAAO;YACT;gBACE,OAAO;QACX,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,WAAmC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAEO,gBAAgB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7F,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAEO,UAAU;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAE5B,CAAC;QAEF,OAAO,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;IAClH,CAAC;IAEO,YAAY;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;uGArKU,cAAc;2FAAd,cAAc;;2FAAd,cAAc;kBAL1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;iBACjB;;sBAUE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,SAAS;;sBAGrB,WAAW;uBAAC,oBAAoB;;sBAGhC,WAAW;uBAAC,oBAAoB;;sBAgChC,YAAY;uBAAC,OAAO;;sBAmBpB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n NgZone,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\ntype MenuItemElement = HTMLElement;\ntype ReadonlyMenuItemElement = Readonly<MenuItemElement>;\ntype TngMenuFocusAction = 'first' | 'last' | 'next' | 'prev';\ntype TngMenuOpenFocusAction = 'first' | 'last' | 'none';\ntype TngMenuSelectTrigger = 'keyboard' | 'pointer';\ntype TngMenuItemRole = 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';\ntype TngMenuKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key' | 'shiftKey' | 'target'>> &\n Readonly<{ preventDefault: () => void }>;\ntype TngMenuPointerEvent = Readonly<Pick<PointerEvent, 'target'>>;\ntype TngMenubarArrowHandler = (key: 'ArrowRight' | 'ArrowLeft') => void;\ntype TngMenubarTabHandler = (shiftKey: boolean) => boolean;\n\nexport type TngMenuSelectEvent = Readonly<{\n value: unknown;\n itemId: string;\n trigger: TngMenuSelectTrigger;\n}>;\n\nfunction getNextIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return 0;\n }\n\n return currentIndex + 1 >= total ? 0 : currentIndex + 1;\n}\n\nfunction getPrevIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return total - 1;\n }\n\n return currentIndex - 1 < 0 ? total - 1 : currentIndex - 1;\n}\n\nfunction resolveMenuFocusAction(key: string): TngMenuFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'next';\n case 'ArrowUp':\n return 'prev';\n case 'Home':\n return 'first';\n case 'End':\n return 'last';\n default:\n return null;\n }\n}\n\nfunction resolveFocusIndex(\n action: TngMenuFocusAction,\n currentIndex: number,\n total: number,\n loop: boolean,\n): number {\n switch (action) {\n case 'next':\n if (!loop && currentIndex >= total - 1) {\n return total - 1;\n }\n return getNextIndex(currentIndex, total);\n case 'prev':\n if (!loop) {\n if (currentIndex < 0) {\n return 0;\n }\n if (currentIndex <= 0) {\n return 0;\n }\n }\n return getPrevIndex(currentIndex, total);\n case 'first':\n return 0;\n case 'last':\n return total - 1;\n }\n}\n\nconst createMenuId = createTngIdFactory('tng-menu');\nconst createMenuItemId = createTngIdFactory('tng-menu-item');\nconst createMenuTriggerId = createTngIdFactory('tng-menu-trigger');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenu]',\n exportAs: 'tngMenu',\n standalone: true,\n})\nexport class TngMenu {\n private static openRootMenu: TngMenu | null = null;\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuId();\n private readonly itemsById = new Map<string, TngMenuItem>();\n private outsidePointerdownCleanup: (() => void) | null = null;\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n private menubarArrowHandler: TngMenubarArrowHandler | null = null;\n private menubarTabHandler: TngMenubarTabHandler | null = null;\n private restoreFocusOnOutsideClick = false;\n private triggerStateSync: (() => void) | null = null;\n private triggerElement: HTMLElement | null = null;\n private activeItemId: string | null = null;\n private parentMenu: TngMenu | null = null;\n private parentMenuItem: TngMenuItem | null = null;\n private openSubmenu: TngMenu | null = null;\n private openState = false;\n private typeaheadBuffer = '';\n\n readonly loop = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly closeOnSelect = input<boolean>(true);\n readonly dismissOnOutsideClick = input<boolean>(true);\n readonly dismissOnFocusout = input<boolean>(false);\n readonly tngMenuOpened = output<void>();\n readonly tngMenuClosed = output<void>();\n readonly tngMenuSelect = output<TngMenuSelectEvent>();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menu' as const;\n\n @HostBinding('attr.id')\n readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';\n }\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.openState ? 'open' : 'closed';\n }\n\n @HostBinding('attr.hidden')\n protected get hidden(): '' | null {\n return this.openState ? null : '';\n }\n\n @HostBinding('attr.aria-activedescendant')\n protected get ariaActiveDescendant(): string | null {\n return this.activeItemId;\n }\n\n setTriggerElement(triggerElement: HTMLElement, triggerStateSync?: () => void): void {\n this.triggerElement = triggerElement;\n this.triggerStateSync = triggerStateSync ?? this.triggerStateSync;\n this.syncAriaLabelledby();\n }\n\n clearTriggerLink(triggerElement?: HTMLElement): void {\n if (triggerElement !== undefined && this.triggerElement !== triggerElement) {\n return;\n }\n\n this.triggerElement = null;\n this.triggerStateSync = null;\n this.menubarArrowHandler = null;\n this.menubarTabHandler = null;\n this.syncAriaLabelledby();\n }\n\n setRestoreFocusOnOutsideClick(restoreFocusOnOutsideClick: boolean): void {\n this.restoreFocusOnOutsideClick = restoreFocusOnOutsideClick;\n }\n\n setMenubarArrowHandler(menubarArrowHandler: TngMenubarArrowHandler | null): void {\n this.menubarArrowHandler = menubarArrowHandler;\n }\n\n setMenubarTabHandler(menubarTabHandler: TngMenubarTabHandler | null): void {\n this.menubarTabHandler = menubarTabHandler;\n }\n\n setParentMenu(parentMenu: TngMenu, parentMenuItem: TngMenuItem): void {\n this.parentMenu = parentMenu;\n this.parentMenuItem = parentMenuItem;\n }\n\n focusPanel(): void {\n this.hostRef.nativeElement.focus();\n }\n\n focusPanelAndMoveActiveItem(action: 'next' | 'prev'): void {\n if (!this.openState) {\n return;\n }\n\n this.moveActiveItem(action);\n this.hostRef.nativeElement.focus();\n this.changeDetectorRef.detectChanges();\n }\n\n isOpen(): boolean {\n return this.openState;\n }\n\n isDisabled(): boolean {\n return this.disabled();\n }\n\n isItemActive(itemId: string): boolean {\n return this.activeItemId === itemId;\n }\n\n registerItem(item: TngMenuItem): void {\n this.itemsById.set(item.getItemId(), item);\n }\n\n unregisterItem(item: TngMenuItem): void {\n const orderedItems = Array.from(this.itemsById.values());\n const itemIndex = orderedItems.findIndex((registeredItem) => registeredItem === item);\n\n if (this.itemsById.get(item.getItemId()) === item) {\n this.itemsById.delete(item.getItemId());\n }\n\n if (this.activeItemId === item.getItemId()) {\n this.activeItemId =\n itemIndex < 0\n ? this.resolveAdjacentEnabledItemId(item.getItemId())\n : this.resolveAdjacentEnabledItemIdFromRegisteredItems(orderedItems, itemIndex);\n }\n }\n\n onItemDisabledStateChange(item: TngMenuItem): void {\n if (!item.isDisabled() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n onItemNavigabilityStateChange(item: TngMenuItem): void {\n if (item.isNavigable() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n open(focusAction: TngMenuOpenFocusAction = 'none'): void {\n if (this.openState || this.disabled()) {\n return;\n }\n\n if (this.parentMenu === null) {\n if (TngMenu.openRootMenu !== null && TngMenu.openRootMenu !== this) {\n TngMenu.openRootMenu.close(false);\n }\n } else {\n this.parentMenu.openChildSubmenu(this);\n }\n\n this.openState = true;\n if (this.parentMenu === null) {\n TngMenu.openRootMenu = this;\n }\n\n if (focusAction === 'first') {\n this.moveActiveItem('next');\n } else if (focusAction === 'last') {\n this.moveActiveItem('prev');\n } else {\n this.activeItemId = null;\n }\n\n this.tngMenuOpened.emit();\n this.triggerStateSync?.();\n this.attachOutsidePointerdownListener();\n this.changeDetectorRef.detectChanges();\n this.hostRef.nativeElement.focus();\n }\n\n close(restoreFocus: boolean): void {\n if (!this.openState) {\n return;\n }\n\n if (this.openSubmenu !== null) {\n this.openSubmenu.close(false);\n this.openSubmenu = null;\n }\n\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.triggerStateSync?.();\n\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n\n this.tngMenuClosed.emit();\n if (restoreFocus) {\n this.triggerElement?.focus();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n const wasOpen = this.openState;\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.openSubmenu = null;\n\n if (wasOpen) {\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n this.triggerStateSync?.();\n }\n\n this.clearTriggerLink();\n }\n\n requestSelect(item: TngMenuItem, trigger: TngMenuSelectTrigger): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n item.applySelectionState();\n this.activeItemId = item.getItemId();\n this.tngMenuSelect.emit({\n value: item.getValue(),\n itemId: item.getItemId(),\n trigger,\n });\n\n if (this.closeOnSelect()) {\n this.closeSelfAndAncestorMenus(false);\n }\n }\n\n setActiveItem(item: TngMenuItem): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n this.activeItemId = item.getItemId();\n this.syncOpenSubmenuWithActiveItem();\n this.changeDetectorRef.detectChanges();\n }\n\n setSelectedRadioItem(selectedItem: TngMenuItem): void {\n for (const item of this.itemsById.values()) {\n if (item.getRole() !== 'menuitemradio') {\n continue;\n }\n\n item.setCheckedState(item === selectedItem);\n }\n }\n\n openChildSubmenu(submenu: TngMenu): void {\n if (this.openSubmenu !== null && this.openSubmenu !== submenu) {\n this.openSubmenu.close(false);\n }\n\n this.openSubmenu = submenu;\n }\n\n notifySubmenuClosed(submenu: TngMenu): void {\n if (this.openSubmenu === submenu) {\n this.openSubmenu = null;\n }\n }\n\n private closeSelfAndAncestorMenus(restoreFocusAtRoot: boolean): void {\n let menuToClose: TngMenu | null = this;\n\n while (menuToClose !== null) {\n const nextAncestorMenu: TngMenu | null = menuToClose.parentMenu;\n const shouldRestoreFocus = nextAncestorMenu === null && restoreFocusAtRoot;\n menuToClose.close(shouldRestoreFocus);\n menuToClose = nextAncestorMenu;\n }\n }\n\n private getEnabledMenuItems(): readonly ReadonlyMenuItemElement[] {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n const enabledItems: ReadonlyMenuItemElement[] = [];\n\n for (const item of items) {\n if (this.isNavigableItemElement(item)) {\n enabledItems.push(item);\n }\n }\n\n return enabledItems;\n }\n\n private resolveAdjacentEnabledItemId(referenceItemId: string): string | null {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n if (items.length === 0) {\n return null;\n }\n\n const referenceIndex = items.findIndex((item) => item.id === referenceItemId);\n if (referenceIndex < 0) {\n return this.getEnabledMenuItems()[0]?.id ?? null;\n }\n\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n return null;\n }\n\n private resolveAdjacentEnabledItemIdFromRegisteredItems(\n items: readonly TngMenuItem[],\n referenceIndex: number,\n ): string | null {\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n return null;\n }\n\n private isNavigableItemElement(item: MenuItemElement): boolean {\n const registeredItem = this.itemsById.get(item.id);\n return registeredItem !== undefined && registeredItem.isNavigable();\n }\n\n private onDocumentPointerdown(event: TngMenuPointerEvent): void {\n if (!this.openState || !this.dismissOnOutsideClick()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (this.isTargetInsideOpenMenuTree(target)) {\n return;\n }\n\n this.close(this.restoreFocusOnOutsideClick);\n }\n\n private isTargetInsideOpenMenuTree(target: Node): boolean {\n if (this.hostRef.nativeElement.contains(target)) {\n return true;\n }\n\n if (this.triggerElement?.contains(target) === true) {\n return true;\n }\n\n return this.openSubmenu?.isTargetInsideOpenMenuTree(target) ?? false;\n }\n\n @HostListener('focusout', ['$event'])\n protected onFocusout(event: FocusEvent): void {\n if (!this.openState || !this.dismissOnFocusout()) {\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && this.hostRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.close(false);\n }\n\n private attachOutsidePointerdownListener(): void {\n this.detachOutsidePointerdownListener();\n\n if (!this.dismissOnOutsideClick()) {\n return;\n }\n\n const handler = (event: PointerEvent): void => {\n this.onDocumentPointerdown(event);\n };\n\n this.ngZone.runOutsideAngular(() => {\n document.addEventListener('pointerdown', handler);\n this.outsidePointerdownCleanup = () => {\n document.removeEventListener('pointerdown', handler);\n };\n });\n }\n\n private syncAriaLabelledby(): void {\n const triggerId = this.triggerElement?.id;\n\n if (triggerId === undefined || triggerId.length === 0) {\n this.hostRef.nativeElement.removeAttribute('aria-labelledby');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-labelledby', triggerId);\n }\n\n private detachOutsidePointerdownListener(): void {\n this.outsidePointerdownCleanup?.();\n this.outsidePointerdownCleanup = null;\n }\n\n private moveActiveItem(action: TngMenuFocusAction): void {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n this.activeItemId = null;\n return;\n }\n\n let currentIndex = -1;\n for (let index = 0; index < items.length; index += 1) {\n if (items[index].id === this.activeItemId) {\n currentIndex = index;\n break;\n }\n }\n\n const targetIndex = resolveFocusIndex(action, currentIndex, items.length, this.loop());\n this.activeItemId = items[targetIndex]?.id ?? null;\n this.syncOpenSubmenuWithActiveItem();\n }\n\n private syncOpenSubmenuWithActiveItem(): void {\n if (this.openSubmenu !== null && this.parentMenuItem?.getOwnedSubmenu() !== this.openSubmenu) {\n // no-op safeguard for submenu instances\n }\n\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (this.openSubmenu !== null && activeItem !== this.openSubmenu.parentMenuItem) {\n this.openSubmenu.close(false);\n }\n }\n\n private moveActiveItemByTypeahead(key: string): boolean {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n return false;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return false;\n }\n\n const repeatingSingleChar =\n this.typeaheadBuffer.length > 0 &&\n this.typeaheadBuffer.split('').every((char) => char === normalizedKey);\n\n let query = repeatingSingleChar ? normalizedKey : `${this.typeaheadBuffer}${normalizedKey}`;\n let match = this.findTypeaheadMatch(items, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findTypeaheadMatch(items, query, true);\n }\n\n if (match === null) {\n return false;\n }\n\n this.activeItemId = match.id;\n this.resetTypeaheadBuffer(query);\n return true;\n }\n\n private findTypeaheadMatch(\n items: readonly ReadonlyMenuItemElement[],\n query: string,\n cycleFromActiveItem: boolean,\n ): ReadonlyMenuItemElement | null {\n const currentIndex = items.findIndex((item) => item.id === this.activeItemId);\n const startIndex = cycleFromActiveItem && currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\n for (let offset = 0; offset < items.length; offset += 1) {\n const index = (startIndex + offset) % items.length;\n const item = items[index];\n const label = item.textContent?.trim().toLowerCase() ?? '';\n\n if (label.startsWith(query)) {\n return item;\n }\n }\n\n return null;\n }\n\n private resetTypeaheadBuffer(nextBuffer: string): void {\n this.typeaheadBuffer = nextBuffer;\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n }\n\n this.typeaheadResetHandle = setTimeout(() => {\n this.typeaheadBuffer = '';\n this.typeaheadResetHandle = null;\n }, TYPEAHEAD_RESET_MS);\n }\n\n private clearTypeaheadBuffer(): void {\n this.typeaheadBuffer = '';\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private isEventFromNestedMenu(event: TngMenuKeyboardEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const closestMenu = target.closest<HTMLElement>('[data-slot=\"menu\"]');\n return closestMenu !== null && closestMenu !== this.hostRef.nativeElement;\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isEventFromNestedMenu(event)) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n if (this.parentMenu !== null) {\n this.close(false);\n this.parentMenu.focusPanel();\n return;\n }\n this.close(true);\n return;\n }\n\n if (event.key === 'Tab') {\n if (this.parentMenu === null && this.menubarTabHandler !== null && this.menubarTabHandler(event.shiftKey)) {\n event.preventDefault();\n return;\n }\n\n this.close(false);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null && activeItem.getOwnedSubmenu() !== null) {\n event.preventDefault();\n activeItem.openOwnedSubmenu('first');\n } else if (this.parentMenu === null && this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowRight');\n }\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n if (this.parentMenu !== null) {\n event.preventDefault();\n this.close(false);\n this.parentMenu.focusPanel();\n } else if (this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowLeft');\n }\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null) {\n event.preventDefault();\n this.requestSelect(activeItem, 'keyboard');\n }\n return;\n }\n\n const action = resolveMenuFocusAction(event.key);\n if (action === null) {\n if (event.key.length === 1 && this.moveActiveItemByTypeahead(event.key)) {\n event.preventDefault();\n }\n return;\n }\n event.preventDefault();\n this.moveActiveItem(action);\n }\n}\n\n@Directive({\n selector: '[tngMenuItem]',\n exportAs: 'tngMenuItem',\n standalone: true,\n})\nexport class TngMenuItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menu = inject(TngMenu, { optional: true, skipSelf: true });\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuItemId();\n private lastDisabledState = false;\n private lastNavigableState = true;\n private lastCheckedInput = false;\n private checkedOverride: boolean | null = null;\n\n readonly value = input<unknown>(undefined, {\n alias: 'tngMenuItemValue',\n });\n readonly itemRole = input<TngMenuItemRole>('menuitem', {\n alias: 'tngMenuItemRole',\n });\n readonly checked = input<boolean>(false, {\n alias: 'tngMenuItemChecked',\n });\n readonly submenu = input<TngMenu | null>(null, {\n alias: 'tngMenuItemSubmenu',\n });\n\n constructor() {\n this.lastDisabledState = this.isDisabled();\n this.lastNavigableState = this.isNavigable();\n this.menu?.registerItem(this);\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastCheckedInput = this.checked();\n this.syncOwnedSubmenuLink();\n this.syncSubmenuState();\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-item' as const;\n\n @HostBinding('attr.role')\n protected get role(): TngMenuItemRole {\n return this.itemRole();\n }\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected readonly tabIndex = -1;\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaChecked(): 'true' | 'false' | null {\n if (this.itemRole() === 'menuitem') {\n return null;\n }\n\n return this.isChecked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-active')\n protected get dataActive(): '' | null {\n return this.menu?.isItemActive(this.id) ? '' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.submenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.submenu()?.id ?? null;\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (this.shouldIgnoreNestedInteractiveClick(event)) {\n return;\n }\n\n if (this.submenu() !== null) {\n this.menu?.setActiveItem(this);\n this.openOwnedSubmenu('first');\n return;\n }\n\n this.select('pointer');\n }\n\n ngOnDestroy(): void {\n this.menu?.unregisterItem(this);\n }\n\n ngDoCheck(): void {\n const currentDisabledState = this.isDisabled();\n if (currentDisabledState !== this.lastDisabledState) {\n this.lastDisabledState = currentDisabledState;\n this.menu?.onItemDisabledStateChange(this);\n }\n\n const currentNavigableState = this.isNavigable();\n if (currentNavigableState !== this.lastNavigableState) {\n this.lastNavigableState = currentNavigableState;\n this.menu?.onItemNavigabilityStateChange(this);\n }\n\n const currentCheckedInput = this.checked();\n if (currentCheckedInput !== this.lastCheckedInput) {\n this.lastCheckedInput = currentCheckedInput;\n this.checkedOverride = null;\n }\n }\n\n getItemId(): string {\n return this.id;\n }\n\n getValue(): unknown {\n return this.value();\n }\n\n getOwnedSubmenu(): TngMenu | null {\n return this.submenu();\n }\n\n getRole(): TngMenuItemRole {\n return this.itemRole();\n }\n\n isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled');\n }\n\n isNavigable(): boolean {\n return !this.isDisabled() && !this.isHiddenOrInert();\n }\n\n select(trigger: TngMenuSelectTrigger): void {\n this.menu?.requestSelect(this, trigger);\n }\n\n isChecked(): boolean {\n return this.checkedOverride ?? this.checked();\n }\n\n setCheckedState(checked: boolean): void {\n this.checkedOverride = checked;\n }\n\n applySelectionState(): void {\n if (this.itemRole() === 'menuitemcheckbox') {\n this.checkedOverride = !this.isChecked();\n return;\n }\n\n if (this.itemRole() === 'menuitemradio') {\n this.menu?.setSelectedRadioItem(this);\n }\n }\n\n openOwnedSubmenu(focusAction: TngMenuOpenFocusAction): void {\n const submenu = this.submenu();\n if (submenu === null) {\n return;\n }\n\n this.syncOwnedSubmenuLink();\n submenu.open(focusAction);\n }\n\n private syncOwnedSubmenuLink(): void {\n const submenu = this.submenu();\n if (submenu === null || this.menu === null) {\n return;\n }\n\n this.syncHostId();\n submenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncSubmenuState());\n submenu.setRestoreFocusOnOutsideClick(false);\n submenu.setParentMenu(this.menu, this);\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private syncSubmenuState(): void {\n const submenu = this.submenu();\n if (submenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', submenu.isOpen() ? 'true' : 'false');\n }\n\n private shouldIgnoreNestedInteractiveClick(event: MouseEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const host = this.hostRef.nativeElement;\n const interactiveTarget = target.closest(\n 'button, input, select, textarea, a[href], [role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]',\n );\n\n return interactiveTarget !== null && interactiveTarget !== host;\n }\n\n private isHiddenOrInert(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n inert?: boolean;\n };\n\n return element.hidden || Boolean(element.inert) || element.hasAttribute('hidden') || element.hasAttribute('inert');\n }\n}\n\n@Directive({\n selector: '[tngMenuSeparator]',\n exportAs: 'tngMenuSeparator',\n standalone: true,\n})\nexport class TngMenuSeparator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-separator' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'separator' as const;\n}\n\n@Directive({\n selector: '[tngMenuGroupLabel]',\n exportAs: 'tngMenuGroupLabel',\n standalone: true,\n})\nexport class TngMenuGroupLabel {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-group-label' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'presentation' as const;\n}\n\n@Directive({\n selector: '[tngMenuBackdrop]',\n exportAs: 'tngMenuBackdrop',\n standalone: true,\n})\nexport class TngMenuBackdrop {\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuBackdrop',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-backdrop' as const;\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.menu();\n if (menu?.isOpen()) {\n menu.close(false);\n }\n }\n}\n\n@Directive({\n selector: '[tngMenuTrigger]',\n exportAs: 'tngMenuTrigger',\n standalone: true,\n})\nexport class TngMenuTrigger {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuTriggerId();\n private linkedMenu: TngMenu | null = null;\n\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuTrigger',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-trigger' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHaspopup = 'menu' as const;\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.menu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n if (this.linkedMenu === null) {\n return;\n }\n\n const linkedMenu = this.linkedMenu;\n linkedMenu.clearTriggerLink(this.hostRef.nativeElement);\n\n if (linkedMenu.isOpen()) {\n linkedMenu.close(false);\n }\n\n this.linkedMenu = null;\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n if (menu === null || menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n this.openMenu('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('none');\n return;\n case 'ArrowDown':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('first');\n return;\n case 'ArrowUp':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('last');\n return;\n case 'Escape':\n if (menu?.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n return;\n default:\n return;\n }\n }\n\n private openMenu(focusAction: TngMenuOpenFocusAction): void {\n const menu = this.syncMenuLink();\n if (menu === null) {\n return;\n }\n\n menu.open(focusAction);\n }\n\n private syncAriaExpanded(): void {\n const menu = this.menu();\n if (menu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n }\n\n private syncMenuLink(): TngMenu | null {\n const menu = this.menu();\n if (menu === null) {\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.linkedMenu = null;\n return null;\n }\n\n if (this.linkedMenu === menu) {\n return menu;\n }\n\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n\n this.linkedMenu = menu;\n menu.setTriggerElement(this.hostRef.nativeElement, () => this.syncAriaExpanded());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaExpanded();\n return menu;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menu/tng-menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n NgZone,\n output,\n} from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\ntype MenuItemElement = HTMLElement;\ntype ReadonlyMenuItemElement = Readonly<MenuItemElement>;\ntype TngMenuFocusAction = 'first' | 'last' | 'next' | 'prev';\ntype TngMenuOpenFocusAction = 'first' | 'last' | 'none';\ntype TngMenuSelectTrigger = 'keyboard' | 'pointer';\ntype TngMenuItemRole = 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';\ntype TngMenuKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key' | 'shiftKey' | 'target'>> &\n Readonly<{ preventDefault: () => void }>;\ntype TngMenuPointerEvent = Readonly<Pick<PointerEvent, 'target'>>;\ntype TngMenubarArrowHandler = (key: 'ArrowRight' | 'ArrowLeft') => void;\ntype TngMenubarTabHandler = (shiftKey: boolean) => boolean;\n\nexport type TngMenuSelectEvent = Readonly<{\n value: unknown;\n itemId: string;\n trigger: TngMenuSelectTrigger;\n}>;\n\nfunction getNextIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return 0;\n }\n\n return currentIndex + 1 >= total ? 0 : currentIndex + 1;\n}\n\nfunction getPrevIndex(currentIndex: number, total: number): number {\n if (currentIndex < 0) {\n return total - 1;\n }\n\n return currentIndex - 1 < 0 ? total - 1 : currentIndex - 1;\n}\n\nfunction resolveMenuFocusAction(key: string): TngMenuFocusAction | null {\n switch (key) {\n case 'ArrowDown':\n return 'next';\n case 'ArrowUp':\n return 'prev';\n case 'Home':\n return 'first';\n case 'End':\n return 'last';\n default:\n return null;\n }\n}\n\nfunction resolveFocusIndex(\n action: TngMenuFocusAction,\n currentIndex: number,\n total: number,\n loop: boolean,\n): number {\n switch (action) {\n case 'next':\n if (!loop && currentIndex >= total - 1) {\n return total - 1;\n }\n return getNextIndex(currentIndex, total);\n case 'prev':\n if (!loop) {\n if (currentIndex < 0) {\n return 0;\n }\n if (currentIndex <= 0) {\n return 0;\n }\n }\n return getPrevIndex(currentIndex, total);\n case 'first':\n return 0;\n case 'last':\n return total - 1;\n }\n}\n\nconst createMenuId = createTngIdFactory('tng-menu');\nconst createMenuItemId = createTngIdFactory('tng-menu-item');\nconst createMenuTriggerId = createTngIdFactory('tng-menu-trigger');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenu]',\n exportAs: 'tngMenu',\n})\nexport class TngMenu {\n private static openRootMenu: TngMenu | null = null;\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ngZone = inject(NgZone);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuId();\n private readonly itemsById = new Map<string, TngMenuItem>();\n private outsidePointerdownCleanup: (() => void) | null = null;\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n private menubarArrowHandler: TngMenubarArrowHandler | null = null;\n private menubarTabHandler: TngMenubarTabHandler | null = null;\n private restoreFocusOnOutsideClick = false;\n private triggerStateSync: (() => void) | null = null;\n private triggerElement: HTMLElement | null = null;\n private activeItemId: string | null = null;\n private parentMenu: TngMenu | null = null;\n private parentMenuItem: TngMenuItem | null = null;\n private openSubmenu: TngMenu | null = null;\n private openState = false;\n private typeaheadBuffer = '';\n\n readonly loop = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly closeOnSelect = input<boolean>(true);\n readonly dismissOnOutsideClick = input<boolean>(true);\n readonly dismissOnFocusout = input<boolean>(false);\n readonly tngMenuOpened = output<void>();\n readonly tngMenuClosed = output<void>();\n readonly tngMenuSelect = output<TngMenuSelectEvent>();\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menu' as const;\n\n @HostBinding('attr.id')\n readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';\n }\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.openState ? 'open' : 'closed';\n }\n\n @HostBinding('attr.hidden')\n protected get hidden(): '' | null {\n return this.openState ? null : '';\n }\n\n @HostBinding('attr.aria-activedescendant')\n protected get ariaActiveDescendant(): string | null {\n return this.activeItemId;\n }\n\n setTriggerElement(triggerElement: HTMLElement, triggerStateSync?: () => void): void {\n this.triggerElement = triggerElement;\n this.triggerStateSync = triggerStateSync ?? this.triggerStateSync;\n this.syncAriaLabelledby();\n }\n\n clearTriggerLink(triggerElement?: HTMLElement): void {\n if (triggerElement !== undefined && this.triggerElement !== triggerElement) {\n return;\n }\n\n this.triggerElement = null;\n this.triggerStateSync = null;\n this.menubarArrowHandler = null;\n this.menubarTabHandler = null;\n this.syncAriaLabelledby();\n }\n\n setRestoreFocusOnOutsideClick(restoreFocusOnOutsideClick: boolean): void {\n this.restoreFocusOnOutsideClick = restoreFocusOnOutsideClick;\n }\n\n setMenubarArrowHandler(menubarArrowHandler: TngMenubarArrowHandler | null): void {\n this.menubarArrowHandler = menubarArrowHandler;\n }\n\n setMenubarTabHandler(menubarTabHandler: TngMenubarTabHandler | null): void {\n this.menubarTabHandler = menubarTabHandler;\n }\n\n setParentMenu(parentMenu: TngMenu, parentMenuItem: TngMenuItem): void {\n this.parentMenu = parentMenu;\n this.parentMenuItem = parentMenuItem;\n }\n\n focusPanel(): void {\n this.hostRef.nativeElement.focus();\n }\n\n focusPanelAndMoveActiveItem(action: 'next' | 'prev'): void {\n if (!this.openState) {\n return;\n }\n\n this.moveActiveItem(action);\n this.hostRef.nativeElement.focus();\n this.changeDetectorRef.detectChanges();\n }\n\n isOpen(): boolean {\n return this.openState;\n }\n\n isDisabled(): boolean {\n return this.disabled();\n }\n\n isItemActive(itemId: string): boolean {\n return this.activeItemId === itemId;\n }\n\n registerItem(item: TngMenuItem): void {\n this.itemsById.set(item.getItemId(), item);\n }\n\n unregisterItem(item: TngMenuItem): void {\n const orderedItems = Array.from(this.itemsById.values());\n const itemIndex = orderedItems.findIndex((registeredItem) => registeredItem === item);\n\n if (this.itemsById.get(item.getItemId()) === item) {\n this.itemsById.delete(item.getItemId());\n }\n\n if (this.activeItemId === item.getItemId()) {\n this.activeItemId =\n itemIndex < 0\n ? this.resolveAdjacentEnabledItemId(item.getItemId())\n : this.resolveAdjacentEnabledItemIdFromRegisteredItems(orderedItems, itemIndex);\n }\n }\n\n onItemDisabledStateChange(item: TngMenuItem): void {\n if (!item.isDisabled() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n onItemNavigabilityStateChange(item: TngMenuItem): void {\n if (item.isNavigable() || this.activeItemId !== item.getItemId()) {\n return;\n }\n\n this.activeItemId = this.resolveAdjacentEnabledItemId(item.getItemId());\n }\n\n open(focusAction: TngMenuOpenFocusAction = 'none'): void {\n if (this.openState || this.disabled()) {\n return;\n }\n\n if (this.parentMenu === null) {\n if (TngMenu.openRootMenu !== null && TngMenu.openRootMenu !== this) {\n TngMenu.openRootMenu.close(false);\n }\n } else {\n this.parentMenu.openChildSubmenu(this);\n }\n\n this.openState = true;\n if (this.parentMenu === null) {\n TngMenu.openRootMenu = this;\n }\n\n if (focusAction === 'first') {\n this.moveActiveItem('next');\n } else if (focusAction === 'last') {\n this.moveActiveItem('prev');\n } else {\n this.activeItemId = null;\n }\n\n this.tngMenuOpened.emit();\n this.triggerStateSync?.();\n this.attachOutsidePointerdownListener();\n this.changeDetectorRef.detectChanges();\n this.hostRef.nativeElement.focus();\n }\n\n close(restoreFocus: boolean): void {\n if (!this.openState) {\n return;\n }\n\n if (this.openSubmenu !== null) {\n this.openSubmenu.close(false);\n this.openSubmenu = null;\n }\n\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.triggerStateSync?.();\n\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n\n this.tngMenuClosed.emit();\n if (restoreFocus) {\n this.triggerElement?.focus();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n const wasOpen = this.openState;\n this.openState = false;\n this.activeItemId = null;\n this.clearTypeaheadBuffer();\n this.detachOutsidePointerdownListener();\n this.openSubmenu = null;\n\n if (wasOpen) {\n if (this.parentMenu !== null) {\n this.parentMenu.notifySubmenuClosed(this);\n } else if (TngMenu.openRootMenu === this) {\n TngMenu.openRootMenu = null;\n }\n this.triggerStateSync?.();\n }\n\n this.clearTriggerLink();\n }\n\n requestSelect(item: TngMenuItem, trigger: TngMenuSelectTrigger): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n item.applySelectionState();\n this.activeItemId = item.getItemId();\n this.tngMenuSelect.emit({\n value: item.getValue(),\n itemId: item.getItemId(),\n trigger,\n });\n\n if (this.closeOnSelect()) {\n this.closeSelfAndAncestorMenus(false);\n }\n }\n\n setActiveItem(item: TngMenuItem): void {\n if (!this.openState || !item.isNavigable()) {\n return;\n }\n\n this.activeItemId = item.getItemId();\n this.syncOpenSubmenuWithActiveItem();\n this.changeDetectorRef.detectChanges();\n }\n\n setSelectedRadioItem(selectedItem: TngMenuItem): void {\n for (const item of this.itemsById.values()) {\n if (item.getRole() !== 'menuitemradio') {\n continue;\n }\n\n item.setCheckedState(item === selectedItem);\n }\n }\n\n openChildSubmenu(submenu: TngMenu): void {\n if (this.openSubmenu !== null && this.openSubmenu !== submenu) {\n this.openSubmenu.close(false);\n }\n\n this.openSubmenu = submenu;\n }\n\n notifySubmenuClosed(submenu: TngMenu): void {\n if (this.openSubmenu === submenu) {\n this.openSubmenu = null;\n }\n }\n\n private closeSelfAndAncestorMenus(restoreFocusAtRoot: boolean): void {\n let menuToClose: TngMenu | null = this;\n\n while (menuToClose !== null) {\n const nextAncestorMenu: TngMenu | null = menuToClose.parentMenu;\n const shouldRestoreFocus = nextAncestorMenu === null && restoreFocusAtRoot;\n menuToClose.close(shouldRestoreFocus);\n menuToClose = nextAncestorMenu;\n }\n }\n\n private getEnabledMenuItems(): readonly ReadonlyMenuItemElement[] {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n const enabledItems: ReadonlyMenuItemElement[] = [];\n\n for (const item of items) {\n if (this.isNavigableItemElement(item)) {\n enabledItems.push(item);\n }\n }\n\n return enabledItems;\n }\n\n private resolveAdjacentEnabledItemId(referenceItemId: string): string | null {\n const items = Array.from(this.hostRef.nativeElement.querySelectorAll<MenuItemElement>('[tngMenuItem]'));\n if (items.length === 0) {\n return null;\n }\n\n const referenceIndex = items.findIndex((item) => item.id === referenceItemId);\n if (referenceIndex < 0) {\n return this.getEnabledMenuItems()[0]?.id ?? null;\n }\n\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (this.isNavigableItemElement(candidate)) {\n return candidate.id;\n }\n }\n\n return null;\n }\n\n private resolveAdjacentEnabledItemIdFromRegisteredItems(\n items: readonly TngMenuItem[],\n referenceIndex: number,\n ): string | null {\n for (let index = referenceIndex + 1; index < items.length; index += 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n for (let index = referenceIndex - 1; index >= 0; index -= 1) {\n const candidate = items[index];\n if (candidate.isNavigable() && this.itemsById.get(candidate.getItemId()) === candidate) {\n return candidate.getItemId();\n }\n }\n\n return null;\n }\n\n private isNavigableItemElement(item: MenuItemElement): boolean {\n const registeredItem = this.itemsById.get(item.id);\n return registeredItem !== undefined && registeredItem.isNavigable();\n }\n\n private onDocumentPointerdown(event: TngMenuPointerEvent): void {\n if (!this.openState || !this.dismissOnOutsideClick()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (this.isTargetInsideOpenMenuTree(target)) {\n return;\n }\n\n this.close(this.restoreFocusOnOutsideClick);\n }\n\n private isTargetInsideOpenMenuTree(target: Node): boolean {\n if (this.hostRef.nativeElement.contains(target)) {\n return true;\n }\n\n if (this.triggerElement?.contains(target) === true) {\n return true;\n }\n\n return this.openSubmenu?.isTargetInsideOpenMenuTree(target) ?? false;\n }\n\n @HostListener('focusout', ['$event'])\n protected onFocusout(event: FocusEvent): void {\n if (!this.openState || !this.dismissOnFocusout()) {\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n if (relatedTarget instanceof Node && this.hostRef.nativeElement.contains(relatedTarget)) {\n return;\n }\n\n this.close(false);\n }\n\n private attachOutsidePointerdownListener(): void {\n this.detachOutsidePointerdownListener();\n\n if (!this.dismissOnOutsideClick()) {\n return;\n }\n\n const handler = (event: PointerEvent): void => {\n this.onDocumentPointerdown(event);\n };\n\n this.ngZone.runOutsideAngular(() => {\n document.addEventListener('pointerdown', handler);\n this.outsidePointerdownCleanup = () => {\n document.removeEventListener('pointerdown', handler);\n };\n });\n }\n\n private syncAriaLabelledby(): void {\n const triggerId = this.triggerElement?.id;\n\n if (triggerId === undefined || triggerId.length === 0) {\n this.hostRef.nativeElement.removeAttribute('aria-labelledby');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-labelledby', triggerId);\n }\n\n private detachOutsidePointerdownListener(): void {\n this.outsidePointerdownCleanup?.();\n this.outsidePointerdownCleanup = null;\n }\n\n private moveActiveItem(action: TngMenuFocusAction): void {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n this.activeItemId = null;\n return;\n }\n\n let currentIndex = -1;\n for (let index = 0; index < items.length; index += 1) {\n if (items[index].id === this.activeItemId) {\n currentIndex = index;\n break;\n }\n }\n\n const targetIndex = resolveFocusIndex(action, currentIndex, items.length, this.loop());\n this.activeItemId = items[targetIndex]?.id ?? null;\n this.syncOpenSubmenuWithActiveItem();\n }\n\n private syncOpenSubmenuWithActiveItem(): void {\n if (this.openSubmenu !== null && this.parentMenuItem?.getOwnedSubmenu() !== this.openSubmenu) {\n // no-op safeguard for submenu instances\n }\n\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (this.openSubmenu !== null && activeItem !== this.openSubmenu.parentMenuItem) {\n this.openSubmenu.close(false);\n }\n }\n\n private moveActiveItemByTypeahead(key: string): boolean {\n const items = this.getEnabledMenuItems();\n if (items.length === 0) {\n return false;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return false;\n }\n\n const repeatingSingleChar =\n this.typeaheadBuffer.length > 0 &&\n this.typeaheadBuffer.split('').every((char) => char === normalizedKey);\n\n let query = repeatingSingleChar ? normalizedKey : `${this.typeaheadBuffer}${normalizedKey}`;\n let match = this.findTypeaheadMatch(items, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findTypeaheadMatch(items, query, true);\n }\n\n if (match === null) {\n return false;\n }\n\n this.activeItemId = match.id;\n this.resetTypeaheadBuffer(query);\n return true;\n }\n\n private findTypeaheadMatch(\n items: readonly ReadonlyMenuItemElement[],\n query: string,\n cycleFromActiveItem: boolean,\n ): ReadonlyMenuItemElement | null {\n const currentIndex = items.findIndex((item) => item.id === this.activeItemId);\n const startIndex = cycleFromActiveItem && currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\n for (let offset = 0; offset < items.length; offset += 1) {\n const index = (startIndex + offset) % items.length;\n const item = items[index];\n const label = item.textContent?.trim().toLowerCase() ?? '';\n\n if (label.startsWith(query)) {\n return item;\n }\n }\n\n return null;\n }\n\n private resetTypeaheadBuffer(nextBuffer: string): void {\n this.typeaheadBuffer = nextBuffer;\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n }\n\n this.typeaheadResetHandle = setTimeout(() => {\n this.typeaheadBuffer = '';\n this.typeaheadResetHandle = null;\n }, TYPEAHEAD_RESET_MS);\n }\n\n private clearTypeaheadBuffer(): void {\n this.typeaheadBuffer = '';\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private isEventFromNestedMenu(event: TngMenuKeyboardEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const closestMenu = target.closest<HTMLElement>('[data-slot=\"menu\"]');\n return closestMenu !== null && closestMenu !== this.hostRef.nativeElement;\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isEventFromNestedMenu(event)) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n if (this.parentMenu !== null) {\n this.close(false);\n this.parentMenu.focusPanel();\n return;\n }\n this.close(true);\n return;\n }\n\n if (event.key === 'Tab') {\n if (this.parentMenu === null && this.menubarTabHandler !== null && this.menubarTabHandler(event.shiftKey)) {\n event.preventDefault();\n return;\n }\n\n this.close(false);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null && activeItem.getOwnedSubmenu() !== null) {\n event.preventDefault();\n activeItem.openOwnedSubmenu('first');\n } else if (this.parentMenu === null && this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowRight');\n }\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n if (this.parentMenu !== null) {\n event.preventDefault();\n this.close(false);\n this.parentMenu.focusPanel();\n } else if (this.menubarArrowHandler !== null) {\n event.preventDefault();\n this.menubarArrowHandler('ArrowLeft');\n }\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n const activeItem = this.activeItemId === null ? null : this.itemsById.get(this.activeItemId) ?? null;\n if (activeItem !== null) {\n event.preventDefault();\n this.requestSelect(activeItem, 'keyboard');\n }\n return;\n }\n\n const action = resolveMenuFocusAction(event.key);\n if (action === null) {\n if (event.key.length === 1 && this.moveActiveItemByTypeahead(event.key)) {\n event.preventDefault();\n }\n return;\n }\n event.preventDefault();\n this.moveActiveItem(action);\n }\n}\n\n@Directive({\n selector: '[tngMenuItem]',\n exportAs: 'tngMenuItem',\n})\nexport class TngMenuItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menu = inject(TngMenu, { optional: true, skipSelf: true });\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuItemId();\n private lastDisabledState = false;\n private lastNavigableState = true;\n private lastCheckedInput = false;\n private checkedOverride: boolean | null = null;\n\n readonly value = input<unknown>(undefined, {\n alias: 'tngMenuItemValue',\n });\n readonly itemRole = input<TngMenuItemRole>('menuitem', {\n alias: 'tngMenuItemRole',\n });\n readonly checked = input<boolean>(false, {\n alias: 'tngMenuItemChecked',\n });\n readonly submenu = input<TngMenu | null>(null, {\n alias: 'tngMenuItemSubmenu',\n });\n\n constructor() {\n this.lastDisabledState = this.isDisabled();\n this.lastNavigableState = this.isNavigable();\n this.menu?.registerItem(this);\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastCheckedInput = this.checked();\n this.syncOwnedSubmenuLink();\n this.syncSubmenuState();\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-item' as const;\n\n @HostBinding('attr.role')\n protected get role(): TngMenuItemRole {\n return this.itemRole();\n }\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected readonly tabIndex = -1;\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-checked')\n protected get ariaChecked(): 'true' | 'false' | null {\n if (this.itemRole() === 'menuitem') {\n return null;\n }\n\n return this.isChecked() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-active')\n protected get dataActive(): '' | null {\n return this.menu?.isItemActive(this.id) ? '' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.submenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.submenu()?.id ?? null;\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (this.shouldIgnoreNestedInteractiveClick(event)) {\n return;\n }\n\n if (this.submenu() !== null) {\n this.menu?.setActiveItem(this);\n this.openOwnedSubmenu('first');\n return;\n }\n\n this.select('pointer');\n }\n\n ngOnDestroy(): void {\n this.menu?.unregisterItem(this);\n }\n\n ngDoCheck(): void {\n const currentDisabledState = this.isDisabled();\n if (currentDisabledState !== this.lastDisabledState) {\n this.lastDisabledState = currentDisabledState;\n this.menu?.onItemDisabledStateChange(this);\n }\n\n const currentNavigableState = this.isNavigable();\n if (currentNavigableState !== this.lastNavigableState) {\n this.lastNavigableState = currentNavigableState;\n this.menu?.onItemNavigabilityStateChange(this);\n }\n\n const currentCheckedInput = this.checked();\n if (currentCheckedInput !== this.lastCheckedInput) {\n this.lastCheckedInput = currentCheckedInput;\n this.checkedOverride = null;\n }\n }\n\n getItemId(): string {\n return this.id;\n }\n\n getValue(): unknown {\n return this.value();\n }\n\n getOwnedSubmenu(): TngMenu | null {\n return this.submenu();\n }\n\n getRole(): TngMenuItemRole {\n return this.itemRole();\n }\n\n isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled');\n }\n\n isNavigable(): boolean {\n return !this.isDisabled() && !this.isHiddenOrInert();\n }\n\n select(trigger: TngMenuSelectTrigger): void {\n this.menu?.requestSelect(this, trigger);\n }\n\n isChecked(): boolean {\n return this.checkedOverride ?? this.checked();\n }\n\n setCheckedState(checked: boolean): void {\n this.checkedOverride = checked;\n }\n\n applySelectionState(): void {\n if (this.itemRole() === 'menuitemcheckbox') {\n this.checkedOverride = !this.isChecked();\n return;\n }\n\n if (this.itemRole() === 'menuitemradio') {\n this.menu?.setSelectedRadioItem(this);\n }\n }\n\n openOwnedSubmenu(focusAction: TngMenuOpenFocusAction): void {\n const submenu = this.submenu();\n if (submenu === null) {\n return;\n }\n\n this.syncOwnedSubmenuLink();\n submenu.open(focusAction);\n }\n\n private syncOwnedSubmenuLink(): void {\n const submenu = this.submenu();\n if (submenu === null || this.menu === null) {\n return;\n }\n\n this.syncHostId();\n submenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncSubmenuState());\n submenu.setRestoreFocusOnOutsideClick(false);\n submenu.setParentMenu(this.menu, this);\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private syncSubmenuState(): void {\n const submenu = this.submenu();\n if (submenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', submenu.isOpen() ? 'true' : 'false');\n }\n\n private shouldIgnoreNestedInteractiveClick(event: MouseEvent): boolean {\n const target = event.target;\n if (!(target instanceof Element)) {\n return false;\n }\n\n const host = this.hostRef.nativeElement;\n const interactiveTarget = target.closest(\n 'button, input, select, textarea, a[href], [role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]',\n );\n\n return interactiveTarget !== null && interactiveTarget !== host;\n }\n\n private isHiddenOrInert(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n inert?: boolean;\n };\n\n return element.hidden || Boolean(element.inert) || element.hasAttribute('hidden') || element.hasAttribute('inert');\n }\n}\n\n@Directive({\n selector: '[tngMenuSeparator]',\n exportAs: 'tngMenuSeparator',\n})\nexport class TngMenuSeparator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-separator' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'separator' as const;\n}\n\n@Directive({\n selector: '[tngMenuGroupLabel]',\n exportAs: 'tngMenuGroupLabel',\n})\nexport class TngMenuGroupLabel {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-group-label' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'presentation' as const;\n}\n\n@Directive({\n selector: '[tngMenuBackdrop]',\n exportAs: 'tngMenuBackdrop',\n})\nexport class TngMenuBackdrop {\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuBackdrop',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-backdrop' as const;\n\n @HostListener('click')\n protected onClick(): void {\n const menu = this.menu();\n if (menu?.isOpen()) {\n menu.close(false);\n }\n }\n}\n\n@Directive({\n selector: '[tngMenuTrigger]',\n exportAs: 'tngMenuTrigger',\n})\nexport class TngMenuTrigger {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createMenuTriggerId();\n private linkedMenu: TngMenu | null = null;\n\n readonly menu = input<TngMenu | null>(null, {\n alias: 'tngMenuTrigger',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menu-trigger' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.aria-haspopup')\n protected readonly ariaHaspopup = 'menu' as const;\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.menu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n this.syncMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n if (this.linkedMenu === null) {\n return;\n }\n\n const linkedMenu = this.linkedMenu;\n linkedMenu.clearTriggerLink(this.hostRef.nativeElement);\n\n if (linkedMenu.isOpen()) {\n linkedMenu.close(false);\n }\n\n this.linkedMenu = null;\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n if (menu === null || menu.isDisabled()) {\n return;\n }\n\n if (menu.isOpen()) {\n menu.close(true);\n return;\n }\n\n this.openMenu('none');\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: TngMenuKeyboardEvent): void {\n if (this.isDisabled()) {\n return;\n }\n\n const menu = this.syncMenuLink();\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('none');\n return;\n case 'ArrowDown':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('first');\n return;\n case 'ArrowUp':\n if (menu === null || menu.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.openMenu('last');\n return;\n case 'Escape':\n if (menu?.isOpen()) {\n event.preventDefault();\n menu.close(true);\n }\n return;\n default:\n return;\n }\n }\n\n private openMenu(focusAction: TngMenuOpenFocusAction): void {\n const menu = this.syncMenuLink();\n if (menu === null) {\n return;\n }\n\n menu.open(focusAction);\n }\n\n private syncAriaExpanded(): void {\n const menu = this.menu();\n if (menu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', menu.isOpen() ? 'true' : 'false');\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n\n private isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n }\n\n private syncMenuLink(): TngMenu | null {\n const menu = this.menu();\n if (menu === null) {\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.linkedMenu = null;\n return null;\n }\n\n if (this.linkedMenu === menu) {\n return menu;\n }\n\n this.linkedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n\n this.linkedMenu = menu;\n menu.setTriggerElement(this.hostRef.nativeElement, () => this.syncAriaExpanded());\n menu.setRestoreFocusOnOutsideClick(false);\n this.syncAriaExpanded();\n return menu;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menubar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAE3C,KAAK,kBAAkB,GAAG,WAAW,CAAC;AAItC,
|
|
1
|
+
{"version":3,"file":"tng-menubar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAE3C,KAAK,kBAAkB,GAAG,WAAW,CAAC;AAItC,qBAIa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,oBAAoB,CAA8C;IAE1E,QAAQ,CAAC,IAAI,+CAAwB;IAGrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IAGjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAG7C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAG,YAAY,CAAU;IAE3D,QAAQ,IAAI,SAAS,kBAAkB,EAAE;IAMzC,eAAe,IAAI,SAAS,kBAAkB,EAAE;IAIhD,KAAK,IAAI,OAAO;IAShB,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAcpC,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAQ7C,WAAW,IAAI,OAAO;IAItB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAIzC,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IA+BpF,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAe7C,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IAcnF,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAWxC,WAAW,IAAI,IAAI;IAOnB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,oBAAoB;yCAvKjB,UAAU;2CAAV,UAAU;CAmLtB;AAED,qBAIa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAC8C;IACzE,OAAO,CAAC,aAAa,CAAwB;IAE7C,QAAQ,CAAC,SAAS,sDAEf;IAGH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAG9C,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAmB;IAGxC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAM/B;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAE1C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAE1C;IAED,QAAQ,IAAI,IAAI;IAOhB,SAAS,IAAI,IAAI;IAajB,WAAW,IAAI,IAAI;IAKnB,SAAS,CAAC,OAAO,IAAI,IAAI;IAWzB,SAAS,CAAC,aAAa,IAAI,IAAI;IAS/B,SAAS,CAAC,YAAY,IAAI,IAAI;IAgB9B,SAAS,CAAC,OAAO,IAAI,IAAI;IAKzB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAkH/C,cAAc,IAAI,OAAO;IAIzB,YAAY,IAAI,OAAO,GAAG,IAAI;IAI9B,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IAS3D,cAAc,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI;IAS3C,SAAS,IAAI,IAAI;IAKjB,SAAS,IAAI,MAAM;IAInB,uBAAuB,CAAC,GAAG,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI;IAyC9D,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IA+B7B,OAAO,CAAC,UAAU;yCA/WP,cAAc;2CAAd,cAAc;CAsX1B"}
|
|
@@ -140,7 +140,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
140
140
|
args: [{
|
|
141
141
|
selector: '[tngMenubar]',
|
|
142
142
|
exportAs: 'tngMenubar',
|
|
143
|
-
standalone: true,
|
|
144
143
|
}]
|
|
145
144
|
}], propDecorators: { loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], dataSlot: [{
|
|
146
145
|
type: HostBinding,
|
|
@@ -438,7 +437,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
438
437
|
args: [{
|
|
439
438
|
selector: '[tngMenubarItem]',
|
|
440
439
|
exportAs: 'tngMenubarItem',
|
|
441
|
-
standalone: true,
|
|
442
440
|
}]
|
|
443
441
|
}], propDecorators: { ownedMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngMenubarMenu", required: false }] }], dataSlot: [{
|
|
444
442
|
type: HostBinding,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-menubar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\nimport { TngMenu } from '../menu/tng-menu';\n\ntype MenubarItemElement = HTMLElement;\nconst createMenubarItemId = createTngIdFactory('tng-menubar-item');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenubar]',\n exportAs: 'tngMenubar',\n standalone: true,\n})\nexport class TngMenubar {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private openItem: TngMenubarItem | null = null;\n private currentTabStopId: string | null = null;\n private typeaheadBuffer = '';\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n\n readonly loop = input<boolean>(true);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menubar' as const;\n\n @HostBinding('attr.aria-orientation')\n protected readonly ariaOrientation = 'horizontal' as const;\n\n getItems(): readonly MenubarItemElement[] {\n return Array.from(\n this.hostRef.nativeElement.querySelectorAll<MenubarItemElement>('[tngMenubarItem]'),\n );\n }\n\n getEnabledItems(): readonly MenubarItemElement[] {\n return this.getItems().filter((item) => item.getAttribute('aria-disabled') !== 'true');\n }\n\n isRtl(): boolean {\n const host = this.hostRef.nativeElement;\n const nearestDir =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement.getAttribute('dir');\n\n return nearestDir?.toLowerCase() === 'rtl';\n }\n\n getCurrentTabStopId(): string | null {\n const enabledItems = this.getEnabledItems();\n if (enabledItems.length === 0) {\n this.currentTabStopId = null;\n return null;\n }\n\n if (!enabledItems.some((item) => item.id === this.currentTabStopId)) {\n this.currentTabStopId = enabledItems[0]?.id ?? null;\n }\n\n return this.currentTabStopId;\n }\n\n setCurrentTabStop(item: TngMenubarItem): void {\n if (item.isDisabledItem()) {\n return;\n }\n\n this.currentTabStopId = item.getItemId();\n }\n\n hasOpenItem(): boolean {\n return this.openItem !== null;\n }\n\n isOpenItem(item: TngMenubarItem): boolean {\n return this.openItem === item;\n }\n\n findTypeaheadMatch(currentItem: HTMLElement, key: string): MenubarItemElement | null {\n const items = this.getEnabledItems();\n if (items.length === 0) {\n return null;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return null;\n }\n\n const repeatingSingleChar =\n this.typeaheadBuffer.length > 0 &&\n this.typeaheadBuffer.split('').every((char) => char === normalizedKey);\n\n let query = repeatingSingleChar ? normalizedKey : `${this.typeaheadBuffer}${normalizedKey}`;\n let match = this.findMatchingItem(items, currentItem, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findMatchingItem(items, currentItem, query, true);\n }\n\n if (match === null) {\n return null;\n }\n\n this.resetTypeaheadBuffer(query);\n return match;\n }\n\n requestToggleMenu(item: TngMenubarItem): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (ownedMenu.isOpen()) {\n item.closeOwnedMenu(false);\n item.focusSelf();\n return;\n }\n\n this.requestOpenMenu(item, 'none');\n }\n\n requestOpenMenu(item: TngMenubarItem, focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (this.openItem !== null && this.openItem !== item) {\n this.openItem.closeOwnedMenu(false);\n }\n\n this.openItem = item;\n item.openOwnedMenu(focusAction);\n }\n\n syncOpenItem(item: TngMenubarItem): void {\n if (item.getOwnedMenu()?.isOpen()) {\n this.openItem = item;\n return;\n }\n\n if (this.openItem === item) {\n this.openItem = null;\n }\n }\n\n ngOnDestroy(): void {\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private findMatchingItem(\n items: readonly MenubarItemElement[],\n currentItem: HTMLElement,\n query: string,\n cycleFromCurrentItem: boolean,\n ): MenubarItemElement | null {\n const currentIndex = items.indexOf(currentItem);\n const startIndex = cycleFromCurrentItem && currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\n for (let offset = 0; offset < items.length; offset += 1) {\n const index = (startIndex + offset) % items.length;\n const item = items[index];\n const label = item.textContent?.trim().toLowerCase() ?? '';\n\n if (label.startsWith(query)) {\n return item;\n }\n }\n\n return null;\n }\n\n private resetTypeaheadBuffer(nextBuffer: string): void {\n this.typeaheadBuffer = nextBuffer;\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n }\n\n this.typeaheadResetHandle = setTimeout(() => {\n this.typeaheadBuffer = '';\n this.typeaheadResetHandle = null;\n }, TYPEAHEAD_RESET_MS);\n }\n}\n\n@Directive({\n selector: '[tngMenubarItem]',\n exportAs: 'tngMenubarItem',\n standalone: true,\n})\nexport class TngMenubarItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menubar = inject(TngMenubar, { host: true });\n private readonly resolvedId =\n this.hostRef.nativeElement.getAttribute('id') ?? createMenubarItemId();\n private lastOwnedMenu: TngMenu | null = null;\n\n readonly ownedMenu = input<TngMenu | null>(null, {\n alias: 'tngMenubarMenu',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar-item' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menuitem' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n if (this.isDisabled()) {\n return '-1';\n }\n\n return this.menubar.getCurrentTabStopId() === this.id ? '0' : '-1';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.ownedMenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.ownedMenu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastOwnedMenu = this.ownedMenu();\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n const currentOwnedMenu = this.ownedMenu();\n if (currentOwnedMenu === this.lastOwnedMenu) {\n return;\n }\n\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.lastOwnedMenu = currentOwnedMenu;\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.ownedMenu() === null || this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n this.syncOwnedMenuLink();\n this.menubar.requestToggleMenu(this);\n }\n\n @HostListener('pointerdown')\n protected onPointerdown(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n }\n\n @HostListener('mouseenter')\n protected onMouseenter(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.menubar.setCurrentTabStop(this);\n\n if (!this.menubar.hasOpenItem() || this.menubar.isOpenItem(this) || this.ownedMenu() === null) {\n return;\n }\n\n this.syncOwnedMenuLink();\n this.menubar.requestOpenMenu(this, 'none');\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.menubar.setCurrentTabStop(this);\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n const ownedMenu = this.ownedMenu();\n if (!this.isDisabled() && ownedMenu?.isOpen() && event.key === 'Escape') {\n event.preventDefault();\n this.closeOwnedMenu(true);\n return;\n }\n\n if (\n !this.isDisabled() &&\n ownedMenu !== null &&\n (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown' || event.key === 'ArrowUp')\n ) {\n event.preventDefault();\n this.syncOwnedMenuLink();\n\n if (ownedMenu.isOpen() && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n ownedMenu.focusPanelAndMoveActiveItem(event.key === 'ArrowDown' ? 'next' : 'prev');\n return;\n }\n\n this.menubar.requestOpenMenu(this, event.key === 'ArrowDown' ? 'first' : event.key === 'ArrowUp' ? 'last' : 'none');\n return;\n }\n\n if (event.key === 'Tab') {\n if (ownedMenu?.isOpen()) {\n if (this.handleTabFromOpenMenu(event.shiftKey)) {\n event.preventDefault();\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const targetIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined) {\n return;\n }\n\n event.preventDefault();\n target.focus();\n return;\n }\n\n if (ownedMenu?.isOpen() && (event.key === 'ArrowRight' || event.key === 'ArrowLeft')) {\n event.preventDefault();\n this.handleArrowFromOpenMenu(event.key);\n return;\n }\n\n if (\n event.key !== 'ArrowRight' &&\n event.key !== 'ArrowLeft' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n if (event.key.length === 1 && !this.isDisabled()) {\n const match = this.menubar.findTypeaheadMatch(this.hostRef.nativeElement, event.key);\n if (match !== null) {\n event.preventDefault();\n match.focus();\n }\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'Home') {\n items[0]?.focus();\n return;\n }\n\n if (event.key === 'End') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const loop = this.menubar.loop();\n const moveToNext =\n event.key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n items[targetIndex]?.focus();\n }\n\n isDisabledItem(): boolean {\n return this.isDisabled();\n }\n\n getOwnedMenu(): TngMenu | null {\n return this.ownedMenu();\n }\n\n openOwnedMenu(focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.open(focusAction);\n }\n\n closeOwnedMenu(restoreFocus: boolean): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.close(restoreFocus);\n }\n\n focusSelf(): void {\n this.menubar.setCurrentTabStop(this);\n this.hostRef.nativeElement.focus();\n }\n\n getItemId(): string {\n return this.id;\n }\n\n handleArrowFromOpenMenu(key: 'ArrowRight' | 'ArrowLeft'): void {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const moveToNext =\n key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const loop = this.menubar.loop();\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n const target = items[targetIndex];\n if (target === undefined || target === current) {\n return;\n }\n\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n if (!targetOwnsMenu) {\n this.closeOwnedMenu(false);\n target.focus();\n return;\n }\n\n target.focus();\n target.click();\n }\n\n private isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled');\n }\n\n private syncOwnedMenuLink(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n this.syncHostId();\n ownedMenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncMenuState());\n ownedMenu.setRestoreFocusOnOutsideClick(true);\n ownedMenu.setMenubarArrowHandler((key) => this.handleArrowFromOpenMenu(key));\n ownedMenu.setMenubarTabHandler((shiftKey) => this.handleTabFromOpenMenu(shiftKey));\n }\n\n private syncAriaExpanded(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', ownedMenu.isOpen() ? 'true' : 'false');\n }\n\n private syncMenuState(): void {\n this.syncAriaExpanded();\n this.menubar.syncOpenItem(this);\n }\n\n private handleTabFromOpenMenu(shiftKey: boolean): boolean {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return false;\n }\n\n const targetIndex = shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined || target === current) {\n this.closeOwnedMenu(false);\n return false;\n }\n\n const targetDirective = (target as HTMLElement & { click(): void });\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n\n if (targetOwnsMenu) {\n target.focus();\n targetDirective.click();\n return true;\n }\n\n this.closeOwnedMenu(false);\n target.focus();\n return true;\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-menubar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/menubar/tng-menubar.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { createTngIdFactory } from '@tailng-ui/cdk';\n\nimport { TngMenu } from '../menu/tng-menu';\n\ntype MenubarItemElement = HTMLElement;\nconst createMenubarItemId = createTngIdFactory('tng-menubar-item');\nconst TYPEAHEAD_RESET_MS = 500;\n\n@Directive({\n selector: '[tngMenubar]',\n exportAs: 'tngMenubar',\n})\nexport class TngMenubar {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private openItem: TngMenubarItem | null = null;\n private currentTabStopId: string | null = null;\n private typeaheadBuffer = '';\n private typeaheadResetHandle: ReturnType<typeof setTimeout> | null = null;\n\n readonly loop = input<boolean>(true);\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menubar' as const;\n\n @HostBinding('attr.aria-orientation')\n protected readonly ariaOrientation = 'horizontal' as const;\n\n getItems(): readonly MenubarItemElement[] {\n return Array.from(\n this.hostRef.nativeElement.querySelectorAll<MenubarItemElement>('[tngMenubarItem]'),\n );\n }\n\n getEnabledItems(): readonly MenubarItemElement[] {\n return this.getItems().filter((item) => item.getAttribute('aria-disabled') !== 'true');\n }\n\n isRtl(): boolean {\n const host = this.hostRef.nativeElement;\n const nearestDir =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement.getAttribute('dir');\n\n return nearestDir?.toLowerCase() === 'rtl';\n }\n\n getCurrentTabStopId(): string | null {\n const enabledItems = this.getEnabledItems();\n if (enabledItems.length === 0) {\n this.currentTabStopId = null;\n return null;\n }\n\n if (!enabledItems.some((item) => item.id === this.currentTabStopId)) {\n this.currentTabStopId = enabledItems[0]?.id ?? null;\n }\n\n return this.currentTabStopId;\n }\n\n setCurrentTabStop(item: TngMenubarItem): void {\n if (item.isDisabledItem()) {\n return;\n }\n\n this.currentTabStopId = item.getItemId();\n }\n\n hasOpenItem(): boolean {\n return this.openItem !== null;\n }\n\n isOpenItem(item: TngMenubarItem): boolean {\n return this.openItem === item;\n }\n\n findTypeaheadMatch(currentItem: HTMLElement, key: string): MenubarItemElement | null {\n const items = this.getEnabledItems();\n if (items.length === 0) {\n return null;\n }\n\n const normalizedKey = key.trim().toLowerCase();\n if (normalizedKey.length !== 1) {\n return null;\n }\n\n const repeatingSingleChar =\n this.typeaheadBuffer.length > 0 &&\n this.typeaheadBuffer.split('').every((char) => char === normalizedKey);\n\n let query = repeatingSingleChar ? normalizedKey : `${this.typeaheadBuffer}${normalizedKey}`;\n let match = this.findMatchingItem(items, currentItem, query, repeatingSingleChar);\n\n if (match === null && query !== normalizedKey) {\n query = normalizedKey;\n match = this.findMatchingItem(items, currentItem, query, true);\n }\n\n if (match === null) {\n return null;\n }\n\n this.resetTypeaheadBuffer(query);\n return match;\n }\n\n requestToggleMenu(item: TngMenubarItem): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (ownedMenu.isOpen()) {\n item.closeOwnedMenu(false);\n item.focusSelf();\n return;\n }\n\n this.requestOpenMenu(item, 'none');\n }\n\n requestOpenMenu(item: TngMenubarItem, focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = item.getOwnedMenu();\n if (ownedMenu === null || item.isDisabledItem()) {\n return;\n }\n\n if (this.openItem !== null && this.openItem !== item) {\n this.openItem.closeOwnedMenu(false);\n }\n\n this.openItem = item;\n item.openOwnedMenu(focusAction);\n }\n\n syncOpenItem(item: TngMenubarItem): void {\n if (item.getOwnedMenu()?.isOpen()) {\n this.openItem = item;\n return;\n }\n\n if (this.openItem === item) {\n this.openItem = null;\n }\n }\n\n ngOnDestroy(): void {\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n this.typeaheadResetHandle = null;\n }\n }\n\n private findMatchingItem(\n items: readonly MenubarItemElement[],\n currentItem: HTMLElement,\n query: string,\n cycleFromCurrentItem: boolean,\n ): MenubarItemElement | null {\n const currentIndex = items.indexOf(currentItem);\n const startIndex = cycleFromCurrentItem && currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\n for (let offset = 0; offset < items.length; offset += 1) {\n const index = (startIndex + offset) % items.length;\n const item = items[index];\n const label = item.textContent?.trim().toLowerCase() ?? '';\n\n if (label.startsWith(query)) {\n return item;\n }\n }\n\n return null;\n }\n\n private resetTypeaheadBuffer(nextBuffer: string): void {\n this.typeaheadBuffer = nextBuffer;\n\n if (this.typeaheadResetHandle !== null) {\n clearTimeout(this.typeaheadResetHandle);\n }\n\n this.typeaheadResetHandle = setTimeout(() => {\n this.typeaheadBuffer = '';\n this.typeaheadResetHandle = null;\n }, TYPEAHEAD_RESET_MS);\n }\n}\n\n@Directive({\n selector: '[tngMenubarItem]',\n exportAs: 'tngMenubarItem',\n})\nexport class TngMenubarItem {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly menubar = inject(TngMenubar, { host: true });\n private readonly resolvedId =\n this.hostRef.nativeElement.getAttribute('id') ?? createMenubarItemId();\n private lastOwnedMenu: TngMenu | null = null;\n\n readonly ownedMenu = input<TngMenu | null>(null, {\n alias: 'tngMenubarMenu',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'menubar-item' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'menuitem' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n if (this.isDisabled()) {\n return '-1';\n }\n\n return this.menubar.getCurrentTabStopId() === this.id ? '0' : '-1';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.isDisabled() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHaspopup(): 'menu' | null {\n return this.ownedMenu() === null ? null : 'menu';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControls(): string | null {\n return this.ownedMenu()?.id ?? null;\n }\n\n ngOnInit(): void {\n this.syncHostId();\n this.lastOwnedMenu = this.ownedMenu();\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngDoCheck(): void {\n this.syncHostId();\n const currentOwnedMenu = this.ownedMenu();\n if (currentOwnedMenu === this.lastOwnedMenu) {\n return;\n }\n\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n this.lastOwnedMenu = currentOwnedMenu;\n this.syncOwnedMenuLink();\n this.syncAriaExpanded();\n }\n\n ngOnDestroy(): void {\n this.lastOwnedMenu?.clearTriggerLink(this.hostRef.nativeElement);\n }\n\n @HostListener('click')\n protected onClick(): void {\n if (this.ownedMenu() === null || this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n this.syncOwnedMenuLink();\n this.menubar.requestToggleMenu(this);\n }\n\n @HostListener('pointerdown')\n protected onPointerdown(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.focusSelf();\n }\n\n @HostListener('mouseenter')\n protected onMouseenter(): void {\n if (this.isDisabled()) {\n return;\n }\n\n this.menubar.setCurrentTabStop(this);\n\n if (!this.menubar.hasOpenItem() || this.menubar.isOpenItem(this) || this.ownedMenu() === null) {\n return;\n }\n\n this.syncOwnedMenuLink();\n this.menubar.requestOpenMenu(this, 'none');\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.menubar.setCurrentTabStop(this);\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n const ownedMenu = this.ownedMenu();\n if (!this.isDisabled() && ownedMenu?.isOpen() && event.key === 'Escape') {\n event.preventDefault();\n this.closeOwnedMenu(true);\n return;\n }\n\n if (\n !this.isDisabled() &&\n ownedMenu !== null &&\n (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown' || event.key === 'ArrowUp')\n ) {\n event.preventDefault();\n this.syncOwnedMenuLink();\n\n if (ownedMenu.isOpen() && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n ownedMenu.focusPanelAndMoveActiveItem(event.key === 'ArrowDown' ? 'next' : 'prev');\n return;\n }\n\n this.menubar.requestOpenMenu(this, event.key === 'ArrowDown' ? 'first' : event.key === 'ArrowUp' ? 'last' : 'none');\n return;\n }\n\n if (event.key === 'Tab') {\n if (ownedMenu?.isOpen()) {\n if (this.handleTabFromOpenMenu(event.shiftKey)) {\n event.preventDefault();\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const targetIndex = event.shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined) {\n return;\n }\n\n event.preventDefault();\n target.focus();\n return;\n }\n\n if (ownedMenu?.isOpen() && (event.key === 'ArrowRight' || event.key === 'ArrowLeft')) {\n event.preventDefault();\n this.handleArrowFromOpenMenu(event.key);\n return;\n }\n\n if (\n event.key !== 'ArrowRight' &&\n event.key !== 'ArrowLeft' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n if (event.key.length === 1 && !this.isDisabled()) {\n const match = this.menubar.findTypeaheadMatch(this.hostRef.nativeElement, event.key);\n if (match !== null) {\n event.preventDefault();\n match.focus();\n }\n }\n return;\n }\n\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'Home') {\n items[0]?.focus();\n return;\n }\n\n if (event.key === 'End') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const loop = this.menubar.loop();\n const moveToNext =\n event.key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n items[targetIndex]?.focus();\n }\n\n isDisabledItem(): boolean {\n return this.isDisabled();\n }\n\n getOwnedMenu(): TngMenu | null {\n return this.ownedMenu();\n }\n\n openOwnedMenu(focusAction: 'none' | 'first' | 'last'): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.open(focusAction);\n }\n\n closeOwnedMenu(restoreFocus: boolean): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n ownedMenu.close(restoreFocus);\n }\n\n focusSelf(): void {\n this.menubar.setCurrentTabStop(this);\n this.hostRef.nativeElement.focus();\n }\n\n getItemId(): string {\n return this.id;\n }\n\n handleArrowFromOpenMenu(key: 'ArrowRight' | 'ArrowLeft'): void {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return;\n }\n\n const moveToNext =\n key === (this.menubar.isRtl() ? 'ArrowLeft' : 'ArrowRight');\n const loop = this.menubar.loop();\n const targetIndex =\n moveToNext\n ? currentIndex + 1 >= items.length\n ? loop\n ? 0\n : items.length - 1\n : currentIndex + 1\n : currentIndex - 1 < 0\n ? loop\n ? items.length - 1\n : 0\n : currentIndex - 1;\n\n const target = items[targetIndex];\n if (target === undefined || target === current) {\n return;\n }\n\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n if (!targetOwnsMenu) {\n this.closeOwnedMenu(false);\n target.focus();\n return;\n }\n\n target.focus();\n target.click();\n }\n\n private isDisabled(): boolean {\n const element = this.hostRef.nativeElement as HTMLElement & {\n disabled?: boolean;\n };\n\n return element.disabled || element.hasAttribute('disabled');\n }\n\n private syncOwnedMenuLink(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n return;\n }\n\n this.syncHostId();\n ownedMenu.setTriggerElement(this.hostRef.nativeElement, () => this.syncMenuState());\n ownedMenu.setRestoreFocusOnOutsideClick(true);\n ownedMenu.setMenubarArrowHandler((key) => this.handleArrowFromOpenMenu(key));\n ownedMenu.setMenubarTabHandler((shiftKey) => this.handleTabFromOpenMenu(shiftKey));\n }\n\n private syncAriaExpanded(): void {\n const ownedMenu = this.ownedMenu();\n if (ownedMenu === null) {\n this.hostRef.nativeElement.removeAttribute('aria-expanded');\n return;\n }\n\n this.hostRef.nativeElement.setAttribute('aria-expanded', ownedMenu.isOpen() ? 'true' : 'false');\n }\n\n private syncMenuState(): void {\n this.syncAriaExpanded();\n this.menubar.syncOpenItem(this);\n }\n\n private handleTabFromOpenMenu(shiftKey: boolean): boolean {\n const items = this.menubar.getEnabledItems();\n const current = this.hostRef.nativeElement;\n const currentIndex = items.indexOf(current);\n\n if (currentIndex < 0 || items.length === 0) {\n return false;\n }\n\n const targetIndex = shiftKey ? currentIndex - 1 : currentIndex + 1;\n const target = items[targetIndex];\n\n if (target === undefined || target === current) {\n this.closeOwnedMenu(false);\n return false;\n }\n\n const targetDirective = (target as HTMLElement & { click(): void });\n const targetOwnsMenu = target.getAttribute('aria-haspopup') === 'menu';\n\n if (targetOwnsMenu) {\n target.focus();\n targetDirective.click();\n return true;\n }\n\n this.closeOwnedMenu(false);\n target.focus();\n return true;\n }\n\n private syncHostId(): void {\n if (this.hostRef.nativeElement.id === this.id) {\n return;\n }\n\n this.hostRef.nativeElement.id = this.id;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-navigation-menu.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"tng-navigation-menu.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":";AAEA,qBAIa,iBAAiB;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,iBAAiB,CAAU;yCAF9C,iBAAiB;2CAAjB,iBAAiB;CAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-navigation-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-navigation-menu.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/navigation-menu/tng-navigation-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,iBAAiB;IAET,QAAQ,GAAG,iBAA0B,CAAC;uGAF9C,iBAAiB;2FAAjB,iBAAiB;;2FAAjB,iBAAiB;kBAJ7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,mBAAmB;iBAC9B;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngNavigationMenu]',\n exportAs: 'tngNavigationMenu',\n})\nexport class TngNavigationMenu {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'navigation-menu' as const;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tabs.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/tabs/tng-tabs.ts"],"names":[],"mappings":";AAWA,KAAK,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAC/C,KAAK,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAC;AACpD,KAAK,qBAAqB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC/C,KAAK,wBAAwB,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;AAEtD,KAAK,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;AACnE,KAAK,uBAAuB,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC,CAAC;AA+HH,
|
|
1
|
+
{"version":3,"file":"tng-tabs.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/navigation/tabs/tng-tabs.ts"],"names":[],"mappings":"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"}
|