ng-primitives 0.0.5

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 (243) hide show
  1. package/README.md +7 -0
  2. package/a11y/README.md +3 -0
  3. package/a11y/index.d.ts +8 -0
  4. package/a11y/visually-hidden/visually-hidden.directive.d.ts +5 -0
  5. package/accordion/README.md +3 -0
  6. package/accordion/accordion/accordion.directive.d.ts +45 -0
  7. package/accordion/accordion/accordion.token.d.ts +15 -0
  8. package/accordion/accordion-content/accordion-content.directive.d.ts +25 -0
  9. package/accordion/accordion-content/accordion-content.token.d.ts +15 -0
  10. package/accordion/accordion-item/accordion-item.directive.d.ts +45 -0
  11. package/accordion/accordion-item/accordion-item.token.d.ts +15 -0
  12. package/accordion/accordion-trigger/accordion-trigger.directive.d.ts +21 -0
  13. package/accordion/accordion-trigger/accordion-trigger.token.d.ts +15 -0
  14. package/accordion/config/accordion.config.d.ts +39 -0
  15. package/accordion/index.d.ts +16 -0
  16. package/avatar/README.md +3 -0
  17. package/avatar/avatar/avatar.directive.d.ts +22 -0
  18. package/avatar/avatar/avatar.token.d.ts +15 -0
  19. package/avatar/avatar-fallback/avatar-fallback.directive.d.ts +45 -0
  20. package/avatar/avatar-image/avatar-image.directive.d.ts +28 -0
  21. package/avatar/config/avatar.config.d.ts +28 -0
  22. package/avatar/index.d.ts +12 -0
  23. package/checkbox/README.md +3 -0
  24. package/checkbox/checkbox/checkbox.directive.d.ts +89 -0
  25. package/checkbox/checkbox/checkbox.token.d.ts +15 -0
  26. package/checkbox/checkbox-indicator/checkbox-indicator.directive.d.ts +19 -0
  27. package/checkbox/checkbox-indicator/checkbox-indicator.token.d.ts +15 -0
  28. package/checkbox/checkbox-input/checkbox-input.directive.d.ts +10 -0
  29. package/checkbox/checkbox-label/checkbox-label.directive.d.ts +9 -0
  30. package/checkbox/index.d.ts +13 -0
  31. package/esm2022/a11y/index.mjs +9 -0
  32. package/esm2022/a11y/ng-primitives-a11y.mjs +5 -0
  33. package/esm2022/a11y/visually-hidden/visually-hidden.directive.mjs +25 -0
  34. package/esm2022/accordion/accordion/accordion.directive.mjs +90 -0
  35. package/esm2022/accordion/accordion/accordion.token.mjs +17 -0
  36. package/esm2022/accordion/accordion-content/accordion-content.directive.mjs +55 -0
  37. package/esm2022/accordion/accordion-content/accordion-content.token.mjs +17 -0
  38. package/esm2022/accordion/accordion-item/accordion-item.directive.mjs +64 -0
  39. package/esm2022/accordion/accordion-item/accordion-item.token.mjs +17 -0
  40. package/esm2022/accordion/accordion-trigger/accordion-trigger.directive.mjs +58 -0
  41. package/esm2022/accordion/accordion-trigger/accordion-trigger.token.mjs +17 -0
  42. package/esm2022/accordion/config/accordion.config.mjs +35 -0
  43. package/esm2022/accordion/index.mjs +17 -0
  44. package/esm2022/accordion/ng-primitives-accordion.mjs +5 -0
  45. package/esm2022/avatar/avatar/avatar.directive.mjs +45 -0
  46. package/esm2022/avatar/avatar/avatar.token.mjs +17 -0
  47. package/esm2022/avatar/avatar-fallback/avatar-fallback.directive.mjs +61 -0
  48. package/esm2022/avatar/avatar-image/avatar-image.directive.mjs +64 -0
  49. package/esm2022/avatar/config/avatar.config.mjs +33 -0
  50. package/esm2022/avatar/index.mjs +13 -0
  51. package/esm2022/avatar/ng-primitives-avatar.mjs +5 -0
  52. package/esm2022/checkbox/checkbox/checkbox.directive.mjs +141 -0
  53. package/esm2022/checkbox/checkbox/checkbox.token.mjs +17 -0
  54. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.directive.mjs +51 -0
  55. package/esm2022/checkbox/checkbox-indicator/checkbox-indicator.token.mjs +17 -0
  56. package/esm2022/checkbox/checkbox-input/checkbox-input.directive.mjs +40 -0
  57. package/esm2022/checkbox/checkbox-label/checkbox-label.directive.mjs +32 -0
  58. package/esm2022/checkbox/index.mjs +14 -0
  59. package/esm2022/checkbox/ng-primitives-checkbox.mjs +5 -0
  60. package/esm2022/index.mjs +10 -0
  61. package/esm2022/ng-primitives.mjs +5 -0
  62. package/esm2022/progress/index.mjs +10 -0
  63. package/esm2022/progress/ng-primitives-progress.mjs +5 -0
  64. package/esm2022/progress/progress/progress.directive.mjs +60 -0
  65. package/esm2022/progress/progress/progress.token.mjs +16 -0
  66. package/esm2022/progress/progress-indicator/progress-indicator.directive.mjs +33 -0
  67. package/esm2022/radio/index.mjs +13 -0
  68. package/esm2022/radio/ng-primitives-radio.mjs +5 -0
  69. package/esm2022/radio/radio-group/radio-group.directive.mjs +100 -0
  70. package/esm2022/radio/radio-group/radio-group.token.mjs +17 -0
  71. package/esm2022/radio/radio-indicator/radio-indicator.directive.mjs +41 -0
  72. package/esm2022/radio/radio-item/radio-item.directive.mjs +68 -0
  73. package/esm2022/radio/radio-item/radio-item.token.mjs +17 -0
  74. package/esm2022/resize/index.mjs +10 -0
  75. package/esm2022/resize/ng-primitives-resize.mjs +5 -0
  76. package/esm2022/resize/resize/resize.directive.mjs +49 -0
  77. package/esm2022/resize/utils/resize.mjs +41 -0
  78. package/esm2022/roving-focus/index.mjs +12 -0
  79. package/esm2022/roving-focus/ng-primitives-roving-focus.mjs +5 -0
  80. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.directive.mjs +244 -0
  81. package/esm2022/roving-focus/roving-focus-group/roving-focus-group.token.mjs +17 -0
  82. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.directive.mjs +98 -0
  83. package/esm2022/roving-focus/roving-focus-item/roving-focus-item.token.mjs +17 -0
  84. package/esm2022/select/index.mjs +16 -0
  85. package/esm2022/select/ng-primitives-select.mjs +5 -0
  86. package/esm2022/select/select/select.directive.mjs +54 -0
  87. package/esm2022/select/select/select.token.mjs +16 -0
  88. package/esm2022/select/select-button/select-button.directive.mjs +84 -0
  89. package/esm2022/select/select-button/select-button.token.mjs +16 -0
  90. package/esm2022/select/select-option/select-option.directive.mjs +90 -0
  91. package/esm2022/select/select-option/select-option.token.mjs +16 -0
  92. package/esm2022/select/select-options/select-options.directive.mjs +157 -0
  93. package/esm2022/select/select-options/select-options.token.mjs +16 -0
  94. package/esm2022/slider/index.mjs +16 -0
  95. package/esm2022/slider/ng-primitives-slider.mjs +5 -0
  96. package/esm2022/slider/slider/slider.directive.mjs +68 -0
  97. package/esm2022/slider/slider/slider.token.mjs +16 -0
  98. package/esm2022/slider/slider-range/slider-range.directive.mjs +36 -0
  99. package/esm2022/slider/slider-range/slider-range.token.mjs +16 -0
  100. package/esm2022/slider/slider-thumb/slider-thumb.directive.mjs +109 -0
  101. package/esm2022/slider/slider-thumb/slider-thumb.token.mjs +16 -0
  102. package/esm2022/slider/slider-track/slider-track.directive.mjs +54 -0
  103. package/esm2022/slider/slider-track/slider-track.token.mjs +16 -0
  104. package/esm2022/switch/index.mjs +11 -0
  105. package/esm2022/switch/ng-primitives-switch.mjs +5 -0
  106. package/esm2022/switch/switch/switch.directive.mjs +126 -0
  107. package/esm2022/switch/switch/switch.token.mjs +17 -0
  108. package/esm2022/switch/switch-thumb/switch-thumb.directive.mjs +32 -0
  109. package/esm2022/tabs/config/tabs.config.mjs +35 -0
  110. package/esm2022/tabs/index.mjs +15 -0
  111. package/esm2022/tabs/ng-primitives-tabs.mjs +5 -0
  112. package/esm2022/tabs/tab-button/tab-button.directive.mjs +84 -0
  113. package/esm2022/tabs/tab-list/tab-list.directive.mjs +34 -0
  114. package/esm2022/tabs/tab-panel/tab-panel.directive.mjs +62 -0
  115. package/esm2022/tabs/tab-panel/tab-panel.token.mjs +17 -0
  116. package/esm2022/tabs/tabset/tabset.directive.mjs +91 -0
  117. package/esm2022/tabs/tabset/tabset.token.mjs +17 -0
  118. package/esm2022/toggle/index.mjs +9 -0
  119. package/esm2022/toggle/ng-primitives-toggle.mjs +5 -0
  120. package/esm2022/toggle/toggle/toggle.directive.mjs +48 -0
  121. package/esm2022/tooltip/config/tooltip.config.mjs +38 -0
  122. package/esm2022/tooltip/index.mjs +13 -0
  123. package/esm2022/tooltip/ng-primitives-tooltip.mjs +5 -0
  124. package/esm2022/tooltip/tooltip/tooltip.directive.mjs +57 -0
  125. package/esm2022/tooltip/tooltip/tooltip.token.mjs +16 -0
  126. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.directive.mjs +190 -0
  127. package/esm2022/tooltip/tooltip-trigger/tooltip-trigger.token.mjs +23 -0
  128. package/esm2022/utils/helpers/disposables.mjs +72 -0
  129. package/esm2022/utils/helpers/focus-manager.mjs +28 -0
  130. package/esm2022/utils/helpers/unique-id.mjs +22 -0
  131. package/esm2022/utils/hover/hover.directive.mjs +183 -0
  132. package/esm2022/utils/hover/hover.token.mjs +16 -0
  133. package/esm2022/utils/index.mjs +14 -0
  134. package/esm2022/utils/ng-primitives-utils.mjs +5 -0
  135. package/esm2022/utils/ui/dimensions.mjs +40 -0
  136. package/fesm2022/ng-primitives-a11y.mjs +40 -0
  137. package/fesm2022/ng-primitives-a11y.mjs.map +1 -0
  138. package/fesm2022/ng-primitives-accordion.mjs +361 -0
  139. package/fesm2022/ng-primitives-accordion.mjs.map +1 -0
  140. package/fesm2022/ng-primitives-avatar.mjs +223 -0
  141. package/fesm2022/ng-primitives-avatar.mjs.map +1 -0
  142. package/fesm2022/ng-primitives-checkbox.mjs +299 -0
  143. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -0
  144. package/fesm2022/ng-primitives-progress.mjs +119 -0
  145. package/fesm2022/ng-primitives-progress.mjs.map +1 -0
  146. package/fesm2022/ng-primitives-radio.mjs +245 -0
  147. package/fesm2022/ng-primitives-radio.mjs.map +1 -0
  148. package/fesm2022/ng-primitives-resize.mjs +104 -0
  149. package/fesm2022/ng-primitives-resize.mjs.map +1 -0
  150. package/fesm2022/ng-primitives-roving-focus.mjs +384 -0
  151. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -0
  152. package/fesm2022/ng-primitives-select.mjs +442 -0
  153. package/fesm2022/ng-primitives-select.mjs.map +1 -0
  154. package/fesm2022/ng-primitives-slider.mjs +328 -0
  155. package/fesm2022/ng-primitives-slider.mjs.map +1 -0
  156. package/fesm2022/ng-primitives-switch.mjs +185 -0
  157. package/fesm2022/ng-primitives-switch.mjs.map +1 -0
  158. package/fesm2022/ng-primitives-tabs.mjs +337 -0
  159. package/fesm2022/ng-primitives-tabs.mjs.map +1 -0
  160. package/fesm2022/ng-primitives-toggle.mjs +63 -0
  161. package/fesm2022/ng-primitives-toggle.mjs.map +1 -0
  162. package/fesm2022/ng-primitives-tooltip.mjs +330 -0
  163. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -0
  164. package/fesm2022/ng-primitives-utils.mjs +370 -0
  165. package/fesm2022/ng-primitives-utils.mjs.map +1 -0
  166. package/fesm2022/ng-primitives.mjs +14 -0
  167. package/fesm2022/ng-primitives.mjs.map +1 -0
  168. package/index.d.ts +9 -0
  169. package/package.json +120 -0
  170. package/progress/README.md +3 -0
  171. package/progress/index.d.ts +9 -0
  172. package/progress/progress/progress.directive.d.ts +40 -0
  173. package/progress/progress/progress.token.d.ts +14 -0
  174. package/progress/progress-indicator/progress-indicator.directive.d.ts +9 -0
  175. package/radio/README.md +3 -0
  176. package/radio/index.d.ts +12 -0
  177. package/radio/radio-group/radio-group.directive.d.ts +71 -0
  178. package/radio/radio-group/radio-group.token.d.ts +15 -0
  179. package/radio/radio-indicator/radio-indicator.directive.d.ts +17 -0
  180. package/radio/radio-item/radio-item.directive.d.ts +41 -0
  181. package/radio/radio-item/radio-item.token.d.ts +15 -0
  182. package/resize/README.md +3 -0
  183. package/resize/index.d.ts +9 -0
  184. package/resize/resize/resize.directive.d.ts +31 -0
  185. package/resize/utils/resize.d.ts +18 -0
  186. package/roving-focus/README.md +3 -0
  187. package/roving-focus/index.d.ts +11 -0
  188. package/roving-focus/roving-focus-group/roving-focus-group.directive.d.ts +94 -0
  189. package/roving-focus/roving-focus-group/roving-focus-group.token.d.ts +15 -0
  190. package/roving-focus/roving-focus-item/roving-focus-item.directive.d.ts +57 -0
  191. package/roving-focus/roving-focus-item/roving-focus-item.token.d.ts +15 -0
  192. package/select/README.md +3 -0
  193. package/select/index.d.ts +15 -0
  194. package/select/select/select.directive.d.ts +35 -0
  195. package/select/select/select.token.d.ts +14 -0
  196. package/select/select-button/select-button.directive.d.ts +51 -0
  197. package/select/select-button/select-button.token.d.ts +14 -0
  198. package/select/select-option/select-option.directive.d.ts +57 -0
  199. package/select/select-option/select-option.token.d.ts +14 -0
  200. package/select/select-options/select-options.directive.d.ts +65 -0
  201. package/select/select-options/select-options.token.d.ts +14 -0
  202. package/slider/README.md +3 -0
  203. package/slider/index.d.ts +15 -0
  204. package/slider/slider/slider.directive.d.ts +45 -0
  205. package/slider/slider/slider.token.d.ts +14 -0
  206. package/slider/slider-range/slider-range.directive.d.ts +9 -0
  207. package/slider/slider-range/slider-range.token.d.ts +14 -0
  208. package/slider/slider-thumb/slider-thumb.directive.d.ts +21 -0
  209. package/slider/slider-thumb/slider-thumb.token.d.ts +14 -0
  210. package/slider/slider-track/slider-track.directive.d.ts +26 -0
  211. package/slider/slider-track/slider-track.token.d.ts +14 -0
  212. package/switch/README.md +3 -0
  213. package/switch/index.d.ts +10 -0
  214. package/switch/switch/switch.directive.d.ts +82 -0
  215. package/switch/switch/switch.token.d.ts +15 -0
  216. package/switch/switch-thumb/switch-thumb.directive.d.ts +9 -0
  217. package/tabs/README.md +3 -0
  218. package/tabs/config/tabs.config.d.ts +38 -0
  219. package/tabs/index.d.ts +14 -0
  220. package/tabs/tab-button/tab-button.directive.d.ts +54 -0
  221. package/tabs/tab-list/tab-list.directive.d.ts +9 -0
  222. package/tabs/tab-panel/tab-panel.directive.d.ts +32 -0
  223. package/tabs/tab-panel/tab-panel.token.d.ts +15 -0
  224. package/tabs/tabset/tabset.directive.d.ts +53 -0
  225. package/tabs/tabset/tabset.token.d.ts +15 -0
  226. package/toggle/README.md +3 -0
  227. package/toggle/index.d.ts +8 -0
  228. package/toggle/toggle/toggle.directive.d.ts +27 -0
  229. package/tooltip/README.md +3 -0
  230. package/tooltip/config/tooltip.config.d.ts +54 -0
  231. package/tooltip/index.d.ts +12 -0
  232. package/tooltip/tooltip/tooltip.directive.d.ts +30 -0
  233. package/tooltip/tooltip/tooltip.token.d.ts +14 -0
  234. package/tooltip/tooltip-trigger/tooltip-trigger.directive.d.ts +111 -0
  235. package/tooltip/tooltip-trigger/tooltip-trigger.token.d.ts +22 -0
  236. package/utils/README.md +3 -0
  237. package/utils/helpers/disposables.d.ts +40 -0
  238. package/utils/helpers/focus-manager.d.ts +19 -0
  239. package/utils/helpers/unique-id.d.ts +13 -0
  240. package/utils/hover/hover.directive.d.ts +62 -0
  241. package/utils/hover/hover.token.d.ts +14 -0
  242. package/utils/index.d.ts +13 -0
  243. package/utils/ui/dimensions.d.ts +9 -0
