@radix-ng/primitives 0.42.0 → 0.44.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 (453) hide show
  1. package/accordion/index.d.ts +160 -15
  2. package/alert-dialog/index.d.ts +54 -14
  3. package/arrow/README.md +1 -0
  4. package/arrow/index.d.ts +11 -0
  5. package/aspect-ratio/index.d.ts +35 -1
  6. package/avatar/index.d.ts +81 -11
  7. package/calendar/index.d.ts +310 -29
  8. package/checkbox/index.d.ts +163 -15
  9. package/collapsible/index.d.ts +82 -11
  10. package/config/index.d.ts +35 -2
  11. package/context-menu/index.d.ts +126 -23
  12. package/core/index.d.ts +898 -27
  13. package/cropper/index.d.ts +134 -14
  14. package/date-field/index.d.ts +209 -10
  15. package/dialog/index.d.ts +202 -20
  16. package/dismissable-layer/README.md +1 -0
  17. package/dismissable-layer/index.d.ts +126 -0
  18. package/dropdown-menu/index.d.ts +168 -23
  19. package/editable/index.d.ts +70 -1
  20. package/fesm2022/radix-ng-primitives-accordion.mjs +36 -36
  21. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +28 -28
  23. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-arrow.mjs +38 -0
  25. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -0
  26. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +5 -5
  27. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-avatar.mjs +20 -20
  29. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-calendar.mjs +110 -95
  31. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-checkbox.mjs +219 -209
  33. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-collapsible.mjs +27 -27
  35. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-config.mjs +5 -5
  37. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-context-menu.mjs +34 -34
  39. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-core.mjs +72 -24
  41. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-cropper.mjs +51 -51
  43. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-date-field.mjs +48 -48
  45. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-dialog.mjs +33 -33
  47. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +418 -0
  49. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -0
  50. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +37 -37
  51. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-editable.mjs +21 -21
  53. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-focus-guards.mjs +53 -0
  55. package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -0
  56. package/fesm2022/radix-ng-primitives-focus-scope.mjs +17 -9
  57. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-hover-card.mjs +74 -74
  59. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-label.mjs +8 -8
  61. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-menu.mjs +65 -65
  63. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-menubar.mjs +31 -31
  65. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +91 -88
  67. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-number-field.mjs +56 -43
  69. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-pagination.mjs +45 -45
  71. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-popover.mjs +68 -68
  73. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  74. package/fesm2022/radix-ng-primitives-popper.mjs +418 -0
  75. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -0
  76. package/fesm2022/radix-ng-primitives-portal.mjs +51 -0
  77. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -0
  78. package/fesm2022/radix-ng-primitives-presence.mjs +4 -4
  79. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-progress.mjs +15 -15
  81. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-radio.mjs +30 -30
  83. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-roving-focus.mjs +179 -163
  85. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-select.mjs +37 -37
  87. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-separator.mjs +16 -14
  89. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-slider.mjs +75 -75
  91. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-stepper.mjs +45 -45
  93. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-switch.mjs +28 -28
  95. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-tabs.mjs +33 -33
  97. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives-time-field.mjs +78 -66
  99. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  100. package/fesm2022/radix-ng-primitives-toggle-group.mjs +22 -22
  101. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  102. package/fesm2022/radix-ng-primitives-toggle.mjs +9 -9
  103. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  104. package/fesm2022/radix-ng-primitives-toolbar.mjs +28 -28
  105. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  106. package/fesm2022/radix-ng-primitives-tooltip.mjs +74 -74
  107. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  108. package/fesm2022/radix-ng-primitives-tooltip2.mjs +740 -0
  109. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +1 -0
  110. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +93 -98
  111. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  112. package/fesm2022/radix-ng-primitives.mjs.map +1 -1
  113. package/focus-guards/README.md +1 -0
  114. package/focus-guards/index.d.ts +15 -0
  115. package/focus-scope/index.d.ts +65 -1
  116. package/hover-card/index.d.ts +471 -19
  117. package/index.d.ts +2 -1
  118. package/label/index.d.ts +27 -1
  119. package/menu/index.d.ts +136 -26
  120. package/menubar/index.d.ts +53 -21
  121. package/navigation-menu/index.d.ts +402 -25
  122. package/number-field/index.d.ts +202 -16
  123. package/package.json +26 -5
  124. package/pagination/index.d.ts +96 -20
  125. package/popover/index.d.ts +402 -19
  126. package/popper/README.md +3 -0
  127. package/popper/index.d.ts +206 -0
  128. package/portal/README.md +1 -0
  129. package/portal/index.d.ts +22 -0
  130. package/presence/index.d.ts +103 -5
  131. package/progress/index.d.ts +76 -8
  132. package/radio/index.d.ts +118 -4
  133. package/roving-focus/index.d.ts +174 -3
  134. package/select/index.d.ts +211 -23
  135. package/separator/index.d.ts +63 -1
  136. package/slider/index.d.ts +262 -17
  137. package/stepper/index.d.ts +122 -21
  138. package/switch/index.d.ts +102 -9
  139. package/tabs/index.d.ts +111 -13
  140. package/time-field/index.d.ts +211 -10
  141. package/toggle/index.d.ts +75 -3
  142. package/toggle-group/index.d.ts +194 -5
  143. package/toolbar/index.d.ts +52 -16
  144. package/tooltip/index.d.ts +432 -19
  145. package/tooltip2/README.md +3 -0
  146. package/tooltip2/index.d.ts +325 -0
  147. package/visually-hidden/index.d.ts +65 -3
  148. package/accordion/src/accordion-content-presence.directive.d.ts +0 -6
  149. package/accordion/src/accordion-content.directive.d.ts +0 -8
  150. package/accordion/src/accordion-header.directive.d.ts +0 -7
  151. package/accordion/src/accordion-item.directive.d.ts +0 -43
  152. package/accordion/src/accordion-root.directive.d.ts +0 -83
  153. package/accordion/src/accordion-trigger.directive.d.ts +0 -10
  154. package/alert-dialog/src/alert-dialog-cancel.directive.d.ts +0 -7
  155. package/alert-dialog/src/alert-dialog-content.directive.d.ts +0 -9
  156. package/alert-dialog/src/alert-dialog-root.directive.d.ts +0 -9
  157. package/alert-dialog/src/alert-dialog-title.directive.d.ts +0 -5
  158. package/alert-dialog/src/alert-dialog-trigger.directive.d.ts +0 -7
  159. package/alert-dialog/src/alert-dialog.service.d.ts +0 -14
  160. package/aspect-ratio/src/aspect-ratio.directive.d.ts +0 -32
  161. package/avatar/src/avatar-context.token.d.ts +0 -7
  162. package/avatar/src/avatar-fallback.directive.d.ts +0 -20
  163. package/avatar/src/avatar-image.directive.d.ts +0 -29
  164. package/avatar/src/avatar-root.directive.d.ts +0 -8
  165. package/avatar/src/avatar.config.d.ts +0 -13
  166. package/avatar/src/types.d.ts +0 -2
  167. package/calendar/src/calendar-cell-trigger.directive.d.ts +0 -54
  168. package/calendar/src/calendar-cell.directive.d.ts +0 -11
  169. package/calendar/src/calendar-grid-body.directive.d.ts +0 -5
  170. package/calendar/src/calendar-grid-head.directive.d.ts +0 -5
  171. package/calendar/src/calendar-grid-row.directive.d.ts +0 -5
  172. package/calendar/src/calendar-grid.directive.d.ts +0 -8
  173. package/calendar/src/calendar-head-cell.directive.d.ts +0 -5
  174. package/calendar/src/calendar-header.directive.d.ts +0 -5
  175. package/calendar/src/calendar-heading.directive.d.ts +0 -7
  176. package/calendar/src/calendar-next.directive.d.ts +0 -16
  177. package/calendar/src/calendar-prev.directive.d.ts +0 -16
  178. package/calendar/src/calendar-root.directive.d.ts +0 -148
  179. package/calendar/src/calendar.d.ts +0 -44
  180. package/calendar/src//321/201alendar-/321/201ontext.token.d.ts +0 -24
  181. package/checkbox/src/checkbox-button.directive.d.ts +0 -8
  182. package/checkbox/src/checkbox-indicator.directive.d.ts +0 -6
  183. package/checkbox/src/checkbox-input.directive.d.ts +0 -10
  184. package/checkbox/src/checkbox.directive.d.ts +0 -86
  185. package/checkbox/src/checkbox.token.d.ts +0 -4
  186. package/collapsible/src/collapsible-content-presence.directive.d.ts +0 -6
  187. package/collapsible/src/collapsible-content.directive.d.ts +0 -18
  188. package/collapsible/src/collapsible-root.directive.d.ts +0 -44
  189. package/collapsible/src/collapsible-trigger.directive.d.ts +0 -6
  190. package/config/src/config.d.ts +0 -21
  191. package/config/src/config.provider.d.ts +0 -10
  192. package/context-menu/src/context-menu-content.directive.d.ts +0 -15
  193. package/context-menu/src/context-menu-item-checkbox.directive.d.ts +0 -9
  194. package/context-menu/src/context-menu-item-indicator.directive.d.ts +0 -7
  195. package/context-menu/src/context-menu-item-radio-group.directive.d.ts +0 -12
  196. package/context-menu/src/context-menu-item-radio.directive.d.ts +0 -19
  197. package/context-menu/src/context-menu-item-selectable.d.ts +0 -12
  198. package/context-menu/src/context-menu-item.directive.d.ts +0 -17
  199. package/context-menu/src/context-menu-label.directive.d.ts +0 -5
  200. package/context-menu/src/context-menu-separator.directive.d.ts +0 -6
  201. package/context-menu/src/context-menu-trigger.directive.d.ts +0 -31
  202. package/core/src/accessor/control-value-accessor.d.ts +0 -67
  203. package/core/src/accessor/provide-value-accessor.d.ts +0 -12
  204. package/core/src/auto-focus.directive.d.ts +0 -14
  205. package/core/src/chunk.d.ts +0 -12
  206. package/core/src/clamp.d.ts +0 -38
  207. package/core/src/create-context.d.ts +0 -10
  208. package/core/src/date-time/calendar.d.ts +0 -33
  209. package/core/src/date-time/comparators.d.ts +0 -98
  210. package/core/src/date-time/formatter.d.ts +0 -30
  211. package/core/src/date-time/index.d.ts +0 -9
  212. package/core/src/date-time/parser.d.ts +0 -37
  213. package/core/src/date-time/parts.d.ts +0 -12
  214. package/core/src/date-time/placeholders.d.ts +0 -8
  215. package/core/src/date-time/segment.d.ts +0 -4
  216. package/core/src/date-time/types.d.ts +0 -58
  217. package/core/src/date-time/useDateField.d.ts +0 -142
  218. package/core/src/date-time/utils.d.ts +0 -7
  219. package/core/src/document.d.ts +0 -1
  220. package/core/src/focus-initial.directive.d.ts +0 -9
  221. package/core/src/getActiveElement.d.ts +0 -1
  222. package/core/src/id-generator.d.ts +0 -12
  223. package/core/src/inject-ng-control.d.ts +0 -8
  224. package/core/src/is-client.d.ts +0 -1
  225. package/core/src/is-equal.d.ts +0 -7
  226. package/core/src/is-inside-form.d.ts +0 -2
  227. package/core/src/is-nullish.d.ts +0 -1
  228. package/core/src/is-number.d.ts +0 -1
  229. package/core/src/isValueEqualOrExist.d.ts +0 -10
  230. package/core/src/kbd-constants.d.ts +0 -41
  231. package/core/src/positioning/constants.d.ts +0 -3
  232. package/core/src/positioning/types.d.ts +0 -42
  233. package/core/src/positioning/utils.d.ts +0 -12
  234. package/core/src/provide-token.d.ts +0 -22
  235. package/core/src/serialize.d.ts +0 -11
  236. package/core/src/types.d.ts +0 -25
  237. package/core/src/useArrowNavigation.d.ts +0 -65
  238. package/core/src/useResizeObserver.d.ts +0 -15
  239. package/core/src/watch.d.ts +0 -41
  240. package/core/src/window.d.ts +0 -3
  241. package/cropper/src/cropper-context.token.d.ts +0 -12
  242. package/cropper/src/cropper-crop-area.directive.d.ts +0 -6
  243. package/cropper/src/cropper-description.directive.d.ts +0 -6
  244. package/cropper/src/cropper-image.component.d.ts +0 -10
  245. package/cropper/src/cropper-root.directive.d.ts +0 -91
  246. package/date-field/src/date-field-context.token.d.ts +0 -19
  247. package/date-field/src/date-field-input.directive.d.ts +0 -53
  248. package/date-field/src/date-field-root.directive.d.ts +0 -131
  249. package/dialog/src/dialog-close.directive.d.ts +0 -7
  250. package/dialog/src/dialog-content.directive.d.ts +0 -21
  251. package/dialog/src/dialog-description.directive.d.ts +0 -5
  252. package/dialog/src/dialog-dismiss.directive.d.ts +0 -7
  253. package/dialog/src/dialog-ref.d.ts +0 -40
  254. package/dialog/src/dialog-title.directive.d.ts +0 -5
  255. package/dialog/src/dialog-trigger.directive.d.ts +0 -28
  256. package/dialog/src/dialog.config.d.ts +0 -41
  257. package/dialog/src/dialog.injectors.d.ts +0 -4
  258. package/dialog/src/dialog.providers.d.ts +0 -19
  259. package/dialog/src/dialog.service.d.ts +0 -26
  260. package/dismissible-layer/README.md +0 -1
  261. package/dismissible-layer/index.d.ts +0 -1
  262. package/dismissible-layer/src/utils.d.ts +0 -38
  263. package/dropdown-menu/src/dropdown-menu-content.directive.d.ts +0 -15
  264. package/dropdown-menu/src/dropdown-menu-item-checkbox.directive.d.ts +0 -9
  265. package/dropdown-menu/src/dropdown-menu-item-indicator.directive.d.ts +0 -7
  266. package/dropdown-menu/src/dropdown-menu-item-radio-group.directive.d.ts +0 -12
  267. package/dropdown-menu/src/dropdown-menu-item-radio.directive.d.ts +0 -19
  268. package/dropdown-menu/src/dropdown-menu-item-selectable.d.ts +0 -12
  269. package/dropdown-menu/src/dropdown-menu-item.directive.d.ts +0 -17
  270. package/dropdown-menu/src/dropdown-menu-label.directive.d.ts +0 -6
  271. package/dropdown-menu/src/dropdown-menu-separator.directive.d.ts +0 -6
  272. package/dropdown-menu/src/dropdown-menu-trigger.directive.d.ts +0 -73
  273. package/editable/src/editable-root.d.ts +0 -67
  274. package/fesm2022/radix-ng-primitives-dismissible-layer.mjs +0 -211
  275. package/fesm2022/radix-ng-primitives-dismissible-layer.mjs.map +0 -1
  276. package/focus-scope/src/focus-scope.d.ts +0 -53
  277. package/focus-scope/src/stack.d.ts +0 -13
  278. package/focus-scope/src/utils.d.ts +0 -46
  279. package/hover-card/src/hover-card-anchor.directive.d.ts +0 -28
  280. package/hover-card/src/hover-card-anchor.token.d.ts +0 -3
  281. package/hover-card/src/hover-card-arrow.directive.d.ts +0 -45
  282. package/hover-card/src/hover-card-arrow.token.d.ts +0 -3
  283. package/hover-card/src/hover-card-close.directive.d.ts +0 -18
  284. package/hover-card/src/hover-card-close.token.d.ts +0 -3
  285. package/hover-card/src/hover-card-content-attributes.component.d.ts +0 -25
  286. package/hover-card/src/hover-card-content-attributes.token.d.ts +0 -3
  287. package/hover-card/src/hover-card-content.directive.d.ts +0 -124
  288. package/hover-card/src/hover-card-root.directive.d.ts +0 -182
  289. package/hover-card/src/hover-card-root.inject.d.ts +0 -3
  290. package/hover-card/src/hover-card-trigger.directive.d.ts +0 -26
  291. package/hover-card/src/hover-card.types.d.ts +0 -18
  292. package/hover-card/src/utils/cdk-event.service.d.ts +0 -30
  293. package/hover-card/src/utils/constants.d.ts +0 -1
  294. package/hover-card/src/utils/types.d.ts +0 -7
  295. package/label/src/label.directive.d.ts +0 -24
  296. package/menu/src/menu-content.directive.d.ts +0 -6
  297. package/menu/src/menu-directive.d.ts +0 -6
  298. package/menu/src/menu-group.directive.d.ts +0 -6
  299. package/menu/src/menu-item-checkbox.directive.d.ts +0 -21
  300. package/menu/src/menu-item-indicator.directive.d.ts +0 -10
  301. package/menu/src/menu-item-radio.directive.d.ts +0 -20
  302. package/menu/src/menu-item.directive.d.ts +0 -18
  303. package/menu/src/menu-label.directive.d.ts +0 -5
  304. package/menu/src/menu-radio-group.directive.d.ts +0 -6
  305. package/menu/src/menu-separator.directive.d.ts +0 -5
  306. package/menu/src/menu-trigger.directive.d.ts +0 -35
  307. package/menu/src/utils.d.ts +0 -3
  308. package/menubar/src/menubar-content.directive.d.ts +0 -6
  309. package/menubar/src/menubar-item-checkbox.directive.d.ts +0 -6
  310. package/menubar/src/menubar-item-indicator.directive.d.ts +0 -6
  311. package/menubar/src/menubar-item-radio.directive.d.ts +0 -6
  312. package/menubar/src/menubar-item.directive.d.ts +0 -6
  313. package/menubar/src/menubar-radio-group.directive.d.ts +0 -6
  314. package/menubar/src/menubar-root.directive.d.ts +0 -6
  315. package/menubar/src/menubar-separator.directive.d.ts +0 -6
  316. package/menubar/src/menubar-trigger.directive.d.ts +0 -6
  317. package/navigation-menu/src/navigation-menu-a11y.component.d.ts +0 -15
  318. package/navigation-menu/src/navigation-menu-content.directive.d.ts +0 -31
  319. package/navigation-menu/src/navigation-menu-indicator.directive.d.ts +0 -29
  320. package/navigation-menu/src/navigation-menu-item.directive.d.ts +0 -44
  321. package/navigation-menu/src/navigation-menu-link.directive.d.ts +0 -17
  322. package/navigation-menu/src/navigation-menu-list.directive.d.ts +0 -38
  323. package/navigation-menu/src/navigation-menu-sub.directive.d.ts +0 -19
  324. package/navigation-menu/src/navigation-menu-trigger.directive.d.ts +0 -33
  325. package/navigation-menu/src/navigation-menu-viewport.directive.d.ts +0 -61
  326. package/navigation-menu/src/navigation-menu.directive.d.ts +0 -76
  327. package/navigation-menu/src/navigation-menu.token.d.ts +0 -36
  328. package/navigation-menu/src/navigation-menu.types.d.ts +0 -13
  329. package/navigation-menu/src/utils.d.ts +0 -44
  330. package/number-field/src/number-field-context.token.d.ts +0 -24
  331. package/number-field/src/number-field-decrement.directive.d.ts +0 -23
  332. package/number-field/src/number-field-increment.directive.d.ts +0 -23
  333. package/number-field/src/number-field-input.directive.d.ts +0 -22
  334. package/number-field/src/number-field-root.directive.d.ts +0 -86
  335. package/number-field/src/types.d.ts +0 -1
  336. package/number-field/src/utils.d.ts +0 -18
  337. package/pagination/src/pagination-context.token.d.ts +0 -11
  338. package/pagination/src/pagination-ellipsis.directive.d.ts +0 -5
  339. package/pagination/src/pagination-first.directive.d.ts +0 -8
  340. package/pagination/src/pagination-last.directive.d.ts +0 -8
  341. package/pagination/src/pagination-list-item.directive.d.ts +0 -10
  342. package/pagination/src/pagination-list.directive.d.ts +0 -12
  343. package/pagination/src/pagination-next.directive.d.ts +0 -8
  344. package/pagination/src/pagination-prev.directive.d.ts +0 -8
  345. package/pagination/src/pagination-root.directive.d.ts +0 -18
  346. package/pagination/src/utils.d.ts +0 -9
  347. package/popover/src/popover-anchor.directive.d.ts +0 -28
  348. package/popover/src/popover-anchor.token.d.ts +0 -3
  349. package/popover/src/popover-arrow.directive.d.ts +0 -40
  350. package/popover/src/popover-arrow.token.d.ts +0 -3
  351. package/popover/src/popover-close.directive.d.ts +0 -15
  352. package/popover/src/popover-close.token.d.ts +0 -3
  353. package/popover/src/popover-content-attributes.component.d.ts +0 -23
  354. package/popover/src/popover-content-attributes.token.d.ts +0 -3
  355. package/popover/src/popover-content.directive.d.ts +0 -104
  356. package/popover/src/popover-root.directive.d.ts +0 -155
  357. package/popover/src/popover-root.inject.d.ts +0 -3
  358. package/popover/src/popover-trigger.directive.d.ts +0 -18
  359. package/popover/src/popover.types.d.ts +0 -14
  360. package/popover/src/utils/cdk-event.service.d.ts +0 -30
  361. package/popover/src/utils/constants.d.ts +0 -1
  362. package/popover/src/utils/types.d.ts +0 -7
  363. package/presence/src/presence.d.ts +0 -42
  364. package/presence/src/presence.directive.d.ts +0 -27
  365. package/presence/src/transitions/transition.collapse.d.ts +0 -15
  366. package/presence/src/transitions/transition.toast.d.ts +0 -3
  367. package/presence/src/types.d.ts +0 -15
  368. package/presence/src/utils.d.ts +0 -42
  369. package/progress/src/progress-indicator.directive.d.ts +0 -15
  370. package/progress/src/progress-root.directive.d.ts +0 -54
  371. package/radio/src/radio-indicator.directive.d.ts +0 -9
  372. package/radio/src/radio-item-input.directive.d.ts +0 -12
  373. package/radio/src/radio-item.directive.d.ts +0 -30
  374. package/radio/src/radio-root.directive.d.ts +0 -57
  375. package/radio/src/radio-tokens.d.ts +0 -14
  376. package/roving-focus/src/roving-focus-group.directive.d.ts +0 -50
  377. package/roving-focus/src/roving-focus-item.directive.d.ts +0 -50
  378. package/roving-focus/src/utils.d.ts +0 -19
  379. package/select/src/select-content.directive.d.ts +0 -20
  380. package/select/src/select-group.directive.d.ts +0 -5
  381. package/select/src/select-icon.directive.d.ts +0 -5
  382. package/select/src/select-item-indicator.directive.d.ts +0 -7
  383. package/select/src/select-item.directive.d.ts +0 -53
  384. package/select/src/select-label.directive.d.ts +0 -5
  385. package/select/src/select-separator.directive.d.ts +0 -5
  386. package/select/src/select-trigger.directive.d.ts +0 -17
  387. package/select/src/select-value.directive.d.ts +0 -8
  388. package/select/src/select.component.d.ts +0 -98
  389. package/separator/src/separator.directive.d.ts +0 -60
  390. package/slider/src/slider-horizontal.component.d.ts +0 -28
  391. package/slider/src/slider-impl.directive.d.ts +0 -17
  392. package/slider/src/slider-orientation-context.service.d.ts +0 -14
  393. package/slider/src/slider-range.component.d.ts +0 -13
  394. package/slider/src/slider-root.component.d.ts +0 -123
  395. package/slider/src/slider-thumb-impl.directive.d.ts +0 -27
  396. package/slider/src/slider-thumb.component.d.ts +0 -6
  397. package/slider/src/slider-track.component.d.ts +0 -7
  398. package/slider/src/slider-vertical.component.d.ts +0 -28
  399. package/slider/src/utils.d.ts +0 -52
  400. package/stepper/src/stepper-description.directive.d.ts +0 -6
  401. package/stepper/src/stepper-indicator.directive.d.ts +0 -6
  402. package/stepper/src/stepper-item-context.token.d.ts +0 -13
  403. package/stepper/src/stepper-item.directive.d.ts +0 -21
  404. package/stepper/src/stepper-root-context.token.d.ts +0 -12
  405. package/stepper/src/stepper-root.directive.d.ts +0 -33
  406. package/stepper/src/stepper-separator.directive.d.ts +0 -10
  407. package/stepper/src/stepper-title.directive.d.ts +0 -6
  408. package/stepper/src/stepper-trigger.directive.d.ts +0 -14
  409. package/stepper/src/types.d.ts +0 -1
  410. package/switch/src/switch-input.directive.d.ts +0 -11
  411. package/switch/src/switch-root.directive.d.ts +0 -74
  412. package/switch/src/switch-thumb.directive.d.ts +0 -9
  413. package/tabs/src/tabs-content.directive.d.ts +0 -13
  414. package/tabs/src/tabs-list.directive.d.ts +0 -10
  415. package/tabs/src/tabs-root.directive.d.ts +0 -53
  416. package/tabs/src/tabs-trigger.directive.d.ts +0 -29
  417. package/tabs/src/utils.d.ts +0 -2
  418. package/time-field/src/time-field-context.token.d.ts +0 -20
  419. package/time-field/src/time-field-input.directive.d.ts +0 -53
  420. package/time-field/src/time-field-root.directive.d.ts +0 -130
  421. package/toggle/src/toggle-visually-hidden-input.directive.d.ts +0 -6
  422. package/toggle/src/toggle.directive.d.ts +0 -65
  423. package/toggle-group/src/toggle-group-item.directive.d.ts +0 -37
  424. package/toggle-group/src/toggle-group-item.token.d.ts +0 -4
  425. package/toggle-group/src/toggle-group-without-focus.directive.d.ts +0 -69
  426. package/toggle-group/src/toggle-group.directive.d.ts +0 -74
  427. package/toggle-group/src/toggle-group.token.d.ts +0 -10
  428. package/toolbar/src/toolbar-button.directive.d.ts +0 -11
  429. package/toolbar/src/toolbar-link.directive.d.ts +0 -7
  430. package/toolbar/src/toolbar-root.directive.d.ts +0 -8
  431. package/toolbar/src/toolbar-root.token.d.ts +0 -5
  432. package/toolbar/src/toolbar-separator.directive.d.ts +0 -6
  433. package/toolbar/src/toolbar-toggle-group.directive.d.ts +0 -6
  434. package/toolbar/src/toolbar-toggle-item.directive.d.ts +0 -6
  435. package/tooltip/src/tooltip-anchor.directive.d.ts +0 -28
  436. package/tooltip/src/tooltip-anchor.token.d.ts +0 -3
  437. package/tooltip/src/tooltip-arrow.directive.d.ts +0 -40
  438. package/tooltip/src/tooltip-arrow.token.d.ts +0 -3
  439. package/tooltip/src/tooltip-close.directive.d.ts +0 -18
  440. package/tooltip/src/tooltip-close.token.d.ts +0 -3
  441. package/tooltip/src/tooltip-content-attributes.component.d.ts +0 -25
  442. package/tooltip/src/tooltip-content-attributes.token.d.ts +0 -3
  443. package/tooltip/src/tooltip-content.directive.d.ts +0 -104
  444. package/tooltip/src/tooltip-root.directive.d.ts +0 -168
  445. package/tooltip/src/tooltip-root.inject.d.ts +0 -3
  446. package/tooltip/src/tooltip-trigger.directive.d.ts +0 -26
  447. package/tooltip/src/tooltip.types.d.ts +0 -18
  448. package/tooltip/src/utils/cdk-event.service.d.ts +0 -30
  449. package/tooltip/src/utils/constants.d.ts +0 -1
  450. package/tooltip/src/utils/types.d.ts +0 -7
  451. package/visually-hidden/src/visually-hidden-input-bubble.directive.d.ts +0 -23
  452. package/visually-hidden/src/visually-hidden-input.directive.d.ts +0 -19
  453. package/visually-hidden/src/visually-hidden.directive.d.ts +0 -17
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, model, input, booleanAttribute, numberAttribute, computed, signal, afterNextRender, Directive } from '@angular/core';
3
3
  import { createContext, watch } from '@radix-ng/primitives/core';
