@fundamental-ngx/core 0.49.1 → 0.49.2

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 (310) hide show
  1. package/avatar-group-legacy/avatar-group-legacy.component.d.ts +6 -6
  2. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.d.ts +2 -2
  3. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.d.ts +2 -2
  4. package/bar/bar.component.d.ts +6 -6
  5. package/bar/button-bar/button-bar.component.d.ts +4 -4
  6. package/calendar/calendar-header/calendar-header.component.d.ts +2 -2
  7. package/card/card-content.component.d.ts +2 -2
  8. package/card/card-counter.directive.d.ts +2 -2
  9. package/card/card-header.component.d.ts +6 -6
  10. package/card/card-loader.component.d.ts +2 -2
  11. package/card/card-second-subtitle.directive.d.ts +2 -2
  12. package/card/card-subtitle.directive.d.ts +2 -2
  13. package/card/card-title.directive.d.ts +2 -2
  14. package/card/card.component.d.ts +3 -3
  15. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -2
  16. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -2
  17. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -2
  18. package/card/kpi/card-kpi-header.component.d.ts +2 -2
  19. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -2
  20. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -2
  21. package/card/kpi/card-kpi-value.directive.d.ts +4 -4
  22. package/checkbox/checkbox/checkbox.component.d.ts +3 -5
  23. package/content-density/providers/url-content-density-storage.d.ts +4 -4
  24. package/content-density/services/content-density-observer.service.d.ts +15 -15
  25. package/datetime/datetime-adapter.d.ts +9 -2
  26. package/datetime/fd-date.d.ts +10 -14
  27. package/datetime/fd-datetime-adapter.d.ts +2 -2
  28. package/dialog/base/dialog-base.class.d.ts +2 -2
  29. package/dialog/base/dialog-header-base.class.d.ts +4 -4
  30. package/dialog/base/dialog-ref-base.class.d.ts +6 -4
  31. package/dynamic-side-content/dynamic-side-content.component.d.ts +4 -4
  32. package/esm2022/avatar-group-legacy/avatar-group-legacy.component.mjs +15 -15
  33. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.mjs +12 -12
  34. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.mjs +9 -9
  35. package/esm2022/bar/bar.component.mjs +13 -13
  36. package/esm2022/bar/button-bar/button-bar.component.mjs +3 -3
  37. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +1 -1
  38. package/esm2022/card/card-content.component.mjs +5 -5
  39. package/esm2022/card/card-counter.directive.mjs +6 -6
  40. package/esm2022/card/card-header.component.mjs +5 -5
  41. package/esm2022/card/card-loader.component.mjs +5 -5
  42. package/esm2022/card/card-second-subtitle.directive.mjs +5 -5
  43. package/esm2022/card/card-subtitle.directive.mjs +5 -5
  44. package/esm2022/card/card-title.directive.mjs +5 -5
  45. package/esm2022/card/card.component.mjs +5 -5
  46. package/esm2022/card/kpi/card-kpi-analytics-content.directive.mjs +5 -5
  47. package/esm2022/card/kpi/card-kpi-analytics-label.directive.mjs +5 -5
  48. package/esm2022/card/kpi/card-kpi-analytics.directive.mjs +5 -5
  49. package/esm2022/card/kpi/card-kpi-header.component.mjs +5 -5
  50. package/esm2022/card/kpi/card-kpi-scale-icon.directive.mjs +5 -5
  51. package/esm2022/card/kpi/card-kpi-scale-text.directive.mjs +5 -5
  52. package/esm2022/card/kpi/card-kpi-value.directive.mjs +5 -5
  53. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  54. package/esm2022/combobox/combobox.component.mjs +2 -2
  55. package/esm2022/content-density/providers/url-content-density-storage.mjs +11 -11
  56. package/esm2022/content-density/services/content-density-observer.service.mjs +7 -16
  57. package/esm2022/datetime/datetime-adapter.mjs +4 -2
  58. package/esm2022/datetime/fd-date.mjs +34 -27
  59. package/esm2022/datetime/fd-datetime-adapter.mjs +1 -1
  60. package/esm2022/dialog/base/dialog-base.class.mjs +1 -1
  61. package/esm2022/dialog/base/dialog-header-base.class.mjs +1 -1
  62. package/esm2022/dialog/base/dialog-ref-base.class.mjs +4 -8
  63. package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +9 -9
  64. package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +5 -5
  65. package/esm2022/feed-list-item/components/list/feed-list.component.mjs +15 -15
  66. package/esm2022/file-uploader/directives/file-uploader-select.directive.mjs +1 -1
  67. package/esm2022/file-uploader/file-uploader.component.mjs +5 -5
  68. package/esm2022/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
  69. package/esm2022/form/form-group/form-group.component.mjs +8 -8
  70. package/esm2022/form/form-message/form-message.component.mjs +9 -9
  71. package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -3
  72. package/esm2022/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  73. package/esm2022/illustrated-message/illustrated-message.component.mjs +10 -10
  74. package/esm2022/input-group/input-group-directives.mjs +22 -22
  75. package/esm2022/layout-grid/directives/layout-grid-col.directive.mjs +9 -9
  76. package/esm2022/layout-grid/layout-grid.component.mjs +9 -9
  77. package/esm2022/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +9 -9
  78. package/esm2022/list/list-item/list-item.component.mjs +20 -17
  79. package/esm2022/list/list-message.directive.mjs +9 -9
  80. package/esm2022/menu/directives/segmented-button/segmented-button-header.directive.mjs +1 -2
  81. package/esm2022/menu/directives/toggle-button.directive.mjs +1 -2
  82. package/esm2022/message-box/message-box.component.mjs +17 -17
  83. package/esm2022/message-page/message-page.component.mjs +5 -5
  84. package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +5 -5
  85. package/esm2022/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +1 -1
  86. package/esm2022/message-strip/alert/message-strip-alert.service.mjs +2 -3
  87. package/esm2022/message-strip/message-strip.component.mjs +16 -16
  88. package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +43 -45
  89. package/esm2022/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +1 -1
  90. package/esm2022/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +13 -13
  91. package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -5
  92. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  93. package/esm2022/multi-input/multi-input.component.mjs +2 -2
  94. package/esm2022/nested-list/nested-content/nested-list-content.directive.mjs +6 -6
  95. package/esm2022/nested-list/nested-item/nested-item.directive.mjs +3 -3
  96. package/esm2022/nested-list/nested-list/nested-list.directive.mjs +3 -3
  97. package/esm2022/notification/directives/notification-indicator.directive.mjs +9 -9
  98. package/esm2022/notification/notification/notification.component.mjs +9 -9
  99. package/esm2022/notification/notification-group/notification-group.component.mjs +5 -5
  100. package/esm2022/notification/notification-service/notification.service.mjs +5 -2
  101. package/esm2022/notification/notification-utils/notification-ref.mjs +2 -5
  102. package/esm2022/object-number/object-number.component.mjs +9 -9
  103. package/esm2022/object-status/object-status.component.mjs +13 -12
  104. package/esm2022/overflow-layout/directives/overflow-expand.directive.mjs +5 -5
  105. package/esm2022/overflow-layout/directives/overflow-item-ref.directive.mjs +1 -1
  106. package/esm2022/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +5 -5
  107. package/esm2022/overflow-layout/directives/overflow-layout-item-container.directive.mjs +8 -8
  108. package/esm2022/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +1 -1
  109. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -18
  110. package/esm2022/radio/radio-button/radio-button.component.mjs +8 -9
  111. package/esm2022/rating-indicator/components/rating-indicator.component.mjs +28 -28
  112. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +23 -23
  113. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +7 -8
  114. package/esm2022/select/select.component.mjs +18 -18
  115. package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
  116. package/esm2022/shellbar/shellbar.component.mjs +7 -7
  117. package/esm2022/side-navigation/side-navigation.component.mjs +7 -7
  118. package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
  119. package/esm2022/status-indicator/status-indicator.component.mjs +15 -15
  120. package/esm2022/table/directives/table-responsive-wrapper.directive.mjs +3 -3
  121. package/esm2022/tabs/tab-item/tab-item.directive.mjs +9 -9
  122. package/esm2022/tabs/tab-link/tab-link.directive.mjs +8 -8
  123. package/esm2022/tabs/tab-nav/tab-nav.component.mjs +15 -15
  124. package/esm2022/tabs/tab-panel/tab-panel.component.mjs +3 -3
  125. package/esm2022/tabs/tab-utils/tab-directives.mjs +8 -8
  126. package/esm2022/tile/directives/tile.directives.mjs +25 -25
  127. package/esm2022/tile/tile.component.mjs +9 -11
  128. package/esm2022/time/time-column/time-column.component.mjs +23 -23
  129. package/esm2022/timeline/services/position-strategies/base-strategy.mjs +1 -1
  130. package/esm2022/timeline/timeline.component.mjs +5 -5
  131. package/esm2022/title/title.component.mjs +4 -4
  132. package/esm2022/token/tokenizer.component.mjs +71 -71
  133. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  134. package/esm2022/tree/components/tree-item/tree-item.component.mjs +4 -6
  135. package/esm2022/tree/tree.component.mjs +1 -4
  136. package/esm2022/upload-collection/upload-collection-item.directive.mjs +3 -3
  137. package/esm2022/vertical-navigation/vertical-navigation.component.mjs +6 -6
  138. package/esm2022/wizard/wizard-step/wizard-step.component.mjs +3 -3
  139. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -2
  140. package/feed-list-item/components/list/feed-list.component.d.ts +6 -6
  141. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +33 -33
  142. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-bar.mjs +14 -14
  144. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  146. package/fesm2022/fundamental-ngx-core-card.mjs +61 -61
  147. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  148. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  150. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-content-density.mjs +17 -26
  152. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-datetime.mjs +36 -27
  154. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -7
  156. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +8 -8
  158. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-feed-input.mjs +4 -4
  160. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +14 -14
  162. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +4 -4
  164. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  166. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-form.mjs +15 -15
  168. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-grid-list.mjs +3 -4
  170. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +9 -9
  172. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
  174. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +16 -16
  176. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +8 -8
  178. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-list.mjs +27 -24
  180. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core-menu.mjs +0 -2
  182. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  183. package/fesm2022/fundamental-ngx-core-message-box.mjs +16 -16
  184. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  185. package/fesm2022/fundamental-ngx-core-message-page.mjs +4 -4
  186. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  187. package/fesm2022/fundamental-ngx-core-message-strip.mjs +20 -21
  188. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  189. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +55 -57
  190. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  191. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +1 -4
  192. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  193. package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
  194. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  195. package/fesm2022/fundamental-ngx-core-nested-list.mjs +9 -9
  196. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  197. package/fesm2022/fundamental-ngx-core-notification.mjs +25 -25
  198. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  199. package/fesm2022/fundamental-ngx-core-object-number.mjs +8 -8
  200. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  201. package/fesm2022/fundamental-ngx-core-object-status.mjs +12 -11
  202. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  203. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +32 -32
  204. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  205. package/fesm2022/fundamental-ngx-core-radio.mjs +7 -8
  206. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  207. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +27 -27
  208. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  209. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +28 -29
  210. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  211. package/fesm2022/fundamental-ngx-core-select.mjs +17 -17
  212. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  213. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  214. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  215. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +6 -6
  216. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  217. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  218. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  219. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +14 -14
  220. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  221. package/fesm2022/fundamental-ngx-core-table.mjs +2 -2
  222. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  223. package/fesm2022/fundamental-ngx-core-tabs.mjs +38 -38
  224. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  225. package/fesm2022/fundamental-ngx-core-tile.mjs +32 -34
  226. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  227. package/fesm2022/fundamental-ngx-core-time.mjs +23 -23
  228. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  229. package/fesm2022/fundamental-ngx-core-timeline.mjs +4 -4
  230. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  231. package/fesm2022/fundamental-ngx-core-title.mjs +3 -3
  232. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  233. package/fesm2022/fundamental-ngx-core-token.mjs +70 -70
  234. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  235. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  236. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  237. package/fesm2022/fundamental-ngx-core-tree.mjs +3 -8
  238. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  239. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  240. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  241. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +5 -5
  242. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  243. package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
  244. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  245. package/file-uploader/directives/file-uploader-select.directive.d.ts +1 -1
  246. package/file-uploader/file-uploader.component.d.ts +4 -4
  247. package/form/form-group/form-group.component.d.ts +4 -4
  248. package/form/form-message/form-message.component.d.ts +2 -2
  249. package/grid-list/components/grid-list/grid-list.component.d.ts +3 -2
  250. package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +8 -8
  251. package/illustrated-message/illustrated-message.component.d.ts +7 -7
  252. package/input-group/input-group-directives.d.ts +12 -12
  253. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -2
  254. package/layout-grid/layout-grid.component.d.ts +2 -2
  255. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +2 -2
  256. package/list/list-item/list-item.component.d.ts +13 -13
  257. package/list/list-message.directive.d.ts +4 -4
  258. package/message-box/message-box.component.d.ts +5 -5
  259. package/message-page/message-page.component.d.ts +2 -2
  260. package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +4 -4
  261. package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +4 -4
  262. package/message-strip/alert/message-strip-alert.service.d.ts +3 -2
  263. package/message-strip/message-strip.component.d.ts +6 -6
  264. package/micro-process-flow/components/micro-process-flow/micro-process-flow.component.d.ts +15 -17
  265. package/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.d.ts +2 -2
  266. package/micro-process-flow/micro-process-flow-focusable-item.directive.d.ts +6 -6
  267. package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  268. package/nested-list/nested-content/nested-list-content.directive.d.ts +2 -2
  269. package/nested-list/nested-item/nested-item.directive.d.ts +2 -2
  270. package/nested-list/nested-list/nested-list.directive.d.ts +2 -2
  271. package/notification/directives/notification-indicator.directive.d.ts +4 -4
  272. package/notification/notification/notification.component.d.ts +2 -2
  273. package/notification/notification-group/notification-group.component.d.ts +2 -2
  274. package/notification/notification-utils/notification-ref.d.ts +5 -3
  275. package/object-number/object-number.component.d.ts +4 -4
  276. package/object-status/object-status.component.d.ts +5 -4
  277. package/overflow-layout/directives/overflow-expand.directive.d.ts +2 -2
  278. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +2 -2
  279. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +2 -2
  280. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +2 -2
  281. package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +1 -1
  282. package/overflow-layout/overflow-layout.component.d.ts +4 -4
  283. package/package.json +3 -3
  284. package/radio/radio-button/radio-button.component.d.ts +7 -7
  285. package/rating-indicator/components/rating-indicator.component.d.ts +12 -12
  286. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +8 -8
  287. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -2
  288. package/select/select.component.d.ts +19 -19
  289. package/shared/interfaces/search-component.interface.d.ts +1 -1
  290. package/shellbar/shellbar.component.d.ts +12 -12
  291. package/side-navigation/side-navigation.component.d.ts +2 -2
  292. package/skeleton/components/skeleton.component.d.ts +2 -2
  293. package/status-indicator/status-indicator.component.d.ts +7 -7
  294. package/tabs/tab-item/tab-item.directive.d.ts +2 -2
  295. package/tabs/tab-link/tab-link.directive.d.ts +2 -2
  296. package/tabs/tab-nav/tab-nav.component.d.ts +8 -8
  297. package/tabs/tab-panel/tab-panel.component.d.ts +2 -2
  298. package/tabs/tab-utils/tab-directives.d.ts +5 -5
  299. package/tile/directives/tile.directives.d.ts +12 -12
  300. package/tile/tile.component.d.ts +4 -6
  301. package/time/time-column/time-column.component.d.ts +6 -6
  302. package/timeline/services/position-strategies/base-strategy.d.ts +2 -2
  303. package/timeline/timeline.component.d.ts +2 -2
  304. package/title/title.component.d.ts +2 -2
  305. package/token/tokenizer.component.d.ts +16 -16
  306. package/toolbar/toolbar.component.d.ts +2 -2
  307. package/tree/components/tree-item/tree-item.component.d.ts +10 -9
  308. package/upload-collection/upload-collection-item.directive.d.ts +2 -2
  309. package/vertical-navigation/vertical-navigation.component.d.ts +2 -2
  310. package/wizard/wizard-step/wizard-step.component.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-resizable-card-layout.mjs","sources":["../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.ts","../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.html","../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.ts","../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.html","../../../../libs/core/resizable-card-layout/resizable-card-layout.module.ts","../../../../libs/core/resizable-card-layout/fundamental-ngx-core-resizable-card-layout.ts"],"sourcesContent":["import { FocusableOption } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nexport type ResizeDirection = 'vertical' | 'horizontal' | 'both';\n\n// Card resizes in step of fixed values. values are in pixel\nexport const horizontalResizeStep = 320;\n\n// vertical resize step\nexport const verticalResizeStep = 16;\n\n// gap of 1rem between the cards\nexport const gap = 16;\n\n// threshold offset for horizontal resizing.\nexport const horizontalResizeOffset = 160;\n\n// threshold offset for vertical resizing.\nexport const verticalResizeOffset = 8;\n\n// state of card. Increasing width, no change or decreasing width.\nexport type CardState = 1 | 0 | -1;\n\n// card is given numeric value, on which sorting of cards is done\nlet cardRank = 1;\nlet cardUniqueId = 0;\n\n@Component({\n selector: 'fd-resizable-card-item',\n templateUrl: 'resizable-card-item.component.html',\n styleUrl: './resizable-card-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgTemplateOutlet]\n})\nexport class ResizableCardItemComponent implements FocusableOption, OnDestroy {\n /** Card properties from the config */\n @Input()\n set config(config: ResizableCardItemConfig) {\n this._config = config;\n this._initialSetup();\n this._cd.detectChanges();\n }\n get config(): ResizableCardItemConfig {\n return this._config;\n }\n\n /** set uinque id for the card */\n @Input()\n itemId = `fd-card-item-${cardUniqueId++}`;\n\n /** set title of the card */\n @Input()\n title: string;\n\n /**\n * Serial order of card.\n * cards are sorted based on ranks before displaying layout.\n * card with lower rank will be displayed first in layout than the card with higher rank.\n */\n @Input()\n set rank(rankValue: number) {\n // determine max value between user given value and default value\n this._rank = rankValue ? rankValue : cardRank++;\n if (rankValue > cardRank) {\n cardRank = rankValue;\n }\n }\n get rank(): number {\n return this._rank;\n }\n\n /**\n * Number of column span card width takes.\n * It will be in step of 20rem.\n */\n @Input()\n set cardWidthColSpan(colSpan: number) {\n this._cardWidthColSpan = colSpan;\n this._setCardWidth();\n }\n get cardWidthColSpan(): number {\n return this._cardWidthColSpan;\n }\n\n /**\n * Number of row span, card height takes.\n * It will be in the step of 1rem.\n */\n @Input()\n set cardHeightRowSpan(rowSpan: number) {\n this._cardHeightRowSpan = rowSpan;\n this._setCardHeight();\n }\n get cardHeightRowSpan(): number {\n return this._cardHeightRowSpan;\n }\n\n /**\n * Number of row span card mini header height takes.\n * Mini Header: The smallest representation of the card is the header.\n * The card can be collapsed to only its header height.\n */\n @Input()\n set cardMiniHeaderRowSpan(rowSpan: number) {\n this._cardMiniHeaderRowSpan = rowSpan;\n this._setCardMiniHeaderHeight();\n }\n get cardMiniHeaderRowSpan(): number {\n return this._cardMiniHeaderRowSpan;\n }\n\n /**\n * Number of row span card mini content height takes.\n * Mini Content: The minimum height for the card content depends on the card type,\n * and must be as high as the smallest representation of the content.\n */\n @Input()\n set cardMiniContentRowSpan(rowSpan: number) {\n this._cardMiniContentRowSpan = rowSpan;\n this._setCardMiniContentHeight();\n }\n get cardMiniContentRowSpan(): number {\n return this._cardMiniContentRowSpan ?? 0;\n }\n\n /** Card can be set to resizable=false, to restrict card resize */\n @Input()\n resizable = true;\n\n /** Set left position for the card */\n @Input()\n @HostBinding('style.left.px')\n left: Nullable<number>;\n\n /** Set right position for the card */\n @Input()\n @HostBinding('style.right.px')\n right: Nullable<number>;\n\n /** Set top position for the card*/\n @Input()\n @HostBinding('style.top.px')\n top = 0;\n\n /** @hidden while resizing this value will change to a greater value */\n @HostBinding('style.z-index')\n zIndex = 0;\n\n /** @hidden */\n @HostBinding('style.position')\n position = 'absolute';\n\n /** @hidden transition animation when layout re-draws */\n @HostBinding('class.fd-resizable-card-layout__draw-transition')\n reDrawAnimation = true;\n\n /** Emits when card is still resizing */\n @Output()\n resizing: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card resize is completed */\n @Output()\n resized: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card height is reduced to show only header */\n @Output()\n miniHeaderReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when minimum height of card content area is reached */\n @Output()\n miniContentReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** show corner resize icon on hover over card */\n showingResizeIcon = false;\n\n /** show border when card is resizing */\n showBorder = false;\n\n /** starting column position of card. starts with 0 */\n startingColumnPosition: number;\n\n /** card width in px. Default value to 20rem */\n cardWidth: number = horizontalResizeStep;\n\n /** card height in px */\n cardHeight: number;\n\n /** Mini-header height of card */\n cardMiniHeaderHeight: number;\n\n /** Mini-content height of card to display minimum valid content */\n cardMiniContentHeight: number;\n\n /** Outer resize indication border width for the card */\n resizeIndicationBorderWidth = 0;\n\n /**\n * Denotes if card is currently expanding or contracting horizontally.\n * +1 denotes increasing, -1 denotes decreasing and 0 denotes card-state has not changed horizontally.\n */\n cardState: CardState = 0;\n\n /** Change in rank from previous value*/\n prevRank = 0;\n\n /** @hidden Default width of card is 20rem ie. 1 column */\n private _cardWidthColSpan = 1;\n\n /** @hidden */\n private _cardHeightRowSpan: number;\n\n /** @hidden helps in vertical step change event emit */\n private _prevCardHeightRowSpan: number;\n\n /** @hidden */\n private _cardMiniHeaderRowSpan: number;\n\n /** @hidden */\n private _cardMiniContentRowSpan?: number;\n\n /** @hidden config values for card */\n private _config: ResizableCardItemConfig;\n\n /** @hidden previous cursor x position */\n private _prevX: number;\n\n /** @hidden previous cursor y position */\n private _prevY: number;\n\n /** @hidden */\n private _prevCardWidth: number;\n\n /** @hidden */\n private _prevCardHeight: number;\n\n /** @hidden flag to control resize */\n private _resize = false;\n\n /** @hidden */\n private _resizeDirection: ResizeDirection;\n\n /** @hidden */\n private _maxColumn: number;\n\n /**\n * @hidden stores original width span of card.\n * It may reduce on small screen, so have to restore using this.\n */\n private _originalCardWidthSpan = 0;\n\n /** @hidden */\n private _rank: number;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private readonly _cd: ChangeDetectorRef,\n public readonly elementRef: ElementRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /**\n * When resize handler is pressed and resizing may start.\n * @param event {MouseEvent}\n * @param resizeDirection which handler is pressed to resize\n */\n onMouseDown(event: MouseEvent, resizeDirection: ResizeDirection): void {\n event.preventDefault();\n if (!this.resizable) {\n return;\n }\n\n this.showingResizeIcon = true;\n this._resize = true;\n this._prevX = event.clientX;\n this._prevY = event.clientY;\n this._prevCardWidth = this.cardWidth;\n this._prevCardHeight = this.cardHeight;\n this._resizeDirection = resizeDirection;\n }\n\n /**\n * @hidden When mouse moves to resize the card.\n * using window:mousemove so, resize will happen smoothly\n * @param event {MouseEvent}\n */\n @HostListener('window:mousemove', ['$event'])\n onMouseMove(event: MouseEvent): void {\n event.preventDefault();\n if (!this.resizable) {\n return;\n }\n\n // saves from un-necessary resize\n if (!this._resize) {\n return;\n }\n\n if (!this.showBorder) {\n this.showBorder = true;\n }\n\n // resizing card will go over other cards\n this.zIndex = 1;\n\n const { clientX, clientY } = event;\n switch (this._resizeDirection) {\n case 'both':\n this._horizontalResizing(clientX);\n this._verticalResizing(clientY);\n break;\n case 'horizontal':\n this._horizontalResizing(clientX);\n break;\n case 'vertical':\n this._verticalResizing(clientY);\n break;\n default:\n this._horizontalResizing(clientX);\n this._verticalResizing(clientY);\n }\n\n const cardWidthColSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n const cardWidthWithColumn = cardWidthColSpan * horizontalResizeStep + cardWidthColSpan * gap;\n\n const horizontalResizeThresholdReached = this.cardWidth - cardWidthWithColumn > horizontalResizeOffset;\n\n if (clientX > this._prevX) {\n // increasing width\n this.cardState = 1;\n\n if (horizontalResizeThresholdReached) {\n const futureCardWidth = (cardWidthColSpan + 1) * horizontalResizeStep + cardWidthColSpan * gap;\n this.resizeIndicationBorderWidth = futureCardWidth - this.cardWidth;\n } else {\n this.resizeIndicationBorderWidth = 0;\n }\n } else if (clientX < this._prevX) {\n // decreasing width\n this.cardState = -1;\n if (horizontalResizeThresholdReached) {\n const futureCardWidth = (cardWidthColSpan + 1) * horizontalResizeStep + cardWidthColSpan * gap;\n this.resizeIndicationBorderWidth = futureCardWidth - this.cardWidth;\n } else {\n this.resizeIndicationBorderWidth = 0;\n }\n }\n\n this._prevX = clientX;\n this._prevY = clientY;\n this._cd.detectChanges();\n\n // Emits resizing event.\n this.resizing.emit(this.getResizedEventObject());\n }\n\n /**\n * when resizing of card stops\n */\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(): void {\n if (!this.resizable) {\n return;\n }\n // if card was not resizing\n if (!this._resize) {\n return;\n }\n\n // increase/decrease width of card in order of 20rem\n if (Math.abs(this.cardWidth - this._prevCardWidth) > 0) {\n this._horizontalStepResizing();\n }\n\n // increase/decrease height of card in order of 1rem\n if (Math.abs(this.cardHeight - this._prevCardHeight) > 0) {\n this._verticalStepResizing();\n }\n\n this._stopResizing();\n this._cd.markForCheck();\n }\n\n /** Sets focus on the element */\n focus(): void {\n const header = this.elementRef.nativeElement.querySelector('.fd-card__header');\n header?.focus();\n }\n\n /** Shows resize icon */\n showResizeIcon(): void {\n if (!this.resizable) {\n return;\n }\n this.showingResizeIcon = true;\n }\n\n /** Hides resize icon */\n hideResizeIcon(): void {\n if (!this._resize) {\n this.showingResizeIcon = false;\n }\n }\n\n /** Returns max width for card, based on layout size passed */\n getMaxColSpan(layoutSize: string): number {\n switch (layoutSize) {\n case 'sm':\n this._maxColumn = 1;\n break;\n case 'md':\n this._maxColumn = 2;\n break;\n case 'lg':\n this._maxColumn = 3;\n break;\n case 'xl':\n this._maxColumn = 4;\n break;\n default:\n this._maxColumn = 1;\n }\n return this._maxColumn;\n }\n\n /** Update card width if it exceeds column span based on layout */\n verifyUpdateCardWidth(layoutSize: string): void {\n const widthColSpan = this._config?.cardWidthColSpan || this.cardWidthColSpan;\n // storing original width of card.\n // used to restore width on window resize from small to large\n this._originalCardWidthSpan = !this._originalCardWidthSpan ? widthColSpan : this._originalCardWidthSpan;\n this._maxColumn = this.getMaxColSpan(layoutSize);\n if (widthColSpan > this._maxColumn) {\n this.cardWidthColSpan = this._maxColumn;\n this._setCardWidth();\n // Emits resized event.\n this.resized.emit(this.getResizedEventObject());\n } else {\n // keep card width minimum, so it can fit in screen.\n this.cardWidthColSpan = Math.min(this._maxColumn, this._originalCardWidthSpan);\n this._setCardWidth();\n // Emits resized event.\n this.resized.emit(this.getResizedEventObject());\n }\n }\n\n /** Returns ResizedEvent object to emit. */\n getResizedEventObject(): ResizedEvent {\n const newCardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n const newCardWidthColSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n const newCardWidth = newCardWidthColSpan * horizontalResizeStep + newCardWidthColSpan * gap;\n\n const horizontalResizeThresholdReached = this.cardWidth - newCardWidth > horizontalResizeOffset;\n const newCardColSpan = horizontalResizeThresholdReached ? newCardWidthColSpan + 1 : newCardWidthColSpan;\n return new ResizedEvent(\n this,\n this._prevCardWidth,\n this._prevCardHeight,\n this.cardWidth,\n this.cardHeight,\n this._cardWidthColSpan,\n this._cardHeightRowSpan,\n newCardColSpan,\n newCardHeightRowSpan\n );\n }\n\n /** @hidden Return previous height row span of the card */\n get previousCardHeightRowSpan(): number {\n return this._prevCardHeightRowSpan;\n }\n\n /** @hidden Set card properties using config received */\n private _initialSetup(): void {\n this.cardWidthColSpan = this._config?.cardWidthColSpan || this.cardWidthColSpan;\n this.cardHeightRowSpan = this._config?.cardHeightRowSpan || this.cardHeightRowSpan;\n this.title = this._config?.title || this.title;\n this.rank = this._config?.rank || this.rank;\n this.cardMiniHeaderRowSpan = this._config?.cardMiniHeaderRowSpan || this.cardMiniHeaderRowSpan;\n this.cardMiniContentRowSpan = this._config?.cardMiniContentRowSpan || this.cardMiniContentRowSpan;\n this.resizable = this._config.resizable || this.resizable;\n }\n\n /** @hidden Returns true when resize offset is crossed */\n private _horizontalResizeWithOffset(): void {\n // positive value indicates that width has increased\n const widthIncrement = this.cardWidth - this._prevCardWidth;\n const cardSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n const cardSpanFraction = this.cardWidth % horizontalResizeStep;\n\n // when width increases\n if (widthIncrement > 0) {\n if (widthIncrement < horizontalResizeOffset + gap) {\n // widthIncrement is less than offset, do not increase width\n this.cardWidth = this._prevCardWidth;\n } else {\n // check value of cardSpanFraction, including gaps in cards\n const isCardSpanFractionCrossingOffset =\n cardSpanFraction - (cardSpan - 1) * gap > horizontalResizeOffset;\n this.cardWidth = isCardSpanFractionCrossingOffset\n ? (cardSpan + 1) * horizontalResizeStep\n : cardSpan * horizontalResizeStep;\n }\n } else {\n // when width decreases\n if (Math.abs(widthIncrement) < horizontalResizeOffset) {\n // widthIncrement is less than offset, do not decrease width\n this.cardWidth = this._prevCardWidth;\n } else {\n // check value of cardSpanFraction, including gaps in cards\n const isCardSpanFractionCrossingOffset = cardSpanFraction - cardSpan * gap > horizontalResizeOffset;\n this.cardWidth = isCardSpanFractionCrossingOffset\n ? (cardSpan + 1) * horizontalResizeStep\n : cardSpan * horizontalResizeStep;\n }\n }\n }\n\n /**\n * @hidden make horizontal resize only on step of 20rem\n */\n private _horizontalStepResizing(): void {\n this._horizontalResizeWithOffset();\n\n // Add inner gap in cardWidth if width is more than 1 column\n if (this.cardWidth > horizontalResizeStep) {\n this.cardWidth = this.cardWidth + (this.cardWidth / horizontalResizeStep - 1) * gap;\n }\n this.cardWidthColSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n }\n\n /**\n * @hidden make vertical resize only on step of 1rem\n */\n private _verticalStepResizing(): void {\n // positive value indicates that height has increased\n const cardHeightSpan = Math.floor(this.cardHeight / verticalResizeStep);\n const cardSpanFraction = this.cardHeight % verticalResizeStep;\n this.cardHeight =\n cardSpanFraction > verticalResizeOffset\n ? (cardHeightSpan + 1) * verticalResizeStep\n : cardHeightSpan * verticalResizeStep;\n\n this.cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n }\n\n /**\n * @hidden Resize card horizontally by checking boundary condition\n * @param xPosition current x-position of cursor\n */\n private _horizontalResizing(xPosition: number): void {\n const difference = this._prevX - xPosition;\n this.cardWidth = this._rtlService?.rtlSignal() ? this.cardWidth + difference : this.cardWidth - difference;\n\n const totalIndentation = (this._maxColumn - 1) * gap;\n const maxCardWidtWithoutIndentation = this._maxColumn * horizontalResizeStep;\n\n const maxCardWidth = this._rtlService?.rtlSignal()\n ? maxCardWidtWithoutIndentation - totalIndentation\n : maxCardWidtWithoutIndentation + totalIndentation;\n\n if (this.cardWidth > maxCardWidth) {\n this.cardWidth = maxCardWidth;\n } else if (this.cardWidth < horizontalResizeStep) {\n this.cardWidth = horizontalResizeStep;\n }\n }\n\n /**\n * @hidden Resize card vertically.\n * takes care of mini-header height and mini-content height\n * @param yPosition current y-position of cursor\n */\n private _verticalResizing(yPosition: number): void {\n let reachingMiniHeader = false;\n\n if (this.cardHeight === this.cardMiniHeaderHeight) {\n // if card height is already at mini-header height\n if (this._prevY - yPosition > 0) {\n // decreasing height\n // if miniHeader height reached, stop resizing\n this.cardHeight = this.cardMiniHeaderHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n } else {\n // increasing height\n this.cardHeight = this.cardMiniHeaderHeight + this.cardMiniContentHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n this._stopResizing();\n this.miniContentReached.emit(this.getResizedEventObject());\n }\n } else if (this.cardHeight < this.cardMiniContentHeight + this.cardMiniHeaderHeight) {\n // if card height is between mini-header and mini-content\n if (this._prevY - yPosition < 0) {\n this.cardHeight = this.cardMiniHeaderHeight + this.cardMiniContentHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n this._stopResizing();\n this.miniContentReached.emit(this.getResizedEventObject());\n }\n } else if (\n this.cardHeight === this.cardMiniContentHeight + this.cardMiniHeaderHeight &&\n this._prevY - yPosition > 0\n ) {\n // decreasing height\n // height decreasing after reaching mini-content. this needs to differentiate\n // from height decreasing and reaching to mini-content.\n reachingMiniHeader = true;\n this.cardHeight = this.cardMiniHeaderHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n // miniHeader height reached, stop resizing\n this._stopResizing();\n this.miniHeaderReached.emit(this.getResizedEventObject());\n } else {\n this.cardHeight = this.cardHeight - (this._prevY - yPosition);\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n }\n\n // stop resizing on miniContent height\n if (\n this.cardHeight <= this.cardMiniContentHeight + this.cardMiniHeaderHeight &&\n this._prevY - yPosition > 0 &&\n !reachingMiniHeader\n ) {\n this.cardHeight = this.cardMiniContentHeight + this.cardMiniHeaderHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n this.miniContentReached.emit(this.getResizedEventObject());\n this._stopResizing();\n }\n\n // while corner resize, width might have increased and reached to mini-content height.\n // so, on mini-content resize will stop, but have to do step resizing for vertical and horizontal.\n if (!this._resize) {\n // increase/decrease width of card in order of 20rem\n if (Math.abs(this.cardWidth - this._prevCardWidth) > 0) {\n this._horizontalStepResizing();\n }\n\n // increase/decrease height of card in order of 1rem\n if (Math.abs(this.cardHeight - this._prevCardHeight) > 0) {\n this._verticalStepResizing();\n }\n }\n }\n\n /** @hidden reset involved variables while resizing */\n private _stopResizing(): void {\n if (this._resize) {\n this.cardState = 0;\n this.resizeIndicationBorderWidth = 0;\n this._resize = false;\n this.zIndex = 0;\n this.showBorder = false;\n this.resized.emit(this.getResizedEventObject());\n }\n }\n\n /** @hidden Returns cardWidth based on card column span */\n private _setCardWidth(): void {\n this.cardWidth = this._cardWidthColSpan * horizontalResizeStep + (this._cardWidthColSpan - 1) * gap;\n this._cd.markForCheck();\n }\n\n /** @hidden Returns cardHeight based on card row span */\n private _setCardHeight(): void {\n this.cardHeight = this._cardHeightRowSpan * verticalResizeStep;\n this._cd.markForCheck();\n }\n\n /** @hidden Returns card mini header height */\n private _setCardMiniHeaderHeight(): void {\n this.cardMiniHeaderHeight = this._cardMiniHeaderRowSpan * verticalResizeStep;\n this._cd.markForCheck();\n }\n\n /** @hidden Returns card mini content height */\n private _setCardMiniContentHeight(): void {\n this.cardMiniContentHeight = this.cardMiniContentRowSpan * verticalResizeStep;\n this._cd.markForCheck();\n }\n}\n\n/** Config interface for card properties */\nexport interface ResizableCardItemConfig {\n title?: string;\n rank?: number;\n cardWidthColSpan?: number;\n cardHeightRowSpan?: number;\n cardMiniHeaderRowSpan?: number;\n cardMiniContentRowSpan?: number;\n resizable?: boolean;\n}\n\n/** Object to emit on resize complete */\nexport class ResizedEvent {\n /**\n * Object to emit on resize complete\n * @param card\n * @param prevCardWidth Previous card width\n * @param prevCardHeight Previous card height\n * @param cardWidth Current card width\n * @param cardHeight Current card height\n * @param cardWidthColSpan Current card width column span\n * @param cardHeightRowSpan Current card height row span\n * @param newCardWidthColSpan New card width column span\n * @param newCardHeightRowSpan New card height row span\n */\n constructor(\n public card: ResizableCardItemComponent,\n public prevCardWidth: number,\n public prevCardHeight: number,\n public cardWidth: number,\n public cardHeight: number,\n public cardWidthColSpan: number,\n public cardHeightRowSpan: number,\n public newCardWidthColSpan: number,\n public newCardHeightRowSpan: number\n ) {}\n}\n","<div\n class=\"fd-resizable-card-layout__item\"\n [class.fd-resizable-card-layout__indication-border]=\"showBorder\"\n #resizeCard\n>\n <div\n class=\"fd-resizable-card-layout__item--border-display fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"cardWidth\"\n [style.height.px]=\"cardHeight\"\n (mouseenter)=\"showResizeIcon()\"\n (mouseleave)=\"hideResizeIcon()\"\n >\n <div class=\"fd-resizable-card-layout__card\">\n <ng-content></ng-content>\n @if (showingResizeIcon) {\n <div class=\"fd-resizable-card-layout__icon-wrapper\">\n <div\n class=\"fd-resizable-card-layout__icon\"\n #cornerHandle\n (mousedown)=\"onMouseDown($event, 'both')\"\n ></div>\n </div>\n }\n </div>\n @if (resizable) {\n <ng-template [ngTemplateOutlet]=\"verticalHandleTemplate\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"horizontalHandleTemplate\"></ng-template>\n }\n </div>\n <div\n class=\"fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"resizeIndicationBorderWidth\"\n [style.height.px]=\"cardHeight\"\n ></div>\n</div>\n<ng-template #verticalHandleTemplate>\n <div\n #verticalHandle\n class=\"fd-resizable-card-layout__resize--vertical\"\n (mousedown)=\"onMouseDown($event, 'horizontal')\"\n ></div>\n</ng-template>\n<ng-template #horizontalHandleTemplate>\n <div\n #horizontalHandle\n class=\"fd-resizable-card-layout__resize--horizontal\"\n (mousedown)=\"onMouseDown($event, 'vertical')\"\n ></div>\n</ng-template>\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n computed,\n inject\n} from '@angular/core';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport {\n ResizableCardItemComponent,\n ResizableCardItemConfig,\n ResizedEvent,\n gap,\n horizontalResizeOffset,\n horizontalResizeStep,\n verticalResizeStep\n} from './resizable-card-item/resizable-card-item.component';\n\nexport type LayoutSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type ResizableCardLayoutConfig = Array<ResizableCardItemConfig>;\n\n@Component({\n selector: 'fd-resizable-card-layout',\n templateUrl: 'resizable-card-layout.component.html',\n styleUrl: './resizable-card-layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class ResizableCardLayoutComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n /** Object for setting each card property */\n @Input()\n layoutConfig: ResizableCardLayoutConfig;\n\n /** Emits when card resize is reached to one new step in horizontal or vertical direction */\n @Output()\n stepChange: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card is still resizing */\n @Output()\n resizing: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card resize is completed */\n @Output()\n resized: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card height is reduced to show only header */\n @Output()\n miniHeaderReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when minimum height of card content area is reached */\n @Output()\n miniContentReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when layout changes */\n @Output()\n layoutChange: EventEmitter<ResizableCardLayoutConfig> = new EventEmitter<ResizableCardLayoutConfig>();\n\n /** @hidden */\n @ContentChildren(ResizableCardItemComponent)\n resizeCardItems: QueryList<ResizableCardItemComponent>;\n\n /** width for layout */\n layoutWidth: number;\n\n /** height for layout */\n layoutHeight: number;\n\n /** @hidden Number of columns in layout. considering 1 column width 20rem */\n private _columns: number;\n\n /** @hidden Layout padding. will be added to first card padding in every row */\n private _paddingLeft: number;\n\n /** @hidden Stores height of each column on card arrangement */\n private _columnsHeight: Array<number>;\n\n /** @hidden Available screen layout */\n private _layout: LayoutSize;\n\n /** @hidden Stores sorted card before placing in layout */\n private _sortedCards: Array<ResizableCardItemComponent>;\n\n /** @hidden FocusKeyManager instance */\n private _keyboardEventsManager: FocusKeyManager<ResizableCardItemComponent>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _layoutShifted = false;\n\n /** @hidden */\n private _directionPosition$ = computed<'left' | 'right'>(() => (this._rtlService?.rtlSignal() ? 'right' : 'left'));\n\n /** @hidden */\n constructor(\n private readonly _cd: ChangeDetectorRef,\n public readonly elementRef: ElementRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** @hidden handles keyboard accessibility */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent): void {\n event.stopImmediatePropagation();\n if (!this._keyboardEventsManager.activeItemIndex) {\n this._keyboardEventsManager.setFirstItemActive();\n }\n\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._columnsHeight = new Array(this._columns);\n this._columnsHeight.fill(0);\n // initialise value 0\n // detect initial window size and set layout\n this._createLayout();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._initialSetup();\n // listen for query-list change\n this.resizeCardItems?.forEach((card) => {\n card?.verifyUpdateCardWidth(this.layoutSize);\n });\n\n this.resizeCardItems.changes.subscribe(() => {\n this.arrangeCards(this.resizeCardItems?.toArray());\n });\n this.arrangeCards(this.resizeCardItems?.toArray());\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._accessibilitySetup();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n\n /** @hidden */\n @HostListener('window:resize')\n onResize(): void {\n this._createLayout();\n }\n\n /** Layout size. Available options are 'sm', 'md', 'lg' and 'xl' */\n set layoutSize(layoutSize: LayoutSize) {\n this._layout = layoutSize;\n }\n get layoutSize(): LayoutSize {\n return this._layout;\n }\n\n /**\n * Arranges cards in layout based on rank, width and height of card\n * @param cards Array of ResizableCardItemComponent\n */\n arrangeCards(cards: Array<ResizableCardItemComponent>): void {\n this._columnsHeight = new Array(this._columns);\n this._columnsHeight.fill(0);\n // sort based on the card rank\n this._sortedCards = cards?.sort(this._sortCards);\n\n this._sortedCards?.forEach((card, index) => {\n this._setCardPositionValues(card, index);\n this._updateColumnsHeight(card);\n });\n this.layoutHeight = Math.max.apply(null, this._columnsHeight) + verticalResizeStep;\n\n this._emitLayoutChange();\n this._cd.markForCheck();\n }\n\n /**\n * Handles shifting of cards with animation, while card is still resizing.\n * @param event {ResizedEvent}\n */\n cardResizing(event: ResizedEvent): void {\n this.resizing.emit(event);\n this._handleHorizontalResize(event);\n this._handleVerticalResize(event);\n }\n\n /**\n * Handles arrangement of cards in layout\n * @param event {ResizedEvent}\n */\n cardResizeComplete(event: ResizedEvent): void {\n this._layoutShifted = false;\n this.arrangeCards(this.resizeCardItems.toArray());\n this.resized.emit(event);\n }\n\n /** @hidden */\n updateLayout(): void {\n this.resizeCardItems?.forEach((card) => {\n card?.verifyUpdateCardWidth(this.layoutSize);\n });\n this.arrangeCards(this.resizeCardItems?.toArray());\n }\n\n /**\n * method to get screen width\n * @returns Window width in px\n */\n getWidthAvailable(): number {\n return window.innerWidth;\n }\n\n /** @hidden Subscribe to events from items */\n private _initialSetup(): void {\n // listen for resizing event of card item\n this.resizeCardItems?.forEach((resizeCardItem, index) => {\n if (this.layoutConfig && this.layoutConfig.length >= index + 1) {\n resizeCardItem.config = this.layoutConfig[index];\n }\n\n resizeCardItem.resizing\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => this.cardResizing(event));\n\n // listen for resize complete event of card item\n resizeCardItem.resized\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => this.cardResizeComplete(event));\n\n // listen for mini-header height event of card item\n resizeCardItem.miniHeaderReached\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => {\n this.miniHeaderReached.emit(event);\n this.stepChange.emit(event);\n });\n\n // listen for mini-content height event of card item\n resizeCardItem.miniContentReached\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => {\n this.miniContentReached.emit(event);\n this.stepChange.emit(event);\n });\n });\n }\n\n /** @hidden */\n private _accessibilitySetup(): void {\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this.resizeCardItems).withWrap();\n }\n\n /** @hidden create layout based on layout size */\n private _createLayout(): void {\n const screenWidth = this.getWidthAvailable();\n const prevLayoutSize = this.layoutSize;\n\n if (screenWidth > 0 && screenWidth <= 656 && prevLayoutSize !== 'sm') {\n this.layoutSize = 'sm';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n } else if (screenWidth > 656 && screenWidth <= 975 && prevLayoutSize !== 'md') {\n this.layoutSize = 'md';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n } else if (screenWidth > 975 && screenWidth <= 1359 && prevLayoutSize !== 'lg') {\n this.layoutSize = 'lg';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n } else if (screenWidth > 1359 && prevLayoutSize !== 'xl') {\n this.layoutSize = 'xl';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n }\n }\n\n /** @hidden Emit layoutChange event with updated card dimensions */\n private _emitLayoutChange(): void {\n const latestCardConfig: ResizableCardLayoutConfig = [];\n this.resizeCardItems?.forEach((card) => {\n const cardConfig: ResizableCardItemConfig = {};\n cardConfig.cardWidthColSpan = card.cardWidthColSpan;\n cardConfig.cardHeightRowSpan = card.cardHeightRowSpan;\n cardConfig.rank = card.rank;\n cardConfig.title = card.title;\n cardConfig.cardMiniContentRowSpan = card.cardMiniContentRowSpan;\n cardConfig.cardMiniHeaderRowSpan = card.cardMiniHeaderRowSpan;\n cardConfig.resizable = card.resizable;\n latestCardConfig.push(cardConfig);\n });\n this.layoutChange.emit(latestCardConfig);\n }\n\n /**\n * @hidden Sets number of column in layout, based on LayoutSize passed\n * @param layoutSize {'sm' | 'md' | 'lg' | 'xl'}\n */\n private _setLayoutColumns(layoutSize: LayoutSize): void {\n let layoutWidthDefault: number;\n\n switch (layoutSize) {\n case 'sm':\n this._columns = 1;\n this._paddingLeft = 8;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault;\n break;\n case 'md':\n this._columns = 2;\n this._paddingLeft = 16;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + gap;\n break;\n case 'lg':\n this._columns = 3;\n this._paddingLeft = 16;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + 2 * gap;\n break;\n case 'xl':\n this._columns = 4;\n this._paddingLeft = 48;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + 3 * gap;\n break;\n default:\n this._columns = 4;\n this._paddingLeft = 48;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + 3 * gap;\n }\n }\n\n /**\n * @hidden Method to handle card vertical resize and trigger the layout change\n * @param event {ResizedEvent}\n */\n private _handleVerticalResize(event: ResizedEvent): void {\n if (event.card.cardHeightRowSpan !== event.card.previousCardHeightRowSpan) {\n this.arrangeCards(this._sortedCards);\n this._cd.markForCheck();\n this.stepChange.emit(event.card.getResizedEventObject());\n }\n }\n\n /**\n * @hidden Method to handle card horizontal resize and trigger the layout change\n * @param event {ResizedEvent}\n */\n private _handleHorizontalResize(event: ResizedEvent): void {\n // when increasing width hit the offset, show extended border and start pushing down border cards\n // when width is decreasing , show extended border till it reaches to offset.\n const cardWidthChange = event.cardWidth - event.prevCardWidth;\n const currentResizingItemIndex = this._sortedCards?.findIndex((x) => x.rank === event.card.rank);\n\n if (event.cardWidth > event.prevCardWidth) {\n // when increasing size\n // card width increasing currently\n if (event.card.cardState === 1 && cardWidthChange > horizontalResizeOffset + gap && !this._layoutShifted) {\n // index of this card, then get next card. exchange ranks\n this._sortedCards.forEach((card: ResizableCardItemComponent, index: number) => {\n if (index > currentResizingItemIndex) {\n // if there are some cards on same height. make the current card rank higher than these.\n // otherwise next index where it will fit. until any card has less column span than total columns\n // if only in next top, one card is taking full columns\n if (\n card.startingColumnPosition + card.cardWidthColSpan === this._columns &&\n card.cardWidthColSpan !== this._columns\n ) {\n // get cards with top > current top , but minimum of it\n // exchange rank with these card\n this._moveCardDown(index);\n }\n }\n });\n this._layoutShifted = true;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n } else if (\n event.card.cardState === -1 &&\n cardWidthChange < horizontalResizeOffset + gap &&\n this._layoutShifted\n ) {\n // card width decreasing currently\n // move up the cards, if it was shifted while increasing the width\n this._sortedCards.forEach((card: ResizableCardItemComponent) => {\n card.rank = card.prevRank ? card.prevRank : card.rank;\n card.prevRank = 0;\n });\n this._layoutShifted = false;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n }\n } else if (event.cardWidth < event.prevCardWidth) {\n // when decreasing size\n if (event.card.cardState === -1 && -cardWidthChange > horizontalResizeOffset && !this._layoutShifted) {\n // card width decreasing currently\n this._layoutShifted = true;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n } else if (event.card.cardState === 1 && -cardWidthChange < horizontalResizeOffset && this._layoutShifted) {\n // card width increasing currently\n this._layoutShifted = false;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n }\n }\n }\n\n /**\n * @hidden Method to move card down, when another card width is increasing\n * Method to loop till this._columns -1 positions and exchange the rank\n * @param currentCardIndex Index of current card\n */\n private _moveCardDown(currentCardIndex: number): void {\n // taking width of adjacent card col-span into account\n\n // eg: 4 columns - 2 col(adjacent card) = 2 positions can exchange ranks\n const currentCard: ResizableCardItemComponent = this._sortedCards[currentCardIndex];\n let card: ResizableCardItemComponent;\n\n // unoccupiedPositions positions left after currentCard occupies in next row.\n let unoccupiedPositions = this._columns - currentCard.cardWidthColSpan;\n\n currentCard.prevRank = currentCard.rank;\n\n let index = 1;\n while (unoccupiedPositions > 0) {\n // compare from next card\n card = this._sortedCards[index + currentCardIndex];\n if (card && unoccupiedPositions >= card.cardWidthColSpan) {\n card.prevRank = card.rank;\n card.rank -= 1;\n currentCard.rank = card.prevRank;\n unoccupiedPositions -= card.cardWidthColSpan;\n } else {\n unoccupiedPositions = 0;\n }\n index += 1;\n }\n }\n\n /**\n * @hidden updates array with new column heights\n * @param card {ResizableCardItemComponent}\n */\n private _updateColumnsHeight(card: ResizableCardItemComponent): void {\n const directionPosition = this._directionPosition$();\n const columnsStart =\n card[directionPosition] != null ? Math.floor(card[directionPosition]! / horizontalResizeStep) : 0;\n\n // Get width of current card resizing and assign width here for that card\n const cardBaseColSpan = Math.floor(card.cardWidth / horizontalResizeStep);\n\n // till which columns card spans\n const columnsSpan =\n card.cardWidth - cardBaseColSpan * horizontalResizeStep - cardBaseColSpan * gap > horizontalResizeOffset\n ? cardBaseColSpan + 1\n : cardBaseColSpan;\n\n const columnHeight = card.cardHeight + card.top;\n\n for (let i = 0; i < columnsSpan; i++) {\n this._columnsHeight[i + columnsStart] = columnHeight;\n }\n\n if (columnsStart === columnsSpan) {\n this._columnsHeight[columnsStart] = columnHeight;\n }\n }\n\n /**\n * @hidden Try to set card at available heights\n * @param card ResizableCardItemComponent\n * @param index value of card in array of ResizableCardItemComponent\n */\n private _setCardPositionValues(card: ResizableCardItemComponent, index: number): void {\n const directionPosition = this._directionPosition$();\n if (index === 0) {\n card[directionPosition] = 0 + this._paddingLeft;\n card.top = 0;\n card.startingColumnPosition = 0;\n return;\n }\n\n const uniqueHeights = this._getSortedUniqueHeights();\n let cardPositioned = false;\n\n for (let i = 0; i < uniqueHeights.length && !cardPositioned; i++) {\n cardPositioned = this._isPositionSetSuccess(uniqueHeights[i], card);\n }\n }\n\n /**\n * @hidden try to set card at given height.\n * @param height height at which card is getting positioned.\n * @param card ResizableCardItemComponent\n * @returns It returns true when card position id found otherwise it returns false.\n */\n private _isPositionSetSuccess(height: number, card: ResizableCardItemComponent): boolean {\n const directionPosition = this._directionPosition$();\n const columnPositions: number[] = [];\n let index = 0;\n for (const columnHeight of this._columnsHeight) {\n index++;\n if (columnHeight === height) {\n columnPositions.push(index);\n }\n }\n // check for each card position, starting from leftmost\n let isFitting = false;\n let startingColumnPosition = -1;\n\n // try to fit as left (or right if Rtl) as possible from the column position\n startingColumnPosition = this._fitCardColumnPosition(card, columnPositions, height);\n if (startingColumnPosition !== -1) {\n isFitting = true;\n card[directionPosition] =\n startingColumnPosition * horizontalResizeStep +\n this._paddingLeft +\n (startingColumnPosition > 0 ? gap * startingColumnPosition : 0);\n card.top = height + (height > 0 ? verticalResizeStep : 0);\n card.startingColumnPosition = startingColumnPosition;\n }\n return isFitting;\n }\n\n /**\n * @hidden Try to start card position from left most fit position.\n * @param card ResizableCardItemComponent\n * @param columnPositions {Array<number>} Array of available positions for cards.\n * @param height {number} height at which fixing the card\n * @returns {number} returns starting column position where card will fit.\n */\n private _fitCardColumnPosition(\n card: ResizableCardItemComponent,\n columnPositions: Array<number>,\n height: number\n ): number {\n // check for each card position, starting from leftmost\n let isFitting = false;\n let startingColumnPosition = -1;\n\n // start from previous indexes\n const cardBaseColSpan = Math.floor(card.cardWidth / horizontalResizeStep);\n const cardColSpan =\n card.cardWidth - cardBaseColSpan * horizontalResizeStep - cardBaseColSpan * gap > horizontalResizeOffset\n ? cardBaseColSpan + 1\n : cardBaseColSpan;\n // try to set towards left from available card position\n // eg. [1, 2, 3, 4] columnsPositions\n for (const columnPosition of columnPositions) {\n if (isFitting) {\n break;\n }\n\n // startingPosition values will be 1, 2, 3, 4\n // try to fit as left as possible\n let startingPosition = columnPosition - (cardColSpan - 1);\n startingPosition = startingPosition > 0 ? startingPosition : 1;\n\n for (let index = startingPosition; index <= columnPosition && !isFitting; index++) {\n for (let span = 0; span < cardColSpan; span++) {\n if (this._columnsHeight[index + span - 1] <= height && cardColSpan + index - 1 <= this._columns) {\n isFitting = true;\n startingColumnPosition = index - 1;\n } else {\n isFitting = false;\n startingColumnPosition = -1;\n break;\n }\n }\n }\n }\n return startingColumnPosition;\n }\n\n /** @hidden returns sorted unique height of columns */\n private _getSortedUniqueHeights(): number[] {\n const tempArray = this._columnsHeight.slice();\n const sortedColumnsHeightArray = tempArray.sort(comparer);\n const uniqueHeights: number[] = [];\n\n for (const sortedHeight of sortedColumnsHeightArray) {\n if (uniqueHeights.indexOf(sortedHeight) === -1) {\n uniqueHeights.push(sortedHeight);\n }\n }\n function comparer(first: number, second: number): number {\n return first - second;\n }\n return uniqueHeights;\n }\n\n /**\n * @hidden Comparator to sort card based on rank.\n * @param firstCard ResizableCardItemComponent\n * @param secondCard ResizableCardItemComponent\n * @returns : returns difference between first card rank and other card rank.\n */\n private _sortCards(firstCard: ResizableCardItemComponent, secondCard: ResizableCardItemComponent): number {\n return firstCard.rank - secondCard.rank;\n }\n}\n","<div\n #layout\n class=\"fd-resizable-card-layout\"\n [class]=\"'fd-resizable-card-layout--' + layoutSize\"\n [style.width.px]=\"layoutWidth\"\n [style.height.px]=\"layoutHeight\"\n>\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { ResizableCardItemComponent } from './resizable-card-layout/resizable-card-item/resizable-card-item.component';\nimport { ResizableCardLayoutComponent } from './resizable-card-layout/resizable-card-layout.component';\n\n/**\n * @deprecated\n * Use direct imports of `ResizableCardLayoutComponent` and `ResizableCardItemComponent`.\n */\n@NgModule({\n imports: [ResizableCardLayoutComponent, ResizableCardItemComponent],\n exports: [ResizableCardLayoutComponent, ResizableCardItemComponent]\n})\nexport class ResizableCardLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-resizable-card-layout.mjs","sources":["../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.ts","../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.html","../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.ts","../../../../libs/core/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.html","../../../../libs/core/resizable-card-layout/resizable-card-layout.module.ts","../../../../libs/core/resizable-card-layout/fundamental-ngx-core-resizable-card-layout.ts"],"sourcesContent":["import { FocusableOption } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nexport type ResizeDirection = 'vertical' | 'horizontal' | 'both';\n\n// Card resizes in step of fixed values. values are in pixel\nexport const horizontalResizeStep = 320;\n\n// vertical resize step\nexport const verticalResizeStep = 16;\n\n// gap of 1rem between the cards\nexport const gap = 16;\n\n// threshold offset for horizontal resizing.\nexport const horizontalResizeOffset = 160;\n\n// threshold offset for vertical resizing.\nexport const verticalResizeOffset = 8;\n\n// state of card. Increasing width, no change or decreasing width.\nexport type CardState = 1 | 0 | -1;\n\n// card is given numeric value, on which sorting of cards is done\nlet cardRank = 1;\nlet cardUniqueId = 0;\n\n@Component({\n selector: 'fd-resizable-card-item',\n templateUrl: 'resizable-card-item.component.html',\n styleUrl: './resizable-card-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgTemplateOutlet]\n})\nexport class ResizableCardItemComponent implements FocusableOption, OnDestroy {\n /** Card properties from the config */\n @Input()\n set config(config: ResizableCardItemConfig) {\n this._config = config;\n this._initialSetup();\n this._cd.detectChanges();\n }\n get config(): ResizableCardItemConfig {\n return this._config;\n }\n\n /** set uinque id for the card */\n @Input()\n itemId = `fd-card-item-${cardUniqueId++}`;\n\n /** set title of the card */\n @Input()\n title: string;\n\n /**\n * Serial order of card.\n * cards are sorted based on ranks before displaying layout.\n * card with lower rank will be displayed first in layout than the card with higher rank.\n */\n @Input()\n set rank(rankValue: number) {\n // determine max value between user given value and default value\n this._rank = rankValue ? rankValue : cardRank++;\n if (rankValue > cardRank) {\n cardRank = rankValue;\n }\n }\n get rank(): number {\n return this._rank;\n }\n\n /**\n * Number of column span card width takes.\n * It will be in step of 20rem.\n */\n @Input()\n set cardWidthColSpan(colSpan: number) {\n this._cardWidthColSpan = colSpan;\n this._setCardWidth();\n }\n get cardWidthColSpan(): number {\n return this._cardWidthColSpan;\n }\n\n /**\n * Number of row span, card height takes.\n * It will be in the step of 1rem.\n */\n @Input()\n set cardHeightRowSpan(rowSpan: number) {\n this._cardHeightRowSpan = rowSpan;\n this._setCardHeight();\n }\n get cardHeightRowSpan(): number {\n return this._cardHeightRowSpan;\n }\n\n /**\n * Number of row span card mini header height takes.\n * Mini Header: The smallest representation of the card is the header.\n * The card can be collapsed to only its header height.\n */\n @Input()\n set cardMiniHeaderRowSpan(rowSpan: number) {\n this._cardMiniHeaderRowSpan = rowSpan;\n this._setCardMiniHeaderHeight();\n }\n get cardMiniHeaderRowSpan(): number {\n return this._cardMiniHeaderRowSpan;\n }\n\n /**\n * Number of row span card mini content height takes.\n * Mini Content: The minimum height for the card content depends on the card type,\n * and must be as high as the smallest representation of the content.\n */\n @Input()\n set cardMiniContentRowSpan(rowSpan: number) {\n this._cardMiniContentRowSpan = rowSpan;\n this._setCardMiniContentHeight();\n }\n get cardMiniContentRowSpan(): number {\n return this._cardMiniContentRowSpan ?? 0;\n }\n\n /** Card can be set to resizable=false, to restrict card resize */\n @Input()\n resizable = true;\n\n /** Set left position for the card */\n @Input()\n @HostBinding('style.left.px')\n left: Nullable<number>;\n\n /** Set right position for the card */\n @Input()\n @HostBinding('style.right.px')\n right: Nullable<number>;\n\n /** Set top position for the card*/\n @Input()\n @HostBinding('style.top.px')\n top = 0;\n\n /** @hidden while resizing this value will change to a greater value */\n @HostBinding('style.z-index')\n zIndex = 0;\n\n /** @hidden */\n @HostBinding('style.position')\n position = 'absolute';\n\n /** @hidden transition animation when layout re-draws */\n @HostBinding('class.fd-resizable-card-layout__draw-transition')\n reDrawAnimation = true;\n\n /** Emits when card is still resizing */\n @Output()\n resizing: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card resize is completed */\n @Output()\n resized: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card height is reduced to show only header */\n @Output()\n miniHeaderReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when minimum height of card content area is reached */\n @Output()\n miniContentReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** show corner resize icon on hover over card */\n showingResizeIcon = false;\n\n /** show border when card is resizing */\n showBorder = false;\n\n /** starting column position of card. starts with 0 */\n startingColumnPosition: number;\n\n /** card width in px. Default value to 20rem */\n cardWidth: number = horizontalResizeStep;\n\n /** card height in px */\n cardHeight: number;\n\n /** Mini-header height of card */\n cardMiniHeaderHeight: number;\n\n /** Mini-content height of card to display minimum valid content */\n cardMiniContentHeight: number;\n\n /** Outer resize indication border width for the card */\n resizeIndicationBorderWidth = 0;\n\n /**\n * Denotes if card is currently expanding or contracting horizontally.\n * +1 denotes increasing, -1 denotes decreasing and 0 denotes card-state has not changed horizontally.\n */\n cardState: CardState = 0;\n\n /** Change in rank from previous value*/\n prevRank = 0;\n\n /** @hidden Default width of card is 20rem ie. 1 column */\n private _cardWidthColSpan = 1;\n\n /** @hidden */\n private _cardHeightRowSpan: number;\n\n /** @hidden helps in vertical step change event emit */\n private _prevCardHeightRowSpan: number;\n\n /** @hidden */\n private _cardMiniHeaderRowSpan: number;\n\n /** @hidden */\n private _cardMiniContentRowSpan?: number;\n\n /** @hidden config values for card */\n private _config: ResizableCardItemConfig;\n\n /** @hidden previous cursor x position */\n private _prevX: number;\n\n /** @hidden previous cursor y position */\n private _prevY: number;\n\n /** @hidden */\n private _prevCardWidth: number;\n\n /** @hidden */\n private _prevCardHeight: number;\n\n /** @hidden flag to control resize */\n private _resize = false;\n\n /** @hidden */\n private _resizeDirection: ResizeDirection;\n\n /** @hidden */\n private _maxColumn: number;\n\n /**\n * @hidden stores original width span of card.\n * It may reduce on small screen, so have to restore using this.\n */\n private _originalCardWidthSpan = 0;\n\n /** @hidden */\n private _rank: number;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private readonly _cd: ChangeDetectorRef,\n public readonly elementRef: ElementRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /**\n * @hidden When mouse moves to resize the card.\n * using window:mousemove so, resize will happen smoothly\n * @param event {MouseEvent}\n */\n @HostListener('window:mousemove', ['$event'])\n onMouseMove(event: MouseEvent): void {\n event.preventDefault();\n if (!this.resizable) {\n return;\n }\n\n // saves from un-necessary resize\n if (!this._resize) {\n return;\n }\n\n if (!this.showBorder) {\n this.showBorder = true;\n }\n\n // resizing card will go over other cards\n this.zIndex = 1;\n\n const { clientX, clientY } = event;\n switch (this._resizeDirection) {\n case 'both':\n this._horizontalResizing(clientX);\n this._verticalResizing(clientY);\n break;\n case 'horizontal':\n this._horizontalResizing(clientX);\n break;\n case 'vertical':\n this._verticalResizing(clientY);\n break;\n default:\n this._horizontalResizing(clientX);\n this._verticalResizing(clientY);\n }\n\n const cardWidthColSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n const cardWidthWithColumn = cardWidthColSpan * horizontalResizeStep + cardWidthColSpan * gap;\n\n const horizontalResizeThresholdReached = this.cardWidth - cardWidthWithColumn > horizontalResizeOffset;\n\n if (clientX > this._prevX) {\n // increasing width\n this.cardState = 1;\n\n if (horizontalResizeThresholdReached) {\n const futureCardWidth = (cardWidthColSpan + 1) * horizontalResizeStep + cardWidthColSpan * gap;\n this.resizeIndicationBorderWidth = futureCardWidth - this.cardWidth;\n } else {\n this.resizeIndicationBorderWidth = 0;\n }\n } else if (clientX < this._prevX) {\n // decreasing width\n this.cardState = -1;\n if (horizontalResizeThresholdReached) {\n const futureCardWidth = (cardWidthColSpan + 1) * horizontalResizeStep + cardWidthColSpan * gap;\n this.resizeIndicationBorderWidth = futureCardWidth - this.cardWidth;\n } else {\n this.resizeIndicationBorderWidth = 0;\n }\n }\n\n this._prevX = clientX;\n this._prevY = clientY;\n this._cd.detectChanges();\n\n // Emits resizing event.\n this.resizing.emit(this.getResizedEventObject());\n }\n\n /**\n * when resizing of card stops\n */\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(): void {\n if (!this.resizable) {\n return;\n }\n // if card was not resizing\n if (!this._resize) {\n return;\n }\n\n // increase/decrease width of card in order of 20rem\n if (Math.abs(this.cardWidth - this._prevCardWidth) > 0) {\n this._horizontalStepResizing();\n }\n\n // increase/decrease height of card in order of 1rem\n if (Math.abs(this.cardHeight - this._prevCardHeight) > 0) {\n this._verticalStepResizing();\n }\n\n this._stopResizing();\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /**\n * When resize handler is pressed and resizing may start.\n * @param event {MouseEvent}\n * @param resizeDirection which handler is pressed to resize\n */\n onMouseDown(event: MouseEvent, resizeDirection: ResizeDirection): void {\n event.preventDefault();\n if (!this.resizable) {\n return;\n }\n\n this.showingResizeIcon = true;\n this._resize = true;\n this._prevX = event.clientX;\n this._prevY = event.clientY;\n this._prevCardWidth = this.cardWidth;\n this._prevCardHeight = this.cardHeight;\n this._resizeDirection = resizeDirection;\n }\n\n /** Sets focus on the element */\n focus(): void {\n const header = this.elementRef.nativeElement.querySelector('.fd-card__header');\n header?.focus();\n }\n\n /** Shows resize icon */\n showResizeIcon(): void {\n if (!this.resizable) {\n return;\n }\n this.showingResizeIcon = true;\n }\n\n /** Hides resize icon */\n hideResizeIcon(): void {\n if (!this._resize) {\n this.showingResizeIcon = false;\n }\n }\n\n /** Returns max width for card, based on layout size passed */\n getMaxColSpan(layoutSize: string): number {\n switch (layoutSize) {\n case 'sm':\n this._maxColumn = 1;\n break;\n case 'md':\n this._maxColumn = 2;\n break;\n case 'lg':\n this._maxColumn = 3;\n break;\n case 'xl':\n this._maxColumn = 4;\n break;\n default:\n this._maxColumn = 1;\n }\n return this._maxColumn;\n }\n\n /** Update card width if it exceeds column span based on layout */\n verifyUpdateCardWidth(layoutSize: string): void {\n const widthColSpan = this._config?.cardWidthColSpan || this.cardWidthColSpan;\n // storing original width of card.\n // used to restore width on window resize from small to large\n this._originalCardWidthSpan = !this._originalCardWidthSpan ? widthColSpan : this._originalCardWidthSpan;\n this._maxColumn = this.getMaxColSpan(layoutSize);\n if (widthColSpan > this._maxColumn) {\n this.cardWidthColSpan = this._maxColumn;\n this._setCardWidth();\n // Emits resized event.\n this.resized.emit(this.getResizedEventObject());\n } else {\n // keep card width minimum, so it can fit in screen.\n this.cardWidthColSpan = Math.min(this._maxColumn, this._originalCardWidthSpan);\n this._setCardWidth();\n // Emits resized event.\n this.resized.emit(this.getResizedEventObject());\n }\n }\n\n /** Returns ResizedEvent object to emit. */\n getResizedEventObject(): ResizedEvent {\n const newCardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n const newCardWidthColSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n const newCardWidth = newCardWidthColSpan * horizontalResizeStep + newCardWidthColSpan * gap;\n\n const horizontalResizeThresholdReached = this.cardWidth - newCardWidth > horizontalResizeOffset;\n const newCardColSpan = horizontalResizeThresholdReached ? newCardWidthColSpan + 1 : newCardWidthColSpan;\n return new ResizedEvent(\n this,\n this._prevCardWidth,\n this._prevCardHeight,\n this.cardWidth,\n this.cardHeight,\n this._cardWidthColSpan,\n this._cardHeightRowSpan,\n newCardColSpan,\n newCardHeightRowSpan\n );\n }\n\n /** @hidden Return previous height row span of the card */\n get previousCardHeightRowSpan(): number {\n return this._prevCardHeightRowSpan;\n }\n\n /** @hidden Set card properties using config received */\n private _initialSetup(): void {\n this.cardWidthColSpan = this._config?.cardWidthColSpan || this.cardWidthColSpan;\n this.cardHeightRowSpan = this._config?.cardHeightRowSpan || this.cardHeightRowSpan;\n this.title = this._config?.title || this.title;\n this.rank = this._config?.rank || this.rank;\n this.cardMiniHeaderRowSpan = this._config?.cardMiniHeaderRowSpan || this.cardMiniHeaderRowSpan;\n this.cardMiniContentRowSpan = this._config?.cardMiniContentRowSpan || this.cardMiniContentRowSpan;\n this.resizable = this._config.resizable || this.resizable;\n }\n\n /** @hidden Returns true when resize offset is crossed */\n private _horizontalResizeWithOffset(): void {\n // positive value indicates that width has increased\n const widthIncrement = this.cardWidth - this._prevCardWidth;\n const cardSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n const cardSpanFraction = this.cardWidth % horizontalResizeStep;\n\n // when width increases\n if (widthIncrement > 0) {\n if (widthIncrement < horizontalResizeOffset + gap) {\n // widthIncrement is less than offset, do not increase width\n this.cardWidth = this._prevCardWidth;\n } else {\n // check value of cardSpanFraction, including gaps in cards\n const isCardSpanFractionCrossingOffset =\n cardSpanFraction - (cardSpan - 1) * gap > horizontalResizeOffset;\n this.cardWidth = isCardSpanFractionCrossingOffset\n ? (cardSpan + 1) * horizontalResizeStep\n : cardSpan * horizontalResizeStep;\n }\n } else {\n // when width decreases\n if (Math.abs(widthIncrement) < horizontalResizeOffset) {\n // widthIncrement is less than offset, do not decrease width\n this.cardWidth = this._prevCardWidth;\n } else {\n // check value of cardSpanFraction, including gaps in cards\n const isCardSpanFractionCrossingOffset = cardSpanFraction - cardSpan * gap > horizontalResizeOffset;\n this.cardWidth = isCardSpanFractionCrossingOffset\n ? (cardSpan + 1) * horizontalResizeStep\n : cardSpan * horizontalResizeStep;\n }\n }\n }\n\n /**\n * @hidden make horizontal resize only on step of 20rem\n */\n private _horizontalStepResizing(): void {\n this._horizontalResizeWithOffset();\n\n // Add inner gap in cardWidth if width is more than 1 column\n if (this.cardWidth > horizontalResizeStep) {\n this.cardWidth = this.cardWidth + (this.cardWidth / horizontalResizeStep - 1) * gap;\n }\n this.cardWidthColSpan = Math.floor(this.cardWidth / horizontalResizeStep);\n }\n\n /**\n * @hidden make vertical resize only on step of 1rem\n */\n private _verticalStepResizing(): void {\n // positive value indicates that height has increased\n const cardHeightSpan = Math.floor(this.cardHeight / verticalResizeStep);\n const cardSpanFraction = this.cardHeight % verticalResizeStep;\n this.cardHeight =\n cardSpanFraction > verticalResizeOffset\n ? (cardHeightSpan + 1) * verticalResizeStep\n : cardHeightSpan * verticalResizeStep;\n\n this.cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n }\n\n /**\n * @hidden Resize card horizontally by checking boundary condition\n * @param xPosition current x-position of cursor\n */\n private _horizontalResizing(xPosition: number): void {\n const difference = this._prevX - xPosition;\n this.cardWidth = this._rtlService?.rtlSignal() ? this.cardWidth + difference : this.cardWidth - difference;\n\n const totalIndentation = (this._maxColumn - 1) * gap;\n const maxCardWidtWithoutIndentation = this._maxColumn * horizontalResizeStep;\n\n const maxCardWidth = this._rtlService?.rtlSignal()\n ? maxCardWidtWithoutIndentation - totalIndentation\n : maxCardWidtWithoutIndentation + totalIndentation;\n\n if (this.cardWidth > maxCardWidth) {\n this.cardWidth = maxCardWidth;\n } else if (this.cardWidth < horizontalResizeStep) {\n this.cardWidth = horizontalResizeStep;\n }\n }\n\n /**\n * @hidden Resize card vertically.\n * takes care of mini-header height and mini-content height\n * @param yPosition current y-position of cursor\n */\n private _verticalResizing(yPosition: number): void {\n let reachingMiniHeader = false;\n\n if (this.cardHeight === this.cardMiniHeaderHeight) {\n // if card height is already at mini-header height\n if (this._prevY - yPosition > 0) {\n // decreasing height\n // if miniHeader height reached, stop resizing\n this.cardHeight = this.cardMiniHeaderHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n } else {\n // increasing height\n this.cardHeight = this.cardMiniHeaderHeight + this.cardMiniContentHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n this._stopResizing();\n this.miniContentReached.emit(this.getResizedEventObject());\n }\n } else if (this.cardHeight < this.cardMiniContentHeight + this.cardMiniHeaderHeight) {\n // if card height is between mini-header and mini-content\n if (this._prevY - yPosition < 0) {\n this.cardHeight = this.cardMiniHeaderHeight + this.cardMiniContentHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n this._stopResizing();\n this.miniContentReached.emit(this.getResizedEventObject());\n }\n } else if (\n this.cardHeight === this.cardMiniContentHeight + this.cardMiniHeaderHeight &&\n this._prevY - yPosition > 0\n ) {\n // decreasing height\n // height decreasing after reaching mini-content. this needs to differentiate\n // from height decreasing and reaching to mini-content.\n reachingMiniHeader = true;\n this.cardHeight = this.cardMiniHeaderHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n // miniHeader height reached, stop resizing\n this._stopResizing();\n this.miniHeaderReached.emit(this.getResizedEventObject());\n } else {\n this.cardHeight = this.cardHeight - (this._prevY - yPosition);\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n }\n\n // stop resizing on miniContent height\n if (\n this.cardHeight <= this.cardMiniContentHeight + this.cardMiniHeaderHeight &&\n this._prevY - yPosition > 0 &&\n !reachingMiniHeader\n ) {\n this.cardHeight = this.cardMiniContentHeight + this.cardMiniHeaderHeight;\n this._prevCardHeightRowSpan = this._cardHeightRowSpan;\n this._cardHeightRowSpan = Math.floor(this.cardHeight / verticalResizeStep);\n this.miniContentReached.emit(this.getResizedEventObject());\n this._stopResizing();\n }\n\n // while corner resize, width might have increased and reached to mini-content height.\n // so, on mini-content resize will stop, but have to do step resizing for vertical and horizontal.\n if (!this._resize) {\n // increase/decrease width of card in order of 20rem\n if (Math.abs(this.cardWidth - this._prevCardWidth) > 0) {\n this._horizontalStepResizing();\n }\n\n // increase/decrease height of card in order of 1rem\n if (Math.abs(this.cardHeight - this._prevCardHeight) > 0) {\n this._verticalStepResizing();\n }\n }\n }\n\n /** @hidden reset involved variables while resizing */\n private _stopResizing(): void {\n if (this._resize) {\n this.cardState = 0;\n this.resizeIndicationBorderWidth = 0;\n this._resize = false;\n this.zIndex = 0;\n this.showBorder = false;\n this.resized.emit(this.getResizedEventObject());\n }\n }\n\n /** @hidden Returns cardWidth based on card column span */\n private _setCardWidth(): void {\n this.cardWidth = this._cardWidthColSpan * horizontalResizeStep + (this._cardWidthColSpan - 1) * gap;\n this._cd.markForCheck();\n }\n\n /** @hidden Returns cardHeight based on card row span */\n private _setCardHeight(): void {\n this.cardHeight = this._cardHeightRowSpan * verticalResizeStep;\n this._cd.markForCheck();\n }\n\n /** @hidden Returns card mini header height */\n private _setCardMiniHeaderHeight(): void {\n this.cardMiniHeaderHeight = this._cardMiniHeaderRowSpan * verticalResizeStep;\n this._cd.markForCheck();\n }\n\n /** @hidden Returns card mini content height */\n private _setCardMiniContentHeight(): void {\n this.cardMiniContentHeight = this.cardMiniContentRowSpan * verticalResizeStep;\n this._cd.markForCheck();\n }\n}\n\n/** Config interface for card properties */\nexport interface ResizableCardItemConfig {\n title?: string;\n rank?: number;\n cardWidthColSpan?: number;\n cardHeightRowSpan?: number;\n cardMiniHeaderRowSpan?: number;\n cardMiniContentRowSpan?: number;\n resizable?: boolean;\n}\n\n/** Object to emit on resize complete */\nexport class ResizedEvent {\n /**\n * Object to emit on resize complete\n * @param card\n * @param prevCardWidth Previous card width\n * @param prevCardHeight Previous card height\n * @param cardWidth Current card width\n * @param cardHeight Current card height\n * @param cardWidthColSpan Current card width column span\n * @param cardHeightRowSpan Current card height row span\n * @param newCardWidthColSpan New card width column span\n * @param newCardHeightRowSpan New card height row span\n */\n constructor(\n public card: ResizableCardItemComponent,\n public prevCardWidth: number,\n public prevCardHeight: number,\n public cardWidth: number,\n public cardHeight: number,\n public cardWidthColSpan: number,\n public cardHeightRowSpan: number,\n public newCardWidthColSpan: number,\n public newCardHeightRowSpan: number\n ) {}\n}\n","<div\n class=\"fd-resizable-card-layout__item\"\n [class.fd-resizable-card-layout__indication-border]=\"showBorder\"\n #resizeCard\n>\n <div\n class=\"fd-resizable-card-layout__item--border-display fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"cardWidth\"\n [style.height.px]=\"cardHeight\"\n (mouseenter)=\"showResizeIcon()\"\n (mouseleave)=\"hideResizeIcon()\"\n >\n <div class=\"fd-resizable-card-layout__card\">\n <ng-content></ng-content>\n @if (showingResizeIcon) {\n <div class=\"fd-resizable-card-layout__icon-wrapper\">\n <div\n class=\"fd-resizable-card-layout__icon\"\n #cornerHandle\n (mousedown)=\"onMouseDown($event, 'both')\"\n ></div>\n </div>\n }\n </div>\n @if (resizable) {\n <ng-template [ngTemplateOutlet]=\"verticalHandleTemplate\"></ng-template>\n <ng-template [ngTemplateOutlet]=\"horizontalHandleTemplate\"></ng-template>\n }\n </div>\n <div\n class=\"fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"resizeIndicationBorderWidth\"\n [style.height.px]=\"cardHeight\"\n ></div>\n</div>\n<ng-template #verticalHandleTemplate>\n <div\n #verticalHandle\n class=\"fd-resizable-card-layout__resize--vertical\"\n (mousedown)=\"onMouseDown($event, 'horizontal')\"\n ></div>\n</ng-template>\n<ng-template #horizontalHandleTemplate>\n <div\n #horizontalHandle\n class=\"fd-resizable-card-layout__resize--horizontal\"\n (mousedown)=\"onMouseDown($event, 'vertical')\"\n ></div>\n</ng-template>\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewEncapsulation,\n computed,\n inject\n} from '@angular/core';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport {\n ResizableCardItemComponent,\n ResizableCardItemConfig,\n ResizedEvent,\n gap,\n horizontalResizeOffset,\n horizontalResizeStep,\n verticalResizeStep\n} from './resizable-card-item/resizable-card-item.component';\n\nexport type LayoutSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type ResizableCardLayoutConfig = Array<ResizableCardItemConfig>;\n\n@Component({\n selector: 'fd-resizable-card-layout',\n templateUrl: 'resizable-card-layout.component.html',\n styleUrl: './resizable-card-layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class ResizableCardLayoutComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n /** Object for setting each card property */\n @Input()\n layoutConfig: ResizableCardLayoutConfig;\n\n /** Emits when card resize is reached to one new step in horizontal or vertical direction */\n @Output()\n stepChange: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card is still resizing */\n @Output()\n resizing: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card resize is completed */\n @Output()\n resized: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when card height is reduced to show only header */\n @Output()\n miniHeaderReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when minimum height of card content area is reached */\n @Output()\n miniContentReached: EventEmitter<ResizedEvent> = new EventEmitter<ResizedEvent>();\n\n /** Emits when layout changes */\n @Output()\n layoutChange: EventEmitter<ResizableCardLayoutConfig> = new EventEmitter<ResizableCardLayoutConfig>();\n\n /** @hidden */\n @ContentChildren(ResizableCardItemComponent)\n resizeCardItems: QueryList<ResizableCardItemComponent>;\n\n /** width for layout */\n layoutWidth: number;\n\n /** height for layout */\n layoutHeight: number;\n\n /** @hidden Number of columns in layout. considering 1 column width 20rem */\n private _columns: number;\n\n /** @hidden Layout padding. will be added to first card padding in every row */\n private _paddingLeft: number;\n\n /** @hidden Stores height of each column on card arrangement */\n private _columnsHeight: Array<number>;\n\n /** @hidden Available screen layout */\n private _layout: LayoutSize;\n\n /** @hidden Stores sorted card before placing in layout */\n private _sortedCards: Array<ResizableCardItemComponent>;\n\n /** @hidden FocusKeyManager instance */\n private _keyboardEventsManager: FocusKeyManager<ResizableCardItemComponent>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _layoutShifted = false;\n\n /** @hidden */\n private _directionPosition$ = computed<'left' | 'right'>(() => (this._rtlService?.rtlSignal() ? 'right' : 'left'));\n\n /** @hidden */\n constructor(\n private readonly _cd: ChangeDetectorRef,\n public readonly elementRef: ElementRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** @hidden handles keyboard accessibility */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent): void {\n event.stopImmediatePropagation();\n if (!this._keyboardEventsManager.activeItemIndex) {\n this._keyboardEventsManager.setFirstItemActive();\n }\n\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /** @hidden */\n @HostListener('window:resize')\n onResize(): void {\n this._createLayout();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._columnsHeight = new Array(this._columns);\n this._columnsHeight.fill(0);\n // initialise value 0\n // detect initial window size and set layout\n this._createLayout();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._initialSetup();\n // listen for query-list change\n this.resizeCardItems?.forEach((card) => {\n card?.verifyUpdateCardWidth(this.layoutSize);\n });\n\n this.resizeCardItems.changes.subscribe(() => {\n this.arrangeCards(this.resizeCardItems?.toArray());\n });\n this.arrangeCards(this.resizeCardItems?.toArray());\n this._cd.markForCheck();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._accessibilitySetup();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyboardEventsManager?.destroy();\n }\n\n /** Layout size. Available options are 'sm', 'md', 'lg' and 'xl' */\n set layoutSize(layoutSize: LayoutSize) {\n this._layout = layoutSize;\n }\n get layoutSize(): LayoutSize {\n return this._layout;\n }\n\n /**\n * Arranges cards in layout based on rank, width and height of card\n * @param cards Array of ResizableCardItemComponent\n */\n arrangeCards(cards: Array<ResizableCardItemComponent>): void {\n this._columnsHeight = new Array(this._columns);\n this._columnsHeight.fill(0);\n // sort based on the card rank\n this._sortedCards = cards?.sort(this._sortCards);\n\n this._sortedCards?.forEach((card, index) => {\n this._setCardPositionValues(card, index);\n this._updateColumnsHeight(card);\n });\n this.layoutHeight = Math.max.apply(null, this._columnsHeight) + verticalResizeStep;\n\n this._emitLayoutChange();\n this._cd.markForCheck();\n }\n\n /**\n * Handles shifting of cards with animation, while card is still resizing.\n * @param event {ResizedEvent}\n */\n cardResizing(event: ResizedEvent): void {\n this.resizing.emit(event);\n this._handleHorizontalResize(event);\n this._handleVerticalResize(event);\n }\n\n /**\n * Handles arrangement of cards in layout\n * @param event {ResizedEvent}\n */\n cardResizeComplete(event: ResizedEvent): void {\n this._layoutShifted = false;\n this.arrangeCards(this.resizeCardItems.toArray());\n this.resized.emit(event);\n }\n\n /** @hidden */\n updateLayout(): void {\n this.resizeCardItems?.forEach((card) => {\n card?.verifyUpdateCardWidth(this.layoutSize);\n });\n this.arrangeCards(this.resizeCardItems?.toArray());\n }\n\n /**\n * method to get screen width\n * @returns Window width in px\n */\n getWidthAvailable(): number {\n return window.innerWidth;\n }\n\n /** @hidden Subscribe to events from items */\n private _initialSetup(): void {\n // listen for resizing event of card item\n this.resizeCardItems?.forEach((resizeCardItem, index) => {\n if (this.layoutConfig && this.layoutConfig.length >= index + 1) {\n resizeCardItem.config = this.layoutConfig[index];\n }\n\n resizeCardItem.resizing\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => this.cardResizing(event));\n\n // listen for resize complete event of card item\n resizeCardItem.resized\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => this.cardResizeComplete(event));\n\n // listen for mini-header height event of card item\n resizeCardItem.miniHeaderReached\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => {\n this.miniHeaderReached.emit(event);\n this.stepChange.emit(event);\n });\n\n // listen for mini-content height event of card item\n resizeCardItem.miniContentReached\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: ResizedEvent) => {\n this.miniContentReached.emit(event);\n this.stepChange.emit(event);\n });\n });\n }\n\n /** @hidden */\n private _accessibilitySetup(): void {\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this.resizeCardItems).withWrap();\n }\n\n /** @hidden create layout based on layout size */\n private _createLayout(): void {\n const screenWidth = this.getWidthAvailable();\n const prevLayoutSize = this.layoutSize;\n\n if (screenWidth > 0 && screenWidth <= 656 && prevLayoutSize !== 'sm') {\n this.layoutSize = 'sm';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n } else if (screenWidth > 656 && screenWidth <= 975 && prevLayoutSize !== 'md') {\n this.layoutSize = 'md';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n } else if (screenWidth > 975 && screenWidth <= 1359 && prevLayoutSize !== 'lg') {\n this.layoutSize = 'lg';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n } else if (screenWidth > 1359 && prevLayoutSize !== 'xl') {\n this.layoutSize = 'xl';\n this._setLayoutColumns(this.layoutSize);\n this.updateLayout();\n }\n }\n\n /** @hidden Emit layoutChange event with updated card dimensions */\n private _emitLayoutChange(): void {\n const latestCardConfig: ResizableCardLayoutConfig = [];\n this.resizeCardItems?.forEach((card) => {\n const cardConfig: ResizableCardItemConfig = {};\n cardConfig.cardWidthColSpan = card.cardWidthColSpan;\n cardConfig.cardHeightRowSpan = card.cardHeightRowSpan;\n cardConfig.rank = card.rank;\n cardConfig.title = card.title;\n cardConfig.cardMiniContentRowSpan = card.cardMiniContentRowSpan;\n cardConfig.cardMiniHeaderRowSpan = card.cardMiniHeaderRowSpan;\n cardConfig.resizable = card.resizable;\n latestCardConfig.push(cardConfig);\n });\n this.layoutChange.emit(latestCardConfig);\n }\n\n /**\n * @hidden Sets number of column in layout, based on LayoutSize passed\n * @param layoutSize {'sm' | 'md' | 'lg' | 'xl'}\n */\n private _setLayoutColumns(layoutSize: LayoutSize): void {\n let layoutWidthDefault: number;\n\n switch (layoutSize) {\n case 'sm':\n this._columns = 1;\n this._paddingLeft = 8;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault;\n break;\n case 'md':\n this._columns = 2;\n this._paddingLeft = 16;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + gap;\n break;\n case 'lg':\n this._columns = 3;\n this._paddingLeft = 16;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + 2 * gap;\n break;\n case 'xl':\n this._columns = 4;\n this._paddingLeft = 48;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + 3 * gap;\n break;\n default:\n this._columns = 4;\n this._paddingLeft = 48;\n layoutWidthDefault = this._columns * horizontalResizeStep + 2 * this._paddingLeft;\n this.layoutWidth = layoutWidthDefault + 3 * gap;\n }\n }\n\n /**\n * @hidden Method to handle card vertical resize and trigger the layout change\n * @param event {ResizedEvent}\n */\n private _handleVerticalResize(event: ResizedEvent): void {\n if (event.card.cardHeightRowSpan !== event.card.previousCardHeightRowSpan) {\n this.arrangeCards(this._sortedCards);\n this._cd.markForCheck();\n this.stepChange.emit(event.card.getResizedEventObject());\n }\n }\n\n /**\n * @hidden Method to handle card horizontal resize and trigger the layout change\n * @param event {ResizedEvent}\n */\n private _handleHorizontalResize(event: ResizedEvent): void {\n // when increasing width hit the offset, show extended border and start pushing down border cards\n // when width is decreasing , show extended border till it reaches to offset.\n const cardWidthChange = event.cardWidth - event.prevCardWidth;\n const currentResizingItemIndex = this._sortedCards?.findIndex((x) => x.rank === event.card.rank);\n\n if (event.cardWidth > event.prevCardWidth) {\n // when increasing size\n // card width increasing currently\n if (event.card.cardState === 1 && cardWidthChange > horizontalResizeOffset + gap && !this._layoutShifted) {\n // index of this card, then get next card. exchange ranks\n this._sortedCards.forEach((card: ResizableCardItemComponent, index: number) => {\n if (index > currentResizingItemIndex) {\n // if there are some cards on same height. make the current card rank higher than these.\n // otherwise next index where it will fit. until any card has less column span than total columns\n // if only in next top, one card is taking full columns\n if (\n card.startingColumnPosition + card.cardWidthColSpan === this._columns &&\n card.cardWidthColSpan !== this._columns\n ) {\n // get cards with top > current top , but minimum of it\n // exchange rank with these card\n this._moveCardDown(index);\n }\n }\n });\n this._layoutShifted = true;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n } else if (\n event.card.cardState === -1 &&\n cardWidthChange < horizontalResizeOffset + gap &&\n this._layoutShifted\n ) {\n // card width decreasing currently\n // move up the cards, if it was shifted while increasing the width\n this._sortedCards.forEach((card: ResizableCardItemComponent) => {\n card.rank = card.prevRank ? card.prevRank : card.rank;\n card.prevRank = 0;\n });\n this._layoutShifted = false;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n }\n } else if (event.cardWidth < event.prevCardWidth) {\n // when decreasing size\n if (event.card.cardState === -1 && -cardWidthChange > horizontalResizeOffset && !this._layoutShifted) {\n // card width decreasing currently\n this._layoutShifted = true;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n } else if (event.card.cardState === 1 && -cardWidthChange < horizontalResizeOffset && this._layoutShifted) {\n // card width increasing currently\n this._layoutShifted = false;\n this.arrangeCards(this._sortedCards);\n this.stepChange.emit(event.card.getResizedEventObject());\n }\n }\n }\n\n /**\n * @hidden Method to move card down, when another card width is increasing\n * Method to loop till this._columns -1 positions and exchange the rank\n * @param currentCardIndex Index of current card\n */\n private _moveCardDown(currentCardIndex: number): void {\n // taking width of adjacent card col-span into account\n\n // eg: 4 columns - 2 col(adjacent card) = 2 positions can exchange ranks\n const currentCard: ResizableCardItemComponent = this._sortedCards[currentCardIndex];\n let card: ResizableCardItemComponent;\n\n // unoccupiedPositions positions left after currentCard occupies in next row.\n let unoccupiedPositions = this._columns - currentCard.cardWidthColSpan;\n\n currentCard.prevRank = currentCard.rank;\n\n let index = 1;\n while (unoccupiedPositions > 0) {\n // compare from next card\n card = this._sortedCards[index + currentCardIndex];\n if (card && unoccupiedPositions >= card.cardWidthColSpan) {\n card.prevRank = card.rank;\n card.rank -= 1;\n currentCard.rank = card.prevRank;\n unoccupiedPositions -= card.cardWidthColSpan;\n } else {\n unoccupiedPositions = 0;\n }\n index += 1;\n }\n }\n\n /**\n * @hidden updates array with new column heights\n * @param card {ResizableCardItemComponent}\n */\n private _updateColumnsHeight(card: ResizableCardItemComponent): void {\n const directionPosition = this._directionPosition$();\n const columnsStart =\n card[directionPosition] != null ? Math.floor(card[directionPosition]! / horizontalResizeStep) : 0;\n\n // Get width of current card resizing and assign width here for that card\n const cardBaseColSpan = Math.floor(card.cardWidth / horizontalResizeStep);\n\n // till which columns card spans\n const columnsSpan =\n card.cardWidth - cardBaseColSpan * horizontalResizeStep - cardBaseColSpan * gap > horizontalResizeOffset\n ? cardBaseColSpan + 1\n : cardBaseColSpan;\n\n const columnHeight = card.cardHeight + card.top;\n\n for (let i = 0; i < columnsSpan; i++) {\n this._columnsHeight[i + columnsStart] = columnHeight;\n }\n\n if (columnsStart === columnsSpan) {\n this._columnsHeight[columnsStart] = columnHeight;\n }\n }\n\n /**\n * @hidden Try to set card at available heights\n * @param card ResizableCardItemComponent\n * @param index value of card in array of ResizableCardItemComponent\n */\n private _setCardPositionValues(card: ResizableCardItemComponent, index: number): void {\n const directionPosition = this._directionPosition$();\n if (index === 0) {\n card[directionPosition] = Number(this._paddingLeft);\n card.top = 0;\n card.startingColumnPosition = 0;\n return;\n }\n\n const uniqueHeights = this._getSortedUniqueHeights();\n let cardPositioned = false;\n\n for (let i = 0; i < uniqueHeights.length && !cardPositioned; i++) {\n cardPositioned = this._isPositionSetSuccess(uniqueHeights[i], card);\n }\n }\n\n /**\n * @hidden try to set card at given height.\n * @param height height at which card is getting positioned.\n * @param card ResizableCardItemComponent\n * @returns It returns true when card position id found otherwise it returns false.\n */\n private _isPositionSetSuccess(height: number, card: ResizableCardItemComponent): boolean {\n const directionPosition = this._directionPosition$();\n const columnPositions: number[] = [];\n let index = 0;\n for (const columnHeight of this._columnsHeight) {\n index++;\n if (columnHeight === height) {\n columnPositions.push(index);\n }\n }\n // check for each card position, starting from leftmost\n let isFitting = false;\n // try to fit as left (or right if Rtl) as possible from the column position\n const startingColumnPosition = this._fitCardColumnPosition(card, columnPositions, height);\n\n if (startingColumnPosition !== -1) {\n isFitting = true;\n card[directionPosition] =\n startingColumnPosition * horizontalResizeStep +\n this._paddingLeft +\n (startingColumnPosition > 0 ? gap * startingColumnPosition : 0);\n card.top = height + (height > 0 ? verticalResizeStep : 0);\n card.startingColumnPosition = startingColumnPosition;\n }\n return isFitting;\n }\n\n /**\n * @hidden Try to start card position from left most fit position.\n * @param card ResizableCardItemComponent\n * @param columnPositions {Array<number>} Array of available positions for cards.\n * @param height {number} height at which fixing the card\n * @returns {number} returns starting column position where card will fit.\n */\n private _fitCardColumnPosition(\n card: ResizableCardItemComponent,\n columnPositions: Array<number>,\n height: number\n ): number {\n // check for each card position, starting from leftmost\n let isFitting = false;\n let startingColumnPosition = -1;\n\n // start from previous indexes\n const cardBaseColSpan = Math.floor(card.cardWidth / horizontalResizeStep);\n const cardColSpan =\n card.cardWidth - cardBaseColSpan * horizontalResizeStep - cardBaseColSpan * gap > horizontalResizeOffset\n ? cardBaseColSpan + 1\n : cardBaseColSpan;\n // try to set towards left from available card position\n // eg. [1, 2, 3, 4] columnsPositions\n for (const columnPosition of columnPositions) {\n if (isFitting) {\n break;\n }\n\n // startingPosition values will be 1, 2, 3, 4\n // try to fit as left as possible\n let startingPosition = columnPosition - (cardColSpan - 1);\n startingPosition = startingPosition > 0 ? startingPosition : 1;\n\n for (let index = startingPosition; index <= columnPosition && !isFitting; index++) {\n for (let span = 0; span < cardColSpan; span++) {\n if (this._columnsHeight[index + span - 1] <= height && cardColSpan + index - 1 <= this._columns) {\n isFitting = true;\n startingColumnPosition = index - 1;\n } else {\n isFitting = false;\n startingColumnPosition = -1;\n break;\n }\n }\n }\n }\n return startingColumnPosition;\n }\n\n /** @hidden returns sorted unique height of columns */\n private _getSortedUniqueHeights(): number[] {\n const tempArray = this._columnsHeight.slice();\n const sortedColumnsHeightArray = tempArray.sort(comparer);\n const uniqueHeights: number[] = [];\n\n for (const sortedHeight of sortedColumnsHeightArray) {\n if (uniqueHeights.indexOf(sortedHeight) === -1) {\n uniqueHeights.push(sortedHeight);\n }\n }\n function comparer(first: number, second: number): number {\n return first - second;\n }\n return uniqueHeights;\n }\n\n /**\n * @hidden Comparator to sort card based on rank.\n * @param firstCard ResizableCardItemComponent\n * @param secondCard ResizableCardItemComponent\n * @returns : returns difference between first card rank and other card rank.\n */\n private _sortCards(firstCard: ResizableCardItemComponent, secondCard: ResizableCardItemComponent): number {\n return firstCard.rank - secondCard.rank;\n }\n}\n","<div\n #layout\n class=\"fd-resizable-card-layout\"\n [class]=\"'fd-resizable-card-layout--' + layoutSize\"\n [style.width.px]=\"layoutWidth\"\n [style.height.px]=\"layoutHeight\"\n>\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { ResizableCardItemComponent } from './resizable-card-layout/resizable-card-item/resizable-card-item.component';\nimport { ResizableCardLayoutComponent } from './resizable-card-layout/resizable-card-layout.component';\n\n/**\n * @deprecated\n * Use direct imports of `ResizableCardLayoutComponent` and `ResizableCardItemComponent`.\n */\n@NgModule({\n imports: [ResizableCardLayoutComponent, ResizableCardItemComponent],\n exports: [ResizableCardLayoutComponent, ResizableCardItemComponent]\n})\nexport class ResizableCardLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAqBA;AACO,MAAM,oBAAoB,GAAG,IAAI;AAExC;AACO,MAAM,kBAAkB,GAAG,GAAG;AAErC;AACO,MAAM,GAAG,GAAG,GAAG;AAEtB;AACO,MAAM,sBAAsB,GAAG,IAAI;AAE1C;AACO,MAAM,oBAAoB,GAAG,EAAE;AAKtC;AACA,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAI,YAAY,GAAG,CAAC,CAAC;MAWR,0BAA0B,CAAA;;IAEnC,IACI,MAAM,CAAC,MAA+B,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;AACD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAUD;;;;AAIG;IACH,IACI,IAAI,CAAC,SAAiB,EAAA;;AAEtB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;QAChD,IAAI,SAAS,GAAG,QAAQ,EAAE;YACtB,QAAQ,GAAG,SAAS,CAAC;AACxB,SAAA;KACJ;AACD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED;;;AAGG;IACH,IACI,gBAAgB,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AACD,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED;;;AAGG;IACH,IACI,iBAAiB,CAAC,OAAe,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AACD,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED;;;;AAIG;IACH,IACI,qBAAqB,CAAC,OAAe,EAAA;AACrC,QAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnC;AACD,IAAA,IAAI,qBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED;;;;AAIG;IACH,IACI,sBAAsB,CAAC,OAAe,EAAA;AACtC,QAAA,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACpC;AACD,IAAA,IAAI,sBAAsB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC;KAC5C;;AAsID,IAAA,WAAA,CACqB,GAAsB,EACvB,UAAsB,EACT,WAAuB,EAAA;QAFnC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACvB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACT,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;;AApNxD,QAAA,IAAA,CAAA,MAAM,GAAG,CAAA,aAAA,EAAgB,YAAY,EAAE,EAAE,CAAC;;QA+E1C,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;;QAejB,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;;QAIR,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;;QAIX,IAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;;QAItB,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;;AAIvB,QAAA,IAAA,CAAA,QAAQ,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIxE,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIvE,QAAA,IAAA,CAAA,iBAAiB,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIjF,QAAA,IAAA,CAAA,kBAAkB,GAA+B,IAAI,YAAY,EAAgB,CAAC;;QAGlF,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;QAG1B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;;QAMnB,IAAS,CAAA,SAAA,GAAW,oBAAoB,CAAC;;QAYzC,IAA2B,CAAA,2BAAA,GAAG,CAAC,CAAC;AAEhC;;;AAGG;QACH,IAAS,CAAA,SAAA,GAAc,CAAC,CAAC;;QAGzB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;;QAGL,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC;;QA8BtB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAQxB;;;AAGG;QACK,IAAsB,CAAA,sBAAA,GAAG,CAAC,CAAC;;AAM3B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;KAOxC;AAEJ;;;;AAIG;AAEH,IAAA,WAAW,CAAC,KAAiB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,SAAA;;AAGD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAEhB,QAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACnC,QAAQ,IAAI,CAAC,gBAAgB;AACzB,YAAA,KAAK,MAAM;AACP,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM;AACV,YAAA,KAAK,YAAY;AACb,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM;AACV,YAAA,KAAK,UAAU;AACX,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM;AACV,YAAA;AACI,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;QAC3E,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,gBAAgB,GAAG,GAAG,CAAC;QAE7F,MAAM,gCAAgC,GAAG,IAAI,CAAC,SAAS,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AAEvG,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;;AAEvB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AAEnB,YAAA,IAAI,gCAAgC,EAAE;AAClC,gBAAA,MAAM,eAAe,GAAG,CAAC,gBAAgB,GAAG,CAAC,IAAI,oBAAoB,GAAG,gBAAgB,GAAG,GAAG,CAAC;gBAC/F,IAAI,CAAC,2BAA2B,GAAG,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;AACvE,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;AACxC,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;;AAE9B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACpB,YAAA,IAAI,gCAAgC,EAAE;AAClC,gBAAA,MAAM,eAAe,GAAG,CAAC,gBAAgB,GAAG,CAAC,IAAI,oBAAoB,GAAG,gBAAgB,GAAG,GAAG,CAAC;gBAC/F,IAAI,CAAC,2BAA2B,GAAG,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;AACvE,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;AACxC,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;;QAGzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;KACpD;AAED;;AAEG;IAEH,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;AACV,SAAA;;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,SAAA;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACrC;AAED;;;;AAIG;IACH,WAAW,CAAC,KAAiB,EAAE,eAAgC,EAAA;QAC3D,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;KAC3C;;IAGD,KAAK,GAAA;AACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC/E,MAAM,EAAE,KAAK,EAAE,CAAC;KACnB;;IAGD,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;;IAGD,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAClC,SAAA;KACJ;;AAGD,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC5B,QAAA,QAAQ,UAAU;AACd,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;AACV,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;AACV,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;AACV,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;AACV,YAAA;AACI,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC3B,SAAA;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;;AAGD,IAAA,qBAAqB,CAAC,UAAkB,EAAA;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;;;AAG7E,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACxG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;;YAErB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC/E,IAAI,CAAC,aAAa,EAAE,CAAC;;YAErB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACnD,SAAA;KACJ;;IAGD,qBAAqB,GAAA;AACjB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;AAC9E,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,GAAG,CAAC;QAE5F,MAAM,gCAAgC,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,sBAAsB,CAAC;AAChG,QAAA,MAAM,cAAc,GAAG,gCAAgC,GAAG,mBAAmB,GAAG,CAAC,GAAG,mBAAmB,CAAC;AACxG,QAAA,OAAO,IAAI,YAAY,CACnB,IAAI,EACJ,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,kBAAkB,EACvB,cAAc,EACd,oBAAoB,CACvB,CAAC;KACL;;AAGD,IAAA,IAAI,yBAAyB,GAAA;QACzB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;;IAGO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAChF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;AACnF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,EAAE,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC;AAC/F,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,EAAE,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC;AAClG,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;KAC7D;;IAGO,2BAA2B,GAAA;;QAE/B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;AAC5D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;AACnE,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;;QAG/D,IAAI,cAAc,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,cAAc,GAAG,sBAAsB,GAAG,GAAG,EAAE;;AAE/C,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,aAAA;AAAM,iBAAA;;AAEH,gBAAA,MAAM,gCAAgC,GAClC,gBAAgB,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,sBAAsB,CAAC;gBACrE,IAAI,CAAC,SAAS,GAAG,gCAAgC;AAC7C,sBAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,oBAAoB;AACvC,sBAAE,QAAQ,GAAG,oBAAoB,CAAC;AACzC,aAAA;AACJ,SAAA;AAAM,aAAA;;YAEH,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,sBAAsB,EAAE;;AAEnD,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;AACxC,aAAA;AAAM,iBAAA;;gBAEH,MAAM,gCAAgC,GAAG,gBAAgB,GAAG,QAAQ,GAAG,GAAG,GAAG,sBAAsB,CAAC;gBACpG,IAAI,CAAC,SAAS,GAAG,gCAAgC;AAC7C,sBAAE,CAAC,QAAQ,GAAG,CAAC,IAAI,oBAAoB;AACvC,sBAAE,QAAQ,GAAG,oBAAoB,CAAC;AACzC,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,2BAA2B,EAAE,CAAC;;AAGnC,QAAA,IAAI,IAAI,CAAC,SAAS,GAAG,oBAAoB,EAAE;AACvC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,GAAG,CAAC,IAAI,GAAG,CAAC;AACvF,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;KAC7E;AAED;;AAEG;IACK,qBAAqB,GAAA;;AAEzB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;AACxE,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;AAC9D,QAAA,IAAI,CAAC,UAAU;AACX,YAAA,gBAAgB,GAAG,oBAAoB;AACnC,kBAAE,CAAC,cAAc,GAAG,CAAC,IAAI,kBAAkB;AAC3C,kBAAE,cAAc,GAAG,kBAAkB,CAAC;AAE9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;KAC7E;AAED;;;AAGG;AACK,IAAA,mBAAmB,CAAC,SAAiB,EAAA;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAE3G,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC;AACrD,QAAA,MAAM,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;AAE7E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;cAC5C,6BAA6B,GAAG,gBAAgB;AAClD,cAAE,6BAA6B,GAAG,gBAAgB,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;AACjC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,GAAG,oBAAoB,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACzC,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACvC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,oBAAoB,EAAE;;AAE/C,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,EAAE;;;AAG7B,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC5C,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtD,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;AAC9E,aAAA;AAAM,iBAAA;;gBAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzE,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtD,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;gBAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC9D,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,EAAE;;AAEjF,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACzE,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtD,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;gBAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC9D,aAAA;AACJ,SAAA;aAAM,IACH,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB;AAC1E,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,EAC7B;;;;YAIE,kBAAkB,GAAG,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC5C,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;;YAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC7D,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;AAC9E,SAAA;;QAGD,IACI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB;AACzE,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC;AAC3B,YAAA,CAAC,kBAAkB,EACrB;YACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACzE,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,CAAC;YAC3E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;;;AAID,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;AAEf,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACpD,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,aAAA;;AAGD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gBACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,aAAA;AACJ,SAAA;KACJ;;IAGO,aAAa,GAAA;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACnD,SAAA;KACJ;;IAGO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,CAAC;AACpG,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGO,cAAc,GAAA;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AAC/D,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGO,wBAAwB,GAAA;QAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,GAAG,kBAAkB,CAAC;AAC7E,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGO,yBAAyB,GAAA;QAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,GAAG,kBAAkB,CAAC;AAC9E,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;8GAhpBQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iDAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDvC,uxDAiDA,EAAA,MAAA,EAAA,CAAA,0qJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAEjB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAGjB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,uxDAAA,EAAA,MAAA,EAAA,CAAA,0qJAAA,CAAA,EAAA,CAAA;;0BAoOtB,QAAQ;yCA/NT,MAAM,EAAA,CAAA;sBADT,KAAK;gBAYN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAKN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAiBF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;gBAcF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBAeF,qBAAqB,EAAA,CAAA;sBADxB,KAAK;gBAeF,sBAAsB,EAAA,CAAA;sBADzB,KAAK;gBAWN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAMN,IAAI,EAAA,CAAA;sBAFH,KAAK;;sBACL,WAAW;uBAAC,eAAe,CAAA;gBAM5B,KAAK,EAAA,CAAA;sBAFJ,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAM7B,GAAG,EAAA,CAAA;sBAFF,KAAK;;sBACL,WAAW;uBAAC,cAAc,CAAA;gBAK3B,MAAM,EAAA,CAAA;sBADL,WAAW;uBAAC,eAAe,CAAA;gBAK5B,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,gBAAgB,CAAA;gBAK7B,eAAe,EAAA,CAAA;sBADd,WAAW;uBAAC,iDAAiD,CAAA;gBAK9D,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAKP,OAAO,EAAA,CAAA;sBADN,MAAM;gBAKP,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAKP,kBAAkB,EAAA,CAAA;sBADjB,MAAM;gBAoGP,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBA0E5C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;AA2WhD;MACa,YAAY,CAAA;AACrB;;;;;;;;;;;AAWG;AACH,IAAA,WAAA,CACW,IAAgC,EAChC,aAAqB,EACrB,cAAsB,EACtB,SAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,iBAAyB,EACzB,mBAA2B,EAC3B,oBAA4B,EAAA;QAR5B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA4B;QAChC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;QACrB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAQ;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAQ;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAQ;QACzB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAQ;QAC3B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAQ;KACnC;AACP;;ME7rBY,4BAA4B,CAAA;;AAmErC,IAAA,WAAA,CACqB,GAAsB,EACvB,UAAsB,EACT,WAAuB,EAAA;QAFnC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACvB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACT,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;;AA/DxD,QAAA,IAAA,CAAA,UAAU,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAI1E,QAAA,IAAA,CAAA,QAAQ,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIxE,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIvE,QAAA,IAAA,CAAA,iBAAiB,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIjF,QAAA,IAAA,CAAA,kBAAkB,GAA+B,IAAI,YAAY,EAAgB,CAAC;;AAIlF,QAAA,IAAA,CAAA,YAAY,GAA4C,IAAI,YAAY,EAA6B,CAAC;;AA+BrF,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;QAG1C,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;;QAGvB,IAAmB,CAAA,mBAAA,GAAG,QAAQ,CAAmB,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;KAO/G;;AAIJ,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC/B,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;AAC9C,YAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC;AACpD,SAAA;QAED,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChD,SAAA;KACJ;;IAID,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;;IAGD,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;QAG5B,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;;IAGD,kBAAkB,GAAA;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;;QAErB,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,YAAA,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;;IAGD,eAAe,GAAA;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;;IAGD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;KAC1C;;IAGD,IAAI,UAAU,CAAC,UAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;KAC7B;AACD,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAwC,EAAA;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAE5B,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACvC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAEnF,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,kBAAkB,CAAC,KAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;;IAGD,YAAY,GAAA;QACR,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,YAAA,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC;KACtD;AAED;;;AAGG;IACH,iBAAiB,GAAA;QACb,OAAO,MAAM,CAAC,UAAU,CAAC;KAC5B;;IAGO,aAAa,GAAA;;QAEjB,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,KAAI;AACpD,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC5D,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACpD,aAAA;AAED,YAAA,cAAc,CAAC,QAAQ;AAClB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,iBAAA,SAAS,CAAC,CAAC,KAAmB,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;;AAGlE,YAAA,cAAc,CAAC,OAAO;AACjB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,iBAAA,SAAS,CAAC,CAAC,KAAmB,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;;AAGxE,YAAA,cAAc,CAAC,iBAAiB;AAC3B,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,iBAAA,SAAS,CAAC,CAAC,KAAmB,KAAI;AAC/B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;;AAGP,YAAA,cAAc,CAAC,kBAAkB;AAC5B,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,iBAAA,SAAS,CAAC,CAAC,KAAmB,KAAI;AAC/B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;;IAGO,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;KACtF;;IAGO,aAAa,GAAA;AACjB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QAEvC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,cAAc,KAAK,IAAI,EAAE;AAClE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;aAAM,IAAI,WAAW,GAAG,GAAG,IAAI,WAAW,IAAI,GAAG,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3E,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;aAAM,IAAI,WAAW,GAAG,GAAG,IAAI,WAAW,IAAI,IAAI,IAAI,cAAc,KAAK,IAAI,EAAE;AAC5E,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;AAAM,aAAA,IAAI,WAAW,GAAG,IAAI,IAAI,cAAc,KAAK,IAAI,EAAE;AACtD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;KACJ;;IAGO,iBAAiB,GAAA;QACrB,MAAM,gBAAgB,GAA8B,EAAE,CAAC;QACvD,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;YACnC,MAAM,UAAU,GAA4B,EAAE,CAAC;AAC/C,YAAA,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACpD,YAAA,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD,YAAA,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5B,YAAA,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,YAAA,UAAU,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAChE,YAAA,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC9D,YAAA,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC,YAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC5C;AAED;;;AAGG;AACK,IAAA,iBAAiB,CAAC,UAAsB,EAAA;AAC5C,QAAA,IAAI,kBAA0B,CAAC;AAE/B,QAAA,QAAQ,UAAU;AACd,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACtB,gBAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAClF,gBAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;gBACtC,MAAM;AACV,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,gBAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAClF,gBAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,GAAG,CAAC;gBAC5C,MAAM;AACV,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,gBAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClF,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,CAAC,GAAG,GAAG,CAAC;gBAChD,MAAM;AACV,YAAA,KAAK,IAAI;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,gBAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClF,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,CAAC,GAAG,GAAG,CAAC;gBAChD,MAAM;AACV,YAAA;AACI,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,gBAAA,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAClF,IAAI,CAAC,WAAW,GAAG,kBAAkB,GAAG,CAAC,GAAG,GAAG,CAAC;AACvD,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,qBAAqB,CAAC,KAAmB,EAAA;QAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACvE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5D,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,uBAAuB,CAAC,KAAmB,EAAA;;;QAG/C,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;QAC9D,MAAM,wBAAwB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEjG,QAAA,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE;;;AAGvC,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,eAAe,GAAG,sBAAsB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;gBAEtG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAgC,EAAE,KAAa,KAAI;oBAC1E,IAAI,KAAK,GAAG,wBAAwB,EAAE;;;;wBAIlC,IACI,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ;AACrE,4BAAA,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,EACzC;;;AAGE,4BAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC7B,yBAAA;AACJ,qBAAA;AACL,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA,IACH,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;gBAC3B,eAAe,GAAG,sBAAsB,GAAG,GAAG;gBAC9C,IAAI,CAAC,cAAc,EACrB;;;gBAGE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAgC,KAAI;AAC3D,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AACtD,oBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5D,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE;;AAE9C,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,sBAAsB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;AAElG,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,sBAAsB,IAAI,IAAI,CAAC,cAAc,EAAE;;AAEvG,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5D,aAAA;AACJ,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,gBAAwB,EAAA;;;QAI1C,MAAM,WAAW,GAA+B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACpF,QAAA,IAAI,IAAgC,CAAC;;QAGrC,IAAI,mBAAmB,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC;AAEvE,QAAA,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;QAExC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,mBAAmB,GAAG,CAAC,EAAE;;YAE5B,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC;AACnD,YAAA,IAAI,IAAI,IAAI,mBAAmB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACtD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACf,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjC,gBAAA,mBAAmB,IAAI,IAAI,CAAC,gBAAgB,CAAC;AAChD,aAAA;AAAM,iBAAA;gBACH,mBAAmB,GAAG,CAAC,CAAC;AAC3B,aAAA;YACD,KAAK,IAAI,CAAC,CAAC;AACd,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,IAAgC,EAAA;AACzD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,YAAY,GACd,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;;AAGtG,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;;AAG1E,QAAA,MAAM,WAAW,GACb,IAAI,CAAC,SAAS,GAAG,eAAe,GAAG,oBAAoB,GAAG,eAAe,GAAG,GAAG,GAAG,sBAAsB;cAClG,eAAe,GAAG,CAAC;cACnB,eAAe,CAAC;QAE1B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;QAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC;AACxD,SAAA;QAED,IAAI,YAAY,KAAK,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AACpD,SAAA;KACJ;AAED;;;;AAIG;IACK,sBAAsB,CAAC,IAAgC,EAAE,KAAa,EAAA;AAC1E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;YAChC,OAAO;AACV,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACrD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE;AAC9D,YAAA,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACvE,SAAA;KACJ;AAED;;;;;AAKG;IACK,qBAAqB,CAAC,MAAc,EAAE,IAAgC,EAAA;AAC1E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,KAAK,EAAE,CAAC;YACR,IAAI,YAAY,KAAK,MAAM,EAAE;AACzB,gBAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAA;AACJ,SAAA;;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;;AAEtB,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AAE1F,QAAA,IAAI,sBAAsB,KAAK,CAAC,CAAC,EAAE;YAC/B,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,iBAAiB,CAAC;AACnB,gBAAA,sBAAsB,GAAG,oBAAoB;AAC7C,oBAAA,IAAI,CAAC,YAAY;AACjB,qBAAC,sBAAsB,GAAG,CAAC,GAAG,GAAG,GAAG,sBAAsB,GAAG,CAAC,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AACxD,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;;;;;AAMG;AACK,IAAA,sBAAsB,CAC1B,IAAgC,EAChC,eAA8B,EAC9B,MAAc,EAAA;;QAGd,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAC;;AAGhC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;AAC1E,QAAA,MAAM,WAAW,GACb,IAAI,CAAC,SAAS,GAAG,eAAe,GAAG,oBAAoB,GAAG,eAAe,GAAG,GAAG,GAAG,sBAAsB;cAClG,eAAe,GAAG,CAAC;cACnB,eAAe,CAAC;;;AAG1B,QAAA,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;AAC1C,YAAA,IAAI,SAAS,EAAE;gBACX,MAAM;AACT,aAAA;;;YAID,IAAI,gBAAgB,GAAG,cAAc,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;AAC1D,YAAA,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC;AAE/D,YAAA,KAAK,IAAI,KAAK,GAAG,gBAAgB,EAAE,KAAK,IAAI,cAAc,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;gBAC/E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,WAAW,EAAE,IAAI,EAAE,EAAE;oBAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,WAAW,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;wBAC7F,SAAS,GAAG,IAAI,CAAC;AACjB,wBAAA,sBAAsB,GAAG,KAAK,GAAG,CAAC,CAAC;AACtC,qBAAA;AAAM,yBAAA;wBACH,SAAS,GAAG,KAAK,CAAC;wBAClB,sBAAsB,GAAG,CAAC,CAAC,CAAC;wBAC5B,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,sBAAsB,CAAC;KACjC;;IAGO,uBAAuB,GAAA;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,wBAAwB,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAa,EAAE,CAAC;AAEnC,QAAA,KAAK,MAAM,YAAY,IAAI,wBAAwB,EAAE;YACjD,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC5C,gBAAA,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;AACD,QAAA,SAAS,QAAQ,CAAC,KAAa,EAAE,MAAc,EAAA;YAC3C,OAAO,KAAK,GAAG,MAAM,CAAC;SACzB;AACD,QAAA,OAAO,aAAa,CAAC;KACxB;AAED;;;;;AAKG;IACK,UAAU,CAAC,SAAqC,EAAE,UAAsC,EAAA;AAC5F,QAAA,OAAO,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;KAC3C;8GApkBQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EA8BpB,0BAA0B,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5E/C,gPASA,EAAA,MAAA,EAAA,CAAA,s5IAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDqCa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,QAAA,EAAA,gPAAA,EAAA,MAAA,EAAA,CAAA,s5IAAA,CAAA,EAAA,CAAA;;0BAwEX,QAAQ;yCAnEb,YAAY,EAAA,CAAA;sBADX,KAAK;gBAKN,UAAU,EAAA,CAAA;sBADT,MAAM;gBAKP,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAKP,OAAO,EAAA,CAAA;sBADN,MAAM;gBAKP,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAKP,kBAAkB,EAAA,CAAA;sBADjB,MAAM;gBAKP,YAAY,EAAA,CAAA;sBADX,MAAM;gBAKP,eAAe,EAAA,CAAA;sBADd,eAAe;uBAAC,0BAA0B,CAAA;gBA6C3C,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAcnC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;;;AEhIjC;;;AAGG;MAKU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,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,yBAAyB,YAHxB,4BAA4B,EAAE,0BAA0B,CACxD,EAAA,OAAA,EAAA,CAAA,4BAA4B,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEzD,yBAAyB,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;AACnE,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;AACtE,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}
