@odx/angular 5.7.4 → 6.0.1

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 (658) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/animations/lib/expand.d.ts +44 -0
  3. package/animations/lib/fade.d.ts +70 -0
  4. package/animations/lib/slide.d.ts +21 -0
  5. package/animations/lib/wait-for-child-animations.d.ts +38 -0
  6. package/breakpoints/lib/breakpoints.config.d.ts +38 -0
  7. package/breakpoints/lib/breakpoints.service.d.ts +43 -0
  8. package/breakpoints/lib/directives/match-breakpoints.directive.d.ts +36 -0
  9. package/breakpoints/lib/helpers/configure-breakpoint.d.ts +19 -0
  10. package/cdk/a11y/lib/directives/interactive.directive.d.ts +32 -0
  11. package/cdk/a11y/lib/directives/list-focus-manager-option.directive.d.ts +22 -0
  12. package/cdk/a11y/lib/directives/list-focus-manager.directive.d.ts +17 -0
  13. package/cdk/active-indicator/lib/active-indicator.directive.d.ts +63 -0
  14. package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +53 -0
  15. package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +3 -0
  16. package/cdk/connected-overlay/lib/connected-overlay.service.d.ts +44 -0
  17. package/cdk/connected-overlay/lib/helpers/compute-overlay-position.d.ts +10 -0
  18. package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +49 -0
  19. package/cdk/custom-form-control/lib/custom-form-control.d.ts +108 -0
  20. package/cdk/custom-form-control/lib/input-control.directive.d.ts +75 -0
  21. package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +25 -0
  22. package/cdk/dynamic-view/lib/dynamic-view.service.d.ts +30 -0
  23. package/cdk/dynamic-view/lib/helpers/create-projectable-nodes.d.ts +22 -0
  24. package/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.d.ts +22 -0
  25. package/cdk/dynamic-view/lib/helpers/is-dynamic-view.d.ts +22 -0
  26. package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +39 -0
  27. package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +36 -0
  28. package/cdk/event-plugins/lib/event-plugins.config.d.ts +35 -0
  29. package/cdk/event-plugins/lib/models/event-plugin.d.ts +57 -0
  30. package/cdk/event-plugins/lib/plugins/debounce-event-plugin.d.ts +32 -0
  31. package/cdk/event-plugins/lib/plugins/defer-event-plugin.d.ts +24 -0
  32. package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +41 -0
  33. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +47 -0
  34. package/cdk/option-control/lib/option-control.d.ts +47 -0
  35. package/cdk/radio-group-control/lib/radio-control.directive.d.ts +8 -0
  36. package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +11 -0
  37. package/components/accordion/lib/accordion.component.d.ts +8 -0
  38. package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +37 -1
  39. package/components/accordion/lib/directives/accordion-item-title.d.ts +3 -0
  40. package/components/action-group/action-group.component.d.ts +6 -0
  41. package/components/area-header/area-header.component.d.ts +8 -0
  42. package/components/area-header/directives/area-header-content.directive.d.ts +3 -0
  43. package/components/area-header/directives/area-header-subtitle.directive.d.ts +3 -0
  44. package/components/autocomplete/lib/autocomplete.component.d.ts +17 -0
  45. package/components/avatar/lib/avatar.component.d.ts +8 -0
  46. package/components/badge/lib/badge.component.d.ts +10 -0
  47. package/components/badge/lib/badge.directive.d.ts +15 -0
  48. package/components/bar/lib/bar.component.d.ts +7 -0
  49. package/components/bar/lib/directives/bar-button.directive.d.ts +3 -0
  50. package/components/bar/lib/directives/bar-label.directive.d.ts +3 -0
  51. package/components/breadcrumbs/lib/breadcrumbs.component.d.ts +3 -0
  52. package/components/button/lib/button.component.d.ts +10 -0
  53. package/components/button-group/lib/button-group.component.d.ts +15 -0
  54. package/components/calendar/lib/calendar.component.d.ts +48 -0
  55. package/components/calendar/lib/calendar.config.d.ts +41 -93
  56. package/components/calendar/lib/calendar.service.d.ts +48 -0
  57. package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +24 -0
  58. package/components/calendar/lib/components/calendar-month/calendar-month.component.d.ts +6 -0
  59. package/components/calendar/lib/components/calendar-year/calendar-year.component.d.ts +6 -0
  60. package/components/calendar/lib/components/calendar-years/calendar-years.component.d.ts +6 -0
  61. package/components/calendar/lib/daterange.service.d.ts +16 -0
  62. package/components/calendar/lib/directives/calendar-cell.directive.d.ts +37 -9
  63. package/components/calendar/lib/directives/calendar-view.directive.d.ts +41 -9
  64. package/components/calendar/lib/pipes/date-label.pipe.d.ts +12 -21
  65. package/components/calendar/lib/services/calendar-month.service.d.ts +1 -0
  66. package/components/calendar/lib/services/calendar-year.service.d.ts +1 -0
  67. package/components/calendar/lib/services/calendar-years.service.d.ts +1 -0
  68. package/components/calendar/lib/utils/check-cell-in-range.d.ts +1 -0
  69. package/components/calendar/lib/utils/check-identical-date.d.ts +1 -0
  70. package/components/calendar/lib/utils/get-A11y-label.d.ts +2 -2
  71. package/components/calendar/lib/utils/is-date-disabled.d.ts +1 -0
  72. package/components/calendar/lib/utils/parse-date.d.ts +1 -0
  73. package/components/calendar/lib/utils/validate-daterange.d.ts +1 -0
  74. package/components/calendar/lib/utils/validate-max-date.d.ts +1 -0
  75. package/components/calendar/lib/utils/validate-min-date.d.ts +1 -0
  76. package/components/calendar/lib/utils/validate-next-date-set.d.ts +1 -0
  77. package/components/calendar/lib/utils/validate-previous-date-set.d.ts +1 -0
  78. package/components/checkbox/lib/checkbox.component.d.ts +32 -0
  79. package/components/checkbox/lib/checkbox.validator.d.ts +23 -0
  80. package/components/chip/lib/components/chip/chip.component.d.ts +14 -0
  81. package/components/chip/lib/components/chip-list/chip-list.component.d.ts +3 -0
  82. package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +3 -0
  83. package/components/circular-progress/lib/circular-progress.component.d.ts +20 -0
  84. package/components/content-box/lib/content-box.component.d.ts +3 -0
  85. package/components/content-box/lib/directives/content-box-footer.directive.d.ts +3 -0
  86. package/components/content-box/lib/directives/content-box-header.directive.d.ts +3 -0
  87. package/components/datepicker/lib/datepicker.component.d.ts +47 -0
  88. package/components/datepicker/lib/datepicker.config.d.ts +19 -0
  89. package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +30 -0
  90. package/components/datepicker/lib/utils/get-datepicker-input-pattern.d.ts +2 -0
  91. package/components/datepicker/lib/utils/get-datepicker-input-value-as-date.d.ts +1 -0
  92. package/components/daterangepicker/lib/daterangepicker.component.d.ts +89 -0
  93. package/components/daterangepicker/lib/daterangepicker.config.d.ts +19 -0
  94. package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +30 -0
  95. package/components/daterangepicker/lib/range.validator.d.ts +15 -0
  96. package/components/daterangepicker/lib/required.validator.d.ts +6 -0
  97. package/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.d.ts +2 -0
  98. package/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.d.ts +1 -0
  99. package/components/dropdown/lib/dropdown.component.d.ts +16 -0
  100. package/components/dropdown/lib/dropdown.directive.d.ts +67 -0
  101. package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +5 -0
  102. package/components/error-page/lib/error-page.component.d.ts +7 -0
  103. package/components/error-page/lib/error-page.config.d.ts +18 -0
  104. package/components/footer/lib/footer.component.d.ts +9 -6
  105. package/components/footer/lib/footer.config.d.ts +2 -0
  106. package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +13 -0
  107. package/components/form-field/lib/components/form-group/form-group.component.d.ts +16 -0
  108. package/components/form-field/lib/directives/form-field-control.directive.d.ts +5 -0
  109. package/components/form-field/lib/directives/form-field-error.directive.d.ts +6 -0
  110. package/components/form-field/lib/directives/form-field-hint.directive.d.ts +3 -0
  111. package/components/form-field/lib/directives/form-field-label.directive.d.ts +3 -0
  112. package/components/form-field/lib/directives/form.directive.d.ts +13 -0
  113. package/components/form-field/lib/form-field.component.d.ts +20 -0
  114. package/components/form-field/lib/form-field.service.d.ts +42 -0
  115. package/components/form-field/lib/services/form-field-error.service.d.ts +24 -0
  116. package/components/header/lib/directives/header-avatar.directive.d.ts +4 -0
  117. package/components/header/lib/directives/header-title.directive.d.ts +3 -0
  118. package/components/header/lib/header.component.d.ts +3 -0
  119. package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +3 -0
  120. package/components/header-navigation/lib/header-navigation.component.d.ts +6 -0
  121. package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +14 -0
  122. package/components/icon/lib/icon.component.d.ts +24 -0
  123. package/components/icon/lib/icon.config.d.ts +26 -0
  124. package/components/inline-message/lib/inline-message.component.d.ts +13 -0
  125. package/components/link/link.directive.d.ts +3 -0
  126. package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +6 -0
  127. package/components/list/lib/components/list-item/list-item.component.d.ts +17 -1
  128. package/components/list/lib/list.component.d.ts +5 -0
  129. package/components/loading-spinner/lib/loading-spinner.component.d.ts +8 -0
  130. package/components/loading-spinner/lib/loading-spinner.directive.d.ts +22 -0
  131. package/components/logo/logo.directive.d.ts +15 -0
  132. package/components/main-menu/lib/directives/main-menu-button.directive.d.ts +5 -1
  133. package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +3 -0
  134. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +16 -0
  135. package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +1 -0
  136. package/components/main-menu/lib/main-menu.component.d.ts +42 -0
  137. package/components/main-menu/lib/main-menu.config.d.ts +31 -0
  138. package/components/main-menu/lib/main-menu.service.d.ts +28 -0
  139. package/components/mainfilter-group/lib/mainfilter-group.component.d.ts +4 -0
  140. package/components/menu/lib/directives/menu-item.directive.d.ts +6 -0
  141. package/components/menu/lib/menu.component.d.ts +13 -1
  142. package/components/menu/lib/menu.directive.d.ts +31 -0
  143. package/components/modal/lib/components/basic-modal/basic-modal.component.d.ts +14 -0
  144. package/components/modal/lib/components/modal-footer/modal-footer.component.d.ts +3 -0
  145. package/components/modal/lib/components/modal-header/modal-header.component.d.ts +9 -0
  146. package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +21 -0
  147. package/components/modal/lib/directives/modal-close.directive.d.ts +25 -1
  148. package/components/modal/lib/directives/modal-content.directive.d.ts +3 -0
  149. package/components/modal/lib/directives/modal-dismiss.directive.d.ts +18 -1
  150. package/components/modal/lib/helpers/inject-modal-ref.d.ts +21 -0
  151. package/components/modal/lib/helpers/provide-modal-ref.d.ts +9 -0
  152. package/components/modal/lib/modal.component.d.ts +25 -0
  153. package/components/modal/lib/modal.config.d.ts +33 -0
  154. package/components/modal/lib/modal.directive.d.ts +29 -0
  155. package/components/modal/lib/modal.service.d.ts +54 -0
  156. package/components/modal/lib/models/modal-ref.d.ts +34 -0
  157. package/components/navigation-back/lib/navigation-back.component.d.ts +3 -0
  158. package/components/notification/lib/components/notification-center/notification-center.component.d.ts +0 -2
  159. package/components/notification/lib/directives/notification-center.directive.d.ts +18 -4
  160. package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +1 -0
  161. package/components/notification/lib/helpers/sort-notifications.d.ts +1 -0
  162. package/components/notification/lib/helpers/to-notification-collection.d.ts +1 -0
  163. package/components/notification/lib/models/notification-feature.d.ts +15 -0
  164. package/components/notification/lib/notification.config.d.ts +54 -0
  165. package/components/notification/lib/notification.logger.d.ts +1 -0
  166. package/components/notification/lib/notification.service.d.ts +55 -0
  167. package/components/notification/lib/notification.tokens.d.ts +3 -0
  168. package/components/notification/lib/services/notification-center.service.d.ts +9 -0
  169. package/components/paginator/lib/paginator.component.d.ts +89 -0
  170. package/components/paginator/lib/paginator.config.d.ts +24 -2
  171. package/components/progress/lib/progress.component.d.ts +15 -0
  172. package/components/radio-group/lib/radio-group.component.d.ts +11 -0
  173. package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +19 -0
  174. package/components/rail-navigation/lib/rail-navigation.component.d.ts +26 -0
  175. package/components/rich-list/lib/components/rich-list-content/rich-list-content.component.d.ts +4 -0
  176. package/components/rich-list/lib/components/rich-list-header/rich-list-header.component.d.ts +4 -0
  177. package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +9 -1
  178. package/components/rich-list/lib/rich-list.component.d.ts +9 -2
  179. package/components/select/lib/components/select-option/select-option.component.d.ts +39 -2
  180. package/components/select/lib/directives/select-input-control.directive.d.ts +11 -0
  181. package/components/select/lib/pipes/select-search-filter.pipe.d.ts +10 -0
  182. package/components/select/lib/select.component.d.ts +59 -0
  183. package/components/slider/lib/slider.directive.d.ts +19 -0
  184. package/components/spinbox/lib/spinbox.component.d.ts +16 -0
  185. package/components/switch/lib/switch.component.d.ts +10 -0
  186. package/components/switch/lib/switch.validator.d.ts +12 -0
  187. package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +28 -0
  188. package/components/tab-bar/lib/tab-bar.component.d.ts +69 -0
  189. package/components/table/lib/components/check-cell/check-cell.component.d.ts +18 -0
  190. package/components/table/lib/components/header-title/header-title.component.d.ts +33 -1
  191. package/components/table/lib/directives/table-cell.directive.d.ts +4 -0
  192. package/components/table/lib/directives/table-row.directive.d.ts +4 -0
  193. package/components/table/lib/table.component.d.ts +36 -0
  194. package/components/timepicker/lib/timepicker.component.d.ts +11 -2
  195. package/components/timepicker/lib/utils/generate-time-stamps.d.ts +2 -1
  196. package/components/timepicker/lib/utils/ngx-mask-helper.d.ts +2 -2
  197. package/components/toast/lib/toast.config.d.ts +26 -0
  198. package/components/toast/lib/toast.service.d.ts +35 -0
  199. package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +11 -0
  200. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +12 -0
  201. package/components/tooltip/lib/tooltip.component.d.ts +20 -0
  202. package/components/tooltip/lib/tooltip.directive.d.ts +35 -0
  203. package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +34 -0
  204. package/components/wizard/lib/wizard.component.d.ts +20 -0
  205. package/esm2022/animations/lib/expand.mjs +45 -1
  206. package/esm2022/animations/lib/fade.mjs +71 -1
  207. package/esm2022/animations/lib/slide.mjs +22 -1
  208. package/esm2022/animations/lib/wait-for-child-animations.mjs +39 -1
  209. package/esm2022/breakpoints/lib/breakpoints.config.mjs +39 -1
  210. package/esm2022/breakpoints/lib/breakpoints.service.mjs +44 -1
  211. package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +37 -1
  212. package/esm2022/breakpoints/lib/helpers/configure-breakpoint.mjs +20 -1
  213. package/esm2022/cdk/a11y/lib/directives/interactive.directive.mjs +33 -1
  214. package/esm2022/cdk/a11y/lib/directives/list-focus-manager-option.directive.mjs +23 -1
  215. package/esm2022/cdk/a11y/lib/directives/list-focus-manager.directive.mjs +18 -1
  216. package/esm2022/cdk/active-indicator/lib/active-indicator.directive.mjs +64 -1
  217. package/esm2022/cdk/autocomplete-control/lib/autocomplete-control.mjs +39 -1
  218. package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +4 -1
  219. package/esm2022/cdk/connected-overlay/lib/connected-overlay.service.mjs +45 -1
  220. package/esm2022/cdk/connected-overlay/lib/helpers/compute-overlay-position.mjs +11 -1
  221. package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +50 -1
  222. package/esm2022/cdk/custom-form-control/lib/custom-form-control.mjs +109 -3
  223. package/esm2022/cdk/custom-form-control/lib/input-control.directive.mjs +76 -1
  224. package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +18 -1
  225. package/esm2022/cdk/dynamic-view/lib/dynamic-view.service.mjs +31 -1
  226. package/esm2022/cdk/dynamic-view/lib/helpers/create-projectable-nodes.mjs +23 -1
  227. package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.mjs +23 -1
  228. package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-view.mjs +23 -1
  229. package/esm2022/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +40 -1
  230. package/esm2022/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +37 -1
  231. package/esm2022/cdk/event-plugins/lib/event-plugins.config.mjs +36 -1
  232. package/esm2022/cdk/event-plugins/lib/models/event-plugin.mjs +45 -1
  233. package/esm2022/cdk/event-plugins/lib/plugins/debounce-event-plugin.mjs +33 -1
  234. package/esm2022/cdk/event-plugins/lib/plugins/defer-event-plugin.mjs +25 -1
  235. package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +42 -1
  236. package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +48 -1
  237. package/esm2022/cdk/option-control/lib/option-control.mjs +48 -1
  238. package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +9 -1
  239. package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +12 -1
  240. package/esm2022/components/accordion/lib/accordion.component.mjs +9 -1
  241. package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +31 -1
  242. package/esm2022/components/accordion/lib/directives/accordion-item-title.mjs +4 -1
  243. package/esm2022/components/action-group/action-group.component.mjs +7 -1
  244. package/esm2022/components/area-header/area-header.component.mjs +9 -1
  245. package/esm2022/components/area-header/directives/area-header-content.directive.mjs +4 -1
  246. package/esm2022/components/area-header/directives/area-header-subtitle.directive.mjs +4 -1
  247. package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +18 -1
  248. package/esm2022/components/avatar/lib/avatar.component.mjs +9 -1
  249. package/esm2022/components/badge/lib/badge.component.mjs +11 -1
  250. package/esm2022/components/badge/lib/badge.directive.mjs +16 -1
  251. package/esm2022/components/bar/lib/bar.component.mjs +8 -1
  252. package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +4 -1
  253. package/esm2022/components/bar/lib/directives/bar-label.directive.mjs +4 -1
  254. package/esm2022/components/breadcrumbs/lib/breadcrumbs.component.mjs +4 -1
  255. package/esm2022/components/button/lib/button.component.mjs +11 -1
  256. package/esm2022/components/button-group/lib/button-group.component.mjs +16 -1
  257. package/esm2022/components/calendar/lib/calendar.component.mjs +35 -1
  258. package/esm2022/components/calendar/lib/calendar.config.mjs +18 -12
  259. package/esm2022/components/calendar/lib/calendar.service.mjs +49 -1
  260. package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +19 -1
  261. package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +9 -3
  262. package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +9 -3
  263. package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +9 -3
  264. package/esm2022/components/calendar/lib/daterange.service.mjs +17 -1
  265. package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +27 -2
  266. package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +39 -1
  267. package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +27 -9
  268. package/esm2022/components/calendar/lib/services/calendar-month.service.mjs +2 -1
  269. package/esm2022/components/calendar/lib/services/calendar-year.service.mjs +2 -1
  270. package/esm2022/components/calendar/lib/services/calendar-years.service.mjs +2 -1
  271. package/esm2022/components/calendar/lib/utils/check-cell-in-range.mjs +2 -1
  272. package/esm2022/components/calendar/lib/utils/check-identical-date.mjs +2 -1
  273. package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +11 -8
  274. package/esm2022/components/calendar/lib/utils/is-date-disabled.mjs +2 -1
  275. package/esm2022/components/calendar/lib/utils/parse-date.mjs +2 -1
  276. package/esm2022/components/calendar/lib/utils/validate-daterange.mjs +2 -1
  277. package/esm2022/components/calendar/lib/utils/validate-max-date.mjs +2 -1
  278. package/esm2022/components/calendar/lib/utils/validate-min-date.mjs +2 -1
  279. package/esm2022/components/calendar/lib/utils/validate-next-date-set.mjs +2 -1
  280. package/esm2022/components/calendar/lib/utils/validate-previous-date-set.mjs +2 -1
  281. package/esm2022/components/checkbox/lib/checkbox.component.mjs +33 -1
  282. package/esm2022/components/checkbox/lib/checkbox.validator.mjs +24 -1
  283. package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -1
  284. package/esm2022/components/chip/lib/components/chip-list/chip-list.component.mjs +4 -1
  285. package/esm2022/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +4 -1
  286. package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +21 -1
  287. package/esm2022/components/content-box/lib/content-box.component.mjs +4 -1
  288. package/esm2022/components/content-box/lib/directives/content-box-footer.directive.mjs +4 -1
  289. package/esm2022/components/content-box/lib/directives/content-box-header.directive.mjs +4 -1
  290. package/esm2022/components/datepicker/lib/datepicker.component.mjs +33 -1
  291. package/esm2022/components/datepicker/lib/datepicker.config.mjs +20 -1
  292. package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +31 -1
  293. package/esm2022/components/datepicker/lib/utils/get-datepicker-input-pattern.mjs +3 -1
  294. package/esm2022/components/datepicker/lib/utils/get-datepicker-input-value-as-date.mjs +2 -1
  295. package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +65 -1
  296. package/esm2022/components/daterangepicker/lib/daterangepicker.config.mjs +20 -1
  297. package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +31 -1
  298. package/esm2022/components/daterangepicker/lib/range.validator.mjs +16 -1
  299. package/esm2022/components/daterangepicker/lib/required.validator.mjs +15 -1
  300. package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.mjs +3 -1
  301. package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.mjs +2 -1
  302. package/esm2022/components/dropdown/lib/dropdown.component.mjs +8 -1
  303. package/esm2022/components/dropdown/lib/dropdown.directive.mjs +55 -1
  304. package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +6 -1
  305. package/esm2022/components/error-page/lib/error-page.component.mjs +8 -1
  306. package/esm2022/components/error-page/lib/error-page.config.mjs +9 -1
  307. package/esm2022/components/footer/lib/footer.component.mjs +10 -7
  308. package/esm2022/components/footer/lib/footer.config.mjs +3 -1
  309. package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +14 -1
  310. package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +13 -1
  311. package/esm2022/components/form-field/lib/directives/form-field-control.directive.mjs +6 -1
  312. package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +4 -1
  313. package/esm2022/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -1
  314. package/esm2022/components/form-field/lib/directives/form-field-label.directive.mjs +4 -1
  315. package/esm2022/components/form-field/lib/directives/form.directive.mjs +14 -1
  316. package/esm2022/components/form-field/lib/form-field.component.mjs +14 -1
  317. package/esm2022/components/form-field/lib/form-field.service.mjs +43 -1
  318. package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +25 -1
  319. package/esm2022/components/header/lib/directives/header-avatar.directive.mjs +5 -1
  320. package/esm2022/components/header/lib/directives/header-title.directive.mjs +4 -1
  321. package/esm2022/components/header/lib/header.component.mjs +4 -1
  322. package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +4 -1
  323. package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +4 -1
  324. package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +15 -1
  325. package/esm2022/components/icon/lib/icon.component.mjs +25 -1
  326. package/esm2022/components/icon/lib/icon.config.mjs +20 -1
  327. package/esm2022/components/inline-message/lib/inline-message.component.mjs +14 -1
  328. package/esm2022/components/link/link.directive.mjs +4 -1
  329. package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +7 -1
  330. package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +18 -2
  331. package/esm2022/components/list/lib/list.component.mjs +6 -1
  332. package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +10 -2
  333. package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +23 -1
  334. package/esm2022/components/logo/logo.directive.mjs +16 -1
  335. package/esm2022/components/main-menu/lib/directives/main-menu-button.directive.mjs +5 -1
  336. package/esm2022/components/main-menu/lib/directives/main-menu-close.directive.mjs +4 -1
  337. package/esm2022/components/main-menu/lib/directives/main-menu-item.directive.mjs +17 -1
  338. package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +2 -1
  339. package/esm2022/components/main-menu/lib/main-menu.component.mjs +37 -1
  340. package/esm2022/components/main-menu/lib/main-menu.config.mjs +32 -1
  341. package/esm2022/components/main-menu/lib/main-menu.service.mjs +29 -1
  342. package/esm2022/components/mainfilter-group/lib/mainfilter-group.component.mjs +5 -1
  343. package/esm2022/components/menu/lib/directives/menu-item.directive.mjs +7 -1
  344. package/esm2022/components/menu/lib/menu.component.mjs +13 -1
  345. package/esm2022/components/menu/lib/menu.directive.mjs +19 -1
  346. package/esm2022/components/modal/lib/components/basic-modal/basic-modal.component.mjs +15 -1
  347. package/esm2022/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -1
  348. package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +4 -1
  349. package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +12 -1
  350. package/esm2022/components/modal/lib/directives/modal-close.directive.mjs +25 -1
  351. package/esm2022/components/modal/lib/directives/modal-content.directive.mjs +4 -1
  352. package/esm2022/components/modal/lib/directives/modal-dismiss.directive.mjs +18 -1
  353. package/esm2022/components/modal/lib/helpers/inject-modal-ref.mjs +22 -1
  354. package/esm2022/components/modal/lib/helpers/provide-modal-ref.mjs +10 -1
  355. package/esm2022/components/modal/lib/modal.component.mjs +21 -2
  356. package/esm2022/components/modal/lib/modal.config.mjs +34 -1
  357. package/esm2022/components/modal/lib/modal.directive.mjs +25 -1
  358. package/esm2022/components/modal/lib/modal.service.mjs +39 -1
  359. package/esm2022/components/modal/lib/models/modal-ref.mjs +34 -1
  360. package/esm2022/components/navigation-back/lib/navigation-back.component.mjs +4 -1
  361. package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +1 -3
  362. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +19 -5
  363. package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +2 -1
  364. package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +2 -1
  365. package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +2 -1
  366. package/esm2022/components/notification/lib/models/notification-feature.mjs +16 -1
  367. package/esm2022/components/notification/lib/notification.config.mjs +45 -1
  368. package/esm2022/components/notification/lib/notification.logger.mjs +2 -1
  369. package/esm2022/components/notification/lib/notification.service.mjs +56 -1
  370. package/esm2022/components/notification/lib/notification.tokens.mjs +4 -1
  371. package/esm2022/components/notification/lib/services/notification-center.service.mjs +10 -1
  372. package/esm2022/components/paginator/lib/paginator.component.mjs +90 -1
  373. package/esm2022/components/paginator/lib/paginator.config.mjs +29 -1
  374. package/esm2022/components/progress/lib/progress.component.mjs +16 -1
  375. package/esm2022/components/radio-group/lib/radio-group.component.mjs +13 -2
  376. package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +17 -1
  377. package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +27 -1
  378. package/esm2022/components/rich-list/lib/components/rich-list-content/rich-list-content.component.mjs +5 -1
  379. package/esm2022/components/rich-list/lib/components/rich-list-header/rich-list-header.component.mjs +5 -1
  380. package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +10 -2
  381. package/esm2022/components/rich-list/lib/rich-list.component.mjs +10 -3
  382. package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +47 -6
  383. package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +12 -2
  384. package/esm2022/components/select/lib/pipes/select-search-filter.pipe.mjs +11 -1
  385. package/esm2022/components/select/lib/select.component.mjs +56 -2
  386. package/esm2022/components/slider/lib/slider.directive.mjs +20 -1
  387. package/esm2022/components/spinbox/lib/spinbox.component.mjs +17 -1
  388. package/esm2022/components/switch/lib/switch.component.mjs +11 -1
  389. package/esm2022/components/switch/lib/switch.validator.mjs +13 -1
  390. package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +29 -1
  391. package/esm2022/components/tab-bar/lib/tab-bar.component.mjs +70 -1
  392. package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +19 -1
  393. package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +30 -2
  394. package/esm2022/components/table/lib/directives/table-cell.directive.mjs +5 -1
  395. package/esm2022/components/table/lib/directives/table-row.directive.mjs +5 -1
  396. package/esm2022/components/table/lib/table.component.mjs +30 -1
  397. package/esm2022/components/timepicker/lib/timepicker.component.mjs +15 -6
  398. package/esm2022/components/timepicker/lib/utils/generate-time-stamps.mjs +5 -3
  399. package/esm2022/components/timepicker/lib/utils/ngx-mask-helper.mjs +3 -3
  400. package/esm2022/components/toast/lib/toast.config.mjs +27 -1
  401. package/esm2022/components/toast/lib/toast.service.mjs +36 -1
  402. package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +12 -1
  403. package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +14 -2
  404. package/esm2022/components/tooltip/lib/tooltip.component.mjs +18 -1
  405. package/esm2022/components/tooltip/lib/tooltip.directive.mjs +36 -1
  406. package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +35 -1
  407. package/esm2022/components/wizard/lib/wizard.component.mjs +21 -1
  408. package/esm2022/internal/lib/helpers/fast-equals.mjs +3 -0
  409. package/esm2022/internal/lib/helpers/index.mjs +2 -1
  410. package/esm2022/internal/translate/lib/translate.config.mjs +32 -1
  411. package/esm2022/internal/translate/lib/translate.service.mjs +30 -1
  412. package/esm2022/lib/controllers/controller.mjs +26 -1
  413. package/esm2022/lib/controllers/disabled.controller.mjs +60 -1
  414. package/esm2022/lib/controllers/readonly.controller.mjs +57 -1
  415. package/esm2022/lib/directives/click-outside.directive.mjs +30 -1
  416. package/esm2022/lib/directives/delegate-focus.directive.mjs +15 -1
  417. package/esm2022/lib/services/window-ref.mjs +67 -1
  418. package/esm2022/lib/tokens/identity-matcher.mjs +25 -1
  419. package/esm2022/lib/tokens/string-search-handler.mjs +25 -1
  420. package/esm2022/lib/tokens/stringify.mjs +26 -1
  421. package/esm2022/localization/lib/features/with-http-language-header.mjs +54 -1
  422. package/esm2022/localization/lib/features/with-http-language-query-param.mjs +52 -1
  423. package/esm2022/localization/lib/loaders/browser-language-loader.mjs +33 -1
  424. package/esm2022/localization/lib/localization.config.mjs +73 -5
  425. package/esm2022/localization/lib/localization.logger.mjs +3 -0
  426. package/esm2022/localization/lib/localization.service.mjs +59 -29
  427. package/esm2022/rxjs/index.mjs +2 -2
  428. package/esm2022/rxjs/lib/delay-until.mjs +23 -1
  429. package/esm2022/rxjs/lib/from-element-mutation.mjs +22 -1
  430. package/esm2022/rxjs/lib/from-element-resize.mjs +25 -1
  431. package/esm2022/rxjs/lib/from-events.mjs +25 -1
  432. package/esm2022/rxjs/lib/from-query-list.mjs +24 -0
  433. package/esm2022/sdk/lib/application-environment.mjs +51 -1
  434. package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +19 -1
  435. package/esm2022/theming/lib/helpers/resolve-theme.mjs +26 -1
  436. package/esm2022/theming/lib/helpers/theme-storage.mjs +43 -1
  437. package/esm2022/theming/lib/theming.config.mjs +34 -1
  438. package/esm2022/theming/lib/theming.service.mjs +32 -1
  439. package/esm2022/utils/lib/decorators/pure.mjs +52 -1
  440. package/esm2022/utils/lib/helpers/angular.mjs +37 -1
  441. package/esm2022/utils/lib/helpers/array.mjs +5 -1
  442. package/esm2022/utils/lib/helpers/build-url.mjs +21 -1
  443. package/esm2022/utils/lib/helpers/build-website-url.mjs +3 -2
  444. package/esm2022/utils/lib/helpers/cache-storage-client.mjs +52 -1
  445. package/esm2022/utils/lib/helpers/coercion.mjs +18 -1
  446. package/esm2022/utils/lib/helpers/debounce.mjs +28 -1
  447. package/esm2022/utils/lib/helpers/defer-fn.mjs +21 -1
  448. package/esm2022/utils/lib/helpers/dom.mjs +71 -1
  449. package/esm2022/utils/lib/helpers/get-axis.mjs +21 -1
  450. package/esm2022/utils/lib/helpers/get-language-code.mjs +18 -1
  451. package/esm2022/utils/lib/helpers/get-opposite-side.mjs +22 -1
  452. package/esm2022/utils/lib/helpers/get-side.mjs +18 -1
  453. package/esm2022/utils/lib/helpers/get-unique-id.mjs +34 -1
  454. package/esm2022/utils/lib/helpers/match-url.mjs +41 -1
  455. package/esm2022/utils/lib/helpers/ng-changes.mjs +30 -1
  456. package/esm2022/utils/lib/helpers/provide-config.mjs +57 -1
  457. package/esm2022/utils/lib/helpers/queue.mjs +84 -1
  458. package/esm2022/utils/lib/helpers/type-guards.mjs +58 -1
  459. package/esm2022/utils/lib/helpers/until-destroyed.mjs +39 -1
  460. package/fesm2022/odx-angular-animations.mjs +173 -0
  461. package/fesm2022/odx-angular-animations.mjs.map +1 -1
  462. package/fesm2022/odx-angular-breakpoints.mjs +136 -0
  463. package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
  464. package/fesm2022/odx-angular-cdk-a11y.mjs +71 -0
  465. package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
  466. package/fesm2022/odx-angular-cdk-active-indicator.mjs +63 -0
  467. package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
  468. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +38 -0
  469. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
  470. package/fesm2022/odx-angular-cdk-checkbox-control.mjs +3 -0
  471. package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  472. package/fesm2022/odx-angular-cdk-connected-overlay.mjs +103 -0
  473. package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
  474. package/fesm2022/odx-angular-cdk-custom-form-control.mjs +183 -2
  475. package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  476. package/fesm2022/odx-angular-cdk-dynamic-view.mjs +188 -0
  477. package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  478. package/fesm2022/odx-angular-cdk-event-plugins.mjs +135 -0
  479. package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
  480. package/fesm2022/odx-angular-cdk-expandable.mjs +88 -0
  481. package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
  482. package/fesm2022/odx-angular-cdk-option-control.mjs +47 -0
  483. package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
  484. package/fesm2022/odx-angular-cdk-radio-group-control.mjs +19 -0
  485. package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  486. package/fesm2022/odx-angular-components-accordion.mjs +41 -0
  487. package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
  488. package/fesm2022/odx-angular-components-action-group.mjs +6 -0
  489. package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
  490. package/fesm2022/odx-angular-components-area-header.mjs +14 -0
  491. package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
  492. package/fesm2022/odx-angular-components-autocomplete.mjs +17 -0
  493. package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
  494. package/fesm2022/odx-angular-components-avatar.mjs +8 -0
  495. package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
  496. package/fesm2022/odx-angular-components-badge.mjs +25 -0
  497. package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
  498. package/fesm2022/odx-angular-components-bar.mjs +13 -0
  499. package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
  500. package/fesm2022/odx-angular-components-breadcrumbs.mjs +3 -0
  501. package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
  502. package/fesm2022/odx-angular-components-button-group.mjs +15 -0
  503. package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
  504. package/fesm2022/odx-angular-components-button.mjs +10 -0
  505. package/fesm2022/odx-angular-components-button.mjs.map +1 -1
  506. package/fesm2022/odx-angular-components-calendar.mjs +270 -33
  507. package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
  508. package/fesm2022/odx-angular-components-checkbox.mjs +55 -0
  509. package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
  510. package/fesm2022/odx-angular-components-chip.mjs +20 -0
  511. package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
  512. package/fesm2022/odx-angular-components-circular-progress.mjs +20 -0
  513. package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
  514. package/fesm2022/odx-angular-components-content-box.mjs +9 -0
  515. package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
  516. package/fesm2022/odx-angular-components-datepicker.mjs +84 -0
  517. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  518. package/fesm2022/odx-angular-components-daterangepicker.mjs +145 -0
  519. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  520. package/fesm2022/odx-angular-components-dropdown.mjs +66 -0
  521. package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
  522. package/fesm2022/odx-angular-components-error-page.mjs +15 -0
  523. package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
  524. package/fesm2022/odx-angular-components-footer.mjs +11 -6
  525. package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
  526. package/fesm2022/odx-angular-components-form-field.mjs +131 -0
  527. package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
  528. package/fesm2022/odx-angular-components-header-navigation.mjs +6 -0
  529. package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
  530. package/fesm2022/odx-angular-components-header.mjs +10 -0
  531. package/fesm2022/odx-angular-components-header.mjs.map +1 -1
  532. package/fesm2022/odx-angular-components-icon.mjs +57 -0
  533. package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
  534. package/fesm2022/odx-angular-components-inline-message.mjs +13 -0
  535. package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
  536. package/fesm2022/odx-angular-components-link.mjs +3 -0
  537. package/fesm2022/odx-angular-components-link.mjs.map +1 -1
  538. package/fesm2022/odx-angular-components-list.mjs +28 -1
  539. package/fesm2022/odx-angular-components-list.mjs.map +1 -1
  540. package/fesm2022/odx-angular-components-loading-spinner.mjs +30 -0
  541. package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
  542. package/fesm2022/odx-angular-components-logo.mjs +15 -0
  543. package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
  544. package/fesm2022/odx-angular-components-main-menu.mjs +119 -0
  545. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  546. package/fesm2022/odx-angular-components-mainfilter-group.mjs +4 -0
  547. package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
  548. package/fesm2022/odx-angular-components-menu.mjs +36 -0
  549. package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
  550. package/fesm2022/odx-angular-components-modal.mjs +252 -0
  551. package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
  552. package/fesm2022/odx-angular-components-navigation-back.mjs +3 -0
  553. package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
  554. package/fesm2022/odx-angular-components-notification.mjs +148 -6
  555. package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
  556. package/fesm2022/odx-angular-components-paginator.mjs +117 -0
  557. package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
  558. package/fesm2022/odx-angular-components-progress.mjs +15 -0
  559. package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
  560. package/fesm2022/odx-angular-components-radio-group.mjs +11 -0
  561. package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
  562. package/fesm2022/odx-angular-components-rail-navigation.mjs +42 -0
  563. package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
  564. package/fesm2022/odx-angular-components-rich-list.mjs +26 -3
  565. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  566. package/fesm2022/odx-angular-components-select.mjs +122 -7
  567. package/fesm2022/odx-angular-components-select.mjs.map +1 -1
  568. package/fesm2022/odx-angular-components-slider.mjs +19 -0
  569. package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
  570. package/fesm2022/odx-angular-components-spinbox.mjs +16 -0
  571. package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
  572. package/fesm2022/odx-angular-components-switch.mjs +22 -0
  573. package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
  574. package/fesm2022/odx-angular-components-tab-bar.mjs +97 -0
  575. package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
  576. package/fesm2022/odx-angular-components-table.mjs +84 -1
  577. package/fesm2022/odx-angular-components-table.mjs.map +1 -1
  578. package/fesm2022/odx-angular-components-timepicker.mjs +20 -9
  579. package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
  580. package/fesm2022/odx-angular-components-toast.mjs +61 -0
  581. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  582. package/fesm2022/odx-angular-components-toggle-button-group.mjs +23 -0
  583. package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
  584. package/fesm2022/odx-angular-components-tooltip.mjs +52 -0
  585. package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
  586. package/fesm2022/odx-angular-components-wizard.mjs +54 -0
  587. package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
  588. package/fesm2022/odx-angular-internal-translate.mjs +60 -0
  589. package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
  590. package/fesm2022/odx-angular-internal.mjs +4 -1
  591. package/fesm2022/odx-angular-internal.mjs.map +1 -1
  592. package/fesm2022/odx-angular-localization.mjs +269 -32
  593. package/fesm2022/odx-angular-localization.mjs.map +1 -1
  594. package/fesm2022/odx-angular-rxjs.mjs +115 -5
  595. package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
  596. package/fesm2022/odx-angular-sdk.mjs +50 -0
  597. package/fesm2022/odx-angular-sdk.mjs.map +1 -1
  598. package/fesm2022/odx-angular-theming.mjs +149 -0
  599. package/fesm2022/odx-angular-theming.mjs.map +1 -1
  600. package/fesm2022/odx-angular-utils.mjs +709 -1
  601. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  602. package/fesm2022/odx-angular.mjs +322 -0
  603. package/fesm2022/odx-angular.mjs.map +1 -1
  604. package/internal/lib/helpers/fast-equals.d.ts +1 -0
  605. package/internal/lib/helpers/index.d.ts +1 -0
  606. package/internal/translate/lib/translate.config.d.ts +31 -0
  607. package/internal/translate/lib/translate.service.d.ts +29 -0
  608. package/lib/controllers/controller.d.ts +25 -0
  609. package/lib/controllers/disabled.controller.d.ts +59 -0
  610. package/lib/controllers/readonly.controller.d.ts +56 -0
  611. package/lib/directives/click-outside.directive.d.ts +29 -0
  612. package/lib/directives/delegate-focus.directive.d.ts +14 -0
  613. package/lib/services/window-ref.d.ts +66 -0
  614. package/lib/tokens/identity-matcher.d.ts +41 -0
  615. package/lib/tokens/string-search-handler.d.ts +39 -0
  616. package/lib/tokens/stringify.d.ts +42 -0
  617. package/localization/lib/features/with-http-language-header.d.ts +63 -0
  618. package/localization/lib/features/with-http-language-query-param.d.ts +61 -0
  619. package/localization/lib/loaders/browser-language-loader.d.ts +32 -0
  620. package/localization/lib/localization.config.d.ts +81 -2
  621. package/localization/lib/localization.logger.d.ts +3 -0
  622. package/localization/lib/localization.service.d.ts +42 -7
  623. package/package.json +8 -7
  624. package/rxjs/index.d.ts +1 -1
  625. package/rxjs/lib/delay-until.d.ts +22 -0
  626. package/rxjs/lib/from-element-mutation.d.ts +21 -0
  627. package/rxjs/lib/from-element-resize.d.ts +24 -0
  628. package/rxjs/lib/from-events.d.ts +24 -0
  629. package/rxjs/lib/from-query-list.d.ts +22 -0
  630. package/sdk/lib/application-environment.d.ts +59 -0
  631. package/theming/lib/helpers/prefers-dark-theme.d.ts +18 -0
  632. package/theming/lib/helpers/resolve-theme.d.ts +25 -0
  633. package/theming/lib/helpers/theme-storage.d.ts +42 -0
  634. package/theming/lib/theming.config.d.ts +46 -0
  635. package/theming/lib/theming.service.d.ts +31 -0
  636. package/utils/lib/decorators/pure.d.ts +51 -0
  637. package/utils/lib/helpers/angular.d.ts +36 -0
  638. package/utils/lib/helpers/array.d.ts +4 -0
  639. package/utils/lib/helpers/build-url.d.ts +20 -0
  640. package/utils/lib/helpers/build-website-url.d.ts +2 -1
  641. package/utils/lib/helpers/cache-storage-client.d.ts +51 -0
  642. package/utils/lib/helpers/coercion.d.ts +17 -0
  643. package/utils/lib/helpers/debounce.d.ts +27 -0
  644. package/utils/lib/helpers/defer-fn.d.ts +20 -0
  645. package/utils/lib/helpers/dom.d.ts +70 -0
  646. package/utils/lib/helpers/get-axis.d.ts +20 -0
  647. package/utils/lib/helpers/get-language-code.d.ts +17 -0
  648. package/utils/lib/helpers/get-opposite-side.d.ts +21 -0
  649. package/utils/lib/helpers/get-side.d.ts +17 -0
  650. package/utils/lib/helpers/get-unique-id.d.ts +33 -0
  651. package/utils/lib/helpers/match-url.d.ts +40 -0
  652. package/utils/lib/helpers/ng-changes.d.ts +52 -0
  653. package/utils/lib/helpers/provide-config.d.ts +56 -0
  654. package/utils/lib/helpers/queue.d.ts +83 -0
  655. package/utils/lib/helpers/type-guards.d.ts +57 -0
  656. package/utils/lib/helpers/until-destroyed.d.ts +38 -0
  657. package/esm2022/rxjs/lib/form-query-list.mjs +0 -5
  658. package/rxjs/lib/form-query-list.d.ts +0 -3
