@fundamental-ngx/core 0.63.2-rc.4 → 0.63.2-rc.6

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 (201) hide show
  1. package/fesm2022/fundamental-ngx-core-action-bar.mjs +27 -26
  2. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +25 -22
  4. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +35 -31
  6. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +52 -43
  8. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-avatar.mjs +67 -43
  10. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-bar.mjs +50 -41
  12. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +18 -14
  14. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +34 -23
  16. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-button.mjs +56 -37
  18. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-calendar.mjs +87 -62
  20. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-card.mjs +264 -188
  22. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-carousel.mjs +35 -26
  24. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-checkbox.mjs +7 -7
  26. package/fesm2022/fundamental-ngx-core-combobox.mjs +19 -18
  27. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  28. package/fesm2022/fundamental-ngx-core-content-density.mjs +46 -36
  29. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  30. package/fesm2022/fundamental-ngx-core-date-picker.mjs +13 -13
  31. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  32. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +15 -14
  33. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  34. package/fesm2022/fundamental-ngx-core-datetime.mjs +32 -31
  35. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  36. package/fesm2022/fundamental-ngx-core-dialog.mjs +116 -89
  37. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  38. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +100 -77
  39. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  40. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
  41. package/fesm2022/fundamental-ngx-core-facets.mjs +24 -20
  42. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-feed-input.mjs +18 -17
  44. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +22 -22
  46. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +16 -16
  47. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +17 -15
  48. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
  50. package/fesm2022/fundamental-ngx-core-form.mjs +74 -74
  51. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-core-formatted-text.mjs +17 -12
  53. package/fesm2022/fundamental-ngx-core-formatted-text.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +19 -13
  55. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-grid-list.mjs +56 -51
  57. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-core-icon.mjs +33 -20
  59. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  60. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +42 -31
  61. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs +11 -9
  63. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-core-info-label.mjs +29 -18
  65. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-inline-help.mjs +35 -25
  67. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
  69. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +40 -27
  71. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +41 -37
  73. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-core-link.mjs +24 -19
  75. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-core-list.mjs +100 -91
  77. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-core-menu.mjs +125 -101
  79. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-core-message-box.mjs +39 -38
  81. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-core-message-page.mjs +19 -19
  83. package/fesm2022/fundamental-ngx-core-message-strip.mjs +79 -55
  84. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-message-toast.mjs +17 -17
  86. package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +21 -20
  88. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +3 -3
  90. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +98 -66
  91. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-core-multi-input.mjs +27 -21
  93. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-core-nested-list.mjs +46 -43
  95. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-notification.mjs +178 -132
  97. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  98. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +7 -7
  99. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +24 -17
  100. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-object-marker.mjs +41 -24
  102. package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-object-number.mjs +33 -21
  104. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-object-status.mjs +41 -26
  106. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +33 -32
  108. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-pagination.mjs +10 -10
  110. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-panel.mjs +51 -35
  112. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-popover.mjs +267 -164
  114. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-product-switch.mjs +46 -32
  116. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +7 -7
  118. package/fesm2022/fundamental-ngx-core-quick-view.mjs +47 -44
  119. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  120. package/fesm2022/fundamental-ngx-core-radio.mjs +8 -8
  121. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  122. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +61 -39
  123. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  124. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +12 -11
  125. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  126. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs +17 -12
  127. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
  128. package/fesm2022/fundamental-ngx-core-scrollbar.mjs +14 -12
  129. package/fesm2022/fundamental-ngx-core-scrollbar.mjs.map +1 -1
  130. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +9 -8
  131. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  132. package/fesm2022/fundamental-ngx-core-select.mjs +22 -21
  133. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  134. package/fesm2022/fundamental-ngx-core-settings.mjs +70 -60
  135. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  136. package/fesm2022/fundamental-ngx-core-shared.mjs +3 -3
  137. package/fesm2022/fundamental-ngx-core-shellbar.mjs +77 -63
  138. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +13 -13
  140. package/fesm2022/fundamental-ngx-core-skeleton.mjs +24 -16
  141. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  142. package/fesm2022/fundamental-ngx-core-slider.mjs +15 -13
  143. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  144. package/fesm2022/fundamental-ngx-core-split-button.mjs +10 -10
  145. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +62 -35
  146. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-core-step-input.mjs +11 -9
  148. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-switch.mjs +8 -8
  150. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-table.mjs +51 -50
  152. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-tabs.mjs +56 -55
  154. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-text.mjs +29 -19
  156. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-theming.mjs +7 -7
  158. package/fesm2022/fundamental-ngx-core-tile.mjs +171 -136
  159. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  160. package/fesm2022/fundamental-ngx-core-time-picker.mjs +9 -8
  161. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  162. package/fesm2022/fundamental-ngx-core-time.mjs +16 -13
  163. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  164. package/fesm2022/fundamental-ngx-core-timeline.mjs +43 -43
  165. package/fesm2022/fundamental-ngx-core-title.mjs +12 -10
  166. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-token.mjs +33 -24
  168. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-toolbar.mjs +35 -32
  170. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-tree.mjs +41 -36
  172. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +37 -37
  174. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-user-menu.mjs +108 -84
  176. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +20 -17
  178. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-wizard.mjs +41 -32
  180. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core.mjs +4 -4
  182. package/package.json +11 -10
  183. package/schematics/add-styles/index.js +3 -3
  184. package/schematics/add-styles/index.js.map +1 -1
  185. package/schematics/add-theming/index.js +1 -1
  186. package/schematics/add-theming/index.js.map +1 -1
  187. package/schematics/package.json +7 -0
  188. package/schematics/tsconfig.json +12 -6
  189. package/schematics/tsconfig.spec.json +2 -0
  190. package/schematics/utils/calls-providers-function.js +34 -1
  191. package/schematics/utils/calls-providers-function.js.map +1 -1
  192. package/schematics/utils/ng-module-utils.js +34 -1
  193. package/schematics/utils/ng-module-utils.js.map +1 -1
  194. package/types/fundamental-ngx-core-avatar-group-legacy.d.ts +1 -0
  195. package/types/fundamental-ngx-core-carousel.d.ts +2 -0
  196. package/types/fundamental-ngx-core-list.d.ts +2 -2
  197. package/types/fundamental-ngx-core-menu.d.ts +4 -4
  198. package/types/fundamental-ngx-core-notification.d.ts +0 -2
  199. package/types/fundamental-ngx-core-popover.d.ts +8 -6
  200. package/types/fundamental-ngx-core-product-switch.d.ts +6 -3
  201. package/types/fundamental-ngx-core-wizard.d.ts +4 -1
@@ -23,15 +23,15 @@ class OverflowExpandDirective {
23
23
  static ngTemplateContextGuard(dir, ctx) {
24
24
  return true;
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowExpandDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
27
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowExpandDirective, isStandalone: true, selector: "[fdOverflowExpand]", inputs: { fdOverflowExpandItems: "fdOverflowExpandItems" }, providers: [
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowExpandDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
27
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowExpandDirective, isStandalone: true, selector: "[fdOverflowExpand]", inputs: { fdOverflowExpandItems: "fdOverflowExpandItems" }, providers: [
28
28
  {
29
29
  provide: FD_OVERFLOW_EXPAND,
30
30
  useExisting: OverflowExpandDirective
31
31
  }
32
32
  ], ngImport: i0 }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowExpandDirective, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowExpandDirective, decorators: [{
35
35
  type: Directive,
36
36
  args: [{
37
37
  selector: '[fdOverflowExpand]',
@@ -84,10 +84,10 @@ class OverflowItemContainerRefDirective {
84
84
  ngOnDestroy() {
85
85
  this._viewRef?.destroy();
86
86
  }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowItemContainerRefDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
88
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowItemContainerRefDirective, isStandalone: true, selector: "[fdOverflowItemContainerRef]", ngImport: i0 }); }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowItemContainerRefDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
88
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowItemContainerRefDirective, isStandalone: true, selector: "[fdOverflowItemContainerRef]", ngImport: i0 }); }
89
89
  }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowItemContainerRefDirective, decorators: [{
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowItemContainerRefDirective, decorators: [{
91
91
  type: Directive,
92
92
  args: [{
93
93
  selector: '[fdOverflowItemContainerRef]',
@@ -142,15 +142,15 @@ class OverflowItemRefDirective {
142
142
  setOverflowItem(item) {
143
143
  this.overflowItem = item;
144
144
  }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowItemRefDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
146
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowItemRefDirective, isStandalone: true, selector: "[fdOverflowItemRef]", inputs: { item: ["fdOverflowItemRef", "item"] }, providers: [
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowItemRefDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
146
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowItemRefDirective, isStandalone: true, selector: "[fdOverflowItemRef]", inputs: { item: ["fdOverflowItemRef", "item"] }, providers: [
147
147
  {
148
148
  provide: FD_OVERFLOW_ITEM_REF,
149
149
  useExisting: OverflowItemRefDirective
150
150
  }
151
151
  ], ngImport: i0 }); }
152
152
  }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowItemRefDirective, decorators: [{
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowItemRefDirective, decorators: [{
154
154
  type: Directive,
155
155
  args: [{
156
156
  selector: '[fdOverflowItemRef]',
@@ -186,10 +186,10 @@ class OverflowLayoutItemContainerDirective {
186
186
  /** @hidden */
187
187
  this._initialClass = 'fd-overflow-layout__item';
188
188
  }
189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutItemContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
190
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowLayoutItemContainerDirective, isStandalone: true, selector: "[fdOverflowLayoutItemContainer]", inputs: { last: "last", first: "first", softHidden: "softHidden" }, host: { properties: { "class.fd-overflow-layout__item--last": "this.last", "class.fd-overflow-layout__item--first": "this.first", "class.fd-overflow-layout__item--soft-hidden": "this.softHidden", "class": "this._initialClass" } }, queries: [{ propertyName: "containerRef", first: true, predicate: OverflowItemContainerRefDirective, descendants: true }], ngImport: i0 }); }
189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutItemContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
190
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowLayoutItemContainerDirective, isStandalone: true, selector: "[fdOverflowLayoutItemContainer]", inputs: { last: "last", first: "first", softHidden: "softHidden" }, host: { properties: { "class.fd-overflow-layout__item--last": "this.last", "class.fd-overflow-layout__item--first": "this.first", "class.fd-overflow-layout__item--soft-hidden": "this.softHidden", "class": "this._initialClass" } }, queries: [{ propertyName: "containerRef", first: true, predicate: OverflowItemContainerRefDirective, descendants: true }], ngImport: i0 }); }
191
191
  }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutItemContainerDirective, decorators: [{
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutItemContainerDirective, decorators: [{
193
193
  type: Directive,
194
194
  args: [{
195
195
  selector: '[fdOverflowLayoutItemContainer]',
@@ -246,7 +246,8 @@ class OverflowLayoutPopoverContentDirective {
246
246
  /** @hidden */
247
247
  this._initialClass = 'fd-overflow-layout__popover-container';
248
248
  /** @hidden */
249
- this._dir = computed(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'), ...(ngDevMode ? [{ debugName: "_dir" }] : []));
249
+ this._dir = computed(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'), /* @ts-ignore */
250
+ ...(ngDevMode ? [{ debugName: "_dir" }] : /* istanbul ignore next */ []));
250
251
  /** @hidden */
251
252
  this._rtlService = inject(RtlService, { optional: true });
252
253
  this._overflowContainer?.registerPopoverContent(this);
@@ -278,10 +279,10 @@ class OverflowLayoutPopoverContentDirective {
278
279
  ngOnDestroy() {
279
280
  this._keyboardEventsManager?.destroy();
280
281
  }
281
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutPopoverContentDirective, deps: [{ token: FD_OVERFLOW_CONTAINER }], target: i0.ɵɵFactoryTarget.Directive }); }
282
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowLayoutPopoverContentDirective, isStandalone: true, selector: "[fdOverflowLayoutPopoverContent]", inputs: { items: "items" }, host: { listeners: { "keyup": "keyUpHandler($event)" }, properties: { "class": "this._initialClass" } }, ngImport: i0 }); }
282
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutPopoverContentDirective, deps: [{ token: FD_OVERFLOW_CONTAINER }], target: i0.ɵɵFactoryTarget.Directive }); }
283
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowLayoutPopoverContentDirective, isStandalone: true, selector: "[fdOverflowLayoutPopoverContent]", inputs: { items: "items" }, host: { listeners: { "keyup": "keyUpHandler($event)" }, properties: { "class": "this._initialClass" } }, ngImport: i0 }); }
283
284
  }
