@tailng-ui/primitives 0.11.0 → 0.13.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.
Files changed (274) hide show
  1. package/README.md +97 -11
  2. package/package.json +12 -6
  3. package/src/lib/feedback/empty/tng-empty.d.ts +11 -0
  4. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
  5. package/src/lib/feedback/empty/tng-empty.js +76 -61
  6. package/src/lib/feedback/empty/tng-empty.js.map +1 -1
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +5 -0
  8. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  9. package/src/lib/feedback/progress-bar/tng-progress-bar.js +50 -52
  10. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  11. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +3 -0
  12. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  13. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +35 -40
  14. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  15. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +3 -0
  16. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  17. package/src/lib/feedback/skeleton/tng-skeleton.js +30 -31
  18. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  19. package/src/lib/feedback/toast/tng-toast.d.ts +5 -0
  20. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
  21. package/src/lib/feedback/toast/tng-toast.js +51 -47
  22. package/src/lib/feedback/toast/tng-toast.js.map +1 -1
  23. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +3 -0
  24. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -1
  25. package/src/lib/form/_shared/id/tng-unique-id.service.js +9 -7
  26. package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -1
  27. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +3 -0
  28. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  29. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +22 -20
  30. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  31. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +9 -0
  32. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
  33. package/src/lib/form/_shared/select/tng-select.parts.shared.js +106 -98
  34. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
  35. package/src/lib/form/autocomplete/tng-autocomplete.d.ts +3 -0
  36. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
  37. package/src/lib/form/autocomplete/tng-autocomplete.js +40 -38
  38. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
  39. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +6 -0
  40. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
  41. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +54 -46
  42. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
  43. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +3 -0
  44. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  45. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +22 -20
  46. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  47. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +9 -0
  48. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
  49. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +109 -101
  50. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
  51. package/src/lib/form/button-toggle/tng-button-toggle.d.ts +5 -0
  52. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
  53. package/src/lib/form/button-toggle/tng-button-toggle.js +121 -155
  54. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
  55. package/src/lib/form/checkbox/tng-checkbox.d.ts +3 -0
  56. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
  57. package/src/lib/form/checkbox/tng-checkbox.js +95 -106
  58. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
  59. package/src/lib/form/chips/tng-chips.d.ts +7 -0
  60. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  61. package/src/lib/form/chips/tng-chips.js +107 -112
  62. package/src/lib/form/chips/tng-chips.js.map +1 -1
  63. package/src/lib/form/combobox/tng-combobox.d.ts +3 -0
  64. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
  65. package/src/lib/form/combobox/tng-combobox.js +16 -13
  66. package/src/lib/form/combobox/tng-combobox.js.map +1 -1
  67. package/src/lib/form/input/tng-input.d.ts +9 -0
  68. package/src/lib/form/input/tng-input.d.ts.map +1 -1
  69. package/src/lib/form/input/tng-input.js +161 -141
  70. package/src/lib/form/input/tng-input.js.map +1 -1
  71. package/src/lib/form/input-otp/tng-input-otp.d.ts +3 -0
  72. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  73. package/src/lib/form/input-otp/tng-input-otp.js +58 -69
  74. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  75. package/src/lib/form/label/tng-label.d.ts +3 -0
  76. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  77. package/src/lib/form/label/tng-label.js +24 -25
  78. package/src/lib/form/label/tng-label.js.map +1 -1
  79. package/src/lib/form/listbox/listbox.directive.d.ts +3 -0
  80. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
  81. package/src/lib/form/listbox/listbox.directive.js +45 -43
  82. package/src/lib/form/listbox/listbox.directive.js.map +1 -1
  83. package/src/lib/form/listbox/option.directive.d.ts +3 -0
  84. package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
  85. package/src/lib/form/listbox/option.directive.js +40 -38
  86. package/src/lib/form/listbox/option.directive.js.map +1 -1
  87. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +3 -0
  88. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
  89. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +23 -21
  90. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
  91. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +3 -0
  92. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
  93. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +25 -23
  94. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
  95. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +3 -0
  96. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
  97. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +35 -33
  98. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
  99. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +6 -0
  100. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
  101. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +57 -46
  102. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
  103. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +3 -0
  104. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  105. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +16 -14
  106. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  107. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +3 -0
  108. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  109. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +52 -50
  110. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  111. package/src/lib/form/multi-select/tng-multi-select.d.ts +3 -0
  112. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
  113. package/src/lib/form/multi-select/tng-multi-select.js +41 -36
  114. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
  115. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +6 -0
  116. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
  117. package/src/lib/form/multi-select/tng-multi-select.listbox.js +50 -45
  118. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
  119. package/src/lib/form/multiselect/tng-multiselect.d.ts +3 -0
  120. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
  121. package/src/lib/form/multiselect/tng-multiselect.js +16 -13
  122. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
  123. package/src/lib/form/radio/tng-radio.d.ts +3 -0
  124. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  125. package/src/lib/form/radio/tng-radio.js +91 -100
  126. package/src/lib/form/radio/tng-radio.js.map +1 -1
  127. package/src/lib/form/select/tng-select.d.ts +3 -0
  128. package/src/lib/form/select/tng-select.d.ts.map +1 -1
  129. package/src/lib/form/select/tng-select.js +41 -36
  130. package/src/lib/form/select/tng-select.js.map +1 -1
  131. package/src/lib/form/select/tng-select.listbox.d.ts +6 -0
  132. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
  133. package/src/lib/form/select/tng-select.listbox.js +50 -45
  134. package/src/lib/form/select/tng-select.listbox.js.map +1 -1
  135. package/src/lib/form/slider/tng-slider.d.ts +3 -0
  136. package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
  137. package/src/lib/form/slider/tng-slider.js +42 -49
  138. package/src/lib/form/slider/tng-slider.js.map +1 -1
  139. package/src/lib/form/switch/tng-switch.d.ts +3 -0
  140. package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
  141. package/src/lib/form/switch/tng-switch.js +44 -47
  142. package/src/lib/form/switch/tng-switch.js.map +1 -1
  143. package/src/lib/form/textarea/tng-textarea.d.ts +4 -0
  144. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  145. package/src/lib/form/textarea/tng-textarea.js +40 -41
  146. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  147. package/src/lib/form/toggle/tng-toggle.d.ts +3 -0
  148. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
  149. package/src/lib/form/toggle/tng-toggle.js +71 -74
  150. package/src/lib/form/toggle/tng-toggle.js.map +1 -1
  151. package/src/lib/form/toggle-group/tng-toggle-group.d.ts +3 -0
  152. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
  153. package/src/lib/form/toggle-group/tng-toggle-group.js +48 -49
  154. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
  155. package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
  156. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  157. package/src/lib/layout/accordion/tng-accordion.js +143 -155
  158. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  159. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +3 -0
  160. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
  161. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +16 -13
  162. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
  163. package/src/lib/layout/card/tng-card.d.ts +21 -0
  164. package/src/lib/layout/card/tng-card.d.ts.map +1 -1
  165. package/src/lib/layout/card/tng-card.js +151 -121
  166. package/src/lib/layout/card/tng-card.js.map +1 -1
  167. package/src/lib/layout/collapsible/tng-collapsible.d.ts +7 -0
  168. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
  169. package/src/lib/layout/collapsible/tng-collapsible.js +82 -83
  170. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
  171. package/src/lib/layout/drawer/tng-drawer.d.ts +13 -0
  172. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
  173. package/src/lib/layout/drawer/tng-drawer.js +217 -226
  174. package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
  175. package/src/lib/layout/grid/tng-grid.d.ts +3 -0
  176. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
  177. package/src/lib/layout/grid/tng-grid.js +16 -13
  178. package/src/lib/layout/grid/tng-grid.js.map +1 -1
  179. package/src/lib/layout/separator/tng-separator.d.ts +3 -0
  180. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
  181. package/src/lib/layout/separator/tng-separator.js +30 -29
  182. package/src/lib/layout/separator/tng-separator.js.map +1 -1
  183. package/src/lib/layout/stepper/tng-stepper.d.ts +3 -0
  184. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  185. package/src/lib/layout/stepper/tng-stepper.js +16 -13
  186. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  187. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +3 -0
  188. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
  189. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +54 -11
  190. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
  191. package/src/lib/layout/tree/tng-tree-group.d.ts +3 -0
  192. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
  193. package/src/lib/layout/tree/tng-tree-group.js +19 -17
  194. package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
  195. package/src/lib/layout/tree/tng-tree-indicator.d.ts +3 -0
  196. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
  197. package/src/lib/layout/tree/tng-tree-indicator.js +22 -20
  198. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
  199. package/src/lib/layout/tree/tng-tree-item.d.ts +3 -0
  200. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
  201. package/src/lib/layout/tree/tng-tree-item.js +47 -53
  202. package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
  203. package/src/lib/layout/tree/tng-tree.d.ts +3 -0
  204. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  205. package/src/lib/layout/tree/tng-tree.js +39 -43
  206. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  207. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +11 -0
  208. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
  209. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +79 -64
  210. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
  211. package/src/lib/navigation/context-menu/tng-context-menu.d.ts +5 -0
  212. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
  213. package/src/lib/navigation/context-menu/tng-context-menu.js +44 -42
  214. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
  215. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +3 -0
  216. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
  217. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +16 -13
  218. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
  219. package/src/lib/navigation/menu/tng-menu.d.ts +13 -0
  220. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
  221. package/src/lib/navigation/menu/tng-menu.js +184 -186
  222. package/src/lib/navigation/menu/tng-menu.js.map +1 -1
  223. package/src/lib/navigation/menubar/tng-menubar.d.ts +5 -0
  224. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
  225. package/src/lib/navigation/menubar/tng-menubar.js +72 -70
  226. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
  227. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +3 -0
  228. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
  229. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +16 -13
  230. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
  231. package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -0
  232. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
  233. package/src/lib/navigation/tabs/tng-tabs.js +234 -258
  234. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
  235. package/src/lib/navigation/toolbar/tng-toolbar.d.ts +3 -0
  236. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
  237. package/src/lib/navigation/toolbar/tng-toolbar.js +16 -13
  238. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
  239. package/src/lib/overlay/dialog/tng-dialog.d.ts +19 -0
  240. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
  241. package/src/lib/overlay/dialog/tng-dialog.js +249 -255
  242. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
  243. package/src/lib/overlay/popover/tng-popover.d.ts +9 -0
  244. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  245. package/src/lib/overlay/popover/tng-popover.js +152 -170
  246. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
  247. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +7 -0
  248. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  249. package/src/lib/overlay/tooltip/tng-tooltip.js +124 -127
  250. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  251. package/src/lib/utility/avatar/tng-avatar.d.ts +7 -0
  252. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
  253. package/src/lib/utility/avatar/tng-avatar.js +46 -37
  254. package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
  255. package/src/lib/utility/badge/tng-badge.d.ts +3 -0
  256. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  257. package/src/lib/utility/badge/tng-badge.js +26 -39
  258. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  259. package/src/lib/utility/code-block/tng-code-block.d.ts +11 -0
  260. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
  261. package/src/lib/utility/code-block/tng-code-block.js +76 -61
  262. package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
  263. package/src/lib/utility/copy/tng-copy.d.ts +3 -0
  264. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  265. package/src/lib/utility/copy/tng-copy.js +44 -51
  266. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  267. package/src/lib/utility/press/tng-press.d.ts +3 -0
  268. package/src/lib/utility/press/tng-press.d.ts.map +1 -1
  269. package/src/lib/utility/press/tng-press.js +55 -60
  270. package/src/lib/utility/press/tng-press.js.map +1 -1
  271. package/src/lib/utility/tag/tng-tag.d.ts +7 -0
  272. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  273. package/src/lib/utility/tag/tng-tag.js +94 -93
  274. package/src/lib/utility/tag/tng-tag.js.map +1 -1