@@ -471,16 +471,6 @@ class SelectComponent {
471
471
  .filter((className) => !!className)
472
472
  .join(' ');
473
473
  }
474
- /** @hidden */
475
- _resizeScrollHandler() {
476
- this._updateCalculatedHeight();
477
- }
478
- /** @hidden */
479
- setDisabledState(isDisabled) {
480
- this.disabled = isDisabled;
481
- this._tabIndex = this.disabled ? -1 : 0;
482
- this._changeDetectorRef.markForCheck();
483
- }
484
474
  /** Selected option. */
485
475
  get selected() {
486
476
  return this._selectionModel.selected[0];
@@ -617,6 +607,11 @@ class SelectComponent {
617
607
  return _options?.changes.pipe(startWith(_options), switchMap(() => merge(..._options.map((option) => option.selectionChange))));
618
608
  });
619
609
  /** @hidden */
610
+ this.rtl$ = computed(() => !!this._rtlService?.rtlSignal());
611
+ this._rtlService = inject(RtlService, {
612
+ optional: true
613
+ });
614
+ /** @hidden */
620
615
  this._extendedBodyTemplate = false;
621
616
  /** @hidden */
622
617
  this._controlElemFontSize = 0;
@@ -627,11 +622,6 @@ class SelectComponent {
627
622
  /** @hidden */
628
623
  this._compareWith = (o1, o2) => o1 === o2;
629
624
  /** @hidden */
630
- this.rtl$ = computed(() => !!this._rtlService?.rtlSignal());
631
- this._rtlService = inject(RtlService, {
632
- optional: true
633
- });
634
- /** @hidden */
635
625
  this.onChange = () => { };
636
626
  /** @hidden */
637
627
  this.onTouched = () => { };
@@ -641,6 +631,10 @@ class SelectComponent {
641
631
  this._tabIndex = parseInt(_tabIndex, 10) || 0;
642
632
  }
643
633
  /** @hidden */
634
+ _resizeScrollHandler() {
635
+ this._updateCalculatedHeight();
636
+ }
637
+ /** @hidden */
644
638
  _handleKeydown(event) {
645
639
  if (!this.disabled && !this.readonly) {
646
640
  this._isOpen
@@ -656,6 +650,12 @@ class SelectComponent {
656
650
  this._isOpen ? this.close() : this.open();
657
651
  }
658
652
  /** @hidden */
653
+ setDisabledState(isDisabled) {
654
+ this.disabled = isDisabled;
655
+ this._tabIndex = this.disabled ? -1 : 0;
656
+ this._changeDetectorRef.markForCheck();
657
+ }
658
+ /** @hidden */
659
659
  ngOnInit() {
660
660
  this._initializeCommonBehavior();
661
661
  }
@@ -1067,11 +1067,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
1067
1067
  }], _optionPanel: [{
1068
1068
  type: ViewChild,
1069
1069
  args: ['optionPanel', { read: ElementRef }]
1070
+ }], compareWith: [{
1071
+ type: Input
1070
1072
  }], _resizeScrollHandler: [{
1071
1073
  type: HostListener,
1072
1074
  args: ['window:resize']
1073
- }], compareWith: [{
1074
- type: Input
1075
1075
  }], _handleKeydown: [{
1076
1076
  type: HostListener,
1077
1077
  args: ['keydown', ['$event']]