284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutPopoverContentDirective, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutPopoverContentDirective, decorators: [{
285
286
  type: Directive,
286
287
  args: [{
287
288
  selector: '[fdOverflowLayoutPopoverContent]',
@@ -508,10 +509,10 @@ class OverflowLayoutService {
508
509
  });
509
510
  })));
510
511
  }
511
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutService, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
512
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutService }); }
512
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutService, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
513
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutService }); }
513
514
  }
514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutService, decorators: [{
515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutService, decorators: [{
515
516
  type: Injectable
516
517
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
517
518
 
@@ -715,8 +716,8 @@ class OverflowLayoutComponent {
715
716
  .withVerticalOrientation()
716
717
  .skipPredicate((item) => !item.navigable || item.hidden);
717
718
  }
718
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: OverflowLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
719
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: OverflowLayoutComponent, isStandalone: true, selector: "fd-overflow-layout", inputs: { maxVisibleItems: "maxVisibleItems", navigationTrigger: "navigationTrigger", showMorePosition: "showMorePosition", renderShowMoreButton: ["renderShowMoreButton", "renderShowMoreButton", booleanAttribute], reverseHiddenItems: "reverseHiddenItems", enableKeyboardNavigation: "enableKeyboardNavigation", ariaRole: "ariaRole", moreItemsButtonText: "moreItemsButtonText" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount", hiddenItemsChange: "hiddenItemsChange" }, host: { properties: { "class": "this._initialClass" } }, providers: [
719
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: OverflowLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
720
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: OverflowLayoutComponent, isStandalone: true, selector: "fd-overflow-layout", inputs: { maxVisibleItems: "maxVisibleItems", navigationTrigger: "navigationTrigger", showMorePosition: "showMorePosition", renderShowMoreButton: ["renderShowMoreButton", "renderShowMoreButton", booleanAttribute], reverseHiddenItems: "reverseHiddenItems", enableKeyboardNavigation: "enableKeyboardNavigation", ariaRole: "ariaRole", moreItemsButtonText: "moreItemsButtonText" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount", hiddenItemsChange: "hiddenItemsChange" }, host: { properties: { "class": "this._initialClass" } }, providers: [
720
721
  {
721
722
  provide: FD_OVERFLOW_CONTAINER,
722
723
  useExisting: OverflowLayoutComponent
@@ -724,7 +725,7 @@ class OverflowLayoutComponent {
724
725
  OverflowLayoutService
725
726
  ], queries: [{ propertyName: "_moreButton", first: true, predicate: FD_OVERFLOW_EXPAND, descendants: true }, { propertyName: "_items", predicate: FD_OVERFLOW_ITEM_REF, descendants: true }, { propertyName: "_focusableOverflowItems", predicate: FD_OVERFLOW_FOCUSABLE_ITEM, descendants: true }], viewQueries: [{ propertyName: "_itemsWrapper", first: true, predicate: ["itemsWrapper"], descendants: true }, { propertyName: "_layoutContainer", first: true, predicate: ["layoutContainer"], descendants: true }, { propertyName: "_showMoreContainer", first: true, predicate: ["showMoreContainer"], descendants: true }, { propertyName: "_visibleItems", predicate: OverflowLayoutItemContainerDirective, descendants: true }], ngImport: i0, template: "@if (renderShowMoreButton && showMorePosition === 'left') {\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n}\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper [attr.role]=\"ariaRole\">\n @for (item of _allItems; track item.templateRef) {\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n [attr.role]=\"ariaRole === 'list' ? 'listitem' : null\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n }\n </div>\n </div>\n</div>\n@if (renderShowMoreButton && showMorePosition === 'right') {\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n}\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'inline-flex' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ ('coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length })() }}\n </button>\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n @for (item of _hiddenItems; track item) {\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n }\n </div>\n </ng-template>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".fd-overflow-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout:before,.fd-overflow-layout:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout{display:flex;align-items:center;width:100%;justify-content:space-between}.fd-overflow-layout__items{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout__items:before,.fd-overflow-layout__items:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items{display:flex;align-items:center;display:inline-flex}.fd-overflow-layout__more{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout__more:before,.fd-overflow-layout__more:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__more{display:flex;align-items:center;flex-shrink:0}.fd-overflow-layout__more .fd-breadcrumb__item{margin-block-start:.1875rem}.fd-overflow-layout__items-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout__items-container:before,.fd-overflow-layout__items-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-container{position:relative}.fd-overflow-layout__items-wrapper{display:inline-flex}.fd-overflow-layout__popover-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout__popover-container:before,.fd-overflow-layout__popover-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__popover-container{display:block;white-space:normal;max-width:19.5rem}.fd-overflow-layout__item--soft-hidden{opacity:0!important;position:absolute!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: OverflowLayoutItemContainerDirective, selector: "[fdOverflowLayoutItemContainer]", inputs: ["last", "first", "softHidden"] }, { kind: "directive", type: OverflowItemContainerRefDirective, selector: "[fdOverflowItemContainerRef]" }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "bodyAriaLabel", "bodyRole", "bodyAriaLabelledBy", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "directive", type: PopoverBodyDirective, selector: "[fdPopoverBody]" }, { kind: "directive", type: OverflowLayoutPopoverContentDirective, selector: "[fdOverflowLayoutPopoverContent]", inputs: ["items"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
726
727
  }
727
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutComponent, decorators: [{
728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutComponent, decorators: [{
728
729
  type: Component,
729
730
  args: [{ selector: 'fd-overflow-layout', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
730
731
  {
@@ -827,15 +828,15 @@ class OverflowLayoutFocusableItemDirective {
827
828
  focus() {
828
829
  this.elementRef.nativeElement.focus();
829
830
  }
830
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutFocusableItemDirective, deps: [{ token: OverflowLayoutComponent }, { token: FD_OVERFLOW_ITEM, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
831
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowLayoutFocusableItemDirective, isStandalone: true, selector: "[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]", inputs: { focusable: "focusable", navigable: "navigable" }, host: { listeners: { "focus": "_onFocus()" }, properties: { "attr.tabindex": "this._tabindex" } }, providers: [
831
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutFocusableItemDirective, deps: [{ token: OverflowLayoutComponent }, { token: FD_OVERFLOW_ITEM, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
832
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowLayoutFocusableItemDirective, isStandalone: true, selector: "[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]", inputs: { focusable: "focusable", navigable: "navigable" }, host: { listeners: { "focus": "_onFocus()" }, properties: { "attr.tabindex": "this._tabindex" } }, providers: [
832
833
  {
833
834
  provide: FD_OVERFLOW_FOCUSABLE_ITEM,
834
835
  useExisting: OverflowLayoutFocusableItemDirective
835
836
  }
836
837
  ], ngImport: i0 }); }
837
838
  }
838
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutFocusableItemDirective, decorators: [{
839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutFocusableItemDirective, decorators: [{
839
840
  type: Directive,
840
841
  args: [{
841
842
  selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',
@@ -910,15 +911,15 @@ class OverflowLayoutItemDirective {
910
911
  this._overflowItemRef?.setElementRef(this.elmRef);
911
912
  this._overflowItemRef?.setOverflowItem(this);
912
913
  }
913
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
914
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: OverflowLayoutItemDirective, isStandalone: true, selector: "[fdOverflowLayoutItem]", inputs: { forceVisibility: "forceVisibility" }, outputs: { hiddenChange: "hiddenChange" }, providers: [
914
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
915
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: OverflowLayoutItemDirective, isStandalone: true, selector: "[fdOverflowLayoutItem]", inputs: { forceVisibility: "forceVisibility" }, outputs: { hiddenChange: "hiddenChange" }, providers: [
915
916
  {
916
917
  provide: FD_OVERFLOW_ITEM,
917
918
  useExisting: OverflowLayoutItemDirective
918
919
  }
919
920
  ], ngImport: i0 }); }
920
921
  }
921
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutItemDirective, decorators: [{
922
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutItemDirective, decorators: [{
922
923
  type: Directive,
923
924
  args: [{
924
925
  selector: '[fdOverflowLayoutItem]',
@@ -948,8 +949,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
948
949
  OverflowLayoutFocusableItemDirective
949
950
  */
950
951
  class OverflowLayoutModule {
951
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
952
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutModule, imports: [OverflowLayoutComponent,
952
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
953
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutModule, imports: [OverflowLayoutComponent,
953
954
  OverflowItemRefDirective,
954
955
  OverflowExpandDirective,
955
956
  OverflowLayoutItemDirective,
@@ -964,9 +965,9 @@ class OverflowLayoutModule {
964
965
  OverflowLayoutPopoverContentDirective,
965
966
  OverflowLayoutItemContainerDirective,
966
967
  OverflowLayoutFocusableItemDirective] }); }
967
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutModule, imports: [OverflowLayoutComponent] }); }
968
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutModule, imports: [OverflowLayoutComponent] }); }
968
969
  }
969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: OverflowLayoutModule, decorators: [{
970
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OverflowLayoutModule, decorators: [{
970
971
  type: NgModule,
971
972
  args: [{
972
973
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../libs/core/overflow-layout/tokens/overflow-expand.token.ts","../../../../libs/core/overflow-layout/directives/overflow-expand.directive.ts","../../../../libs/core/overflow-layout/directives/overflow-item-container-ref.directive.ts","../../../../libs/core/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../libs/core/overflow-layout/directives/overflow-item-ref.directive.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-item-container.directive.ts","../../../../libs/core/overflow-layout/tokens/overflow-container.token.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-popover-content.directive.ts","../../../../libs/core/overflow-layout/overflow-layout.service.ts","../../../../libs/core/overflow-layout/tokens/overflow-focusable-item.token.ts","../../../../libs/core/overflow-layout/overflow-layout.component.ts","../../../../libs/core/overflow-layout/overflow-layout.component.html","../../../../libs/core/overflow-layout/tokens/overflow-item.token.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-focusable-item.directive.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-item.directive.ts","../../../../libs/core/overflow-layout/overflow-layout.module.ts","../../../../libs/core/overflow-layout/fundamental-ngx-core-overflow-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { OverflowExpand, OverflowExpandDirectiveContext } from '../interfaces/overflow-expand.interface';\nimport { FD_OVERFLOW_EXPAND } from '../tokens/overflow-expand.token';\n\n/**\n * Structural directive which is responsible for rendering the \"More\" button and handling further logic.\n */\n@Directive({\n selector: '[fdOverflowExpand]',\n providers: [\n {\n provide: FD_OVERFLOW_EXPAND,\n useExisting: OverflowExpandDirective\n }\n ],\n standalone: true\n})\nexport class OverflowExpandDirective<T extends any[] = any[]> implements OverflowExpand<T> {\n /** Items to expand */\n @Input()\n fdOverflowExpandItems: T;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowExpandDirectiveContext<T>>) {}\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowExpandDirective,\n ctx: OverflowExpandDirectiveContext\n ): ctx is OverflowExpandDirectiveContext {\n return true;\n }\n}\n","import { Directive, OnDestroy, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';\n\n/**\n * Directive to hide component without actual destroying of the component instance.\n */\n@Directive({\n selector: '[fdOverflowItemContainerRef]',\n standalone: true\n})\nexport class OverflowItemContainerRefDirective implements OnDestroy {\n /** @hidden */\n private _viewRef: ViewRef;\n\n /** @hidden */\n private _detached = false;\n\n /** @hidden */\n private _hidden = false;\n\n /**\n * Shows or hides element without destroying the view itself.\n * @param value\n */\n set hidden(value: boolean) {\n if (this._hidden === value) {\n return;\n }\n this._hidden = value;\n if (value && !this._detached) {\n this._viewRef = this._viewContainerRef.detach()!;\n this._detached = true;\n } else if (!value && this._viewRef && !this._viewRef.destroyed && this._detached) {\n this._viewRef = this._viewContainerRef.insert(this._viewRef);\n this._detached = false;\n }\n }\n\n /** @hidden */\n constructor(\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef\n ) {\n // Create embedded view right away and manipulate its visibility later.\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewRef?.destroy();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\n\nexport const FD_OVERFLOW_ITEM_REF = new InjectionToken<OverflowItemRef>('OverflowLayoutItemRef');\n","import { Directive, ElementRef, inject, INJECTOR, Input, TemplateRef } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { OverflowItemDirectiveContext, OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\n\n/**\n * Structural directive which is used to pass the context of the item to the template engine.\n */\n@Directive({\n selector: '[fdOverflowItemRef]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM_REF,\n useExisting: OverflowItemRefDirective\n }\n ],\n standalone: true\n})\nexport class OverflowItemRefDirective<T = any> implements OverflowItemRef<T>, HasElementRef {\n /** Item instance. Used for correct autocomplete. */\n @Input('fdOverflowItemRef')\n item: T;\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this._hidden = value;\n this.overflowItem.hiddenChange.emit(value);\n }\n\n get hidden(): boolean {\n return this._hidden;\n }\n\n /** @hidden */\n _hidden = false;\n\n /** Index of the item in the visible or hidden array of Overflow Layout Component's items. */\n index: number;\n\n /**\n * The index of the item in the array of items.\n */\n globalIndex: number;\n\n /** Whether this item is last in the array. */\n first: boolean;\n\n /** Whether this item is first in the array. */\n last: boolean;\n\n /** Whether the item is softly hidden. */\n softHidden = true;\n\n /** @hidden */\n readonly injector = inject(INJECTOR);\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext<T>>) {}\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /**\n * Sets the element reference of the `fdOverflowLayoutItem` directive.`\n * @param elmRef\n */\n setElementRef(elmRef: ElementRef): void {\n if (this.elementRef) {\n return;\n }\n this.elementRef = elmRef;\n }\n\n /**\n * Sets the `fdOverflowLayoutItem` directive.\n * @param item\n */\n setOverflowItem(item: OverflowItem): void {\n this.overflowItem = item;\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]',\n standalone: true\n})\nexport class OverflowLayoutItemContainerDirective {\n /**\n * Whether this item is the first one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--last')\n last = false;\n\n /**\n * Whether this item is the last one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--first')\n first = false;\n\n /**\n * Whether this item is softly hidden. Used during free space calculation without flickering of the items.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--soft-hidden')\n softHidden = true;\n\n /**\n * Container reference.\n */\n @ContentChild(OverflowItemContainerRefDirective)\n containerRef: OverflowItemContainerRefDirective;\n\n /** @hidden */\n @HostBinding('class')\n protected readonly _initialClass = 'fd-overflow-layout__item';\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\n\nexport const FD_OVERFLOW_CONTAINER = new InjectionToken<OverflowContainer>('FdOverflowContainer');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Directive,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n computed,\n effect,\n inject\n} from '@angular/core';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { FD_OVERFLOW_CONTAINER } from '../tokens/overflow-container.token';\n\n/**\n * Directive to wrap Overlay Layout \"More\" popover content.\n * Used to apply keyboard navigation through the items.\n */\n@Directive({\n selector: '[fdOverflowLayoutPopoverContent]',\n standalone: true\n})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent, OnDestroy {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n // Need to set items with a delay so that elementRef of the focusable item would refresh.\n setTimeout(() => {\n this._items = value;\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(\n this._items\n .filter((item) => item.overflowItem.focusableItem?.focusable)\n .map((item) => item.overflowItem.focusableItem)\n )\n .withWrap()\n .withHorizontalOrientation(this._dir());\n });\n }\n\n /** @hidden */\n @HostBinding('class')\n protected readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n private readonly _dir = computed<'ltr' | 'rtl'>(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(@Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer) {\n this._overflowContainer?.registerPopoverContent(this);\n\n effect(() => {\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir());\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._items.findIndex((item) => item.overflowItem.elmRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager, so we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n }\n\n /**\n * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager?.setActiveItem(0);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject, Subscription, debounceTime, distinctUntilChanged, filter, skip } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\n\nexport interface OverflowLayoutConfig {\n items: OverflowItemRef[];\n focusableItems: OverflowLayoutFocusableItem[];\n visibleItems: OverflowLayoutItemContainerDirective[];\n itemsWrapper: HTMLElement;\n showMoreContainer?: HTMLElement;\n layoutContainerElement: HTMLElement;\n maxVisibleItems: number;\n direction: 'left' | 'right';\n enableKeyboardNavigation: boolean;\n reverseHiddenItems: boolean;\n}\n\nexport class OverflowLayoutListeningResult {\n /** Whether to show more button */\n showMore = false;\n\n /** Overflow item s */\n items: OverflowItemRef[] = [];\n\n /** Hidden overflow items */\n hiddenItems: OverflowItemRef[] = [];\n\n /** Visible overflow items */\n visibleItems: OverflowItemRef[] = [];\n}\n\n@Injectable()\nexport class OverflowLayoutService implements OnDestroy {\n /**\n * Overflow Layout config.\n */\n config: OverflowLayoutConfig;\n\n /**\n * Overflow Layout calculation result.\n */\n result = new OverflowLayoutListeningResult();\n\n /** @hidden */\n private _listenToItemResize = true;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _detectChanges$ = new Subject<void>();\n\n /** @hidden */\n private _result$ = new Subject<OverflowLayoutListeningResult>();\n\n /**\n * Observable which emits when changes detection is required.\n */\n get detectChanges(): Observable<void> {\n return this._detectChanges$.asObservable();\n }\n\n /**\n * Observable which emits when new calculation result is available.\n */\n get onResult(): Observable<OverflowLayoutListeningResult> {\n return this._result$.asObservable();\n }\n\n /** @hidden */\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n startListening(config: OverflowLayoutConfig): void {\n this.setConfig(config);\n this.fitVisibleItems();\n this._listenToSizeChanges(this._elRef.nativeElement, this.config.itemsWrapper);\n }\n\n /** @hidden */\n setConfig(config: OverflowLayoutConfig): void {\n this.config = config;\n }\n\n /**\n * Calculates available space for items and hides items that are not fitting into the container.\n */\n fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this.config.items;\n\n let allItems = [...this.config.items];\n let visibleContainerItems = [...this.config.visibleItems];\n\n this._elRef.nativeElement.style.height = `${this._elRef.nativeElement.clientHeight}px`;\n\n allItems.forEach((item, index) => {\n // Softly hide previously completely hidden item in order to correctly calculate it's size.\n item.softHidden = true;\n item.hidden = false;\n item.index = index;\n item.first = index === 0;\n item.last = index === allItems.length - 1;\n item.globalIndex = index;\n visibleContainerItems[index].containerRef.hidden = false;\n });\n\n this._detectChanges$.next();\n\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n visibleContainerItems =\n this.config.direction === 'right' ? visibleContainerItems : visibleContainerItems.reverse();\n\n this.result.showMore = false;\n this._emitResult();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = allItems.reduce(\n (total, item) => total + (this._getElementWidth(item.elementRef.nativeElement) || 0),\n 0\n );\n\n if (\n containerWidth >= itemsContainerWidth &&\n this.config.visibleItems.length <= this.config.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n // Make all items fully visible.\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n this.result.showMore = false;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._listenToItemResize = true;\n this._elRef.nativeElement.style.height = '';\n return;\n }\n this.result.showMore = true;\n this._emitResult();\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n\n const showMoreContainerWidth = Math.ceil(\n this.config.showMoreContainer ? this._getElementWidth(this.config.showMoreContainer) : 0\n );\n let layoutWidth = containerWidth - showMoreContainerWidth;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this.config.visibleItems[itemIndex];\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\n\n const maxVisibleItems =\n this.config.maxVisibleItems -\n forcedItemsIndexes.filter((index) => index >= this.config.maxVisibleItems).length;\n\n if (layoutWidth < 0 && forcedItemsIndexes.length > 0) {\n console.warn(\n 'There is no enough space to fit all forced visible items into the container. Please adjust their visibility accordingly.'\n );\n }\n\n this._detectChanges$.next();\n\n visibleContainerItems.forEach((item, index) => {\n const itemRef = allItems[index];\n // If item is forced to be visible, just display the item since it's size calculation was already taken care of in previous iteration.\n if (itemRef.overflowItem.forceVisibility) {\n return;\n }\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n item.softHidden = false;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n const condition =\n (combinedWidth <= layoutWidth ||\n (item === this.config.visibleItems[this.config.visibleItems.length - 1] &&\n combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < maxVisibleItems;\n\n if (condition) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.softHidden = false;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n // Reverse original order back.\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n\n let hiddenItems = allItems.filter((i) => i.hidden);\n hiddenItems = this.config.reverseHiddenItems ? hiddenItems.reverse() : hiddenItems;\n const visibleItems = allItems.filter((i) => !i.hidden);\n\n visibleItems.forEach((item, index) => {\n item.index = index;\n item.first = index === 0;\n item.last = index === visibleItems.length - 1;\n });\n\n this._hiddenItems = hiddenItems.map((item, index) => {\n item.first = index === 0;\n item.last = index === hiddenItems.length - 1;\n item.index = index;\n return item;\n });\n\n this.result.showMore = this._hiddenItems.length > 0;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._elRef.nativeElement.style.height = '';\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _getForcedItemsIndexes(): number[] {\n return this._allItems\n .map((item, index) => (item.overflowItem.forceVisibility ? index : -1))\n .filter((i) => i > -1);\n }\n\n /**\n * @hidden\n * Returns combined width of the element including margins.\n * @param element Element to calculate width of.\n */\n private _getElementWidth(element: HTMLElement): number {\n const elementStyle = getComputedStyle(element);\n const elementWidth = element.getBoundingClientRect().width;\n const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);\n\n return Math.ceil(elementSize);\n }\n\n /** @hidden */\n private _emitResult(): void {\n this._result$.next(this.result);\n }\n\n /** @hidden */\n private _listenToSizeChanges(...elements: HTMLElement[]): void {\n elements.forEach((element) =>\n this._subscription.add(\n resizeObservable(element)\n .pipe(\n skip(1),\n filter(() => this._listenToItemResize),\n distinctUntilChanged(),\n debounceTime(30)\n )\n .subscribe(() => {\n setTimeout(() => {\n this.fitVisibleItems();\n });\n })\n )\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\n\nexport const FD_OVERFLOW_FOCUSABLE_ITEM = new InjectionToken<OverflowLayoutFocusableItem>(\n 'FdOverflowLayoutFocusableItem'\n);\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n effect,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n untracked,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { PopoverBodyDirective, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { debounceTime, filter, fromEvent, startWith, Subject, Subscription } from 'rxjs';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { OverflowLayoutConfig, OverflowLayoutService } from './overflow-layout.service';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\n\n@Component({\n selector: 'fd-overflow-layout',\n templateUrl: './overflow-layout.component.html',\n styleUrl: './overflow-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_OVERFLOW_CONTAINER,\n useExisting: OverflowLayoutComponent\n },\n OverflowLayoutService\n ],\n imports: [\n NgTemplateOutlet,\n OverflowLayoutItemContainerDirective,\n OverflowItemContainerRefDirective,\n PopoverComponent,\n PopoverControlComponent,\n ButtonComponent,\n PopoverBodyDirective,\n OverflowLayoutPopoverContentDirective,\n FdTranslatePipe\n ]\n})\nexport class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {\n /**\n * Maximum amount of visible items.\n */\n @Input()\n set maxVisibleItems(value: number) {\n if (value === this._maxVisibleItems) {\n return;\n }\n this._maxVisibleItems = value;\n this.triggerRecalculation();\n }\n\n get maxVisibleItems(): number {\n return this._maxVisibleItems;\n }\n\n /**\n * Keyboard event to listen for keyboard navigation through items.\n */\n @Input()\n navigationTrigger: 'keyup' | 'keydown' = 'keyup';\n\n /** Direction of the fitting items calculation. */\n @Input()\n showMorePosition: 'left' | 'right' = 'right';\n\n /** Whether the show more button should be rendered */\n @Input({ transform: booleanAttribute })\n renderShowMoreButton = true;\n\n /** Whether to render hidden items in reverse order. */\n @Input()\n reverseHiddenItems = false;\n\n /** Whether to enable keyboard navigation. */\n @Input()\n enableKeyboardNavigation = true;\n\n /** Aria role of the overflow layout. */\n @Input()\n ariaRole: string;\n\n /**\n * Event, triggered when amount of visible items has been changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when amount of hidden items has been changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when hidden items have been changed.\n */\n @Output()\n hiddenItemsChange = new EventEmitter<OverflowItemRef[]>();\n\n /**\n * @hidden\n * List of items to display.\n */\n @ContentChildren(FD_OVERFLOW_ITEM_REF, { descendants: true })\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: Nullable<OverflowExpand>;\n\n /**\n * @hidden\n * List of items that can be focused\n */\n @ContentChildren(FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true })\n _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;\n\n /**\n * @hidden\n * List of rendered items.\n */\n @ViewChildren(OverflowLayoutItemContainerDirective)\n _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;\n\n /**\n * @hidden\n * Items wrapper directive.\n */\n @ViewChild('itemsWrapper')\n _itemsWrapper: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Layout container element.\n */\n @ViewChild('layoutContainer')\n _layoutContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @hidden\n * \"More\" button container element.\n */\n @ViewChild('showMoreContainer')\n _showMoreContainer: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @HostBinding('class')\n readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _showMore = false;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _overflowPopoverContent: OverflowPopoverContent;\n\n /** @hidden */\n private _fillTrigger$ = new Subject<void>();\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n private _canListenToResize = false;\n\n /** @hidden */\n private _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** @hidden */\n private readonly _rtl = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n protected _cdr: ChangeDetectorRef,\n protected _overflowLayoutService: OverflowLayoutService\n ) {\n this._subscription.add(\n this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => {\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n // React to RTL changes for keyboard navigation\n effect(() => {\n if (!this._rtl || !this.enableKeyboardNavigation) {\n return;\n }\n\n const isRtl = this._rtl.rtl();\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n // Use untracked to avoid tracking _keyboardEventsManager\n untracked(() => {\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir);\n });\n });\n }\n\n /** Overflow Layout more button text */\n @Input()\n moreItemsButtonText: (hiddenItemsCount: number) => string = (count) => `${count} more`;\n\n /** @hidden */\n private get _config(): OverflowLayoutConfig {\n return {\n visibleItems: this._visibleItems.toArray(),\n items: this._items.toArray(),\n focusableItems: this._focusableOverflowItems.toArray(),\n itemsWrapper: this._itemsWrapper.nativeElement,\n showMoreContainer: this._showMoreContainer?.nativeElement,\n layoutContainerElement: this._layoutContainer.nativeElement,\n maxVisibleItems: this.maxVisibleItems,\n direction: this.showMorePosition,\n enableKeyboardNavigation: this.enableKeyboardNavigation,\n reverseHiddenItems: this.reverseHiddenItems\n };\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setupKeyboardListener();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscription.add(\n this._overflowLayoutService.detectChanges.subscribe(() => {\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._overflowLayoutService.onResult.subscribe((result) => {\n this._hiddenItems = result.hiddenItems;\n this._showMore = result.showMore;\n\n this.hiddenItemsChange.emit(result.hiddenItems);\n this.hiddenItemsCount.emit(result.hiddenItems.length);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._items.changes.pipe(startWith(() => this._items)).subscribe(() => {\n this._allItems = this._items.toArray();\n\n this._cdr.detectChanges();\n\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n this._setFocusKeyManager();\n\n // Set up resize observers immediately after view init\n Promise.resolve().then(() => {\n this._overflowLayoutService.startListening(this._config);\n this._canListenToResize = true;\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = null;\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n if (!this._canListenToResize) {\n return;\n }\n\n this._fillTrigger$.next();\n }\n\n /**\n * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowLayoutFocusableItem): void {\n const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);\n\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n /**\n * Registers popover content directive for main component.\n * @param content {OverflowPopoverContent} directive\n */\n registerPopoverContent(content: OverflowPopoverContent): void {\n this._overflowPopoverContent = content;\n }\n\n /** @hidden */\n _onPopoverStateChange(opened: boolean): void {\n if (opened) {\n this._overflowPopoverContent?.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _setupKeyboardListener(): void {\n this._subscription.add(\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, this.navigationTrigger)\n .pipe(filter(() => this.enableKeyboardNavigation))\n .subscribe((event) => {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._focusableOverflowItems\n .toArray()\n .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager so, we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n })\n );\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n this._dir = this._rtl?.rtl() ? 'rtl' : 'ltr';\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this._focusableOverflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .withVerticalOrientation()\n .skipPredicate((item) => !item.navigable || item.hidden);\n }\n}\n","@if (renderShowMoreButton && showMorePosition === 'left') {\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n}\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper [attr.role]=\"ariaRole\">\n @for (item of _allItems; track item.templateRef) {\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n [attr.role]=\"ariaRole === 'list' ? 'listitem' : null\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n }\n </div>\n </div>\n</div>\n@if (renderShowMoreButton && showMorePosition === 'right') {\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n}\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'inline-flex' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ ('coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length })() }}\n </button>\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n @for (item of _hiddenItems; track item) {\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n }\n </div>\n </ng-template>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\n","import { Directive, ElementRef, HostBinding, HostListener, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from '../tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n@Directive({\n selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',\n providers: [\n {\n provide: FD_OVERFLOW_FOCUSABLE_ITEM,\n useExisting: OverflowLayoutFocusableItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutFocusableItemDirective implements OverflowLayoutFocusableItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = true;\n\n /** Whether the item should be navigable via keyboard. */\n @Input()\n navigable = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n protected get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** Whether the item is hidden. */\n get hidden(): boolean {\n return !!this._overflowItem?.hidden;\n }\n\n /** @hidden */\n constructor(\n private readonly _overflowContainer: OverflowLayoutComponent,\n @Inject(FD_OVERFLOW_ITEM) @Optional() private readonly _overflowItem: OverflowItem,\n public readonly elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** @hidden */\n @HostListener('focus')\n protected _onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this._overflowItem) {\n this._overflowItem.focusableItem = this;\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n/**\n * Directive to mark element as part of for Overflow Layout Component items.\n */\n@Directive({\n selector: '[fdOverflowLayoutItem]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM,\n useExisting: OverflowLayoutItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether to force the visibility of the item. */\n @Input()\n set forceVisibility(value: boolean) {\n if (value === this._forceVisibility) {\n return;\n }\n\n this._forceVisibility = value;\n this._overflowContainer.triggerRecalculation();\n }\n\n get forceVisibility(): boolean {\n return this._forceVisibility;\n }\n\n /**\n * Event emitted when `hidden` property has been changed.\n */\n @Output()\n hiddenChange = new EventEmitter<boolean>();\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /**\n * Focusable item for keyboard navigation.\n */\n focusableItem: OverflowLayoutFocusableItem;\n\n /** Reference to the element */\n elmRef = inject(ElementRef);\n\n /** @hidden */\n protected _overflowItemRef: OverflowItemRef | null = inject(FD_OVERFLOW_ITEM_REF, {\n optional: true,\n skipSelf: true\n });\n /** @hidden */\n private _forceVisibility = false;\n /** @hidden */\n private _overflowContainer = inject(OverflowLayoutComponent);\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\n\n/**\n * @deprecated\n * Use direct imports of OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n */\n@NgModule({\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OverflowLayoutService"],"mappings":";;;;;;;;;;;MAGa,kBAAkB,GAAG,IAAI,cAAc,CAAiB,wBAAwB;;ACC7F;;AAEG;MAWU,uBAAuB,CAAA;;AAMhC,IAAA,WAAA,CAAmB,WAA2D,EAAA;QAA3D,IAAA,CAAA,WAAW,GAAX,WAAW;IAAmD;;AAGjF,IAAA,OAAO,sBAAsB,CACzB,GAA4B,EAC5B,GAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI;IACf;8GAdS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EARrB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;;ACjBL;;AAEG;MAKU,iCAAiC,CAAA;AAU1C;;;AAGG;IACH,IAAI,MAAM,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YACxB;QACJ;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAG;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACzB;AAAO,aAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9E,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B;IACJ;;IAGA,WAAA,CACY,YAA8B,EAC9B,iBAAmC,EAAA;QADnC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;;QA1BrB,IAAA,CAAA,SAAS,GAAG,KAAK;;QAGjB,IAAA,CAAA,OAAO,GAAG,KAAK;;QA0BnB,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;IAChE;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;IAC5B;8GAxCS,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCLY,oBAAoB,GAAG,IAAI,cAAc,CAAkB,uBAAuB;;ACG/F;;AAEG;MAWU,wBAAwB,CAAA;AAajC;;AAEG;IACH,IAAI,MAAM,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9C;AAEA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;IACvB;;AA0BA,IAAA,WAAA,CAAmB,WAAyD,EAAA;QAAzD,IAAA,CAAA,WAAW,GAAX,WAAW;;QAvB9B,IAAA,CAAA,OAAO,GAAG,KAAK;;QAiBf,IAAA,CAAA,UAAU,GAAG,IAAI;;AAGR,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAG2C;;AAG/E,IAAA,OAAO,sBAAsB,CACzB,GAA6B,EAC7B,GAAiC,EAAA;AAEjC,QAAA,OAAO,IAAI;IACf;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,MAAkB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB;QACJ;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;IAC5B;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,IAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC5B;8GA5ES,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EARtB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,oBAAoB;AAC7B,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,oBAAoB;AAC7B,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI,KAAK;uBAAC,mBAAmB;;;MCdjB,oCAAoC,CAAA;;AAiC7C,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;AAhC7B;;AAEG;QAGH,IAAA,CAAA,IAAI,GAAG,KAAK;AAEZ;;AAEG;QAGH,IAAA,CAAA,KAAK,GAAG,KAAK;AAEb;;AAEG;QAGH,IAAA,CAAA,UAAU,GAAG,IAAI;;QAUE,IAAA,CAAA,aAAa,GAAG,0BAA0B;IAGjB;8GAjCnC,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,gbAyB/B,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAzBtC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAJhD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAKI;;sBACA,WAAW;uBAAC,sCAAsC;;sBAMlD;;sBACA,WAAW;uBAAC,uCAAuC;;sBAMnD;;sBACA,WAAW;uBAAC,6CAA6C;;sBAMzD,YAAY;uBAAC,iCAAiC;;sBAI9C,WAAW;uBAAC,OAAO;;;MCjCX,qBAAqB,GAAG,IAAI,cAAc,CAAoB,qBAAqB;;ACiBhG;;;AAGG;MAKU,qCAAqC,CAAA;AAC9C;;AAEG;IACH,IACI,KAAK,CAAC,KAAwB,EAAA;;QAE9B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;YACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAC7C,IAAI,CAAC;AACA,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS;AAC3D,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAElD,iBAAA,QAAQ;AACR,iBAAA,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;;AAmBA,IAAA,WAAA,CAAmD,kBAAqC,EAAA;QAArC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;;QAflD,IAAA,CAAA,aAAa,GAAG,uCAAuC;;QASzD,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAgB,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;QAG/E,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAIjE,QAAA,IAAI,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,IAAI,CAAC;QAErD,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACrG,QAAA,CAAC,CAAC;IACN;;AAIA,IAAA,YAAY,CAAC,KAAoB,EAAA;QAC7B,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC;AACtG,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,KAAK,CAAC;YACrD;QACJ;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE;YAC3E,KAAK,CAAC,cAAc,EAAE;;AAGtB,YAAA,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAAK,CAAC;QACjD;IACJ;AAEA;;AAEG;IACH,yBAAyB,GAAA;AACrB,QAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC;IACjD;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;IAC1C;AAzES,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,kBAqC1B,qBAAqB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGArChC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAJjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAsCgB,MAAM;2BAAC,qBAAqB;;sBAjCxC;;sBAiBA,WAAW;uBAAC,OAAO;;sBAyBnB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCtDxB,6BAA6B,CAAA;AAA1C,IAAA,WAAA,GAAA;;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAGhB,IAAA,CAAA,KAAK,GAAsB,EAAE;;QAG7B,IAAA,CAAA,WAAW,GAAsB,EAAE;;QAGnC,IAAA,CAAA,YAAY,GAAsB,EAAE;IACxC;AAAC;MAGY,qBAAqB,CAAA;AA6B9B;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC9C;AAEA;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;IACvC;;AAGA,IAAA,WAAA,CAAoB,MAA+B,EAAA;QAA/B,IAAA,CAAA,MAAM,GAAN,MAAM;AAtC1B;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,6BAA6B,EAAE;;QAGpC,IAAA,CAAA,mBAAmB,GAAG,IAAI;;AAGjB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;;QAG3C,IAAA,CAAA,SAAS,GAAsB,EAAE;;QAGjC,IAAA,CAAA,YAAY,GAAsB,EAAE;;AAGpC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;;AAGrC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAiC;IAiBT;;IAGtD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IACpC;;AAGA,IAAA,cAAc,CAAC,MAA4B,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACtB,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAClF;;AAGA,IAAA,SAAS,CAAC,MAA4B,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACxB;AAEA;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAElC,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAEzD,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,IAAI;QAEtF,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AAE7B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;AACzC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;YACxB,qBAAqB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK;AAC5D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAE3B,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE;QAC5E,qBAAqB;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,GAAG,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,EAAE;AAE/F,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK;QAC5B,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAC9E,QAAA,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CACvC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACpF,CAAC,CACJ;QAED,IACI,cAAc,IAAI,mBAAmB;YACrC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe;AAC9D,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAChC;;AAEE,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3B,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK;YAC5B,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;YAC3C,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAC3C;QACJ;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI;QAC3B,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,eAAe,GAAG,CAAC;QACvB,IAAI,gBAAgB,GAAG,CAAC;QACxB,IAAI,eAAe,GAAG,KAAK;AAE3B,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACpC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAC3F;AACD,QAAA,IAAI,WAAW,GAAG,cAAc,GAAG,sBAAsB;;AAGzD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAExD,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;YACrD,IAAI,CAAC,SAAS,EAAE;gBACZ;YACJ;AACA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC;YAE7E,WAAW,IAAI,WAAW;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,eAAe,GACjB,IAAI,CAAC,MAAM,CAAC,eAAe;AAC3B,YAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM;QAErF,IAAI,WAAW,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CACR,0HAA0H,CAC7H;QACL;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QAE3B,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC1C,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;;AAE/B,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;gBACtC;YACJ;YACA,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;AAC1D,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI;AAC/B,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI;gBACrB;YACJ;AAEA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACxE,YAAA,MAAM,aAAa,GAAG,gBAAgB,GAAG,WAAW;AAEpD,YAAA,MAAM,SAAS,GACX,CAAC,aAAa,IAAI,WAAW;AACzB,iBAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACnE,oBAAA,aAAa,IAAI,WAAW,GAAG,sBAAsB,CAAC;gBAC9D,eAAe,GAAG,eAAe;YAErC,IAAI,SAAS,EAAE;gBACX,gBAAgB,IAAI,WAAW;AAC/B,gBAAA,eAAe,EAAE;YACrB;AAAO,iBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;gBAC9C,eAAe,GAAG,IAAI;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI;AAC/B,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI;YACzB;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE;AAE5E,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAClD,QAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,WAAW;AAClF,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAEtD,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACjC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC;AACjD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAChD,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,OAAO,IAAI;AACf,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;QAC3C,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;AAE3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACnC;;IAGQ,sBAAsB,GAAA;QAC1B,OAAO,IAAI,CAAC;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;aACrE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B;AAEA;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,OAAoB,EAAA;AACzC,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAC1D,QAAA,MAAM,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;AAE7G,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC;;IAGQ,WAAW,GAAA;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC;;IAGQ,oBAAoB,CAAC,GAAG,QAAuB,EAAA;AACnD,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,gBAAgB,CAAC,OAAO;aACnB,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,EACtC,oBAAoB,EAAE,EACtB,YAAY,CAAC,EAAE,CAAC;aAEnB,SAAS,CAAC,MAAK;YACZ,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,eAAe,EAAE;AAC1B,YAAA,CAAC,CAAC;QACN,CAAC,CAAC,CACT,CACJ;IACL;8GApQS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;AC/BM,MAAM,0BAA0B,GAAG,IAAI,cAAc,CACxD,+BAA+B,CAClC;;MCiEY,uBAAuB,CAAA;AAChC;;AAEG;IACH,IACI,eAAe,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjC;QACJ;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,CAAC,oBAAoB,EAAE;IAC/B;AAEA,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;IAChC;;AAqIA,IAAA,WAAA,CACqB,WAAoC,EAC3C,IAAuB,EACvB,sBAA6C,EAAA;QAFtC,IAAA,CAAA,WAAW,GAAX,WAAW;QAClB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;AAtIpC;;AAEG;QAEH,IAAA,CAAA,iBAAiB,GAAwB,OAAO;;QAIhD,IAAA,CAAA,gBAAgB,GAAqB,OAAO;;QAI5C,IAAA,CAAA,oBAAoB,GAAG,IAAI;;QAI3B,IAAA,CAAA,kBAAkB,GAAG,KAAK;;QAI1B,IAAA,CAAA,wBAAwB,GAAG,IAAI;AAM/B;;AAEG;AAEH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAE9C;;AAEG;AAEH,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAE7C;;AAEG;AAEH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAqB;;QAqDhD,IAAA,CAAA,aAAa,GAAG,oBAAoB;;QAG7C,IAAA,CAAA,SAAS,GAAsB,EAAE;;QAGjC,IAAA,CAAA,YAAY,GAAsB,EAAE;;QAGpC,IAAA,CAAA,SAAS,GAAG,KAAK;;AAGA,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;;AAM3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;;QAGnC,IAAA,CAAA,gBAAgB,GAAG,QAAQ;;QAG3B,IAAA,CAAA,kBAAkB,GAAG,KAAK;;QAG1B,IAAA,CAAA,IAAI,GAAkB,KAAK;;QAMlB,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAiC9D,IAAA,CAAA,mBAAmB,GAAyC,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO;QAzBlF,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACrD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACnD,YAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;QACjD,CAAC,CAAC,CACL;;QAGD,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAC9C;YACJ;YAEA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;;YAGjC,SAAS,CAAC,MAAK;AACX,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;AACnG,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;;AAOA,IAAA,IAAY,OAAO,GAAA;QACf,OAAO;AACH,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC1C,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5B,YAAA,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;AACtD,YAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;AAC9C,YAAA,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa;AACzD,YAAA,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa;YAC3D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,kBAAkB,EAAE,IAAI,CAAC;SAC5B;IACL;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QAC7B,CAAC,CAAC,CACL;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACtD,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW;AACtC,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ;YAEhC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAE3E,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QAC7B,CAAC,CAAC,CACL;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAEtC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAEzB,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AACnD,YAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;QACjD,CAAC,CAAC,CACL;QAED,IAAI,CAAC,mBAAmB,EAAE;;AAG1B,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAClC,QAAA,CAAC,CAAC;IACN;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAChC,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;IACtC;AAEA;;AAEG;IACH,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B;QACJ;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC7B;AAEA;;;AAGG;AACH,IAAA,iBAAiB,CAAC,OAAoC,EAAA;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC;AAE1F,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,KAAK,CAAC;QACrD;IACJ;AAEA;;;AAGG;AACH,IAAA,sBAAsB,CAAC,OAA+B,EAAA;AAClD,QAAA,IAAI,CAAC,uBAAuB,GAAG,OAAO;IAC1C;;AAGA,IAAA,qBAAqB,CAAC,MAAe,EAAA;QACjC,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,uBAAuB,EAAE,yBAAyB,EAAE;QAC7D;IACJ;;IAGQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAClB,SAAS,CAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB;aAC1E,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC;AAChD,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACjB,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAC/B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC;AACd,qBAAA,OAAO;qBACP,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC;AAC1F,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,KAAK,CAAC;gBACrD;YACJ;AAEA,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE;gBAC3E,KAAK,CAAC,cAAc,EAAE;;AAGtB,gBAAA,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAAK,CAAC;YACjD;QACJ,CAAC,CAAC,CACT;IACL;;IAGQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC;QACJ;AACA,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK;AAC5C,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,uBAAuB;AACzE,aAAA,QAAQ;AACR,aAAA,yBAAyB,CAAC,IAAI,CAAC,IAAI;AACnC,aAAA,uBAAuB;AACvB,aAAA,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;IAChE;8GApUS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EA4BZ,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EA/CzB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,WAAW,EAAE;AAChB,aAAA;YACD;SACH,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAqFa,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAPf,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,SAAA,EAcpB,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAO7B,oCAAoC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5JtD,08GA2EA,EAAA,MAAA,EAAA,CAAA,0uEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oCAAoC,qHACpC,iCAAiC,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,uBAAuB,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,qCAAqC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACrC,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGV,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzBnC,SAAS;+BACI,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAA;AACd,yBAAA;wBACD;qBACH,EAAA,OAAA,EACQ;wBACL,gBAAgB;wBAChB,oCAAoC;wBACpC,iCAAiC;wBACjC,gBAAgB;wBAChB,uBAAuB;wBACvB,eAAe;wBACf,oBAAoB;wBACpB,qCAAqC;wBACrC;AACH,qBAAA,EAAA,QAAA,EAAA,08GAAA,EAAA,MAAA,EAAA,CAAA,0uEAAA,CAAA,EAAA;;sBAMA;;sBAgBA;;sBAIA;;sBAIA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAIrC;;sBAIA;;sBAIA;;sBAMA;;sBAMA;;sBAMA;;sBAOA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAO3D,YAAY;uBAAC,kBAAkB;;sBAO/B,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAOjE,YAAY;uBAAC,oCAAoC;;sBAOjD,SAAS;uBAAC,cAAc;;sBAOxB,SAAS;uBAAC,iBAAiB;;sBAO3B,SAAS;uBAAC,mBAAmB;;sBAI7B,WAAW;uBAAC,OAAO;;sBAkEnB;;;MEpPQ,gBAAgB,GAAG,IAAI,cAAc,CAAe,gBAAgB;;MCcpE,oCAAoC,CAAA;;AAU7C,IAAA,IACc,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC;;AAGA,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM;IACvC;;AAGA,IAAA,WAAA,CACqB,kBAA2C,EACL,aAA2B,EAClE,UAAmC,EAAA;QAFlC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QACoB,IAAA,CAAA,aAAa,GAAb,aAAa;QACpD,IAAA,CAAA,UAAU,GAAV,UAAU;;QArB9B,IAAA,CAAA,SAAS,GAAG,IAAI;;QAIhB,IAAA,CAAA,SAAS,GAAG,IAAI;IAkBb;;IAIO,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACnD;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI;QAC3C;IACJ;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;AA3CS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oCAAoC,sDAuBjC,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvBnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oEAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EARlC;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAVhD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oEAAoE;AAC9E,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,0BAA0B;AACnC,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAwBQ,MAAM;2BAAC,gBAAgB;;0BAAG;;sBArB9B;;sBAIA;;sBAIA,WAAW;uBAAC,eAAe;;sBAkB3B,YAAY;uBAAC,OAAO;;;ACrCzB;;AAEG;MAWU,2BAA2B,CAAA;AAVxC,IAAA,WAAA,GAAA;AA0BI;;AAEG;AAEH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;;AAkB1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGjB,QAAA,IAAA,CAAA,gBAAgB,GAA2B,MAAM,CAAC,oBAAoB,EAAE;AAC9E,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE;AACb,SAAA,CAAC;;QAEM,IAAA,CAAA,gBAAgB,GAAG,KAAK;;AAExB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAO/D,IAAA;;IArDG,IACI,eAAe,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjC;QACJ;AAEA,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE;IAClD;AAEA,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;IAChC;AAQA;;AAEG;IACH,IAAI,MAAM,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;AACA,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI;IACjD;;IAqBA,QAAQ,GAAA;QACJ,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,IAAI,CAAC;IAChD;8GAtDS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EARzB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBAiBA;;;AC9BL;;;;;;;;;;AAUG;MAuBU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YApBzB,uBAAuB;YACvB,wBAAwB;YACxB,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,qCAAqC;YACrC,oCAAoC;AACpC,YAAA,oCAAoC,aAGpC,uBAAuB;YACvB,wBAAwB;YACxB,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,qCAAqC;YACrC,oCAAoC;YACpC,oCAAoC,CAAA,EAAA,CAAA,CAAA;AAG/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YApBzB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAoBlB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,uBAAuB;wBACvB,wBAAwB;wBACxB,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,qCAAqC;wBACrC,oCAAoC;wBACpC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,uBAAuB;wBACvB,wBAAwB;wBACxB,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,qCAAqC;wBACrC,oCAAoC;wBACpC;AACH;AACJ,iBAAA;;;AC1CD;;AAEG;;;;"}
1
+ {"version":3,"file":"fundamental-ngx-core-overflow-layout.mjs","sources":["../../../../libs/core/overflow-layout/tokens/overflow-expand.token.ts","../../../../libs/core/overflow-layout/directives/overflow-expand.directive.ts","../../../../libs/core/overflow-layout/directives/overflow-item-container-ref.directive.ts","../../../../libs/core/overflow-layout/tokens/overflow-item-ref.token.ts","../../../../libs/core/overflow-layout/directives/overflow-item-ref.directive.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-item-container.directive.ts","../../../../libs/core/overflow-layout/tokens/overflow-container.token.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-popover-content.directive.ts","../../../../libs/core/overflow-layout/overflow-layout.service.ts","../../../../libs/core/overflow-layout/tokens/overflow-focusable-item.token.ts","../../../../libs/core/overflow-layout/overflow-layout.component.ts","../../../../libs/core/overflow-layout/overflow-layout.component.html","../../../../libs/core/overflow-layout/tokens/overflow-item.token.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-focusable-item.directive.ts","../../../../libs/core/overflow-layout/directives/overflow-layout-item.directive.ts","../../../../libs/core/overflow-layout/overflow-layout.module.ts","../../../../libs/core/overflow-layout/fundamental-ngx-core-overflow-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { OverflowExpand } from '../interfaces/overflow-expand.interface';\n\nexport const FD_OVERFLOW_EXPAND = new InjectionToken<OverflowExpand>('FdOverflowLayoutExpand');\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { OverflowExpand, OverflowExpandDirectiveContext } from '../interfaces/overflow-expand.interface';\nimport { FD_OVERFLOW_EXPAND } from '../tokens/overflow-expand.token';\n\n/**\n * Structural directive which is responsible for rendering the \"More\" button and handling further logic.\n */\n@Directive({\n selector: '[fdOverflowExpand]',\n providers: [\n {\n provide: FD_OVERFLOW_EXPAND,\n useExisting: OverflowExpandDirective\n }\n ],\n standalone: true\n})\nexport class OverflowExpandDirective<T extends any[] = any[]> implements OverflowExpand<T> {\n /** Items to expand */\n @Input()\n fdOverflowExpandItems: T;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowExpandDirectiveContext<T>>) {}\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowExpandDirective,\n ctx: OverflowExpandDirectiveContext\n ): ctx is OverflowExpandDirectiveContext {\n return true;\n }\n}\n","import { Directive, OnDestroy, TemplateRef, ViewContainerRef, ViewRef } from '@angular/core';\n\n/**\n * Directive to hide component without actual destroying of the component instance.\n */\n@Directive({\n selector: '[fdOverflowItemContainerRef]',\n standalone: true\n})\nexport class OverflowItemContainerRefDirective implements OnDestroy {\n /** @hidden */\n private _viewRef: ViewRef;\n\n /** @hidden */\n private _detached = false;\n\n /** @hidden */\n private _hidden = false;\n\n /**\n * Shows or hides element without destroying the view itself.\n * @param value\n */\n set hidden(value: boolean) {\n if (this._hidden === value) {\n return;\n }\n this._hidden = value;\n if (value && !this._detached) {\n this._viewRef = this._viewContainerRef.detach()!;\n this._detached = true;\n } else if (!value && this._viewRef && !this._viewRef.destroyed && this._detached) {\n this._viewRef = this._viewContainerRef.insert(this._viewRef);\n this._detached = false;\n }\n }\n\n /** @hidden */\n constructor(\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef\n ) {\n // Create embedded view right away and manipulate its visibility later.\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._viewRef?.destroy();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\n\nexport const FD_OVERFLOW_ITEM_REF = new InjectionToken<OverflowItemRef>('OverflowLayoutItemRef');\n","import { Directive, ElementRef, inject, INJECTOR, Input, TemplateRef } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { OverflowItemDirectiveContext, OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\n\n/**\n * Structural directive which is used to pass the context of the item to the template engine.\n */\n@Directive({\n selector: '[fdOverflowItemRef]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM_REF,\n useExisting: OverflowItemRefDirective\n }\n ],\n standalone: true\n})\nexport class OverflowItemRefDirective<T = any> implements OverflowItemRef<T>, HasElementRef {\n /** Item instance. Used for correct autocomplete. */\n @Input('fdOverflowItemRef')\n item: T;\n /**\n * Element ref of the `fdOverflowLayoutItem` directive.\n */\n elementRef: ElementRef<HTMLElement>;\n\n /**\n * `fdOverflowLayoutItem` directive.\n */\n overflowItem: OverflowItem;\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this._hidden = value;\n this.overflowItem.hiddenChange.emit(value);\n }\n\n get hidden(): boolean {\n return this._hidden;\n }\n\n /** @hidden */\n _hidden = false;\n\n /** Index of the item in the visible or hidden array of Overflow Layout Component's items. */\n index: number;\n\n /**\n * The index of the item in the array of items.\n */\n globalIndex: number;\n\n /** Whether this item is last in the array. */\n first: boolean;\n\n /** Whether this item is first in the array. */\n last: boolean;\n\n /** Whether the item is softly hidden. */\n softHidden = true;\n\n /** @hidden */\n readonly injector = inject(INJECTOR);\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<OverflowItemDirectiveContext<T>>) {}\n\n /** @hidden */\n static ngTemplateContextGuard(\n dir: OverflowItemRefDirective,\n ctx: OverflowItemDirectiveContext\n ): ctx is OverflowItemDirectiveContext {\n return true;\n }\n\n /**\n * Sets the element reference of the `fdOverflowLayoutItem` directive.`\n * @param elmRef\n */\n setElementRef(elmRef: ElementRef): void {\n if (this.elementRef) {\n return;\n }\n this.elementRef = elmRef;\n }\n\n /**\n * Sets the `fdOverflowLayoutItem` directive.\n * @param item\n */\n setOverflowItem(item: OverflowItem): void {\n this.overflowItem = item;\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { OverflowItemContainerRefDirective } from './overflow-item-container-ref.directive';\n\n@Directive({\n selector: '[fdOverflowLayoutItemContainer]',\n standalone: true\n})\nexport class OverflowLayoutItemContainerDirective {\n /**\n * Whether this item is the first one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--last')\n last = false;\n\n /**\n * Whether this item is the last one in the array.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--first')\n first = false;\n\n /**\n * Whether this item is softly hidden. Used during free space calculation without flickering of the items.\n */\n @Input()\n @HostBinding('class.fd-overflow-layout__item--soft-hidden')\n softHidden = true;\n\n /**\n * Container reference.\n */\n @ContentChild(OverflowItemContainerRefDirective)\n containerRef: OverflowItemContainerRefDirective;\n\n /** @hidden */\n @HostBinding('class')\n protected readonly _initialClass = 'fd-overflow-layout__item';\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\n\nexport const FD_OVERFLOW_CONTAINER = new InjectionToken<OverflowContainer>('FdOverflowContainer');\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n Directive,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n computed,\n effect,\n inject\n} from '@angular/core';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { OverflowContainer } from '../interfaces/overflow-container.interface';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from '../interfaces/overflow-popover-content.interface';\nimport { FD_OVERFLOW_CONTAINER } from '../tokens/overflow-container.token';\n\n/**\n * Directive to wrap Overlay Layout \"More\" popover content.\n * Used to apply keyboard navigation through the items.\n */\n@Directive({\n selector: '[fdOverflowLayoutPopoverContent]',\n standalone: true\n})\nexport class OverflowLayoutPopoverContentDirective implements OverflowPopoverContent, OnDestroy {\n /**\n * Array of hidden items.\n */\n @Input()\n set items(value: OverflowItemRef[]) {\n // Need to set items with a delay so that elementRef of the focusable item would refresh.\n setTimeout(() => {\n this._items = value;\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(\n this._items\n .filter((item) => item.overflowItem.focusableItem?.focusable)\n .map((item) => item.overflowItem.focusableItem)\n )\n .withWrap()\n .withHorizontalOrientation(this._dir());\n });\n }\n\n /** @hidden */\n @HostBinding('class')\n protected readonly _initialClass = 'fd-overflow-layout__popover-container';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** @hidden */\n private _items: OverflowItemRef[];\n\n /** @hidden */\n private readonly _dir = computed<'ltr' | 'rtl'>(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(@Inject(FD_OVERFLOW_CONTAINER) private _overflowContainer: OverflowContainer) {\n this._overflowContainer?.registerPopoverContent(this);\n\n effect(() => {\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir());\n });\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._items.findIndex((item) => item.overflowItem.elmRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager, so we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n }\n\n /**\n * Focuses on the first tabbable element inside directive's element.\n */\n focusFirstTabbableElement(): void {\n this._keyboardEventsManager?.setActiveItem(0);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n}\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject, Subscription, debounceTime, distinctUntilChanged, filter, skip } from 'rxjs';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\n\nexport interface OverflowLayoutConfig {\n items: OverflowItemRef[];\n focusableItems: OverflowLayoutFocusableItem[];\n visibleItems: OverflowLayoutItemContainerDirective[];\n itemsWrapper: HTMLElement;\n showMoreContainer?: HTMLElement;\n layoutContainerElement: HTMLElement;\n maxVisibleItems: number;\n direction: 'left' | 'right';\n enableKeyboardNavigation: boolean;\n reverseHiddenItems: boolean;\n}\n\nexport class OverflowLayoutListeningResult {\n /** Whether to show more button */\n showMore = false;\n\n /** Overflow item s */\n items: OverflowItemRef[] = [];\n\n /** Hidden overflow items */\n hiddenItems: OverflowItemRef[] = [];\n\n /** Visible overflow items */\n visibleItems: OverflowItemRef[] = [];\n}\n\n@Injectable()\nexport class OverflowLayoutService implements OnDestroy {\n /**\n * Overflow Layout config.\n */\n config: OverflowLayoutConfig;\n\n /**\n * Overflow Layout calculation result.\n */\n result = new OverflowLayoutListeningResult();\n\n /** @hidden */\n private _listenToItemResize = true;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n private _detectChanges$ = new Subject<void>();\n\n /** @hidden */\n private _result$ = new Subject<OverflowLayoutListeningResult>();\n\n /**\n * Observable which emits when changes detection is required.\n */\n get detectChanges(): Observable<void> {\n return this._detectChanges$.asObservable();\n }\n\n /**\n * Observable which emits when new calculation result is available.\n */\n get onResult(): Observable<OverflowLayoutListeningResult> {\n return this._result$.asObservable();\n }\n\n /** @hidden */\n constructor(private _elRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n\n /** @hidden */\n startListening(config: OverflowLayoutConfig): void {\n this.setConfig(config);\n this.fitVisibleItems();\n this._listenToSizeChanges(this._elRef.nativeElement, this.config.itemsWrapper);\n }\n\n /** @hidden */\n setConfig(config: OverflowLayoutConfig): void {\n this.config = config;\n }\n\n /**\n * Calculates available space for items and hides items that are not fitting into the container.\n */\n fitVisibleItems(): void {\n this._listenToItemResize = false;\n this._allItems = this.config.items;\n\n let allItems = [...this.config.items];\n let visibleContainerItems = [...this.config.visibleItems];\n\n this._elRef.nativeElement.style.height = `${this._elRef.nativeElement.clientHeight}px`;\n\n allItems.forEach((item, index) => {\n // Softly hide previously completely hidden item in order to correctly calculate it's size.\n item.softHidden = true;\n item.hidden = false;\n item.index = index;\n item.first = index === 0;\n item.last = index === allItems.length - 1;\n item.globalIndex = index;\n visibleContainerItems[index].containerRef.hidden = false;\n });\n\n this._detectChanges$.next();\n\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n visibleContainerItems =\n this.config.direction === 'right' ? visibleContainerItems : visibleContainerItems.reverse();\n\n this.result.showMore = false;\n this._emitResult();\n const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n const itemsContainerWidth = allItems.reduce(\n (total, item) => total + (this._getElementWidth(item.elementRef.nativeElement) || 0),\n 0\n );\n\n if (\n containerWidth >= itemsContainerWidth &&\n this.config.visibleItems.length <= this.config.maxVisibleItems &&\n this._hiddenItems.length === 0\n ) {\n // Make all items fully visible.\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n this.result.showMore = false;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._listenToItemResize = true;\n this._elRef.nativeElement.style.height = '';\n return;\n }\n this.result.showMore = true;\n this._emitResult();\n let fittingElmCount = 0;\n let fittingElmsWidth = 0;\n let shouldHideItems = false;\n\n const showMoreContainerWidth = Math.ceil(\n this.config.showMoreContainer ? this._getElementWidth(this.config.showMoreContainer) : 0\n );\n let layoutWidth = containerWidth - showMoreContainerWidth;\n\n // Try to find all forced visible items\n const forcedItemsIndexes = this._getForcedItemsIndexes();\n\n forcedItemsIndexes.forEach((itemIndex) => {\n const container = this.config.visibleItems[itemIndex];\n if (!container) {\n return;\n }\n const elementSize = this._getElementWidth(container.elementRef.nativeElement);\n\n layoutWidth -= elementSize;\n });\n\n const maxVisibleItems =\n this.config.maxVisibleItems -\n forcedItemsIndexes.filter((index) => index >= this.config.maxVisibleItems).length;\n\n if (layoutWidth < 0 && forcedItemsIndexes.length > 0) {\n console.warn(\n 'There is no enough space to fit all forced visible items into the container. Please adjust their visibility accordingly.'\n );\n }\n\n this._detectChanges$.next();\n\n visibleContainerItems.forEach((item, index) => {\n const itemRef = allItems[index];\n // If item is forced to be visible, just display the item since it's size calculation was already taken care of in previous iteration.\n if (itemRef.overflowItem.forceVisibility) {\n return;\n }\n if (shouldHideItems && !itemRef.overflowItem.forceVisibility) {\n item.containerRef.hidden = true;\n item.softHidden = false;\n itemRef.hidden = true;\n return;\n }\n\n const elementSize = this._getElementWidth(item.elementRef.nativeElement);\n const combinedWidth = fittingElmsWidth + elementSize;\n\n const condition =\n (combinedWidth <= layoutWidth ||\n (item === this.config.visibleItems[this.config.visibleItems.length - 1] &&\n combinedWidth <= layoutWidth + showMoreContainerWidth)) &&\n fittingElmCount < maxVisibleItems;\n\n if (condition) {\n fittingElmsWidth += elementSize;\n fittingElmCount++;\n } else if (!itemRef.overflowItem.forceVisibility) {\n shouldHideItems = true;\n item.softHidden = false;\n item.containerRef.hidden = true;\n itemRef.hidden = true;\n }\n });\n\n // Reverse original order back.\n allItems = this.config.direction === 'right' ? allItems : allItems.reverse();\n\n allItems.forEach((item) => {\n item.softHidden = false;\n });\n\n let hiddenItems = allItems.filter((i) => i.hidden);\n hiddenItems = this.config.reverseHiddenItems ? hiddenItems.reverse() : hiddenItems;\n const visibleItems = allItems.filter((i) => !i.hidden);\n\n visibleItems.forEach((item, index) => {\n item.index = index;\n item.first = index === 0;\n item.last = index === visibleItems.length - 1;\n });\n\n this._hiddenItems = hiddenItems.map((item, index) => {\n item.first = index === 0;\n item.last = index === hiddenItems.length - 1;\n item.index = index;\n return item;\n });\n\n this.result.showMore = this._hiddenItems.length > 0;\n this.result.hiddenItems = this._hiddenItems;\n this._emitResult();\n this._elRef.nativeElement.style.height = '';\n\n this._listenToItemResize = true;\n }\n\n /** @hidden */\n private _getForcedItemsIndexes(): number[] {\n return this._allItems\n .map((item, index) => (item.overflowItem.forceVisibility ? index : -1))\n .filter((i) => i > -1);\n }\n\n /**\n * @hidden\n * Returns combined width of the element including margins.\n * @param element Element to calculate width of.\n */\n private _getElementWidth(element: HTMLElement): number {\n const elementStyle = getComputedStyle(element);\n const elementWidth = element.getBoundingClientRect().width;\n const elementSize = elementWidth + parseFloat(elementStyle.marginLeft) + parseFloat(elementStyle.marginRight);\n\n return Math.ceil(elementSize);\n }\n\n /** @hidden */\n private _emitResult(): void {\n this._result$.next(this.result);\n }\n\n /** @hidden */\n private _listenToSizeChanges(...elements: HTMLElement[]): void {\n elements.forEach((element) =>\n this._subscription.add(\n resizeObservable(element)\n .pipe(\n skip(1),\n filter(() => this._listenToItemResize),\n distinctUntilChanged(),\n debounceTime(30)\n )\n .subscribe(() => {\n setTimeout(() => {\n this.fitVisibleItems();\n });\n })\n )\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\n\nexport const FD_OVERFLOW_FOCUSABLE_ITEM = new InjectionToken<OverflowLayoutFocusableItem>(\n 'FdOverflowLayoutFocusableItem'\n);\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n effect,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n untracked,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { PopoverBodyDirective, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { debounceTime, filter, fromEvent, startWith, Subject, Subscription } from 'rxjs';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowContainer } from './interfaces/overflow-container.interface';\nimport { OverflowExpand } from './interfaces/overflow-expand.interface';\nimport { OverflowLayoutFocusableItem } from './interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from './interfaces/overflow-item-ref.interface';\nimport { OverflowPopoverContent } from './interfaces/overflow-popover-content.interface';\nimport { OverflowLayoutConfig, OverflowLayoutService } from './overflow-layout.service';\nimport { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';\nimport { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';\n\n@Component({\n selector: 'fd-overflow-layout',\n templateUrl: './overflow-layout.component.html',\n styleUrl: './overflow-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_OVERFLOW_CONTAINER,\n useExisting: OverflowLayoutComponent\n },\n OverflowLayoutService\n ],\n imports: [\n NgTemplateOutlet,\n OverflowLayoutItemContainerDirective,\n OverflowItemContainerRefDirective,\n PopoverComponent,\n PopoverControlComponent,\n ButtonComponent,\n PopoverBodyDirective,\n OverflowLayoutPopoverContentDirective,\n FdTranslatePipe\n ]\n})\nexport class OverflowLayoutComponent implements OnInit, AfterViewInit, OnDestroy, OverflowContainer {\n /**\n * Maximum amount of visible items.\n */\n @Input()\n set maxVisibleItems(value: number) {\n if (value === this._maxVisibleItems) {\n return;\n }\n this._maxVisibleItems = value;\n this.triggerRecalculation();\n }\n\n get maxVisibleItems(): number {\n return this._maxVisibleItems;\n }\n\n /**\n * Keyboard event to listen for keyboard navigation through items.\n */\n @Input()\n navigationTrigger: 'keyup' | 'keydown' = 'keyup';\n\n /** Direction of the fitting items calculation. */\n @Input()\n showMorePosition: 'left' | 'right' = 'right';\n\n /** Whether the show more button should be rendered */\n @Input({ transform: booleanAttribute })\n renderShowMoreButton = true;\n\n /** Whether to render hidden items in reverse order. */\n @Input()\n reverseHiddenItems = false;\n\n /** Whether to enable keyboard navigation. */\n @Input()\n enableKeyboardNavigation = true;\n\n /** Aria role of the overflow layout. */\n @Input()\n ariaRole: string;\n\n /**\n * Event, triggered when amount of visible items has been changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when amount of hidden items has been changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /**\n * Event, triggered when hidden items have been changed.\n */\n @Output()\n hiddenItemsChange = new EventEmitter<OverflowItemRef[]>();\n\n /**\n * @hidden\n * List of items to display.\n */\n @ContentChildren(FD_OVERFLOW_ITEM_REF, { descendants: true })\n _items: QueryList<OverflowItemRef>;\n\n /**\n * @hidden\n * Template for the custom \"More\" button.\n */\n @ContentChild(FD_OVERFLOW_EXPAND)\n _moreButton: Nullable<OverflowExpand>;\n\n /**\n * @hidden\n * List of items that can be focused\n */\n @ContentChildren(FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true })\n _focusableOverflowItems: QueryList<OverflowLayoutFocusableItem>;\n\n /**\n * @hidden\n * List of rendered items.\n */\n @ViewChildren(OverflowLayoutItemContainerDirective)\n _visibleItems: QueryList<OverflowLayoutItemContainerDirective>;\n\n /**\n * @hidden\n * Items wrapper directive.\n */\n @ViewChild('itemsWrapper')\n _itemsWrapper: ElementRef<HTMLElement>;\n\n /**\n * @hidden\n * Layout container element.\n */\n @ViewChild('layoutContainer')\n _layoutContainer: ElementRef<HTMLDivElement>;\n\n /**\n * @hidden\n * \"More\" button container element.\n */\n @ViewChild('showMoreContainer')\n _showMoreContainer: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @HostBinding('class')\n readonly _initialClass = 'fd-overflow-layout';\n\n /** @hidden */\n _allItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _hiddenItems: OverflowItemRef[] = [];\n\n /** @hidden */\n _showMore = false;\n\n /** @hidden */\n private readonly _subscription = new Subscription();\n\n /** @hidden */\n private _overflowPopoverContent: OverflowPopoverContent;\n\n /** @hidden */\n private _fillTrigger$ = new Subject<void>();\n\n /** @hidden */\n private _maxVisibleItems = Infinity;\n\n /** @hidden */\n private _canListenToResize = false;\n\n /** @hidden */\n private _dir: 'rtl' | 'ltr' = 'ltr';\n\n /** @hidden */\n private _keyboardEventsManager: Nullable<FocusKeyManager<OverflowLayoutFocusableItem>>;\n\n /** @hidden */\n private readonly _rtl = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<HTMLElement>,\n protected _cdr: ChangeDetectorRef,\n protected _overflowLayoutService: OverflowLayoutService\n ) {\n this._subscription.add(\n this._fillTrigger$.pipe(debounceTime(30)).subscribe(() => {\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n // React to RTL changes for keyboard navigation\n effect(() => {\n if (!this._rtl || !this.enableKeyboardNavigation) {\n return;\n }\n\n const isRtl = this._rtl.rtl();\n this._dir = isRtl ? 'rtl' : 'ltr';\n\n // Use untracked to avoid tracking _keyboardEventsManager\n untracked(() => {\n this._keyboardEventsManager = this._keyboardEventsManager?.withHorizontalOrientation(this._dir);\n });\n });\n }\n\n /** Overflow Layout more button text */\n @Input()\n moreItemsButtonText: (hiddenItemsCount: number) => string = (count) => `${count} more`;\n\n /** @hidden */\n private get _config(): OverflowLayoutConfig {\n return {\n visibleItems: this._visibleItems.toArray(),\n items: this._items.toArray(),\n focusableItems: this._focusableOverflowItems.toArray(),\n itemsWrapper: this._itemsWrapper.nativeElement,\n showMoreContainer: this._showMoreContainer?.nativeElement,\n layoutContainerElement: this._layoutContainer.nativeElement,\n maxVisibleItems: this.maxVisibleItems,\n direction: this.showMorePosition,\n enableKeyboardNavigation: this.enableKeyboardNavigation,\n reverseHiddenItems: this.reverseHiddenItems\n };\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setupKeyboardListener();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscription.add(\n this._overflowLayoutService.detectChanges.subscribe(() => {\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._overflowLayoutService.onResult.subscribe((result) => {\n this._hiddenItems = result.hiddenItems;\n this._showMore = result.showMore;\n\n this.hiddenItemsChange.emit(result.hiddenItems);\n this.hiddenItemsCount.emit(result.hiddenItems.length);\n this.visibleItemsCount.emit(this._allItems.filter((i) => !i.hidden).length);\n\n this._cdr.detectChanges();\n })\n );\n\n this._subscription.add(\n this._items.changes.pipe(startWith(() => this._items)).subscribe(() => {\n this._allItems = this._items.toArray();\n\n this._cdr.detectChanges();\n\n this._overflowLayoutService.setConfig(this._config);\n this._overflowLayoutService.fitVisibleItems();\n })\n );\n\n this._setFocusKeyManager();\n\n // Set up resize observers immediately after view init\n Promise.resolve().then(() => {\n this._overflowLayoutService.startListening(this._config);\n this._canListenToResize = true;\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = null;\n }\n\n /**\n * Triggers layout recalculation of the items.\n */\n triggerRecalculation(): void {\n if (!this._canListenToResize) {\n return;\n }\n\n this._fillTrigger$.next();\n }\n\n /**\n * Sets current focused element.\n * @param element Element that needs to be focused.\n */\n setFocusedElement(element: OverflowLayoutFocusableItem): void {\n const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);\n\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n /**\n * Registers popover content directive for main component.\n * @param content {OverflowPopoverContent} directive\n */\n registerPopoverContent(content: OverflowPopoverContent): void {\n this._overflowPopoverContent = content;\n }\n\n /** @hidden */\n _onPopoverStateChange(opened: boolean): void {\n if (opened) {\n this._overflowPopoverContent?.focusFirstTabbableElement();\n }\n }\n\n /** @hidden */\n private _setupKeyboardListener(): void {\n this._subscription.add(\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, this.navigationTrigger)\n .pipe(filter(() => this.enableKeyboardNavigation))\n .subscribe((event) => {\n if (KeyUtil.isKeyCode(event, TAB)) {\n const index = this._focusableOverflowItems\n .toArray()\n .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);\n if (index !== -1) {\n this._keyboardEventsManager?.setActiveItem(index);\n }\n }\n\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n event.preventDefault();\n\n // passing the event to key manager so, we get a change fired\n this._keyboardEventsManager?.onKeydown(event);\n }\n })\n );\n }\n\n /** @hidden */\n private _setFocusKeyManager(): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n this._dir = this._rtl?.rtl() ? 'rtl' : 'ltr';\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this._focusableOverflowItems)\n .withWrap()\n .withHorizontalOrientation(this._dir)\n .withVerticalOrientation()\n .skipPredicate((item) => !item.navigable || item.hidden);\n }\n}\n","@if (renderShowMoreButton && showMorePosition === 'left') {\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n}\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper [attr.role]=\"ariaRole\">\n @for (item of _allItems; track item.templateRef) {\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n [attr.role]=\"ariaRole === 'list' ? 'listitem' : null\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n </ng-container>\n </div>\n }\n </div>\n </div>\n</div>\n@if (renderShowMoreButton && showMorePosition === 'right') {\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n}\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'inline-flex' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ ('coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length })() }}\n </button>\n </fd-popover-control>\n <ng-template fdPopoverBody>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n @for (item of _hiddenItems; track item) {\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex,\n injector: item.injector\n }\"\n ></ng-template>\n }\n </div>\n </ng-template>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\n\nexport const FD_OVERFLOW_ITEM = new InjectionToken<OverflowItem>('FdOverflowItem');\n","import { Directive, ElementRef, HostBinding, HostListener, Inject, Input, OnInit, Optional } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_FOCUSABLE_ITEM } from '../tokens/overflow-focusable-item.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n@Directive({\n selector: '[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]',\n providers: [\n {\n provide: FD_OVERFLOW_FOCUSABLE_ITEM,\n useExisting: OverflowLayoutFocusableItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutFocusableItemDirective implements OverflowLayoutFocusableItem, OnInit {\n /** Whether the item should be focusable. */\n @Input()\n focusable = true;\n\n /** Whether the item should be navigable via keyboard. */\n @Input()\n navigable = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n protected get _tabindex(): number {\n return this.focusable ? 0 : -1;\n }\n\n /** Whether the item is hidden. */\n get hidden(): boolean {\n return !!this._overflowItem?.hidden;\n }\n\n /** @hidden */\n constructor(\n private readonly _overflowContainer: OverflowLayoutComponent,\n @Inject(FD_OVERFLOW_ITEM) @Optional() private readonly _overflowItem: OverflowItem,\n public readonly elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** @hidden */\n @HostListener('focus')\n protected _onFocus(): void {\n this._overflowContainer.setFocusedElement(this);\n }\n\n /** @hidden */\n ngOnInit(): void {\n if (this._overflowItem) {\n this._overflowItem.focusableItem = this;\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { OverflowLayoutFocusableItem } from '../interfaces/overflow-focusable-item.interface';\nimport { OverflowItemRef } from '../interfaces/overflow-item-ref.interface';\nimport { OverflowItem } from '../interfaces/overflow-item.interface';\nimport { OverflowLayoutComponent } from '../overflow-layout.component';\nimport { FD_OVERFLOW_ITEM_REF } from '../tokens/overflow-item-ref.token';\nimport { FD_OVERFLOW_ITEM } from '../tokens/overflow-item.token';\n\n/**\n * Directive to mark element as part of for Overflow Layout Component items.\n */\n@Directive({\n selector: '[fdOverflowLayoutItem]',\n providers: [\n {\n provide: FD_OVERFLOW_ITEM,\n useExisting: OverflowLayoutItemDirective\n }\n ],\n standalone: true\n})\nexport class OverflowLayoutItemDirective implements OverflowItem, OnInit {\n /** Whether to force the visibility of the item. */\n @Input()\n set forceVisibility(value: boolean) {\n if (value === this._forceVisibility) {\n return;\n }\n\n this._forceVisibility = value;\n this._overflowContainer.triggerRecalculation();\n }\n\n get forceVisibility(): boolean {\n return this._forceVisibility;\n }\n\n /**\n * Event emitted when `hidden` property has been changed.\n */\n @Output()\n hiddenChange = new EventEmitter<boolean>();\n\n /**\n * Whether the item is hidden.\n */\n set hidden(value: boolean) {\n this.hiddenChange.emit(value);\n }\n get hidden(): boolean {\n return this._overflowItemRef?.hidden === true;\n }\n\n /**\n * Focusable item for keyboard navigation.\n */\n focusableItem: OverflowLayoutFocusableItem;\n\n /** Reference to the element */\n elmRef = inject(ElementRef);\n\n /** @hidden */\n protected _overflowItemRef: OverflowItemRef | null = inject(FD_OVERFLOW_ITEM_REF, {\n optional: true,\n skipSelf: true\n });\n /** @hidden */\n private _forceVisibility = false;\n /** @hidden */\n private _overflowContainer = inject(OverflowLayoutComponent);\n\n /** @hidden */\n ngOnInit(): void {\n this._overflowItemRef?.setElementRef(this.elmRef);\n this._overflowItemRef?.setOverflowItem(this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OverflowExpandDirective } from './directives/overflow-expand.directive';\nimport { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';\nimport { OverflowItemRefDirective } from './directives/overflow-item-ref.directive';\nimport { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';\nimport { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';\nimport { OverflowLayoutItemDirective } from './directives/overflow-layout-item.directive';\nimport { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';\nimport { OverflowLayoutComponent } from './overflow-layout.component';\n\n/**\n * @deprecated\n * Use direct imports of OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n */\n@NgModule({\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ],\n exports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowExpandDirective,\n OverflowLayoutItemDirective,\n OverflowItemContainerRefDirective,\n OverflowLayoutPopoverContentDirective,\n OverflowLayoutItemContainerDirective,\n OverflowLayoutFocusableItemDirective\n ]\n})\nexport class OverflowLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.OverflowLayoutService"],"mappings":"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"}