@@ -1,7 +1,7 @@
1
- import { __decorate } from "tslib";
2
1
  import { Directive, ElementRef, HostBinding, HostListener, afterNextRender, booleanAttribute, effect, inject, Injector, input, output, signal, } from '@angular/core';
3
2
  import { createOverlayFocusHandoffController, resolveFocusableElements, createTngIdFactory, } from '@tailng-ui/cdk';
4
3
  import { tngPrimitiveOverlayRuntime } from '../tng-overlay-runtime';
4
+ import * as i0 from "@angular/core";
5
5
  const createPopoverId = createTngIdFactory('tng-popover');
6
6
  const createPopoverPanelId = createTngIdFactory('tng-popover-panel');
7
7
  const createPopoverFocusableId = createTngIdFactory('tng-popover-focusable');
@@ -48,50 +48,29 @@ export function resolvePopoverMarkedInitialElement(container) {
48
48
  }
49
49
  return resolvePopoverFocusableElements(markedInitial)[0] ?? null;
50
50
  }
51
- let TngPopover = class TngPopover {
52
- openInput = input(undefined, {
53
- alias: 'open',
54
- transform: normalizeOptionalBooleanInput,
55
- });
56
- defaultOpen = input(false, {
57
- transform: booleanAttribute,
58
- });
59
- disabled = input(false, {
60
- transform: booleanAttribute,
61
- });
62
- closeOnEscape = input(true, {
63
- transform: booleanAttribute,
64
- });
65
- closeOnOutsidePointer = input(true, {
66
- transform: booleanAttribute,
67
- });
68
- restoreFocus = input(true, {
69
- transform: booleanAttribute,
70
- });
71
- autoFocus = input('first-focusable', {
72
- transform: (value) => {
51
+ export class TngPopover {
52
+ openInput = input(undefined, { ...(ngDevMode ? { debugName: "openInput" } : {}), alias: 'open',
53
+ transform: normalizeOptionalBooleanInput });
54
+ defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : {}), transform: booleanAttribute });
55
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
56
+ closeOnEscape = input(true, { ...(ngDevMode ? { debugName: "closeOnEscape" } : {}), transform: booleanAttribute });
57
+ closeOnOutsidePointer = input(true, { ...(ngDevMode ? { debugName: "closeOnOutsidePointer" } : {}), transform: booleanAttribute });
58
+ restoreFocus = input(true, { ...(ngDevMode ? { debugName: "restoreFocus" } : {}), transform: booleanAttribute });
59
+ autoFocus = input('first-focusable', { ...(ngDevMode ? { debugName: "autoFocus" } : {}), transform: (value) => {
73
60
  return value === 'none' || value === 'panel' || value === 'first-focusable' ? value : 'first-focusable';
74
- },
75
- });
76
- side = input('bottom', {
77
- transform: (value) => {
61
+ } });
62
+ side = input('bottom', { ...(ngDevMode ? { debugName: "side" } : {}), transform: (value) => {
78
63
  return value === 'top' || value === 'right' || value === 'bottom' || value === 'left' ? value : 'bottom';
79
- },
80
- });
81
- align = input('start', {
82
- transform: (value) => {
64
+ } });
65
+ align = input('start', { ...(ngDevMode ? { debugName: "align" } : {}), transform: (value) => {
83
66
  return value === 'start' || value === 'center' || value === 'end' ? value : 'start';
84
- },
85
- });
86
- panelRole = input('dialog', {
87
- transform: (value) => {
67
+ } });
68
+ panelRole = input('dialog', { ...(ngDevMode ? { debugName: "panelRole" } : {}), transform: (value) => {
88
69
  return value === 'dialog' || value === 'menu' || value === 'listbox' || value === 'region' || value === 'none'
89
70
  ? value
90
71
  : 'dialog';
91
- },
92
- });
93
- ariaHasPopup = input('dialog', {
94
- transform: (value) => {
72
+ } });
73
+ ariaHasPopup = input('dialog', { ...(ngDevMode ? { debugName: "ariaHasPopup" } : {}), transform: (value) => {
95
74
  return value === 'dialog'
96
75
  || value === 'menu'
97
76
  || value === 'listbox'
@@ -100,16 +79,15 @@ let TngPopover = class TngPopover {
100
79
  || value === 'true'
101
80
  ? value
102
81
  : 'dialog';
103
- },
104
- });
105
- ariaLabel = input(null);
82
+ } });
83
+ ariaLabel = input(null, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
106
84
  openChange = output();
107
85
  closed = output();
108
86
  hostRef = inject(ElementRef);
109
87
  injector = inject(Injector);
110
88
  documentRef = popoverGlobalDocument;
111
89
  instanceId = createPopoverId();
112
- uncontrolledOpen = signal(false);
90
+ uncontrolledOpen = signal(false, ...(ngDevMode ? [{ debugName: "uncontrolledOpen" }] : []));
113
91
  openStateEffect = effect(() => {
114
92
  if (!this.initialized) {
115
93
  return;
@@ -119,7 +97,7 @@ let TngPopover = class TngPopover {
119
97
  return;
120
98
  }
121
99
  this.deactivatePopover();
122
- });
100
+ }, ...(ngDevMode ? [{ debugName: "openStateEffect" }] : []));
123
101
  initialized = false;
124
102
  isActive = false;
125
103
  isFocusLayerRegistered = false;
@@ -399,39 +377,39 @@ let TngPopover = class TngPopover {
399
377
  const element = this.documentRef.getElementById(id);
400
378
  return element instanceof HTMLElement ? element : null;
401
379
  }
