@radix-ng/primitives 0.50.0 → 0.51.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 (149) hide show
  1. package/collection/README.md +1 -0
  2. package/fesm2022/radix-ng-primitives-accordion.mjs +41 -40
  3. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +22 -22
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-arrow.mjs +6 -6
  7. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +6 -6
  9. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-avatar.mjs +22 -22
  11. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/radix-ng-primitives-calendar.mjs +104 -103
  13. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-checkbox.mjs +51 -41
  15. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-collapsible.mjs +28 -28
  17. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collection.mjs +89 -0
  19. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -0
  20. package/fesm2022/radix-ng-primitives-config.mjs +5 -5
  21. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-context-menu.mjs +36 -36
  23. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-core.mjs +33 -24
  25. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-cropper.mjs +54 -53
  27. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-date-field.mjs +48 -47
  29. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-dialog.mjs +34 -34
  31. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  32. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +31 -33
  33. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +41 -43
  35. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-editable.mjs +20 -20
  37. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  38. package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
  39. package/fesm2022/radix-ng-primitives-focus-guards.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -7
  41. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  42. package/fesm2022/radix-ng-primitives-hover-card.mjs +69 -77
  43. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +1 -1
  44. package/fesm2022/radix-ng-primitives-label.mjs +7 -7
  45. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-menu.mjs +65 -70
  47. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-menubar.mjs +31 -31
  49. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +113 -105
  51. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-number-field.mjs +48 -47
  53. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  54. package/fesm2022/radix-ng-primitives-pagination.mjs +51 -51
  55. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-popover.mjs +67 -71
  57. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-popper.mjs +61 -56
  59. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-portal.mjs +7 -7
  61. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-presence.mjs +4 -4
  63. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-progress.mjs +16 -16
  65. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-radio.mjs +38 -37
  67. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  68. package/fesm2022/radix-ng-primitives-roving-focus.mjs +38 -34
  69. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-select.mjs +41 -43
  71. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-select2.mjs +897 -0
  73. package/fesm2022/radix-ng-primitives-select2.mjs.map +1 -0
  74. package/fesm2022/radix-ng-primitives-separator.mjs +11 -17
  75. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  76. package/fesm2022/radix-ng-primitives-slider.mjs +88 -84
  77. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-stepper.mjs +55 -53
  79. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-switch.mjs +22 -30
  81. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-tabs.mjs +38 -38
  83. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-time-field.mjs +63 -78
  85. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-toggle-group.mjs +24 -24
  87. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-toggle.mjs +11 -11
  89. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-toolbar.mjs +31 -29
  91. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  92. package/fesm2022/radix-ng-primitives-tooltip.mjs +69 -77
  93. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-tooltip2.mjs +57 -62
  95. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -31
  97. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives.mjs.map +1 -1
  99. package/package.json +63 -54
  100. package/select2/README.md +3 -0
  101. package/{accordion/index.d.ts → types/radix-ng-primitives-accordion.d.ts} +61 -60
  102. package/{calendar/index.d.ts → types/radix-ng-primitives-calendar.d.ts} +1 -1
  103. package/{checkbox/index.d.ts → types/radix-ng-primitives-checkbox.d.ts} +31 -27
  104. package/{collapsible/index.d.ts → types/radix-ng-primitives-collapsible.d.ts} +20 -19
  105. package/types/radix-ng-primitives-collection.d.ts +40 -0
  106. package/{core/index.d.ts → types/radix-ng-primitives-core.d.ts} +6 -2
  107. package/{cropper/index.d.ts → types/radix-ng-primitives-cropper.d.ts} +4 -3
  108. package/{date-field/index.d.ts → types/radix-ng-primitives-date-field.d.ts} +4 -4
  109. package/{dialog/index.d.ts → types/radix-ng-primitives-dialog.d.ts} +2 -1
  110. package/{hover-card/index.d.ts → types/radix-ng-primitives-hover-card.d.ts} +3 -4
  111. package/{menu/index.d.ts → types/radix-ng-primitives-menu.d.ts} +1 -1
  112. package/{navigation-menu/index.d.ts → types/radix-ng-primitives-navigation-menu.d.ts} +47 -46
  113. package/{number-field/index.d.ts → types/radix-ng-primitives-number-field.d.ts} +13 -12
  114. package/{popover/index.d.ts → types/radix-ng-primitives-popover.d.ts} +3 -4
  115. package/{popper/index.d.ts → types/radix-ng-primitives-popper.d.ts} +1 -0
  116. package/{progress/index.d.ts → types/radix-ng-primitives-progress.d.ts} +2 -1
  117. package/{radio/index.d.ts → types/radix-ng-primitives-radio.d.ts} +1 -1
  118. package/{roving-focus/index.d.ts → types/radix-ng-primitives-roving-focus.d.ts} +8 -6
  119. package/types/radix-ng-primitives-select2.d.ts +511 -0
  120. package/{slider/index.d.ts → types/radix-ng-primitives-slider.d.ts} +4 -4
  121. package/{stepper/index.d.ts → types/radix-ng-primitives-stepper.d.ts} +17 -16
  122. package/{switch/index.d.ts → types/radix-ng-primitives-switch.d.ts} +3 -2
  123. package/{tabs/index.d.ts → types/radix-ng-primitives-tabs.d.ts} +7 -6
  124. package/{time-field/index.d.ts → types/radix-ng-primitives-time-field.d.ts} +4 -4
  125. package/{toggle-group/index.d.ts → types/radix-ng-primitives-toggle-group.d.ts} +12 -11
  126. package/{tooltip/index.d.ts → types/radix-ng-primitives-tooltip.d.ts} +3 -4
  127. package/{tooltip2/index.d.ts → types/radix-ng-primitives-tooltip2.d.ts} +4 -4
  128. /package/{alert-dialog/index.d.ts → types/radix-ng-primitives-alert-dialog.d.ts} +0 -0
  129. /package/{arrow/index.d.ts → types/radix-ng-primitives-arrow.d.ts} +0 -0
  130. /package/{aspect-ratio/index.d.ts → types/radix-ng-primitives-aspect-ratio.d.ts} +0 -0
  131. /package/{avatar/index.d.ts → types/radix-ng-primitives-avatar.d.ts} +0 -0
  132. /package/{config/index.d.ts → types/radix-ng-primitives-config.d.ts} +0 -0
  133. /package/{context-menu/index.d.ts → types/radix-ng-primitives-context-menu.d.ts} +0 -0
  134. /package/{dismissable-layer/index.d.ts → types/radix-ng-primitives-dismissable-layer.d.ts} +0 -0
  135. /package/{dropdown-menu/index.d.ts → types/radix-ng-primitives-dropdown-menu.d.ts} +0 -0
  136. /package/{editable/index.d.ts → types/radix-ng-primitives-editable.d.ts} +0 -0
  137. /package/{focus-guards/index.d.ts → types/radix-ng-primitives-focus-guards.d.ts} +0 -0
  138. /package/{focus-scope/index.d.ts → types/radix-ng-primitives-focus-scope.d.ts} +0 -0
  139. /package/{label/index.d.ts → types/radix-ng-primitives-label.d.ts} +0 -0
  140. /package/{menubar/index.d.ts → types/radix-ng-primitives-menubar.d.ts} +0 -0
  141. /package/{pagination/index.d.ts → types/radix-ng-primitives-pagination.d.ts} +0 -0
  142. /package/{portal/index.d.ts → types/radix-ng-primitives-portal.d.ts} +0 -0
  143. /package/{presence/index.d.ts → types/radix-ng-primitives-presence.d.ts} +0 -0
  144. /package/{select/index.d.ts → types/radix-ng-primitives-select.d.ts} +0 -0
  145. /package/{separator/index.d.ts → types/radix-ng-primitives-separator.d.ts} +0 -0
  146. /package/{toggle/index.d.ts → types/radix-ng-primitives-toggle.d.ts} +0 -0
  147. /package/{toolbar/index.d.ts → types/radix-ng-primitives-toolbar.d.ts} +0 -0
  148. /package/{visually-hidden/index.d.ts → types/radix-ng-primitives-visually-hidden.d.ts} +0 -0
  149. /package/{index.d.ts → types/radix-ng-primitives.d.ts} +0 -0