@@ -0,0 +1,244 @@
1
+ import { Directionality } from '@angular/cdk/bidi';
2
+ import { Directive, Input, booleanAttribute, inject, input, signal } from '@angular/core';
3
+ import { NgpRovingFocusGroupToken } from './roving-focus-group.token';
4
+ import * as i0 from "@angular/core";
5
+ export class NgpRovingFocusGroup {
6
+ constructor() {
7
+ /**
8
+ * Access the directionality service.
9
+ */
10
+ this.directionality = inject(Directionality);
11
+ /**
12
+ * Determine the orientation of the roving focus group.
13
+ * @default 'vertical'
14
+ * @summary This does not use a signal as we need this to be programmatically settable when used as a host directive.
15
+ */
16
+ this.orientation = 'vertical';
17
+ /**
18
+ * Determine if focus should wrap when the end or beginning is reached.
19
+ */
20
+ this.wrap = input(true, {
21
+ alias: 'ngpRovingFocusGroupWrap',
22
+ transform: booleanAttribute,
23
+ });
24
+ /**
25
+ * Determine if the home and end keys should navigate to the first and last items.
26
+ */
27
+ this.homeEnd = input(true, {
28
+ alias: 'ngpRovingFocusGroupHomeEnd',
29
+ transform: booleanAttribute,
30
+ });
31
+ /**
32
+ * Determine if the roving focus group is disabled.
33
+ */
34
+ this.disabled = input(false, {
35
+ alias: 'ngpRovingFocusGroupDisabled',
36
+ transform: booleanAttribute,
37
+ });
38
+ /**
39
+ * Store the items in the roving focus group.
40
+ */
41
+ this.items = signal([]);
42
+ /**
43
+ * Store the active item in the roving focus group.
44
+ * @internal
45
+ */
46
+ this.activeItem = signal(null);
47
+ }
48
+ /**
49
+ * Get the items in the roving focus group sorted by order.
50
+ */
51
+ get sortedItems() {
52
+ return this.items().sort((a, b) => {
53
+ // sort the items by their position in the document
54
+ return a.elementRef.nativeElement.compareDocumentPosition(b.elementRef.nativeElement) &
55
+ Node.DOCUMENT_POSITION_FOLLOWING
56
+ ? -1
57
+ : 1;
58
+ });
59
+ }
60
+ /**
61
+ * Register an item with the roving focus group.
62
+ * @param item The item to register
63
+ * @internal
64
+ */
65
+ register(item) {
66
+ this.items.update(items => [...items, item]);
67
+ // if there is no active item, make the first item the tabbable item
68
+ if (!this.activeItem()) {
69
+ this.activeItem.set(item);
70
+ }
71
+ }
72
+ /**
73
+ * Unregister an item with the roving focus group.
74
+ * @param item The item to unregister
75
+ * @internal
76
+ */
77
+ unregister(item) {
78
+ this.items.update(items => items.filter(i => i !== item));
79
+ // check if the unregistered item is the active item
80
+ if (this.activeItem() === item) {
81
+ // if the active item is unregistered, activate the first item
82
+ this.activeItem.set(this.items()[0] ?? null);
83
+ }
84
+ }
85
+ /**
86
+ * Activate an item in the roving focus group.
87
+ * @param item The item to activate
88
+ * @param origin The origin of the focus change
89
+ */
90
+ setActiveItem(item, origin = 'program') {
91
+ this.activeItem.set(item);
92
+ item?.focus(origin);
93
+ }
94
+ /**
95
+ * Activate the first item in the roving focus group.
96
+ * @param origin The origin of the focus change
97
+ */
98
+ activateFirstItem(origin) {
99
+ // find the first item that is not disabled
100
+ const item = this.sortedItems.find(i => !i.disabled()) ?? null;
101
+ // set the first item as the active item
102
+ this.setActiveItem(item, origin);
103
+ }
104
+ /**
105
+ * Activate the last item in the roving focus group.
106
+ * @param origin The origin of the focus change
107
+ */
108
+ activateLastItem(origin) {
109
+ // find the last item that is not disabled
110
+ const item = [...this.sortedItems].reverse().find(i => !i.disabled()) ?? null;
111
+ // set the last item as the active item
112
+ this.setActiveItem(item, origin);
113
+ }
114
+ /**
115
+ * Activate the next item in the roving focus group.
116
+ * @param origin The origin of the focus change
117
+ */
118
+ activateNextItem(origin) {
119
+ const activeItem = this.activeItem();
120
+ // if there is no active item, activate the first item
121
+ if (!activeItem) {
122
+ this.activateFirstItem(origin);
123
+ return;
124
+ }
125
+ // find the index of the active item
126
+ const index = this.sortedItems.indexOf(activeItem);
127
+ // find the next item that is not disabled
128
+ const item = this.sortedItems.slice(index + 1).find(i => !i.disabled()) ?? null;
129
+ // if we are at the end of the list, wrap to the beginning
130
+ if (!item && this.wrap()) {
131
+ this.activateFirstItem(origin);
132
+ return;
133
+ }
134
+ // if there is no next item, do nothing
135
+ if (!item) {
136
+ return;
137
+ }
138
+ // set the next item as the active item
139
+ this.setActiveItem(item, origin);
140
+ }
141
+ /**
142
+ * Activate the previous item in the roving focus group.
143
+ * @param origin The origin of the focus change
144
+ */
145
+ activatePreviousItem(origin) {
146
+ const activeItem = this.activeItem();
147
+ // if there is no active item, activate the last item
148
+ if (!activeItem) {
149
+ this.activateLastItem(origin);
150
+ return;
151
+ }
152
+ // find the index of the active item
153
+ const index = this.sortedItems.indexOf(activeItem);
154
+ // find the previous item that is not disabled
155
+ const item = this.sortedItems
156
+ .slice(0, index)
157
+ .reverse()
158
+ .find(i => !i.disabled()) ?? null;
159
+ // if we are at the beginning of the list, wrap to the end
160
+ if (!item && this.wrap()) {
161
+ this.activateLastItem(origin);
162
+ return;
163
+ }
164
+ // if there is no previous item, do nothing
165
+ if (!item) {
166
+ return;
167
+ }
168
+ // set the previous item as the active item
169
+ this.setActiveItem(item, origin);
170
+ }
171
+ /**
172
+ * Handle keyboard navigation for the roving focus group.
173
+ * @param event The keyboard event
174
+ * @internal
175
+ */
176
+ onKeydown(event) {
177
+ if (this.disabled()) {
178
+ return;
179
+ }
180
+ switch (event.key) {
181
+ case 'ArrowUp':
182
+ if (this.orientation === 'vertical') {
183
+ event.preventDefault();
184
+ this.activatePreviousItem('keyboard');
185
+ }
186
+ break;
187
+ case 'ArrowDown':
188
+ if (this.orientation === 'vertical') {
189
+ event.preventDefault();
190
+ this.activateNextItem('keyboard');
191
+ }
192
+ break;
193
+ case 'ArrowLeft':
194
+ if (this.orientation === 'horizontal') {
195
+ event.preventDefault();
196
+ if (this.directionality.value === 'ltr') {
197
+ this.activatePreviousItem('keyboard');
198
+ }
199
+ else {
200
+ this.activateNextItem('keyboard');
201
+ }
202
+ }
203
+ break;
204
+ case 'ArrowRight':
205
+ if (this.orientation === 'horizontal') {
206
+ event.preventDefault();
207
+ if (this.directionality.value === 'ltr') {
208
+ this.activateNextItem('keyboard');
209
+ }
210
+ else {
211
+ this.activatePreviousItem('keyboard');
212
+ }
213
+ }
214
+ break;
215
+ case 'Home':
216
+ if (this.homeEnd()) {
217
+ event.preventDefault();
218
+ this.activateFirstItem('keyboard');
219
+ }
220
+ break;
221
+ case 'End':
222
+ if (this.homeEnd()) {
223
+ event.preventDefault();
224
+ this.activateLastItem('keyboard');
225
+ }
226
+ break;
227
+ }
228
+ }
229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpRovingFocusGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
230
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpRovingFocusGroup, isStandalone: true, selector: "[ngpRovingFocusGroup]", inputs: { orientation: { classPropertyName: "orientation", publicName: "ngpRovingFocusGroupOrientation", isSignal: false, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "ngpRovingFocusGroupWrap", isSignal: true, isRequired: false, transformFunction: null }, homeEnd: { classPropertyName: "homeEnd", publicName: "ngpRovingFocusGroupHomeEnd", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpRovingFocusGroupDisabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: NgpRovingFocusGroupToken, useExisting: NgpRovingFocusGroup }], exportAs: ["ngpRovingFocusGroup"], ngImport: i0 }); }
231
+ }
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpRovingFocusGroup, decorators: [{
233
+ type: Directive,
234
+ args: [{
235
+ standalone: true,
236
+ selector: '[ngpRovingFocusGroup]',
237
+ exportAs: 'ngpRovingFocusGroup',
238
+ providers: [{ provide: NgpRovingFocusGroupToken, useExisting: NgpRovingFocusGroup }],
239
+ }]
240
+ }], propDecorators: { orientation: [{
241
+ type: Input,
242
+ args: [{ alias: 'ngpRovingFocusGroupOrientation' }]
243
+ }] } });
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvcm92aW5nLWZvY3VzL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAvcm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBUXRFLE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFPRTs7V0FFRztRQUNjLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRXpEOzs7O1dBSUc7UUFDaUQsZ0JBQVcsR0FDN0QsVUFBVSxDQUFDO1FBRWI7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUF3QixJQUFJLEVBQUU7WUFDakQsS0FBSyxFQUFFLHlCQUF5QjtZQUNoQyxTQUFTLEVBQUUsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ00sWUFBTyxHQUFHLEtBQUssQ0FBd0IsSUFBSSxFQUFFO1lBQ3BELEtBQUssRUFBRSw0QkFBNEI7WUFDbkMsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRTtZQUN0RCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYyxVQUFLLEdBQUcsTUFBTSxDQUF1QixFQUFFLENBQUMsQ0FBQztR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RSxtQkFBbUIsRUFBRSxDQUFDOzsyRkFFekUsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLHFCQUFxQixFQUFFLENBQUM7aUJBQ3JGOzhCQVlxRCxXQUFXO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgYm9vbGVhbkF0dHJpYnV0ZSwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3BSb3ZpbmdGb2N1c0l0ZW0gfSBmcm9tICcuLi9yb3ZpbmctZm9jdXMtaXRlbS9yb3ZpbmctZm9jdXMtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdwUm92aW5nRm9jdXNHcm91cFRva2VuIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtZ3JvdXAudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwUm92aW5nRm9jdXNHcm91cF0nLFxuICBleHBvcnRBczogJ25ncFJvdmluZ0ZvY3VzR3JvdXAnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFJvdmluZ0ZvY3VzR3JvdXBUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncFJvdmluZ0ZvY3VzR3JvdXAgfV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncFJvdmluZ0ZvY3VzR3JvdXAge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBkaXJlY3Rpb25hbGl0eSBzZXJ2aWNlLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3Rpb25hbGl0eSA9IGluamVjdChEaXJlY3Rpb25hbGl0eSk7XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHJvdmluZyBmb2N1cyBncm91cC5cbiAgICogQGRlZmF1bHQgJ3ZlcnRpY2FsJ1xuICAgKiBAc3VtbWFyeSBUaGlzIGRvZXMgbm90IHVzZSBhIHNpZ25hbCBhcyB3ZSBuZWVkIHRoaXMgdG8gYmUgcHJvZ3JhbW1hdGljYWxseSBzZXR0YWJsZSB3aGVuIHVzZWQgYXMgYSBob3N0IGRpcmVjdGl2ZS5cbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnbmdwUm92aW5nRm9jdXNHcm91cE9yaWVudGF0aW9uJyB9KSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9XG4gICAgJ3ZlcnRpY2FsJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIGZvY3VzIHNob3VsZCB3cmFwIHdoZW4gdGhlIGVuZCBvciBiZWdpbm5pbmcgaXMgcmVhY2hlZC5cbiAgICovXG4gIHJlYWRvbmx5IHdyYXAgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KHRydWUsIHtcbiAgICBhbGlhczogJ25ncFJvdmluZ0ZvY3VzR3JvdXBXcmFwJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGhvbWUgYW5kIGVuZCBrZXlzIHNob3VsZCBuYXZpZ2F0ZSB0byB0aGUgZmlyc3QgYW5kIGxhc3QgaXRlbXMuXG4gICAqL1xuICByZWFkb25seSBob21lRW5kID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0Pih0cnVlLCB7XG4gICAgYWxpYXM6ICduZ3BSb3ZpbmdGb2N1c0dyb3VwSG9tZUVuZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHtcbiAgICBhbGlhczogJ25ncFJvdmluZ0ZvY3VzR3JvdXBEaXNhYmxlZCcsXG4gICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICB9KTtcblxuICAvKipcbiAgICogU3RvcmUgdGhlIGl0ZW1zIGluIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zID0gc2lnbmFsPE5ncFJvdmluZ0ZvY3VzSXRlbVtdPihbXSk7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaXRlbXMgaW4gdGhlIHJvdmluZyBmb2N1cyBncm91cCBzb3J0ZWQgYnkgb3JkZXIuXG4gICAqL1xuICBwcml2YXRlIGdldCBzb3J0ZWRJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcygpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIC8vIHNvcnQgdGhlIGl0ZW1zIGJ5IHRoZWlyIHBvc2l0aW9uIGluIHRoZSBkb2N1bWVudFxuICAgICAgcmV0dXJuIGEuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSAmXG4gICAgICAgIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HXG4gICAgICAgID8gLTFcbiAgICAgICAgOiAxO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSBhY3RpdmUgaXRlbSBpbiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZUl0ZW0gPSBzaWduYWw8TmdwUm92aW5nRm9jdXNJdGVtIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGl0ZW0gd2l0aCB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byByZWdpc3RlclxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlZ2lzdGVyKGl0ZW06IE5ncFJvdmluZ0ZvY3VzSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXMudXBkYXRlKGl0ZW1zID0+IFsuLi5pdGVtcywgaXRlbV0pO1xuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gYWN0aXZlIGl0ZW0sIG1ha2UgdGhlIGZpcnN0IGl0ZW0gdGhlIHRhYmJhYmxlIGl0ZW1cbiAgICBpZiAoIXRoaXMuYWN0aXZlSXRlbSgpKSB7XG4gICAgICB0aGlzLmFjdGl2ZUl0ZW0uc2V0KGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVyIGFuIGl0ZW0gd2l0aCB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byB1bnJlZ2lzdGVyXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5yZWdpc3RlcihpdGVtOiBOZ3BSb3ZpbmdGb2N1c0l0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zLnVwZGF0ZShpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaSA9PiBpICE9PSBpdGVtKSk7XG5cbiAgICAvLyBjaGVjayBpZiB0aGUgdW5yZWdpc3RlcmVkIGl0ZW0gaXMgdGhlIGFjdGl2ZSBpdGVtXG4gICAgaWYgKHRoaXMuYWN0aXZlSXRlbSgpID09PSBpdGVtKSB7XG4gICAgICAvLyBpZiB0aGUgYWN0aXZlIGl0ZW0gaXMgdW5yZWdpc3RlcmVkLCBhY3RpdmF0ZSB0aGUgZmlyc3QgaXRlbVxuICAgICAgdGhpcy5hY3RpdmVJdGVtLnNldCh0aGlzLml0ZW1zKClbMF0gPz8gbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGFuIGl0ZW0gaW4gdGhlIHJvdmluZyBmb2N1cyBncm91cC5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gYWN0aXZhdGVcbiAgICogQHBhcmFtIG9yaWdpbiBUaGUgb3JpZ2luIG9mIHRoZSBmb2N1cyBjaGFuZ2VcbiAgICovXG4gIHNldEFjdGl2ZUl0ZW0oaXRlbTogTmdwUm92aW5nRm9jdXNJdGVtIHwgbnVsbCwgb3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlSXRlbS5zZXQoaXRlbSk7XG4gICAgaXRlbT8uZm9jdXMob3JpZ2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gb2YgdGhlIGZvY3VzIGNoYW5nZVxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmF0ZUZpcnN0SXRlbShvcmlnaW46IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgLy8gZmluZCB0aGUgZmlyc3QgaXRlbSB0aGF0IGlzIG5vdCBkaXNhYmxlZFxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNvcnRlZEl0ZW1zLmZpbmQoaSA9PiAhaS5kaXNhYmxlZCgpKSA/PyBudWxsO1xuXG4gICAgLy8gc2V0IHRoZSBmaXJzdCBpdGVtIGFzIHRoZSBhY3RpdmUgaXRlbVxuICAgIHRoaXMuc2V0QWN0aXZlSXRlbShpdGVtLCBvcmlnaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIHJvdmluZyBmb2N1cyBncm91cC5cbiAgICogQHBhcmFtIG9yaWdpbiBUaGUgb3JpZ2luIG9mIHRoZSBmb2N1cyBjaGFuZ2VcbiAgICovXG4gIHByaXZhdGUgYWN0aXZhdGVMYXN0SXRlbShvcmlnaW46IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgLy8gZmluZCB0aGUgbGFzdCBpdGVtIHRoYXQgaXMgbm90IGRpc2FibGVkXG4gICAgY29uc3QgaXRlbSA9IFsuLi50aGlzLnNvcnRlZEl0ZW1zXS5yZXZlcnNlKCkuZmluZChpID0+ICFpLmRpc2FibGVkKCkpID8/IG51bGw7XG5cbiAgICAvLyBzZXQgdGhlIGxhc3QgaXRlbSBhcyB0aGUgYWN0aXZlIGl0ZW1cbiAgICB0aGlzLnNldEFjdGl2ZUl0ZW0oaXRlbSwgb3JpZ2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB0aGUgbmV4dCBpdGVtIGluIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAuXG4gICAqIEBwYXJhbSBvcmlnaW4gVGhlIG9yaWdpbiBvZiB0aGUgZm9jdXMgY2hhbmdlXG4gICAqL1xuICBwcml2YXRlIGFjdGl2YXRlTmV4dEl0ZW0ob3JpZ2luOiBGb2N1c09yaWdpbik6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW0oKTtcblxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBpdGVtLCBhY3RpdmF0ZSB0aGUgZmlyc3QgaXRlbVxuICAgIGlmICghYWN0aXZlSXRlbSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZUZpcnN0SXRlbShvcmlnaW4pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgaXRlbVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zb3J0ZWRJdGVtcy5pbmRleE9mKGFjdGl2ZUl0ZW0pO1xuXG4gICAgLy8gZmluZCB0aGUgbmV4dCBpdGVtIHRoYXQgaXMgbm90IGRpc2FibGVkXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuc29ydGVkSXRlbXMuc2xpY2UoaW5kZXggKyAxKS5maW5kKGkgPT4gIWkuZGlzYWJsZWQoKSkgPz8gbnVsbDtcblxuICAgIC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LCB3cmFwIHRvIHRoZSBiZWdpbm5pbmdcbiAgICBpZiAoIWl0ZW0gJiYgdGhpcy53cmFwKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVGaXJzdEl0ZW0ob3JpZ2luKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGVyZSBpcyBubyBuZXh0IGl0ZW0sIGRvIG5vdGhpbmdcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzZXQgdGhlIG5leHQgaXRlbSBhcyB0aGUgYWN0aXZlIGl0ZW1cbiAgICB0aGlzLnNldEFjdGl2ZUl0ZW0oaXRlbSwgb3JpZ2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB0aGUgcHJldmlvdXMgaXRlbSBpbiB0aGUgcm92aW5nIGZvY3VzIGdyb3VwLlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gb2YgdGhlIGZvY3VzIGNoYW5nZVxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmF0ZVByZXZpb3VzSXRlbShvcmlnaW46IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuYWN0aXZlSXRlbSgpO1xuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gYWN0aXZlIGl0ZW0sIGFjdGl2YXRlIHRoZSBsYXN0IGl0ZW1cbiAgICBpZiAoIWFjdGl2ZUl0ZW0pIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVMYXN0SXRlbShvcmlnaW4pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgaXRlbVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zb3J0ZWRJdGVtcy5pbmRleE9mKGFjdGl2ZUl0ZW0pO1xuXG4gICAgLy8gZmluZCB0aGUgcHJldmlvdXMgaXRlbSB0aGF0IGlzIG5vdCBkaXNhYmxlZFxuICAgIGNvbnN0IGl0ZW0gPVxuICAgICAgdGhpcy5zb3J0ZWRJdGVtc1xuICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgLmZpbmQoaSA9PiAhaS5kaXNhYmxlZCgpKSA/PyBudWxsO1xuXG4gICAgLy8gaWYgd2UgYXJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QsIHdyYXAgdG8gdGhlIGVuZFxuICAgIGlmICghaXRlbSAmJiB0aGlzLndyYXAoKSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZUxhc3RJdGVtKG9yaWdpbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gcHJldmlvdXMgaXRlbSwgZG8gbm90aGluZ1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHNldCB0aGUgcHJldmlvdXMgaXRlbSBhcyB0aGUgYWN0aXZlIGl0ZW1cbiAgICB0aGlzLnNldEFjdGl2ZUl0ZW0oaXRlbSwgb3JpZ2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUga2V5Ym9hcmQgbmF2aWdhdGlvbiBmb3IgdGhlIHJvdmluZyBmb2N1cyBncm91cC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlUHJldmlvdXNJdGVtKCdrZXlib2FyZCcpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZhdGVOZXh0SXRlbSgna2V5Ym9hcmQnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWUgPT09ICdsdHInKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlUHJldmlvdXNJdGVtKCdrZXlib2FyZCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlTmV4dEl0ZW0oJ2tleWJvYXJkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWUgPT09ICdsdHInKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlTmV4dEl0ZW0oJ2tleWJvYXJkJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVQcmV2aW91c0l0ZW0oJ2tleWJvYXJkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIGlmICh0aGlzLmhvbWVFbmQoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZUZpcnN0SXRlbSgna2V5Ym9hcmQnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGlmICh0aGlzLmhvbWVFbmQoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZUxhc3RJdGVtKCdrZXlib2FyZCcpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken, inject } from '@angular/core';
9
+ export const NgpRovingFocusGroupToken = new InjectionToken('NgpRovingFocusGroupToken');
10
+ /**
11
+ * Inject the RovingFocusGroup directive instance
12
+ * @returns The RovingFocusGroup directive instance
13
+ */
14
+ export function injectRovingFocusGroup() {
15
+ return inject(NgpRovingFocusGroupToken);
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1ncm91cC9yb3ZpbmctZm9jdXMtZ3JvdXAudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3hELDBCQUEwQixDQUMzQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BSb3ZpbmdGb2N1c0dyb3VwIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5ncFJvdmluZ0ZvY3VzR3JvdXBUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3BSb3ZpbmdGb2N1c0dyb3VwPihcbiAgJ05ncFJvdmluZ0ZvY3VzR3JvdXBUb2tlbicsXG4pO1xuXG4vKipcbiAqIEluamVjdCB0aGUgUm92aW5nRm9jdXNHcm91cCBkaXJlY3RpdmUgaW5zdGFuY2VcbiAqIEByZXR1cm5zIFRoZSBSb3ZpbmdGb2N1c0dyb3VwIGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um92aW5nRm9jdXNHcm91cCgpOiBOZ3BSb3ZpbmdGb2N1c0dyb3VwIHtcbiAgcmV0dXJuIGluamVjdChOZ3BSb3ZpbmdGb2N1c0dyb3VwVG9rZW4pO1xufVxuIl19
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { FocusMonitor } from '@angular/cdk/a11y';
9
+ import { Directive, ElementRef, HostListener, booleanAttribute, computed, inject, input, } from '@angular/core';
10
+ import { injectRovingFocusGroup } from '../roving-focus-group/roving-focus-group.token';
11
+ import { NgpRovingFocusItemToken } from './roving-focus-item.token';
12
+ import * as i0 from "@angular/core";
13
+ export class NgpRovingFocusItem {
14
+ constructor() {
15
+ /**
16
+ * Access the group the roving focus item belongs to.
17
+ */
18
+ this.group = injectRovingFocusGroup();
19
+ /**
20
+ * Access the focus monitor service.
21
+ */
22
+ this.focusMonitor = inject(FocusMonitor);
23
+ /**
24
+ * Access the element the roving focus item is attached to.
25
+ */
26
+ this.elementRef = inject(ElementRef);
27
+ /**
28
+ * Define if the item is disabled.
29
+ */
30
+ this.disabled = input(false, {
31
+ alias: 'ngpRovingFocusItemDisabled',
32
+ transform: booleanAttribute,
33
+ });
34
+ /**
35
+ * Derive the tabindex of the roving focus item.
36
+ */
37
+ this.tabindex = computed(() => !this.group.disabled() && this.group.activeItem() === this ? 0 : -1);
38
+ }
39
+ /**
40
+ * Initialize the roving focus item.
41
+ */
42
+ ngOnInit() {
43
+ this.group.register(this);
44
+ }
45
+ /**
46
+ * Clean up the roving focus item.
47
+ */
48
+ ngOnDestroy() {
49
+ this.group.unregister(this);
50
+ }
51
+ /**
52
+ * Forward the keydown event to the roving focus group.
53
+ * @param event The keyboard event
54
+ */
55
+ onKeydown(event) {
56
+ if (this.disabled()) {
57
+ return;
58
+ }
59
+ this.group.onKeydown(event);
60
+ }
61
+ /**
62
+ * Activate the roving focus item on click.
63
+ */
64
+ activate() {
65
+ if (this.disabled()) {
66
+ return;
67
+ }
68
+ this.group.setActiveItem(this, 'mouse');
69
+ }
70
+ /**
71
+ * Focus the roving focus item.
72
+ * @param origin The origin of the focus
73
+ */
74
+ focus(origin) {
75
+ this.focusMonitor.focusVia(this.elementRef, origin);
76
+ }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpRovingFocusItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpRovingFocusItem, isStandalone: true, selector: "[ngpRovingFocusItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "ngpRovingFocusItemDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)", "click": "activate()" }, properties: { "attr.tabindex": "tabindex()" } }, providers: [{ provide: NgpRovingFocusItemToken, useExisting: NgpRovingFocusItem }], exportAs: ["ngpRovingFocusItem"], ngImport: i0 }); }
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpRovingFocusItem, decorators: [{
81
+ type: Directive,
82
+ args: [{
83
+ standalone: true,
84
+ selector: '[ngpRovingFocusItem]',
85
+ exportAs: 'ngpRovingFocusItem',
86
+ providers: [{ provide: NgpRovingFocusItemToken, useExisting: NgpRovingFocusItem }],
87
+ host: {
88
+ '[attr.tabindex]': 'tabindex()',
89
+ },
90
+ }]
91
+ }], propDecorators: { onKeydown: [{
92
+ type: HostListener,
93
+ args: ['keydown', ['$event']]
94
+ }], activate: [{
95
+ type: HostListener,
96
+ args: ['click']
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1pdGVtL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUdaLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFXcEUsTUFBTSxPQUFPLGtCQUFrQjtJQVQvQjtRQVVFOztXQUVHO1FBQ2MsVUFBSyxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFFbEQ7O1dBRUc7UUFDYyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRDs7V0FFRztRQUNNLGVBQVUsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBRWxFOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBd0IsS0FBSyxFQUFFO1lBQ3RELEtBQUssRUFBRSw0QkFBNEI7WUFDbkMsU0FBUyxFQUFFLGdCQUFnQjtTQUM1QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNNLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ2hDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEUsQ0FBQztLQWdESDtJQTlDQzs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUVPLFNBQVMsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBRU8sUUFBUTtRQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBbUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDOzhHQTVFVSxrQkFBa0I7a0dBQWxCLGtCQUFrQixpV0FMbEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzs7MkZBS3ZFLGtCQUFrQjtrQkFUOUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxvQkFBb0IsRUFBRSxDQUFDO29CQUNsRixJQUFJLEVBQUU7d0JBQ0osaUJBQWlCLEVBQUUsWUFBWTtxQkFDaEM7aUJBQ0Y7OEJBbURXLFNBQVM7c0JBRGxCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWF6QixRQUFRO3NCQURqQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdFJvdmluZ0ZvY3VzR3JvdXAgfSBmcm9tICcuLi9yb3ZpbmctZm9jdXMtZ3JvdXAvcm92aW5nLWZvY3VzLWdyb3VwLnRva2VuJztcbmltcG9ydCB7IE5ncFJvdmluZ0ZvY3VzSXRlbVRva2VuIH0gZnJvbSAnLi9yb3ZpbmctZm9jdXMtaXRlbS50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3BSb3ZpbmdGb2N1c0l0ZW1dJyxcbiAgZXhwb3J0QXM6ICduZ3BSb3ZpbmdGb2N1c0l0ZW0nLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFJvdmluZ0ZvY3VzSXRlbVRva2VuLCB1c2VFeGlzdGluZzogTmdwUm92aW5nRm9jdXNJdGVtIH1dLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJpbmRleCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwUm92aW5nRm9jdXNJdGVtIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBncm91cCB0aGUgcm92aW5nIGZvY3VzIGl0ZW0gYmVsb25ncyB0by5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXAgPSBpbmplY3RSb3ZpbmdGb2N1c0dyb3VwKCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgZm9jdXMgbW9uaXRvciBzZXJ2aWNlLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICAvKipcbiAgICogQWNjZXNzIHRoZSBlbGVtZW50IHRoZSByb3ZpbmcgZm9jdXMgaXRlbSBpcyBhdHRhY2hlZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgaWYgdGhlIGl0ZW0gaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHtcbiAgICBhbGlhczogJ25ncFJvdmluZ0ZvY3VzSXRlbURpc2FibGVkJyxcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEZXJpdmUgdGhlIHRhYmluZGV4IG9mIHRoZSByb3ZpbmcgZm9jdXMgaXRlbS5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmluZGV4ID0gY29tcHV0ZWQoKCkgPT5cbiAgICAhdGhpcy5ncm91cC5kaXNhYmxlZCgpICYmIHRoaXMuZ3JvdXAuYWN0aXZlSXRlbSgpID09PSB0aGlzID8gMCA6IC0xLFxuICApO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSByb3ZpbmcgZm9jdXMgaXRlbS5cbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ3JvdXAucmVnaXN0ZXIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgdGhlIHJvdmluZyBmb2N1cyBpdGVtLlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5ncm91cC51bnJlZ2lzdGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcndhcmQgdGhlIGtleWRvd24gZXZlbnQgdG8gdGhlIHJvdmluZyBmb2N1cyBncm91cC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXlib2FyZCBldmVudFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ncm91cC5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIHRoZSByb3ZpbmcgZm9jdXMgaXRlbSBvbiBjbGljay5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgcHJvdGVjdGVkIGFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdyb3VwLnNldEFjdGl2ZUl0ZW0odGhpcywgJ21vdXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIHJvdmluZyBmb2N1cyBpdGVtLlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gb2YgdGhlIGZvY3VzXG4gICAqL1xuICBmb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLCBvcmlnaW4pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken, inject } from '@angular/core';
9
+ export const NgpRovingFocusItemToken = new InjectionToken('NgpRovingFocusItemToken');
10
+ /**
11
+ * Inject the RovingFocusItem directive instance
12
+ * @returns The RovingFocusItem directive instance
13
+ */
14
+ export function injectRovingFocusItem() {
15
+ return inject(NgpRovingFocusItemToken);
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0udG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9zcmMvcm92aW5nLWZvY3VzLWl0ZW0vcm92aW5nLWZvY3VzLWl0ZW0udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQ3ZELHlCQUF5QixDQUMxQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3BSb3ZpbmdGb2N1c0l0ZW0gfSBmcm9tICcuL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBOZ3BSb3ZpbmdGb2N1c0l0ZW1Ub2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3BSb3ZpbmdGb2N1c0l0ZW0+KFxuICAnTmdwUm92aW5nRm9jdXNJdGVtVG9rZW4nLFxuKTtcblxuLyoqXG4gKiBJbmplY3QgdGhlIFJvdmluZ0ZvY3VzSXRlbSBkaXJlY3RpdmUgaW5zdGFuY2VcbiAqIEByZXR1cm5zIFRoZSBSb3ZpbmdGb2N1c0l0ZW0gZGlyZWN0aXZlIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3ZpbmdGb2N1c0l0ZW0oKTogTmdwUm92aW5nRm9jdXNJdGVtIHtcbiAgcmV0dXJuIGluamVjdChOZ3BSb3ZpbmdGb2N1c0l0ZW1Ub2tlbik7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export { NgpSelectButton } from './select-button/select-button.directive';
9
+ export { NgpSelectButtonToken } from './select-button/select-button.token';
10
+ export { NgpSelectOption } from './select-option/select-option.directive';
11
+ export { NgpSelectOptionToken } from './select-option/select-option.token';
12
+ export { NgpSelectOptions } from './select-options/select-options.directive';
13
+ export { NgpSelectOptionsToken } from './select-options/select-options.token';
14
+ export { NgpSelect } from './select/select.directive';
15
+ export { NgpSelectToken } from './select/select.token';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3NlbGVjdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuZXhwb3J0IHsgTmdwU2VsZWN0QnV0dG9uIH0gZnJvbSAnLi9zZWxlY3QtYnV0dG9uL3NlbGVjdC1idXR0b24uZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncFNlbGVjdEJ1dHRvblRva2VuIH0gZnJvbSAnLi9zZWxlY3QtYnV0dG9uL3NlbGVjdC1idXR0b24udG9rZW4nO1xuZXhwb3J0IHsgTmdwU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncFNlbGVjdE9wdGlvblRva2VuIH0gZnJvbSAnLi9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24udG9rZW4nO1xuZXhwb3J0IHsgTmdwU2VsZWN0T3B0aW9ucyB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbnMvc2VsZWN0LW9wdGlvbnMuZGlyZWN0aXZlJztcbmV4cG9ydCB7IE5ncFNlbGVjdE9wdGlvbnNUb2tlbiB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbnMvc2VsZWN0LW9wdGlvbnMudG9rZW4nO1xuZXhwb3J0IHsgTmdwU2VsZWN0IH0gZnJvbSAnLi9zZWxlY3Qvc2VsZWN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBOZ3BTZWxlY3RUb2tlbiB9IGZyb20gJy4vc2VsZWN0L3NlbGVjdC50b2tlbic7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJpbWl0aXZlcy1zZWxlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3NlbGVjdC9zcmMvbmctcHJpbWl0aXZlcy1zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,54 @@
1
+ import { Directive, booleanAttribute, contentChild, input, model } from '@angular/core';
2
+ import { NgpSelectButtonToken } from '../select-button/select-button.token';
3
+ import { NgpSelectOptionsToken } from '../select-options/select-options.token';
4
+ import { NgpSelectToken } from './select.token';
5
+ import * as i0 from "@angular/core";
6
+ export class NgpSelect {
7
+ constructor() {
8
+ /**
9
+ * The selected value.
10
+ */
11
+ this.value = model.required({
12
+ alias: 'ngpSelectValue',
13
+ });
14
+ /**
15
+ * Whether the select dropdown is open.
16
+ */
17
+ this.open = model(false, {
18
+ alias: 'ngpSelectOpen',
19
+ });
20
+ /**
21
+ * Disable the select component.
22
+ */
23
+ this.disabled = input(false, {
24
+ alias: 'ngpSelectDisabled',
25
+ transform: booleanAttribute,
26
+ });
27
+ /**
28
+ * Access the select button instance.
29
+ * @internal
30
+ */
31
+ this.button = contentChild.required(NgpSelectButtonToken, {
32
+ descendants: true,
33
+ });
34
+ /**
35
+ * Access the select options instance.
36
+ * @internal
37
+ */
38
+ this.options = contentChild.required(NgpSelectOptionsToken, {
39
+ descendants: true,
40
+ });
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.2", type: NgpSelect, isStandalone: true, selector: "[ngpSelect]", inputs: { value: { classPropertyName: "value", publicName: "ngpSelectValue", isSignal: true, isRequired: true, transformFunction: null }, open: { classPropertyName: "open", publicName: "ngpSelectOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpSelectDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "ngpSelectValueChange", open: "ngpSelectOpenChange" }, providers: [{ provide: NgpSelectToken, useExisting: NgpSelect }], queries: [{ propertyName: "button", first: true, predicate: NgpSelectButtonToken, descendants: true, isSignal: true }, { propertyName: "options", first: true, predicate: NgpSelectOptionsToken, descendants: true, isSignal: true }], exportAs: ["ngpSelect"], ngImport: i0 }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelect, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ standalone: true,
49
+ selector: '[ngpSelect]',
50
+ exportAs: 'ngpSelect',
51
+ providers: [{ provide: NgpSelectToken, useExisting: NgpSelect }],
52
+ }]
53
+ }] });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXByaW1pdGl2ZXMvc2VsZWN0L3NyYy9zZWxlY3Qvc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRaEQsTUFBTSxPQUFPLFNBQVM7SUFOdEI7UUFPRTs7V0FFRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFJO1lBQ2pDLEtBQUssRUFBRSxnQkFBZ0I7U0FDeEIsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFVLEtBQUssRUFBRTtZQUNwQyxLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQXdCLEtBQUssRUFBRTtZQUN0RCxLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUIsQ0FBQyxDQUFDO1FBRUg7OztXQUdHO1FBQ00sV0FBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUU7WUFDNUQsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBRUg7OztXQUdHO1FBQ00sWUFBTyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQUU7WUFDOUQsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0tBQ0o7OEdBdENZLFNBQVM7a0dBQVQsU0FBUyx1aEJBRlQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDLDhEQTZCeEIsb0JBQW9CLDBGQVFuQixxQkFBcUI7OzJGQW5DbkQsU0FBUztrQkFOckIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO29CQUNyQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxXQUFXLEVBQUUsQ0FBQztpQkFDakUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCDCqSAyMDI0IEFuZ3VsYXIgUHJpbWl0aXZlcy5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wcmltaXRpdmVzL25nLXByaW1pdGl2ZXNcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDQyBCWS1ORCA0LjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgYm9vbGVhbkF0dHJpYnV0ZSwgY29udGVudENoaWxkLCBpbnB1dCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ncFNlbGVjdEJ1dHRvblRva2VuIH0gZnJvbSAnLi4vc2VsZWN0LWJ1dHRvbi9zZWxlY3QtYnV0dG9uLnRva2VuJztcbmltcG9ydCB7IE5ncFNlbGVjdE9wdGlvbnNUb2tlbiB9IGZyb20gJy4uL3NlbGVjdC1vcHRpb25zL3NlbGVjdC1vcHRpb25zLnRva2VuJztcbmltcG9ydCB7IE5ncFNlbGVjdFRva2VuIH0gZnJvbSAnLi9zZWxlY3QudG9rZW4nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmdwU2VsZWN0XScsXG4gIGV4cG9ydEFzOiAnbmdwU2VsZWN0JyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ3BTZWxlY3RUb2tlbiwgdXNlRXhpc3Rpbmc6IE5ncFNlbGVjdCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdwU2VsZWN0PFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlID0gbW9kZWwucmVxdWlyZWQ8VD4oe1xuICAgIGFsaWFzOiAnbmdwU2VsZWN0VmFsdWUnLFxuICB9KTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2VsZWN0IGRyb3Bkb3duIGlzIG9wZW4uXG4gICAqL1xuICByZWFkb25seSBvcGVuID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UsIHtcbiAgICBhbGlhczogJ25ncFNlbGVjdE9wZW4nLFxuICB9KTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgc2VsZWN0IGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0PihmYWxzZSwge1xuICAgIGFsaWFzOiAnbmdwU2VsZWN0RGlzYWJsZWQnLFxuICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgc2VsZWN0IGJ1dHRvbiBpbnN0YW5jZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBidXR0b24gPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoTmdwU2VsZWN0QnV0dG9uVG9rZW4sIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgc2VsZWN0IG9wdGlvbnMgaW5zdGFuY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucyA9IGNvbnRlbnRDaGlsZC5yZXF1aXJlZChOZ3BTZWxlY3RPcHRpb25zVG9rZW4sIHtcbiAgICBkZXNjZW5kYW50czogdHJ1ZSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright © 2024 Angular Primitives.
3
+ * https://github.com/ng-primitives/ng-primitives
4
+ *
5
+ * This source code is licensed under the CC BY-ND 4.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { InjectionToken, inject } from '@angular/core';
9
+ export const NgpSelectToken = new InjectionToken('NgpSelectToken');
10
+ /**
11
+ * Inject the Select directive instance
12
+ */
13
+ export function injectSelect() {
14
+ return inject(NgpSelectToken);
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctcHJpbWl0aXZlcy9zZWxlY3Qvc3JjL3NlbGVjdC9zZWxlY3QudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFxQixnQkFBZ0IsQ0FBQyxDQUFDO0FBRXZGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTyxNQUFNLENBQWUsY0FBYyxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IMKpIDIwMjQgQW5ndWxhciBQcmltaXRpdmVzLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25nLXByaW1pdGl2ZXMvbmctcHJpbWl0aXZlc1xuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIENDIEJZLU5EIDQuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE5ncFNlbGVjdCB9IGZyb20gJy4vc2VsZWN0LmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjb25zdCBOZ3BTZWxlY3RUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3BTZWxlY3Q8dW5rbm93bj4+KCdOZ3BTZWxlY3RUb2tlbicpO1xuXG4vKipcbiAqIEluamVjdCB0aGUgU2VsZWN0IGRpcmVjdGl2ZSBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U2VsZWN0PFQ+KCk6IE5ncFNlbGVjdDxUPiB7XG4gIHJldHVybiBpbmplY3Q8TmdwU2VsZWN0PFQ+PihOZ3BTZWxlY3RUb2tlbik7XG59XG4iXX0=
@@ -0,0 +1,84 @@
1
+ import { Directive, ElementRef, inject, input } from '@angular/core';
2
+ import { FocusManager, injectDisposables, uniqueId } from 'ng-primitives/utils';
3
+ import { injectSelect } from '../select/select.token';
4
+ import { NgpSelectButtonToken } from './select-button.token';
5
+ import * as i0 from "@angular/core";
6
+ export class NgpSelectButton {
7
+ constructor() {
8
+ /**
9
+ * Access the parent select component.
10
+ */
11
+ this.select = injectSelect();
12
+ /**
13
+ * Access the disposable helpers.
14
+ */
15
+ this.disposables = injectDisposables();
16
+ /**
17
+ * Access the element reference.
18
+ * @internal
19
+ */
20
+ this.element = inject(ElementRef);
21
+ /**
22
+ * Access the focus manager
23
+ */
24
+ this.focusManager = inject(FocusManager);
25
+ /**
26
+ * Optionally define an id for the button. By default, the id is generated.
27
+ */
28
+ this.id = input(uniqueId('select-button'));
29
+ }
30
+ /**
31
+ * Toggle the select open state.
32
+ */
33
+ toggle() {
34
+ this.select.open.update(open => !open);
35
+ }
36
+ /**
37
+ * Handle keyboard events. If the list is closed, open it when the user presses the arrow keys.
38
+ * If the list is open then we navigate using active descendant.
39
+ * @param event
40
+ */
41
+ keydown(event) {
42
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
43
+ this.select.open.set(true);
44
+ // stop the event from triggering scrolling on the dropdown
45
+ event.preventDefault();
46
+ }
47
+ // if the escape key is pressed, close the dropdown
48
+ if (event.key === 'Escape') {
49
+ this.select.open.set(false);
50
+ }
51
+ }
52
+ /**
53
+ * Focus the button element.
54
+ * @param origin
55
+ * @internal
56
+ */
57
+ focus(origin) {
58
+ // we run after the next tick to ensure any in-progress events do not get
59
+ // redirected to the button element
60
+ this.disposables.requestAnimationFrame(() => this.focusManager.focus(this.element, origin));
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.2", type: NgpSelectButton, isStandalone: true, selector: "button[ngpSelectButton]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button", "aria-haspopup": "listbox" }, listeners: { "click": "toggle()", "keydown": "keydown($event)" }, properties: { "attr.id": "id()", "attr.aria-expanded": "select.open()", "attr.aria-controls": "select.open() ? select.options()?.id() : null", "attr.data-state": "select.open() ? \"open\" : \"closed\"" } }, providers: [{ provide: NgpSelectButtonToken, useExisting: NgpSelectButton }], exportAs: ["ngpSelectButton"], ngImport: i0 }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: NgpSelectButton, decorators: [{
66
+ type: Directive,
67
+ args: [{
68
+ standalone: true,
69
+ selector: 'button[ngpSelectButton]',
70
+ exportAs: 'ngpSelectButton',
71
+ providers: [{ provide: NgpSelectButtonToken, useExisting: NgpSelectButton }],
72
+ host: {
73
+ type: 'button',
74
+ 'aria-haspopup': 'listbox',
75
+ '[attr.id]': 'id()',
76
+ '[attr.aria-expanded]': 'select.open()',
77
+ '[attr.aria-controls]': 'select.open() ? select.options()?.id() : null',
78
+ '[attr.data-state]': 'select.open() ? "open" : "closed"',
79
+ '(click)': 'toggle()',
80
+ '(keydown)': 'keydown($event)',
81
+ },
82
+ }]
83
+ }] });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1wcmltaXRpdmVzL3NlbGVjdC9zcmMvc2VsZWN0LWJ1dHRvbi9zZWxlY3QtYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWtCN0QsTUFBTSxPQUFPLGVBQWU7SUFoQjVCO1FBaUJFOztXQUVHO1FBQ2dCLFdBQU0sR0FBRyxZQUFZLEVBQVcsQ0FBQztRQUVwRDs7V0FFRztRQUNjLGdCQUFXLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSxZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUvRDs7V0FFRztRQUNjLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJEOztXQUVHO1FBQ00sT0FBRSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztLQXFDaEQ7SUFuQ0M7O09BRUc7SUFDTyxNQUFNO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLE9BQU8sQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLDJEQUEyRDtZQUMzRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFvQjtRQUN4Qix5RUFBeUU7UUFDekUsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7OEdBN0RVLGVBQWU7a0dBQWYsZUFBZSx3aEJBWmYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUM7OzJGQVlqRSxlQUFlO2tCQWhCM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxpQkFBaUIsRUFBRSxDQUFDO29CQUM1RSxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLFdBQVcsRUFBRSxNQUFNO3dCQUNuQixzQkFBc0IsRUFBRSxlQUFlO3dCQUN2QyxzQkFBc0IsRUFBRSwrQ0FBK0M7d0JBQ3ZFLG1CQUFtQixFQUFFLG1DQUFtQzt3QkFDeEQsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFdBQVcsRUFBRSxpQkFBaUI7cUJBQy9CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgMjAyNCBBbmd1bGFyIFByaW1pdGl2ZXMuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbmctcHJpbWl0aXZlcy9uZy1wcmltaXRpdmVzXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ0MgQlktTkQgNC4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbmltcG9ydCB7IEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c01hbmFnZXIsIGluamVjdERpc3Bvc2FibGVzLCB1bmlxdWVJZCB9IGZyb20gJ25nLXByaW1pdGl2ZXMvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0U2VsZWN0IH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC50b2tlbic7XG5pbXBvcnQgeyBOZ3BTZWxlY3RCdXR0b25Ub2tlbiB9IGZyb20gJy4vc2VsZWN0LWJ1dHRvbi50b2tlbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2J1dHRvbltuZ3BTZWxlY3RCdXR0b25dJyxcbiAgZXhwb3J0QXM6ICduZ3BTZWxlY3RCdXR0b24nLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5ncFNlbGVjdEJ1dHRvblRva2VuLCB1c2VFeGlzdGluZzogTmdwU2VsZWN0QnV0dG9uIH1dLFxuICBob3N0OiB7XG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAnbGlzdGJveCcsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCgpJyxcbiAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAnc2VsZWN0Lm9wZW4oKScsXG4gICAgJ1thdHRyLmFyaWEtY29udHJvbHNdJzogJ3NlbGVjdC5vcGVuKCkgPyBzZWxlY3Qub3B0aW9ucygpPy5pZCgpIDogbnVsbCcsXG4gICAgJ1thdHRyLmRhdGEtc3RhdGVdJzogJ3NlbGVjdC5vcGVuKCkgPyBcIm9wZW5cIiA6IFwiY2xvc2VkXCInLFxuICAgICcoY2xpY2spJzogJ3RvZ2dsZSgpJyxcbiAgICAnKGtleWRvd24pJzogJ2tleWRvd24oJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5ncFNlbGVjdEJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIHBhcmVudCBzZWxlY3QgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdCA9IGluamVjdFNlbGVjdDx1bmtub3duPigpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGRpc3Bvc2FibGUgaGVscGVycy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcG9zYWJsZXMgPSBpbmplY3REaXNwb3NhYmxlcygpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGZvY3VzIG1hbmFnZXJcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNNYW5hZ2VyID0gaW5qZWN0KEZvY3VzTWFuYWdlcik7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgZGVmaW5lIGFuIGlkIGZvciB0aGUgYnV0dG9uLiBCeSBkZWZhdWx0LCB0aGUgaWQgaXMgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQgPSBpbnB1dCh1bmlxdWVJZCgnc2VsZWN0LWJ1dHRvbicpKTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBzZWxlY3Qgb3BlbiBzdGF0ZS5cbiAgICovXG4gIHByb3RlY3RlZCB0b2dnbGUoKSB7XG4gICAgdGhpcy5zZWxlY3Qub3Blbi51cGRhdGUob3BlbiA9PiAhb3Blbik7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGtleWJvYXJkIGV2ZW50cy4gSWYgdGhlIGxpc3QgaXMgY2xvc2VkLCBvcGVuIGl0IHdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgYXJyb3cga2V5cy5cbiAgICogSWYgdGhlIGxpc3QgaXMgb3BlbiB0aGVuIHdlIG5hdmlnYXRlIHVzaW5nIGFjdGl2ZSBkZXNjZW5kYW50LlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBrZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHRoaXMuc2VsZWN0Lm9wZW4uc2V0KHRydWUpO1xuICAgICAgLy8gc3RvcCB0aGUgZXZlbnQgZnJvbSB0cmlnZ2VyaW5nIHNjcm9sbGluZyBvbiB0aGUgZHJvcGRvd25cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGVzY2FwZSBrZXkgaXMgcHJlc3NlZCwgY2xvc2UgdGhlIGRyb3Bkb3duXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0Lm9wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIGJ1dHRvbiBlbGVtZW50LlxuICAgKiBAcGFyYW0gb3JpZ2luXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZm9jdXMob3JpZ2luPzogRm9jdXNPcmlnaW4pIHtcbiAgICAvLyB3ZSBydW4gYWZ0ZXIgdGhlIG5leHQgdGljayB0byBlbnN1cmUgYW55IGluLXByb2dyZXNzIGV2ZW50cyBkbyBub3QgZ2V0XG4gICAgLy8gcmVkaXJlY3RlZCB0byB0aGUgYnV0dG9uIGVsZW1lbnRcbiAgICB0aGlzLmRpc3Bvc2FibGVzLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLmZvY3VzTWFuYWdlci5mb2N1cyh0aGlzLmVsZW1lbnQsIG9yaWdpbikpO1xuICB9XG59XG4iXX0=