402
- };
403
- __decorate([
404
- HostBinding('attr.data-slot')
405
- ], TngPopover.prototype, "dataSlot", void 0);
406
- __decorate([
407
- HostBinding('attr.data-open')
408
- ], TngPopover.prototype, "dataOpenAttr", null);
409
- __decorate([
410
- HostBinding('attr.data-state')
411
- ], TngPopover.prototype, "dataStateAttr", null);
412
- __decorate([
413
- HostBinding('attr.data-disabled')
414
- ], TngPopover.prototype, "dataDisabledAttr", null);
415
- __decorate([
416
- HostBinding('attr.data-side')
417
- ], TngPopover.prototype, "dataSideAttr", null);
418
- __decorate([
419
- HostBinding('attr.data-align')
420
- ], TngPopover.prototype, "dataAlignAttr", null);
421
- TngPopover = __decorate([
422
- Directive({
423
- selector: '[tngPopover]',
424
- exportAs: 'tngPopover',
425
- standalone: true,
426
- })
427
- ], TngPopover);
428
- export { TngPopover };
429
- let TngPopoverTrigger = class TngPopoverTrigger {
380
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopover, deps: [], target: i0.ɵɵFactoryTarget.Directive });
381
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPopover, isStandalone: true, selector: "[tngPopover]", inputs: { openInput: { classPropertyName: "openInput", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsidePointer: { classPropertyName: "closeOnOutsidePointer", publicName: "closeOnOutsidePointer", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, panelRole: { classPropertyName: "panelRole", publicName: "panelRole", isSignal: true, isRequired: false, transformFunction: null }, ariaHasPopup: { classPropertyName: "ariaHasPopup", publicName: "ariaHasPopup", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange", closed: "closed" }, host: { properties: { "attr.data-slot": "this.dataSlot", "attr.data-open": "this.dataOpenAttr", "attr.data-state": "this.dataStateAttr", "attr.data-disabled": "this.dataDisabledAttr", "attr.data-side": "this.dataSideAttr", "attr.data-align": "this.dataAlignAttr" } }, exportAs: ["tngPopover"], ngImport: i0 });
382
+ }
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopover, decorators: [{
384
+ type: Directive,
385
+ args: [{
386
+ selector: '[tngPopover]',
387
+ exportAs: 'tngPopover',
388
+ standalone: true,
389
+ }]
390
+ }], propDecorators: { openInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], closeOnOutsidePointer: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsidePointer", required: false }] }], restoreFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreFocus", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], panelRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelRole", required: false }] }], ariaHasPopup: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaHasPopup", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }], closed: [{ type: i0.Output, args: ["closed"] }], dataSlot: [{
391
+ type: HostBinding,
392
+ args: ['attr.data-slot']
393
+ }], dataOpenAttr: [{
394
+ type: HostBinding,
395
+ args: ['attr.data-open']
396
+ }], dataStateAttr: [{
397
+ type: HostBinding,
398
+ args: ['attr.data-state']
399
+ }], dataDisabledAttr: [{
400
+ type: HostBinding,
401
+ args: ['attr.data-disabled']
402
+ }], dataSideAttr: [{
403
+ type: HostBinding,
404
+ args: ['attr.data-side']
405
+ }], dataAlignAttr: [{
406
+ type: HostBinding,
407
+ args: ['attr.data-align']
408
+ }] } });
409
+ export class TngPopoverTrigger {
430
410
  hostRef = inject(ElementRef);
431
411
  parentPopover = inject(TngPopover, { optional: true });
432
- popoverFor = input(null, {
433
- alias: 'tngPopoverTrigger',
434
- });
412
+ popoverFor = input(null, { ...(ngDevMode ? { debugName: "popoverFor" } : {}), alias: 'tngPopoverTrigger' });
435
413
  get ariaHasPopupAttr() {
436
414
  return this.resolvePopover()?.ariaHasPopup() ?? 'dialog';
437
415
  }
@@ -463,40 +441,42 @@ let TngPopoverTrigger = class TngPopoverTrigger {
463
441
  resolvePopover() {
464
442
  return this.popoverFor() ?? this.parentPopover;
465
443
  }
466
- };
467
- __decorate([
468
- HostBinding('attr.aria-haspopup')
469
- ], TngPopoverTrigger.prototype, "ariaHasPopupAttr", null);
470
- __decorate([
471
- HostBinding('attr.aria-controls')
472
- ], TngPopoverTrigger.prototype, "ariaControlsAttr", null);
473
- __decorate([
474
- HostBinding('attr.aria-expanded')
475
- ], TngPopoverTrigger.prototype, "ariaExpandedAttr", null);
476
- __decorate([
477
- HostBinding('attr.data-slot')
478
- ], TngPopoverTrigger.prototype, "dataSlot", void 0);
479
- __decorate([
480
- HostBinding('attr.data-open')
481
- ], TngPopoverTrigger.prototype, "dataOpenAttr", null);
482
- __decorate([
483
- HostBinding('attr.data-state')
484
- ], TngPopoverTrigger.prototype, "dataStateAttr", null);
485
- __decorate([
486
- HostBinding('attr.data-disabled')
487
- ], TngPopoverTrigger.prototype, "dataDisabledAttr", null);
488
- __decorate([
489
- HostListener('click')
490
- ], TngPopoverTrigger.prototype, "onClick", null);
491
- TngPopoverTrigger = __decorate([
492
- Directive({
493
- selector: '[tngPopoverTrigger]',
494
- exportAs: 'tngPopoverTrigger',
495
- standalone: true,
496
- })
497
- ], TngPopoverTrigger);
498
- export { TngPopoverTrigger };
499
- let TngPopoverPanel = class TngPopoverPanel {
444
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopoverTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
445
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPopoverTrigger, isStandalone: true, selector: "[tngPopoverTrigger]", inputs: { popoverFor: { classPropertyName: "popoverFor", publicName: "tngPopoverTrigger", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "attr.aria-haspopup": "this.ariaHasPopupAttr", "attr.aria-controls": "this.ariaControlsAttr", "attr.aria-expanded": "this.ariaExpandedAttr", "attr.data-slot": "this.dataSlot", "attr.data-open": "this.dataOpenAttr", "attr.data-state": "this.dataStateAttr", "attr.data-disabled": "this.dataDisabledAttr" } }, exportAs: ["tngPopoverTrigger"], ngImport: i0 });
446
+ }
447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopoverTrigger, decorators: [{
448
+ type: Directive,
449
+ args: [{
450
+ selector: '[tngPopoverTrigger]',
451
+ exportAs: 'tngPopoverTrigger',
452
+ standalone: true,
453
+ }]
454
+ }], propDecorators: { popoverFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngPopoverTrigger", required: false }] }], ariaHasPopupAttr: [{
455
+ type: HostBinding,
456
+ args: ['attr.aria-haspopup']
457
+ }], ariaControlsAttr: [{
458
+ type: HostBinding,
459
+ args: ['attr.aria-controls']
460
+ }], ariaExpandedAttr: [{
461
+ type: HostBinding,
462
+ args: ['attr.aria-expanded']
463
+ }], dataSlot: [{
464
+ type: HostBinding,
465
+ args: ['attr.data-slot']
466
+ }], dataOpenAttr: [{
467
+ type: HostBinding,
468
+ args: ['attr.data-open']
469
+ }], dataStateAttr: [{
470
+ type: HostBinding,
471
+ args: ['attr.data-state']
472
+ }], dataDisabledAttr: [{
473
+ type: HostBinding,
474
+ args: ['attr.data-disabled']
475
+ }], onClick: [{
476
+ type: HostListener,
477
+ args: ['click']
478
+ }] } });
479
+ export class TngPopoverPanel {
500
480
  popover = inject(TngPopover);
501
481
  hostRef = inject(ElementRef);
502
482
  generatedId = createPopoverPanelId();
@@ -538,53 +518,53 @@ let TngPopoverPanel = class TngPopoverPanel {
538
518
  onFocusIn(target) {
539
519
  this.popover.recordFocusedElement(target);
540
520
  }
541
- };
542
- __decorate([
543
- HostBinding('attr.data-slot')
544
- ], TngPopoverPanel.prototype, "dataSlot", void 0);
545
- __decorate([
546
- HostBinding('attr.data-open')
547
- ], TngPopoverPanel.prototype, "dataOpenAttr", null);
548
- __decorate([
549
- HostBinding('attr.data-state')
550
- ], TngPopoverPanel.prototype, "dataStateAttr", null);
551
- __decorate([
552
- HostBinding('attr.data-side')
553
- ], TngPopoverPanel.prototype, "dataSideAttr", null);
554
- __decorate([
555
- HostBinding('attr.data-align')
556
- ], TngPopoverPanel.prototype, "dataAlignAttr", null);
557
- __decorate([
558
- HostBinding('attr.hidden')
559
- ], TngPopoverPanel.prototype, "hiddenAttr", null);
560
- __decorate([
561
- HostBinding('attr.id')
562
- ], TngPopoverPanel.prototype, "idAttr", null);
563
- __decorate([
564
- HostBinding('attr.role')
565
- ], TngPopoverPanel.prototype, "roleAttr", null);
566
- __decorate([
567
- HostBinding('attr.aria-label')
568
- ], TngPopoverPanel.prototype, "ariaLabelAttr", null);
569
- __decorate([
570
- HostBinding('attr.tabindex')
571
- ], TngPopoverPanel.prototype, "tabIndexAttr", void 0);
572
- __decorate([
573
- HostListener('focusin', ['$event.target'])
574
- ], TngPopoverPanel.prototype, "onFocusIn", null);
575
- TngPopoverPanel = __decorate([
576
- Directive({
577
- selector: '[tngPopoverPanel], [tngPopoverContent]',
578
- exportAs: 'tngPopoverPanel',
579
- standalone: true,
580
- })
581
- ], TngPopoverPanel);
582
- export { TngPopoverPanel };
583
- let TngPopoverClose = class TngPopoverClose {
521
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopoverPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
522
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngPopoverPanel, isStandalone: true, selector: "[tngPopoverPanel], [tngPopoverContent]", host: { listeners: { "focusin": "onFocusIn($event.target)" }, properties: { "attr.data-slot": "this.dataSlot", "attr.data-open": "this.dataOpenAttr", "attr.data-state": "this.dataStateAttr", "attr.data-side": "this.dataSideAttr", "attr.data-align": "this.dataAlignAttr", "attr.hidden": "this.hiddenAttr", "attr.id": "this.idAttr", "attr.role": "this.roleAttr", "attr.aria-label": "this.ariaLabelAttr", "attr.tabindex": "this.tabIndexAttr" } }, exportAs: ["tngPopoverPanel"], ngImport: i0 });
523
+ }
524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopoverPanel, decorators: [{
525
+ type: Directive,
526
+ args: [{
527
+ selector: '[tngPopoverPanel], [tngPopoverContent]',
528
+ exportAs: 'tngPopoverPanel',
529
+ standalone: true,
530
+ }]
531
+ }], propDecorators: { dataSlot: [{
532
+ type: HostBinding,
533
+ args: ['attr.data-slot']
534
+ }], dataOpenAttr: [{
535
+ type: HostBinding,
536
+ args: ['attr.data-open']
537
+ }], dataStateAttr: [{
538
+ type: HostBinding,
539
+ args: ['attr.data-state']
540
+ }], dataSideAttr: [{
541
+ type: HostBinding,
542
+ args: ['attr.data-side']
543
+ }], dataAlignAttr: [{
544
+ type: HostBinding,
545
+ args: ['attr.data-align']
546
+ }], hiddenAttr: [{
547
+ type: HostBinding,
548
+ args: ['attr.hidden']
549
+ }], idAttr: [{
550
+ type: HostBinding,
551
+ args: ['attr.id']
552
+ }], roleAttr: [{
553
+ type: HostBinding,
554
+ args: ['attr.role']
555
+ }], ariaLabelAttr: [{
556
+ type: HostBinding,
557
+ args: ['attr.aria-label']
558
+ }], tabIndexAttr: [{
559
+ type: HostBinding,
560
+ args: ['attr.tabindex']
561
+ }], onFocusIn: [{
562
+ type: HostListener,
563
+ args: ['focusin', ['$event.target']]
564
+ }] } });
565
+ export class TngPopoverClose {
584
566
  popover = inject(TngPopover);
585
- closeReason = input(null, {
586
- alias: 'tngPopoverClose',
587
- });
567
+ closeReason = input(null, { ...(ngDevMode ? { debugName: "closeReason" } : {}), alias: 'tngPopoverClose' });
588
568
  dataSlot = 'popover-close';
589
569
  onClick() {
590
570
  this.popover.requestClose(this.resolveCloseReason());
@@ -596,19 +576,21 @@ let TngPopoverClose = class TngPopoverClose {
596
576
  }
597
577
  return isPopoverCloseReason(raw) ? raw : 'programmatic';
598
578
  }
599
- };
600
- __decorate([
601
- HostBinding('attr.data-slot')
602
- ], TngPopoverClose.prototype, "dataSlot", void 0);
603
- __decorate([
604
- HostListener('click')
605
- ], TngPopoverClose.prototype, "onClick", null);
606
- TngPopoverClose = __decorate([
607
- Directive({
608
- selector: '[tngPopoverClose]',
609
- exportAs: 'tngPopoverClose',
610
- standalone: true,
611
- })
612
- ], TngPopoverClose);
613
- export { TngPopoverClose };
579
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopoverClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
580
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngPopoverClose, isStandalone: true, selector: "[tngPopoverClose]", inputs: { closeReason: { classPropertyName: "closeReason", publicName: "tngPopoverClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngPopoverClose"], ngImport: i0 });
581
+ }
582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngPopoverClose, decorators: [{
583
+ type: Directive,
584
+ args: [{
585
+ selector: '[tngPopoverClose]',
586
+ exportAs: 'tngPopoverClose',
587
+ standalone: true,
588
+ }]
589
+ }], propDecorators: { closeReason: [{ type: i0.Input, args: [{ isSignal: true, alias: "tngPopoverClose", required: false }] }], dataSlot: [{
590
+ type: HostBinding,
591
+ args: ['attr.data-slot']
592
+ }], onClick: [{
593
+ type: HostListener,
594
+ args: ['click']
595
+ }] } });
614
596
  //# sourceMappingURL=tng-popover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-popover.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/overlay/popover/tng-popover.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n OnDestroy,\n OnInit} from '@angular/core';\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n afterNextRender,\n booleanAttribute,\n effect,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n createOverlayFocusHandoffController,\n resolveFocusableElements,\n createTngIdFactory,\n} from '@tailng-ui/cdk';\nimport type { TngOverlayDismissReason } from '@tailng-ui/cdk/overlay';\nimport { tngPrimitiveOverlayRuntime } from '../tng-overlay-runtime';\n\nconst createPopoverId = createTngIdFactory('tng-popover');\nconst createPopoverPanelId = createTngIdFactory('tng-popover-panel');\nconst createPopoverFocusableId = createTngIdFactory('tng-popover-focusable');\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\n\nexport type TngPopoverAutoFocus = 'first-focusable' | 'none' | 'panel';\nexport type TngPopoverSide = 'bottom' | 'left' | 'right' | 'top';\nexport type TngPopoverAlign = 'center' | 'end' | 'start';\nexport type TngPopoverPanelRole = 'dialog' | 'listbox' | 'menu' | 'none' | 'region';\nexport type TngPopoverAriaHasPopup = 'dialog' | 'grid' | 'listbox' | 'menu' | 'tree' | 'true';\nexport type TngPopoverCloseReason = 'escape' | 'outside-pointer' | 'programmatic' | 'trigger-toggle';\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\nfunction isPopoverCloseReason(value: string): value is TngPopoverCloseReason {\n return value === 'escape' || value === 'outside-pointer' || value === 'programmatic' || value === 'trigger-toggle';\n}\n\nfunction mapOverlayDismissReason(reason: TngOverlayDismissReason): TngPopoverCloseReason {\n if (reason === 'escape-key') {\n return 'escape';\n }\n\n if (reason === 'outside-pointer') {\n return 'outside-pointer';\n }\n\n return 'programmatic';\n}\n\nconst popoverGlobalDocument = typeof document === 'undefined' ? null : document;\nconst popoverFocusHandoff = createOverlayFocusHandoffController();\n\nexport function resolvePopoverActiveElement(documentRef: unknown): HTMLElement | null {\n if (!(documentRef instanceof Document)) {\n return null;\n }\n\n const active = documentRef.activeElement;\n return active instanceof HTMLElement ? active : null;\n}\n\nexport function resolvePopoverFocusableElements(container: unknown): readonly HTMLElement[] {\n return resolveFocusableElements(container);\n}\n\nexport function resolvePopoverMarkedInitialElement(container: unknown): HTMLElement | null {\n if (!(container instanceof HTMLElement)) {\n return null;\n }\n\n const markedInitial = container.querySelector<HTMLElement>('[data-tng-popover-initial-focus]');\n if (markedInitial === null) {\n return null;\n }\n\n if (resolvePopoverFocusableElements(container).includes(markedInitial)) {\n return markedInitial;\n }\n\n return resolvePopoverFocusableElements(markedInitial)[0] ?? null;\n}\n\n@Directive({\n selector: '[tngPopover]',\n exportAs: 'tngPopover',\n standalone: true,\n})\nexport class TngPopover implements OnDestroy, OnInit {\n public readonly openInput = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n alias: 'open',\n transform: normalizeOptionalBooleanInput,\n });\n public readonly defaultOpen = input<boolean, OptionalBooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, OptionalBooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly closeOnEscape = input<boolean, OptionalBooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsidePointer = input<boolean, OptionalBooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly restoreFocus = input<boolean, OptionalBooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly autoFocus = input<TngPopoverAutoFocus, string | TngPopoverAutoFocus>('first-focusable', {\n transform: (value: string | TngPopoverAutoFocus): TngPopoverAutoFocus => {\n return value === 'none' || value === 'panel' || value === 'first-focusable' ? value : 'first-focusable';\n },\n });\n public readonly side = input<TngPopoverSide, string | TngPopoverSide>('bottom', {\n transform: (value: string | TngPopoverSide): TngPopoverSide => {\n return value === 'top' || value === 'right' || value === 'bottom' || value === 'left' ? value : 'bottom';\n },\n });\n public readonly align = input<TngPopoverAlign, string | TngPopoverAlign>('start', {\n transform: (value: string | TngPopoverAlign): TngPopoverAlign => {\n return value === 'start' || value === 'center' || value === 'end' ? value : 'start';\n },\n });\n public readonly panelRole = input<TngPopoverPanelRole, string | TngPopoverPanelRole>('dialog', {\n transform: (value: string | TngPopoverPanelRole): TngPopoverPanelRole => {\n return value === 'dialog' || value === 'menu' || value === 'listbox' || value === 'region' || value === 'none'\n ? value\n : 'dialog';\n },\n });\n public readonly ariaHasPopup = input<TngPopoverAriaHasPopup, string | TngPopoverAriaHasPopup>('dialog', {\n transform: (value: string | TngPopoverAriaHasPopup): TngPopoverAriaHasPopup => {\n return value === 'dialog'\n || value === 'menu'\n || value === 'listbox'\n || value === 'tree'\n || value === 'grid'\n || value === 'true'\n ? value\n : 'dialog';\n },\n });\n public readonly ariaLabel = input<string | null>(null);\n\n public readonly openChange = output<boolean>();\n public readonly closed = output<TngPopoverCloseReason>();\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly documentRef = popoverGlobalDocument;\n private readonly instanceId = createPopoverId();\n private readonly uncontrolledOpen = signal(false);\n private readonly openStateEffect = effect((): void => {\n if (!this.initialized) {\n return;\n }\n\n if (this.isOpen()) {\n this.activatePopover();\n return;\n }\n\n this.deactivatePopover();\n });\n\n private initialized = false;\n private isActive = false;\n private isFocusLayerRegistered = false;\n private isOverlayLayerRegistered = false;\n private panelElement: HTMLElement | null = null;\n private panelElementId: string | null = null;\n private triggerElement: HTMLElement | null = null;\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover';\n\n @HostBinding('attr.data-open')\n protected get dataOpenAttr(): 'false' | 'true' {\n return this.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'closed' | 'open' {\n return this.isOpen() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-side')\n protected get dataSideAttr(): TngPopoverSide {\n return this.side();\n }\n\n @HostBinding('attr.data-align')\n protected get dataAlignAttr(): TngPopoverAlign {\n return this.align();\n }\n\n public ngOnInit(): void {\n if (!this.isControlled()) {\n this.uncontrolledOpen.set(this.defaultOpen());\n }\n\n this.initialized = true;\n if (this.isOpen()) {\n this.activatePopover();\n }\n }\n\n public ngOnDestroy(): void {\n this.openStateEffect.destroy();\n this.deactivatePopover();\n }\n\n public isOpen(): boolean {\n return this.openInput() ?? this.uncontrolledOpen();\n }\n\n public openPopover(): void {\n if (this.disabled() || this.isOpen()) {\n return;\n }\n\n this.setOpenState(true);\n }\n\n public closePopover(reason: TngPopoverCloseReason = 'programmatic'): void {\n this.requestClose(reason);\n }\n\n public togglePopover(force?: boolean): void {\n if (force === true) {\n this.openPopover();\n return;\n }\n\n if (force === false) {\n this.closePopover('programmatic');\n return;\n }\n\n if (this.isOpen()) {\n this.requestClose('trigger-toggle');\n return;\n }\n\n this.openPopover();\n }\n\n public requestClose(reason: TngPopoverCloseReason): void {\n if (!this.isOpen()) {\n return;\n }\n\n this.closed.emit(reason);\n this.setOpenState(false);\n }\n\n public registerTrigger(trigger: HTMLElement): void {\n this.triggerElement = trigger;\n }\n\n public unregisterTrigger(trigger: HTMLElement): void {\n if (this.triggerElement === trigger) {\n this.triggerElement = null;\n }\n }\n\n public registerPanel(panel: HTMLElement, id: string): void {\n this.panelElement = panel;\n this.panelElementId = id;\n }\n\n public unregisterPanel(panel: HTMLElement): void {\n if (this.panelElement === panel) {\n this.panelElement = null;\n this.panelElementId = null;\n }\n }\n\n public getPanelId(): string | null {\n return this.panelElementId;\n }\n\n public resolvePanelRole(): Exclude<TngPopoverPanelRole, 'none'> | null {\n const role = this.panelRole();\n return role === 'none' ? null : role;\n }\n\n private activatePopover(): void {\n if (this.isActive) {\n return;\n }\n\n this.isActive = true;\n this.registerFocusLayer();\n this.activateFocusLayer();\n this.registerOverlayLayer();\n this.focusInitialElement();\n }\n\n private deactivatePopover(): void {\n if (!this.isActive) {\n return;\n }\n\n this.isActive = false;\n this.deactivateFocusLayer();\n this.unregisterFocusLayer();\n this.unregisterOverlayLayer();\n }\n\n private focusInitialElement(): void {\n if (this.autoFocus() === 'none') {\n return;\n }\n\n afterNextRender(\n (): void => {\n if (!this.isOpen()) {\n return;\n }\n\n const panel = this.panelElement;\n if (panel === null) {\n return;\n }\n\n if (this.autoFocus() === 'panel') {\n this.focusElement(panel);\n return;\n }\n\n const focusTarget = resolvePopoverMarkedInitialElement(panel) ?? resolvePopoverFocusableElements(panel)[0] ?? panel;\n this.focusElement(focusTarget);\n },\n { injector: this.injector },\n );\n }\n\n public recordFocusedElement(target: unknown): void {\n if (!(target instanceof HTMLElement) || !this.isOpen()) {\n return;\n }\n\n const panel = this.panelElement;\n if (!panel?.contains(target)) {\n return;\n }\n\n const targetId = this.ensureElementId(target);\n popoverFocusHandoff.recordFocus(this.instanceId, targetId);\n }\n\n private setOpenState(next: boolean): void {\n if (this.isOpen() === next) {\n return;\n }\n\n if (!this.isControlled()) {\n this.uncontrolledOpen.set(next);\n }\n\n this.openChange.emit(next);\n }\n\n private isControlled(): boolean {\n return this.openInput() !== undefined;\n }\n\n private shouldCloseFromEscape(): boolean {\n return this.isOpen() && this.closeOnEscape();\n }\n\n private shouldCloseFromOutsidePointer(): boolean {\n return this.isOpen() && this.closeOnOutsidePointer();\n }\n\n private activateFocusLayer(): void {\n const activeElement = resolvePopoverActiveElement(this.documentRef);\n const restoreFocusTargetId = activeElement === null ? null : this.ensureElementId(activeElement);\n popoverFocusHandoff.activateLayer(this.instanceId, restoreFocusTargetId);\n }\n\n private deactivateFocusLayer(): void {\n const restoreFocusTargetId = popoverFocusHandoff.deactivateLayer(this.instanceId);\n if (!this.restoreFocus() || restoreFocusTargetId === null) {\n return;\n }\n\n const restoreFocusTarget = this.resolveElementById(restoreFocusTargetId) ?? this.triggerElement;\n restoreFocusTarget?.focus();\n }\n\n private registerFocusLayer(): void {\n if (this.isFocusLayerRegistered) {\n return;\n }\n\n popoverFocusHandoff.registerLayer({\n layerId: this.instanceId,\n members: (): readonly string[] => {\n const panel = this.panelElement;\n if (panel === null) {\n return [];\n }\n\n return this.resolveFocusableMemberIds(panel);\n },\n restoreFocus: this.restoreFocus(),\n trapFocus: false,\n });\n this.isFocusLayerRegistered = true;\n }\n\n private unregisterFocusLayer(): void {\n if (!this.isFocusLayerRegistered) {\n return;\n }\n\n popoverFocusHandoff.unregisterLayer(this.instanceId);\n this.isFocusLayerRegistered = false;\n }\n\n private registerOverlayLayer(): void {\n const hostElement = this.hostRef.nativeElement;\n tngPrimitiveOverlayRuntime.registerLayer({\n containsTarget: (target: unknown, path: readonly unknown[]): boolean => {\n if (target instanceof Node && hostElement.contains(target)) {\n return true;\n }\n\n return path.includes(hostElement);\n },\n dismissOnEscape: this.shouldCloseFromEscape(),\n dismissOnOutsidePointer: this.shouldCloseFromOutsidePointer(),\n id: this.instanceId,\n onDismiss: (reason: TngOverlayDismissReason): void => {\n if (reason === 'escape-key' && !this.shouldCloseFromEscape()) {\n return;\n }\n\n if (reason === 'outside-pointer' && !this.shouldCloseFromOutsidePointer()) {\n return;\n }\n\n this.requestClose(mapOverlayDismissReason(reason));\n },\n });\n\n this.isOverlayLayerRegistered = true;\n }\n\n private unregisterOverlayLayer(): void {\n if (!this.isOverlayLayerRegistered) {\n return;\n }\n\n tngPrimitiveOverlayRuntime.unregisterLayer(this.instanceId);\n this.isOverlayLayerRegistered = false;\n }\n\n private focusElement(target: HTMLElement): void {\n const targetId = this.ensureElementId(target);\n const resolvedTargetId = popoverFocusHandoff.resolveFocusCandidate(this.instanceId, targetId);\n if (resolvedTargetId === null) {\n return;\n }\n\n const resolvedTarget = this.resolveElementById(resolvedTargetId);\n if (resolvedTarget === null) {\n return;\n }\n\n resolvedTarget.focus();\n popoverFocusHandoff.recordFocus(this.instanceId, resolvedTargetId);\n }\n\n private resolveFocusableMemberIds(panel: HTMLElement): readonly string[] {\n const focusableElements = resolvePopoverFocusableElements(panel);\n const memberIds: string[] = [];\n const seenIds = new Set<string>();\n\n const registerMember = (element: HTMLElement): void => {\n const id = this.ensureElementId(element);\n if (seenIds.has(id)) {\n return;\n }\n\n seenIds.add(id);\n memberIds.push(id);\n };\n\n registerMember(panel);\n for (const element of focusableElements) {\n registerMember(element);\n }\n\n return memberIds;\n }\n\n private ensureElementId(element: HTMLElement): string {\n const existingId = element.id.trim();\n if (existingId.length > 0) {\n return existingId;\n }\n\n const generatedId = createPopoverFocusableId();\n element.id = generatedId;\n return generatedId;\n }\n\n private resolveElementById(id: string): HTMLElement | null {\n if (this.documentRef === null) {\n return null;\n }\n\n const element = this.documentRef.getElementById(id);\n return element instanceof HTMLElement ? element : null;\n }\n}\n\n@Directive({\n selector: '[tngPopoverTrigger]',\n exportAs: 'tngPopoverTrigger',\n standalone: true,\n})\nexport class TngPopoverTrigger implements OnDestroy, OnInit {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly parentPopover = inject(TngPopover, { optional: true });\n\n public readonly popoverFor = input<TngPopover | null>(null, {\n alias: 'tngPopoverTrigger',\n });\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHasPopupAttr(): TngPopoverAriaHasPopup {\n return this.resolvePopover()?.ariaHasPopup() ?? 'dialog';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControlsAttr(): string | null {\n return this.resolvePopover()?.getPanelId() ?? null;\n }\n\n @HostBinding('attr.aria-expanded')\n protected get ariaExpandedAttr(): 'false' | 'true' {\n return this.resolvePopover()?.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover-trigger';\n\n @HostBinding('attr.data-open')\n protected get dataOpenAttr(): 'false' | 'true' {\n return this.resolvePopover()?.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'closed' | 'open' {\n return this.resolvePopover()?.isOpen() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.resolvePopover()?.disabled() ? '' : null;\n }\n\n public ngOnInit(): void {\n this.resolvePopover()?.registerTrigger(this.hostRef.nativeElement);\n }\n\n public ngOnDestroy(): void {\n this.resolvePopover()?.unregisterTrigger(this.hostRef.nativeElement);\n }\n\n @HostListener('click')\n protected onClick(): void {\n this.resolvePopover()?.togglePopover();\n }\n\n private resolvePopover(): TngPopover | null {\n return this.popoverFor() ?? this.parentPopover;\n }\n}\n\n@Directive({\n selector: '[tngPopoverPanel], [tngPopoverContent]',\n exportAs: 'tngPopoverPanel',\n standalone: true,\n})\nexport class TngPopoverPanel implements OnDestroy, OnInit {\n private readonly popover = inject(TngPopover);\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly generatedId = createPopoverPanelId();\n private resolvedId = '';\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover-panel';\n\n @HostBinding('attr.data-open')\n protected get dataOpenAttr(): 'false' | 'true' {\n return this.popover.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'closed' | 'open' {\n return this.popover.isOpen() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-side')\n protected get dataSideAttr(): TngPopoverSide {\n return this.popover.side();\n }\n\n @HostBinding('attr.data-align')\n protected get dataAlignAttr(): TngPopoverAlign {\n return this.popover.align();\n }\n\n @HostBinding('attr.hidden')\n protected get hiddenAttr(): '' | null {\n return this.popover.isOpen() ? null : '';\n }\n\n @HostBinding('attr.id')\n protected get idAttr(): string {\n return this.resolvedId;\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): Exclude<TngPopoverPanelRole, 'none'> | null {\n return this.popover.resolvePanelRole();\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.popover.ariaLabel();\n }\n\n @HostBinding('attr.tabindex')\n protected readonly tabIndexAttr = '-1';\n\n public ngOnInit(): void {\n const hostId = this.hostRef.nativeElement.id.trim();\n this.resolvedId = hostId.length > 0 ? hostId : this.generatedId;\n this.popover.registerPanel(this.hostRef.nativeElement, this.resolvedId);\n }\n\n public ngOnDestroy(): void {\n this.popover.unregisterPanel(this.hostRef.nativeElement);\n }\n\n @HostListener('focusin', ['$event.target'])\n protected onFocusIn(target: EventTarget | null): void {\n this.popover.recordFocusedElement(target);\n }\n}\n\n@Directive({\n selector: '[tngPopoverClose]',\n exportAs: 'tngPopoverClose',\n standalone: true,\n})\nexport class TngPopoverClose {\n private readonly popover = inject(TngPopover);\n\n public readonly closeReason = input<string | null>(null, {\n alias: 'tngPopoverClose',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover-close';\n\n @HostListener('click')\n protected onClick(): void {\n this.popover.requestClose(this.resolveCloseReason());\n }\n\n private resolveCloseReason(): TngPopoverCloseReason {\n const raw = this.closeReason()?.trim();\n if (raw === undefined || raw.length === 0) {\n return 'programmatic';\n }\n\n return isPopoverCloseReason(raw) ? raw : 'programmatic';\n }\n}\n"]}