@@ -1,3 +1,32 @@
1
+ /**
2
+ * Checks if the specified property or properties have changed in the current change detection cycle.
3
+ * Optionally ignores changes that occur during the first change detection cycle (e.g., initialization).
4
+ *
5
+ * @template U - The component or directive class.
6
+ * @template T - The type representing the changes, typically `NgChanges<U>`.
7
+ * @template K - The key or keys representing the properties to check for changes.
8
+ * @param {T} changes - The `NgChanges` object containing information about all changes.
9
+ * @param {K | K[]} keyOrKeys - The property name(s) to check for changes.
10
+ * @param {boolean} [ignoreFirstChange=true] - Whether to ignore changes that occur during the first change detection cycle.
11
+ * @returns {boolean} `true` if the specified property or properties have changed, otherwise `false`.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Example usage within an Angular component's `ngOnChanges` method
16
+ * ngOnChanges(changes: NgChanges<MyComponent>): void {
17
+ * if (hasChanged(changes, 'name')) {
18
+ * console.log('Name has changed');
19
+ * }
20
+ * }
21
+ *
22
+ * // Checking multiple properties for changes
23
+ * ngOnChanges(changes: NgChanges<MyComponent>): void {
24
+ * if (hasChanged(changes, ['name', 'age'], false)) {
25
+ * console.log('Name or age has changed (including first change)');
26
+ * }
27
+ * }
28
+ * ```
29
+ */
1
30
  export function hasChanged(changes, keyOrKeys, ignoreFirstChange = true) {
2
31
  if (Array.isArray(keyOrKeys)) {
3
32
  for (const key of keyOrKeys) {
@@ -11,4 +40,4 @@ export function hasChanged(changes, keyOrKeys, ignoreFirstChange = true) {
11
40
  return keyOrKeys in changes && (!ignoreFirstChange || !changes[keyOrKeys]?.isFirstChange());
12
41
  }
13
42
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2hlbHBlcnMvbmctY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLFVBQVUsVUFBVSxDQUN4QixPQUFVLEVBQ1YsU0FBa0IsRUFDbEIsaUJBQWlCLEdBQUcsSUFBSTtJQUV4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDNUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUU7WUFDM0IsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU07UUFDTCxPQUFPLFNBQVMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7S0FDN0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0UHJvcGVydGllcyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTmdDaGFuZ2VzPEMsIFByb3BlcnRpZXMgPSBHZXRQcm9wZXJ0aWVzPEM+PiA9IHtcbiAgW0tleSBpbiBrZXlvZiBQcm9wZXJ0aWVzXToge1xuICAgIHByZXZpb3VzVmFsdWU6IFByb3BlcnRpZXNbS2V5XTtcbiAgICBjdXJyZW50VmFsdWU6IFByb3BlcnRpZXNbS2V5XTtcbiAgICBmaXJzdENoYW5nZTogYm9vbGVhbjtcbiAgICBpc0ZpcnN0Q2hhbmdlKCk6IGJvb2xlYW47XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2hhbmdlZDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIFQgZXh0ZW5kcyBOZ0NoYW5nZXM8VT4sIEsgZXh0ZW5kcyBrZXlvZiBUPihcbiAgY2hhbmdlczogVCxcbiAga2V5T3JLZXlzOiBLIHwgS1tdLFxuICBpZ25vcmVGaXJzdENoYW5nZSA9IHRydWUsXG4pOiBib29sZWFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5T3JLZXlzKSkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleU9yS2V5cykge1xuICAgICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywga2V5LCBpZ25vcmVGaXJzdENoYW5nZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ga2V5T3JLZXlzIGluIGNoYW5nZXMgJiYgKCFpZ25vcmVGaXJzdENoYW5nZSB8fCAhY2hhbmdlc1trZXlPcktleXNdPy5pc0ZpcnN0Q2hhbmdlKCkpO1xuICB9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2hlbHBlcnMvbmctY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixPQUFVLEVBQ1YsU0FBa0IsRUFDbEIsaUJBQWlCLEdBQUcsSUFBSTtJQUV4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDNUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUU7WUFDM0IsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU07UUFDTCxPQUFPLFNBQVMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7S0FDN0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0UHJvcGVydGllcyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHlwZWQgdmVyc2lvbiBvZiBBbmd1bGFyJ3MgYFNpbXBsZUNoYW5nZXNgIG9iamVjdCwgZGVzY3JpYmluZyB0aGUgY2hhbmdlcyB0byBlYWNoXG4gKiBwcm9wZXJ0eSBvZiBhIGNvbXBvbmVudCBvciBkaXJlY3RpdmUuIFRoaXMgdXRpbGl0eSBlbmhhbmNlcyB0eXBlIHNhZmV0eSB3aGVuIHdvcmtpbmcgd2l0aCBBbmd1bGFyJ3NcbiAqIGNoYW5nZSBkZXRlY3Rpb24gbWVjaGFuaXNtIGJ5IHByb3ZpZGluZyBzcGVjaWZpYyBwcm9wZXJ0eSB0eXBlcy5cbiAqXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb21wb25lbnQgb3IgZGlyZWN0aXZlIGNsYXNzLlxuICogQHRlbXBsYXRlIFByb3BlcnRpZXMgLSBUaGUgcHJvcGVydGllcyBvZiB0aGUgY29tcG9uZW50IG9yIGRpcmVjdGl2ZSwgaW5mZXJyZWQgZnJvbSBgQ2AgYnkgZGVmYXVsdC5cbiAqIEB0eXBlIHtPYmplY3R9IC0gQSBtYXBwaW5nIGZyb20gcHJvcGVydHkgbmFtZXMgdG8gY2hhbmdlIGluZm9ybWF0aW9uIGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW50ZXJmYWNlIE15Q29tcG9uZW50IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBhZ2U6IG51bWJlcjtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBOZ0NoYW5nZXM8TXlDb21wb25lbnQ+KSB7XG4gKiAgIGlmIChjaGFuZ2VzLm5hbWUpIHtcbiAqICAgICBjb25zb2xlLmxvZygnTmFtZSBjaGFuZ2VkIGZyb20nLCBjaGFuZ2VzLm5hbWUucHJldmlvdXNWYWx1ZSwgJ3RvJywgY2hhbmdlcy5uYW1lLmN1cnJlbnRWYWx1ZSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBOZ0NoYW5nZXM8QywgUHJvcGVydGllcyA9IEdldFByb3BlcnRpZXM8Qz4+ID0ge1xuICBbS2V5IGluIGtleW9mIFByb3BlcnRpZXNdOiB7XG4gICAgcHJldmlvdXNWYWx1ZTogUHJvcGVydGllc1tLZXldO1xuICAgIGN1cnJlbnRWYWx1ZTogUHJvcGVydGllc1tLZXldO1xuICAgIGZpcnN0Q2hhbmdlOiBib29sZWFuO1xuICAgIGlzRmlyc3RDaGFuZ2UoKTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb3IgcHJvcGVydGllcyBoYXZlIGNoYW5nZWQgaW4gdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZS5cbiAqIE9wdGlvbmFsbHkgaWdub3JlcyBjaGFuZ2VzIHRoYXQgb2NjdXIgZHVyaW5nIHRoZSBmaXJzdCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIChlLmcuLCBpbml0aWFsaXphdGlvbikuXG4gKlxuICogQHRlbXBsYXRlIFUgLSBUaGUgY29tcG9uZW50IG9yIGRpcmVjdGl2ZSBjbGFzcy5cbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBjaGFuZ2VzLCB0eXBpY2FsbHkgYE5nQ2hhbmdlczxVPmAuXG4gKiBAdGVtcGxhdGUgSyAtIFRoZSBrZXkgb3Iga2V5cyByZXByZXNlbnRpbmcgdGhlIHByb3BlcnRpZXMgdG8gY2hlY2sgZm9yIGNoYW5nZXMuXG4gKiBAcGFyYW0ge1R9IGNoYW5nZXMgLSBUaGUgYE5nQ2hhbmdlc2Agb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGNoYW5nZXMuXG4gKiBAcGFyYW0ge0sgfCBLW119IGtleU9yS2V5cyAtIFRoZSBwcm9wZXJ0eSBuYW1lKHMpIHRvIGNoZWNrIGZvciBjaGFuZ2VzLlxuICogQHBhcmFtIHtib29sZWFufSBbaWdub3JlRmlyc3RDaGFuZ2U9dHJ1ZV0gLSBXaGV0aGVyIHRvIGlnbm9yZSBjaGFuZ2VzIHRoYXQgb2NjdXIgZHVyaW5nIHRoZSBmaXJzdCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9yIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEV4YW1wbGUgdXNhZ2Ugd2l0aGluIGFuIEFuZ3VsYXIgY29tcG9uZW50J3MgYG5nT25DaGFuZ2VzYCBtZXRob2RcbiAqIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxNeUNvbXBvbmVudD4pOiB2b2lkIHtcbiAqICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ25hbWUnKSkge1xuICogICAgIGNvbnNvbGUubG9nKCdOYW1lIGhhcyBjaGFuZ2VkJyk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBDaGVja2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGZvciBjaGFuZ2VzXG4gKiBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBOZ0NoYW5nZXM8TXlDb21wb25lbnQ+KTogdm9pZCB7XG4gKiAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnbmFtZScsICdhZ2UnXSwgZmFsc2UpKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ05hbWUgb3IgYWdlIGhhcyBjaGFuZ2VkIChpbmNsdWRpbmcgZmlyc3QgY2hhbmdlKScpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NoYW5nZWQ8VSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBUIGV4dGVuZHMgTmdDaGFuZ2VzPFU+LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gIGNoYW5nZXM6IFQsXG4gIGtleU9yS2V5czogSyB8IEtbXSxcbiAgaWdub3JlRmlyc3RDaGFuZ2UgPSB0cnVlLFxuKTogYm9vbGVhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGtleU9yS2V5cykpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlPcktleXMpIHtcbiAgICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIGtleSwgaWdub3JlRmlyc3RDaGFuZ2UpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGtleU9yS2V5cyBpbiBjaGFuZ2VzICYmICghaWdub3JlRmlyc3RDaGFuZ2UgfHwgIWNoYW5nZXNba2V5T3JLZXlzXT8uaXNGaXJzdENoYW5nZSgpKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,34 @@
1
1
  import { inject, InjectionToken } from '@angular/core';
2
2
  import { deepmerge } from '@odx/angular/internal';
3
+ /**
4
+ * Provides a configuration object or a factory for creating the configuration object, optionally applying a transformation function.
5
+ * This utility simplifies the process of defining and injecting configuration objects throughout an Angular application.
6
+ *
7
+ * @template T - The type of the configuration object.
8
+ * @template D - The dependencies required by the configuration factory, if any.
9
+ * @param {InjectionToken<T> | string} token - The injection token or string token associated with the configuration.
10
+ * @param {ConfigProvider<T, D>} config - The configuration object or a factory provider that produces the configuration.
11
+ * @param {ConfigTransformFn<T>} [transform=() => ({}))] - An optional transformation function to apply to the configuration object.
12
+ * @returns {FactoryProvider | ValueProvider} - An Angular provider object for the given configuration.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Define a simple configuration object
17
+ * const appConfig = { apiEndpoint: 'https://api.example.com' };
18
+ *
19
+ * // Provide the configuration with an optional transformation function
20
+ * provideConfig(appConfigToken, appConfig, (config) => ({
21
+ * ...config,
22
+ * apiEndpoint: `${config.apiEndpoint}/v2`,
23
+ * }));
24
+ *
25
+ * // Using a factory provider for dynamic configuration
26
+ * provideConfig(appConfigToken, {
27
+ * useFactory: (envService) => ({ apiEndpoint: envService.getApiEndpoint() }),
28
+ * deps: [EnvironmentService],
29
+ * });
30
+ * ```
31
+ */
3
32
  export function provideConfig(token, config, transform = () => ({})) {
4
33
  const prepareConfig = (value) => deepmerge(value, transform(value));
5
34
  if ('useFactory' in config) {
@@ -20,6 +49,33 @@ function mergeConfig(token, defaultValue) {
20
49
  const parentConfig = inject(token, { skipSelf: true, optional: true }) ?? {};
21
50
  return deepmerge(defaultValue, parentConfig, config);
22
51
  }
52
+ /**
53
+ * Generates a set of configuration-related tokens and utility functions for managing configuration in an Angular application.
54
+ * This function creates a standardized way to define, provide, and inject configurations, including defaults and transformations.
55
+ *
56
+ * @template T - The type of the configuration object.
57
+ * @template N - The name of the configuration, used to generate token names and utility functions.
58
+ * @param {N} name - The name of the configuration.
59
+ * @param {string} prefix - A prefix for the injection token to ensure uniqueness across the application.
60
+ * @param {T} defaultValue - The default value for the configuration.
61
+ * @param {ConfigTransformFn<T>} [transform] - An optional transformation function to be applied to the configuration.
62
+ * @returns An object containing the generated injection token, default configuration, and utility functions for the configuration.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * // Create configuration tokens and utilities for "appConfig" with a default value and optional transform function
67
+ * const { appConfigConfig, provideAppConfigConfig } = createConfigTokens('appConfig', 'myPrefix', { debug: false }, (config) => ({
68
+ * ...config,
69
+ * debug: true, // Enable debug mode by default
70
+ * }));
71
+ *
72
+ * // Later, in a module or component, provide the customized configuration
73
+ * @NgModule({
74
+ * providers: [provideAppConfigConfig({ apiEndpoint: 'https://api.example.com' })]
75
+ * })
76
+ * class AppModule {}
77
+ * ```
78
+ */
23
79
  export function createConfigTokens(name, prefix, defaultValue, transform) {
24
80
  const configName = `${name}Config`;
25
81
  const defaultConfigName = `${name}DefaultConfig`;
@@ -34,4 +90,4 @@ export function createConfigTokens(name, prefix, defaultValue, transform) {
34
90
  [provideConfigName]: ((config) => provideConfig(token, config, transform)),
35
91
  };
36
92
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3Byb3ZpZGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLGNBQWMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWWxELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWlDLEVBQ2pDLE1BQTRCLEVBQzVCLFlBQWtDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLFlBQVksSUFBSSxNQUFNLEVBQUU7UUFDMUIsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsOERBQThEO1lBQzlELFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFJLElBQVksQ0FBQyxDQUFDO1lBQ3RGLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNsQixDQUFDO0tBQ0g7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFJLEtBQWlDLEVBQUUsWUFBZTtJQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTdFLE9BQU8sU0FBUyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFNLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBc0IsSUFBTyxFQUFFLE1BQWMsRUFBRSxZQUFlLEVBQUUsU0FBZ0M7SUFJaEksTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLFFBQWlCLENBQUM7SUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLElBQUksZUFBd0IsQ0FBQztJQUMxRCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsSUFBSSxRQUFpQixDQUFDO0lBQ3hELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxJQUFJLFFBQWlCLENBQUM7SUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQWEsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUU3RyxPQUFPO1FBQ0wsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1FBQ25CLENBQUMsaUJBQWlCLENBQUMsRUFBRSxZQUFZO1FBQ2pDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUMxRCxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQXFCO0tBSTVDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnlQcm92aWRlciwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgVHlwZSwgVmFsdWVQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuXG5pbnRlcmZhY2UgQ29uZmlnRmFjdG9yeVByb3ZpZGVyPFQsIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXNlRmFjdG9yeTogKC4uLmFyZ3M6IHsgW0kgaW4ga2V5b2YgRF06IERbSV0gZXh0ZW5kcyBUeXBlPHVua25vd24+ID8gSW5zdGFuY2VUeXBlPERbSV0+IDogRFtJXSBleHRlbmRzIEluamVjdGlvblRva2VuPHVua25vd24+ID8gYW55IDogbmV2ZXIgfSkgPT4gVDtcbiAgZGVwcz86IFsuLi5EXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnRGVwZW5kZW5jaWVzPFQgPSB1bmtub3duPiA9IFJlYWRvbmx5QXJyYXk8VHlwZTxUPiB8IEluamVjdGlvblRva2VuPFQ+PjtcbmV4cG9ydCB0eXBlIENvbmZpZ1Byb3ZpZGVyPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gW10+ID0gQ29uZmlnRmFjdG9yeVByb3ZpZGVyPFQsIEQ+IHwgVDtcbmV4cG9ydCB0eXBlIENvbmZpZ1RyYW5zZm9ybUZuPFQgPSB1bmtub3duPiA9IChjb25maWc6IFBhcnRpYWw8VD4pID0+IFBhcnRpYWw8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3QsIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXMgPSBDb25maWdEZXBlbmRlbmNpZXM+KFxuICB0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4gfCBzdHJpbmcsXG4gIGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8VCwgRD4sXG4gIHRyYW5zZm9ybTogQ29uZmlnVHJhbnNmb3JtRm48VD4gPSAoKSA9PiAoe30pLFxuKTogRmFjdG9yeVByb3ZpZGVyIHwgVmFsdWVQcm92aWRlciB7XG4gIGNvbnN0IHByZXBhcmVDb25maWcgPSAodmFsdWU6IFBhcnRpYWw8VD4pID0+IGRlZXBtZXJnZSh2YWx1ZSwgdHJhbnNmb3JtKHZhbHVlKSk7XG4gIGlmICgndXNlRmFjdG9yeScgaW4gY29uZmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3ZpZGU6IHRva2VuLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHByZXBhcmVDb25maWcoY29uZmlnLnVzZUZhY3RvcnkoLi4uKGFyZ3MgYXMgYW55KSkpLFxuICAgICAgZGVwczogY29uZmlnLmRlcHMsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogdG9rZW4sXG4gICAgdXNlRmFjdG9yeTogKCkgPT4gcHJlcGFyZUNvbmZpZyhjb25maWcpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZzxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48UGFydGlhbDxUPj4sIGRlZmF1bHRWYWx1ZTogVCk6IFBhcnRpYWw8VD4ge1xuICBjb25zdCBjb25maWcgPSBpbmplY3QodG9rZW4pO1xuICBjb25zdCBwYXJlbnRDb25maWcgPSBpbmplY3QodG9rZW4sIHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9O1xuXG4gIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdFZhbHVlLCBwYXJlbnRDb25maWcsIGNvbmZpZykgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Rva2VuczxULCBOIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBOLCBwcmVmaXg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCB0cmFuc2Zvcm0/OiBDb25maWdUcmFuc2Zvcm1GbjxUPikge1xuICB0eXBlIENvbmZpZ1Byb3ZpZGVyRm4gPSA8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcyA9IENvbmZpZ0RlcGVuZGVuY2llczxQYXJ0aWFsPFQ+Pj4oXG4gICAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFQ+LCBEPixcbiAgKSA9PiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyO1xuICBjb25zdCBjb25maWdOYW1lID0gYCR7bmFtZX1Db25maWdgIGFzIGNvbnN0O1xuICBjb25zdCBkZWZhdWx0Q29uZmlnTmFtZSA9IGAke25hbWV9RGVmYXVsdENvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IGluamVjdENvbmZpZ05hbWUgPSBgaW5qZWN0JHtuYW1lfUNvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdOYW1lID0gYHByb3ZpZGUke25hbWV9Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgdG9rZW5OYW1lID0gYCR7cHJlZml4fTo6JHtjb25maWdOYW1lfWA7XG4gIGNvbnN0IHRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+KHRva2VuTmFtZSwgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRWYWx1ZSB9KTtcblxuICByZXR1cm4ge1xuICAgIFtjb25maWdOYW1lXTogdG9rZW4sXG4gICAgW2RlZmF1bHRDb25maWdOYW1lXTogZGVmYXVsdFZhbHVlLFxuICAgIFtpbmplY3RDb25maWdOYW1lXTogKCkgPT4gbWVyZ2VDb25maWcodG9rZW4sIGRlZmF1bHRWYWx1ZSksXG4gICAgW3Byb3ZpZGVDb25maWdOYW1lXTogKChjb25maWcpID0+IHByb3ZpZGVDb25maWcodG9rZW4sIGNvbmZpZywgdHJhbnNmb3JtKSkgYXMgQ29uZmlnUHJvdmlkZXJGbixcbiAgfSBhcyBSZWNvcmQ8dHlwZW9mIGNvbmZpZ05hbWUsIEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+PiAmXG4gICAgUmVjb3JkPHR5cGVvZiBkZWZhdWx0Q29uZmlnTmFtZSwgVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgaW5qZWN0Q29uZmlnTmFtZSwgKCkgPT4gVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgcHJvdmlkZUNvbmZpZ05hbWUsIENvbmZpZ1Byb3ZpZGVyRm4+O1xufVxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3Byb3ZpZGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLGNBQWMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBaUMsRUFDakMsTUFBNEIsRUFDNUIsWUFBa0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFNUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksWUFBWSxJQUFJLE1BQU0sRUFBRTtRQUMxQixPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUs7WUFDZCw4REFBOEQ7WUFDOUQsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUksSUFBWSxDQUFDLENBQUM7WUFDdEYsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1NBQ2xCLENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsS0FBSztRQUNkLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0tBQ3hDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUksS0FBaUMsRUFBRSxZQUFlO0lBQ3hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFN0UsT0FBTyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQU0sQ0FBQztBQUM1RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixJQUFPLEVBQUUsTUFBYyxFQUFFLFlBQWUsRUFBRSxTQUFnQztJQUloSSxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksUUFBaUIsQ0FBQztJQUM1QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsSUFBSSxlQUF3QixDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxJQUFJLFFBQWlCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLElBQUksUUFBaUIsQ0FBQztJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBYSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRTdHLE9BQU87UUFDTCxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7UUFDbkIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFlBQVk7UUFDakMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1FBQzFELENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBcUI7S0FJNUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyLCBpbmplY3QsIEluamVjdGlvblRva2VuLCBUeXBlLCBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5cbmludGVyZmFjZSBDb25maWdGYWN0b3J5UHJvdmlkZXI8VCwgRCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcz4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1c2VGYWN0b3J5OiAoLi4uYXJnczogeyBbSSBpbiBrZXlvZiBEXTogRFtJXSBleHRlbmRzIFR5cGU8dW5rbm93bj4gPyBJbnN0YW5jZVR5cGU8RFtJXT4gOiBEW0ldIGV4dGVuZHMgSW5qZWN0aW9uVG9rZW48dW5rbm93bj4gPyBhbnkgOiBuZXZlciB9KSA9PiBUO1xuICBkZXBzPzogWy4uLkRdO1xufVxuXG5leHBvcnQgdHlwZSBDb25maWdEZXBlbmRlbmNpZXM8VCA9IHVua25vd24+ID0gUmVhZG9ubHlBcnJheTxUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4+O1xuZXhwb3J0IHR5cGUgQ29uZmlnUHJvdmlkZXI8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXMgPSBbXT4gPSBDb25maWdGYWN0b3J5UHJvdmlkZXI8VCwgRD4gfCBUO1xuZXhwb3J0IHR5cGUgQ29uZmlnVHJhbnNmb3JtRm48VCA9IHVua25vd24+ID0gKGNvbmZpZzogUGFydGlhbDxUPikgPT4gUGFydGlhbDxUPjtcblxuLyoqXG4gKiBQcm92aWRlcyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG9yIGEgZmFjdG9yeSBmb3IgY3JlYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBvcHRpb25hbGx5IGFwcGx5aW5nIGEgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb24uXG4gKiBUaGlzIHV0aWxpdHkgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBkZWZpbmluZyBhbmQgaW5qZWN0aW5nIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0aHJvdWdob3V0IGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKiBAdGVtcGxhdGUgRCAtIFRoZSBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSwgaWYgYW55LlxuICogQHBhcmFtIHtJbmplY3Rpb25Ub2tlbjxUPiB8IHN0cmluZ30gdG9rZW4gLSBUaGUgaW5qZWN0aW9uIHRva2VuIG9yIHN0cmluZyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge0NvbmZpZ1Byb3ZpZGVyPFQsIEQ+fSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSBmYWN0b3J5IHByb3ZpZGVyIHRoYXQgcHJvZHVjZXMgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge0NvbmZpZ1RyYW5zZm9ybUZuPFQ+fSBbdHJhbnNmb3JtPSgpID0+ICh7fSkpXSAtIEFuIG9wdGlvbmFsIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAqIEByZXR1cm5zIHtGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyfSAtIEFuIEFuZ3VsYXIgcHJvdmlkZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIERlZmluZSBhIHNpbXBsZSBjb25maWd1cmF0aW9uIG9iamVjdFxuICogY29uc3QgYXBwQ29uZmlnID0geyBhcGlFbmRwb2ludDogJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tJyB9O1xuICpcbiAqIC8vIFByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aCBhbiBvcHRpb25hbCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvblxuICogcHJvdmlkZUNvbmZpZyhhcHBDb25maWdUb2tlbiwgYXBwQ29uZmlnLCAoY29uZmlnKSA9PiAoe1xuICogICAuLi5jb25maWcsXG4gKiAgIGFwaUVuZHBvaW50OiBgJHtjb25maWcuYXBpRW5kcG9pbnR9L3YyYCxcbiAqIH0pKTtcbiAqXG4gKiAvLyBVc2luZyBhIGZhY3RvcnkgcHJvdmlkZXIgZm9yIGR5bmFtaWMgY29uZmlndXJhdGlvblxuICogcHJvdmlkZUNvbmZpZyhhcHBDb25maWdUb2tlbiwge1xuICogICB1c2VGYWN0b3J5OiAoZW52U2VydmljZSkgPT4gKHsgYXBpRW5kcG9pbnQ6IGVudlNlcnZpY2UuZ2V0QXBpRW5kcG9pbnQoKSB9KSxcbiAqICAgZGVwczogW0Vudmlyb25tZW50U2VydmljZV0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0LCBEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gQ29uZmlnRGVwZW5kZW5jaWVzPihcbiAgdG9rZW46IEluamVjdGlvblRva2VuPFQ+IHwgc3RyaW5nLFxuICBjb25maWc6IENvbmZpZ1Byb3ZpZGVyPFQsIEQ+LFxuICB0cmFuc2Zvcm06IENvbmZpZ1RyYW5zZm9ybUZuPFQ+ID0gKCkgPT4gKHt9KSxcbik6IEZhY3RvcnlQcm92aWRlciB8IFZhbHVlUHJvdmlkZXIge1xuICBjb25zdCBwcmVwYXJlQ29uZmlnID0gKHZhbHVlOiBQYXJ0aWFsPFQ+KSA9PiBkZWVwbWVyZ2UodmFsdWUsIHRyYW5zZm9ybSh2YWx1ZSkpO1xuICBpZiAoJ3VzZUZhY3RvcnknIGluIGNvbmZpZykge1xuICAgIHJldHVybiB7XG4gICAgICBwcm92aWRlOiB0b2tlbixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICB1c2VGYWN0b3J5OiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBwcmVwYXJlQ29uZmlnKGNvbmZpZy51c2VGYWN0b3J5KC4uLihhcmdzIGFzIGFueSkpKSxcbiAgICAgIGRlcHM6IGNvbmZpZy5kZXBzLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IHRva2VuLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHByZXBhcmVDb25maWcoY29uZmlnKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWc8VD4odG9rZW46IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+LCBkZWZhdWx0VmFsdWU6IFQpOiBQYXJ0aWFsPFQ+IHtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KHRva2VuKTtcbiAgY29uc3QgcGFyZW50Q29uZmlnID0gaW5qZWN0KHRva2VuLCB7IHNraXBTZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KSA/PyB7fTtcblxuICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRWYWx1ZSwgcGFyZW50Q29uZmlnLCBjb25maWcpIGFzIFQ7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2V0IG9mIGNvbmZpZ3VyYXRpb24tcmVsYXRlZCB0b2tlbnMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBjb25maWd1cmF0aW9uIGluIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIGRlZmluZSwgcHJvdmlkZSwgYW5kIGluamVjdCBjb25maWd1cmF0aW9ucywgaW5jbHVkaW5nIGRlZmF1bHRzIGFuZCB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKiBAdGVtcGxhdGUgTiAtIFRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLCB1c2VkIHRvIGdlbmVyYXRlIHRva2VuIG5hbWVzIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSB7Tn0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCAtIEEgcHJlZml4IGZvciB0aGUgaW5qZWN0aW9uIHRva2VuIHRvIGVuc3VyZSB1bmlxdWVuZXNzIGFjcm9zcyB0aGUgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0ge1R9IGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7Q29uZmlnVHJhbnNmb3JtRm48VD59IFt0cmFuc2Zvcm1dIC0gQW4gb3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb24gdG8gYmUgYXBwbGllZCB0byB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgaW5qZWN0aW9uIHRva2VuLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBDcmVhdGUgY29uZmlndXJhdGlvbiB0b2tlbnMgYW5kIHV0aWxpdGllcyBmb3IgXCJhcHBDb25maWdcIiB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBhbmQgb3B0aW9uYWwgdHJhbnNmb3JtIGZ1bmN0aW9uXG4gKiBjb25zdCB7IGFwcENvbmZpZ0NvbmZpZywgcHJvdmlkZUFwcENvbmZpZ0NvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKCdhcHBDb25maWcnLCAnbXlQcmVmaXgnLCB7IGRlYnVnOiBmYWxzZSB9LCAoY29uZmlnKSA9PiAoe1xuICogICAuLi5jb25maWcsXG4gKiAgIGRlYnVnOiB0cnVlLCAvLyBFbmFibGUgZGVidWcgbW9kZSBieSBkZWZhdWx0XG4gKiB9KSk7XG4gKlxuICogLy8gTGF0ZXIsIGluIGEgbW9kdWxlIG9yIGNvbXBvbmVudCwgcHJvdmlkZSB0aGUgY3VzdG9taXplZCBjb25maWd1cmF0aW9uXG4gKiBATmdNb2R1bGUoe1xuICogICBwcm92aWRlcnM6IFtwcm92aWRlQXBwQ29uZmlnQ29uZmlnKHsgYXBpRW5kcG9pbnQ6ICdodHRwczovL2FwaS5leGFtcGxlLmNvbScgfSldXG4gKiB9KVxuICogY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Rva2VuczxULCBOIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBOLCBwcmVmaXg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCB0cmFuc2Zvcm0/OiBDb25maWdUcmFuc2Zvcm1GbjxUPikge1xuICB0eXBlIENvbmZpZ1Byb3ZpZGVyRm4gPSA8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcyA9IENvbmZpZ0RlcGVuZGVuY2llczxQYXJ0aWFsPFQ+Pj4oXG4gICAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFQ+LCBEPixcbiAgKSA9PiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyO1xuICBjb25zdCBjb25maWdOYW1lID0gYCR7bmFtZX1Db25maWdgIGFzIGNvbnN0O1xuICBjb25zdCBkZWZhdWx0Q29uZmlnTmFtZSA9IGAke25hbWV9RGVmYXVsdENvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IGluamVjdENvbmZpZ05hbWUgPSBgaW5qZWN0JHtuYW1lfUNvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdOYW1lID0gYHByb3ZpZGUke25hbWV9Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgdG9rZW5OYW1lID0gYCR7cHJlZml4fTo6JHtjb25maWdOYW1lfWA7XG4gIGNvbnN0IHRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+KHRva2VuTmFtZSwgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRWYWx1ZSB9KTtcblxuICByZXR1cm4ge1xuICAgIFtjb25maWdOYW1lXTogdG9rZW4sXG4gICAgW2RlZmF1bHRDb25maWdOYW1lXTogZGVmYXVsdFZhbHVlLFxuICAgIFtpbmplY3RDb25maWdOYW1lXTogKCkgPT4gbWVyZ2VDb25maWcodG9rZW4sIGRlZmF1bHRWYWx1ZSksXG4gICAgW3Byb3ZpZGVDb25maWdOYW1lXTogKChjb25maWcpID0+IHByb3ZpZGVDb25maWcodG9rZW4sIGNvbmZpZywgdHJhbnNmb3JtKSkgYXMgQ29uZmlnUHJvdmlkZXJGbixcbiAgfSBhcyBSZWNvcmQ8dHlwZW9mIGNvbmZpZ05hbWUsIEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+PiAmXG4gICAgUmVjb3JkPHR5cGVvZiBkZWZhdWx0Q29uZmlnTmFtZSwgVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgaW5qZWN0Q29uZmlnTmFtZSwgKCkgPT4gVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgcHJvdmlkZUNvbmZpZ05hbWUsIENvbmZpZ1Byb3ZpZGVyRm4+O1xufVxuIl19
@@ -4,6 +4,13 @@ import { isNumber, isString } from './type-guards';
4
4
  function isQueueItemId(value) {
5
5
  return isString(value) || isNumber(value);
6
6
  }
7
+ /**
8
+ * A class representing a queue structure with advanced functionalities including adding, removing,
9
+ * updating items, and observing changes through RxJS observables. It supports generic queue item types,
10
+ * allowing for flexible usage across different contexts.
11
+ *
12
+ * @template T - The type of items stored in the queue. Each item must extend an object containing a unique `id`.
13
+ */
7
14
  export class Queue {
8
15
  constructor() {
9
16
  this.queue = new Map();
@@ -11,29 +18,82 @@ export class Queue {
11
18
  this.values = [];
12
19
  this.firstItem = null;
13
20
  this.lastItem = null;
21
+ /**
22
+ * An observable that emits when an item is added to the queue.
23
+ * @type {Observable<T>}
24
+ */
14
25
  this.onAdd$ = this.createEventObserver('add');
26
+ /**
27
+ * An observable that emits when an item in the queue is updated.
28
+ * @type {Observable<T>}
29
+ */
15
30
  this.onUpdate$ = this.createEventObserver('update');
31
+ /**
32
+ * An observable that emits when an item is removed from the queue.
33
+ * @type {Observable<T>}
34
+ */
16
35
  this.onRemove$ = this.createEventObserver('remove');
36
+ /**
37
+ * An observable representing the current state of the queue as an array of items.
38
+ * @type {Observable<QueueItem<T>[]>}
39
+ */
17
40
  this.value$ = this.events$$.pipe(startWith(() => void 0), map(() => this.values), shareReplay({ bufferSize: 1, refCount: true }));
41
+ /**
42
+ * An observable that emits the current size of the queue.
43
+ * @type {Observable<number>}
44
+ */
18
45
  this.size$ = this.value$.pipe(map(() => this.size), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
19
46
  }
47
+ /**
48
+ * Gets the size of the queue.
49
+ * @returns The number of elements in the queue.
50
+ */
20
51
  get size() {
21
52
  return this.queue.size;
22
53
  }
54
+ /**
55
+ * Checks if the specified item is the first item in the queue.
56
+ * @param {QueueItem<T>} item - The item to check.
57
+ * @returns {boolean} - Returns `true` if the item is the first item in the queue, `false` otherwise.
58
+ */
23
59
  isFirst({ id }) {
24
60
  return this.firstItem?.id === id;
25
61
  }
62
+ /**
63
+ * Checks if the specified item is the last item in the queue.
64
+ * @param {QueueItem<T>} item - The item to check.
65
+ * @returns {boolean} - Returns true if the item is the last item, otherwise returns false.
66
+ */
26
67
  isLast({ id }) {
27
68
  return this.lastItem?.id === id;
28
69
  }
70
+ /**
71
+ * Retrieves a queue item from the queue based on the provided item or item ID.
72
+ * @param itemOrId - The queue item or item ID to retrieve.
73
+ * @returns The queue item if found, or `null` if not found.
74
+ */
29
75
  get(itemOrId) {
30
76
  const id = isQueueItemId(itemOrId) ? itemOrId.toString() : itemOrId.id.toString();
31
77
  return this.queue.get(id) ?? null;
32
78
  }
79
+ /**
80
+ * Adds an item to the queue, optionally emitting an event.
81
+ *
82
+ * @param {QueueItem<T>} item - The item to add.
83
+ * @param {boolean} [emitEvent=true] - Whether to emit an event for this action.
84
+ * @returns {QueueItem<T>} The item added to the queue.
85
+ */
33
86
  add(item, emitEvent = true) {
34
87
  this.remove(item, false);
35
88
  return this.addMany([item], emitEvent)[0];
36
89
  }
90
+ /**
91
+ * Adds multiple items to the queue.
92
+ *
93
+ * @param items - An array of items to be added to the queue.
94
+ * @param emitEvent - (Optional) A boolean indicating whether to emit an event after adding the items. Default is true.
95
+ * @returns An array of added items.
96
+ */
37
97
  addMany(items, emitEvent = true) {
38
98
  const addedItems = [];
39
99
  const updatedItems = [];
@@ -54,9 +114,22 @@ export class Queue {
54
114
  }
55
115
  return items;
56
116
  }
117
+ /**
118
+ * Removes an item from the queue.
119
+ *
120
+ * @param itemOrId - The item or ID of the item to be removed.
121
+ * @param emitEvent - Whether to emit an event after removing the item. Default is `true`.
122
+ * @returns The removed item, or `null` if the item was not found.
123
+ */
57
124
  remove(itemOrId, emitEvent = true) {
58
125
  return this.removeMany([itemOrId], emitEvent)[0];
59
126
  }
127
+ /**
128
+ * Removes multiple items from the queue based on the provided item or item IDs.
129
+ * @param itemOrIds - An array of QueueItem or QueueItemId objects representing the items to be removed.
130
+ * @param emitEvent - A boolean indicating whether to emit an event after removing the items. Default is true.
131
+ * @returns An array of removed QueueItem objects or null values.
132
+ */
60
133
  removeMany(itemOrIds, emitEvent = true) {
61
134
  const items = itemOrIds.map((itemOrId) => this.get(itemOrId)).filter(Boolean);
62
135
  const removedItems = [];
@@ -69,11 +142,21 @@ export class Queue {
69
142
  this.notify({ type: 'remove', items: removedItems }, emitEvent);
70
143
  return items;
71
144
  }
145
+ /**
146
+ * Clears the queue by removing all items.
147
+ *
148
+ * @param emitEvent - Whether to emit an event after clearing the queue. Default is true.
149
+ */
72
150
  clear(emitEvent = true) {
73
151
  const items = this.toArray();
74
152
  this.queue.clear();
75
153
  this.notify({ type: 'remove', items }, emitEvent);
76
154
  }
155
+ /**
156
+ * Returns an array representation of the queue.
157
+ *
158
+ * @returns An array containing all the items in the queue.
159
+ */
77
160
  toArray() {
78
161
  return this.values;
79
162
  }
@@ -89,4 +172,4 @@ export class Queue {
89
172
  return this.events$$.pipe(filter((event) => event.type === type), map(({ items }) => items), concatAll(), share());
90
173
  }
91
174
  }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPbkQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sT0FBTyxLQUFLO0lBQWxCO1FBQ21CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFDakQsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFDdEMsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFFN0IsV0FBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLGNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdkIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFD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QUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDNUQsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFvQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQ3RDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUN6QixTQUFTLEVBQUUsRUFDWCxLQUFLLEVBQUUsQ0FDUixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0QWxsLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzU3RyaW5nIH0gZnJvbSAnLi90eXBlLWd1YXJkcyc7XG5cbnR5cGUgUXVldWVJdGVtSWQgPSBzdHJpbmcgfCBudW1iZXI7XG50eXBlIFF1ZXVlSXRlbTxUPiA9IFQgJiB7IGlkOiBRdWV1ZUl0ZW1JZCB9O1xudHlwZSBRdWV1ZUV2ZW50VHlwZSA9ICdyZW1vdmUnIHwgJ2FkZCcgfCAndXBkYXRlJztcbnR5cGUgUXVldWVFdmVudDxUPiA9IHsgaXRlbXM6IFF1ZXVlSXRlbTxUPltdOyB0eXBlOiBRdWV1ZUV2ZW50VHlwZSB9O1xuXG5mdW5jdGlvbiBpc1F1ZXVlSXRlbUlkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUXVldWVJdGVtSWQge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpIHx8IGlzTnVtYmVyKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXVlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWV1ZSA9IG5ldyBNYXA8c3RyaW5nLCBRdWV1ZUl0ZW08VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzJCQgPSBuZXcgU3ViamVjdDxRdWV1ZUV2ZW50PFQ+PigpO1xuICBwcml2YXRlIHZhbHVlczogUXVldWVJdGVtPFQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBmaXJzdEl0ZW06IFF1ZXVlSXRlbTxUPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RJdGVtOiBRdWV1ZUl0ZW08VD4gfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25BZGQkID0gdGhpcy5jcmVhdGVFdmVudE9ic2VydmVyKCdhZGQnKTtcbiAgcHVibGljIHJlYWRvbmx5IG9uVXBkYXRlJCA9IHRoaXMuY3JlYXRlRXZlbnRPYnNlcnZlcigndXBkYXRlJyk7XG4gIHB1YmxpYyByZWFkb25seSBvblJlbW92ZSQgPSB0aGlzLmNyZWF0ZUV2ZW50T2JzZXJ2ZXIoJ3JlbW92ZScpO1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5ldmVudHMkJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgoKSA9PiB2b2lkIDApLFxuICAgIG1hcCgoKSA9PiB0aGlzLnZhbHVlcyksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpemUkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBtYXAoKCkgPT4gdGhpcy5zaXplKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0ZpcnN0KHsgaWQgfTogUXVldWVJdGVtPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3RJdGVtPy5pZCA9PT0gaWQ7XG4gIH1cblxuICBwdWJsaWMgaXNMYXN0KHsgaWQgfTogUXVldWVJdGVtPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdEl0ZW0/LmlkID09PSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaXRlbU9ySWQ6IFF1ZXVlSXRlbTxUPiB8IFF1ZXVlSXRlbUlkKTogUXVldWVJdGVtPFQ+IHwgbnVsbCB7XG4gICAgY29uc3QgaWQgPSBpc1F1ZXVlSXRlbUlkKGl0ZW1PcklkKSA/IGl0ZW1PcklkLnRvU3RyaW5nKCkgOiBpdGVtT3JJZC5pZC50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ2V0KGlkKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGFkZChpdGVtOiBRdWV1ZUl0ZW08VD4sIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4ge1xuICAgIHRoaXMucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLmFkZE1hbnkoW2l0ZW1dLCBlbWl0RXZlbnQpWzBdO1xuICB9XG5cbiAgcHVibGljIGFkZE1hbnkoaXRlbXM6IEFycmF5PFF1ZXVlSXRlbTxUPj4sIGVtaXRFdmVudCA9IHRydWUpOiBBcnJheTxRdWV1ZUl0ZW08VD4+IHtcbiAgICBjb25zdCBhZGRlZEl0ZW1zID0gW107XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaXRlbSkpIHtcbiAgICAgICAgYWRkZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlLnNldChpdGVtLmlkLnRvU3RyaW5nKCksIGl0ZW0pO1xuICAgIH1cbiAgICBpZiAoYWRkZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubm90aWZ5KHsgdHlwZTogJ2FkZCcsIGl0ZW1zOiBhZGRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuICAgIGlmICh1cGRhdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5vdGlmeSh7IHR5cGU6ICd1cGRhdGUnLCBpdGVtczogdXBkYXRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShpdGVtT3JJZDogUXVldWVJdGVtPFQ+IHwgUXVldWVJdGVtSWQsIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVNYW55KFtpdGVtT3JJZF0sIGVtaXRFdmVudClbMF07XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTWFueShpdGVtT3JJZHM6IEFycmF5PFF1ZXVlSXRlbTxUPiB8IFF1ZXVlSXRlbUlkPiwgZW1pdEV2ZW50ID0gdHJ1ZSk6IEFycmF5PFF1ZXVlSXRlbTxUPiB8IG51bGw+IHtcbiAgICBjb25zdCBpdGVtcyA9IGl0ZW1Pcklkcy5tYXAoKGl0ZW1PcklkKSA9PiB0aGlzLmdldChpdGVtT3JJZCkpLmZpbHRlcihCb29sZWFuKSBhcyBRdWV1ZUl0ZW08VD5bXTtcbiAgICBjb25zdCByZW1vdmVkSXRlbXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1SZW1vdmVkID0gdGhpcy5xdWV1ZS5kZWxldGUoaXRlbS5pZC50b1N0cmluZygpKTtcbiAgICAgIGlmICghaXRlbVJlbW92ZWQpIGNvbnRpbnVlO1xuICAgICAgcmVtb3ZlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHRoaXMubm90aWZ5KHsgdHlwZTogJ3JlbW92ZScsIGl0ZW1zOiByZW1vdmVkSXRlbXMgfSwgZW1pdEV2ZW50KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRvQXJyYXkoKTtcbiAgICB0aGlzLnF1ZXVlLmNsZWFyKCk7XG4gICAgdGhpcy5ub3RpZnkoeyB0eXBlOiAncmVtb3ZlJywgaXRlbXMgfSwgZW1pdEV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0FycmF5KCk6IFF1ZXVlSXRlbTxUPltdIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeShldmVudDogUXVldWVFdmVudDxUPiwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXVlLCAoW18sIGl0ZW1dKSA9PiBpdGVtKS5yZXZlcnNlKCk7XG4gICAgdGhpcy5maXJzdEl0ZW0gPSB0aGlzLnZhbHVlc1swXSA/PyBudWxsO1xuICAgIHRoaXMubGFzdEl0ZW0gPSB0aGlzLnZhbHVlc1t0aGlzLnZhbHVlcy5sZW5ndGggLSAxXSA/PyBudWxsO1xuICAgIGlmICghZW1pdEV2ZW50KSByZXR1cm47XG4gICAgdGhpcy5ldmVudHMkJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnRPYnNlcnZlcih0eXBlOiBRdWV1ZUV2ZW50VHlwZSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cyQkLnBpcGUoXG4gICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC50eXBlID09PSB0eXBlKSxcbiAgICAgIG1hcCgoeyBpdGVtcyB9KSA9PiBpdGVtcyksXG4gICAgICBjb25jYXRBbGwoKSxcbiAgICAgIHNoYXJlKCksXG4gICAgKTtcbiAgfVxufVxuIl19
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPbkQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxLQUFLO0lBQWxCO1FBQ21CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFDakQsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFDdEMsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFFN0M7OztXQUdHO1FBQ2EsV0FBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RDs7O1dBR0c7UUFDYSxjQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9EOzs7V0FHRztRQUNhLGNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0Q7OztXQUdHO1FBQ2EsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxTQUFTLENB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O0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQW9CLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUN0QyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDekIsU0FBUyxFQUFFLEVBQ1gsS0FBSyxFQUFFLENBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdEFsbCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJy4vdHlwZS1ndWFyZHMnO1xuXG50eXBlIFF1ZXVlSXRlbUlkID0gc3RyaW5nIHwgbnVtYmVyO1xudHlwZSBRdWV1ZUl0ZW08VD4gPSBUICYgeyBpZDogUXVldWVJdGVtSWQgfTtcbnR5cGUgUXVldWVFdmVudFR5cGUgPSAncmVtb3ZlJyB8ICdhZGQnIHwgJ3VwZGF0ZSc7XG50eXBlIFF1ZXVlRXZlbnQ8VD4gPSB7IGl0ZW1zOiBRdWV1ZUl0ZW08VD5bXTsgdHlwZTogUXVldWVFdmVudFR5cGUgfTtcblxuZnVuY3Rpb24gaXNRdWV1ZUl0ZW1JZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFF1ZXVlSXRlbUlkIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSB8fCBpc051bWJlcih2YWx1ZSk7XG59XG5cbi8qKlxuICogQSBjbGFzcyByZXByZXNlbnRpbmcgYSBxdWV1ZSBzdHJ1Y3R1cmUgd2l0aCBhZHZhbmNlZCBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkaW5nIGFkZGluZywgcmVtb3ZpbmcsXG4gKiB1cGRhdGluZyBpdGVtcywgYW5kIG9ic2VydmluZyBjaGFuZ2VzIHRocm91Z2ggUnhKUyBvYnNlcnZhYmxlcy4gSXQgc3VwcG9ydHMgZ2VuZXJpYyBxdWV1ZSBpdGVtIHR5cGVzLFxuICogYWxsb3dpbmcgZm9yIGZsZXhpYmxlIHVzYWdlIGFjcm9zcyBkaWZmZXJlbnQgY29udGV4dHMuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBzdG9yZWQgaW4gdGhlIHF1ZXVlLiBFYWNoIGl0ZW0gbXVzdCBleHRlbmQgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSB1bmlxdWUgYGlkYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXVlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWV1ZSA9IG5ldyBNYXA8c3RyaW5nLCBRdWV1ZUl0ZW08VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzJCQgPSBuZXcgU3ViamVjdDxRdWV1ZUV2ZW50PFQ+PigpO1xuICBwcml2YXRlIHZhbHVlczogUXVldWVJdGVtPFQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBmaXJzdEl0ZW06IFF1ZXVlSXRlbTxUPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RJdGVtOiBRdWV1ZUl0ZW08VD4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUgcXVldWUuXG4gICAqIEB0eXBlIHtPYnNlcnZhYmxlPFQ+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uQWRkJCA9IHRoaXMuY3JlYXRlRXZlbnRPYnNlcnZlcignYWRkJyk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGl0ZW0gaW4gdGhlIHF1ZXVlIGlzIHVwZGF0ZWQuXG4gICAqIEB0eXBlIHtPYnNlcnZhYmxlPFQ+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uVXBkYXRlJCA9IHRoaXMuY3JlYXRlRXZlbnRPYnNlcnZlcigndXBkYXRlJyk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBxdWV1ZS5cbiAgICogQHR5cGUge09ic2VydmFibGU8VD59XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25SZW1vdmUkID0gdGhpcy5jcmVhdGVFdmVudE9ic2VydmVyKCdyZW1vdmUnKTtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHF1ZXVlIGFzIGFuIGFycmF5IG9mIGl0ZW1zLlxuICAgKiBAdHlwZSB7T2JzZXJ2YWJsZTxRdWV1ZUl0ZW08VD5bXT59XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5ldmVudHMkJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgoKSA9PiB2b2lkIDApLFxuICAgIG1hcCgoKSA9PiB0aGlzLnZhbHVlcyksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHF1ZXVlLlxuICAgKiBAdHlwZSB7T2JzZXJ2YWJsZTxudW1iZXI+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNpemUkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBtYXAoKCkgPT4gdGhpcy5zaXplKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgdGhlIHF1ZXVlLlxuICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLnNpemU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgaXRlbSBpcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSB7UXVldWVJdGVtPFQ+fSBpdGVtIC0gVGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIGlzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBxdWV1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNGaXJzdCh7IGlkIH06IFF1ZXVlSXRlbTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpcnN0SXRlbT8uaWQgPT09IGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGl0ZW0gaXMgdGhlIGxhc3QgaXRlbSBpbiB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSB7UXVldWVJdGVtPFQ+fSBpdGVtIC0gVGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgaXRlbSBpcyB0aGUgbGFzdCBpdGVtLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBpc0xhc3QoeyBpZCB9OiBRdWV1ZUl0ZW08VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0SXRlbT8uaWQgPT09IGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIHF1ZXVlIGl0ZW0gZnJvbSB0aGUgcXVldWUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGl0ZW0gb3IgaXRlbSBJRC5cbiAgICogQHBhcmFtIGl0ZW1PcklkIC0gVGhlIHF1ZXVlIGl0ZW0gb3IgaXRlbSBJRCB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMgVGhlIHF1ZXVlIGl0ZW0gaWYgZm91bmQsIG9yIGBudWxsYCBpZiBub3QgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0KGl0ZW1PcklkOiBRdWV1ZUl0ZW08VD4gfCBRdWV1ZUl0ZW1JZCk6IFF1ZXVlSXRlbTxUPiB8IG51bGwge1xuICAgIGNvbnN0IGlkID0gaXNRdWV1ZUl0ZW1JZChpdGVtT3JJZCkgPyBpdGVtT3JJZC50b1N0cmluZygpIDogaXRlbU9ySWQuaWQudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLnF1ZXVlLmdldChpZCkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGl0ZW0gdG8gdGhlIHF1ZXVlLCBvcHRpb25hbGx5IGVtaXR0aW5nIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1F1ZXVlSXRlbTxUPn0gaXRlbSAtIFRoZSBpdGVtIHRvIGFkZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZW1pdEV2ZW50PXRydWVdIC0gV2hldGhlciB0byBlbWl0IGFuIGV2ZW50IGZvciB0aGlzIGFjdGlvbi5cbiAgICogQHJldHVybnMge1F1ZXVlSXRlbTxUPn0gVGhlIGl0ZW0gYWRkZWQgdG8gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcHVibGljIGFkZChpdGVtOiBRdWV1ZUl0ZW08VD4sIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4ge1xuICAgIHRoaXMucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLmFkZE1hbnkoW2l0ZW1dLCBlbWl0RXZlbnQpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgaXRlbXMgdG8gdGhlIHF1ZXVlLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbXMgLSBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBhZGRlZCB0byB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgLSAoT3B0aW9uYWwpIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCBhZnRlciBhZGRpbmcgdGhlIGl0ZW1zLiBEZWZhdWx0IGlzIHRydWUuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFkZGVkIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFkZE1hbnkoaXRlbXM6IEFycmF5PFF1ZXVlSXRlbTxUPj4sIGVtaXRFdmVudCA9IHRydWUpOiBBcnJheTxRdWV1ZUl0ZW08VD4+IHtcbiAgICBjb25zdCBhZGRlZEl0ZW1zID0gW107XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaXRlbSkpIHtcbiAgICAgICAgYWRkZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlLnNldChpdGVtLmlkLnRvU3RyaW5nKCksIGl0ZW0pO1xuICAgIH1cbiAgICBpZiAoYWRkZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubm90aWZ5KHsgdHlwZTogJ2FkZCcsIGl0ZW1zOiBhZGRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuICAgIGlmICh1cGRhdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5vdGlmeSh7IHR5cGU6ICd1cGRhdGUnLCBpdGVtczogdXBkYXRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW1PcklkIC0gVGhlIGl0ZW0gb3IgSUQgb2YgdGhlIGl0ZW0gdG8gYmUgcmVtb3ZlZC5cbiAgICogQHBhcmFtIGVtaXRFdmVudCAtIFdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCBhZnRlciByZW1vdmluZyB0aGUgaXRlbS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEByZXR1cm5zIFRoZSByZW1vdmVkIGl0ZW0sIG9yIGBudWxsYCBpZiB0aGUgaXRlbSB3YXMgbm90IGZvdW5kLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZShpdGVtT3JJZDogUXVldWVJdGVtPFQ+IHwgUXVldWVJdGVtSWQsIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVNYW55KFtpdGVtT3JJZF0sIGVtaXRFdmVudClbMF07XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBtdWx0aXBsZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaXRlbSBvciBpdGVtIElEcy5cbiAgICogQHBhcmFtIGl0ZW1PcklkcyAtIEFuIGFycmF5IG9mIFF1ZXVlSXRlbSBvciBRdWV1ZUl0ZW1JZCBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgaXRlbXMgdG8gYmUgcmVtb3ZlZC5cbiAgICogQHBhcmFtIGVtaXRFdmVudCAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCBhZnRlciByZW1vdmluZyB0aGUgaXRlbXMuIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVtb3ZlZCBRdWV1ZUl0ZW0gb2JqZWN0cyBvciBudWxsIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVNYW55KGl0ZW1PcklkczogQXJyYXk8UXVldWVJdGVtPFQ+IHwgUXVldWVJdGVtSWQ+LCBlbWl0RXZlbnQgPSB0cnVlKTogQXJyYXk8UXVldWVJdGVtPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IGl0ZW1zID0gaXRlbU9ySWRzLm1hcCgoaXRlbU9ySWQpID0+IHRoaXMuZ2V0KGl0ZW1PcklkKSkuZmlsdGVyKEJvb2xlYW4pIGFzIFF1ZXVlSXRlbTxUPltdO1xuICAgIGNvbnN0IHJlbW92ZWRJdGVtcyA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgaXRlbVJlbW92ZWQgPSB0aGlzLnF1ZXVlLmRlbGV0ZShpdGVtLmlkLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKCFpdGVtUmVtb3ZlZCkgY29udGludWU7XG4gICAgICByZW1vdmVkSXRlbXMucHVzaChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkoeyB0eXBlOiAncmVtb3ZlJywgaXRlbXM6IHJlbW92ZWRJdGVtcyB9LCBlbWl0RXZlbnQpO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgcXVldWUgYnkgcmVtb3ZpbmcgYWxsIGl0ZW1zLlxuICAgKlxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IC0gV2hldGhlciB0byBlbWl0IGFuIGV2ZW50IGFmdGVyIGNsZWFyaW5nIHRoZSBxdWV1ZS4gRGVmYXVsdCBpcyB0cnVlLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudG9BcnJheSgpO1xuICAgIHRoaXMucXVldWUuY2xlYXIoKTtcbiAgICB0aGlzLm5vdGlmeSh7IHR5cGU6ICdyZW1vdmUnLCBpdGVtcyB9LCBlbWl0RXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHF1ZXVlLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgaXRlbXMgaW4gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcHVibGljIHRvQXJyYXkoKTogUXVldWVJdGVtPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5KGV2ZW50OiBRdWV1ZUV2ZW50PFQ+LCBlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXMgPSBBcnJheS5mcm9tKHRoaXMucXVldWUsIChbXywgaXRlbV0pID0+IGl0ZW0pLnJldmVyc2UoKTtcbiAgICB0aGlzLmZpcnN0SXRlbSA9IHRoaXMudmFsdWVzWzBdID8/IG51bGw7XG4gICAgdGhpcy5sYXN0SXRlbSA9IHRoaXMudmFsdWVzW3RoaXMudmFsdWVzLmxlbmd0aCAtIDFdID8/IG51bGw7XG4gICAgaWYgKCFlbWl0RXZlbnQpIHJldHVybjtcbiAgICB0aGlzLmV2ZW50cyQkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFdmVudE9ic2VydmVyKHR5cGU6IFF1ZXVlRXZlbnRUeXBlKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzJCQucGlwZShcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnR5cGUgPT09IHR5cGUpLFxuICAgICAgbWFwKCh7IGl0ZW1zIH0pID0+IGl0ZW1zKSxcbiAgICAgIGNvbmNhdEFsbCgpLFxuICAgICAgc2hhcmUoKSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,29 +1,86 @@
1
1
  import { TemplateRef } from '@angular/core';
2
+ /**
3
+ * Checks if the given value is a `ViewContainerRef`.
4
+ *
5
+ * @param {unknown} value - The value to check.
6
+ * @returns {value is ViewContainerRef} `true` if the value is a `ViewContainerRef`, otherwise `false`.
7
+ */
2
8
  export function isViewContainer(value) {
3
9
  return isFunction(value?.createComponent);
4
10
  }
11
+ /**
12
+ * Checks if the given value is a `TemplateRef`.
13
+ *
14
+ * @template T - The embedded view type.
15
+ * @param {unknown} value - The value to check.
16
+ * @returns {value is TemplateRef<T>} `true` if the value is a `TemplateRef`, otherwise `false`.
17
+ */
5
18
  export function isTemplateRef(value) {
6
19
  return value instanceof TemplateRef;
7
20
  }
21
+ /**
22
+ * Checks if the given value is an Angular component class.
23
+ *
24
+ * @template T - The component class type.
25
+ * @param {unknown} value - The value to check.
26
+ * @returns {value is Type<T>} `true` if the value is a component class, otherwise `false`.
27
+ */
8
28
  export function isComponent(value) {
9
29
  return isFunction(value);
10
30
  }
31
+ /**
32
+ * Checks if the given value is a string.
33
+ *
34
+ * @param {unknown} value - The value to check.
35
+ * @returns {value is string} `true` if the value is a string, otherwise `false`.
36
+ */
11
37
  export function isString(value) {
12
38
  return typeof value === 'string';
13
39
  }
40
+ /**
41
+ * Checks if the given value is a non-empty string.
42
+ *
43
+ * @param {unknown} value - The value to check.
44
+ * @returns {value is string} `true` if the value is a non-empty string, otherwise `false`.
45
+ */
14
46
  export function isNonEmptyString(value) {
15
47
  return isString(value) && value.length > 0;
16
48
  }
49
+ /**
50
+ * Checks if the given value is a boolean.
51
+ *
52
+ * @param {unknown} value - The value to check.
53
+ * @returns {value is boolean} `true` if the value is a boolean, otherwise `false`.
54
+ */
17
55
  export function isBoolean(value) {
18
56
  return value === true || value === false;
19
57
  }
58
+ /**
59
+ * Checks if the given value is a function.
60
+ *
61
+ * @param {unknown} value - The value to check.
62
+ * @returns {value is CallableFunction} `true` if the value is a function, otherwise `false`.
63
+ */
20
64
  export function isFunction(value) {
21
65
  return typeof value === 'function';
22
66
  }
67
+ /**
68
+ * Checks if the given value is present (not null or undefined).
69
+ *
70
+ * @template T - The value type.
71
+ * @param {T | null | undefined} value - The value to check.
72
+ * @returns {value is NonNullable<T>} `true` if the value is present, otherwise `false`.
73
+ */
23
74
  export function isPresent(value) {
24
75
  return value !== null && value !== undefined;
25
76
  }
77
+ /**
78
+ * Checks if the given value is a number.
79
+ *
80
+ * @param {unknown} value - The value to check.
81
+ * @returns {value is number} `true` if the value is a number, otherwise `false`.
82
+ */
26
83
  export function isNumber(value) {
27
84
  return typeof value === 'number';
28
85
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1ndWFyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3R5cGUtZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBYztJQUM1QyxPQUFPLFVBQVUsQ0FBRSxLQUEwQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFjLEtBQWM7SUFDdkQsT0FBTyxLQUFLLFlBQVksV0FBVyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFjLEtBQWM7SUFDckQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYztJQUNyQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYztJQUN0QyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFJLEtBQTJCO0lBQ3RELE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpZXdDb250YWluZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBWaWV3Q29udGFpbmVyUmVmIHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24oKHZhbHVlIGFzIFZpZXdDb250YWluZXJSZWYpPy5jcmVhdGVDb21wb25lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZW1wbGF0ZVJlZjxUID0gdW5rbm93bj4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUZW1wbGF0ZVJlZjxUPiB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnQ8VCA9IHVua25vd24+KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVHlwZTxUPiB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vbkVtcHR5U3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXNlbnQ8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgTm9uTnVsbGFibGU8VD4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVtYmVyIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1ndWFyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3R5cGUtZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBRXBFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLE9BQU8sVUFBVSxDQUFFLEtBQTBCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQWMsS0FBYztJQUN2RCxPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQWMsS0FBYztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3RDLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYztJQUN2QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxLQUEyQjtJQUN0RCxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIGBWaWV3Q29udGFpbmVyUmVmYC5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIFZpZXdDb250YWluZXJSZWZ9IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBgVmlld0NvbnRhaW5lclJlZmAsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3Q29udGFpbmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVmlld0NvbnRhaW5lclJlZiB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKCh2YWx1ZSBhcyBWaWV3Q29udGFpbmVyUmVmKT8uY3JlYXRlQ29tcG9uZW50KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgYFRlbXBsYXRlUmVmYC5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBlbWJlZGRlZCB2aWV3IHR5cGUuXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIFRlbXBsYXRlUmVmPFQ+fSBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgYFRlbXBsYXRlUmVmYCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RlbXBsYXRlUmVmPFQgPSB1bmtub3duPih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRlbXBsYXRlUmVmPFQ+IHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBBbmd1bGFyIGNvbXBvbmVudCBjbGFzcy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBjb21wb25lbnQgY2xhc3MgdHlwZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgVHlwZTxUPn0gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhIGNvbXBvbmVudCBjbGFzcywgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBvbmVudDxUID0gdW5rbm93bj4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUeXBlPFQ+IHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBzdHJpbmd9IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgbm9uLWVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIHN0cmluZ30gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb25FbXB0eVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgYm9vbGVhbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIGJvb2xlYW59IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIENhbGxhYmxlRnVuY3Rpb259IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBmdW5jdGlvbiwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBwcmVzZW50IChub3QgbnVsbCBvciB1bmRlZmluZWQpLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHZhbHVlIHR5cGUuXG4gKiBAcGFyYW0ge1QgfCBudWxsIHwgdW5kZWZpbmVkfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPn0gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudDxUPih2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBudW1iZXIuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBudW1iZXJ9IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXIsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cbiJdfQ==
@@ -1,7 +1,45 @@
1
1
  import { DestroyRef, inject } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ /**
4
+ * Creates a MonoTypeOperatorFunction that automatically unsubscribes from observables when the host component or service is destroyed.
5
+ * It uses Angular's `DestroyRef` to detect when the component or service is destroyed and triggers the unsubscription at that point.
6
+ * This utility function helps in managing subscriptions and prevents memory leaks by ensuring observables are unsubscribed when no longer needed.
7
+ *
8
+ * @returns A function that returns a `MonoTypeOperatorFunction<T>`, which can be used in an RxJS pipe to automatically unsubscribe
9
+ * based on the component's or service's lifecycle.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * // In an Angular component or service
14
+ * import { Component } from '@angular/core';
15
+ * import { Observable } from 'rxjs';
16
+ * import { untilDestroyed } from './path/to/untilDestroyed';
17
+ *
18
+ * @Component({
19
+ * selector: 'app-example',
20
+ * template: `<div>Example Component</div>`,
21
+ * })
22
+ * export class ExampleComponent {
23
+ * private readonly takeUntilDestroyed = untilDestroyed();
24
+ *
25
+ * constructor() {
26
+ * const exampleObservable$ = new Observable(observer => {
27
+ * // Observable logic here
28
+ * });
29
+ *
30
+ * exampleObservable$.pipe(
31
+ * this.takeUntilDestroyed(),
32
+ * ).subscribe(data => {
33
+ * // Subscription logic here
34
+ * });
35
+ * }
36
+ *
37
+ * // No need to manually implement ngOnDestroy to unsubscribe
38
+ * }
39
+ * ```
40
+ */
3
41
  export function untilDestroyed() {
4
42
  const destroyRef = inject(DestroyRef);
5
43
  return () => takeUntilDestroyed(destroyRef);
6
44
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy91bnRpbC1kZXN0cm95ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsTUFBTSxVQUFVLGNBQWM7SUFDNUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnRpbERlc3Ryb3llZCgpOiA8VD4oKSA9PiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHJldHVybiAoKSA9PiB0YWtlVW50aWxEZXN0cm95ZWQoZGVzdHJveVJlZik7XG59XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy91bnRpbC1kZXN0cm95ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uIHRoYXQgYXV0b21hdGljYWxseSB1bnN1YnNjcmliZXMgZnJvbSBvYnNlcnZhYmxlcyB3aGVuIHRoZSBob3N0IGNvbXBvbmVudCBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZC5cbiAqIEl0IHVzZXMgQW5ndWxhcidzIGBEZXN0cm95UmVmYCB0byBkZXRlY3Qgd2hlbiB0aGUgY29tcG9uZW50IG9yIHNlcnZpY2UgaXMgZGVzdHJveWVkIGFuZCB0cmlnZ2VycyB0aGUgdW5zdWJzY3JpcHRpb24gYXQgdGhhdCBwb2ludC5cbiAqIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBoZWxwcyBpbiBtYW5hZ2luZyBzdWJzY3JpcHRpb25zIGFuZCBwcmV2ZW50cyBtZW1vcnkgbGVha3MgYnkgZW5zdXJpbmcgb2JzZXJ2YWJsZXMgYXJlIHVuc3Vic2NyaWJlZCB3aGVuIG5vIGxvbmdlciBuZWVkZWQuXG4gKlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+YCwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gYW4gUnhKUyBwaXBlIHRvIGF1dG9tYXRpY2FsbHkgdW5zdWJzY3JpYmVcbiAqIGJhc2VkIG9uIHRoZSBjb21wb25lbnQncyBvciBzZXJ2aWNlJ3MgbGlmZWN5Y2xlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW4gYW4gQW5ndWxhciBjb21wb25lbnQgb3Igc2VydmljZVxuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG4gKiBpbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJy4vcGF0aC90by91bnRpbERlc3Ryb3llZCc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwLWV4YW1wbGUnLFxuICogICB0ZW1wbGF0ZTogYDxkaXY+RXhhbXBsZSBDb21wb25lbnQ8L2Rpdj5gLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBFeGFtcGxlQ29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgY29uc3QgZXhhbXBsZU9ic2VydmFibGUkID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICogICAgICAgLy8gT2JzZXJ2YWJsZSBsb2dpYyBoZXJlXG4gKiAgICAgfSk7XG4gKlxuICogICAgIGV4YW1wbGVPYnNlcnZhYmxlJC5waXBlKFxuICogICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAqICAgICApLnN1YnNjcmliZShkYXRhID0+IHtcbiAqICAgICAgIC8vIFN1YnNjcmlwdGlvbiBsb2dpYyBoZXJlXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIE5vIG5lZWQgdG8gbWFudWFsbHkgaW1wbGVtZW50IG5nT25EZXN0cm95IHRvIHVuc3Vic2NyaWJlXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVudGlsRGVzdHJveWVkKCk6IDxUPigpID0+IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcmV0dXJuICgpID0+IHRha2VVbnRpbERlc3Ryb3llZChkZXN0cm95UmVmKTtcbn1cbiJdfQ==