@@ -91,47 +91,47 @@ class RdxRovingFocusGroupDirective {
91
91
  /**
92
92
  * The orientation of the group. Mainly so arrow navigation is done accordingly (left & right vs. up & down)
93
93
  */
94
- this.orientationInput = input('horizontal', ...(ngDevMode ? [{ debugName: "orientationInput", alias: 'orientation' }] : [{ alias: 'orientation' }]));
94
+ this.orientationInput = input('horizontal', { ...(ngDevMode ? { debugName: "orientationInput" } : /* istanbul ignore next */ {}), alias: 'orientation' });
95
95
  /**
96
96
  * The direction of navigation between items.
97
97
  */
98
- this.dirInput = input('ltr', ...(ngDevMode ? [{ debugName: "dirInput", alias: 'dir' }] : [{ alias: 'dir' }]));
98
+ this.dirInput = input('ltr', { ...(ngDevMode ? { debugName: "dirInput" } : /* istanbul ignore next */ {}), alias: 'dir' });
99
99
  /**
100
100
  * Whether keyboard navigation should loop around
101
101
  */
102
- this.loopInput = input(true, ...(ngDevMode ? [{ debugName: "loopInput", transform: booleanAttribute, alias: 'loop' }] : [{ transform: booleanAttribute, alias: 'loop' }]));
102
+ this.loopInput = input(true, { ...(ngDevMode ? { debugName: "loopInput" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'loop' });
103
103
  /**
104
104
  * When `true`, will prevent scrolling to the focus item when focused.
105
105
  * @group Props
106
106
  */
107
- this.preventScrollOnEntryFocus = input(false, ...(ngDevMode ? [{ debugName: "preventScrollOnEntryFocus", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
107
+ this.preventScrollOnEntryFocus = input(false, { ...(ngDevMode ? { debugName: "preventScrollOnEntryFocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
108
108
  /**
109
109
  * The value of the current stop item.
110
110
  *
111
111
  * Use when you do not need to control the state of the stop item.
112
112
  * @group Props
113
113
  */
114
- this.defaultCurrentTabStopId = input(undefined, ...(ngDevMode ? [{ debugName: "defaultCurrentTabStopId" }] : []));
114
+ this.defaultCurrentTabStopId = input(undefined, ...(ngDevMode ? [{ debugName: "defaultCurrentTabStopId" }] : /* istanbul ignore next */ []));
115
115
  /**
116
116
  * The controlled value of the current stop item. Can be binded as `model`.
117
117
  * @group Props
118
118
  */
119
- this.currentTabStopId = model(undefined, ...(ngDevMode ? [{ debugName: "currentTabStopId" }] : []));
119
+ this.currentTabStopId = model(undefined, ...(ngDevMode ? [{ debugName: "currentTabStopId" }] : /* istanbul ignore next */ []));
120
120
  /**
121
121
  * Event handler called when container is being focused. Can be prevented.
122
122
  * @group Emits
123
123
  */
124
124
  this.entryFocus = output();
125
- this._orientation = linkedSignal(() => this.orientationInput(), ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
125
+ this._orientation = linkedSignal(() => this.orientationInput(), ...(ngDevMode ? [{ debugName: "_orientation" }] : /* istanbul ignore next */ []));
126
126
  this.orientation = this._orientation.asReadonly();
127
- this._dir = linkedSignal(() => this.dirInput(), ...(ngDevMode ? [{ debugName: "_dir" }] : []));
127
+ this._dir = linkedSignal(() => this.dirInput(), ...(ngDevMode ? [{ debugName: "_dir" }] : /* istanbul ignore next */ []));
128
128
  this.dir = this._dir.asReadonly();
129
- this._loop = linkedSignal(() => this.loopInput(), ...(ngDevMode ? [{ debugName: "_loop" }] : []));
129
+ this._loop = linkedSignal(() => this.loopInput(), ...(ngDevMode ? [{ debugName: "_loop" }] : /* istanbul ignore next */ []));
130
130
  this.loop = this._loop.asReadonly();
131
- this.focusableItems = signal([], ...(ngDevMode ? [{ debugName: "focusableItems" }] : []));
132
- this.isClickFocus = signal(false, ...(ngDevMode ? [{ debugName: "isClickFocus" }] : []));
133
- this.isTabbingBackOut = signal(false, ...(ngDevMode ? [{ debugName: "isTabbingBackOut" }] : []));
134
- this.focusableItemsCount = signal(0, ...(ngDevMode ? [{ debugName: "focusableItemsCount" }] : []));
131
+ this.focusableItems = signal([], ...(ngDevMode ? [{ debugName: "focusableItems" }] : /* istanbul ignore next */ []));
132
+ this.isClickFocus = signal(false, ...(ngDevMode ? [{ debugName: "isClickFocus" }] : /* istanbul ignore next */ []));
133
+ this.isTabbingBackOut = signal(false, ...(ngDevMode ? [{ debugName: "isTabbingBackOut" }] : /* istanbul ignore next */ []));
134
+ this.focusableItemsCount = signal(0, ...(ngDevMode ? [{ debugName: "focusableItemsCount" }] : /* istanbul ignore next */ []));
135
135
  effect(() => {
136
136
  if (this.currentTabStopId() === undefined) {
137
137
  const def = this.defaultCurrentTabStopId();
@@ -184,10 +184,10 @@ class RdxRovingFocusGroupDirective {
184
184
  }
185
185
  this.isClickFocus.set(false);
186
186
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
188
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientationInput: { classPropertyName: "orientationInput", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, loopInput: { classPropertyName: "loopInput", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, preventScrollOnEntryFocus: { classPropertyName: "preventScrollOnEntryFocus", publicName: "preventScrollOnEntryFocus", isSignal: true, isRequired: false, transformFunction: null }, defaultCurrentTabStopId: { classPropertyName: "defaultCurrentTabStopId", publicName: "defaultCurrentTabStopId", isSignal: true, isRequired: false, transformFunction: null }, currentTabStopId: { classPropertyName: "currentTabStopId", publicName: "currentTabStopId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentTabStopId: "currentTabStopIdChange", entryFocus: "entryFocus" }, host: { listeners: { "focus": "handleFocus($event)", "blur": "isTabbingBackOut.set(false)", "mouseup": "handleMouseUp()", "mousedown": "isClickFocus.set(true)" }, properties: { "attr.data-orientation": "orientation()", "attr.tabindex": "isTabbingBackOut() || focusableItemsCount() === 0 ? -1 : 0", "attr.dir": "dir()" }, styleAttribute: "outline: none;" }, providers: [provideRovingFocusGroupContext(rootContext)], ngImport: i0 }); }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
188
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientationInput: { classPropertyName: "orientationInput", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, loopInput: { classPropertyName: "loopInput", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, preventScrollOnEntryFocus: { classPropertyName: "preventScrollOnEntryFocus", publicName: "preventScrollOnEntryFocus", isSignal: true, isRequired: false, transformFunction: null }, defaultCurrentTabStopId: { classPropertyName: "defaultCurrentTabStopId", publicName: "defaultCurrentTabStopId", isSignal: true, isRequired: false, transformFunction: null }, currentTabStopId: { classPropertyName: "currentTabStopId", publicName: "currentTabStopId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentTabStopId: "currentTabStopIdChange", entryFocus: "entryFocus" }, host: { listeners: { "focus": "handleFocus($event)", "blur": "isTabbingBackOut.set(false)", "mouseup": "handleMouseUp()", "mousedown": "isClickFocus.set(true)" }, properties: { "attr.data-orientation": "orientation()", "attr.tabindex": "isTabbingBackOut() || focusableItemsCount() === 0 ? -1 : 0", "attr.dir": "dir()" }, styleAttribute: "outline: none;" }, providers: [provideRovingFocusGroupContext(rootContext)], ngImport: i0 }); }
189
189
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{
191
191
  type: Directive,
192
192
  args: [{
193
193
  selector: '[rdxRovingFocusGroup]',
@@ -203,7 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
203
203
  style: 'outline: none;'
204
204
  }
205
205
  }]
206
- }], ctorParameters: () => [] });
206
+ }], ctorParameters: () => [], propDecorators: { orientationInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], dirInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], loopInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], preventScrollOnEntryFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "preventScrollOnEntryFocus", required: false }] }], defaultCurrentTabStopId: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultCurrentTabStopId", required: false }] }], currentTabStopId: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentTabStopId", required: false }] }, { type: i0.Output, args: ["currentTabStopIdChange"] }], entryFocus: [{ type: i0.Output, args: ["entryFocus"] }] } });
207
207
 
208
208
  /**
209
209
  * @group Components
@@ -218,26 +218,26 @@ class RdxRovingFocusItemDirective {
218
218
  * When false, item will not be focusable.
219
219
  * @group Props
220
220
  */
221
- this.focusableInput = input(true, ...(ngDevMode ? [{ debugName: "focusableInput", transform: booleanAttribute, alias: 'focusable' }] : [{ transform: booleanAttribute, alias: 'focusable' }]));
221
+ this.focusableInput = input(true, { ...(ngDevMode ? { debugName: "focusableInput" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'focusable' });
222
222
  /**
223
223
  * When `true`, item will be initially focused.
224
224
  * @group Props
225
225
  */
226
- this.activeInput = input(true, ...(ngDevMode ? [{ debugName: "activeInput", transform: booleanAttribute, alias: 'active' }] : [{ transform: booleanAttribute, alias: 'active' }]));
226
+ this.activeInput = input(true, { ...(ngDevMode ? { debugName: "activeInput" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'active' });
227
227
  /**
228
228
  * @group Props
229
229
  */
230
- this.tabStopIdInput = input(undefined, ...(ngDevMode ? [{ debugName: "tabStopIdInput", alias: 'tabStopId' }] : [{ alias: 'tabStopId' }]));
230
+ this.tabStopIdInput = input(undefined, { ...(ngDevMode ? { debugName: "tabStopIdInput" } : /* istanbul ignore next */ {}), alias: 'tabStopId' });
231
231
  /**
232
232
  * When true, shift + arrow key will allow focusing on next/previous item.
233
233
  * @group Props
234
234
  */
235
- this.allowShiftKey = input(false, ...(ngDevMode ? [{ debugName: "allowShiftKey", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
236
- this.id = computed(() => this.tabStopId() || generateId(), ...(ngDevMode ? [{ debugName: "id" }] : []));
237
- this.isCurrentTabStop = computed(() => this.rootContext.currentTabStopId() === this.id(), ...(ngDevMode ? [{ debugName: "isCurrentTabStop" }] : []));
238
- this.focusable = linkedSignal(() => this.focusableInput(), ...(ngDevMode ? [{ debugName: "focusable" }] : []));
239
- this.active = linkedSignal(() => this.activeInput(), ...(ngDevMode ? [{ debugName: "active" }] : []));
240
- this.tabStopId = linkedSignal(() => this.tabStopIdInput(), ...(ngDevMode ? [{ debugName: "tabStopId" }] : []));
235
+ this.allowShiftKey = input(false, { ...(ngDevMode ? { debugName: "allowShiftKey" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
236
+ this.id = computed(() => this.tabStopId() || generateId(), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
237
+ this.isCurrentTabStop = computed(() => this.rootContext.currentTabStopId() === this.id(), ...(ngDevMode ? [{ debugName: "isCurrentTabStop" }] : /* istanbul ignore next */ []));
238
+ this.focusable = linkedSignal(() => this.focusableInput(), ...(ngDevMode ? [{ debugName: "focusable" }] : /* istanbul ignore next */ []));
239
+ this.active = linkedSignal(() => this.activeInput(), ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
240
+ this.tabStopId = linkedSignal(() => this.tabStopIdInput(), ...(ngDevMode ? [{ debugName: "tabStopId" }] : /* istanbul ignore next */ []));
241
241
  if (this.focusable()) {
242
242
  this.rootContext.registerItem(this.elementRef.nativeElement);
243
243
  this.rootContext.onFocusableItemAdd();
@@ -276,15 +276,19 @@ class RdxRovingFocusItemDirective {
276
276
  * @ignore
277
277
  */
278
278
  handleKeydown(event) {
279
- if (event.key === 'Tab' && event.shiftKey) {
279
+ const keyEvent = event;
280
+ if (keyEvent.key === 'Tab' && keyEvent.shiftKey) {
280
281
  this.rootContext.onItemShiftTab();
281
282
  return;
282
283
  }
283
284
  if (event.target !== this.elementRef.nativeElement)
284
285
  return;
285
- const focusIntent = getFocusIntent(event, this.rootContext.orientation(), this.rootContext.dir());
286
+ const focusIntent = getFocusIntent(keyEvent, this.rootContext.orientation(), this.rootContext.dir());
286
287
  if (focusIntent !== undefined) {
287
- if (event.metaKey || event.ctrlKey || event.altKey || (this.allowShiftKey() ? false : event.shiftKey)) {
288
+ if (keyEvent.metaKey ||
289
+ keyEvent.ctrlKey ||
290
+ keyEvent.altKey ||
291
+ (this.allowShiftKey() ? false : keyEvent.shiftKey)) {
288
292
  return;
289
293
  }
290
294
  event.preventDefault();
@@ -307,10 +311,10 @@ class RdxRovingFocusItemDirective {
307
311
  });
308
312
  }
309
313
  }
310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxRovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
311
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.3", type: RdxRovingFocusItemDirective, isStandalone: true, selector: "[rdxRovingFocusItem]", inputs: { focusableInput: { classPropertyName: "focusableInput", publicName: "focusable", isSignal: true, isRequired: false, transformFunction: null }, activeInput: { classPropertyName: "activeInput", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, tabStopIdInput: { classPropertyName: "tabStopIdInput", publicName: "tabStopId", isSignal: true, isRequired: false, transformFunction: null }, allowShiftKey: { classPropertyName: "allowShiftKey", publicName: "allowShiftKey", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)", "focus": "rootContext.onItemFocus(id())" }, properties: { "attr.tabindex": "isCurrentTabStop() ? 0 : -1", "attr.data-orientation": "rootContext.orientation", "attr.data-active": "active()", "attr.data-disabled": "!focusable() ? \"\" : undefined" } }, ngImport: i0 }); }
314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxRovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
315
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxRovingFocusItemDirective, isStandalone: true, selector: "[rdxRovingFocusItem]", inputs: { focusableInput: { classPropertyName: "focusableInput", publicName: "focusable", isSignal: true, isRequired: false, transformFunction: null }, activeInput: { classPropertyName: "activeInput", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, tabStopIdInput: { classPropertyName: "tabStopIdInput", publicName: "tabStopId", isSignal: true, isRequired: false, transformFunction: null }, allowShiftKey: { classPropertyName: "allowShiftKey", publicName: "allowShiftKey", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)", "focus": "rootContext.onItemFocus(id())" }, properties: { "attr.tabindex": "isCurrentTabStop() ? 0 : -1", "attr.data-orientation": "rootContext.orientation", "attr.data-active": "active()", "attr.data-disabled": "!focusable() ? \"\" : undefined" } }, ngImport: i0 }); }
312
316
  }
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: RdxRovingFocusItemDirective, decorators: [{
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxRovingFocusItemDirective, decorators: [{
314
318
  type: Directive,
315
319
  args: [{
316
320
  selector: '[rdxRovingFocusItem]',
@@ -324,7 +328,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
324
328
  '(focus)': 'rootContext.onItemFocus(id())'
325
329
  }
326
330
  }]
327
- }], ctorParameters: () => [] });
331
+ }], ctorParameters: () => [], propDecorators: { focusableInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusable", required: false }] }], activeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], tabStopIdInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabStopId", required: false }] }], allowShiftKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowShiftKey", required: false }] }] } });
328
332
 
329
333
  const rovingFocusImports = [RdxRovingFocusGroupDirective, RdxRovingFocusItemDirective];
330
334
 
@@ -332,5 +336,5 @@ const rovingFocusImports = [RdxRovingFocusGroupDirective, RdxRovingFocusItemDire
332
336
  * Generated bundle index. Do not edit.
333
337
  */
334
338
 
335
- export { RdxRovingFocusGroupDirective, RdxRovingFocusItemDirective, injectRovingFocusGroupContext, provideRovingFocusGroupContext, rovingFocusImports };
339
+ export { RdxRovingFocusGroupDirective, RdxRovingFocusItemDirective, focusFirst, injectRovingFocusGroupContext, provideRovingFocusGroupContext, rovingFocusImports };
336
340
  //# sourceMappingURL=radix-ng-primitives-roving-focus.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-roving-focus.mjs","sources":["../tmp-esm2022/roving-focus/src/utils.js","../tmp-esm2022/roving-focus/src/roving-focus-group.directive.js","../tmp-esm2022/roving-focus/src/roving-focus-item.directive.js","../tmp-esm2022/roving-focus/index.js","../tmp-esm2022/roving-focus/radix-ng-primitives-roving-focus.js"],"sourcesContent":["export const ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nexport const EVENT_OPTIONS = { bubbles: false, cancelable: true };\nexport const MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: 'prev',\n ArrowUp: 'prev',\n ArrowRight: 'next',\n ArrowDown: 'next',\n PageUp: 'first',\n Home: 'first',\n PageDown: 'last',\n End: 'last'\n};\nexport function getDirectionAwareKey(key, dir) {\n if (dir !== 'rtl')\n return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\nexport function getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key))\n return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key))\n return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nexport function focusFirst(candidates, preventScroll = false, rootNode) {\n const PREVIOUSLY_FOCUSED_ELEMENT = rootNode?.activeElement ?? document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT)\n return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT)\n return;\n }\n}\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nexport function generateId() {\n return `rf-item-${Math.random().toString(36).slice(2, 11)}`;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLCtCQUErQixDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0FBSWxFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnQztJQUNoRSxTQUFTLEVBQUUsTUFBTTtJQUNqQixPQUFPLEVBQUUsTUFBTTtJQUNmLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsSUFBSSxFQUFFLE9BQU87SUFDYixRQUFRLEVBQUUsTUFBTTtJQUNoQixHQUFHLEVBQUUsTUFBTTtDQUNkLENBQUM7QUFFRixNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBVyxFQUFFLEdBQWU7SUFDN0QsSUFBSSxHQUFHLEtBQUssS0FBSztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQzlCLE9BQU8sR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN6RixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFvQixFQUFFLFdBQXlCLEVBQUUsR0FBZTtJQUMzRixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELElBQUksV0FBVyxLQUFLLFVBQVUsSUFBSSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDOUYsSUFBSSxXQUFXLEtBQUssWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM3RixPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFVBQXlCLEVBQUUsYUFBYSxHQUFHLEtBQUssRUFBRSxRQUFnQztJQUN6RyxNQUFNLDBCQUEwQixHQUFHLFFBQVEsRUFBRSxhQUFhLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNyRixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLDhGQUE4RjtRQUM5RixJQUFJLFNBQVMsS0FBSywwQkFBMEI7WUFBRSxPQUFPO1FBQ3JELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSywwQkFBMEI7WUFBRSxPQUFPO0lBQ3RFLENBQUM7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxLQUFVLEVBQUUsVUFBa0I7SUFDdkQsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVTtJQUN0QixPQUFPLFdBQVcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJztcbmV4cG9ydCB0eXBlIERpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCc7XG5cbmV4cG9ydCBjb25zdCBFTlRSWV9GT0NVUyA9ICdyb3ZpbmdGb2N1c0dyb3VwLm9uRW50cnlGb2N1cyc7XG5leHBvcnQgY29uc3QgRVZFTlRfT1BUSU9OUyA9IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IHRydWUgfTtcblxudHlwZSBGb2N1c0ludGVudCA9ICdmaXJzdCcgfCAnbGFzdCcgfCAncHJldicgfCAnbmV4dCc7XG5cbmV4cG9ydCBjb25zdCBNQVBfS0VZX1RPX0ZPQ1VTX0lOVEVOVDogUmVjb3JkPHN0cmluZywgRm9jdXNJbnRlbnQ+ID0ge1xuICAgIEFycm93TGVmdDogJ3ByZXYnLFxuICAgIEFycm93VXA6ICdwcmV2JyxcbiAgICBBcnJvd1JpZ2h0OiAnbmV4dCcsXG4gICAgQXJyb3dEb3duOiAnbmV4dCcsXG4gICAgUGFnZVVwOiAnZmlyc3QnLFxuICAgIEhvbWU6ICdmaXJzdCcsXG4gICAgUGFnZURvd246ICdsYXN0JyxcbiAgICBFbmQ6ICdsYXN0J1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGlvbkF3YXJlS2V5KGtleTogc3RyaW5nLCBkaXI/OiBEaXJlY3Rpb24pIHtcbiAgICBpZiAoZGlyICE9PSAncnRsJykgcmV0dXJuIGtleTtcbiAgICByZXR1cm4ga2V5ID09PSAnQXJyb3dMZWZ0JyA/ICdBcnJvd1JpZ2h0JyA6IGtleSA9PT0gJ0Fycm93UmlnaHQnID8gJ0Fycm93TGVmdCcgOiBrZXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c0ludGVudChldmVudDogS2V5Ym9hcmRFdmVudCwgb3JpZW50YXRpb24/OiBPcmllbnRhdGlvbiwgZGlyPzogRGlyZWN0aW9uKSB7XG4gICAgY29uc3Qga2V5ID0gZ2V0RGlyZWN0aW9uQXdhcmVLZXkoZXZlbnQua2V5LCBkaXIpO1xuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiBbJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0J10uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAob3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiBbJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gTUFQX0tFWV9UT19GT0NVU19JTlRFTlRba2V5XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzRmlyc3QoY2FuZGlkYXRlczogSFRNTEVsZW1lbnRbXSwgcHJldmVudFNjcm9sbCA9IGZhbHNlLCByb290Tm9kZT86IERvY3VtZW50IHwgU2hhZG93Um9vdCkge1xuICAgIGNvbnN0IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UID0gcm9vdE5vZGU/LmFjdGl2ZUVsZW1lbnQgPz8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICAgIC8vIGlmIGZvY3VzIGlzIGFscmVhZHkgd2hlcmUgd2Ugd2FudCB0byBnbywgd2UgZG9uJ3Qgd2FudCB0byBrZWVwIGdvaW5nIHRocm91Z2ggdGhlIGNhbmRpZGF0ZXNcbiAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICAgICAgY2FuZGlkYXRlLmZvY3VzKHsgcHJldmVudFNjcm9sbCB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgfVxufVxuXG4vKipcbiAqIFdyYXBzIGFuIGFycmF5IGFyb3VuZCBpdHNlbGYgYXQgYSBnaXZlbiBzdGFydCBpbmRleFxuICogRXhhbXBsZTogYHdyYXBBcnJheShbJ2EnLCAnYicsICdjJywgJ2QnXSwgMikgPT09IFsnYycsICdkJywgJ2EnLCAnYiddYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcEFycmF5PFQ+KGFycmF5OiBUW10sIHN0YXJ0SW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBhcnJheS5tYXAoKF8sIGluZGV4KSA9PiBhcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgcmYtaXRlbS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDExKX1gO1xufVxuIl19","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Directive, effect, ElementRef, inject, input, linkedSignal, model, output, PLATFORM_ID, signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { ENTRY_FOCUS, EVENT_OPTIONS, focusFirst } from './utils';\nimport * as i0 from \"@angular/core\";\nconst rootContext = () => {\n const rovingFocusGroup = inject(RdxRovingFocusGroupDirective);\n return {\n loop: rovingFocusGroup.loop,\n dir: rovingFocusGroup.dir,\n orientation: rovingFocusGroup.orientation,\n currentTabStopId: rovingFocusGroup.currentTabStopId,\n focusableItems: rovingFocusGroup.focusableItems,\n onItemFocus: (tabStopId) => {\n rovingFocusGroup.currentTabStopId.set(tabStopId);\n },\n onItemShiftTab: () => {\n rovingFocusGroup.isTabbingBackOut.set(true);\n },\n onFocusableItemAdd: () => {\n rovingFocusGroup.focusableItemsCount.update((count) => count + 1);\n },\n onFocusableItemRemove: () => {\n rovingFocusGroup.focusableItemsCount.update((count) => Math.max(0, count - 1));\n },\n registerItem: (item) => {\n const currentItems = rovingFocusGroup.focusableItems();\n rovingFocusGroup.focusableItems.set([...currentItems, item]);\n },\n unregisterItem: (item) => {\n const currentItems = rovingFocusGroup.focusableItems();\n rovingFocusGroup.focusableItems.set(currentItems.filter((el) => el !== item));\n }\n };\n};\nexport const [injectRovingFocusGroupContext, provideRovingFocusGroupContext] = createContext('RovingFocusGroupContext');\n/**\n * @group Components\n */\nexport class RdxRovingFocusGroupDirective {\n constructor() {\n this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n this.elementRef = inject(ElementRef);\n /**\n * The orientation of the group. Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n this.orientationInput = input('horizontal', ...(ngDevMode ? [{ debugName: \"orientationInput\", alias: 'orientation' }] : [{ alias: 'orientation' }]));\n /**\n * The direction of navigation between items.\n */\n this.dirInput = input('ltr', ...(ngDevMode ? [{ debugName: \"dirInput\", alias: 'dir' }] : [{ alias: 'dir' }]));\n /**\n * Whether keyboard navigation should loop around\n */\n this.loopInput = input(true, ...(ngDevMode ? [{ debugName: \"loopInput\", transform: booleanAttribute, alias: 'loop' }] : [{ transform: booleanAttribute, alias: 'loop' }]));\n /**\n * When `true`, will prevent scrolling to the focus item when focused.\n * @group Props\n */\n this.preventScrollOnEntryFocus = input(false, ...(ngDevMode ? [{ debugName: \"preventScrollOnEntryFocus\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n /**\n * The value of the current stop item.\n *\n * Use when you do not need to control the state of the stop item.\n * @group Props\n */\n this.defaultCurrentTabStopId = input(undefined, ...(ngDevMode ? [{ debugName: \"defaultCurrentTabStopId\" }] : []));\n /**\n * The controlled value of the current stop item. Can be binded as `model`.\n * @group Props\n */\n this.currentTabStopId = model(undefined, ...(ngDevMode ? [{ debugName: \"currentTabStopId\" }] : []));\n /**\n * Event handler called when container is being focused. Can be prevented.\n * @group Emits\n */\n this.entryFocus = output();\n this._orientation = linkedSignal(() => this.orientationInput(), ...(ngDevMode ? [{ debugName: \"_orientation\" }] : []));\n this.orientation = this._orientation.asReadonly();\n this._dir = linkedSignal(() => this.dirInput(), ...(ngDevMode ? [{ debugName: \"_dir\" }] : []));\n this.dir = this._dir.asReadonly();\n this._loop = linkedSignal(() => this.loopInput(), ...(ngDevMode ? [{ debugName: \"_loop\" }] : []));\n this.loop = this._loop.asReadonly();\n this.focusableItems = signal([], ...(ngDevMode ? [{ debugName: \"focusableItems\" }] : []));\n this.isClickFocus = signal(false, ...(ngDevMode ? [{ debugName: \"isClickFocus\" }] : []));\n this.isTabbingBackOut = signal(false, ...(ngDevMode ? [{ debugName: \"isTabbingBackOut\" }] : []));\n this.focusableItemsCount = signal(0, ...(ngDevMode ? [{ debugName: \"focusableItemsCount\" }] : []));\n effect(() => {\n if (this.currentTabStopId() === undefined) {\n const def = this.defaultCurrentTabStopId();\n if (def !== undefined) {\n this.currentTabStopId.set(def);\n }\n }\n });\n }\n setOrientation(value) {\n this._orientation.set(value);\n }\n setDir(value) {\n this._dir.set(value);\n }\n setLoop(value) {\n this._loop.set(value);\n }\n /** @ignore */\n handleMouseUp() {\n if (!this.isBrowser)\n return;\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n requestAnimationFrame(() => {\n this.isClickFocus.set(false);\n });\n }\n /** @ignore */\n handleFocus(event) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !this.isClickFocus();\n if (event.currentTarget === this.elementRef.nativeElement &&\n event.target === event.currentTarget &&\n isKeyboardFocus &&\n !this.isTabbingBackOut()) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);\n this.entryFocus.emit(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');\n const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');\n const highlightedItem = items.find((item) => item.getAttribute('data-highlighted') === '');\n const currentItem = items.find((item) => item.id === this.currentTabStopId());\n const candidateItems = [activeItem, highlightedItem, currentItem, ...items].filter(Boolean);\n focusFirst(candidateItems, this.preventScrollOnEntryFocus());\n }\n }\n this.isClickFocus.set(false);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: \"[rdxRovingFocusGroup]\", inputs: { orientationInput: { classPropertyName: \"orientationInput\", publicName: \"orientation\", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: \"dirInput\", publicName: \"dir\", isSignal: true, isRequired: false, transformFunction: null }, loopInput: { classPropertyName: \"loopInput\", publicName: \"loop\", isSignal: true, isRequired: false, transformFunction: null }, preventScrollOnEntryFocus: { classPropertyName: \"preventScrollOnEntryFocus\", publicName: \"preventScrollOnEntryFocus\", isSignal: true, isRequired: false, transformFunction: null }, defaultCurrentTabStopId: { classPropertyName: \"defaultCurrentTabStopId\", publicName: \"defaultCurrentTabStopId\", isSignal: true, isRequired: false, transformFunction: null }, currentTabStopId: { classPropertyName: \"currentTabStopId\", publicName: \"currentTabStopId\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentTabStopId: \"currentTabStopIdChange\", entryFocus: \"entryFocus\" }, host: { listeners: { \"focus\": \"handleFocus($event)\", \"blur\": \"isTabbingBackOut.set(false)\", \"mouseup\": \"handleMouseUp()\", \"mousedown\": \"isClickFocus.set(true)\" }, properties: { \"attr.data-orientation\": \"orientation()\", \"attr.tabindex\": \"isTabbingBackOut() || focusableItemsCount() === 0 ? -1 : 0\", \"attr.dir\": \"dir()\" }, styleAttribute: \"outline: none;\" }, providers: [provideRovingFocusGroupContext(rootContext)], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxRovingFocusGroup]',\n providers: [provideRovingFocusGroupContext(rootContext)],\n host: {\n '[attr.data-orientation]': 'orientation()',\n '[attr.tabindex]': 'isTabbingBackOut() || focusableItemsCount() === 0 ? -1 : 0',\n '[attr.dir]': 'dir()',\n '(focus)': 'handleFocus($event)',\n '(blur)': 'isTabbingBackOut.set(false)',\n '(mouseup)': 'handleMouseUp()',\n '(mousedown)': 'isClickFocus.set(true)',\n style: 'outline: none;'\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3ByaW1pdGl2ZXMvcm92aW5nLWZvY3VzL3NyYy9yb3ZpbmctZm9jdXMtZ3JvdXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQWEsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQWUsTUFBTSxTQUFTLENBQUM7O0FBRXpGLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtJQUNyQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlELE9BQU87UUFDSCxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtRQUMzQixHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztRQUN6QixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsV0FBVztRQUN6QyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxnQkFBZ0I7UUFDbkQsY0FBYyxFQUFFLGdCQUFnQixDQUFDLGNBQWM7UUFDL0MsV0FBVyxFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFO1lBQy9CLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUNqQixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FB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cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBEaXJlY3RpdmUsXG4gICAgZWZmZWN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIGxpbmtlZFNpZ25hbCxcbiAgICBtb2RlbCxcbiAgICBvdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gJ0ByYWRpeC1uZy9wcmltaXRpdmVzL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBFTlRSWV9GT0NVUywgRVZFTlRfT1BUSU9OUywgZm9jdXNGaXJzdCwgT3JpZW50YXRpb24gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3Qgcm9vdENvbnRleHQgPSAoKSA9PiB7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cCA9IGluamVjdChSZHhSb3ZpbmdGb2N1c0dyb3VwRGlyZWN0aXZlKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb29wOiByb3ZpbmdGb2N1c0dyb3VwLmxvb3AsXG4gICAgICAgIGRpcjogcm92aW5nRm9jdXNHcm91cC5kaXIsXG4gICAgICAgIG9yaWVudGF0aW9uOiByb3ZpbmdGb2N1c0dyb3VwLm9yaWVudGF0aW9uLFxuICAgICAgICBjdXJyZW50VGFiU3RvcElkOiByb3ZpbmdGb2N1c0dyb3VwLmN1cnJlbnRUYWJTdG9wSWQsXG4gICAgICAgIGZvY3VzYWJsZUl0ZW1zOiByb3ZpbmdGb2N1c0dyb3VwLmZvY3VzYWJsZUl0ZW1zLFxuICAgICAgICBvbkl0ZW1Gb2N1czogKHRhYlN0b3BJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByb3ZpbmdGb2N1c0dyb3VwLmN1cnJlbnRUYWJTdG9wSWQuc2V0KHRhYlN0b3BJZCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSXRlbVNoaWZ0VGFiOiAoKSA9PiB7XG4gICAgICAgICAgICByb3ZpbmdGb2N1c0dyb3VwLmlzVGFiYmluZ0JhY2tPdXQuc2V0KHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQ6ICgpID0+IHtcbiAgICAgICAgICAgIHJvdmluZ0ZvY3VzR3JvdXAuZm9jdXNhYmxlSXRlbXNDb3VudC51cGRhdGUoKGNvdW50KSA9PiBjb3VudCArIDEpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6ICgpID0+IHtcbiAgICAgICAgICAgIHJvdmluZ0ZvY3VzR3JvdXAuZm9jdXNhYmxlSXRlbXNDb3VudC51cGRhdGUoKGNvdW50KSA9PiBNYXRoLm1heCgwLCBjb3VudCAtIDEpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaXN0ZXJJdGVtOiAoaXRlbTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHJvdmluZ0ZvY3VzR3JvdXAuZm9jdXNhYmxlSXRlbXMoKTtcbiAgICAgICAgICAgIHJvdmluZ0ZvY3VzR3JvdXAuZm9jdXNhYmxlSXRlbXMuc2V0KFsuLi5jdXJyZW50SXRlbXMsIGl0ZW1dKTtcbiAgICAgICAgfSxcbiAgICAgICAgdW5yZWdpc3Rlckl0ZW06IChpdGVtOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gcm92aW5nRm9jdXNHcm91cC5mb2N1c2FibGVJdGVtcygpO1xuICAgICAgICAgICAgcm92aW5nRm9jdXNHcm91cC5mb2N1c2FibGVJdGVtcy5zZXQoY3VycmVudEl0ZW1zLmZpbHRlcigoZWwpID0+IGVsICE9PSBpdGVtKSk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcblxuZXhwb3J0IHR5cGUgUm92aW5nRm9jdXNHcm91cENvbnRleHQgPSBSZXR1cm5UeXBlPHR5cGVvZiByb290Q29udGV4dD47XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Um92aW5nRm9jdXNHcm91cENvbnRleHQsIHByb3ZpZGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dF0gPVxuICAgIGNyZWF0ZUNvbnRleHQ8Um92aW5nRm9jdXNHcm91cENvbnRleHQ+KCdSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCcpO1xuXG4vKipcbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3JkeFJvdmluZ0ZvY3VzR3JvdXBdJyxcbiAgICBwcm92aWRlcnM6IFtwcm92aWRlUm92aW5nRm9jdXNHcm91cENvbnRleHQocm9vdENvbnRleHQpXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdvcmllbnRhdGlvbigpJyxcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdpc1RhYmJpbmdCYWNrT3V0KCkgfHwgZm9jdXNhYmxlSXRlbXNDb3VudCgpID09PSAwID8gLTEgOiAwJyxcbiAgICAgICAgJ1thdHRyLmRpcl0nOiAnZGlyKCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdoYW5kbGVGb2N1cygkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdpc1RhYmJpbmdCYWNrT3V0LnNldChmYWxzZSknLFxuICAgICAgICAnKG1vdXNldXApJzogJ2hhbmRsZU1vdXNlVXAoKScsXG4gICAgICAgICcobW91c2Vkb3duKSc6ICdpc0NsaWNrRm9jdXMuc2V0KHRydWUpJyxcbiAgICAgICAgc3R5bGU6ICdvdXRsaW5lOiBub25lOydcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFJkeFJvdmluZ0ZvY3VzR3JvdXBEaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBncm91cC4gTWFpbmx5IHNvIGFycm93IG5hdmlnYXRpb24gaXMgZG9uZSBhY2NvcmRpbmdseSAobGVmdCAmIHJpZ2h0IHZzLiB1cCAmIGRvd24pXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3JpZW50YXRpb25JbnB1dCA9IGlucHV0PE9yaWVudGF0aW9uPignaG9yaXpvbnRhbCcsIHsgYWxpYXM6ICdvcmllbnRhdGlvbicgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGlyZWN0aW9uIG9mIG5hdmlnYXRpb24gYmV0d2VlbiBpdGVtcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBkaXJJbnB1dCA9IGlucHV0PERpcmVjdGlvbj4oJ2x0cicsIHsgYWxpYXM6ICdkaXInIH0pO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBrZXlib2FyZCBuYXZpZ2F0aW9uIHNob3VsZCBsb29wIGFyb3VuZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGxvb3BJbnB1dCA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4odHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsIGFsaWFzOiAnbG9vcCcgfSk7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBwcmV2ZW50IHNjcm9sbGluZyB0byB0aGUgZm9jdXMgaXRlbSB3aGVuIGZvY3VzZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJldmVudFNjcm9sbE9uRW50cnlGb2N1cyA9IGlucHV0PGJvb2xlYW4sIEJvb2xlYW5JbnB1dD4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IHN0b3AgaXRlbS5cbiAgICAgKlxuICAgICAqIFVzZSB3aGVuIHlvdSBkbyBub3QgbmVlZCB0byBjb250cm9sIHRoZSBzdGF0ZSBvZiB0aGUgc3RvcCBpdGVtLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbnRyb2xsZWQgdmFsdWUgb2YgdGhlIGN1cnJlbnQgc3RvcCBpdGVtLiBDYW4gYmUgYmluZGVkIGFzIGBtb2RlbGAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgcmVhZG9ubHkgY3VycmVudFRhYlN0b3BJZCA9IG1vZGVsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gY29udGFpbmVyIGlzIGJlaW5nIGZvY3VzZWQuIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW50cnlGb2N1cyA9IG91dHB1dDxFdmVudD4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX29yaWVudGF0aW9uID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMub3JpZW50YXRpb25JbnB1dCgpKTtcbiAgICByZWFkb25seSBvcmllbnRhdGlvbiA9IHRoaXMuX29yaWVudGF0aW9uLmFzUmVhZG9ubHkoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpciA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmRpcklucHV0KCkpO1xuICAgIHJlYWRvbmx5IGRpciA9IHRoaXMuX2Rpci5hc1JlYWRvbmx5KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb29wID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMubG9vcElucHV0KCkpO1xuICAgIHJlYWRvbmx5IGxvb3AgPSB0aGlzLl9sb29wLmFzUmVhZG9ubHkoKTtcblxuICAgIHJlYWRvbmx5IGZvY3VzYWJsZUl0ZW1zID0gc2lnbmFsPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNDbGlja0ZvY3VzID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSBpc1RhYmJpbmdCYWNrT3V0ID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSBmb2N1c2FibGVJdGVtc0NvdW50ID0gc2lnbmFsKDApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50VGFiU3RvcElkKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZiA9IHRoaXMuZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoZGVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiU3RvcElkLnNldChkZWYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0T3JpZW50YXRpb24odmFsdWU6IE9yaWVudGF0aW9uKSB7XG4gICAgICAgIHRoaXMuX29yaWVudGF0aW9uLnNldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0RGlyKHZhbHVlOiBEaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5fZGlyLnNldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0TG9vcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb29wLnNldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBoYW5kbGVNb3VzZVVwKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICAgICAgLy8gcmVzZXQgYGlzQ2xpY2tGb2N1c2AgYWZ0ZXIgMSB0aWNrIGJlY2F1c2UgaGFuZGxlRm9jdXMgbWlnaHQgbm90IHRyaWdnZXJlZCBkdWUgdG8gZm9jdXNlZCBlbGVtZW50XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xpY2tGb2N1cy5zZXQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGhhbmRsZUZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIFdlIG5vcm1hbGx5IHdvdWxkbid0IG5lZWQgdGhpcyBjaGVjaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGNoZWNrXG4gICAgICAgIC8vIHRoYXQgdGhlIGZvY3VzIGlzIG9uIHRoZSBjdXJyZW50IHRhcmdldCBhbmQgbm90IGJ1YmJsaW5nIHRvIGl0LlxuICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2UgU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYnV0dG9ucyB3aGVuIGNsaWNrZWQsIGFuZFxuICAgICAgICAvLyBpbnN0ZWFkLCB0aGUgd3JhcHBlciB3aWxsIGdldCBmb2N1c2VkIGFuZCBub3QgdGhyb3VnaCBhIGJ1YmJsaW5nIGV2ZW50LlxuICAgICAgICBjb25zdCBpc0tleWJvYXJkRm9jdXMgPSAhdGhpcy5pc0NsaWNrRm9jdXMoKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmXG4gICAgICAgICAgICBpc0tleWJvYXJkRm9jdXMgJiZcbiAgICAgICAgICAgICF0aGlzLmlzVGFiYmluZ0JhY2tPdXQoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5Rm9jdXNFdmVudCA9IG5ldyBDdXN0b21FdmVudChFTlRSWV9GT0NVUywgRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGVudHJ5Rm9jdXNFdmVudCk7XG4gICAgICAgICAgICB0aGlzLmVudHJ5Rm9jdXMuZW1pdChlbnRyeUZvY3VzRXZlbnQpO1xuXG4gICAgICAgICAgICBpZiAoIWVudHJ5Rm9jdXNFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmZvY3VzYWJsZUl0ZW1zKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmRhdGFzZXRbJ2Rpc2FibGVkJ10gIT09ICcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtYWN0aXZlJykgPT09ICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGlnaGxpZ2h0ZWQnKSA9PT0gJycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5jdXJyZW50VGFiU3RvcElkKCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlSXRlbXMgPSBbYWN0aXZlSXRlbSwgaGlnaGxpZ2h0ZWRJdGVtLCBjdXJyZW50SXRlbSwgLi4uaXRlbXNdLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgQm9vbGVhblxuICAgICAgICAgICAgICAgICkgYXMgdHlwZW9mIGl0ZW1zO1xuXG4gICAgICAgICAgICAgICAgZm9jdXNGaXJzdChjYW5kaWRhdGVJdGVtcywgdGhpcy5wcmV2ZW50U2Nyb2xsT25FbnRyeUZvY3VzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0NsaWNrRm9jdXMuc2V0KGZhbHNlKTtcbiAgICB9XG59XG4iXX0=","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, DestroyRef, Directive, ElementRef, inject, input, linkedSignal, PLATFORM_ID } from '@angular/core';\nimport { injectRovingFocusGroupContext } from './roving-focus-group.directive';\nimport { focusFirst, generateId, getFocusIntent, wrapArray } from './utils';\nimport * as i0 from \"@angular/core\";\n/**\n * @group Components\n */\nexport class RdxRovingFocusItemDirective {\n constructor() {\n this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n this.destroyRef = inject(DestroyRef);\n this.elementRef = inject(ElementRef);\n this.rootContext = injectRovingFocusGroupContext();\n /**\n * When false, item will not be focusable.\n * @group Props\n */\n this.focusableInput = input(true, ...(ngDevMode ? [{ debugName: \"focusableInput\", transform: booleanAttribute, alias: 'focusable' }] : [{ transform: booleanAttribute, alias: 'focusable' }]));\n /**\n * When `true`, item will be initially focused.\n * @group Props\n */\n this.activeInput = input(true, ...(ngDevMode ? [{ debugName: \"activeInput\", transform: booleanAttribute, alias: 'active' }] : [{ transform: booleanAttribute, alias: 'active' }]));\n /**\n * @group Props\n */\n this.tabStopIdInput = input(undefined, ...(ngDevMode ? [{ debugName: \"tabStopIdInput\", alias: 'tabStopId' }] : [{ alias: 'tabStopId' }]));\n /**\n * When true, shift + arrow key will allow focusing on next/previous item.\n * @group Props\n */\n this.allowShiftKey = input(false, ...(ngDevMode ? [{ debugName: \"allowShiftKey\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.id = computed(() => this.tabStopId() || generateId(), ...(ngDevMode ? [{ debugName: \"id\" }] : []));\n this.isCurrentTabStop = computed(() => this.rootContext.currentTabStopId() === this.id(), ...(ngDevMode ? [{ debugName: \"isCurrentTabStop\" }] : []));\n this.focusable = linkedSignal(() => this.focusableInput(), ...(ngDevMode ? [{ debugName: \"focusable\" }] : []));\n this.active = linkedSignal(() => this.activeInput(), ...(ngDevMode ? [{ debugName: \"active\" }] : []));\n this.tabStopId = linkedSignal(() => this.tabStopIdInput(), ...(ngDevMode ? [{ debugName: \"tabStopId\" }] : []));\n if (this.focusable()) {\n this.rootContext.registerItem(this.elementRef.nativeElement);\n this.rootContext.onFocusableItemAdd();\n this.destroyRef.onDestroy(() => {\n this.rootContext.unregisterItem(this.elementRef.nativeElement);\n this.rootContext.onFocusableItemRemove();\n });\n }\n }\n setFocusable(value) {\n this.focusable.set(value);\n }\n setActive(value) {\n this.active.set(value);\n }\n setTabStopId(value) {\n this.tabStopId.set(value);\n }\n /** @ignore */\n handleMouseDown(event) {\n if (!this.focusable()) {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n event.preventDefault();\n }\n else {\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n this.rootContext.onItemFocus(this.id());\n }\n }\n /**\n * Handles the `keydown` event for keyboard navigation within the roving focus group.\n * Supports navigation based on orientation and direction, and focuses appropriate elements.\n *\n * @param event The `KeyboardEvent` object.\n * @ignore\n */\n handleKeydown(event) {\n if (event.key === 'Tab' && event.shiftKey) {\n this.rootContext.onItemShiftTab();\n return;\n }\n if (event.target !== this.elementRef.nativeElement)\n return;\n const focusIntent = getFocusIntent(event, this.rootContext.orientation(), this.rootContext.dir());\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (this.allowShiftKey() ? false : event.shiftKey)) {\n return;\n }\n event.preventDefault();\n let candidateNodes = this.rootContext.focusableItems().filter((item) => item.dataset['disabled'] !== '');\n if (focusIntent === 'last') {\n candidateNodes.reverse();\n }\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev')\n candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(this.elementRef.nativeElement);\n candidateNodes = this.rootContext.loop()\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n queueMicrotask(() => {\n if (this.isBrowser) {\n focusFirst(candidateNodes, false, this.elementRef.nativeElement);\n }\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxRovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: RdxRovingFocusItemDirective, isStandalone: true, selector: \"[rdxRovingFocusItem]\", inputs: { focusableInput: { classPropertyName: \"focusableInput\", publicName: \"focusable\", isSignal: true, isRequired: false, transformFunction: null }, activeInput: { classPropertyName: \"activeInput\", publicName: \"active\", isSignal: true, isRequired: false, transformFunction: null }, tabStopIdInput: { classPropertyName: \"tabStopIdInput\", publicName: \"tabStopId\", isSignal: true, isRequired: false, transformFunction: null }, allowShiftKey: { classPropertyName: \"allowShiftKey\", publicName: \"allowShiftKey\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"mousedown\": \"handleMouseDown($event)\", \"keydown\": \"handleKeydown($event)\", \"focus\": \"rootContext.onItemFocus(id())\" }, properties: { \"attr.tabindex\": \"isCurrentTabStop() ? 0 : -1\", \"attr.data-orientation\": \"rootContext.orientation\", \"attr.data-active\": \"active()\", \"attr.data-disabled\": \"!focusable() ? \\\"\\\" : undefined\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: RdxRovingFocusItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[rdxRovingFocusItem]',\n host: {\n '[attr.tabindex]': 'isCurrentTabStop() ? 0 : -1',\n '[attr.data-orientation]': 'rootContext.orientation',\n '[attr.data-active]': 'active()',\n '[attr.data-disabled]': '!focusable() ? \"\" : undefined',\n '(mousedown)': 'handleMouseDown($event)',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'rootContext.onItemFocus(id())'\n }\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcHJpbWl0aXZlcy9yb3ZpbmctZm9jdXMvc3JjL3JvdmluZy1mb2N1cy1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFNUU7O0dBRUc7QUFhSCxNQUFNLE9BQU8sMkJBQTJCO0lBcUNwQztRQXBDaUIsY0FBUyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixnQkFBVyxHQUFHLDZCQUE2QixFQUFHLENBQUM7UUFFbEU7OztXQUdHO1FBQ00sbUJBQWMsR0FBRyxLQUFLLENBQXdCLElBQUksa0RBQUksU0FBUyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxXQUFXLE9BQWpELEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBQyxDQUFDO1FBRWxIOzs7V0FHRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUF3QixJQUFJLCtDQUFJLFNBQVMsRUFB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LENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUVELGNBQWMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixVQUFVLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNyRSxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQzs4R0FwSFEsMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBWnZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsSUFBSSxFQUFFO3dCQUNGLGlCQUFpQixFQUFFLDZCQUE2Qjt3QkFDaEQseUJBQXlCLEVBQUUseUJBQXlCO3dCQUNwRCxvQkFBb0IsRUFBRSxVQUFVO3dCQUNoQyxzQkFBc0IsRUFBRSwrQkFBK0I7d0JBQ3ZELGFBQWEsRUFBRSx5QkFBeUI7d0JBQ3hDLFdBQVcsRUFBRSx1QkFBdUI7d0JBQ3BDLFNBQVMsRUFBRSwrQkFBK0I7cUJBQzdDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBjb21wdXRlZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBsaW5rZWRTaWduYWwsXG4gICAgUExBVEZPUk1fSURcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCB9IGZyb20gJy4vcm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBmb2N1c0ZpcnN0LCBnZW5lcmF0ZUlkLCBnZXRGb2N1c0ludGVudCwgd3JhcEFycmF5IH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmR4Um92aW5nRm9jdXNJdGVtXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2lzQ3VycmVudFRhYlN0b3AoKSA/IDAgOiAtMScsXG4gICAgICAgICdbYXR0ci5kYXRhLW9yaWVudGF0aW9uXSc6ICdyb290Q29udGV4dC5vcmllbnRhdGlvbicsXG4gICAgICAgICdbYXR0ci5kYXRhLWFjdGl2ZV0nOiAnYWN0aXZlKCknLFxuICAgICAgICAnW2F0dHIuZGF0YS1kaXNhYmxlZF0nOiAnIWZvY3VzYWJsZSgpID8gXCJcIiA6IHVuZGVmaW5lZCcsXG4gICAgICAgICcobW91c2Vkb3duKSc6ICdoYW5kbGVNb3VzZURvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAncm9vdENvbnRleHQub25JdGVtRm9jdXMoaWQoKSknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZHhSb3ZpbmdGb2N1c0l0ZW1EaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSByb290Q29udGV4dCA9IGluamVjdFJvdmluZ0ZvY3VzR3JvdXBDb250ZXh0KCkhO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBmYWxzZSwgaXRlbSB3aWxsIG5vdCBiZSBmb2N1c2FibGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgcmVhZG9ubHkgZm9jdXNhYmxlSW5wdXQgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ2ZvY3VzYWJsZScgfSk7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGB0cnVlYCwgaXRlbSB3aWxsIGJlIGluaXRpYWxseSBmb2N1c2VkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGFjdGl2ZUlucHV0ID0gaW5wdXQ8Ym9vbGVhbiwgQm9vbGVhbklucHV0Pih0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdhY3RpdmUnIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgcmVhZG9ubHkgdGFiU3RvcElkSW5wdXQgPSBpbnB1dDxzdHJpbmc+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RhYlN0b3BJZCcgfSk7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHRydWUsIHNoaWZ0ICsgYXJyb3cga2V5IHdpbGwgYWxsb3cgZm9jdXNpbmcgb24gbmV4dC9wcmV2aW91cyBpdGVtLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGFsbG93U2hpZnRLZXkgPSBpbnB1dDxib29sZWFuLCBCb29sZWFuSW5wdXQ+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGFiU3RvcElkKCkgfHwgZ2VuZXJhdGVJZCgpKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNDdXJyZW50VGFiU3RvcCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucm9vdENvbnRleHQuY3VycmVudFRhYlN0b3BJZCgpID09PSB0aGlzLmlkKCkpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvY3VzYWJsZSA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmZvY3VzYWJsZUlucHV0KCkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmUgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5hY3RpdmVJbnB1dCgpKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYlN0b3BJZCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLnRhYlN0b3BJZElucHV0KCkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnJlZ2lzdGVySXRlbSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnJvb3RDb250ZXh0Lm9uRm9jdXNhYmxlSXRlbUFkZCgpO1xuXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvb3RDb250ZXh0LnVucmVnaXN0ZXJJdGVtKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvb3RDb250ZXh0Lm9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRGb2N1c2FibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5mb2N1c2FibGUuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hY3RpdmUuc2V0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRUYWJTdG9wSWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRhYlN0b3BJZC5zZXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgaGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5mb2N1c2FibGUoKSkge1xuICAgICAgICAgICAgLy8gV2UgcHJldmVudCBmb2N1c2luZyBub24tZm9jdXNhYmxlIGl0ZW1zIG9uIGBtb3VzZWRvd25gLlxuICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIGl0ZW0gaGFzIHRhYkluZGV4PXstMX0sIHRoYXQgb25seSBtZWFucyB0YWtlIGl0IG91dCBvZiB0aGUgdGFiIG9yZGVyLlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGEgYnV0dG9uIHdoZW4gY2xpY2tlZCBzbyB3ZSBydW4gb3VyIGxvZ2ljIG9uIG1vdXNlZG93biBhbHNvXG4gICAgICAgICAgICB0aGlzLnJvb3RDb250ZXh0Lm9uSXRlbUZvY3VzKHRoaXMuaWQoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHRoZSBga2V5ZG93bmAgZXZlbnQgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gd2l0aGluIHRoZSByb3ZpbmcgZm9jdXMgZ3JvdXAuXG4gICAgICogU3VwcG9ydHMgbmF2aWdhdGlvbiBiYXNlZCBvbiBvcmllbnRhdGlvbiBhbmQgZGlyZWN0aW9uLCBhbmQgZm9jdXNlcyBhcHByb3ByaWF0ZSBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBUaGUgYEtleWJvYXJkRXZlbnRgIG9iamVjdC5cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJyAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5yb290Q29udGV4dC5vbkl0ZW1TaGlmdFRhYigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBmb2N1c0ludGVudCA9IGdldEZvY3VzSW50ZW50KGV2ZW50LCB0aGlzLnJvb3RDb250ZXh0Lm9yaWVudGF0aW9uKCksIHRoaXMucm9vdENvbnRleHQuZGlyKCkpO1xuXG4gICAgICAgIGlmIChmb2N1c0ludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSB8fCAodGhpcy5hbGxvd1NoaWZ0S2V5KCkgPyBmYWxzZSA6IGV2ZW50LnNoaWZ0S2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZU5vZGVzID0gdGhpcy5yb290Q29udGV4dC5mb2N1c2FibGVJdGVtcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRhc2V0WydkaXNhYmxlZCddICE9PSAnJyk7XG5cbiAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ2xhc3QnKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnIHx8IGZvY3VzSW50ZW50ID09PSAnbmV4dCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZU5vZGVzLmluZGV4T2YodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMgPSB0aGlzLnJvb3RDb250ZXh0Lmxvb3AoKVxuICAgICAgICAgICAgICAgICAgICA/IHdyYXBBcnJheShjYW5kaWRhdGVOb2RlcywgY3VycmVudEluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgOiBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpcnN0KGNhbmRpZGF0ZU5vZGVzLCBmYWxzZSwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { RdxRovingFocusGroupDirective } from './src/roving-focus-group.directive';\nimport { RdxRovingFocusItemDirective } from './src/roving-focus-item.directive';\nexport * from './src/roving-focus-group.directive';\nexport * from './src/roving-focus-item.directive';\nexport const rovingFocusImports = [RdxRovingFocusGroupDirective, RdxRovingFocusItemDirective];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVoRixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUM7QUFJbEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vc3JjL3JvdmluZy1mb2N1cy1ncm91cC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9zcmMvcm92aW5nLWZvY3VzLWl0ZW0uZGlyZWN0aXZlJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvcm92aW5nLWZvY3VzLWdyb3VwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9yb3ZpbmctZm9jdXMtaXRlbS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgT3JpZW50YXRpb24gfSBmcm9tICcuL3NyYy91dGlscyc7XG5cbmV4cG9ydCBjb25zdCByb3ZpbmdGb2N1c0ltcG9ydHMgPSBbUmR4Um92aW5nRm9jdXNHcm91cERpcmVjdGl2ZSwgUmR4Um92aW5nRm9jdXNJdGVtRGlyZWN0aXZlXTtcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaXgtbmctcHJpbWl0aXZlcy1yb3ZpbmctZm9jdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wcmltaXRpdmVzL3JvdmluZy1mb2N1cy9yYWRpeC1uZy1wcmltaXRpdmVzLXJvdmluZy1mb2N1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;;AAAO,MAAM,WAAW,GAAG,+BAA+B;AACnD,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;AAC1D,MAAM,uBAAuB,GAAG;AACvC,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,UAAU,EAAE,MAAM;AACtB,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,QAAQ,EAAE,MAAM;AACpB,IAAI,GAAG,EAAE;AACT,CAAC;AACM,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/C,IAAI,IAAI,GAAG,KAAK,KAAK;AACrB,QAAQ,OAAO,GAAG;AAClB,IAAI,OAAO,GAAG,KAAK,WAAW,GAAG,YAAY,GAAG,GAAG,KAAK,YAAY,GAAG,WAAW,GAAG,GAAG;AACxF;AACO,SAAS,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE;AACxD,IAAI,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AACpD,IAAI,IAAI,WAAW,KAAK,UAAU,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC/E,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,WAAW,KAAK,YAAY,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9E,QAAQ,OAAO,SAAS;AACxB,IAAI,OAAO,uBAAuB,CAAC,GAAG,CAAC;AACvC;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,aAAa,GAAG,KAAK,EAAE,QAAQ,EAAE;AACxE,IAAI,MAAM,0BAA0B,GAAG,QAAQ,EAAE,aAAa,IAAI,QAAQ,CAAC,aAAa;AACxF,IAAI,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AACxC;AACA,QAAQ,IAAI,SAAS,KAAK,0BAA0B;AACpD,YAAY;AACZ,QAAQ,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;AAC1C,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,0BAA0B;AACjE,YAAY;AACZ,IAAI;AACJ;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE;AAC7C,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9E;AACO,SAAS,UAAU,GAAG;AAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D;;ACxCA,MAAM,WAAW,GAAG,MAAM;AAC1B,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACjE,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,gBAAgB,CAAC,IAAI;AACnC,QAAQ,GAAG,EAAE,gBAAgB,CAAC,GAAG;AACjC,QAAQ,WAAW,EAAE,gBAAgB,CAAC,WAAW;AACjD,QAAQ,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;AAC3D,QAAQ,cAAc,EAAE,gBAAgB,CAAC,cAAc;AACvD,QAAQ,WAAW,EAAE,CAAC,SAAS,KAAK;AACpC,YAAY,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,MAAM;AAC9B,YAAY,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AACvD,QAAQ,CAAC;AACT,QAAQ,kBAAkB,EAAE,MAAM;AAClC,YAAY,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC;AACT,QAAQ,qBAAqB,EAAE,MAAM;AACrC,YAAY,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1F,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,CAAC,IAAI,KAAK;AAChC,YAAY,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,EAAE;AAClE,YAAY,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,CAAC;AACT,QAAQ,cAAc,EAAE,CAAC,IAAI,KAAK;AAClC,YAAY,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,EAAE;AAClE,YAAY,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;AACzF,QAAQ;AACR,KAAK;AACL,CAAC;AACW,MAAC,CAAC,6BAA6B,EAAE,8BAA8B,CAAC,GAAG,aAAa,CAAC,yBAAyB;AACtH;AACA;AACA;AACO,MAAM,4BAA4B,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;AAC5J;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACrH;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAClL;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACrL;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzH;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9H,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AACzD,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACzC,QAAQ,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzG,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAC3C,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxG,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1G,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,SAAS,EAAE;AACvD,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC1D,gBAAgB,IAAI,GAAG,KAAK,SAAS,EAAE;AACvC,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD,gBAAgB;AAChB,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;AAC3B,YAAY;AACZ;AACA,QAAQ,qBAAqB,CAAC,MAAM;AACpC,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB;AACA;AACA;AACA;AACA,QAAQ,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE;AACpD,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa;AACjE,YAAY,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;AAChD,YAAY,eAAe;AAC3B,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACtC,YAAY,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC;AAC/E,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;AACxE,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,YAAY,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE;AACnD,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACrG,gBAAgB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC;AACpG,gBAAgB,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC1G,gBAAgB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7F,gBAAgB,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3G,gBAAgB,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAC5E,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,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,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,kBAAkB,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,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,yBAAyB,EAAE,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,UAAU,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,uBAAuB,EAAE,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,6BAA6B,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAAE,UAAU,EAAE,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EAAE,4DAA4D,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/kD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACtI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,uBAAuB;AACrD,oBAAoB,SAAS,EAAE,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;AAC5E,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,yBAAyB,EAAE,eAAe;AAClE,wBAAwB,iBAAiB,EAAE,4DAA4D;AACvG,wBAAwB,YAAY,EAAE,OAAO;AAC7C,wBAAwB,SAAS,EAAE,qBAAqB;AACxD,wBAAwB,QAAQ,EAAE,6BAA6B;AAC/D,wBAAwB,WAAW,EAAE,iBAAiB;AACtD,wBAAwB,aAAa,EAAE,wBAAwB;AAC/D,wBAAwB,KAAK,EAAE;AAC/B;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;ACzJvC;AACA;AACA;AACO,MAAM,2BAA2B,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,WAAW,GAAG,6BAA6B,EAAE;AAC1D;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACtM;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1L;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACjJ;AACA;AACA;AACA;AACA,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,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/G,QAAQ,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5J,QAAQ,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtH,QAAQ,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7G,QAAQ,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtH,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACxE,YAAY,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;AACjD,YAAY,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;AAC5C,gBAAgB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC9E,gBAAgB,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;AACxD,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,IAAI;AACJ,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,IAAI;AACJ,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AAC/B;AACA;AACA,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,QAAQ;AACR,aAAa;AACb;AACA,YAAY,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACnD,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;AACnD,YAAY,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1D,YAAY;AACZ,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AACzG,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE;AACvC,YAAY,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE;AACnH,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACpH,YAAY,IAAI,WAAW,KAAK,MAAM,EAAE;AACxC,gBAAgB,cAAc,CAAC,OAAO,EAAE;AACxC,YAAY;AACZ,iBAAiB,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE;AACvE,gBAAgB,IAAI,WAAW,KAAK,MAAM;AAC1C,oBAAoB,cAAc,CAAC,OAAO,EAAE;AAC5C,gBAAgB,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC1F,gBAAgB,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI;AACtD,sBAAsB,SAAS,CAAC,cAAc,EAAE,YAAY,GAAG,CAAC;AAChE,sBAAsB,cAAc,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5D,YAAY;AACZ,YAAY,cAAc,CAAC,MAAM;AACjC,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE;AACpC,oBAAoB,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACpF,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,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,2BAA2B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,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,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAO,EAAE,+BAA+B,EAAE,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9lC;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,sBAAsB;AACpD,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,iBAAiB,EAAE,6BAA6B;AACxE,wBAAwB,yBAAyB,EAAE,yBAAyB;AAC5E,wBAAwB,oBAAoB,EAAE,UAAU;AACxD,wBAAwB,sBAAsB,EAAE,+BAA+B;AAC/E,wBAAwB,aAAa,EAAE,yBAAyB;AAChE,wBAAwB,WAAW,EAAE,uBAAuB;AAC5D,wBAAwB,SAAS,EAAE;AACnC;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;ACxH3B,MAAC,kBAAkB,GAAG,CAAC,4BAA4B,EAAE,2BAA2B;;ACJ5F;AACA;AACA;;;;"}
1
+ {"version":3,"file":"radix-ng-primitives-roving-focus.mjs","sources":["../../../packages/primitives/roving-focus/src/utils.ts","../../../packages/primitives/roving-focus/src/roving-focus-group.directive.ts","../../../packages/primitives/roving-focus/src/roving-focus-item.directive.ts","../../../packages/primitives/roving-focus/index.ts","../../../packages/primitives/roving-focus/radix-ng-primitives-roving-focus.ts"],"sourcesContent":["export type Orientation = 'horizontal' | 'vertical';\nexport type Direction = 'ltr' | 'rtl';\n\nexport const ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nexport const EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nexport const MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev',\n ArrowUp: 'prev',\n ArrowRight: 'next',\n ArrowDown: 'next',\n PageUp: 'first',\n Home: 'first',\n PageDown: 'last',\n End: 'last'\n};\n\nexport function getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\nexport function getFocusIntent(event: KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nexport function focusFirst(candidates: HTMLElement[], preventScroll = false, rootNode?: Document | ShadowRoot) {\n const PREVIOUSLY_FOCUSED_ELEMENT = rootNode?.activeElement ?? document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\nexport function generateId(): string {\n return `rf-item-${Math.random().toString(36).slice(2, 11)}`;\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output,\n PLATFORM_ID,\n signal\n} from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport { Direction, ENTRY_FOCUS, EVENT_OPTIONS, focusFirst, Orientation } from './utils';\n\nconst rootContext = () => {\n const rovingFocusGroup = inject(RdxRovingFocusGroupDirective);\n return {\n loop: rovingFocusGroup.loop,\n dir: rovingFocusGroup.dir,\n orientation: rovingFocusGroup.orientation,\n currentTabStopId: rovingFocusGroup.currentTabStopId,\n focusableItems: rovingFocusGroup.focusableItems,\n onItemFocus: (tabStopId: string) => {\n rovingFocusGroup.currentTabStopId.set(tabStopId);\n },\n onItemShiftTab: () => {\n rovingFocusGroup.isTabbingBackOut.set(true);\n },\n onFocusableItemAdd: () => {\n rovingFocusGroup.focusableItemsCount.update((count) => count + 1);\n },\n onFocusableItemRemove: () => {\n rovingFocusGroup.focusableItemsCount.update((count) => Math.max(0, count - 1));\n },\n registerItem: (item: HTMLElement) => {\n const currentItems = rovingFocusGroup.focusableItems();\n rovingFocusGroup.focusableItems.set([...currentItems, item]);\n },\n unregisterItem: (item: HTMLElement) => {\n const currentItems = rovingFocusGroup.focusableItems();\n rovingFocusGroup.focusableItems.set(currentItems.filter((el) => el !== item));\n }\n };\n};\n\nexport type RovingFocusGroupContext = ReturnType<typeof rootContext>;\n\nexport const [injectRovingFocusGroupContext, provideRovingFocusGroupContext] =\n createContext<RovingFocusGroupContext>('RovingFocusGroupContext');\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxRovingFocusGroup]',\n providers: [provideRovingFocusGroupContext(rootContext)],\n host: {\n '[attr.data-orientation]': 'orientation()',\n '[attr.tabindex]': 'isTabbingBackOut() || focusableItemsCount() === 0 ? -1 : 0',\n '[attr.dir]': 'dir()',\n '(focus)': 'handleFocus($event)',\n '(blur)': 'isTabbingBackOut.set(false)',\n '(mouseup)': 'handleMouseUp()',\n '(mousedown)': 'isClickFocus.set(true)',\n style: 'outline: none;'\n }\n})\nexport class RdxRovingFocusGroupDirective {\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly elementRef = inject(ElementRef);\n\n /**\n * The orientation of the group. Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n readonly orientationInput = input<Orientation>('horizontal', { alias: 'orientation' });\n\n /**\n * The direction of navigation between items.\n */\n readonly dirInput = input<Direction>('ltr', { alias: 'dir' });\n\n /**\n * Whether keyboard navigation should loop around\n */\n readonly loopInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'loop' });\n\n /**\n * When `true`, will prevent scrolling to the focus item when focused.\n * @group Props\n */\n readonly preventScrollOnEntryFocus = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The value of the current stop item.\n *\n * Use when you do not need to control the state of the stop item.\n * @group Props\n */\n readonly defaultCurrentTabStopId = input<string | undefined>(undefined);\n\n /**\n * The controlled value of the current stop item. Can be binded as `model`.\n * @group Props\n */\n readonly currentTabStopId = model<string | undefined>(undefined);\n\n /**\n * Event handler called when container is being focused. Can be prevented.\n * @group Emits\n */\n readonly entryFocus = output<Event>();\n\n private readonly _orientation = linkedSignal(() => this.orientationInput());\n readonly orientation = this._orientation.asReadonly();\n\n private readonly _dir = linkedSignal(() => this.dirInput());\n readonly dir = this._dir.asReadonly();\n\n private readonly _loop = linkedSignal(() => this.loopInput());\n readonly loop = this._loop.asReadonly();\n\n readonly focusableItems = signal<HTMLElement[]>([]);\n protected readonly isClickFocus = signal(false);\n readonly isTabbingBackOut = signal(false);\n readonly focusableItemsCount = signal(0);\n\n constructor() {\n effect(() => {\n if (this.currentTabStopId() === undefined) {\n const def = this.defaultCurrentTabStopId();\n if (def !== undefined) {\n this.currentTabStopId.set(def);\n }\n }\n });\n }\n\n setOrientation(value: Orientation) {\n this._orientation.set(value);\n }\n\n setDir(value: Direction) {\n this._dir.set(value);\n }\n\n setLoop(value: boolean) {\n this._loop.set(value);\n }\n\n /** @ignore */\n handleMouseUp() {\n if (!this.isBrowser) return;\n\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n requestAnimationFrame(() => {\n this.isClickFocus.set(false);\n });\n }\n\n /** @ignore */\n handleFocus(event: Event) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !this.isClickFocus();\n\n if (\n event.currentTarget === this.elementRef.nativeElement &&\n event.target === event.currentTarget &&\n isKeyboardFocus &&\n !this.isTabbingBackOut()\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);\n this.entryFocus.emit(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');\n const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');\n const highlightedItem = items.find((item) => item.getAttribute('data-highlighted') === '');\n const currentItem = items.find((item) => item.id === this.currentTabStopId());\n\n const candidateItems = [activeItem, highlightedItem, currentItem, ...items].filter(\n Boolean\n ) as typeof items;\n\n focusFirst(candidateItems, this.preventScrollOnEntryFocus());\n }\n }\n\n this.isClickFocus.set(false);\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n PLATFORM_ID\n} from '@angular/core';\nimport { injectRovingFocusGroupContext } from './roving-focus-group.directive';\nimport { focusFirst, generateId, getFocusIntent, wrapArray } from './utils';\n\n/**\n * @group Components\n */\n@Directive({\n selector: '[rdxRovingFocusItem]',\n host: {\n '[attr.tabindex]': 'isCurrentTabStop() ? 0 : -1',\n '[attr.data-orientation]': 'rootContext.orientation',\n '[attr.data-active]': 'active()',\n '[attr.data-disabled]': '!focusable() ? \"\" : undefined',\n '(mousedown)': 'handleMouseDown($event)',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'rootContext.onItemFocus(id())'\n }\n})\nexport class RdxRovingFocusItemDirective {\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n\n protected readonly rootContext = injectRovingFocusGroupContext()!;\n\n /**\n * When false, item will not be focusable.\n * @group Props\n */\n readonly focusableInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'focusable' });\n\n /**\n * When `true`, item will be initially focused.\n * @group Props\n */\n readonly activeInput = input<boolean, BooleanInput>(true, { transform: booleanAttribute, alias: 'active' });\n\n /**\n * @group Props\n */\n readonly tabStopIdInput = input<string>(undefined, { alias: 'tabStopId' });\n\n /**\n * When true, shift + arrow key will allow focusing on next/previous item.\n * @group Props\n */\n readonly allowShiftKey = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n protected readonly id = computed(() => this.tabStopId() || generateId());\n protected readonly isCurrentTabStop = computed(() => this.rootContext.currentTabStopId() === this.id());\n\n protected readonly focusable = linkedSignal(() => this.focusableInput());\n protected readonly active = linkedSignal(() => this.activeInput());\n private readonly tabStopId = linkedSignal(() => this.tabStopIdInput());\n\n constructor() {\n if (this.focusable()) {\n this.rootContext.registerItem(this.elementRef.nativeElement);\n this.rootContext.onFocusableItemAdd();\n\n this.destroyRef.onDestroy(() => {\n this.rootContext.unregisterItem(this.elementRef.nativeElement);\n this.rootContext.onFocusableItemRemove();\n });\n }\n }\n\n setFocusable(value: boolean) {\n this.focusable.set(value);\n }\n\n setActive(value: boolean) {\n this.active.set(value);\n }\n\n setTabStopId(value: string) {\n this.tabStopId.set(value);\n }\n\n /** @ignore */\n handleMouseDown(event: Event) {\n if (!this.focusable()) {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n event.preventDefault();\n } else {\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n this.rootContext.onItemFocus(this.id());\n }\n }\n\n /**\n * Handles the `keydown` event for keyboard navigation within the roving focus group.\n * Supports navigation based on orientation and direction, and focuses appropriate elements.\n *\n * @param event The `KeyboardEvent` object.\n * @ignore\n */\n handleKeydown(event: Event) {\n const keyEvent = event as KeyboardEvent;\n if (keyEvent.key === 'Tab' && keyEvent.shiftKey) {\n this.rootContext.onItemShiftTab();\n return;\n }\n\n if (event.target !== this.elementRef.nativeElement) return;\n\n const focusIntent = getFocusIntent(keyEvent, this.rootContext.orientation(), this.rootContext.dir());\n\n if (focusIntent !== undefined) {\n if (\n keyEvent.metaKey ||\n keyEvent.ctrlKey ||\n keyEvent.altKey ||\n (this.allowShiftKey() ? false : keyEvent.shiftKey)\n ) {\n return;\n }\n\n event.preventDefault();\n\n let candidateNodes = this.rootContext.focusableItems().filter((item) => item.dataset['disabled'] !== '');\n\n if (focusIntent === 'last') {\n candidateNodes.reverse();\n } else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(this.elementRef.nativeElement);\n\n candidateNodes = this.rootContext.loop()\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n queueMicrotask(() => {\n if (this.isBrowser) {\n focusFirst(candidateNodes, false, this.elementRef.nativeElement);\n }\n });\n }\n }\n}\n","import { RdxRovingFocusGroupDirective } from './src/roving-focus-group.directive';\nimport { RdxRovingFocusItemDirective } from './src/roving-focus-item.directive';\n\nexport * from './src/roving-focus-group.directive';\nexport * from './src/roving-focus-item.directive';\n\nexport { focusFirst } from './src/utils';\nexport type { Direction, Orientation } from './src/utils';\n\nexport const rovingFocusImports = [RdxRovingFocusGroupDirective, RdxRovingFocusItemDirective];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}