1
+ {"version":3,"file":"tng-popover.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/overlay/popover/tng-popover.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,MAAM,EACN,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mCAAmC,EACnC,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;;AAEpE,MAAM,eAAe,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC1D,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AACrE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;AAW7E,SAAS,6BAA6B,CAAC,KAA2B;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,iBAAiB,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,gBAAgB,CAAC;AACrH,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA+B;IAC9D,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,qBAAqB,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChF,MAAM,mBAAmB,GAAG,mCAAmC,EAAE,CAAC;AAElE,MAAM,UAAU,2BAA2B,CAAC,WAAoB;IAC9D,IAAI,CAAC,CAAC,WAAW,YAAY,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC;IACzC,OAAO,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,SAAkB;IAChE,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,SAAkB;IACnE,IAAI,CAAC,CAAC,SAAS,YAAY,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAc,kCAAkC,CAAC,CAAC;IAC/F,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACvE,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,+BAA+B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACnE,CAAC;AAOD,MAAM,OAAO,UAAU;IACL,SAAS,GAAG,KAAK,CAA4C,SAAS,sDACpF,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,6BAA6B,GACxC,CAAC;IACa,WAAW,GAAG,KAAK,CAAgC,KAAK,wDACtE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,QAAQ,GAAG,KAAK,CAAgC,KAAK,qDACnE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,aAAa,GAAG,KAAK,CAAgC,IAAI,0DACvE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,qBAAqB,GAAG,KAAK,CAAgC,IAAI,kEAC/E,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,YAAY,GAAG,KAAK,CAAgC,IAAI,yDACtE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,SAAS,GAAG,KAAK,CAAoD,iBAAiB,sDACpG,SAAS,EAAE,CAAC,KAAmC,EAAuB,EAAE;YACtE,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC1G,CAAC,GACD,CAAC;IACa,IAAI,GAAG,KAAK,CAA0C,QAAQ,iDAC5E,SAAS,EAAE,CAAC,KAA8B,EAAkB,EAAE;YAC5D,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3G,CAAC,GACD,CAAC;IACa,KAAK,GAAG,KAAK,CAA4C,OAAO,kDAC9E,SAAS,EAAE,CAAC,KAA+B,EAAmB,EAAE;YAC9D,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QACtF,CAAC,GACD,CAAC;IACa,SAAS,GAAG,KAAK,CAAoD,QAAQ,sDAC3F,SAAS,EAAE,CAAC,KAAmC,EAAuB,EAAE;YACtE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM;gBAC5G,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,CAAC;QACf,CAAC,GACD,CAAC;IACa,YAAY,GAAG,KAAK,CAA0D,QAAQ,yDACpG,SAAS,EAAE,CAAC,KAAsC,EAA0B,EAAE;YAC5E,OAAO,KAAK,KAAK,QAAQ;mBACpB,KAAK,KAAK,MAAM;mBAChB,KAAK,KAAK,SAAS;mBACnB,KAAK,KAAK,MAAM;mBAChB,KAAK,KAAK,MAAM;mBAChB,KAAK,KAAK,MAAM;gBACnB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,QAAQ,CAAC;QACf,CAAC,GACD,CAAC;IACa,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC,CAAC;IAEvC,UAAU,GAAG,MAAM,EAAW,CAAC;IAC/B,MAAM,GAAG,MAAM,EAAyB,CAAC;IAExC,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,WAAW,GAAG,qBAAqB,CAAC;IACpC,UAAU,GAAG,eAAe,EAAE,CAAC;IAC/B,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC,CAAC;IACjC,eAAe,GAAG,MAAM,CAAC,GAAS,EAAE;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC,2DAAC,CAAC;IAEK,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IACjB,sBAAsB,GAAG,KAAK,CAAC;IAC/B,wBAAwB,GAAG,KAAK,CAAC;IACjC,YAAY,GAAuB,IAAI,CAAC;IACxC,cAAc,GAAkB,IAAI,CAAC;IACrC,cAAc,GAAuB,IAAI,CAAC;IAG/B,QAAQ,GAAG,SAAS,CAAC;IAExC,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,YAAY,CAAC,SAAgC,cAAc;QAChE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEM,aAAa,CAAC,KAAe;QAClC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,YAAY,CAAC,MAA6B;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEM,eAAe,CAAC,OAAoB;QACzC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAEM,iBAAiB,CAAC,OAAoB;QAC3C,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,KAAkB,EAAE,EAAU;QACjD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAEM,eAAe,CAAC,KAAkB;QACvC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,gBAAgB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,eAAe,CACb,GAAS,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YAChC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,kCAAkC,CAAC,KAAK,CAAC,IAAI,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;YACpH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B,CAAC;IACJ,CAAC;IAEM,oBAAoB,CAAC,MAAe;QACzC,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEO,YAAY,CAAC,IAAa;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS,CAAC;IACxC,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IAC/C,CAAC;IAEO,6BAA6B;QACnC,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACvD,CAAC;IAEO,kBAAkB;QACxB,MAAM,aAAa,GAAG,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,oBAAoB,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACjG,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC3E,CAAC;IAEO,oBAAoB;QAC1B,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;QAChG,kBAAkB,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,mBAAmB,CAAC,aAAa,CAAC;YAChC,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,OAAO,EAAE,GAAsB,EAAE;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;gBAChC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YACD,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEO,oBAAoB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC/C,0BAA0B,CAAC,aAAa,CAAC;YACvC,cAAc,EAAE,CAAC,MAAe,EAAE,IAAwB,EAAW,EAAE;gBACrE,IAAI,MAAM,YAAY,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3D,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;YACD,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC7C,uBAAuB,EAAE,IAAI,CAAC,6BAA6B,EAAE;YAC7D,EAAE,EAAE,IAAI,CAAC,UAAU;YACnB,SAAS,EAAE,CAAC,MAA+B,EAAQ,EAAE;gBACnD,IAAI,MAAM,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBAED,IAAI,MAAM,KAAK,iBAAiB,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,CAAC;oBAC1E,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvC,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,0BAA0B,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;IACxC,CAAC;IAEO,YAAY,CAAC,MAAmB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9F,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACrE,CAAC;IAEO,yBAAyB,CAAC,KAAkB;QAClD,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAQ,EAAE;YACpD,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACxC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,eAAe,CAAC,OAAoB;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,WAAW,GAAG,wBAAwB,EAAE,CAAC;QAC/C,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC;QACzB,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,kBAAkB,CAAC,EAAU;QACnC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;uGAlbU,UAAU;2FAAV,UAAU;;2FAAV,UAAU;kBALtB,SAAS;mBAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,QAAQ,EAAE,YAAY;oBACtB,UAAU,EAAE,IAAI;iBACjB;;sBAsFE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,iBAAiB;;AA8UhC,MAAM,OAAO,iBAAiB;IACX,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,UAAU,GAAG,KAAK,CAAoB,IAAI,uDACxD,KAAK,EAAE,mBAAmB,GAC1B,CAAC;IAEH,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,IAAI,QAAQ,CAAC;IAC3D,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC;IACrD,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,CAAC;IAGkB,QAAQ,GAAG,iBAAiB,CAAC;IAEhD,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,CAAC;IAED,IACc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IAGS,OAAO;QACf,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;IACzC,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;uGAxDU,iBAAiB;2FAAjB,iBAAiB;;2FAAjB,iBAAiB;kBAL7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;iBACjB;;sBASE,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,oBAAoB;;sBAahC,YAAY;uBAAC,OAAO;;AAevB,MAAM,OAAO,eAAe;IACT,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;IACtD,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC9C,UAAU,GAAG,EAAE,CAAC;IAGL,QAAQ,GAAG,eAAe,CAAC;IAE9C,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,CAAC;IAED,IACc,YAAY;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,IACc,UAAU;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,IACc,MAAM;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IACc,QAAQ;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED,IACc,aAAa;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAGkB,YAAY,GAAG,IAAI,CAAC;IAEhC,QAAQ;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;IAGS,SAAS,CAAC,MAA0B;QAC5C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;uGAjEU,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAL3B,SAAS;mBAAC;oBACT,QAAQ,EAAE,wCAAwC;oBAClD,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,IAAI;iBACjB;;sBAOE,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,aAAa;;sBAKzB,WAAW;uBAAC,SAAS;;sBAKrB,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,eAAe;;sBAa3B,YAAY;uBAAC,SAAS,EAAE,CAAC,eAAe,CAAC;;AAW5C,MAAM,OAAO,eAAe;IACT,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAE9B,WAAW,GAAG,KAAK,CAAgB,IAAI,wDACrD,KAAK,EAAE,iBAAiB,GACxB,CAAC;IAGgB,QAAQ,GAAG,eAAe,CAAC;IAGpC,OAAO;QACf,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,kBAAkB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;IAC1D,CAAC;uGAtBU,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAL3B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,IAAI;iBACjB;;sBAQE,WAAW;uBAAC,gBAAgB;;sBAG5B,YAAY;uBAAC,OAAO","sourcesContent":["import type {\n OnDestroy,\n OnInit} from '@angular/core';\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n afterNextRender,\n booleanAttribute,\n effect,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n createOverlayFocusHandoffController,\n resolveFocusableElements,\n createTngIdFactory,\n} from '@tailng-ui/cdk';\nimport type { TngOverlayDismissReason } from '@tailng-ui/cdk/overlay';\nimport { tngPrimitiveOverlayRuntime } from '../tng-overlay-runtime';\n\nconst createPopoverId = createTngIdFactory('tng-popover');\nconst createPopoverPanelId = createTngIdFactory('tng-popover-panel');\nconst createPopoverFocusableId = createTngIdFactory('tng-popover-focusable');\n\ntype OptionalBooleanInput = boolean | null | string | undefined;\n\nexport type TngPopoverAutoFocus = 'first-focusable' | 'none' | 'panel';\nexport type TngPopoverSide = 'bottom' | 'left' | 'right' | 'top';\nexport type TngPopoverAlign = 'center' | 'end' | 'start';\nexport type TngPopoverPanelRole = 'dialog' | 'listbox' | 'menu' | 'none' | 'region';\nexport type TngPopoverAriaHasPopup = 'dialog' | 'grid' | 'listbox' | 'menu' | 'tree' | 'true';\nexport type TngPopoverCloseReason = 'escape' | 'outside-pointer' | 'programmatic' | 'trigger-toggle';\n\nfunction normalizeOptionalBooleanInput(value: OptionalBooleanInput): boolean | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return booleanAttribute(value);\n}\n\nfunction isPopoverCloseReason(value: string): value is TngPopoverCloseReason {\n return value === 'escape' || value === 'outside-pointer' || value === 'programmatic' || value === 'trigger-toggle';\n}\n\nfunction mapOverlayDismissReason(reason: TngOverlayDismissReason): TngPopoverCloseReason {\n if (reason === 'escape-key') {\n return 'escape';\n }\n\n if (reason === 'outside-pointer') {\n return 'outside-pointer';\n }\n\n return 'programmatic';\n}\n\nconst popoverGlobalDocument = typeof document === 'undefined' ? null : document;\nconst popoverFocusHandoff = createOverlayFocusHandoffController();\n\nexport function resolvePopoverActiveElement(documentRef: unknown): HTMLElement | null {\n if (!(documentRef instanceof Document)) {\n return null;\n }\n\n const active = documentRef.activeElement;\n return active instanceof HTMLElement ? active : null;\n}\n\nexport function resolvePopoverFocusableElements(container: unknown): readonly HTMLElement[] {\n return resolveFocusableElements(container);\n}\n\nexport function resolvePopoverMarkedInitialElement(container: unknown): HTMLElement | null {\n if (!(container instanceof HTMLElement)) {\n return null;\n }\n\n const markedInitial = container.querySelector<HTMLElement>('[data-tng-popover-initial-focus]');\n if (markedInitial === null) {\n return null;\n }\n\n if (resolvePopoverFocusableElements(container).includes(markedInitial)) {\n return markedInitial;\n }\n\n return resolvePopoverFocusableElements(markedInitial)[0] ?? null;\n}\n\n@Directive({\n selector: '[tngPopover]',\n exportAs: 'tngPopover',\n standalone: true,\n})\nexport class TngPopover implements OnDestroy, OnInit {\n public readonly openInput = input<boolean | undefined, OptionalBooleanInput>(undefined, {\n alias: 'open',\n transform: normalizeOptionalBooleanInput,\n });\n public readonly defaultOpen = input<boolean, OptionalBooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled = input<boolean, OptionalBooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly closeOnEscape = input<boolean, OptionalBooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly closeOnOutsidePointer = input<boolean, OptionalBooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly restoreFocus = input<boolean, OptionalBooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly autoFocus = input<TngPopoverAutoFocus, string | TngPopoverAutoFocus>('first-focusable', {\n transform: (value: string | TngPopoverAutoFocus): TngPopoverAutoFocus => {\n return value === 'none' || value === 'panel' || value === 'first-focusable' ? value : 'first-focusable';\n },\n });\n public readonly side = input<TngPopoverSide, string | TngPopoverSide>('bottom', {\n transform: (value: string | TngPopoverSide): TngPopoverSide => {\n return value === 'top' || value === 'right' || value === 'bottom' || value === 'left' ? value : 'bottom';\n },\n });\n public readonly align = input<TngPopoverAlign, string | TngPopoverAlign>('start', {\n transform: (value: string | TngPopoverAlign): TngPopoverAlign => {\n return value === 'start' || value === 'center' || value === 'end' ? value : 'start';\n },\n });\n public readonly panelRole = input<TngPopoverPanelRole, string | TngPopoverPanelRole>('dialog', {\n transform: (value: string | TngPopoverPanelRole): TngPopoverPanelRole => {\n return value === 'dialog' || value === 'menu' || value === 'listbox' || value === 'region' || value === 'none'\n ? value\n : 'dialog';\n },\n });\n public readonly ariaHasPopup = input<TngPopoverAriaHasPopup, string | TngPopoverAriaHasPopup>('dialog', {\n transform: (value: string | TngPopoverAriaHasPopup): TngPopoverAriaHasPopup => {\n return value === 'dialog'\n || value === 'menu'\n || value === 'listbox'\n || value === 'tree'\n || value === 'grid'\n || value === 'true'\n ? value\n : 'dialog';\n },\n });\n public readonly ariaLabel = input<string | null>(null);\n\n public readonly openChange = output<boolean>();\n public readonly closed = output<TngPopoverCloseReason>();\n\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly documentRef = popoverGlobalDocument;\n private readonly instanceId = createPopoverId();\n private readonly uncontrolledOpen = signal(false);\n private readonly openStateEffect = effect((): void => {\n if (!this.initialized) {\n return;\n }\n\n if (this.isOpen()) {\n this.activatePopover();\n return;\n }\n\n this.deactivatePopover();\n });\n\n private initialized = false;\n private isActive = false;\n private isFocusLayerRegistered = false;\n private isOverlayLayerRegistered = false;\n private panelElement: HTMLElement | null = null;\n private panelElementId: string | null = null;\n private triggerElement: HTMLElement | null = null;\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover';\n\n @HostBinding('attr.data-open')\n protected get dataOpenAttr(): 'false' | 'true' {\n return this.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'closed' | 'open' {\n return this.isOpen() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.disabled() ? '' : null;\n }\n\n @HostBinding('attr.data-side')\n protected get dataSideAttr(): TngPopoverSide {\n return this.side();\n }\n\n @HostBinding('attr.data-align')\n protected get dataAlignAttr(): TngPopoverAlign {\n return this.align();\n }\n\n public ngOnInit(): void {\n if (!this.isControlled()) {\n this.uncontrolledOpen.set(this.defaultOpen());\n }\n\n this.initialized = true;\n if (this.isOpen()) {\n this.activatePopover();\n }\n }\n\n public ngOnDestroy(): void {\n this.openStateEffect.destroy();\n this.deactivatePopover();\n }\n\n public isOpen(): boolean {\n return this.openInput() ?? this.uncontrolledOpen();\n }\n\n public openPopover(): void {\n if (this.disabled() || this.isOpen()) {\n return;\n }\n\n this.setOpenState(true);\n }\n\n public closePopover(reason: TngPopoverCloseReason = 'programmatic'): void {\n this.requestClose(reason);\n }\n\n public togglePopover(force?: boolean): void {\n if (force === true) {\n this.openPopover();\n return;\n }\n\n if (force === false) {\n this.closePopover('programmatic');\n return;\n }\n\n if (this.isOpen()) {\n this.requestClose('trigger-toggle');\n return;\n }\n\n this.openPopover();\n }\n\n public requestClose(reason: TngPopoverCloseReason): void {\n if (!this.isOpen()) {\n return;\n }\n\n this.closed.emit(reason);\n this.setOpenState(false);\n }\n\n public registerTrigger(trigger: HTMLElement): void {\n this.triggerElement = trigger;\n }\n\n public unregisterTrigger(trigger: HTMLElement): void {\n if (this.triggerElement === trigger) {\n this.triggerElement = null;\n }\n }\n\n public registerPanel(panel: HTMLElement, id: string): void {\n this.panelElement = panel;\n this.panelElementId = id;\n }\n\n public unregisterPanel(panel: HTMLElement): void {\n if (this.panelElement === panel) {\n this.panelElement = null;\n this.panelElementId = null;\n }\n }\n\n public getPanelId(): string | null {\n return this.panelElementId;\n }\n\n public resolvePanelRole(): Exclude<TngPopoverPanelRole, 'none'> | null {\n const role = this.panelRole();\n return role === 'none' ? null : role;\n }\n\n private activatePopover(): void {\n if (this.isActive) {\n return;\n }\n\n this.isActive = true;\n this.registerFocusLayer();\n this.activateFocusLayer();\n this.registerOverlayLayer();\n this.focusInitialElement();\n }\n\n private deactivatePopover(): void {\n if (!this.isActive) {\n return;\n }\n\n this.isActive = false;\n this.deactivateFocusLayer();\n this.unregisterFocusLayer();\n this.unregisterOverlayLayer();\n }\n\n private focusInitialElement(): void {\n if (this.autoFocus() === 'none') {\n return;\n }\n\n afterNextRender(\n (): void => {\n if (!this.isOpen()) {\n return;\n }\n\n const panel = this.panelElement;\n if (panel === null) {\n return;\n }\n\n if (this.autoFocus() === 'panel') {\n this.focusElement(panel);\n return;\n }\n\n const focusTarget = resolvePopoverMarkedInitialElement(panel) ?? resolvePopoverFocusableElements(panel)[0] ?? panel;\n this.focusElement(focusTarget);\n },\n { injector: this.injector },\n );\n }\n\n public recordFocusedElement(target: unknown): void {\n if (!(target instanceof HTMLElement) || !this.isOpen()) {\n return;\n }\n\n const panel = this.panelElement;\n if (!panel?.contains(target)) {\n return;\n }\n\n const targetId = this.ensureElementId(target);\n popoverFocusHandoff.recordFocus(this.instanceId, targetId);\n }\n\n private setOpenState(next: boolean): void {\n if (this.isOpen() === next) {\n return;\n }\n\n if (!this.isControlled()) {\n this.uncontrolledOpen.set(next);\n }\n\n this.openChange.emit(next);\n }\n\n private isControlled(): boolean {\n return this.openInput() !== undefined;\n }\n\n private shouldCloseFromEscape(): boolean {\n return this.isOpen() && this.closeOnEscape();\n }\n\n private shouldCloseFromOutsidePointer(): boolean {\n return this.isOpen() && this.closeOnOutsidePointer();\n }\n\n private activateFocusLayer(): void {\n const activeElement = resolvePopoverActiveElement(this.documentRef);\n const restoreFocusTargetId = activeElement === null ? null : this.ensureElementId(activeElement);\n popoverFocusHandoff.activateLayer(this.instanceId, restoreFocusTargetId);\n }\n\n private deactivateFocusLayer(): void {\n const restoreFocusTargetId = popoverFocusHandoff.deactivateLayer(this.instanceId);\n if (!this.restoreFocus() || restoreFocusTargetId === null) {\n return;\n }\n\n const restoreFocusTarget = this.resolveElementById(restoreFocusTargetId) ?? this.triggerElement;\n restoreFocusTarget?.focus();\n }\n\n private registerFocusLayer(): void {\n if (this.isFocusLayerRegistered) {\n return;\n }\n\n popoverFocusHandoff.registerLayer({\n layerId: this.instanceId,\n members: (): readonly string[] => {\n const panel = this.panelElement;\n if (panel === null) {\n return [];\n }\n\n return this.resolveFocusableMemberIds(panel);\n },\n restoreFocus: this.restoreFocus(),\n trapFocus: false,\n });\n this.isFocusLayerRegistered = true;\n }\n\n private unregisterFocusLayer(): void {\n if (!this.isFocusLayerRegistered) {\n return;\n }\n\n popoverFocusHandoff.unregisterLayer(this.instanceId);\n this.isFocusLayerRegistered = false;\n }\n\n private registerOverlayLayer(): void {\n const hostElement = this.hostRef.nativeElement;\n tngPrimitiveOverlayRuntime.registerLayer({\n containsTarget: (target: unknown, path: readonly unknown[]): boolean => {\n if (target instanceof Node && hostElement.contains(target)) {\n return true;\n }\n\n return path.includes(hostElement);\n },\n dismissOnEscape: this.shouldCloseFromEscape(),\n dismissOnOutsidePointer: this.shouldCloseFromOutsidePointer(),\n id: this.instanceId,\n onDismiss: (reason: TngOverlayDismissReason): void => {\n if (reason === 'escape-key' && !this.shouldCloseFromEscape()) {\n return;\n }\n\n if (reason === 'outside-pointer' && !this.shouldCloseFromOutsidePointer()) {\n return;\n }\n\n this.requestClose(mapOverlayDismissReason(reason));\n },\n });\n\n this.isOverlayLayerRegistered = true;\n }\n\n private unregisterOverlayLayer(): void {\n if (!this.isOverlayLayerRegistered) {\n return;\n }\n\n tngPrimitiveOverlayRuntime.unregisterLayer(this.instanceId);\n this.isOverlayLayerRegistered = false;\n }\n\n private focusElement(target: HTMLElement): void {\n const targetId = this.ensureElementId(target);\n const resolvedTargetId = popoverFocusHandoff.resolveFocusCandidate(this.instanceId, targetId);\n if (resolvedTargetId === null) {\n return;\n }\n\n const resolvedTarget = this.resolveElementById(resolvedTargetId);\n if (resolvedTarget === null) {\n return;\n }\n\n resolvedTarget.focus();\n popoverFocusHandoff.recordFocus(this.instanceId, resolvedTargetId);\n }\n\n private resolveFocusableMemberIds(panel: HTMLElement): readonly string[] {\n const focusableElements = resolvePopoverFocusableElements(panel);\n const memberIds: string[] = [];\n const seenIds = new Set<string>();\n\n const registerMember = (element: HTMLElement): void => {\n const id = this.ensureElementId(element);\n if (seenIds.has(id)) {\n return;\n }\n\n seenIds.add(id);\n memberIds.push(id);\n };\n\n registerMember(panel);\n for (const element of focusableElements) {\n registerMember(element);\n }\n\n return memberIds;\n }\n\n private ensureElementId(element: HTMLElement): string {\n const existingId = element.id.trim();\n if (existingId.length > 0) {\n return existingId;\n }\n\n const generatedId = createPopoverFocusableId();\n element.id = generatedId;\n return generatedId;\n }\n\n private resolveElementById(id: string): HTMLElement | null {\n if (this.documentRef === null) {\n return null;\n }\n\n const element = this.documentRef.getElementById(id);\n return element instanceof HTMLElement ? element : null;\n }\n}\n\n@Directive({\n selector: '[tngPopoverTrigger]',\n exportAs: 'tngPopoverTrigger',\n standalone: true,\n})\nexport class TngPopoverTrigger implements OnDestroy, OnInit {\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly parentPopover = inject(TngPopover, { optional: true });\n\n public readonly popoverFor = input<TngPopover | null>(null, {\n alias: 'tngPopoverTrigger',\n });\n\n @HostBinding('attr.aria-haspopup')\n protected get ariaHasPopupAttr(): TngPopoverAriaHasPopup {\n return this.resolvePopover()?.ariaHasPopup() ?? 'dialog';\n }\n\n @HostBinding('attr.aria-controls')\n protected get ariaControlsAttr(): string | null {\n return this.resolvePopover()?.getPanelId() ?? null;\n }\n\n @HostBinding('attr.aria-expanded')\n protected get ariaExpandedAttr(): 'false' | 'true' {\n return this.resolvePopover()?.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover-trigger';\n\n @HostBinding('attr.data-open')\n protected get dataOpenAttr(): 'false' | 'true' {\n return this.resolvePopover()?.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'closed' | 'open' {\n return this.resolvePopover()?.isOpen() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-disabled')\n protected get dataDisabledAttr(): '' | null {\n return this.resolvePopover()?.disabled() ? '' : null;\n }\n\n public ngOnInit(): void {\n this.resolvePopover()?.registerTrigger(this.hostRef.nativeElement);\n }\n\n public ngOnDestroy(): void {\n this.resolvePopover()?.unregisterTrigger(this.hostRef.nativeElement);\n }\n\n @HostListener('click')\n protected onClick(): void {\n this.resolvePopover()?.togglePopover();\n }\n\n private resolvePopover(): TngPopover | null {\n return this.popoverFor() ?? this.parentPopover;\n }\n}\n\n@Directive({\n selector: '[tngPopoverPanel], [tngPopoverContent]',\n exportAs: 'tngPopoverPanel',\n standalone: true,\n})\nexport class TngPopoverPanel implements OnDestroy, OnInit {\n private readonly popover = inject(TngPopover);\n private readonly hostRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly generatedId = createPopoverPanelId();\n private resolvedId = '';\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover-panel';\n\n @HostBinding('attr.data-open')\n protected get dataOpenAttr(): 'false' | 'true' {\n return this.popover.isOpen() ? 'true' : 'false';\n }\n\n @HostBinding('attr.data-state')\n protected get dataStateAttr(): 'closed' | 'open' {\n return this.popover.isOpen() ? 'open' : 'closed';\n }\n\n @HostBinding('attr.data-side')\n protected get dataSideAttr(): TngPopoverSide {\n return this.popover.side();\n }\n\n @HostBinding('attr.data-align')\n protected get dataAlignAttr(): TngPopoverAlign {\n return this.popover.align();\n }\n\n @HostBinding('attr.hidden')\n protected get hiddenAttr(): '' | null {\n return this.popover.isOpen() ? null : '';\n }\n\n @HostBinding('attr.id')\n protected get idAttr(): string {\n return this.resolvedId;\n }\n\n @HostBinding('attr.role')\n protected get roleAttr(): Exclude<TngPopoverPanelRole, 'none'> | null {\n return this.popover.resolvePanelRole();\n }\n\n @HostBinding('attr.aria-label')\n protected get ariaLabelAttr(): string | null {\n return this.popover.ariaLabel();\n }\n\n @HostBinding('attr.tabindex')\n protected readonly tabIndexAttr = '-1';\n\n public ngOnInit(): void {\n const hostId = this.hostRef.nativeElement.id.trim();\n this.resolvedId = hostId.length > 0 ? hostId : this.generatedId;\n this.popover.registerPanel(this.hostRef.nativeElement, this.resolvedId);\n }\n\n public ngOnDestroy(): void {\n this.popover.unregisterPanel(this.hostRef.nativeElement);\n }\n\n @HostListener('focusin', ['$event.target'])\n protected onFocusIn(target: EventTarget | null): void {\n this.popover.recordFocusedElement(target);\n }\n}\n\n@Directive({\n selector: '[tngPopoverClose]',\n exportAs: 'tngPopoverClose',\n standalone: true,\n})\nexport class TngPopoverClose {\n private readonly popover = inject(TngPopover);\n\n public readonly closeReason = input<string | null>(null, {\n alias: 'tngPopoverClose',\n });\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'popover-close';\n\n @HostListener('click')\n protected onClick(): void {\n this.popover.requestClose(this.resolveCloseReason());\n }\n\n private resolveCloseReason(): TngPopoverCloseReason {\n const raw = this.closeReason()?.trim();\n if (raw === undefined || raw.length === 0) {\n return 'programmatic';\n }\n\n return isPopoverCloseReason(raw) ? raw : 'programmatic';\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { OnDestroy, OnInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  export type TngTooltipSide = 'bottom' | 'left' | 'right' | 'top';
3
4
  type OptionalBooleanInput = boolean | null | string | undefined;
4
5
  type TngTooltipKeyboardEvent = Readonly<Pick<KeyboardEvent, 'key'>> & Readonly<{
@@ -70,6 +71,8 @@ export declare class TngTooltip implements OnDestroy, OnInit {
70
71
  private unregisterOverlayLayer;
71
72
  private setupRepositionListeners;
72
73
  private teardownRepositionListeners;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTooltip, never>;
75
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngTooltip, "[tngTooltip]", ["tngTooltip"], { "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "openInput": { "alias": "open"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, never, true, never>;
73
76
  }
74
77
  export declare class TngTooltipTrigger implements OnDestroy, OnInit {
75
78
  private readonly hostRef;
@@ -88,6 +91,8 @@ export declare class TngTooltipTrigger implements OnDestroy, OnInit {
88
91
  protected onKeydown(event: KeyboardEvent): void;
89
92
  protected onMouseLeave(): void;
90
93
  protected onMouseEnter(): void;
94
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTooltipTrigger, never>;
95
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngTooltipTrigger, "[tngTooltipTrigger]", ["tngTooltipTrigger"], { "describedBy": { "alias": "describedBy"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
91
96
  }
92
97
  export declare class TngTooltipContent implements OnDestroy, OnInit {
93
98
  private readonly generatedId;
@@ -109,6 +114,8 @@ export declare class TngTooltipContent implements OnDestroy, OnInit {
109
114
  ngOnInit(): void;
110
115
  ngOnDestroy(): void;
111
116
  private resolveContentId;
117
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTooltipContent, never>;
118
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngTooltipContent, "[tngTooltipContent]", ["tngTooltipContent"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
112
119
  }
113
120
  export {};
114
121
  //# sourceMappingURL=tng-tooltip.d.ts.map