@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-drawer.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/drawer/tng-drawer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;;AAE7E,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;AAC3E,MAAM,cAAc,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAExD,MAAM,kBAAkB,GAAG;IACzB,SAAS;IACT,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,iCAAiC;IACjC,0BAA0B;CAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAkBZ,MAAM,OAAO,kBAAkB;IACZ,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,UAAU,GACzB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,uBAAuB,EAAE,CAAC;IAC5D,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IAC/B,eAAe,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,iBAAiB,GAAG,uBAAuB,CAAC;QAC3D,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;QAC1C,iBAAiB,EAAE,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC9B,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;YAC/C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,IAAI,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEM,WAAW,GAAG,KAAK,CAC1B,MAAM,wDACJ,SAAS,EAAE,yBAAyB,GACvC,CAAC;IACO,iBAAiB,GAAG,KAAK,CAA+C,IAAI,8DACnF,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,OAAO,GAAG,KAAK,CAA+C,IAAI,oDACzE,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,UAAU,GAAG,KAAK,CACzB,MAAM,uDACJ,SAAS,EAAE,yBAAyB,GACvC,CAAC;IACO,GAAG,GAAG,KAAK,CAAqE,MAAM,gDAC7F,SAAS,EAAE,uBAAuB,GAClC,CAAC;IAGgB,QAAQ,GAAG,kBAA2B,CAAC;IAGjD,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAE9B,IACc,gBAAgB;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IACc,mBAAmB;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,MAAiB;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,gBAAgB,CAAC,MAAiB;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,eAAe,CAAC,OAAyB;QACvC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,iBAAiB,CAAC,OAAyB;QACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,MAAmB;QAChC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB;QACd,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,mBAAmB,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,CAAc,OAAO,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,gBAAgB,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,QAA2B;QACrC,OAAO,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,oBAAoB,CAAC,MAAiB;QACpC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,iBAAiB,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC;IACrC,CAAC;IAED,gBAAgB,CAAC,MAAiB;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;IACzE,CAAC;IAED,mBAAmB,CAAC,MAAiB;QACnC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,gBAAgB,KAAK,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9D,SAAS;YACX,CAAC;YAED,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,cAAc;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IAEO,kBAAkB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACzF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEO,qBAAqB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACxF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAExC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,UAAU,IAAI,KAAK,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,WAAW,IAAI,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;uGAnNU,kBAAkB;2FAAlB,kBAAkB;;2FAAlB,kBAAkB;kBAL9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE,oBAAoB;oBAC9B,UAAU,EAAE,IAAI;iBACjB;;sBA2CE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,SAAS;;sBAGrB,WAAW;uBAAC,yBAAyB;;sBAKrC,WAAW;uBAAC,4BAA4B;;sBAKxC,WAAW;uBAAC,qBAAqB;;AAiKpC,MAAM,OAAO,SAAS;IACH,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,SAAS,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;IACxF,eAAe,GAAuB,IAAI,CAAC;IAC3C,2BAA2B,GAA2C,IAAI,CAAC;IAC3E,yBAAyB,GAA2C,IAAI,CAAC;IACzE,qBAAqB,GAA4C,IAAI,CAAC;IACtE,uBAAuB,GAAyC,IAAI,CAAC;IACrE,gBAAgB,GAAwC,IAAI,CAAC;IAC7D,SAAS,GAAG,KAAK,CAAC;IAClB,iBAAiB,GAAsB,OAAO,CAAC;IAC/C,aAAa,GAAkB,SAAS,CAAC;IACzC,kBAAkB,GAAuB,IAAI,CAAC;IAC9C,oBAAoB,GAAuB,IAAI,CAAC;IAChD,WAAW,GAAkB,IAAI,CAAC;IAClC,UAAU,GAAkB,IAAI,CAAC;IACjC,WAAW,GAAkB,IAAI,CAAC;IAClC,UAAU,GAAkB,IAAI,CAAC;IAEhC,WAAW,GAAG,KAAK,CAA2D,SAAS,wDAC9F,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,6BAA6B,GACxC,CAAC;IACM,aAAa,GAAG,KAAK,CAA+C,KAAK,0DAChF,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,IAAI,GAAG,KAAK,CAA2D,SAAS,iDACvF,SAAS,EAAE,kBAAkB,GAC7B,CAAC;IACM,QAAQ,GAAG,KAAK,CAAmE,OAAO,qDACjG,SAAS,EAAE,sBAAsB,GACjC,CAAC;IACM,QAAQ,GAAG,KAAK,CAA+C,KAAK,qDAC3E,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,QAAQ,GAAG,KAAK,CACvB,MAAM,qDACJ,SAAS,EAAE,yBAAyB,GACvC,CAAC;IACO,wBAAwB,GAAG,KAAK,CACvC,SAAS,qEAEP,KAAK,EAAE,qBAAqB;QAC5B,SAAS,EAAE,6BAA6B,GAE3C,CAAC;IACO,aAAa,GAAG,KAAK,CAA+C,IAAI,0DAC/E,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,YAAY,GAAG,KAAK,CAA+C,IAAI,yDAC9E,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,SAAS,GAAG,KAAK,CACxB,QAAQ,sDACN,SAAS,EAAE,uBAAuB,GACrC,CAAC;IACO,SAAS,GAAG,KAAK,CACxB,MAAM,sDACJ,SAAS,EAAE,yBAAyB,GACvC,CAAC;IACO,YAAY,GAAG,KAAK,CAC3B,MAAM,yDACJ,SAAS,EAAE,yBAAyB,GACvC,CAAC;IACO,oBAAoB,GAAG,KAAK,CACnC,SAAS,iEAEP,KAAK,EAAE,iBAAiB;QACxB,SAAS,EAAE,6BAA6B,GAE3C,CAAC;IACO,UAAU,GAAG,KAAK,CAA+C,KAAK,uDAC7E,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,IAAI,GAAG,KAAK,CAA2D,YAAY,iDAC1F,SAAS,EAAE,kBAAkB,GAC7B,CAAC;IACM,eAAe,GAAG,KAAK,CAA+C,KAAK,4DAClF,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,WAAW,GAAG,KAAK,CAA6C,CAAC,wDACxE,SAAS,EAAE,oBAAoB,GAC/B,CAAC;IACM,cAAc,GAAG,KAAK,CAA6C,CAAC,2DAC3E,SAAS,EAAE,oBAAoB,GAC/B,CAAC;IACM,YAAY,GAAG,KAAK,CAA+C,KAAK,yDAC/E,SAAS,EAAE,qBAAqB,GAChC,CAAC;IACM,YAAY,GAAG,MAAM,EAAW,CAAC;IACjC,eAAe,GAAG,MAAM,EAAQ,CAAC;IACjC,eAAe,GAAG,MAAM,EAAQ,CAAC;IACjC,SAAS,GAAG,MAAM,EAAQ,CAAC;IAC3B,UAAU,GAAG,MAAM,EAAQ,CAAC;IAC5B,aAAa,GAAG,MAAM,EAAQ,CAAC;IAC/B,cAAc,GAAG,MAAM,EAAqB,CAAC;IAEtD,QAAQ;QACN,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAEzD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC;gBAChB,gBAAgB,EAAE,KAAK;gBACvB,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,2BAA2B;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;IAC5C,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,sBAAsB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC;IACnC,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACrD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,uBAAuB,CAAC,MAA0B;QAChD,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;IACrC,CAAC;IAED,qBAAqB,CAAC,MAA0B;QAC9C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAGS,eAAe,CAAC,KAAY;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAGS,iBAAiB,CAAC,KAAmB;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;IAClC,CAAC;IAGS,iBAAiB,CAAC,KAAmB;QAC7C,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;IAClC,CAAC;IAGS,eAAe;QACvB,IACE,IAAI,CAAC,WAAW,KAAK,IAAI;YACzB,IAAI,CAAC,UAAU,KAAK,IAAI;YACxB,IAAI,CAAC,WAAW,KAAK,IAAI;YACzB,IAAI,CAAC,UAAU,KAAK,IAAI,EACxB,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,WAAW,GACf,mBAAmB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAGkB,QAAQ,GAAG,QAAiB,CAAC;IAG7B,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IAExC,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACrE,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IACc,SAAS;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,IACc,qBAAqB;QACjC,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,IACc,eAAe;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,IAAI,CAAC;IACpC,CAAC;IAED,IACc,oBAAoB;QAChC,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,IACc,UAAU;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IACc,SAAS;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,IACc,QAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;IAChD,CAAC;IAED,IACc,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,IACc,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,MAAM,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACc,UAAU;QACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,OAAO,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC;gBACf,gBAAgB,EAAE,KAAK;gBACvB,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC;YAChB,gBAAgB,EAAE,KAAK;YACvB,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,eAAe,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAEO,cAAc;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,WAAW,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAEO,gBAAgB,CAAC,QAAiB,EAAE,MAA2B,EAAE,MAA4B;QACnG,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC;YAC3D,IAAI,MAAM,KAAK,UAAU,IAAI,sBAAsB,KAAK,QAAQ,EAAE,CAAC;gBACjE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC;gBACf,gBAAgB,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU;gBAC/D,aAAa,EAAE,MAAM,KAAK,SAAS;gBACnC,MAAM;aACP,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC;YAChB,gBAAgB,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU;YAC/D,aAAa,EAAE,MAAM,KAAK,SAAS;YACnC,YAAY,EAAE,MAAM,KAAK,KAAK;YAC9B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,OAIlB;QACA,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;QAEvC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,OAKnB;QACA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;QAEvC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,aAAa,YAAY,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;IACpC,CAAC;IAEO,cAAc;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,cAAc,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAEO,oBAAoB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,kBAAkB,CAAC,CAAC,CAAC;QACtF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1G,CAAC;IAEO,cAAc,CAAC,UAAwC;QAC7D,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;YAC/B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAC9B,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEO,iBAAiB,CAAC,UAAwC,EAAE,YAAqB;QACvF,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;QAEnC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;YAC1C,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC3C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,yBAAyB,GAAG,CAAC,KAAmB,EAAQ,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACtG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAoB,EAAQ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC/F,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;YAC1F,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;QAChG,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACtD,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7C,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC9C,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC7C,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,2BAA2B,GAAG,CAAC,KAAmB,EAAQ,EAAE;YAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAE1B,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;YACzD,CAAC;YAED,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE3E,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,2BAA2B,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1F,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;IACxE,CAAC;IAEO,0BAA0B;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACnD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC;IACnC,CAAC;IAEO,gBAAgB;QACtB,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;IACzE,CAAC;IAEO,yBAAyB,CAAC,KAAmB;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;YAC1D,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,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAEO,qBAAqB,CAAC,KAAoB;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAoB;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;QACtD,MAAM,YAAY,GAAG,aAAa,YAAY,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElG,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ;YAC9B,CAAC,CAAC,YAAY,IAAI,CAAC;gBACjB,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACtB,CAAC,CAAC,YAAY,GAAG,CAAC;YACpB,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBACxD,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;QAEvB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IAChC,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAEO,sBAAsB,CAAC,KAAmB,EAAE,MAAY;QAC9D,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;QAC9C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC;QACzC,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAChF,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,IAAI,cAAc,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAEnF,OAAO,mBAAmB,IAAI,qBAAqB,CAAC;IACtD,CAAC;uGAz1BU,SAAS;2FAAT,SAAS;;2FAAT,SAAS;kBALrB,SAAS;mBAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,QAAQ,EAAE,WAAW;oBACrB,UAAU,EAAE,IAAI;iBACjB;;sBA6NE,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBASxC,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBAYtC,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBAUtC,YAAY;uBAAC,WAAW;;sBA0BxB,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,SAAS;;sBAGrB,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,eAAe;;sBAK3B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,8BAA8B;;sBAK1C,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,wBAAwB;;sBAKpC,WAAW;uBAAC,6BAA6B;;sBAKzC,WAAW;uBAAC,aAAa;;sBAKzB,WAAW;uBAAC,iBAAiB;;sBAS7B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,WAAW;;sBASvB,WAAW;uBAAC,cAAc;;sBAS1B,WAAW;uBAAC,YAAY;;sBASxB,WAAW;uBAAC,aAAa;;AAie5B,MAAM,OAAO,gBAAgB;IACV,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,SAAS,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAExF,QAAQ;QACN,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAGkB,QAAQ,GAAG,gBAAyB,CAAC;IAExD,IACc,eAAe;QAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,IAAI,CAAC;IACpC,CAAC;IAED,IACc,oBAAoB;QAChC,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,YAAY,CAAC,UAAkB,EAAE,WAAmB;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1F,CAAC;IAED,QAAQ,CAAC,SAAkB;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACxC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC;gBACF,IAA0C,CAAC,KAAK,GAAG,IAAI,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,oDAAoD;YACtD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC;YACF,IAA0C,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC;uGAtDU,gBAAgB;2FAAhB,gBAAgB;;2FAAhB,gBAAgB;kBAL5B,SAAS;mBAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,kBAAkB;oBAC5B,UAAU,EAAE,IAAI;iBACjB;;sBAaE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,wBAAwB;;sBAKpC,WAAW;uBAAC,6BAA6B;;AAgD5C,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;uGAA9C,mBAAmB;2FAAnB,mBAAmB,oEAPnB;YACT;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC;aACnD;SACF;;2FAEU,mBAAmB;kBAX/B,SAAS;mBAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,kBAAkB;4BAC3B,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC;yBACnD;qBACF;iBACF;;AAcD,MAAM,OAAO,UAAW,SAAQ,SAAS;uGAA5B,UAAU;2FAAV,UAAU,2DAPV;YACT;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;aAC1C;SACF;;2FAEU,UAAU;kBAXtB,SAAS;mBAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,YAAY;oBACtB,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,SAAS;4BAClB,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC;yBAC1C;qBACF;iBACF;;AAcD,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;uGAA1C,iBAAiB;2FAAjB,iBAAiB,kEAPjB;YACT;gBACE,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;aACjD;SACF;;2FAEU,iBAAiB;kBAX7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,gBAAgB;4BACzB,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,kBAAkB,CAAC;yBACjD;qBACF;iBACF;;AAGD,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACvE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA2B,EAAE,gBAAyB;IAChF,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/E,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1E,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IACE,UAAU,KAAK,QAAQ;YACvB,UAAU,KAAK,eAAe;YAC9B,UAAU,KAAK,YAAY;YAC3B,UAAU,KAAK,QAAQ,EACvB,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;YACrC,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QACD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,wBAAwB,CAAC,QAA2B,EAAE,SAAwB;IACrF,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAChD,CAAC;IAED,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,CAAC","sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n forwardRef,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { createScrollLockManager, createTngIdFactory } from '@tailng-ui/cdk';\n\nconst createDrawerContainerId = createTngIdFactory('tng-drawer-container');\nconst createDrawerId = createTngIdFactory('tng-drawer');\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(',');\n\nexport type TngDrawerAutoBoolean = 'auto' | boolean;\nexport type TngDrawerDirection = 'ltr' | 'rtl' | 'auto';\nexport type TngDrawerMode = 'overlay' | 'push' | 'side';\nexport type TngDrawerPosition = 'start' | 'end';\nexport type TngDrawerRole = 'navigation' | 'dialog' | 'complementary' | 'region';\nexport type TngDrawerAutoFocus = 'drawer' | 'first-focusable' | 'none';\ntype TngResolvedDrawerSide = 'left' | 'right';\ntype TngDrawerLifecycleTransition = 'opening' | 'closing';\ntype TngDrawerOpenSource = 'external' | 'imperative' | 'interaction' | 'initial';\ntype TngDrawerCloseReason = 'imperative' | 'outside' | 'escape' | 'tab' | 'destroy' | 'external';\n\n@Directive({\n selector: '[tngDrawerContainer]',\n exportAs: 'tngDrawerContainer',\n standalone: true,\n})\nexport class TngDrawerContainer {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resolvedId =\n this.hostRef.nativeElement.getAttribute('id') ?? createDrawerContainerId();\n private readonly drawers = new Set<TngDrawer>();\n private readonly contentElements = new Set<TngDrawerContent>();\n private readonly scrollLockManager = createScrollLockManager({\n documentRef: this.documentRef ?? undefined,\n getScrollbarWidth: () => {\n if (this.documentRef === null) {\n return 0;\n }\n\n const windowRef = this.documentRef.defaultView;\n if (windowRef === null) {\n return 0;\n }\n\n const rootWidth = this.documentRef.documentElement?.clientWidth ?? 0;\n return Math.max(0, windowRef.innerWidth - rootWidth);\n },\n });\n\n readonly hasBackdrop = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly closeOthersOnOpen = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly animate = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly lockScroll = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly dir = input<TngDrawerDirection, TngDrawerDirection | string | null | undefined>('auto', {\n transform: normalizeDirectionInput,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'drawer-container' as const;\n\n @HostBinding('attr.id')\n readonly id = this.resolvedId;\n\n @HostBinding('attr.data-content-count')\n protected get dataContentCount(): string {\n return String(this.contentElements.size);\n }\n\n @HostBinding('attr.data-content-conflict')\n protected get dataContentConflict(): 'true' | null {\n return this.contentElements.size > 1 ? 'true' : null;\n }\n\n @HostBinding('attr.data-direction')\n protected get dataDirection(): 'ltr' | 'rtl' {\n return this.resolveDirection();\n }\n\n ngDoCheck(): void {\n this.syncDerivedState();\n }\n\n ngOnDestroy(): void {\n this.scrollLockManager.clear();\n }\n\n registerDrawer(drawer: TngDrawer): void {\n this.drawers.add(drawer);\n this.syncDerivedState();\n }\n\n unregisterDrawer(drawer: TngDrawer): void {\n this.drawers.delete(drawer);\n this.syncDerivedState();\n }\n\n registerContent(content: TngDrawerContent): void {\n this.contentElements.add(content);\n this.syncDerivedState();\n }\n\n unregisterContent(content: TngDrawerContent): void {\n this.contentElements.delete(content);\n this.syncDerivedState();\n }\n\n getHostElement(): HTMLElement {\n return this.hostRef.nativeElement;\n }\n\n containsTarget(target: Node | null): boolean {\n if (target === null) {\n return false;\n }\n\n return this.hostRef.nativeElement.contains(target);\n }\n\n resolveDirection(): 'ltr' | 'rtl' {\n const configuredDirection = this.dir();\n if (configuredDirection !== 'auto') {\n return configuredDirection;\n }\n\n const host = this.hostRef.nativeElement;\n const nearestDirection =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement?.getAttribute('dir');\n\n return nearestDirection?.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n }\n\n resolveSide(position: TngDrawerPosition): TngResolvedDrawerSide {\n return resolveSideFromDirection(position, this.resolveDirection());\n }\n\n shouldRenderBackdrop(drawer: TngDrawer): boolean {\n const drawerBackdrop = drawer.backdrop();\n if (drawerBackdrop !== 'auto') {\n return drawerBackdrop;\n }\n\n const containerBackdrop = this.hasBackdrop();\n if (containerBackdrop !== 'auto') {\n return containerBackdrop;\n }\n\n return drawer.mode() === 'overlay';\n }\n\n shouldLockScroll(drawer: TngDrawer): boolean {\n const lockPolicy = this.lockScroll();\n if (lockPolicy !== 'auto') {\n return lockPolicy;\n }\n\n return drawer.mode() === 'overlay' && !drawer.resolveAllowBodyScroll();\n }\n\n onDrawerOpenRequest(drawer: TngDrawer): void {\n if (!this.closeOthersOnOpen()) {\n return;\n }\n\n for (const registeredDrawer of this.drawers) {\n if (registeredDrawer === drawer || !registeredDrawer.isOpen()) {\n continue;\n }\n\n registeredDrawer.closeFromContainer();\n }\n }\n\n onDrawerStateChanged(): void {\n this.syncDerivedState();\n }\n\n private syncDerivedState(): void {\n this.syncContentOffsets();\n this.syncContentInertState();\n this.syncBodyScrollLock();\n }\n\n private getOpenDrawers(): readonly TngDrawer[] {\n return Array.from(this.drawers).filter((drawer) => drawer.isOpen());\n }\n\n private syncBodyScrollLock(): void {\n const shouldLock = this.getOpenDrawers().some((drawer) => this.shouldLockScroll(drawer));\n if (shouldLock) {\n this.scrollLockManager.acquire(this.id);\n return;\n }\n\n this.scrollLockManager.release(this.id);\n }\n\n private syncContentInertState(): void {\n const shouldInert = this.getOpenDrawers().some((drawer) => drawer.shouldInertContent());\n for (const content of this.contentElements) {\n content.setInert(shouldInert);\n }\n }\n\n private syncContentOffsets(): void {\n let leftOffset = 0;\n let rightOffset = 0;\n\n for (const drawer of this.getOpenDrawers()) {\n if (!drawer.participatesInContentOffset()) {\n continue;\n }\n\n const side = this.resolveSide(drawer.position());\n const width = drawer.getMeasuredWidth();\n\n if (side === 'left') {\n leftOffset += width;\n } else {\n rightOffset += width;\n }\n }\n\n for (const content of this.contentElements) {\n content.applyOffsets(leftOffset, rightOffset);\n }\n }\n}\n\n@Directive({\n selector: '[tngDrawer]',\n exportAs: 'tngDrawer',\n standalone: true,\n})\nexport class TngDrawer {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly container = inject(TngDrawerContainer, { optional: true, host: true });\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createDrawerId();\n private backdropElement: HTMLElement | null = null;\n private backdropPointerdownListener: ((event: PointerEvent) => void) | null = null;\n private globalPointerdownListener: ((event: PointerEvent) => void) | null = null;\n private globalKeydownListener: ((event: KeyboardEvent) => void) | null = null;\n private lifecycleFallbackHandle: ReturnType<typeof setTimeout> | null = null;\n private pendingLifecycle: TngDrawerLifecycleTransition | null = null;\n private openState = false;\n private lastKnownPosition: TngDrawerPosition = 'start';\n private lastKnownMode: TngDrawerMode = 'overlay';\n private restoreFocusTarget: HTMLElement | null = null;\n private restoreFocusFallback: HTMLElement | null = null;\n private swipeStartX: number | null = null;\n private swipeLastX: number | null = null;\n private swipeStartY: number | null = null;\n private swipeLastY: number | null = null;\n\n readonly openedInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'opened',\n transform: normalizeOptionalBooleanInput,\n });\n readonly defaultOpened = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly mode = input<TngDrawerMode, TngDrawerMode | string | null | undefined>('overlay', {\n transform: normalizeModeInput,\n });\n readonly position = input<TngDrawerPosition, TngDrawerPosition | string | null | undefined>('start', {\n transform: normalizePositionInput,\n });\n readonly disabled = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly backdrop = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly closeOnOutsideClickInput = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n alias: 'closeOnOutsideClick',\n transform: normalizeOptionalBooleanInput,\n },\n );\n readonly closeOnEscape = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly restoreFocus = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly autoFocus = input<TngDrawerAutoFocus, TngDrawerAutoFocus | string | null | undefined>(\n 'drawer',\n { transform: normalizeAutoFocusInput },\n );\n readonly trapFocus = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly inertContent = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly allowBodyScrollInput = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n alias: 'allowBodyScroll',\n transform: normalizeOptionalBooleanInput,\n },\n );\n readonly closeOnTab = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly role = input<TngDrawerRole, TngDrawerRole | string | null | undefined>('navigation', {\n transform: normalizeRoleInput,\n });\n readonly fixedInViewport = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly fixedTopGap = input<number, number | string | null | undefined>(0, {\n transform: normalizeNumberInput,\n });\n readonly fixedBottomGap = input<number, number | string | null | undefined>(0, {\n transform: normalizeNumberInput,\n });\n readonly swipeToClose = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly openedChange = output<boolean>();\n readonly tngDrawerOpened = output<void>();\n readonly tngDrawerClosed = output<void>();\n readonly openStart = output<void>();\n readonly closeStart = output<void>();\n readonly backdropClick = output<void>();\n readonly positionChange = output<TngDrawerPosition>();\n\n ngOnInit(): void {\n this.container?.registerDrawer(this);\n this.lastKnownPosition = this.position();\n this.lastKnownMode = this.mode();\n\n const controlledValue = this.openedInput();\n this.openState = controlledValue ?? this.defaultOpened();\n\n if (this.openState) {\n this.attachGlobalListeners();\n this.renderBackdropIfNeeded();\n this.container?.onDrawerStateChanged();\n this.queueLifecycleEnd('opening', false);\n }\n }\n\n ngAfterViewInit(): void {\n if (this.openState) {\n this.applyAutoFocus();\n }\n }\n\n ngDoCheck(): void {\n this.syncControlledState();\n this.syncPositionChange();\n this.syncModeChange();\n if (this.openState) {\n this.renderBackdropIfNeeded();\n this.container?.onDrawerStateChanged();\n }\n }\n\n ngOnDestroy(): void {\n if (this.openState) {\n this.performClose({\n emitOpenedChange: false,\n emitLifecycle: true,\n restoreFocus: false,\n reason: 'destroy',\n });\n }\n\n this.teardownInteractions();\n this.container?.unregisterDrawer(this);\n }\n\n isOpen(): boolean {\n return this.openState;\n }\n\n participatesInContentOffset(): boolean {\n const mode = this.mode();\n return mode === 'push' || mode === 'side';\n }\n\n shouldInertContent(): boolean {\n if (!this.openState) {\n return false;\n }\n\n return resolveAutoBoolean(this.inertContent(), this.mode() === 'overlay');\n }\n\n resolveAllowBodyScroll(): boolean {\n const configured = this.allowBodyScrollInput();\n if (configured !== undefined) {\n return configured;\n }\n\n return this.mode() !== 'overlay';\n }\n\n getMeasuredWidth(): number {\n const host = this.hostRef.nativeElement;\n const widthAttr = Number.parseFloat(host.getAttribute('data-width') ?? '');\n if (Number.isFinite(widthAttr) && widthAttr > 0) {\n return widthAttr;\n }\n\n const rectWidth = host.getBoundingClientRect().width;\n if (rectWidth > 0) {\n return rectWidth;\n }\n\n const inlineWidth = Number.parseFloat(host.style.width);\n if (Number.isFinite(inlineWidth) && inlineWidth > 0) {\n return inlineWidth;\n }\n\n return 0;\n }\n\n closeFromContainer(): void {\n this.requestOpenState(false, 'interaction', 'outside');\n }\n\n setRestoreFocusFallback(target: HTMLElement | null): void {\n this.restoreFocusFallback = target;\n }\n\n setRestoreFocusTarget(target: HTMLElement | null): void {\n this.restoreFocusTarget = target;\n }\n\n open(): void {\n this.requestOpenState(true, 'imperative', 'imperative');\n }\n\n close(): void {\n this.requestOpenState(false, 'imperative', 'imperative');\n }\n\n toggle(force?: boolean): void {\n if (force === undefined) {\n this.requestOpenState(!this.openState, 'imperative', 'imperative');\n return;\n }\n\n this.requestOpenState(force, 'imperative', 'imperative');\n }\n\n @HostListener('transitionend', ['$event'])\n protected onTransitionEnd(event: Event): void {\n if (event.target !== this.hostRef.nativeElement) {\n return;\n }\n\n this.flushPendingLifecycle();\n }\n\n @HostListener('pointerdown', ['$event'])\n protected onHostPointerDown(event: PointerEvent): void {\n if (!this.openState || !this.swipeToClose() || this.mode() !== 'overlay') {\n return;\n }\n\n this.swipeStartX = event.clientX;\n this.swipeLastX = event.clientX;\n this.swipeStartY = event.clientY;\n this.swipeLastY = event.clientY;\n }\n\n @HostListener('pointermove', ['$event'])\n protected onHostPointerMove(event: PointerEvent): void {\n if (this.swipeStartX === null) {\n return;\n }\n\n this.swipeLastX = event.clientX;\n this.swipeLastY = event.clientY;\n }\n\n @HostListener('pointerup')\n protected onHostPointerUp(): void {\n if (\n this.swipeStartX === null ||\n this.swipeLastX === null ||\n this.swipeStartY === null ||\n this.swipeLastY === null\n ) {\n this.resetSwipeState();\n return;\n }\n\n const deltaX = this.swipeLastX - this.swipeStartX;\n const deltaY = this.swipeLastY - this.swipeStartY;\n const side = this.resolveEffectiveSide();\n const isHorizontalGesture = Math.abs(deltaX) >= Math.abs(deltaY);\n const shouldClose =\n isHorizontalGesture && ((side === 'left' && deltaX <= -40) || (side === 'right' && deltaX >= 40));\n\n this.resetSwipeState();\n\n if (shouldClose) {\n this.requestOpenState(false, 'interaction', 'outside');\n }\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'drawer' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.role')\n protected get roleAttr(): TngDrawerRole {\n return this.role();\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): string {\n return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';\n }\n\n @HostBinding('attr.data-mode')\n protected get dataMode(): TngDrawerMode {\n return this.mode();\n }\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.openState ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-open')\n protected get dataOpen(): 'true' | 'false' {\n return this.openState ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-position')\n protected get dataPosition(): TngDrawerPosition {\n return this.position();\n }\n\n @HostBinding('attr.data-effective-position')\n protected get dataEffectivePosition(): TngResolvedDrawerSide {\n return this.resolveEffectiveSide();\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): 'true' | 'false' {\n return this.disabled() ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.data-container-id')\n protected get dataContainerId(): string | null {\n return this.container?.id ?? null;\n }\n\n @HostBinding('attr.data-container-missing')\n protected get dataContainerMissing(): 'true' | null {\n return this.container === null ? 'true' : null;\n }\n\n @HostBinding('attr.hidden')\n protected get hiddenAttr(): '' | null {\n return this.openState ? null : '';\n }\n\n @HostBinding('attr.aria-modal')\n protected get ariaModal(): 'true' | null {\n if (this.role() !== 'dialog' || this.mode() !== 'overlay' || !this.openState) {\n return null;\n }\n\n return 'true';\n }\n\n @HostBinding('style.position')\n protected get positionStyle(): 'fixed' | null {\n return this.fixedInViewport() ? 'fixed' : null;\n }\n\n @HostBinding('style.top')\n protected get topStyle(): string | null {\n if (!this.fixedInViewport()) {\n return null;\n }\n\n return `${Math.max(0, this.fixedTopGap())}px`;\n }\n\n @HostBinding('style.bottom')\n protected get bottomStyle(): string | null {\n if (!this.fixedInViewport()) {\n return null;\n }\n\n return `${Math.max(0, this.fixedBottomGap())}px`;\n }\n\n @HostBinding('style.left')\n protected get leftStyle(): string | null {\n if (!this.fixedInViewport() || this.resolveEffectiveSide() !== 'left') {\n return null;\n }\n\n return '0px';\n }\n\n @HostBinding('style.right')\n protected get rightStyle(): string | null {\n if (!this.fixedInViewport() || this.resolveEffectiveSide() !== 'right') {\n return null;\n }\n\n return '0px';\n }\n\n private syncControlledState(): void {\n const controlledValue = this.openedInput();\n if (controlledValue === undefined || controlledValue === this.openState) {\n return;\n }\n\n if (controlledValue) {\n this.performOpen({\n emitOpenedChange: false,\n emitLifecycle: true,\n source: 'external',\n });\n return;\n }\n\n this.performClose({\n emitOpenedChange: false,\n emitLifecycle: true,\n restoreFocus: false,\n reason: 'external',\n });\n }\n\n private syncPositionChange(): void {\n const currentPosition = this.position();\n if (currentPosition === this.lastKnownPosition) {\n return;\n }\n\n this.lastKnownPosition = currentPosition;\n this.positionChange.emit(currentPosition);\n this.container?.onDrawerStateChanged();\n }\n\n private syncModeChange(): void {\n const currentMode = this.mode();\n if (currentMode === this.lastKnownMode) {\n return;\n }\n\n this.lastKnownMode = currentMode;\n if (this.openState) {\n this.renderBackdropIfNeeded();\n }\n this.container?.onDrawerStateChanged();\n }\n\n private requestOpenState(nextOpen: boolean, source: TngDrawerOpenSource, reason: TngDrawerCloseReason): void {\n if (nextOpen && this.disabled()) {\n return;\n }\n\n if (this.openedInput() !== undefined) {\n const currentControlledValue = this.openedInput() ?? false;\n if (source !== 'external' && currentControlledValue !== nextOpen) {\n this.openedChange.emit(nextOpen);\n }\n return;\n }\n\n if (nextOpen === this.openState) {\n return;\n }\n\n if (nextOpen) {\n this.performOpen({\n emitOpenedChange: source !== 'initial' && source !== 'external',\n emitLifecycle: source !== 'initial',\n source,\n });\n return;\n }\n\n this.performClose({\n emitOpenedChange: source !== 'initial' && source !== 'external',\n emitLifecycle: source !== 'initial',\n restoreFocus: reason !== 'tab',\n reason,\n });\n }\n\n private performOpen(options: Readonly<{\n emitOpenedChange: boolean;\n emitLifecycle: boolean;\n source: TngDrawerOpenSource;\n }>): void {\n if (this.openState) {\n return;\n }\n\n this.container?.onDrawerOpenRequest(this);\n\n this.captureRestoreFocusTarget();\n this.openState = true;\n this.attachGlobalListeners();\n this.renderBackdropIfNeeded();\n this.container?.onDrawerStateChanged();\n\n if (options.emitOpenedChange) {\n this.openedChange.emit(true);\n }\n\n if (options.emitLifecycle) {\n this.startLifecycle('opening');\n }\n\n if (options.source !== 'external') {\n this.applyAutoFocus();\n }\n }\n\n private performClose(options: Readonly<{\n emitOpenedChange: boolean;\n emitLifecycle: boolean;\n restoreFocus: boolean;\n reason: TngDrawerCloseReason;\n }>): void {\n if (!this.openState) {\n return;\n }\n\n this.openState = false;\n this.teardownInteractions();\n this.container?.onDrawerStateChanged();\n\n if (options.emitOpenedChange) {\n this.openedChange.emit(false);\n }\n\n if (options.emitLifecycle) {\n this.startLifecycle('closing');\n }\n\n if (options.restoreFocus && this.restoreFocus()) {\n this.restoreFocusToTarget();\n }\n }\n\n private captureRestoreFocusTarget(): void {\n const activeElement = this.documentRef?.activeElement;\n this.restoreFocusTarget = activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n private restoreFocusToTarget(): void {\n if (this.restoreFocusTarget?.isConnected) {\n this.restoreFocusTarget.focus();\n return;\n }\n\n if (this.restoreFocusFallback?.isConnected) {\n this.restoreFocusFallback.focus();\n return;\n }\n\n this.documentRef?.body?.focus?.();\n }\n\n private applyAutoFocus(): void {\n const strategy = this.autoFocus();\n if (strategy === 'none') {\n return;\n }\n\n if (strategy === 'first-focusable') {\n const firstFocusable = this.getFocusableElements()[0];\n if (firstFocusable !== undefined) {\n firstFocusable.focus();\n return;\n }\n }\n\n this.hostRef.nativeElement.focus();\n }\n\n private getFocusableElements(): readonly HTMLElement[] {\n const host = this.hostRef.nativeElement;\n const candidates = Array.from(host.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n return candidates.filter((element) => !element.hasAttribute('disabled') && element.tabIndex >= 0);\n }\n\n private resolveEffectiveSide(): TngResolvedDrawerSide {\n return this.container?.resolveSide(this.position()) ?? resolveSideFromDirection(this.position(), 'ltr');\n }\n\n private startLifecycle(transition: TngDrawerLifecycleTransition): void {\n this.clearPendingLifecycle();\n\n if (transition === 'opening') {\n this.openStart.emit();\n } else {\n this.closeStart.emit();\n }\n\n if (!this.container?.animate()) {\n if (transition === 'opening') {\n this.tngDrawerOpened.emit();\n } else {\n this.tngDrawerClosed.emit();\n }\n return;\n }\n\n this.queueLifecycleEnd(transition, true);\n }\n\n private queueLifecycleEnd(transition: TngDrawerLifecycleTransition, withFallback: boolean): void {\n this.pendingLifecycle = transition;\n\n if (!withFallback) {\n return;\n }\n\n this.lifecycleFallbackHandle = setTimeout(() => {\n this.flushPendingLifecycle();\n }, 60);\n }\n\n private flushPendingLifecycle(): void {\n if (this.pendingLifecycle === null) {\n return;\n }\n\n const transition = this.pendingLifecycle;\n this.clearPendingLifecycle();\n\n if (transition === 'opening') {\n this.tngDrawerOpened.emit();\n return;\n }\n\n this.tngDrawerClosed.emit();\n }\n\n private clearPendingLifecycle(): void {\n this.pendingLifecycle = null;\n\n if (this.lifecycleFallbackHandle !== null) {\n clearTimeout(this.lifecycleFallbackHandle);\n this.lifecycleFallbackHandle = null;\n }\n }\n\n private attachGlobalListeners(): void {\n if (this.documentRef === null) {\n return;\n }\n\n if (this.globalPointerdownListener === null) {\n this.globalPointerdownListener = (event: PointerEvent): void => this.handleDocumentPointerDown(event);\n this.documentRef.addEventListener('pointerdown', this.globalPointerdownListener, true);\n }\n\n if (this.globalKeydownListener === null) {\n this.globalKeydownListener = (event: KeyboardEvent): void => this.handleDocumentKeydown(event);\n this.documentRef.addEventListener('keydown', this.globalKeydownListener, true);\n }\n }\n\n private teardownInteractions(): void {\n this.detachGlobalListeners();\n this.destroyBackdrop();\n this.clearPendingLifecycle();\n this.resetSwipeState();\n }\n\n private detachGlobalListeners(): void {\n if (this.documentRef === null) {\n return;\n }\n\n if (this.globalPointerdownListener !== null) {\n this.documentRef.removeEventListener('pointerdown', this.globalPointerdownListener, true);\n this.globalPointerdownListener = null;\n }\n\n if (this.globalKeydownListener !== null) {\n this.documentRef.removeEventListener('keydown', this.globalKeydownListener, true);\n this.globalKeydownListener = null;\n }\n }\n\n private renderBackdropIfNeeded(): void {\n if (!this.openState || !this.resolveBackdropEnabled()) {\n this.destroyBackdrop();\n return;\n }\n\n if (this.backdropElement !== null) {\n return;\n }\n\n const targetHost = this.container?.getHostElement() ?? this.hostRef.nativeElement.parentElement;\n if (targetHost === null) {\n return;\n }\n\n const backdrop = this.documentRef?.createElement('div');\n if (backdrop === undefined || backdrop === null) {\n return;\n }\n\n backdrop.setAttribute('data-slot', 'drawer-backdrop');\n backdrop.setAttribute('data-owner', this.id);\n backdrop.setAttribute('role', 'presentation');\n backdrop.setAttribute('tabindex', '-1');\n backdrop.setAttribute('aria-hidden', 'true');\n backdrop.setAttribute('data-open', 'true');\n\n this.backdropPointerdownListener = (event: PointerEvent): void => {\n this.backdropClick.emit();\n\n if (this.resolveCloseOnOutsideClick()) {\n this.requestOpenState(false, 'interaction', 'outside');\n }\n\n event.preventDefault();\n event.stopPropagation();\n };\n backdrop.addEventListener('pointerdown', this.backdropPointerdownListener);\n\n targetHost.insertBefore(backdrop, this.hostRef.nativeElement);\n this.backdropElement = backdrop;\n }\n\n private destroyBackdrop(): void {\n if (this.backdropElement === null) {\n return;\n }\n\n if (this.backdropPointerdownListener !== null) {\n this.backdropElement.removeEventListener('pointerdown', this.backdropPointerdownListener);\n this.backdropPointerdownListener = null;\n }\n\n this.backdropElement.remove();\n this.backdropElement = null;\n }\n\n private resolveBackdropEnabled(): boolean {\n if (this.container !== null) {\n return this.container.shouldRenderBackdrop(this);\n }\n\n return resolveAutoBoolean(this.backdrop(), this.mode() === 'overlay');\n }\n\n private resolveCloseOnOutsideClick(): boolean {\n const configured = this.closeOnOutsideClickInput();\n if (configured !== undefined) {\n return configured;\n }\n\n return this.mode() === 'overlay';\n }\n\n private resolveTrapFocus(): boolean {\n return resolveAutoBoolean(this.trapFocus(), this.mode() === 'overlay');\n }\n\n private handleDocumentPointerDown(event: PointerEvent): void {\n if (!this.openState || !this.resolveCloseOnOutsideClick()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (this.hostRef.nativeElement.contains(target)) {\n return;\n }\n\n if (this.backdropElement?.contains(target) === true) {\n return;\n }\n\n if (this.container?.containsTarget(target) === true) {\n return;\n }\n\n if (this.isScrollbarPointerDown(event, target)) {\n return;\n }\n\n this.requestOpenState(false, 'interaction', 'outside');\n }\n\n private handleDocumentKeydown(event: KeyboardEvent): void {\n if (!this.openState) {\n return;\n }\n\n if (event.key === 'Escape') {\n if (!this.closeOnEscape()) {\n return;\n }\n\n event.preventDefault();\n this.requestOpenState(false, 'interaction', 'escape');\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n if (this.resolveTrapFocus()) {\n this.handleTrappedTab(event);\n return;\n }\n\n if (this.closeOnTab()) {\n this.requestOpenState(false, 'interaction', 'tab');\n }\n }\n\n private handleTrappedTab(event: KeyboardEvent): void {\n const focusable = this.getFocusableElements();\n const host = this.hostRef.nativeElement;\n if (focusable.length === 0) {\n event.preventDefault();\n host.focus();\n return;\n }\n\n const currentActive = this.documentRef?.activeElement;\n const currentIndex = currentActive instanceof HTMLElement ? focusable.indexOf(currentActive) : -1;\n\n const nextIndex = event.shiftKey\n ? currentIndex <= 0\n ? focusable.length - 1\n : currentIndex - 1\n : currentIndex < 0 || currentIndex >= focusable.length - 1\n ? 0\n : currentIndex + 1;\n\n event.preventDefault();\n focusable[nextIndex]?.focus();\n }\n\n private resetSwipeState(): void {\n this.swipeStartX = null;\n this.swipeLastX = null;\n this.swipeStartY = null;\n this.swipeLastY = null;\n }\n\n private isScrollbarPointerDown(event: PointerEvent, target: Node): boolean {\n if (this.documentRef === null) {\n return false;\n }\n\n const root = this.documentRef.documentElement;\n if (target !== root && target !== this.documentRef.body) {\n return false;\n }\n\n const viewportWidth = root.clientWidth;\n const viewportHeight = root.clientHeight;\n const onVerticalScrollbar = event.clientX >= viewportWidth && event.clientX > 0;\n const onHorizontalScrollbar = event.clientY >= viewportHeight && event.clientY > 0;\n\n return onVerticalScrollbar || onHorizontalScrollbar;\n }\n}\n\n@Directive({\n selector: '[tngDrawerContent]',\n exportAs: 'tngDrawerContent',\n standalone: true,\n})\nexport class TngDrawerContent {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly container = inject(TngDrawerContainer, { optional: true, host: true });\n\n ngOnInit(): void {\n this.container?.registerContent(this);\n }\n\n ngOnDestroy(): void {\n this.container?.unregisterContent(this);\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'drawer-content' as const;\n\n @HostBinding('attr.data-container-id')\n protected get dataContainerId(): string | null {\n return this.container?.id ?? null;\n }\n\n @HostBinding('attr.data-container-missing')\n protected get dataContainerMissing(): 'true' | null {\n return this.container === null ? 'true' : null;\n }\n\n applyOffsets(leftOffset: number, rightOffset: number): void {\n const host = this.hostRef.nativeElement;\n host.style.marginLeft = leftOffset > 0 ? `${leftOffset}px` : '';\n host.style.marginRight = rightOffset > 0 ? `${rightOffset}px` : '';\n host.setAttribute('data-offset-left', String(leftOffset));\n host.setAttribute('data-offset-right', String(rightOffset));\n host.setAttribute('data-shifted', leftOffset > 0 || rightOffset > 0 ? 'true' : 'false');\n }\n\n setInert(nextInert: boolean): void {\n const host = this.hostRef.nativeElement;\n if (nextInert) {\n host.setAttribute('inert', '');\n host.setAttribute('aria-hidden', 'true');\n try {\n (host as HTMLElement & { inert?: boolean }).inert = true;\n } catch {\n // noop: inert is not writable in some environments.\n }\n return;\n }\n\n host.removeAttribute('inert');\n host.removeAttribute('aria-hidden');\n try {\n (host as HTMLElement & { inert?: boolean }).inert = false;\n } catch {\n // noop: inert is not writable in some environments.\n }\n }\n}\n\n@Directive({\n selector: '[tngSidenavContainer]',\n exportAs: 'tngSidenavContainer',\n standalone: true,\n providers: [\n {\n provide: TngDrawerContainer,\n useExisting: forwardRef(() => TngSidenavContainer),\n },\n ],\n})\nexport class TngSidenavContainer extends TngDrawerContainer {}\n\n@Directive({\n selector: '[tngSidenav]',\n exportAs: 'tngSidenav',\n standalone: true,\n providers: [\n {\n provide: TngDrawer,\n useExisting: forwardRef(() => TngSidenav),\n },\n ],\n})\nexport class TngSidenav extends TngDrawer {}\n\n@Directive({\n selector: '[tngSidenavContent]',\n exportAs: 'tngSidenavContent',\n standalone: true,\n providers: [\n {\n provide: TngDrawerContent,\n useExisting: forwardRef(() => TngSidenavContent),\n },\n ],\n})\nexport class TngSidenavContent extends TngDrawerContent {}\n\nfunction normalizeBooleanInput(value: unknown): boolean {\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === '' || normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n }\n\n return Boolean(value);\n}\n\nfunction normalizeOptionalBooleanInput(value: unknown): boolean | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return normalizeBooleanInput(value);\n}\n\nfunction normalizeAutoBooleanInput(value: unknown): TngDrawerAutoBoolean {\n if (typeof value === 'string' && value.trim().toLowerCase() === 'auto') {\n return 'auto';\n }\n\n if (value === undefined || value === null) {\n return 'auto';\n }\n\n return normalizeBooleanInput(value);\n}\n\nfunction resolveAutoBoolean(value: TngDrawerAutoBoolean, fallbackWhenAuto: boolean): boolean {\n return value === 'auto' ? fallbackWhenAuto : value;\n}\n\nfunction normalizeModeInput(value: unknown): TngDrawerMode {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'push' || normalized === 'side' || normalized === 'overlay') {\n return normalized;\n }\n }\n\n return 'overlay';\n}\n\nfunction normalizePositionInput(value: unknown): TngDrawerPosition {\n if (typeof value === 'string' && value.trim().toLowerCase() === 'end') {\n return 'end';\n }\n\n return 'start';\n}\n\nfunction normalizeDirectionInput(value: unknown): TngDrawerDirection {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'rtl' || normalized === 'ltr' || normalized === 'auto') {\n return normalized;\n }\n }\n\n return 'auto';\n}\n\nfunction normalizeRoleInput(value: unknown): TngDrawerRole {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (\n normalized === 'dialog' ||\n normalized === 'complementary' ||\n normalized === 'navigation' ||\n normalized === 'region'\n ) {\n return normalized;\n }\n }\n\n return 'navigation';\n}\n\nfunction normalizeAutoFocusInput(value: unknown): TngDrawerAutoFocus {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'first-focusable') {\n return 'first-focusable';\n }\n if (normalized === 'none') {\n return 'none';\n }\n }\n\n return 'drawer';\n}\n\nfunction normalizeNumberInput(value: unknown): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsed = Number.parseFloat(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n\n return 0;\n}\n\nfunction resolveSideFromDirection(position: TngDrawerPosition, direction: 'ltr' | 'rtl'): TngResolvedDrawerSide {\n if (position === 'start') {\n return direction === 'rtl' ? 'right' : 'left';\n }\n\n return direction === 'rtl' ? 'left' : 'right';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tng-drawer.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/drawer/tng-drawer.ts"],"names":[],"mappings":"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","sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n forwardRef,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { createScrollLockManager, createTngIdFactory } from '@tailng-ui/cdk';\n\nconst createDrawerContainerId = createTngIdFactory('tng-drawer-container');\nconst createDrawerId = createTngIdFactory('tng-drawer');\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(',');\n\nexport type TngDrawerAutoBoolean = 'auto' | boolean;\nexport type TngDrawerDirection = 'ltr' | 'rtl' | 'auto';\nexport type TngDrawerMode = 'overlay' | 'push' | 'side';\nexport type TngDrawerPosition = 'start' | 'end';\nexport type TngDrawerRole = 'navigation' | 'dialog' | 'complementary' | 'region';\nexport type TngDrawerAutoFocus = 'drawer' | 'first-focusable' | 'none';\ntype TngResolvedDrawerSide = 'left' | 'right';\ntype TngDrawerLifecycleTransition = 'opening' | 'closing';\ntype TngDrawerOpenSource = 'external' | 'imperative' | 'interaction' | 'initial';\ntype TngDrawerCloseReason = 'imperative' | 'outside' | 'escape' | 'tab' | 'destroy' | 'external';\n\n@Directive({\n selector: '[tngDrawerContainer]',\n exportAs: 'tngDrawerContainer',\n})\nexport class TngDrawerContainer {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly resolvedId =\n this.hostRef.nativeElement.getAttribute('id') ?? createDrawerContainerId();\n private readonly drawers = new Set<TngDrawer>();\n private readonly contentElements = new Set<TngDrawerContent>();\n private readonly scrollLockManager = createScrollLockManager({\n documentRef: this.documentRef ?? undefined,\n getScrollbarWidth: () => {\n if (this.documentRef === null) {\n return 0;\n }\n\n const windowRef = this.documentRef.defaultView;\n if (windowRef === null) {\n return 0;\n }\n\n const rootWidth = this.documentRef.documentElement?.clientWidth ?? 0;\n return Math.max(0, windowRef.innerWidth - rootWidth);\n },\n });\n\n readonly hasBackdrop = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly closeOthersOnOpen = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly animate = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly lockScroll = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly dir = input<TngDrawerDirection, TngDrawerDirection | string | null | undefined>('auto', {\n transform: normalizeDirectionInput,\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'drawer-container' as const;\n\n @HostBinding('attr.id')\n readonly id = this.resolvedId;\n\n @HostBinding('attr.data-content-count')\n protected get dataContentCount(): string {\n return String(this.contentElements.size);\n }\n\n @HostBinding('attr.data-content-conflict')\n protected get dataContentConflict(): 'true' | null {\n return this.contentElements.size > 1 ? 'true' : null;\n }\n\n @HostBinding('attr.data-direction')\n protected get dataDirection(): 'ltr' | 'rtl' {\n return this.resolveDirection();\n }\n\n ngDoCheck(): void {\n this.syncDerivedState();\n }\n\n ngOnDestroy(): void {\n this.scrollLockManager.clear();\n }\n\n registerDrawer(drawer: TngDrawer): void {\n this.drawers.add(drawer);\n this.syncDerivedState();\n }\n\n unregisterDrawer(drawer: TngDrawer): void {\n this.drawers.delete(drawer);\n this.syncDerivedState();\n }\n\n registerContent(content: TngDrawerContent): void {\n this.contentElements.add(content);\n this.syncDerivedState();\n }\n\n unregisterContent(content: TngDrawerContent): void {\n this.contentElements.delete(content);\n this.syncDerivedState();\n }\n\n getHostElement(): HTMLElement {\n return this.hostRef.nativeElement;\n }\n\n containsTarget(target: Node | null): boolean {\n if (target === null) {\n return false;\n }\n\n return this.hostRef.nativeElement.contains(target);\n }\n\n resolveDirection(): 'ltr' | 'rtl' {\n const configuredDirection = this.dir();\n if (configuredDirection !== 'auto') {\n return configuredDirection;\n }\n\n const host = this.hostRef.nativeElement;\n const nearestDirection =\n host.closest<HTMLElement>('[dir]')?.getAttribute('dir') ??\n host.ownerDocument?.documentElement?.getAttribute('dir');\n\n return nearestDirection?.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n }\n\n resolveSide(position: TngDrawerPosition): TngResolvedDrawerSide {\n return resolveSideFromDirection(position, this.resolveDirection());\n }\n\n shouldRenderBackdrop(drawer: TngDrawer): boolean {\n const drawerBackdrop = drawer.backdrop();\n if (drawerBackdrop !== 'auto') {\n return drawerBackdrop;\n }\n\n const containerBackdrop = this.hasBackdrop();\n if (containerBackdrop !== 'auto') {\n return containerBackdrop;\n }\n\n return drawer.mode() === 'overlay';\n }\n\n shouldLockScroll(drawer: TngDrawer): boolean {\n const lockPolicy = this.lockScroll();\n if (lockPolicy !== 'auto') {\n return lockPolicy;\n }\n\n return drawer.mode() === 'overlay' && !drawer.resolveAllowBodyScroll();\n }\n\n onDrawerOpenRequest(drawer: TngDrawer): void {\n if (!this.closeOthersOnOpen()) {\n return;\n }\n\n for (const registeredDrawer of this.drawers) {\n if (registeredDrawer === drawer || !registeredDrawer.isOpen()) {\n continue;\n }\n\n registeredDrawer.closeFromContainer();\n }\n }\n\n onDrawerStateChanged(): void {\n this.syncDerivedState();\n }\n\n private syncDerivedState(): void {\n this.syncContentOffsets();\n this.syncContentInertState();\n this.syncBodyScrollLock();\n }\n\n private getOpenDrawers(): readonly TngDrawer[] {\n return Array.from(this.drawers).filter((drawer) => drawer.isOpen());\n }\n\n private syncBodyScrollLock(): void {\n const shouldLock = this.getOpenDrawers().some((drawer) => this.shouldLockScroll(drawer));\n if (shouldLock) {\n this.scrollLockManager.acquire(this.id);\n return;\n }\n\n this.scrollLockManager.release(this.id);\n }\n\n private syncContentInertState(): void {\n const shouldInert = this.getOpenDrawers().some((drawer) => drawer.shouldInertContent());\n for (const content of this.contentElements) {\n content.setInert(shouldInert);\n }\n }\n\n private syncContentOffsets(): void {\n let leftOffset = 0;\n let rightOffset = 0;\n\n for (const drawer of this.getOpenDrawers()) {\n if (!drawer.participatesInContentOffset()) {\n continue;\n }\n\n const side = this.resolveSide(drawer.position());\n const width = drawer.getMeasuredWidth();\n\n if (side === 'left') {\n leftOffset += width;\n } else {\n rightOffset += width;\n }\n }\n\n for (const content of this.contentElements) {\n content.applyOffsets(leftOffset, rightOffset);\n }\n }\n}\n\n@Directive({\n selector: '[tngDrawer]',\n exportAs: 'tngDrawer',\n})\nexport class TngDrawer {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly container = inject(TngDrawerContainer, { optional: true, host: true });\n private readonly resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createDrawerId();\n private backdropElement: HTMLElement | null = null;\n private backdropPointerdownListener: ((event: PointerEvent) => void) | null = null;\n private globalPointerdownListener: ((event: PointerEvent) => void) | null = null;\n private globalKeydownListener: ((event: KeyboardEvent) => void) | null = null;\n private lifecycleFallbackHandle: ReturnType<typeof setTimeout> | null = null;\n private pendingLifecycle: TngDrawerLifecycleTransition | null = null;\n private openState = false;\n private lastKnownPosition: TngDrawerPosition = 'start';\n private lastKnownMode: TngDrawerMode = 'overlay';\n private restoreFocusTarget: HTMLElement | null = null;\n private restoreFocusFallback: HTMLElement | null = null;\n private swipeStartX: number | null = null;\n private swipeLastX: number | null = null;\n private swipeStartY: number | null = null;\n private swipeLastY: number | null = null;\n\n readonly openedInput = input<boolean | undefined, boolean | string | null | undefined>(undefined, {\n alias: 'opened',\n transform: normalizeOptionalBooleanInput,\n });\n readonly defaultOpened = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly mode = input<TngDrawerMode, TngDrawerMode | string | null | undefined>('overlay', {\n transform: normalizeModeInput,\n });\n readonly position = input<TngDrawerPosition, TngDrawerPosition | string | null | undefined>('start', {\n transform: normalizePositionInput,\n });\n readonly disabled = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly backdrop = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly closeOnOutsideClickInput = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n alias: 'closeOnOutsideClick',\n transform: normalizeOptionalBooleanInput,\n },\n );\n readonly closeOnEscape = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly restoreFocus = input<boolean, boolean | string | null | undefined>(true, {\n transform: normalizeBooleanInput,\n });\n readonly autoFocus = input<TngDrawerAutoFocus, TngDrawerAutoFocus | string | null | undefined>(\n 'drawer',\n { transform: normalizeAutoFocusInput },\n );\n readonly trapFocus = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly inertContent = input<TngDrawerAutoBoolean, TngDrawerAutoBoolean | string | null | undefined>(\n 'auto',\n { transform: normalizeAutoBooleanInput },\n );\n readonly allowBodyScrollInput = input<boolean | undefined, boolean | string | null | undefined>(\n undefined,\n {\n alias: 'allowBodyScroll',\n transform: normalizeOptionalBooleanInput,\n },\n );\n readonly closeOnTab = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly role = input<TngDrawerRole, TngDrawerRole | string | null | undefined>('navigation', {\n transform: normalizeRoleInput,\n });\n readonly fixedInViewport = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly fixedTopGap = input<number, number | string | null | undefined>(0, {\n transform: normalizeNumberInput,\n });\n readonly fixedBottomGap = input<number, number | string | null | undefined>(0, {\n transform: normalizeNumberInput,\n });\n readonly swipeToClose = input<boolean, boolean | string | null | undefined>(false, {\n transform: normalizeBooleanInput,\n });\n readonly openedChange = output<boolean>();\n readonly tngDrawerOpened = output<void>();\n readonly tngDrawerClosed = output<void>();\n readonly openStart = output<void>();\n readonly closeStart = output<void>();\n readonly backdropClick = output<void>();\n readonly positionChange = output<TngDrawerPosition>();\n\n ngOnInit(): void {\n this.container?.registerDrawer(this);\n this.lastKnownPosition = this.position();\n this.lastKnownMode = this.mode();\n\n const controlledValue = this.openedInput();\n this.openState = controlledValue ?? this.defaultOpened();\n\n if (this.openState) {\n this.attachGlobalListeners();\n this.renderBackdropIfNeeded();\n this.container?.onDrawerStateChanged();\n this.queueLifecycleEnd('opening', false);\n }\n }\n\n ngAfterViewInit(): void {\n if (this.openState) {\n this.applyAutoFocus();\n }\n }\n\n ngDoCheck(): void {\n this.syncControlledState();\n this.syncPositionChange();\n this.syncModeChange();\n if (this.openState) {\n this.renderBackdropIfNeeded();\n this.container?.onDrawerStateChanged();\n }\n }\n\n ngOnDestroy(): void {\n if (this.openState) {\n this.performClose({\n emitOpenedChange: false,\n emitLifecycle: true,\n restoreFocus: false,\n reason: 'destroy',\n });\n }\n\n this.teardownInteractions();\n this.container?.unregisterDrawer(this);\n }\n\n isOpen(): boolean {\n return this.openState;\n }\n\n participatesInContentOffset(): boolean {\n const mode = this.mode();\n return mode === 'push' || mode === 'side';\n }\n\n shouldInertContent(): boolean {\n if (!this.openState) {\n return false;\n }\n\n return resolveAutoBoolean(this.inertContent(), this.mode() === 'overlay');\n }\n\n resolveAllowBodyScroll(): boolean {\n const configured = this.allowBodyScrollInput();\n if (configured !== undefined) {\n return configured;\n }\n\n return this.mode() !== 'overlay';\n }\n\n getMeasuredWidth(): number {\n const host = this.hostRef.nativeElement;\n const widthAttr = Number.parseFloat(host.getAttribute('data-width') ?? '');\n if (Number.isFinite(widthAttr) && widthAttr > 0) {\n return widthAttr;\n }\n\n const rectWidth = host.getBoundingClientRect().width;\n if (rectWidth > 0) {\n return rectWidth;\n }\n\n const inlineWidth = Number.parseFloat(host.style.width);\n if (Number.isFinite(inlineWidth) && inlineWidth > 0) {\n return inlineWidth;\n }\n\n return 0;\n }\n\n closeFromContainer(): void {\n this.requestOpenState(false, 'interaction', 'outside');\n }\n\n setRestoreFocusFallback(target: HTMLElement | null): void {\n this.restoreFocusFallback = target;\n }\n\n setRestoreFocusTarget(target: HTMLElement | null): void {\n this.restoreFocusTarget = target;\n }\n\n open(): void {\n this.requestOpenState(true, 'imperative', 'imperative');\n }\n\n close(): void {\n this.requestOpenState(false, 'imperative', 'imperative');\n }\n\n toggle(force?: boolean): void {\n if (force === undefined) {\n this.requestOpenState(!this.openState, 'imperative', 'imperative');\n return;\n }\n\n this.requestOpenState(force, 'imperative', 'imperative');\n }\n\n @HostListener('transitionend', ['$event'])\n protected onTransitionEnd(event: Event): void {\n if (event.target !== this.hostRef.nativeElement) {\n return;\n }\n\n this.flushPendingLifecycle();\n }\n\n @HostListener('pointerdown', ['$event'])\n protected onHostPointerDown(event: PointerEvent): void {\n if (!this.openState || !this.swipeToClose() || this.mode() !== 'overlay') {\n return;\n }\n\n this.swipeStartX = event.clientX;\n this.swipeLastX = event.clientX;\n this.swipeStartY = event.clientY;\n this.swipeLastY = event.clientY;\n }\n\n @HostListener('pointermove', ['$event'])\n protected onHostPointerMove(event: PointerEvent): void {\n if (this.swipeStartX === null) {\n return;\n }\n\n this.swipeLastX = event.clientX;\n this.swipeLastY = event.clientY;\n }\n\n @HostListener('pointerup')\n protected onHostPointerUp(): void {\n if (\n this.swipeStartX === null ||\n this.swipeLastX === null ||\n this.swipeStartY === null ||\n this.swipeLastY === null\n ) {\n this.resetSwipeState();\n return;\n }\n\n const deltaX = this.swipeLastX - this.swipeStartX;\n const deltaY = this.swipeLastY - this.swipeStartY;\n const side = this.resolveEffectiveSide();\n const isHorizontalGesture = Math.abs(deltaX) >= Math.abs(deltaY);\n const shouldClose =\n isHorizontalGesture && ((side === 'left' && deltaX <= -40) || (side === 'right' && deltaX >= 40));\n\n this.resetSwipeState();\n\n if (shouldClose) {\n this.requestOpenState(false, 'interaction', 'outside');\n }\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'drawer' as const;\n\n @HostBinding('attr.id')\n protected readonly id = this.resolvedId;\n\n @HostBinding('attr.role')\n protected get roleAttr(): TngDrawerRole {\n return this.role();\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndexAttr(): string {\n return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';\n }\n\n @HostBinding('attr.data-mode')\n protected get dataMode(): TngDrawerMode {\n return this.mode();\n }\n\n @HostBinding('attr.data-state')\n protected get dataState(): 'open' | 'closed' {\n return this.openState ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-open')\n protected get dataOpen(): 'true' | 'false' {\n return this.openState ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-position')\n protected get dataPosition(): TngDrawerPosition {\n return this.position();\n }\n\n @HostBinding('attr.data-effective-position')\n protected get dataEffectivePosition(): TngResolvedDrawerSide {\n return this.resolveEffectiveSide();\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): 'true' | 'false' {\n return this.disabled() ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-disabled')\n protected get ariaDisabled(): 'true' | null {\n return this.disabled() ? 'true' : null;\n }\n\n @HostBinding('attr.data-container-id')\n protected get dataContainerId(): string | null {\n return this.container?.id ?? null;\n }\n\n @HostBinding('attr.data-container-missing')\n protected get dataContainerMissing(): 'true' | null {\n return this.container === null ? 'true' : null;\n }\n\n @HostBinding('attr.hidden')\n protected get hiddenAttr(): '' | null {\n return this.openState ? null : '';\n }\n\n @HostBinding('attr.aria-modal')\n protected get ariaModal(): 'true' | null {\n if (this.role() !== 'dialog' || this.mode() !== 'overlay' || !this.openState) {\n return null;\n }\n\n return 'true';\n }\n\n @HostBinding('style.position')\n protected get positionStyle(): 'fixed' | null {\n return this.fixedInViewport() ? 'fixed' : null;\n }\n\n @HostBinding('style.top')\n protected get topStyle(): string | null {\n if (!this.fixedInViewport()) {\n return null;\n }\n\n return `${Math.max(0, this.fixedTopGap())}px`;\n }\n\n @HostBinding('style.bottom')\n protected get bottomStyle(): string | null {\n if (!this.fixedInViewport()) {\n return null;\n }\n\n return `${Math.max(0, this.fixedBottomGap())}px`;\n }\n\n @HostBinding('style.left')\n protected get leftStyle(): string | null {\n if (!this.fixedInViewport() || this.resolveEffectiveSide() !== 'left') {\n return null;\n }\n\n return '0px';\n }\n\n @HostBinding('style.right')\n protected get rightStyle(): string | null {\n if (!this.fixedInViewport() || this.resolveEffectiveSide() !== 'right') {\n return null;\n }\n\n return '0px';\n }\n\n private syncControlledState(): void {\n const controlledValue = this.openedInput();\n if (controlledValue === undefined || controlledValue === this.openState) {\n return;\n }\n\n if (controlledValue) {\n this.performOpen({\n emitOpenedChange: false,\n emitLifecycle: true,\n source: 'external',\n });\n return;\n }\n\n this.performClose({\n emitOpenedChange: false,\n emitLifecycle: true,\n restoreFocus: false,\n reason: 'external',\n });\n }\n\n private syncPositionChange(): void {\n const currentPosition = this.position();\n if (currentPosition === this.lastKnownPosition) {\n return;\n }\n\n this.lastKnownPosition = currentPosition;\n this.positionChange.emit(currentPosition);\n this.container?.onDrawerStateChanged();\n }\n\n private syncModeChange(): void {\n const currentMode = this.mode();\n if (currentMode === this.lastKnownMode) {\n return;\n }\n\n this.lastKnownMode = currentMode;\n if (this.openState) {\n this.renderBackdropIfNeeded();\n }\n this.container?.onDrawerStateChanged();\n }\n\n private requestOpenState(nextOpen: boolean, source: TngDrawerOpenSource, reason: TngDrawerCloseReason): void {\n if (nextOpen && this.disabled()) {\n return;\n }\n\n if (this.openedInput() !== undefined) {\n const currentControlledValue = this.openedInput() ?? false;\n if (source !== 'external' && currentControlledValue !== nextOpen) {\n this.openedChange.emit(nextOpen);\n }\n return;\n }\n\n if (nextOpen === this.openState) {\n return;\n }\n\n if (nextOpen) {\n this.performOpen({\n emitOpenedChange: source !== 'initial' && source !== 'external',\n emitLifecycle: source !== 'initial',\n source,\n });\n return;\n }\n\n this.performClose({\n emitOpenedChange: source !== 'initial' && source !== 'external',\n emitLifecycle: source !== 'initial',\n restoreFocus: reason !== 'tab',\n reason,\n });\n }\n\n private performOpen(options: Readonly<{\n emitOpenedChange: boolean;\n emitLifecycle: boolean;\n source: TngDrawerOpenSource;\n }>): void {\n if (this.openState) {\n return;\n }\n\n this.container?.onDrawerOpenRequest(this);\n\n this.captureRestoreFocusTarget();\n this.openState = true;\n this.attachGlobalListeners();\n this.renderBackdropIfNeeded();\n this.container?.onDrawerStateChanged();\n\n if (options.emitOpenedChange) {\n this.openedChange.emit(true);\n }\n\n if (options.emitLifecycle) {\n this.startLifecycle('opening');\n }\n\n if (options.source !== 'external') {\n this.applyAutoFocus();\n }\n }\n\n private performClose(options: Readonly<{\n emitOpenedChange: boolean;\n emitLifecycle: boolean;\n restoreFocus: boolean;\n reason: TngDrawerCloseReason;\n }>): void {\n if (!this.openState) {\n return;\n }\n\n this.openState = false;\n this.teardownInteractions();\n this.container?.onDrawerStateChanged();\n\n if (options.emitOpenedChange) {\n this.openedChange.emit(false);\n }\n\n if (options.emitLifecycle) {\n this.startLifecycle('closing');\n }\n\n if (options.restoreFocus && this.restoreFocus()) {\n this.restoreFocusToTarget();\n }\n }\n\n private captureRestoreFocusTarget(): void {\n const activeElement = this.documentRef?.activeElement;\n this.restoreFocusTarget = activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n private restoreFocusToTarget(): void {\n if (this.restoreFocusTarget?.isConnected) {\n this.restoreFocusTarget.focus();\n return;\n }\n\n if (this.restoreFocusFallback?.isConnected) {\n this.restoreFocusFallback.focus();\n return;\n }\n\n this.documentRef?.body?.focus?.();\n }\n\n private applyAutoFocus(): void {\n const strategy = this.autoFocus();\n if (strategy === 'none') {\n return;\n }\n\n if (strategy === 'first-focusable') {\n const firstFocusable = this.getFocusableElements()[0];\n if (firstFocusable !== undefined) {\n firstFocusable.focus();\n return;\n }\n }\n\n this.hostRef.nativeElement.focus();\n }\n\n private getFocusableElements(): readonly HTMLElement[] {\n const host = this.hostRef.nativeElement;\n const candidates = Array.from(host.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n return candidates.filter((element) => !element.hasAttribute('disabled') && element.tabIndex >= 0);\n }\n\n private resolveEffectiveSide(): TngResolvedDrawerSide {\n return this.container?.resolveSide(this.position()) ?? resolveSideFromDirection(this.position(), 'ltr');\n }\n\n private startLifecycle(transition: TngDrawerLifecycleTransition): void {\n this.clearPendingLifecycle();\n\n if (transition === 'opening') {\n this.openStart.emit();\n } else {\n this.closeStart.emit();\n }\n\n if (!this.container?.animate()) {\n if (transition === 'opening') {\n this.tngDrawerOpened.emit();\n } else {\n this.tngDrawerClosed.emit();\n }\n return;\n }\n\n this.queueLifecycleEnd(transition, true);\n }\n\n private queueLifecycleEnd(transition: TngDrawerLifecycleTransition, withFallback: boolean): void {\n this.pendingLifecycle = transition;\n\n if (!withFallback) {\n return;\n }\n\n this.lifecycleFallbackHandle = setTimeout(() => {\n this.flushPendingLifecycle();\n }, 60);\n }\n\n private flushPendingLifecycle(): void {\n if (this.pendingLifecycle === null) {\n return;\n }\n\n const transition = this.pendingLifecycle;\n this.clearPendingLifecycle();\n\n if (transition === 'opening') {\n this.tngDrawerOpened.emit();\n return;\n }\n\n this.tngDrawerClosed.emit();\n }\n\n private clearPendingLifecycle(): void {\n this.pendingLifecycle = null;\n\n if (this.lifecycleFallbackHandle !== null) {\n clearTimeout(this.lifecycleFallbackHandle);\n this.lifecycleFallbackHandle = null;\n }\n }\n\n private attachGlobalListeners(): void {\n if (this.documentRef === null) {\n return;\n }\n\n if (this.globalPointerdownListener === null) {\n this.globalPointerdownListener = (event: PointerEvent): void => this.handleDocumentPointerDown(event);\n this.documentRef.addEventListener('pointerdown', this.globalPointerdownListener, true);\n }\n\n if (this.globalKeydownListener === null) {\n this.globalKeydownListener = (event: KeyboardEvent): void => this.handleDocumentKeydown(event);\n this.documentRef.addEventListener('keydown', this.globalKeydownListener, true);\n }\n }\n\n private teardownInteractions(): void {\n this.detachGlobalListeners();\n this.destroyBackdrop();\n this.clearPendingLifecycle();\n this.resetSwipeState();\n }\n\n private detachGlobalListeners(): void {\n if (this.documentRef === null) {\n return;\n }\n\n if (this.globalPointerdownListener !== null) {\n this.documentRef.removeEventListener('pointerdown', this.globalPointerdownListener, true);\n this.globalPointerdownListener = null;\n }\n\n if (this.globalKeydownListener !== null) {\n this.documentRef.removeEventListener('keydown', this.globalKeydownListener, true);\n this.globalKeydownListener = null;\n }\n }\n\n private renderBackdropIfNeeded(): void {\n if (!this.openState || !this.resolveBackdropEnabled()) {\n this.destroyBackdrop();\n return;\n }\n\n if (this.backdropElement !== null) {\n return;\n }\n\n const targetHost = this.container?.getHostElement() ?? this.hostRef.nativeElement.parentElement;\n if (targetHost === null) {\n return;\n }\n\n const backdrop = this.documentRef?.createElement('div');\n if (backdrop === undefined || backdrop === null) {\n return;\n }\n\n backdrop.setAttribute('data-slot', 'drawer-backdrop');\n backdrop.setAttribute('data-owner', this.id);\n backdrop.setAttribute('role', 'presentation');\n backdrop.setAttribute('tabindex', '-1');\n backdrop.setAttribute('aria-hidden', 'true');\n backdrop.setAttribute('data-open', 'true');\n\n this.backdropPointerdownListener = (event: PointerEvent): void => {\n this.backdropClick.emit();\n\n if (this.resolveCloseOnOutsideClick()) {\n this.requestOpenState(false, 'interaction', 'outside');\n }\n\n event.preventDefault();\n event.stopPropagation();\n };\n backdrop.addEventListener('pointerdown', this.backdropPointerdownListener);\n\n targetHost.insertBefore(backdrop, this.hostRef.nativeElement);\n this.backdropElement = backdrop;\n }\n\n private destroyBackdrop(): void {\n if (this.backdropElement === null) {\n return;\n }\n\n if (this.backdropPointerdownListener !== null) {\n this.backdropElement.removeEventListener('pointerdown', this.backdropPointerdownListener);\n this.backdropPointerdownListener = null;\n }\n\n this.backdropElement.remove();\n this.backdropElement = null;\n }\n\n private resolveBackdropEnabled(): boolean {\n if (this.container !== null) {\n return this.container.shouldRenderBackdrop(this);\n }\n\n return resolveAutoBoolean(this.backdrop(), this.mode() === 'overlay');\n }\n\n private resolveCloseOnOutsideClick(): boolean {\n const configured = this.closeOnOutsideClickInput();\n if (configured !== undefined) {\n return configured;\n }\n\n return this.mode() === 'overlay';\n }\n\n private resolveTrapFocus(): boolean {\n return resolveAutoBoolean(this.trapFocus(), this.mode() === 'overlay');\n }\n\n private handleDocumentPointerDown(event: PointerEvent): void {\n if (!this.openState || !this.resolveCloseOnOutsideClick()) {\n return;\n }\n\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n\n if (this.hostRef.nativeElement.contains(target)) {\n return;\n }\n\n if (this.backdropElement?.contains(target) === true) {\n return;\n }\n\n if (this.container?.containsTarget(target) === true) {\n return;\n }\n\n if (this.isScrollbarPointerDown(event, target)) {\n return;\n }\n\n this.requestOpenState(false, 'interaction', 'outside');\n }\n\n private handleDocumentKeydown(event: KeyboardEvent): void {\n if (!this.openState) {\n return;\n }\n\n if (event.key === 'Escape') {\n if (!this.closeOnEscape()) {\n return;\n }\n\n event.preventDefault();\n this.requestOpenState(false, 'interaction', 'escape');\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n if (this.resolveTrapFocus()) {\n this.handleTrappedTab(event);\n return;\n }\n\n if (this.closeOnTab()) {\n this.requestOpenState(false, 'interaction', 'tab');\n }\n }\n\n private handleTrappedTab(event: KeyboardEvent): void {\n const focusable = this.getFocusableElements();\n const host = this.hostRef.nativeElement;\n if (focusable.length === 0) {\n event.preventDefault();\n host.focus();\n return;\n }\n\n const currentActive = this.documentRef?.activeElement;\n const currentIndex = currentActive instanceof HTMLElement ? focusable.indexOf(currentActive) : -1;\n\n const nextIndex = event.shiftKey\n ? currentIndex <= 0\n ? focusable.length - 1\n : currentIndex - 1\n : currentIndex < 0 || currentIndex >= focusable.length - 1\n ? 0\n : currentIndex + 1;\n\n event.preventDefault();\n focusable[nextIndex]?.focus();\n }\n\n private resetSwipeState(): void {\n this.swipeStartX = null;\n this.swipeLastX = null;\n this.swipeStartY = null;\n this.swipeLastY = null;\n }\n\n private isScrollbarPointerDown(event: PointerEvent, target: Node): boolean {\n if (this.documentRef === null) {\n return false;\n }\n\n const root = this.documentRef.documentElement;\n if (target !== root && target !== this.documentRef.body) {\n return false;\n }\n\n const viewportWidth = root.clientWidth;\n const viewportHeight = root.clientHeight;\n const onVerticalScrollbar = event.clientX >= viewportWidth && event.clientX > 0;\n const onHorizontalScrollbar = event.clientY >= viewportHeight && event.clientY > 0;\n\n return onVerticalScrollbar || onHorizontalScrollbar;\n }\n}\n\n@Directive({\n selector: '[tngDrawerContent]',\n exportAs: 'tngDrawerContent',\n})\nexport class TngDrawerContent {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly container = inject(TngDrawerContainer, { optional: true, host: true });\n\n ngOnInit(): void {\n this.container?.registerContent(this);\n }\n\n ngOnDestroy(): void {\n this.container?.unregisterContent(this);\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'drawer-content' as const;\n\n @HostBinding('attr.data-container-id')\n protected get dataContainerId(): string | null {\n return this.container?.id ?? null;\n }\n\n @HostBinding('attr.data-container-missing')\n protected get dataContainerMissing(): 'true' | null {\n return this.container === null ? 'true' : null;\n }\n\n applyOffsets(leftOffset: number, rightOffset: number): void {\n const host = this.hostRef.nativeElement;\n host.style.marginLeft = leftOffset > 0 ? `${leftOffset}px` : '';\n host.style.marginRight = rightOffset > 0 ? `${rightOffset}px` : '';\n host.setAttribute('data-offset-left', String(leftOffset));\n host.setAttribute('data-offset-right', String(rightOffset));\n host.setAttribute('data-shifted', leftOffset > 0 || rightOffset > 0 ? 'true' : 'false');\n }\n\n setInert(nextInert: boolean): void {\n const host = this.hostRef.nativeElement;\n if (nextInert) {\n host.setAttribute('inert', '');\n host.setAttribute('aria-hidden', 'true');\n try {\n (host as HTMLElement & { inert?: boolean }).inert = true;\n } catch {\n // noop: inert is not writable in some environments.\n }\n return;\n }\n\n host.removeAttribute('inert');\n host.removeAttribute('aria-hidden');\n try {\n (host as HTMLElement & { inert?: boolean }).inert = false;\n } catch {\n // noop: inert is not writable in some environments.\n }\n }\n}\n\n@Directive({\n selector: '[tngSidenavContainer]',\n exportAs: 'tngSidenavContainer',\n providers: [\n {\n provide: TngDrawerContainer,\n useExisting: forwardRef(() => TngSidenavContainer),\n },\n ],\n})\nexport class TngSidenavContainer extends TngDrawerContainer {}\n\n@Directive({\n selector: '[tngSidenav]',\n exportAs: 'tngSidenav',\n providers: [\n {\n provide: TngDrawer,\n useExisting: forwardRef(() => TngSidenav),\n },\n ],\n})\nexport class TngSidenav extends TngDrawer {}\n\n@Directive({\n selector: '[tngSidenavContent]',\n exportAs: 'tngSidenavContent',\n providers: [\n {\n provide: TngDrawerContent,\n useExisting: forwardRef(() => TngSidenavContent),\n },\n ],\n})\nexport class TngSidenavContent extends TngDrawerContent {}\n\nfunction normalizeBooleanInput(value: unknown): boolean {\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === '' || normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n }\n\n return Boolean(value);\n}\n\nfunction normalizeOptionalBooleanInput(value: unknown): boolean | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n return normalizeBooleanInput(value);\n}\n\nfunction normalizeAutoBooleanInput(value: unknown): TngDrawerAutoBoolean {\n if (typeof value === 'string' && value.trim().toLowerCase() === 'auto') {\n return 'auto';\n }\n\n if (value === undefined || value === null) {\n return 'auto';\n }\n\n return normalizeBooleanInput(value);\n}\n\nfunction resolveAutoBoolean(value: TngDrawerAutoBoolean, fallbackWhenAuto: boolean): boolean {\n return value === 'auto' ? fallbackWhenAuto : value;\n}\n\nfunction normalizeModeInput(value: unknown): TngDrawerMode {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'push' || normalized === 'side' || normalized === 'overlay') {\n return normalized;\n }\n }\n\n return 'overlay';\n}\n\nfunction normalizePositionInput(value: unknown): TngDrawerPosition {\n if (typeof value === 'string' && value.trim().toLowerCase() === 'end') {\n return 'end';\n }\n\n return 'start';\n}\n\nfunction normalizeDirectionInput(value: unknown): TngDrawerDirection {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'rtl' || normalized === 'ltr' || normalized === 'auto') {\n return normalized;\n }\n }\n\n return 'auto';\n}\n\nfunction normalizeRoleInput(value: unknown): TngDrawerRole {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (\n normalized === 'dialog' ||\n normalized === 'complementary' ||\n normalized === 'navigation' ||\n normalized === 'region'\n ) {\n return normalized;\n }\n }\n\n return 'navigation';\n}\n\nfunction normalizeAutoFocusInput(value: unknown): TngDrawerAutoFocus {\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'first-focusable') {\n return 'first-focusable';\n }\n if (normalized === 'none') {\n return 'none';\n }\n }\n\n return 'drawer';\n}\n\nfunction normalizeNumberInput(value: unknown): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsed = Number.parseFloat(value);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n\n return 0;\n}\n\nfunction resolveSideFromDirection(position: TngDrawerPosition, direction: 'ltr' | 'rtl'): TngResolvedDrawerSide {\n if (position === 'start') {\n return direction === 'rtl' ? 'right' : 'left';\n }\n\n return direction === 'rtl' ? 'left' : 'right';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-grid.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/tng-grid.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"tng-grid.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/tng-grid.ts"],"names":[],"mappings":";AAEA,qBAIa,OAAO;IAElB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;yCAFnC,OAAO;2CAAP,OAAO;CAGnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-grid.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/tng-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-grid.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/grid/tng-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,OAAO;IAEC,QAAQ,GAAG,MAAe,CAAC;uGAFnC,OAAO;2FAAP,OAAO;;2FAAP,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE,SAAS;iBACpB;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngGrid]',\n exportAs: 'tngGrid',\n})\nexport class TngGrid {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'grid' as const;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-separator.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/separator/tng-separator.ts"],"names":[],"mappings":";AAEA,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhE,
|
|
1
|
+
{"version":3,"file":"tng-separator.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/separator/tng-separator.ts"],"names":[],"mappings":";AAEA,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhE,qBAIa,YAAY;IACvB,SAAgB,UAAU,8EAEvB;IACH,SAAgB,WAAW,+DAAgD;IAG3E,SAAS,KAAK,cAAc,IAAI,MAAM,GAAG,IAAI,CAE5C;IAGD,SAAS,KAAK,mBAAmB,IAAI,uBAAuB,GAAG,IAAI,CAMlE;IAGD,SAAS,KAAK,mBAAmB,IAAI,uBAAuB,CAE3D;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAGnD,SAAS,KAAK,QAAQ,IAAI,WAAW,GAAG,IAAI,CAE3C;yCA/BU,YAAY;2CAAZ,YAAY;CAgCxB"}
|
|
@@ -27,7 +27,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
27
27
|
args: [{
|
|
28
28
|
selector: '[tngSeparator]',
|
|
29
29
|
exportAs: 'tngSeparator',
|
|
30
|
-
standalone: true,
|
|
31
30
|
}]
|
|
32
31
|
}], propDecorators: { decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], ariaHiddenAttr: [{
|
|
33
32
|
type: HostBinding,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-separator.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/separator/tng-separator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-separator.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/separator/tng-separator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAQhF,MAAM,OAAO,YAAY;IACP,UAAU,GAAG,KAAK,CAA4B,IAAI,uDAChE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,WAAW,GAAG,KAAK,CAA0B,YAAY,uDAAC,CAAC;IAE3E,IACc,cAAc;QAC1B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,IACc,mBAAmB;QAC/B,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,IACc,mBAAmB;QAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAGkB,QAAQ,GAAG,WAAoB,CAAC;IAEnD,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAChD,CAAC;uGA/BU,YAAY;2FAAZ,YAAY;;2FAAZ,YAAY;kBAJxB,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;iBACzB;;sBAOE,WAAW;uBAAC,kBAAkB;;sBAK9B,WAAW;uBAAC,uBAAuB;;sBASnC,WAAW;uBAAC,uBAAuB;;sBAKnC,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,WAAW","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nexport type TngSeparatorOrientation = 'horizontal' | 'vertical';\n\n@Directive({\n selector: '[tngSeparator]',\n exportAs: 'tngSeparator',\n})\nexport class TngSeparator {\n public readonly decorative = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly orientation = input<TngSeparatorOrientation>('horizontal');\n\n @HostBinding('attr.aria-hidden')\n protected get ariaHiddenAttr(): 'true' | null {\n return this.decorative() ? 'true' : null;\n }\n\n @HostBinding('attr.aria-orientation')\n protected get ariaOrientationAttr(): TngSeparatorOrientation | null {\n if (this.decorative()) {\n return null;\n }\n\n return this.orientation();\n }\n\n @HostBinding('attr.data-orientation')\n protected get dataOrientationAttr(): TngSeparatorOrientation {\n return this.orientation();\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'separator' as const;\n\n @HostBinding('attr.role')\n protected get roleAttr(): 'separator' | null {\n return this.decorative() ? null : 'separator';\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-stepper.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/stepper/tng-stepper.ts"],"names":[],"mappings":";AAEA,
|
|
1
|
+
{"version":3,"file":"tng-stepper.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/stepper/tng-stepper.ts"],"names":[],"mappings":";AAEA,qBAIa,UAAU;IAErB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;yCAFtC,UAAU;2CAAV,UAAU;CAGtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-stepper.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/stepper/tng-stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-stepper.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/stepper/tng-stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAMvD,MAAM,OAAO,UAAU;IAEF,QAAQ,GAAG,SAAkB,CAAC;uGAFtC,UAAU;2FAAV,UAAU;;2FAAV,UAAU;kBAJtB,SAAS;mBAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,YAAY;iBACvB;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngStepper]',\n exportAs: 'tngStepper',\n})\nexport class TngStepper {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'stepper' as const;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree-group.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACT,MAAM,EACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;;AAE9C,
|
|
1
|
+
{"version":3,"file":"tng-tree-group.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACT,MAAM,EACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;;AAE9C,qBAIa,YAAa,YAAW,MAAM,EAAE,SAAS;IACpD,SAAgB,UAAU,qBAA2D;IAGrF,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;IAGpD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAE3C,QAAQ,IAAI,IAAI;IAIhB,WAAW,IAAI,IAAI;yCAbR,YAAY;2CAAZ,YAAY;CAgBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree-group.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,WAAW,EACX,MAAM,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-tree-group.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,WAAW,EACX,MAAM,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;;AAM9C,MAAM,OAAO,YAAY;IACP,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAGlE,QAAQ,GAAG,YAAqB,CAAC;IAGjC,IAAI,GAAG,OAAgB,CAAC;IAE3C,QAAQ;QACN,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAC1C,CAAC;uGAfU,YAAY;2FAAZ,YAAY;;2FAAZ,YAAY;kBAJxB,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;iBACzB;;sBAIE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,WAAW","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TngTreeItem } from './tng-tree-item';\n\n@Directive({\n selector: '[tngTreeGroup]',\n exportAs: 'tngTreeGroup',\n})\nexport class TngTreeGroup implements OnInit, OnDestroy {\n public readonly parentItem = inject(TngTreeItem, { optional: true, skipSelf: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tree-group' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'group' as const;\n\n ngOnInit(): void {\n this.parentItem?.registerChildGroup();\n }\n\n ngOnDestroy(): void {\n this.parentItem?.unregisterChildGroup();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree-indicator.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-indicator.ts"],"names":[],"mappings":";AASA,
|
|
1
|
+
{"version":3,"file":"tng-tree-indicator.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-indicator.ts"],"names":[],"mappings":";AASA,qBAIa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2C;IAChE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAG5D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,gBAAgB,CAAU;IAGxD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAE7C;IAGD,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;yCAb/B,gBAAgB;2CAAhB,gBAAgB;CAmB5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree-indicator.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-tree-indicator.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;;AAM9C,MAAM,OAAO,gBAAgB;IACV,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAGzC,QAAQ,GAAG,gBAAyB,CAAC;IAExD,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAGS,OAAO,CAAC,KAAiB;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;uGAlBU,gBAAgB;2FAAhB,gBAAgB;;2FAAhB,gBAAgB;kBAJ5B,SAAS;mBAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,kBAAkB;iBAC7B;;sBAKE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,oBAAoB;;sBAKhC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {\n Directive,\n HostBinding,\n HostListener,\n inject,\n} from '@angular/core';\nimport { TngTree } from './tng-tree';\nimport { TngTreeItem } from './tng-tree-item';\n\n@Directive({\n selector: '[tngTreeIndicator]',\n exportAs: 'tngTreeIndicator',\n})\nexport class TngTreeIndicator {\n private readonly item = inject(TngTreeItem, { optional: true });\n private readonly tree = inject(TngTree, { optional: true });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tree-indicator' as const;\n\n @HostBinding('attr.data-expanded')\n protected get dataExpanded(): 'true' | 'false' {\n return this.item?.isExpanded() ? 'true' : 'false';\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.item && this.tree) {\n this.tree.onIndicatorClicked(this.item);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree-item.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-item.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;;AAE/B,
|
|
1
|
+
{"version":3,"file":"tng-tree-item.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-item.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;;AAE/B,qBAIa,WAAY,YAAW,MAAM,EAAE,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0H;IAEtJ,SAAgB,KAAK,0EAElB;IAEH,SAAgB,QAAQ,iFAErB;IAEH,SAAgB,eAAe,qEAE5B;IAEH,SAAgB,QAAQ,qEAErB;IAEH,SAAgB,cAAc,oDAAqB;IAEnD,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,WAAW,CAAU;IAGnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAG9C,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAG1C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,IAAI,CAG1C;IAGD,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAE7C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAG7C;IAGD,SAAS,KAAK,YAAY,IAAI,MAAM,GAAG,OAAO,CAE7C;IAEM,QAAQ,IAAI,IAAI;IAOhB,WAAW,IAAI,IAAI;IAInB,QAAQ,IAAI,YAAY;IAIxB,cAAc,IAAI,WAAW;IAI7B,aAAa,IAAI,WAAW,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQpC,SAAS,IAAI,OAAO;IAIpB,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAKnC,SAAS,CAAC,OAAO,IAAI,IAAI;IAKzB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMnC,SAAS,IAAI,IAAI;yCA5Hb,WAAW;2CAAX,WAAW;CA+HvB"}
|
|
@@ -97,7 +97,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
97
97
|
args: [{
|
|
98
98
|
selector: '[tngTreeItem]',
|
|
99
99
|
exportAs: 'tngTreeItem',
|
|
100
|
-
standalone: true,
|
|
101
100
|
}]
|
|
102
101
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }], dataSlot: [{
|
|
103
102
|
type: HostBinding,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree-item.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,EACN,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;;
|
|
1
|
+
{"version":3,"file":"tng-tree-item.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n output,\n forwardRef,\n} from '@angular/core';\nimport type { OnInit, OnDestroy } from '@angular/core';\nimport { TngTree } from './tng-tree';\nimport { TngTreeGroup } from './tng-tree-group';\nimport {\n normalizeOptionalBooleanAttribute,\n normalizeTreeBooleanInput,\n normalizeTreeValue,\n type TngTreeValue,\n} from './tng-tree.transforms';\n\n@Directive({\n selector: '[tngTreeItem]',\n exportAs: 'tngTreeItem',\n})\nexport class TngTreeItem implements OnInit, OnDestroy {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(TngTree, { optional: true });\n private readonly parentGroup: TngTreeGroup | null = inject(forwardRef(() => TngTreeGroup), { optional: true, skipSelf: true }) as TngTreeGroup | null;\n\n public readonly value = input.required<TngTreeValue, unknown>({\n transform: normalizeTreeValue,\n });\n \n public readonly expanded = input<boolean, unknown>(undefined, {\n transform: normalizeOptionalBooleanAttribute,\n });\n \n public readonly defaultExpanded = input<boolean, unknown>(false, {\n transform: normalizeTreeBooleanInput,\n });\n \n public readonly disabled = input<boolean, unknown>(false, {\n transform: normalizeTreeBooleanInput,\n });\n\n public readonly expandedChange = output<boolean>();\n\n private uncontrolledExpanded = false;\n private hasChildrenStatus = false;\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'tree-item' as const;\n\n @HostBinding('attr.role')\n protected readonly role = 'treeitem' as const;\n\n @HostBinding('attr.aria-selected')\n protected get ariaSelected(): string | null {\n if (!this.tree || this.tree.selectionMode() === 'none') return null;\n return this.tree.isItemSelected(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.aria-expanded')\n protected get ariaExpanded(): string | null {\n if (!this.canExpand()) return null;\n return this.isExpanded() ? 'true' : 'false';\n }\n\n @HostBinding('attr.tabindex')\n protected get tabIndex(): string {\n return this.tree ? this.tree.getTriggerTabIndex(this) : '-1';\n }\n\n @HostBinding('attr.data-expanded')\n protected get dataExpanded(): 'true' | 'false' {\n return this.isExpanded() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-selected')\n protected get dataSelected(): 'true' | 'false' {\n if (!this.tree || this.tree.selectionMode() === 'none') return 'false';\n return this.tree.isItemSelected(this) ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabled(): 'true' | 'false' {\n return this.tree?.isItemDisabled(this) ? 'true' : 'false';\n }\n\n public ngOnInit(): void {\n if (this.expanded() === undefined) {\n this.uncontrolledExpanded = this.defaultExpanded();\n }\n this.tree?.registerItem(this);\n }\n\n public ngOnDestroy(): void {\n this.tree?.unregisterItem(this);\n }\n\n public getValue(): TngTreeValue {\n return this.value();\n }\n\n public getHostElement(): HTMLElement {\n return this.hostRef.nativeElement;\n }\n\n public getParentItem(): TngTreeItem | null {\n return this.parentGroup?.parentItem ?? null;\n }\n\n public isExpanded(): boolean {\n return this.expanded() ?? this.uncontrolledExpanded;\n }\n\n public setExpanded(expanded: boolean): void {\n if (this.disabled()) return;\n if (this.expanded() === undefined) {\n this.uncontrolledExpanded = expanded;\n }\n this.expandedChange.emit(expanded);\n }\n\n public canExpand(): boolean {\n return this.hasChildrenStatus || this.expanded() !== undefined || this.defaultExpanded();\n }\n\n public registerChildGroup(): void {\n this.hasChildrenStatus = true;\n }\n\n public unregisterChildGroup(): void {\n this.hasChildrenStatus = false;\n }\n\n @HostListener('focus')\n protected onFocus(): void {\n this.tree?.onItemFocused(this);\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n event.stopPropagation();\n this.tree?.onItemClicked(this);\n this.focusHost(); // Ensure it receives focus mentally on click\n }\n\n public focusHost(): void {\n this.hostRef.nativeElement.focus();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tng-tree.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,SAAS,EACV,MAAM,eAAe,CAAC;AAcvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAML,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;;AAE/B,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA+CpG,
|
|
1
|
+
{"version":3,"file":"tng-tree.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/layout/tree/tng-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -520,7 +520,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
520
520
|
args: [{
|
|
521
521
|
selector: '[tngTree]',
|
|
522
522
|
exportAs: 'tngTree',
|
|
523
|
-
standalone: true,
|
|
524
523
|
}]
|
|
525
524
|
}], propDecorators: { selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], dataSlot: [{
|
|
526
525
|
type: HostBinding,
|