4
- import * as i1 from '@radix-ng/primitives/dismissible-layer';
5
- import { RdxFocusOutside, RdxPointerDownOutside } from '@radix-ng/primitives/dismissible-layer';
4
+ import * as i1 from '@radix-ng/primitives/dismissable-layer';
5
+ import { RdxFocusOutside, RdxPointerDownOutside } from '@radix-ng/primitives/dismissable-layer';
6
6
 
7
7
  const [injectEditableRootContext, provideEditableRootContext] = createContext('EditableRoot');
8
8
  const rootContext = () => {
@@ -34,29 +34,29 @@ class RdxEditableRoot {
34
34
  constructor() {
35
35
  this.focusOutside = inject(RdxFocusOutside);
36
36
  this.pointerDownOutside = inject(RdxPointerDownOutside);
37
- this.value = model();
38
- this.placeholder = input('Enter text...');
39
- this.disabled = input(false, { transform: booleanAttribute });
40
- this.readonly = input(false, { transform: booleanAttribute });
41
- this.selectOnFocus = input(false, { transform: booleanAttribute });
42
- this.submitMode = input('blur');
43
- this.maxLength = input(undefined, { transform: numberAttribute });
37
+ this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
38
+ this.placeholder = input('Enter text...', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
39
+ this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
40
+ this.readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
41
+ this.selectOnFocus = input(false, ...(ngDevMode ? [{ debugName: "selectOnFocus", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
42
+ this.submitMode = input('blur', ...(ngDevMode ? [{ debugName: "submitMode" }] : []));
43
+ this.maxLength = input(undefined, ...(ngDevMode ? [{ debugName: "maxLength", transform: numberAttribute }] : [{ transform: numberAttribute }]));
44
44
  /**
45
45
  * Whether to start with the edit mode active
46
46
  */
47
- this.startWithEditMode = input(false, { transform: booleanAttribute });
48
- this.activationMode = input('focus');
49
- this.autoResize = input(false, { transform: booleanAttribute });
50
- this.required = input(false, { transform: booleanAttribute });
51
- this.isEmpty = computed(() => this.value() === '');
47
+ this.startWithEditMode = input(false, ...(ngDevMode ? [{ debugName: "startWithEditMode", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
48
+ this.activationMode = input('focus', ...(ngDevMode ? [{ debugName: "activationMode" }] : []));
49
+ this.autoResize = input(false, ...(ngDevMode ? [{ debugName: "autoResize", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
50
+ this.required = input(false, ...(ngDevMode ? [{ debugName: "required", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
51
+ this.isEmpty = computed(() => this.value() === '', ...(ngDevMode ? [{ debugName: "isEmpty" }] : []));
52
52
  this.$placeholder = computed(() => {
53
53
  return typeof this.placeholder() === 'string'
54
54
  ? { edit: this.placeholder(), preview: this.placeholder() }
55
55
  : this.placeholder();
56
- });
57
- this.isEditing = signal(false);
58
- this.inputValue = signal(this.value());
59
- this.inputRef = signal(undefined);
56
+ }, ...(ngDevMode ? [{ debugName: "$placeholder" }] : []));
57
+ this.isEditing = signal(false, ...(ngDevMode ? [{ debugName: "isEditing" }] : []));
58
+ this.inputValue = signal(this.value(), ...(ngDevMode ? [{ debugName: "inputValue" }] : []));
59
+ this.inputRef = signal(undefined, ...(ngDevMode ? [{ debugName: "inputRef" }] : []));
60
60
  watch([this.value], ([value]) => {
61
61
  if (value) {
62
62
  this.inputValue.set(this.value());
@@ -94,10 +94,10 @@ class RdxEditableRoot {
94
94
  this.isEditing.set(true);
95
95
  this.inputValue.set(this.value());
96
96
  }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxEditableRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
98
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxEditableRoot, isStandalone: true, selector: "[rdxEditableRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, submitMode: { classPropertyName: "submitMode", publicName: "submitMode", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, startWithEditMode: { classPropertyName: "startWithEditMode", publicName: "startWithEditMode", isSignal: true, isRequired: false, transformFunction: null }, activationMode: { classPropertyName: "activationMode", publicName: "activationMode", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "attr.data-dismissable-layer": "\"\"" } }, providers: [provideEditableRootContext(rootContext)], exportAs: ["rdxEditableRoot"], hostDirectives: [{ directive: i1.RdxFocusOutside }, { directive: i1.RdxPointerDownOutside }], ngImport: i0 }); }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxEditableRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
98
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxEditableRoot, isStandalone: true, selector: "[rdxEditableRoot]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, submitMode: { classPropertyName: "submitMode", publicName: "submitMode", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, startWithEditMode: { classPropertyName: "startWithEditMode", publicName: "startWithEditMode", isSignal: true, isRequired: false, transformFunction: null }, activationMode: { classPropertyName: "activationMode", publicName: "activationMode", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "attr.data-dismissable-layer": "\"\"" } }, providers: [provideEditableRootContext(rootContext)], exportAs: ["rdxEditableRoot"], hostDirectives: [{ directive: i1.RdxFocusOutside }, { directive: i1.RdxPointerDownOutside }], ngImport: i0 }); }
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxEditableRoot, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxEditableRoot, decorators: [{
101
101
  type: Directive,
102
102
  args: [{
103
103
  selector: '[rdxEditableRoot]',
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-editable.mjs","sources":["../../../packages/primitives/editable/src/editable-root.ts","../../../packages/primitives/editable/radix-ng-primitives-editable.ts"],"sourcesContent":["import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n inject,\n input,\n model,\n numberAttribute,\n Signal,\n signal,\n WritableSignal\n} from '@angular/core';\nimport { createContext, watch } from '@radix-ng/primitives/core';\nimport { RdxFocusOutside, RdxPointerDownOutside } from '@radix-ng/primitives/dismissible-layer';\n\ntype EditableRootContext = {\n disabled: Signal<boolean>;\n value: Signal<string | null | undefined>;\n inputValue: WritableSignal<string | undefined>;\n placeholder: Signal<{ edit: string; preview: string }>;\n isEditing: Signal<boolean>;\n submitMode: Signal<SubmitMode>;\n activationMode: Signal<ActivationMode>;\n edit: () => void;\n cancel: () => void;\n submit: () => void;\n maxLength: Signal<number | undefined>;\n startWithEditMode: Signal<boolean>;\n isEmpty: Signal<boolean>;\n readonly: Signal<boolean>;\n selectOnFocus: Signal<boolean>;\n autoResize: Signal<boolean>;\n inputRef: WritableSignal<HTMLInputElement | undefined>;\n};\n\nexport const [injectEditableRootContext, provideEditableRootContext] =\n createContext<EditableRootContext>('EditableRoot');\n\nconst rootContext = (): EditableRootContext => {\n const context = inject(RdxEditableRoot);\n return {\n disabled: context.disabled,\n value: context.value,\n inputValue: context.inputValue,\n placeholder: context.$placeholder as Signal<{ edit: string; preview: string }>,\n isEditing: context.isEditing,\n submitMode: context.submitMode,\n activationMode: context.activationMode,\n edit: context.edit,\n cancel: context.cancel,\n submit: context.submit,\n maxLength: context.maxLength,\n startWithEditMode: context.startWithEditMode,\n isEmpty: context.isEmpty,\n readonly: context.readonly,\n autoResize: context.autoResize,\n selectOnFocus: context.selectOnFocus,\n inputRef: context.inputRef\n };\n};\n\ntype ActivationMode = 'focus' | 'dblclick' | 'none';\ntype SubmitMode = 'blur' | 'enter' | 'none' | 'both';\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxEditableRoot]',\n exportAs: 'rdxEditableRoot',\n providers: [provideEditableRootContext(rootContext)],\n hostDirectives: [RdxFocusOutside, RdxPointerDownOutside],\n host: {\n '[attr.data-dismissable-layer]': '\"\"'\n }\n})\nexport class RdxEditableRoot {\n private readonly focusOutside = inject(RdxFocusOutside);\n readonly pointerDownOutside = inject(RdxPointerDownOutside);\n\n readonly value = model<string>();\n\n readonly placeholder = input<string>('Enter text...');\n\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly readonly = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly selectOnFocus = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly submitMode = input<SubmitMode>('blur');\n\n readonly maxLength = input<number, NumberInput>(undefined, { transform: numberAttribute });\n\n /**\n * Whether to start with the edit mode active\n */\n readonly startWithEditMode = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly activationMode = input<ActivationMode>('focus');\n\n readonly autoResize = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly required = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n readonly isEmpty = computed(() => this.value() === '');\n\n readonly $placeholder = computed(() => {\n return typeof this.placeholder() === 'string'\n ? { edit: this.placeholder(), preview: this.placeholder() }\n : this.placeholder();\n });\n\n readonly isEditing = signal(false);\n\n readonly inputValue = signal(this.value());\n\n readonly inputRef = signal<HTMLInputElement | undefined>(undefined);\n\n constructor() {\n watch([this.value], ([value]) => {\n if (value) {\n this.inputValue.set(this.value());\n }\n });\n\n watch([this.isEditing], ([value]) => {\n this.pointerDownOutside.enabled = value;\n this.focusOutside.enabled = value;\n });\n\n this.pointerDownOutside.pointerDownOutside.subscribe(() => this.handleDismiss());\n this.focusOutside.focusOutside.subscribe(() => this.handleDismiss());\n\n afterNextRender(() => {\n this.isEditing.set(this.startWithEditMode() ?? false);\n this.inputValue.set(this.value());\n });\n }\n\n handleDismiss() {\n if (this.isEditing()) {\n if (this.submitMode() === 'blur' || this.submitMode() === 'both') {\n this.submit();\n } else {\n this.cancel();\n }\n }\n }\n\n submit() {\n this.value.set(this.inputValue());\n this.isEditing.set(false);\n }\n\n cancel() {\n this.isEditing.set(false);\n }\n\n edit() {\n this.isEditing.set(true);\n this.inputValue.set(this.value());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-editable.mjs","sources":["../tmp-esm2022/editable/src/editable-root.js","../tmp-esm2022/editable/radix-ng-primitives-editable.js"],"sourcesContent":["import { afterNextRender, booleanAttribute, computed, Directive, inject, input, model, numberAttribute, signal } from '@angular/core';\nimport { createContext, watch } from '@radix-ng/primitives/core';\nimport { RdxFocusOutside, RdxPointerDownOutside } from '@radix-ng/primitives/dismissable-layer';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@radix-ng/primitives/dismissable-layer\";\nexport const [injectEditableRootContext, provideEditableRootContext] = createContext('EditableRoot');\nconst rootContext = () => {\n const context = inject(RdxEditableRoot);\n return {\n disabled: context.disabled,\n value: context.value,\n inputValue: context.inputValue,\n placeholder: context.$placeholder,\n isEditing: context.isEditing,\n submitMode: context.submitMode,\n activationMode: context.activationMode,\n edit: context.edit,\n cancel: context.cancel,\n submit: context.submit,\n maxLength: context.maxLength,\n startWithEditMode: context.startWithEditMode,\n isEmpty: context.isEmpty,\n readonly: context.readonly,\n autoResize: context.autoResize,\n selectOnFocus: context.selectOnFocus,\n inputRef: context.inputRef\n };\n};\n/**\n * @group Components\n */\nexport class RdxEditableRoot {\n constructor() {\n this.focusOutside = inject(RdxFocusOutside);\n this.pointerDownOutside = inject(RdxPointerDownOutside);\n this.value = model(...(ngDevMode ? [undefined, { debugName: \"value\" }] : []));\n this.placeholder = input('Enter text...', ...(ngDevMode ? [{ debugName: \"placeholder\" }] : []));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.readonly = input(false, ...(ngDevMode ? [{ debugName: \"readonly\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectOnFocus = input(false, ...(ngDevMode ? [{ debugName: \"selectOnFocus\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.submitMode = input('blur', ...(ngDevMode ? [{ debugName: \"submitMode\" }] : []));\n this.maxLength = input(undefined, ...(ngDevMode ? [{ debugName: \"maxLength\", transform: numberAttribute }] : [{ transform: numberAttribute }]));\n /**\n * Whether to start with the edit mode active\n */\n this.startWithEditMode = input(false, ...(ngDevMode ? [{ debugName: \"startWithEditMode\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.activationMode = input('focus', ...(ngDevMode ? [{ debugName: \"activationMode\" }] : []));\n this.autoResize = input(false, ...(ngDevMode ? [{ debugName: \"autoResize\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.isEmpty = computed(() => this.value() === '', ...(ngDevMode ? [{ debugName: \"isEmpty\" }] : []));\n this.$placeholder = computed(() => {\n return typeof this.placeholder() === 'string'\n ? { edit: this.placeholder(), preview: this.placeholder() }\n : this.placeholder();\n }, ...(ngDevMode ? [{ debugName: \"$placeholder\" }] : []));\n this.isEditing = signal(false, ...(ngDevMode ? [{ debugName: \"isEditing\" }] : []));\n this.inputValue = signal(this.value(), ...(ngDevMode ? [{ debugName: \"inputValue\" }] : []));\n this.inputRef = signal(undefined, ...(ngDevMode ? [{ debugName: \"inputRef\" }] : []));\n watch([this.value], ([value]) => {\n if (value) {\n this.inputValue.set(this.value());\n }\n });\n watch([this.isEditing], ([value]) => {\n this.pointerDownOutside.enabled = value;\n this.focusOutside.enabled = value;\n });\n this.pointerDownOutside.pointerDownOutside.subscribe(() => this.handleDismiss());\n this.focusOutside.focusOutside.subscribe(() => this.handleDismiss());\n afterNextRender(() => {\n this.isEditing.set(this.startWithEditMode() ?? false);\n this.inputValue.set(this.value());\n });\n }\n handleDismiss() {\n if (this.isEditing()) {\n if (this.submitMode() === 'blur' || this.submitMode() === 'both') {\n this.submit();\n }\n else {\n this.cancel();\n }\n }\n }\n submit() {\n this.value.set(this.inputValue());\n this.isEditing.set(false);\n }\n cancel() {\n this.isEditing.set(false);\n }\n edit() {\n this.isEditing.set(true);\n this.inputValue.set(this.value());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxEditableRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxEditableRoot, isStandalone: true, selector: \"[rdxEditableRoot]\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: \"selectOnFocus\", publicName: \"selectOnFocus\", isSignal: true, isRequired: false, transformFunction: null }, submitMode: { classPropertyName: \"submitMode\", publicName: \"submitMode\", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: true, isRequired: false, transformFunction: null }, startWithEditMode: { classPropertyName: \"startWithEditMode\", publicName: \"startWithEditMode\", isSignal: true, isRequired: false, transformFunction: null }, activationMode: { classPropertyName: \"activationMode\", publicName: \"activationMode\", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: \"autoResize\", publicName: \"autoResize\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: \"valueChange\" }, host: { properties: { \"attr.data-dismissable-layer\": \"\\\"\\\"\" } }, providers: [provideEditableRootContext(rootContext)], exportAs: [\"rdxEditableRoot\"], hostDirectives: [{ directive: i1.RdxFocusOutside }, { directive: i1.RdxPointerDownOutside }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxEditableRoot, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxEditableRoot]',\n exportAs: 'rdxEditableRoot',\n providers: [provideEditableRootContext(rootContext)],\n hostDirectives: [RdxFocusOutside, RdxPointerDownOutside],\n host: {\n '[attr.data-dismissable-layer]': '\"\"'\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtcm9vdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvZWRpdGFibGUvc3JjL2VkaXRhYmxlLXJvb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxlQUFlLEVBRWYsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFzQmhHLE1BQU0sQ0FBQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsMEJBQTBCLENBQUMsR0FDaEUsYUFBYSxDQUFzQixjQUFjLENBQUMsQ0FBQztBQUV2RCxNQUFNLFdBQVcsR0FBRyxHQUF3QixFQUFFO0lBQzFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4QyxPQUFPO1FBQ0gsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxZQUF5RDtRQUM5RSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7UUFDNUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztRQUN0QyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3RCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtRQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNB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O1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBdEZRLGVBQWU7a0dBQWYsZUFBZSxzb0RBTmIsQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7MkZBTTNDLGVBQWU7a0JBVDNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3BELGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQztvQkFDeEQsSUFBSSxFQUFFO3dCQUNGLCtCQUErQixFQUFFLElBQUk7cUJBQ3hDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIFNpZ25hbCxcbiAgICBzaWduYWwsXG4gICAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB3YXRjaCB9IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL2NvcmUnO1xuaW1wb3J0IHsgUmR4Rm9jdXNPdXRzaWRlLCBSZHhQb2ludGVyRG93bk91dHNpZGUgfSBmcm9tICdAcmFkaXgtbmcvcHJpbWl0aXZlcy9kaXNtaXNzYWJsZS1sYXllcic7XG5cbnR5cGUgRWRpdGFibGVSb290Q29udGV4dCA9IHtcbiAgICBkaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuICAgIHZhbHVlOiBTaWduYWw8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgaW5wdXRWYWx1ZTogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgICBwbGFjZWhvbGRlcjogU2lnbmFsPHsgZWRpdDogc3RyaW5nOyBwcmV2aWV3OiBzdHJpbmcgfT47XG4gICAgaXNFZGl0aW5nOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgc3VibWl0TW9kZTogU2lnbmFsPFN1Ym1pdE1vZGU+O1xuICAgIGFjdGl2YXRpb25Nb2RlOiBTaWduYWw8QWN0aXZhdGlvbk1vZGU+O1xuICAgIGVkaXQ6ICgpID0+IHZvaWQ7XG4gICAgY2FuY2VsOiAoKSA9PiB2b2lkO1xuICAgIHN1Ym1pdDogKCkgPT4gdm9pZDtcbiAgICBtYXhMZW5ndGg6IFNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICAgIHN0YXJ0V2l0aEVkaXRNb2RlOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgaXNFbXB0eTogU2lnbmFsPGJvb2xlYW4+O1xuICAgIHJlYWRvbmx5OiBTaWduYWw8Ym9vbGVhbj47XG4gICAgc2VsZWN0T25Gb2N1czogU2lnbmFsPGJvb2xlYW4+O1xuICAgIGF1dG9SZXNpemU6IFNpZ25hbDxib29sZWFuPjtcbiAgICBpbnB1dFJlZjogV3JpdGFibGVTaWduYWw8SFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZD47XG59O1xuXG5leHBvcnQgY29uc3QgW2luamVjdEVkaXRhYmxlUm9vdENvbnRleHQsIHByb3ZpZGVFZGl0YWJsZVJvb3RDb250ZXh0XSA9XG4gICAgY3JlYXRlQ29udGV4dDxFZGl0YWJsZVJvb3RDb250ZXh0PignRWRpdGFibGVSb290Jyk7XG5cbmNvbnN0IHJvb3RDb250ZXh0ID0gKCk6IEVkaXRhYmxlUm9vdENvbnRleHQgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBpbmplY3QoUmR4RWRpdGFibGVSb290KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkaXNhYmxlZDogY29udGV4dC5kaXNhYmxlZCxcbiAgICAgICAgdmFsdWU6IGNvbnRleHQudmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWU6IGNvbnRleHQuaW5wdXRWYWx1ZSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IGNvbnRleHQuJHBsYWNlaG9sZGVyIGFzIFNpZ25hbDx7IGVkaXQ6IHN0cmluZzsgcHJldmlldzogc3RyaW5nIH0+LFxuICAgICAgICBpc0VkaXRpbmc6IGNvbnRleHQuaXNFZGl0aW5nLFxuICAgICAgICBzdWJtaXRNb2RlOiBjb250ZXh0LnN1Ym1pdE1vZGUsXG4gICAgICAgIGFjdGl2YXRpb25Nb2RlOiBjb250ZXh0LmFjdGl2YXRpb25Nb2RlLFxuICAgICAgICBlZGl0OiBjb250ZXh0LmVkaXQsXG4gICAgICAgIGNhbmNlbDogY29udGV4dC5jYW5jZWwsXG4gICAgICAgIHN1Ym1pdDogY29udGV4dC5zdWJtaXQsXG4gICAgICAgIG1heExlbmd0aDogY29udGV4dC5tYXhMZW5ndGgsXG4gICAgICAgIHN0YXJ0V2l0aEVkaXRNb2RlOiBjb250ZXh0LnN0YXJ0V2l0aEVkaXRNb2RlLFxuICAgICAgICBpc0VtcHR5OiBjb250ZXh0LmlzRW1wdHksXG4gICAgICAgIHJlYWRvbmx5OiBjb250ZXh0LnJlYWRvbmx5LFxuICAgICAgICBhdXRvUmVzaXplOiBjb250ZXh0LmF1dG9SZXNpemUsXG4gICAgICAgIHNlbGVjdE9uRm9jdXM6IGNvbnRleHQuc2VsZWN0T25Gb2N1cyxcbiAgICAgICAgaW5wdXRSZWY6IGNvbnRleHQuaW5wdXRSZWZcbiAgICB9O1xufTtcblxudHlwZSBBY3RpdmF0aW9uTW9kZSA9ICdmb2N1cycgfCAnZGJsY2xpY2snIHwgJ25vbmUnO1xudHlwZSBTdWJtaXRNb2RlID0gJ2JsdXInIHwgJ2VudGVyJyB8ICdub25lJyB8ICdib3RoJztcblxuLyoqXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhFZGl0YWJsZVJvb3RdJyxcbiAgICBleHBvcnRBczogJ3JkeEVkaXRhYmxlUm9vdCcsXG4gICAgcHJvdmlkZXJzOiBbcHJvdmlkZUVkaXRhYmxlUm9vdENvbnRleHQocm9vdENvbnRleHQpXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1JkeEZvY3VzT3V0c2lkZSwgUmR4UG9pbnRlckRvd25PdXRzaWRlXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLWRpc21pc3NhYmxlLWxheWVyXSc6ICdcIlwiJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4RWRpdGFibGVSb290IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvY3VzT3V0c2lkZSA9IGluamVjdChSZHhGb2N1c091dHNpZGUpO1xuICAgIHJlYWRvbmx5IHBvaW50ZXJEb3duT3V0c2lkZSA9IGluamVjdChSZHhQb2ludGVyRG93bk91dHNpZGUpO1xuXG4gICAgcmVhZG9ubHkgdmFsdWUgPSBtb2RlbDxzdHJpbmc+KCk7XG5cbiAgICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJ0VudGVyIHRleHQuLi4nKTtcblxuICAgIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICByZWFkb25seSByZWFkb25seSA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgc2VsZWN0T25Gb2N1cyA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgc3VibWl0TW9kZSA9IGlucHV0PFN1Ym1pdE1vZGU+KCdibHVyJyk7XG5cbiAgICByZWFkb25seSBtYXhMZW5ndGggPSBpbnB1dDxudW1iZXIsIE51bWJlcklucHV0Pih1bmRlZmluZWQsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHN0YXJ0IHdpdGggdGhlIGVkaXQgbW9kZSBhY3RpdmVcbiAgICAgKi9cbiAgICByZWFkb25seSBzdGFydFdpdGhFZGl0TW9kZSA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgYWN0aXZhdGlvbk1vZGUgPSBpbnB1dDxBY3RpdmF0aW9uTW9kZT4oJ2ZvY3VzJyk7XG5cbiAgICByZWFkb25seSBhdXRvUmVzaXplID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICByZWFkb25seSByZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcmVhZG9ubHkgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmFsdWUoKSA9PT0gJycpO1xuXG4gICAgcmVhZG9ubHkgJHBsYWNlaG9sZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMucGxhY2Vob2xkZXIoKSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8geyBlZGl0OiB0aGlzLnBsYWNlaG9sZGVyKCksIHByZXZpZXc6IHRoaXMucGxhY2Vob2xkZXIoKSB9XG4gICAgICAgICAgICA6IHRoaXMucGxhY2Vob2xkZXIoKTtcbiAgICB9KTtcblxuICAgIHJlYWRvbmx5IGlzRWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICByZWFkb25seSBpbnB1dFZhbHVlID0gc2lnbmFsKHRoaXMudmFsdWUoKSk7XG5cbiAgICByZWFkb25seSBpbnB1dFJlZiA9IHNpZ25hbDxIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHdhdGNoKFt0aGlzLnZhbHVlXSwgKFt2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZS5zZXQodGhpcy52YWx1ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgd2F0Y2goW3RoaXMuaXNFZGl0aW5nXSwgKFt2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucG9pbnRlckRvd25PdXRzaWRlLmVuYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPdXRzaWRlLmVuYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wb2ludGVyRG93bk91dHNpZGUucG9pbnRlckRvd25PdXRzaWRlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhbmRsZURpc21pc3MoKSk7XG4gICAgICAgIHRoaXMuZm9jdXNPdXRzaWRlLmZvY3VzT3V0c2lkZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oYW5kbGVEaXNtaXNzKCkpO1xuXG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQodGhpcy5zdGFydFdpdGhFZGl0TW9kZSgpID8/IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZS5zZXQodGhpcy52YWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlRGlzbWlzcygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1Ym1pdE1vZGUoKSA9PT0gJ2JsdXInIHx8IHRoaXMuc3VibWl0TW9kZSgpID09PSAnYm90aCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3VibWl0KCkge1xuICAgICAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmlucHV0VmFsdWUoKSk7XG4gICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIGVkaXQoKSB7XG4gICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCh0aGlzLnZhbHVlKCkpO1xuICAgIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1lZGl0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvZWRpdGFibGUvcmFkaXgtbmctcHJpbWl0aXZlcy1lZGl0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;;AAKY,MAAC,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,GAAG,aAAa,CAAC,cAAc;AACnG,MAAM,WAAW,GAAG,MAAM;AAC1B,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,IAAI,OAAO;AACX,QAAQ,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAClC,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK;AAC5B,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,WAAW,EAAE,OAAO,CAAC,YAAY;AACzC,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS;AACpC,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,cAAc,EAAE,OAAO,CAAC,cAAc;AAC9C,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS;AACpC,QAAQ,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;AACpD,QAAQ,OAAO,EAAE,OAAO,CAAC,OAAO;AAChC,QAAQ,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAClC,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,aAAa,EAAE,OAAO,CAAC,aAAa;AAC5C,QAAQ,QAAQ,EAAE,OAAO,CAAC;AAC1B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACO,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AACnD,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/D,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvG,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACnJ,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACnJ,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC7J,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AACvJ;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACrK,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACrG,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACvJ,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACnJ,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5G,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM;AAC3C,YAAY,OAAO,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK;AACjD,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AACzE,kBAAkB,IAAI,CAAC,WAAW,EAAE;AACpC,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5F,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;AACzC,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACjD,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;AAC7C,YAAY,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,KAAK;AACnD,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK;AAC7C,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AACxF,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC5E,QAAQ,eAAe,CAAC,MAAM;AAC9B,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,KAAK,CAAC;AACjE,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC9B,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE;AAC9E,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACzC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACjL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/6D;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,mBAAmB;AACjD,oBAAoB,QAAQ,EAAE,iBAAiB;AAC/C,oBAAoB,SAAS,EAAE,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;AACxE,oBAAoB,cAAc,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC;AAC5E,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,+BAA+B,EAAE;AACzD;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC7GvC;AACA;AACA;;;;"}
@@ -0,0 +1,53 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injector, afterNextRender, effect, Directive } from '@angular/core';
3
+
4
+ /** Number of components which have requested interest to have focus guards */
5
+ let count = 0;
6
+ /**
7
+ * Injects a pair of focus guards at the edges of the whole DOM tree
8
+ * to ensure `focusin` & `focusout` events can be caught consistently.
9
+ */
10
+ class RdxFocusGuards {
11
+ constructor() {
12
+ this.injector = inject(Injector);
13
+ afterNextRender(() => {
14
+ effect((onCleanup) => {
15
+ const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');
16
+ document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? this.createFocusGuard());
17
+ document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? this.createFocusGuard());
18
+ count++;
19
+ onCleanup(() => {
20
+ if (count === 1) {
21
+ document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());
22
+ }
23
+ count--;
24
+ });
25
+ }, { injector: this.injector });
26
+ });
27
+ }
28
+ createFocusGuard() {
29
+ const element = document.createElement('span');
30
+ element.setAttribute('data-radix-focus-guard', '');
31
+ element.tabIndex = 0;
32
+ element.style.outline = 'none';
33
+ element.style.opacity = '0';
34
+ element.style.position = 'fixed';
35
+ element.style.pointerEvents = 'none';
36
+ return element;
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxFocusGuards, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.3", type: RdxFocusGuards, isStandalone: true, selector: "[rdxFocusGuards]", ngImport: i0 }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxFocusGuards, decorators: [{
42
+ type: Directive,
43
+ args: [{
44
+ selector: '[rdxFocusGuards]'
45
+ }]
46
+ }], ctorParameters: () => [] });
47
+
48
+ /**
49
+ * Generated bundle index. Do not edit.
50
+ */
51
+
52
+ export { RdxFocusGuards };
53
+ //# sourceMappingURL=radix-ng-primitives-focus-guards.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-focus-guards.mjs","sources":["../tmp-esm2022/focus-guards/src/focus-guards.js","../tmp-esm2022/focus-guards/radix-ng-primitives-focus-guards.js"],"sourcesContent":["import { afterNextRender, Directive, effect, inject, Injector } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nexport class RdxFocusGuards {\n constructor() {\n this.injector = inject(Injector);\n afterNextRender(() => {\n effect((onCleanup) => {\n const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? this.createFocusGuard());\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? this.createFocusGuard());\n count++;\n onCleanup(() => {\n if (count === 1) {\n document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());\n }\n count--;\n });\n }, { injector: this.injector });\n });\n }\n createFocusGuard() {\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.outline = 'none';\n element.style.opacity = '0';\n element.style.position = 'fixed';\n element.style.pointerEvents = 'none';\n return element;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxFocusGuards, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: RdxFocusGuards, isStandalone: true, selector: \"[rdxFocusGuards]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxFocusGuards, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxFocusGuards]'\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9mb2N1cy1ndWFyZHMvc3JjL2ZvY3VzLWd1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFckYsOEVBQThFO0FBQzlFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUVkOzs7R0FHRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBR3ZCO1FBRmlCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFHekMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNqQixNQUFNLENBQ0YsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDVixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztnQkFFekUsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBRTVGLFFBQVEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUUzRixLQUFLLEVBQUUsQ0FBQztnQkFFUixTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNYLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNkLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQzNGLENBQUM7b0JBRUQsS0FBSyxFQUFFLENBQUM7Z0JBQ1osQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUM5QixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztRQUNyQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzhHQXJDUSxjQUFjO2tHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBSDFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBOdW1iZXIgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIHJlcXVlc3RlZCBpbnRlcmVzdCB0byBoYXZlIGZvY3VzIGd1YXJkcyAqL1xubGV0IGNvdW50ID0gMDtcblxuLyoqXG4gKiBJbmplY3RzIGEgcGFpciBvZiBmb2N1cyBndWFyZHMgYXQgdGhlIGVkZ2VzIG9mIHRoZSB3aG9sZSBET00gdHJlZVxuICogdG8gZW5zdXJlIGBmb2N1c2luYCAmIGBmb2N1c291dGAgZXZlbnRzIGNhbiBiZSBjYXVnaHQgY29uc2lzdGVudGx5LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyZHhGb2N1c0d1YXJkc10nXG59KVxuZXhwb3J0IGNsYXNzIFJkeEZvY3VzR3VhcmRzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgICAgIChvbkNsZWFudXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRnZUd1YXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmJlZ2luJywgZWRnZUd1YXJkc1swXSA/PyB0aGlzLmNyZWF0ZUZvY3VzR3VhcmQoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWVuZCcsIGVkZ2VHdWFyZHNbMV0gPz8gdGhpcy5jcmVhdGVGb2N1c0d1YXJkKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpLmZvckVhY2goKG5vZGUpID0+IG5vZGUucmVtb3ZlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlRm9jdXNHdWFyZCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmFkaXgtZm9jdXMtZ3VhcmQnLCAnJyk7XG4gICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSAwO1xuICAgICAgICBlbGVtZW50LnN0eWxlLm91dGxpbmUgPSAnbm9uZSc7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1mb2N1cy1ndWFyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2ZvY3VzLWd1YXJkcy9yYWRpeC1uZy1wcmltaXRpdmVzLWZvY3VzLWd1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;AAEA;AACA,IAAI,KAAK,GAAG,CAAC;AACb;AACA;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAQ,eAAe,CAAC,MAAM;AAC9B,YAAY,MAAM,CAAC,CAAC,SAAS,KAAK;AAClC,gBAAgB,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;AACxF,gBAAgB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3G,gBAAgB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1G,gBAAgB,KAAK,EAAE;AACvB,gBAAgB,SAAS,CAAC,MAAM;AAChC,oBAAoB,IAAI,KAAK,KAAK,CAAC,EAAE;AACrC,wBAAwB,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9G,oBAAoB;AACpB,oBAAoB,KAAK,EAAE;AAC3B,gBAAgB,CAAC,CAAC;AAClB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACtD,QAAQ,OAAO,CAAC,YAAY,CAAC,wBAAwB,EAAE,EAAE,CAAC;AAC1D,QAAQ,OAAO,CAAC,QAAQ,GAAG,CAAC;AAC5B,QAAQ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACtC,QAAQ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AACnC,QAAQ,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACxC,QAAQ,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAC5C,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAChL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACpL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE;AAC9B,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC5CvC;AACA;AACA;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, inject, Injector, ElementRef, input, booleanAttribute, output, afterNextRender, effect, Directive } from '@angular/core';
2
+ import { signal, inject, Injector, DestroyRef, ElementRef, input, booleanAttribute, output, afterNextRender, effect, Directive } from '@angular/core';
3
3
  import { getActiveElement, createContext } from '@radix-ng/primitives/core';
4
4
 
5
5
  function createGlobalState(factory) {
@@ -151,6 +151,7 @@ const rootContext = () => {
151
151
  class RdxFocusScope {
152
152
  constructor() {
153
153
  this.injector = inject(Injector);
154
+ this.destroyRef = inject(DestroyRef);
154
155
  this.elementRef = inject(ElementRef);
155
156
  /**
156
157
  * When `true`, tabbing from last item will focus first tabbable
@@ -159,7 +160,7 @@ class RdxFocusScope {
159
160
  * @group Props
160
161
  * @defaultValue false
161
162
  */
162
- this.loop = input(false, { transform: booleanAttribute });
163
+ this.loop = input(false, ...(ngDevMode ? [{ debugName: "loop", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
163
164
  /**
164
165
  * When `true`, focus cannot escape the focus scope via keyboard,
165
166
  * pointer, or a programmatic focus.
@@ -167,7 +168,7 @@ class RdxFocusScope {
167
168
  * @group Props
168
169
  * @defaultValue false
169
170
  */
170
- this.trapped = input(false, { transform: booleanAttribute });
171
+ this.trapped = input(false, ...(ngDevMode ? [{ debugName: "trapped", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
171
172
  /**
172
173
  * Event handler called when auto-focusing on mount.
173
174
  * Can be prevented.
@@ -182,13 +183,17 @@ class RdxFocusScope {
182
183
  * @group Emits
183
184
  */
184
185
  this.unmountAutoFocus = output();
185
- this.lastFocusedElement = signal(null);
186
+ this.lastFocusedElement = signal(null, ...(ngDevMode ? [{ debugName: "lastFocusedElement" }] : []));
186
187
  this.focusScopesStack = createFocusScopesStack();
187
188
  this.focusScope = {
188
189
  paused: signal(false),
189
190
  pause: () => this.focusScope.paused.set(true),
190
191
  resume: () => this.focusScope.paused.set(false)
191
192
  };
193
+ this.alive = true;
194
+ this.destroyRef.onDestroy(() => {
195
+ this.alive = false;
196
+ });
192
197
  afterNextRender(() => {
193
198
  effect((onCleanup) => {
194
199
  const container = this.elementRef.nativeElement;
@@ -268,11 +273,14 @@ class RdxFocusScope {
268
273
  focus(container);
269
274
  }
270
275
  }
276
+ const unmountEventHandler = (ev) => {
277
+ if (this.alive)
278
+ this.unmountAutoFocus.emit(ev);
279
+ };
280
+ container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);
271
281
  onCleanup(() => {
272
282
  container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev) => this.mountAutoFocus.emit(ev));
273
283
  const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);
274
- const unmountEventHandler = (ev) => this.unmountAutoFocus.emit(ev);
275
- container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);
276
284
  container.dispatchEvent(unmountEvent);
277
285
  setTimeout(() => {
278
286
  if (!unmountEvent.defaultPrevented)
@@ -313,10 +321,10 @@ class RdxFocusScope {
313
321
  }
314
322
  }
315
323
  }
316
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxFocusScope, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
317
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.4", type: RdxFocusScope, isStandalone: true, selector: "[rdxFocusScope]", inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, trapped: { classPropertyName: "trapped", publicName: "trapped", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mountAutoFocus: "mountAutoFocus", unmountAutoFocus: "unmountAutoFocus" }, host: { attributes: { "tabindex": "-1" }, listeners: { "keydown": "handleKeyDown($event)" } }, providers: [provideFocusScopeContext(rootContext)], ngImport: i0 }); }
324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxFocusScope, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
325
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxFocusScope, isStandalone: true, selector: "[rdxFocusScope]", inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, trapped: { classPropertyName: "trapped", publicName: "trapped", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mountAutoFocus: "mountAutoFocus", unmountAutoFocus: "unmountAutoFocus" }, host: { attributes: { "tabindex": "-1" }, listeners: { "keydown": "handleKeyDown($event)" } }, providers: [provideFocusScopeContext(rootContext)], ngImport: i0 }); }
318
326
  }
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: RdxFocusScope, decorators: [{
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxFocusScope, decorators: [{
320
328
  type: Directive,
321
329
  args: [{
322
330
  selector: '[rdxFocusScope]',
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-focus-scope.mjs","sources":["../../../packages/primitives/focus-scope/src/stack.ts","../../../packages/primitives/focus-scope/src/utils.ts","../../../packages/primitives/focus-scope/src/focus-scope.ts","../../../packages/primitives/focus-scope/radix-ng-primitives-focus-scope.ts"],"sourcesContent":["import { signal, WritableSignal } from '@angular/core';\n\nexport function createGlobalState<T>(factory: () => T): () => T {\n const state = factory();\n return () => state;\n}\n\nexport interface FocusScopeAPI {\n paused: WritableSignal<boolean>;\n pause(): void;\n resume(): void;\n}\n\nconst useFocusStackState = createGlobalState(() => signal<FocusScopeAPI[]>([]));\n\nexport function createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n const stack = useFocusStackState();\n\n return {\n add(focusScope: FocusScopeAPI) {\n const current = stack();\n const active = current[0];\n if (focusScope !== active) {\n active?.pause();\n }\n const updated = arrayRemove(current, focusScope);\n updated.unshift(focusScope);\n stack.set(updated);\n },\n\n remove(focusScope: FocusScopeAPI) {\n const current = stack();\n const updated = arrayRemove(current, focusScope);\n stack.set(updated);\n // после удаления «возобновляем» новый верхний\n stack()[0]?.resume();\n }\n };\n}\n\nexport function arrayRemove<T>(array: T[], item: T): T[] {\n const copy = [...array];\n const idx = copy.indexOf(item);\n if (idx !== -1) {\n copy.splice(idx, 1);\n }\n return copy;\n}\n\nexport function removeLinks(items: HTMLElement[]): HTMLElement[] {\n return items.filter((el) => el.tagName !== 'A');\n}\n","import { getActiveElement } from '@radix-ng/primitives/core';\n\nexport const AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nexport const AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nexport const EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusableTarget = HTMLElement | { focus: () => void };\n\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nexport function focusFirst(candidates: HTMLElement[], { select = false } = {}) {\n const previouslyFocusedElement = getActiveElement();\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (getActiveElement() !== previouslyFocusedElement) return true;\n }\n\n return;\n}\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nexport function getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\nexport function isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {\n if (getComputedStyle(node).visibility === 'hidden') return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo) return false;\n if (getComputedStyle(node).display === 'none') return true;\n node = node.parentElement as HTMLElement;\n }\n return false;\n}\n\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nexport function findVisible(elements: HTMLElement[], container: HTMLElement): HTMLElement | undefined {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container })) return element;\n }\n return undefined;\n}\n\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nexport function getTabbableEdges(container: HTMLElement) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last] as const;\n}\n\nexport function isSelectableInput(element: any): element is FocusableTarget & { select: () => void } {\n return element instanceof HTMLInputElement && 'select' in element;\n}\n\nexport function focus(element?: FocusableTarget | null, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = getActiveElement();\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select) {\n element.select();\n }\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n output,\n Signal,\n signal\n} from '@angular/core';\nimport { createContext, getActiveElement } from '@radix-ng/primitives/core';\nimport { createFocusScopesStack, FocusScopeAPI, removeLinks } from './stack';\nimport {\n AUTOFOCUS_ON_MOUNT,\n AUTOFOCUS_ON_UNMOUNT,\n EVENT_OPTIONS,\n focus,\n focusFirst,\n getTabbableCandidates,\n getTabbableEdges\n} from './utils';\n\nexport interface FocusScopeContext {\n loop?: Signal<boolean>;\n\n trapped?: Signal<boolean>;\n}\n\nexport const [injectFocusScopeContext, provideFocusScopeContext] =\n createContext<FocusScopeContext>('FocusScope Context');\n\nconst rootContext = (): FocusScopeContext => {\n const context = inject(RdxFocusScope);\n\n return {\n loop: context.loop,\n trapped: context.trapped\n };\n};\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxFocusScope]',\n providers: [provideFocusScopeContext(rootContext)],\n host: {\n tabindex: '-1',\n '(keydown)': 'handleKeyDown($event)'\n }\n})\nexport class RdxFocusScope {\n private readonly injector = inject(Injector);\n\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n *\n * @group Props\n * @defaultValue false\n */\n readonly loop = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n *\n * @group Props\n * @defaultValue false\n */\n readonly trapped = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n *\n * @group Emits\n */\n readonly mountAutoFocus = output<Event>();\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n *\n * @group Emits\n */\n readonly unmountAutoFocus = output<Event>();\n\n readonly lastFocusedElement = signal<HTMLElement | null>(null);\n\n private readonly focusScopesStack = createFocusScopesStack();\n\n readonly focusScope: FocusScopeAPI = {\n paused: signal(false),\n pause: () => this.focusScope.paused.set(true),\n resume: () => this.focusScope.paused.set(false)\n };\n\n constructor() {\n afterNextRender(() => {\n effect(\n (onCleanup) => {\n const container = this.elementRef.nativeElement;\n\n if (this.trapped()) {\n const handleFocusIn = (event: FocusEvent) => {\n if (this.focusScope.paused() || !container) {\n return;\n }\n\n const target = event.target as HTMLElement | null;\n if (this.elementRef.nativeElement.contains(target)) {\n this.lastFocusedElement.set(target);\n } else {\n focus(this.lastFocusedElement(), { select: true });\n }\n };\n\n const handleFocusOut = (event: FocusEvent) => {\n if (this.focusScope.paused() || !container) {\n return;\n }\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null) return;\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(this.lastFocusedElement(), { select: true });\n }\n };\n\n const handleMutations = () => {\n const isLastFocusedElementExist = container.contains(this.lastFocusedElement());\n\n if (!isLastFocusedElementExist) {\n focus(container);\n }\n };\n\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) {\n mutationObserver.observe(container, { childList: true, subtree: true });\n }\n\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n\n onCleanup(() => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n });\n }\n },\n { injector: this.injector }\n );\n\n effect(\n async (onCleanup) => {\n const container = this.elementRef.nativeElement;\n\n await Promise.resolve();\n if (!container) {\n return;\n }\n\n this.focusScopesStack.add(this.focusScope);\n\n const previouslyFocusedElement = getActiveElement() as HTMLElement | null;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) => this.mountAutoFocus.emit(ev));\n container.dispatchEvent(mountEvent);\n\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true\n });\n if (getActiveElement() === previouslyFocusedElement) focus(container);\n }\n }\n\n onCleanup(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev: Event) => this.mountAutoFocus.emit(ev));\n\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n const unmountEventHandler = (ev: Event) => this.unmountAutoFocus.emit(ev);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n container.dispatchEvent(unmountEvent);\n\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true });\n\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n\n this.focusScopesStack.remove(this.focusScope);\n }, 0);\n });\n },\n { injector: this.injector }\n );\n });\n }\n\n handleKeyDown(event: KeyboardEvent) {\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n\n const focusedElement = getActiveElement() as HTMLElement | null;\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement;\n\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (this.loop()) {\n focus(first, { select: true });\n }\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (this.loop()) {\n focus(last, { select: true });\n }\n }\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-focus-scope.mjs","sources":["../tmp-esm2022/focus-scope/src/stack.js","../tmp-esm2022/focus-scope/src/utils.js","../tmp-esm2022/focus-scope/src/focus-scope.js","../tmp-esm2022/focus-scope/radix-ng-primitives-focus-scope.js"],"sourcesContent":["import { signal } from '@angular/core';\nexport function createGlobalState(factory) {\n const state = factory();\n return () => state;\n}\nconst useFocusStackState = createGlobalState(() => signal([]));\nexport function createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n const stack = useFocusStackState();\n return {\n add(focusScope) {\n const current = stack();\n const active = current[0];\n if (focusScope !== active) {\n active?.pause();\n }\n const updated = arrayRemove(current, focusScope);\n updated.unshift(focusScope);\n stack.set(updated);\n },\n remove(focusScope) {\n const current = stack();\n const updated = arrayRemove(current, focusScope);\n stack.set(updated);\n // после удаления «возобновляем» новый верхний\n stack()[0]?.resume();\n }\n };\n}\nexport function arrayRemove(array, item) {\n const copy = [...array];\n const idx = copy.indexOf(item);\n if (idx !== -1) {\n copy.splice(idx, 1);\n }\n return copy;\n}\nexport function removeLinks(items) {\n return items.filter((el) => el.tagName !== 'A');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2ZvY3VzLXNjb3BlL3NyYy9zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUV2RCxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBZ0I7SUFDakQsTUFBTSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFDeEIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7QUFDdkIsQ0FBQztBQVFELE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sVUFBVSxzQkFBc0I7SUFDbEMsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFFbkMsT0FBTztRQUNILEdBQUcsQ0FBQyxVQUF5QjtZQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUN4QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRCxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELE1BQU0sQ0FBQyxVQUF5QjtZQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkIsOENBQThDO1lBQzlDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksS0FBVSxFQUFFLElBQU87SUFDOUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFvQjtJQUM1QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbCwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2JhbFN0YXRlPFQ+KGZhY3Rvcnk6ICgpID0+IFQpOiAoKSA9PiBUIHtcbiAgICBjb25zdCBzdGF0ZSA9IGZhY3RvcnkoKTtcbiAgICByZXR1cm4gKCkgPT4gc3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNTY29wZUFQSSB7XG4gICAgcGF1c2VkOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPjtcbiAgICBwYXVzZSgpOiB2b2lkO1xuICAgIHJlc3VtZSgpOiB2b2lkO1xufVxuXG5jb25zdCB1c2VGb2N1c1N0YWNrU3RhdGUgPSBjcmVhdGVHbG9iYWxTdGF0ZSgoKSA9PiBzaWduYWw8Rm9jdXNTY29wZUFQSVtdPihbXSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9jdXNTY29wZXNTdGFjaygpIHtcbiAgICAvKiogQSBzdGFjayBvZiBmb2N1cyBzY29wZXMsIHdpdGggdGhlIGFjdGl2ZSBvbmUgYXQgdGhlIHRvcCAqL1xuICAgIGNvbnN0IHN0YWNrID0gdXNlRm9jdXNTdGFja1N0YXRlKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQoZm9jdXNTY29wZTogRm9jdXNTY29wZUFQSSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHN0YWNrKCk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBjdXJyZW50WzBdO1xuICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUgIT09IGFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZT8ucGF1c2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcnJheVJlbW92ZShjdXJyZW50LCBmb2N1c1Njb3BlKTtcbiAgICAgICAgICAgIHVwZGF0ZWQudW5zaGlmdChmb2N1c1Njb3BlKTtcbiAgICAgICAgICAgIHN0YWNrLnNldCh1cGRhdGVkKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmUoZm9jdXNTY29wZTogRm9jdXNTY29wZUFQSSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHN0YWNrKCk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkID0gYXJyYXlSZW1vdmUoY3VycmVudCwgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBzdGFjay5zZXQodXBkYXRlZCk7XG4gICAgICAgICAgICAvLyDQv9C+0YHQu9C1INGD0LTQsNC70LXQvdC40Y8gwqvQstC+0LfQvtCx0L3QvtCy0LvRj9C10LzCuyDQvdC+0LLRi9C5INCy0LXRgNGF0L3QuNC5XG4gICAgICAgICAgICBzdGFjaygpWzBdPy5yZXN1bWUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVJlbW92ZTxUPihhcnJheTogVFtdLCBpdGVtOiBUKTogVFtdIHtcbiAgICBjb25zdCBjb3B5ID0gWy4uLmFycmF5XTtcbiAgICBjb25zdCBpZHggPSBjb3B5LmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgICAgY29weS5zcGxpY2UoaWR4LCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMaW5rcyhpdGVtczogSFRNTEVsZW1lbnRbXSk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGVsKSA9PiBlbC50YWdOYW1lICE9PSAnQScpO1xufVxuIl19","import { getActiveElement } from '@radix-ng/primitives/core';\nexport const AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nexport const AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nexport const EVENT_OPTIONS = { bubbles: false, cancelable: true };\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nexport function focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = getActiveElement();\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (getActiveElement() !== previouslyFocusedElement)\n return true;\n }\n return;\n}\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nexport function getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput)\n return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode())\n nodes.push(walker.currentNode);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\nexport function isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === 'hidden')\n return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo)\n return false;\n if (getComputedStyle(node).display === 'none')\n return true;\n node = node.parentElement;\n }\n return false;\n}\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nexport function findVisible(elements, container) {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container }))\n return element;\n }\n return undefined;\n}\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nexport function getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nexport function isSelectableInput(element) {\n return element instanceof HTMLInputElement && 'select' in element;\n}\nexport function focus(element, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = getActiveElement();\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select) {\n element.select();\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2ZvY3VzLXNjb3BlL3NyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRywrQkFBK0IsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUlsRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLFVBQXlCLEVBQUUsRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRTtJQUN6RSxNQUFNLHdCQUF3QixHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDcEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNqQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLGdCQUFnQixFQUFFLEtBQUssd0JBQXdCO1lBQUUsT0FBTyxJQUFJLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU87QUFDWCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFNBQXNCO0lBQ3hELE1BQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFO1FBQ3pFLFVBQVUsRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxJ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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0QWN0aXZlRWxlbWVudCB9IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZPQ1VTX09OX01PVU5UID0gJ2ZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Nb3VudCc7XG5leHBvcnQgY29uc3QgQVVUT0ZPQ1VTX09OX1VOTU9VTlQgPSAnZm9jdXNTY29wZS5hdXRvRm9jdXNPblVubW91bnQnO1xuZXhwb3J0IGNvbnN0IEVWRU5UX09QVElPTlMgPSB7IGJ1YmJsZXM6IGZhbHNlLCBjYW5jZWxhYmxlOiB0cnVlIH07XG5cbnR5cGUgRm9jdXNhYmxlVGFyZ2V0ID0gSFRNTEVsZW1lbnQgfCB7IGZvY3VzOiAoKSA9PiB2b2lkIH07XG5cbi8qKlxuICogQXR0ZW1wdHMgZm9jdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBsaXN0IG9mIGNhbmRpZGF0ZXMuXG4gKiBTdG9wcyB3aGVuIGZvY3VzIGhhcyBhY3R1YWxseSBtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzRmlyc3QoY2FuZGlkYXRlczogSFRNTEVsZW1lbnRbXSwgeyBzZWxlY3QgPSBmYWxzZSB9ID0ge30pIHtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBnZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgICAgICBmb2N1cyhjYW5kaWRhdGUsIHsgc2VsZWN0IH0pO1xuICAgICAgICBpZiAoZ2V0QWN0aXZlRWxlbWVudCgpICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBwb3RlbnRpYWwgdGFiYmFibGUgY2FuZGlkYXRlcy5cbiAqXG4gKiBOT1RFOiBUaGlzIGlzIG9ubHkgYSBjbG9zZSBhcHByb3hpbWF0aW9uLiBGb3IgZXhhbXBsZSBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGNhc2VzIGxpa2Ugd2hlblxuICogZWxlbWVudHMgYXJlIG5vdCB2aXNpYmxlLiBUaGlzIGNhbm5vdCBiZSB3b3JrZWQgb3V0IGVhc2lseSBieSBqdXN0IHJlYWRpbmcgYSBwcm9wZXJ0eSwgYnV0IHJhdGhlclxuICogbmVjZXNzaXRhdGUgcnVudGltZSBrbm93bGVkZ2UgKGNvbXB1dGVkIHN0eWxlcywgZXRjKS4gV2UgZGVhbCB3aXRoIHRoZXNlIGNhc2VzIHNlcGFyYXRlbHkuXG4gKlxuICogU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJlZVdhbGtlclxuICogQ3JlZGl0OiBodHRwczovL2dpdGh1Yi5jb20vZGlzY29yZC9mb2N1cy1sYXllcnMvYmxvYi9tYXN0ZXIvc3JjL3V0aWwvd3JhcEZvY3VzLnRzeCNMMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBub2RlczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgIGNvbnN0IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoY29udGFpbmVyLCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwge1xuICAgICAgICBhY2NlcHROb2RlOiAobm9kZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0hpZGRlbklucHV0ID0gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG4gICAgICAgICAgICBpZiAobm9kZS5kaXNhYmxlZCB8fCBub2RlLmhpZGRlbiB8fCBpc0hpZGRlbklucHV0KSByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgICAgIC8vIGAudGFiSW5kZXhgIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuIEl0IHdvcmtzIG9uIHRoZVxuICAgICAgICAgICAgLy8gcnVudGltZSdzIHVuZGVyc3RhbmRpbmcgb2YgdGFiYmFiaWxpdHksIHNvIHRoaXMgYXV0b21hdGljYWxseSBhY2NvdW50c1xuICAgICAgICAgICAgLy8gZm9yIGFueSBraW5kIG9mIGVsZW1lbnQgdGhhdCBjb3VsZCBiZSB0YWJiZWQgdG8uXG4gICAgICAgICAgICByZXR1cm4gbm9kZS50YWJJbmRleCA+PSAwID8gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUIDogTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHdoaWxlICh3YWxrZXIubmV4dE5vZGUoKSkgbm9kZXMucHVzaCh3YWxrZXIuY3VycmVudE5vZGUgYXMgSFRNTEVsZW1lbnQpO1xuICAgIC8vIHdlIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgb3JkZXIgb2Ygbm9kZXMgd2l0aCBwb3NpdGl2ZSBgdGFiSW5kZXhgIGFzIGl0XG4gICAgLy8gaGluZGVycyBhY2Nlc3NpYmlsaXR5IHRvIGhhdmUgdGFiIG9yZGVyIGRpZmZlcmVudCBmcm9tIHZpc3VhbCBvcmRlci5cbiAgICByZXR1cm4gbm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hpZGRlbihub2RlOiBIVE1MRWxlbWVudCwgeyB1cFRvIH06IHsgdXBUbz86IEhUTUxFbGVtZW50IH0pIHtcbiAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJykgcmV0dXJuIHRydWU7XG4gICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgLy8gd2Ugc3RvcCBhdCBgdXBUb2AgKGV4Y2x1ZGluZyBpdClcbiAgICAgICAgaWYgKHVwVG8gIT09IHVuZGVmaW5lZCAmJiBub2RlID09PSB1cFRvKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG5vZGUpLmRpc3BsYXkgPT09ICdub25lJykgcmV0dXJuIHRydWU7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCB2aXNpYmxlIGVsZW1lbnQgaW4gYSBsaXN0LlxuICogTk9URTogT25seSBjaGVja3MgdmlzaWJpbGl0eSB1cCB0byB0aGUgYGNvbnRhaW5lcmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVmlzaWJsZShlbGVtZW50czogSFRNTEVsZW1lbnRbXSwgY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgLy8gd2Ugc3RvcCBjaGVja2luZyBpZiBpdCdzIGhpZGRlbiBhdCB0aGUgYGNvbnRhaW5lcmAgbGV2ZWwgKGV4Y2x1ZGluZylcbiAgICAgICAgaWYgKCFpc0hpZGRlbihlbGVtZW50LCB7IHVwVG86IGNvbnRhaW5lciB9KSkgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYW5kIGxhc3QgdGFiYmFibGUgZWxlbWVudHMgaW5zaWRlIGEgY29udGFpbmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFiYmFibGVFZGdlcyhjb250YWluZXI6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IGdldFRhYmJhYmxlQ2FuZGlkYXRlcyhjb250YWluZXIpO1xuICAgIGNvbnN0IGZpcnN0ID0gZmluZFZpc2libGUoY2FuZGlkYXRlcywgY29udGFpbmVyKTtcbiAgICBjb25zdCBsYXN0ID0gZmluZFZpc2libGUoY2FuZGlkYXRlcy5yZXZlcnNlKCksIGNvbnRhaW5lcik7XG4gICAgcmV0dXJuIFtmaXJzdCwgbGFzdF0gYXMgY29uc3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGFibGVJbnB1dChlbGVtZW50OiBhbnkpOiBlbGVtZW50IGlzIEZvY3VzYWJsZVRhcmdldCAmIHsgc2VsZWN0OiAoKSA9PiB2b2lkIH0ge1xuICAgIHJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiAnc2VsZWN0JyBpbiBlbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXMoZWxlbWVudD86IEZvY3VzYWJsZVRhcmdldCB8IG51bGwsIHsgc2VsZWN0ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgLy8gb25seSBmb2N1cyBpZiB0aGF0IGVsZW1lbnQgaXMgZm9jdXNhYmxlXG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5mb2N1cykge1xuICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBnZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICAgIC8vIE5PVEU6IHdlIHByZXZlbnQgc2Nyb2xsaW5nIG9uIGZvY3VzLCB0byBtaW5pbWl6ZSBqYXJyaW5nIHRyYW5zaXRpb25zIGZvciB1c2Vyc1xuICAgICAgICBlbGVtZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgLy8gb25seSBzZWxlY3QgaWYgaXRzIG5vdCB0aGUgc2FtZSBlbGVtZW50LCBpdCBzdXBwb3J0cyBzZWxlY3Rpb24gYW5kIHdlIG5lZWQgdG8gc2VsZWN0XG4gICAgICAgIGlmIChlbGVtZW50ICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgJiYgaXNTZWxlY3RhYmxlSW5wdXQoZWxlbWVudCkgJiYgc2VsZWN0KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { afterNextRender, booleanAttribute, DestroyRef, Directive, effect, ElementRef, inject, Injector, input, output, signal } from '@angular/core';\nimport { createContext, getActiveElement } from '@radix-ng/primitives/core';\nimport { createFocusScopesStack, removeLinks } from './stack';\nimport { AUTOFOCUS_ON_MOUNT, AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS, focus, focusFirst, getTabbableCandidates, getTabbableEdges } from './utils';\nimport * as i0 from \"@angular/core\";\nexport const [injectFocusScopeContext, provideFocusScopeContext] = createContext('FocusScope Context');\nconst rootContext = () => {\n const context = inject(RdxFocusScope);\n return {\n loop: context.loop,\n trapped: context.trapped\n };\n};\n/**\n * @group Components\n */\nexport class RdxFocusScope {\n constructor() {\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.elementRef = inject(ElementRef);\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n *\n * @group Props\n * @defaultValue false\n */\n this.loop = input(false, ...(ngDevMode ? [{ debugName: \"loop\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n *\n * @group Props\n * @defaultValue false\n */\n this.trapped = input(false, ...(ngDevMode ? [{ debugName: \"trapped\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n *\n * @group Emits\n */\n this.mountAutoFocus = output();\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n *\n * @group Emits\n */\n this.unmountAutoFocus = output();\n this.lastFocusedElement = signal(null, ...(ngDevMode ? [{ debugName: \"lastFocusedElement\" }] : []));\n this.focusScopesStack = createFocusScopesStack();\n this.focusScope = {\n paused: signal(false),\n pause: () => this.focusScope.paused.set(true),\n resume: () => this.focusScope.paused.set(false)\n };\n this.alive = true;\n this.destroyRef.onDestroy(() => {\n this.alive = false;\n });\n afterNextRender(() => {\n effect((onCleanup) => {\n const container = this.elementRef.nativeElement;\n if (this.trapped()) {\n const handleFocusIn = (event) => {\n if (this.focusScope.paused() || !container) {\n return;\n }\n const target = event.target;\n if (this.elementRef.nativeElement.contains(target)) {\n this.lastFocusedElement.set(target);\n }\n else {\n focus(this.lastFocusedElement(), { select: true });\n }\n };\n const handleFocusOut = (event) => {\n if (this.focusScope.paused() || !container) {\n return;\n }\n const relatedTarget = event.relatedTarget;\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null)\n return;\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(this.lastFocusedElement(), { select: true });\n }\n };\n const handleMutations = () => {\n const isLastFocusedElementExist = container.contains(this.lastFocusedElement());\n if (!isLastFocusedElementExist) {\n focus(container);\n }\n };\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) {\n mutationObserver.observe(container, { childList: true, subtree: true });\n }\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n onCleanup(() => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n });\n }\n }, { injector: this.injector });\n effect(async (onCleanup) => {\n const container = this.elementRef.nativeElement;\n await Promise.resolve();\n if (!container) {\n return;\n }\n this.focusScopesStack.add(this.focusScope);\n const previouslyFocusedElement = getActiveElement();\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, (ev) => this.mountAutoFocus.emit(ev));\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true\n });\n if (getActiveElement() === previouslyFocusedElement)\n focus(container);\n }\n }\n const unmountEventHandler = (ev) => {\n if (this.alive)\n this.unmountAutoFocus.emit(ev);\n };\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n onCleanup(() => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, (ev) => this.mountAutoFocus.emit(ev));\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.dispatchEvent(unmountEvent);\n setTimeout(() => {\n if (!unmountEvent.defaultPrevented)\n focus(previouslyFocusedElement ?? document.body, { select: true });\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, unmountEventHandler);\n this.focusScopesStack.remove(this.focusScope);\n }, 0);\n });\n }, { injector: this.injector });\n });\n }\n handleKeyDown(event) {\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = getActiveElement();\n if (isTabKey && focusedElement) {\n const container = event.currentTarget;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container)\n event.preventDefault();\n }\n else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (this.loop()) {\n focus(first, { select: true });\n }\n }\n else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (this.loop()) {\n focus(last, { select: true });\n }\n }\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxFocusScope, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxFocusScope, isStandalone: true, selector: \"[rdxFocusScope]\", inputs: { loop: { classPropertyName: \"loop\", publicName: \"loop\", isSignal: true, isRequired: false, transformFunction: null }, trapped: { classPropertyName: \"trapped\", publicName: \"trapped\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mountAutoFocus: \"mountAutoFocus\", unmountAutoFocus: \"unmountAutoFocus\" }, host: { attributes: { \"tabindex\": \"-1\" }, listeners: { \"keydown\": \"handleKeyDown($event)\" } }, providers: [provideFocusScopeContext(rootContext)], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxFocusScope, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxFocusScope]',\n providers: [provideFocusScopeContext(rootContext)],\n host: {\n tabindex: '-1',\n '(keydown)': 'handleKeyDown($event)'\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtc2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL2ZvY3VzLXNjb3BlL3NyYy9mb2N1cy1zY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFpQixXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNILGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLEtBQUssRUFDTCxVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNuQixNQUFNLFNBQVMsQ0FBQzs7QUFRakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSx3QkFBd0IsQ0FBQyxHQUM1RCxhQUFhLENBQW9CLG9CQUFvQixDQUFDLENBQUM7QUFFM0QsTUFBTSxXQUFXLEdBQUcsR0FBc0IsRUFBRTtJQUN4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFdEMsT0FBTztRQUNILElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87S0FDM0IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBU0gsTUFBTSxPQUFPLGFBQWE7SUFvRHRCO1FBbkRpQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENB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QUM7OzJGQU16QyxhQUFhO2tCQVJ6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLEVBQUU7d0JBQ0YsUUFBUSxFQUFFLElBQUk7d0JBQ2QsV0FBVyxFQUFFLHVCQUF1QjtxQkFDdkM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgaW5wdXQsXG4gICAgb3V0cHV0LFxuICAgIFNpZ25hbCxcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCBnZXRBY3RpdmVFbGVtZW50IH0gZnJvbSAnQHJhZGl4LW5nL3ByaW1pdGl2ZXMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVGb2N1c1Njb3Blc1N0YWNrLCBGb2N1c1Njb3BlQVBJLCByZW1vdmVMaW5rcyB9IGZyb20gJy4vc3RhY2snO1xuaW1wb3J0IHtcbiAgICBBVVRPRk9DVVNfT05fTU9VTlQsXG4gICAgQVVUT0ZPQ1VTX09OX1VOTU9VTlQsXG4gICAgRVZFTlRfT1BUSU9OUyxcbiAgICBmb2N1cyxcbiAgICBmb2N1c0ZpcnN0LFxuICAgIGdldFRhYmJhYmxlQ2FuZGlkYXRlcyxcbiAgICBnZXRUYWJiYWJsZUVkZ2VzXG59IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzU2NvcGVDb250ZXh0IHtcbiAgICBsb29wPzogU2lnbmFsPGJvb2xlYW4+O1xuXG4gICAgdHJhcHBlZD86IFNpZ25hbDxib29sZWFuPjtcbn1cblxuZXhwb3J0IGNvbnN0IFtpbmplY3RGb2N1c1Njb3BlQ29udGV4dCwgcHJvdmlkZUZvY3VzU2NvcGVDb250ZXh0XSA9XG4gICAgY3JlYXRlQ29udGV4dDxGb2N1c1Njb3BlQ29udGV4dD4oJ0ZvY3VzU2NvcGUgQ29udGV4dCcpO1xuXG5jb25zdCByb290Q29udGV4dCA9ICgpOiBGb2N1c1Njb3BlQ29udGV4dCA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IGluamVjdChSZHhGb2N1c1Njb3BlKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGxvb3A6IGNvbnRleHQubG9vcCxcbiAgICAgICAgdHJhcHBlZDogY29udGV4dC50cmFwcGVkXG4gICAgfTtcbn07XG5cbi8qKlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4Rm9jdXNTY29wZV0nLFxuICAgIHByb3ZpZGVyczogW3Byb3ZpZGVGb2N1c1Njb3BlQ29udGV4dChyb290Q29udGV4dCldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgdGFiaW5kZXg6ICctMScsXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5RG93bigkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmR4Rm9jdXNTY29wZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYHRydWVgLCB0YWJiaW5nIGZyb20gbGFzdCBpdGVtIHdpbGwgZm9jdXMgZmlyc3QgdGFiYmFibGVcbiAgICAgKiBhbmQgc2hpZnQrdGFiIGZyb20gZmlyc3QgaXRlbSB3aWxsIGZvY3VzIGxhc3QgdGFiYWJibGUuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgbG9vcCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBgdHJ1ZWAsIGZvY3VzIGNhbm5vdCBlc2NhcGUgdGhlIGZvY3VzIHNjb3BlIHZpYSBrZXlib2FyZCxcbiAgICAgKiBwb2ludGVyLCBvciBhIHByb2dyYW1tYXRpYyBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSB0cmFwcGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIGF1dG8tZm9jdXNpbmcgb24gbW91bnQuXG4gICAgICogQ2FuIGJlIHByZXZlbnRlZC5cbiAgICAgKlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIHJlYWRvbmx5IG1vdW50QXV0b0ZvY3VzID0gb3V0cHV0PEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgaGFuZGxlciBjYWxsZWQgd2hlbiBhdXRvLWZvY3VzaW5nIG9uIHVubW91bnQuXG4gICAgICogQ2FuIGJlIHByZXZlbnRlZC5cbiAgICAgKlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHVubW91bnRBdXRvRm9jdXMgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgICByZWFkb25seSBsYXN0Rm9jdXNlZEVsZW1lbnQgPSBzaWduYWw8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNTY29wZXNTdGFjayA9IGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKTtcblxuICAgIHJlYWRvbmx5IGZvY3VzU2NvcGU6IEZvY3VzU2NvcGVBUEkgPSB7XG4gICAgICAgIHBhdXNlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgcGF1c2U6ICgpID0+IHRoaXMuZm9jdXNTY29wZS5wYXVzZWQuc2V0KHRydWUpLFxuICAgICAgICByZXN1bWU6ICgpID0+IHRoaXMuZm9jdXNTY29wZS5wYXVzZWQuc2V0KGZhbHNlKVxuICAgIH07XG5cbiAgICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICAgICAob25DbGVhbnVwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYXBwZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlRm9jdXNJbiA9IChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzU2NvcGUucGF1c2VkKCkgfHwgIWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudC5zZXQodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCgpLCB7IHNlbGVjdDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVGb2N1c091dCA9IChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzU2NvcGUucGF1c2VkKCkgfHwgIWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgYGZvY3Vzb3V0YCBldmVudCB3aXRoIGEgYG51bGxgIGByZWxhdGVkVGFyZ2V0YCB3aWxsIGhhcHBlbiBpbiBhdCBsZWFzdCB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxLiBXaGVuIHRoZSB1c2VyIHN3aXRjaGVzIGFwcC90YWJzL3dpbmRvd3MvdGhlIGJyb3dzZXIgaXRzZWxmIGxvc2VzIGZvY3VzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIuIEluIEdvb2dsZSBDaHJvbWUsIHdoZW4gdGhlIGZvY3VzZWQgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGxldCB0aGUgYnJvd3NlciBkbyBpdHMgdGhpbmcgaGVyZSBiZWNhdXNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMS4gVGhlIGJyb3dzZXIgYWxyZWFkeSBrZWVwcyBhIG1lbW9yeSBvZiB3aGF0J3MgZm9jdXNlZCBmb3Igd2hlbiB0aGUgcGFnZSBnZXRzIHJlZm9jdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCBpZiB3ZSB0cnkgdG8gZm9jdXMgdGhlIGRlbGV0ZWQgZm9jdXNlZCBlbGVtZW50IChhcyBwZXIgYmVsb3cpLCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIHRocm93cyB0aGUgQ1BVIHRvIDEwMCUsIHNvIHdlIGF2b2lkIGRvaW5nIGFueXRoaW5nIGZvciB0aGlzIHJlYXNvbiBoZXJlIHRvby5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZvY3VzIGhhcyBtb3ZlZCB0byBhbiBhY3R1YWwgbGVnaXRpbWF0ZSBlbGVtZW50IChgcmVsYXRlZFRhcmdldCAhPT0gbnVsbGApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250YWluZXIsIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGxhc3QgdmFsaWQgZm9jdXNlZCBlbGVtZW50IGluc2lkZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5jb250YWlucyhyZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCgpLCB7IHNlbGVjdDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVNdXRhdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0Rm9jdXNlZEVsZW1lbnRFeGlzdCA9IGNvbnRhaW5lci5jb250YWlucyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCgpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNMYXN0Rm9jdXNlZEVsZW1lbnRFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1cyhjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAgICAgYXN5bmMgKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNTY29wZXNTdGFjay5hZGQodGhpcy5mb2N1c1Njb3BlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBnZXRBY3RpdmVFbGVtZW50KCkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNGb2N1c2VkQ2FuZGlkYXRlID0gY29udGFpbmVyLmNvbnRhaW5zKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNGb2N1c2VkQ2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEFVVE9GT0NVU19PTl9NT1VOVCwgRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihBVVRPRk9DVVNfT05fTU9VTlQsIChldjogRXZlbnQpID0+IHRoaXMubW91bnRBdXRvRm9jdXMuZW1pdChldikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW91bnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaXJzdChyZW1vdmVMaW5rcyhnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldEFjdGl2ZUVsZW1lbnQoKSA9PT0gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSBmb2N1cyhjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50SGFuZGxlciA9IChldjogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsaXZlKSB0aGlzLnVubW91bnRBdXRvRm9jdXMuZW1pdChldik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKEFVVE9GT0NVU19PTl9VTk1PVU5ULCB1bm1vdW50RXZlbnRIYW5kbGVyKTtcblxuICAgICAgICAgICAgICAgICAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoQVVUT0ZPQ1VTX09OX01PVU5ULCAoZXY6IEV2ZW50KSA9PiB0aGlzLm1vdW50QXV0b0ZvY3VzLmVtaXQoZXYpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEFVVE9GT0NVU19PTl9VTk1PVU5ULCBFVkVOVF9PUFRJT05TKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KHVubW91bnRFdmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdW5tb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA/PyBkb2N1bWVudC5ib2R5LCB7IHNlbGVjdDogdHJ1ZSB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lciBhZnRlciB3ZSBgZGlzcGF0Y2hFdmVudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihBVVRPRk9DVVNfT05fVU5NT1VOVCwgdW5tb3VudEV2ZW50SGFuZGxlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzU2NvcGVzU3RhY2sucmVtb3ZlKHRoaXMuZm9jdXNTY29wZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXNUYWJLZXkgPSBldmVudC5rZXkgPT09ICdUYWInICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXk7XG5cbiAgICAgICAgY29uc3QgZm9jdXNlZEVsZW1lbnQgPSBnZXRBY3RpdmVFbGVtZW50KCkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGlmIChpc1RhYktleSAmJiBmb2N1c2VkRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCBsYXN0XSA9IGdldFRhYmJhYmxlRWRnZXMoY29udGFpbmVyKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUgPSBmaXJzdCAmJiBsYXN0O1xuXG4gICAgICAgICAgICAvLyB3ZSBjYW4gb25seSB3cmFwIGZvY3VzIGlmIHdlIGhhdmUgdGFiYmFibGUgZWRnZXNcbiAgICAgICAgICAgIGlmICghaGFzVGFiYmFibGVFbGVtZW50c0luc2lkZSkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCA9PT0gY29udGFpbmVyKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvb3AoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXMoZmlyc3QsIHsgc2VsZWN0OiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9vcCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1cyhsYXN0LCB7IHNlbGVjdDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1mb2N1cy1zY29wZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvZm9jdXMtc2NvcGUvcmFkaXgtbmctcHJpbWl0aXZlcy1mb2N1cy1zY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}