@odx/angular 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/CHANGELOG.md +22 -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/dynamic-view/lib/tokens/dynamic-view-context.d.ts +4 -0
  29. package/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.d.ts +10 -0
  30. package/cdk/event-plugins/lib/event-plugins.config.d.ts +35 -0
  31. package/cdk/event-plugins/lib/models/event-plugin.d.ts +57 -0
  32. package/cdk/event-plugins/lib/plugins/debounce-event-plugin.d.ts +32 -0
  33. package/cdk/event-plugins/lib/plugins/defer-event-plugin.d.ts +24 -0
  34. package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +41 -0
  35. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +47 -0
  36. package/cdk/option-control/lib/option-control.d.ts +47 -0
  37. package/cdk/radio-group-control/lib/radio-control.directive.d.ts +8 -0
  38. package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +11 -0
  39. package/components/accordion/lib/accordion.component.d.ts +8 -0
  40. package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +37 -1
  41. package/components/accordion/lib/directives/accordion-item-title.d.ts +3 -0
  42. package/components/action-group/action-group.component.d.ts +6 -0
  43. package/components/area-header/area-header.component.d.ts +8 -0
  44. package/components/area-header/directives/area-header-content.directive.d.ts +3 -0
  45. package/components/area-header/directives/area-header-subtitle.directive.d.ts +3 -0
  46. package/components/autocomplete/lib/autocomplete.component.d.ts +18 -0
  47. package/components/avatar/lib/avatar.component.d.ts +8 -0
  48. package/components/badge/lib/badge.component.d.ts +10 -0
  49. package/components/badge/lib/badge.directive.d.ts +15 -0
  50. package/components/bar/lib/bar.component.d.ts +7 -0
  51. package/components/bar/lib/directives/bar-button.directive.d.ts +3 -0
  52. package/components/bar/lib/directives/bar-label.directive.d.ts +3 -0
  53. package/components/breadcrumbs/lib/breadcrumbs.component.d.ts +3 -0
  54. package/components/button/lib/button.component.d.ts +10 -0
  55. package/components/button-group/lib/button-group.component.d.ts +15 -0
  56. package/components/calendar/lib/calendar.component.d.ts +48 -0
  57. package/components/calendar/lib/calendar.config.d.ts +17 -0
  58. package/components/calendar/lib/calendar.service.d.ts +48 -0
  59. package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +24 -0
  60. package/components/calendar/lib/components/calendar-month/calendar-month.component.d.ts +6 -0
  61. package/components/calendar/lib/components/calendar-year/calendar-year.component.d.ts +6 -0
  62. package/components/calendar/lib/components/calendar-years/calendar-years.component.d.ts +6 -0
  63. package/components/calendar/lib/daterange.service.d.ts +16 -0
  64. package/components/calendar/lib/directives/calendar-cell.directive.d.ts +37 -0
  65. package/components/calendar/lib/directives/calendar-view.directive.d.ts +41 -0
  66. package/components/calendar/lib/pipes/date-label.pipe.d.ts +5 -0
  67. package/components/calendar/lib/services/calendar-month.service.d.ts +1 -0
  68. package/components/calendar/lib/services/calendar-year.service.d.ts +1 -0
  69. package/components/calendar/lib/services/calendar-years.service.d.ts +1 -0
  70. package/components/calendar/lib/utils/check-cell-in-range.d.ts +1 -0
  71. package/components/calendar/lib/utils/check-identical-date.d.ts +1 -0
  72. package/components/calendar/lib/utils/get-A11y-label.d.ts +1 -0
  73. package/components/calendar/lib/utils/is-date-disabled.d.ts +1 -0
  74. package/components/calendar/lib/utils/parse-date.d.ts +1 -0
  75. package/components/calendar/lib/utils/validate-daterange.d.ts +1 -0
  76. package/components/calendar/lib/utils/validate-max-date.d.ts +1 -0
  77. package/components/calendar/lib/utils/validate-min-date.d.ts +1 -0
  78. package/components/calendar/lib/utils/validate-next-date-set.d.ts +1 -0
  79. package/components/calendar/lib/utils/validate-previous-date-set.d.ts +1 -0
  80. package/components/checkbox/lib/checkbox.component.d.ts +32 -0
  81. package/components/checkbox/lib/checkbox.validator.d.ts +23 -0
  82. package/components/chip/lib/components/chip/chip.component.d.ts +14 -0
  83. package/components/chip/lib/components/chip-list/chip-list.component.d.ts +3 -0
  84. package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +3 -0
  85. package/components/circular-progress/lib/circular-progress.component.d.ts +20 -0
  86. package/components/content-box/lib/content-box.component.d.ts +3 -0
  87. package/components/content-box/lib/directives/content-box-footer.directive.d.ts +3 -0
  88. package/components/content-box/lib/directives/content-box-header.directive.d.ts +3 -0
  89. package/components/datepicker/lib/datepicker.component.d.ts +47 -0
  90. package/components/datepicker/lib/datepicker.config.d.ts +19 -0
  91. package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +30 -0
  92. package/components/datepicker/lib/utils/get-datepicker-input-pattern.d.ts +2 -0
  93. package/components/datepicker/lib/utils/get-datepicker-input-value-as-date.d.ts +1 -0
  94. package/components/daterangepicker/lib/daterangepicker.component.d.ts +89 -0
  95. package/components/daterangepicker/lib/daterangepicker.config.d.ts +19 -0
  96. package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +30 -0
  97. package/components/daterangepicker/lib/range.validator.d.ts +15 -0
  98. package/components/daterangepicker/lib/required.validator.d.ts +6 -0
  99. package/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.d.ts +2 -0
  100. package/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.d.ts +1 -0
  101. package/components/dropdown/lib/dropdown.component.d.ts +16 -0
  102. package/components/dropdown/lib/dropdown.directive.d.ts +67 -0
  103. package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +5 -0
  104. package/components/error-page/lib/error-page.component.d.ts +7 -0
  105. package/components/error-page/lib/error-page.config.d.ts +18 -0
  106. package/components/footer/lib/footer.component.d.ts +9 -6
  107. package/components/footer/lib/footer.config.d.ts +2 -0
  108. package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +13 -0
  109. package/components/form-field/lib/components/form-group/form-group.component.d.ts +16 -0
  110. package/components/form-field/lib/directives/form-field-control.directive.d.ts +5 -0
  111. package/components/form-field/lib/directives/form-field-error.directive.d.ts +6 -0
  112. package/components/form-field/lib/directives/form-field-hint.directive.d.ts +3 -0
  113. package/components/form-field/lib/directives/form-field-label.directive.d.ts +3 -0
  114. package/components/form-field/lib/directives/form.directive.d.ts +13 -0
  115. package/components/form-field/lib/form-field.component.d.ts +20 -0
  116. package/components/form-field/lib/form-field.service.d.ts +42 -0
  117. package/components/form-field/lib/services/form-field-error.service.d.ts +24 -0
  118. package/components/header/lib/directives/header-avatar.directive.d.ts +4 -0
  119. package/components/header/lib/directives/header-title.directive.d.ts +3 -0
  120. package/components/header/lib/header.component.d.ts +3 -0
  121. package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +3 -0
  122. package/components/header-navigation/lib/header-navigation.component.d.ts +6 -0
  123. package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +14 -0
  124. package/components/icon/lib/icon.component.d.ts +24 -0
  125. package/components/icon/lib/icon.config.d.ts +26 -0
  126. package/components/inline-message/lib/inline-message.component.d.ts +13 -0
  127. package/components/link/link.directive.d.ts +3 -0
  128. package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +6 -0
  129. package/components/list/lib/components/list-item/list-item.component.d.ts +17 -1
  130. package/components/list/lib/list.component.d.ts +5 -0
  131. package/components/loading-spinner/lib/loading-spinner.component.d.ts +8 -0
  132. package/components/loading-spinner/lib/loading-spinner.directive.d.ts +22 -0
  133. package/components/logo/logo.directive.d.ts +15 -0
  134. package/components/main-menu/lib/directives/main-menu-button.directive.d.ts +5 -1
  135. package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +3 -0
  136. package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +16 -0
  137. package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +1 -0
  138. package/components/main-menu/lib/main-menu.component.d.ts +42 -0
  139. package/components/main-menu/lib/main-menu.config.d.ts +31 -0
  140. package/components/main-menu/lib/main-menu.service.d.ts +28 -0
  141. package/components/mainfilter-group/lib/mainfilter-group.component.d.ts +4 -0
  142. package/components/menu/lib/directives/menu-item.directive.d.ts +6 -0
  143. package/components/menu/lib/menu.component.d.ts +13 -1
  144. package/components/menu/lib/menu.directive.d.ts +31 -0
  145. package/components/modal/lib/components/basic-modal/basic-modal.component.d.ts +14 -0
  146. package/components/modal/lib/components/modal-footer/modal-footer.component.d.ts +3 -0
  147. package/components/modal/lib/components/modal-header/modal-header.component.d.ts +9 -0
  148. package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +21 -0
  149. package/components/modal/lib/directives/modal-close.directive.d.ts +25 -1
  150. package/components/modal/lib/directives/modal-content.directive.d.ts +3 -0
  151. package/components/modal/lib/directives/modal-dismiss.directive.d.ts +18 -1
  152. package/components/modal/lib/helpers/inject-modal-ref.d.ts +21 -0
  153. package/components/modal/lib/helpers/provide-modal-ref.d.ts +9 -0
  154. package/components/modal/lib/modal.component.d.ts +25 -0
  155. package/components/modal/lib/modal.config.d.ts +33 -0
  156. package/components/modal/lib/modal.directive.d.ts +29 -0
  157. package/components/modal/lib/modal.service.d.ts +54 -0
  158. package/components/modal/lib/models/modal-ref.d.ts +34 -0
  159. package/components/navigation-back/lib/navigation-back.component.d.ts +3 -0
  160. package/components/notification/lib/components/notification-center/notification-center.component.d.ts +0 -2
  161. package/components/notification/lib/directives/notification-center.directive.d.ts +18 -4
  162. package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +1 -0
  163. package/components/notification/lib/helpers/sort-notifications.d.ts +1 -0
  164. package/components/notification/lib/helpers/to-notification-collection.d.ts +1 -0
  165. package/components/notification/lib/models/notification-feature.d.ts +15 -0
  166. package/components/notification/lib/notification.config.d.ts +54 -0
  167. package/components/notification/lib/notification.logger.d.ts +1 -0
  168. package/components/notification/lib/notification.service.d.ts +55 -0
  169. package/components/notification/lib/notification.tokens.d.ts +3 -0
  170. package/components/notification/lib/services/notification-center.service.d.ts +9 -0
  171. package/components/paginator/lib/paginator.component.d.ts +89 -0
  172. package/components/paginator/lib/paginator.config.d.ts +24 -2
  173. package/components/progress/lib/progress.component.d.ts +15 -0
  174. package/components/radio-group/lib/components/radio-button/radio-button.component.d.ts +18 -1
  175. package/components/radio-group/lib/radio-group.component.d.ts +11 -0
  176. package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +19 -0
  177. package/components/rail-navigation/lib/rail-navigation.component.d.ts +26 -0
  178. package/components/rich-list/lib/components/rich-list-content/rich-list-content.component.d.ts +4 -0
  179. package/components/rich-list/lib/components/rich-list-header/rich-list-header.component.d.ts +4 -0
  180. package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +9 -1
  181. package/components/rich-list/lib/rich-list.component.d.ts +9 -2
  182. package/components/select/lib/components/select-option/select-option.component.d.ts +39 -2
  183. package/components/select/lib/directives/select-input-control.directive.d.ts +11 -0
  184. package/components/select/lib/pipes/select-search-filter.pipe.d.ts +10 -0
  185. package/components/select/lib/select.component.d.ts +59 -0
  186. package/components/slider/lib/slider.directive.d.ts +19 -0
  187. package/components/spinbox/lib/spinbox.component.d.ts +16 -0
  188. package/components/switch/lib/switch.component.d.ts +10 -0
  189. package/components/switch/lib/switch.validator.d.ts +12 -0
  190. package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +28 -0
  191. package/components/tab-bar/lib/tab-bar.component.d.ts +69 -0
  192. package/components/table/lib/components/check-cell/check-cell.component.d.ts +18 -0
  193. package/components/table/lib/components/header-title/header-title.component.d.ts +33 -1
  194. package/components/table/lib/directives/table-cell.directive.d.ts +4 -0
  195. package/components/table/lib/directives/table-row.directive.d.ts +4 -0
  196. package/components/table/lib/table.component.d.ts +36 -0
  197. package/components/timepicker/lib/timepicker.component.d.ts +11 -2
  198. package/components/timepicker/lib/utils/generate-time-stamps.d.ts +2 -1
  199. package/components/timepicker/lib/utils/ngx-mask-helper.d.ts +2 -2
  200. package/components/toast/lib/components/toast-item/toast-item.component.d.ts +5 -4
  201. package/components/toast/lib/models/toast.d.ts +4 -2
  202. package/components/toast/lib/toast.config.d.ts +26 -0
  203. package/components/toast/lib/toast.service.d.ts +35 -0
  204. package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +11 -0
  205. package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +12 -0
  206. package/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.d.ts +7 -0
  207. package/components/tooltip/lib/tooltip.component.d.ts +20 -0
  208. package/components/tooltip/lib/tooltip.directive.d.ts +35 -0
  209. package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +34 -0
  210. package/components/wizard/lib/wizard.component.d.ts +20 -0
  211. package/esm2022/animations/lib/expand.mjs +45 -1
  212. package/esm2022/animations/lib/fade.mjs +71 -1
  213. package/esm2022/animations/lib/slide.mjs +22 -1
  214. package/esm2022/animations/lib/wait-for-child-animations.mjs +39 -1
  215. package/esm2022/breakpoints/lib/breakpoints.config.mjs +39 -1
  216. package/esm2022/breakpoints/lib/breakpoints.service.mjs +44 -1
  217. package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +37 -1
  218. package/esm2022/breakpoints/lib/helpers/configure-breakpoint.mjs +20 -1
  219. package/esm2022/cdk/a11y/lib/directives/interactive.directive.mjs +33 -1
  220. package/esm2022/cdk/a11y/lib/directives/list-focus-manager-option.directive.mjs +23 -1
  221. package/esm2022/cdk/a11y/lib/directives/list-focus-manager.directive.mjs +18 -1
  222. package/esm2022/cdk/active-indicator/lib/active-indicator.directive.mjs +64 -1
  223. package/esm2022/cdk/autocomplete-control/lib/autocomplete-control.mjs +40 -2
  224. package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +4 -1
  225. package/esm2022/cdk/connected-overlay/lib/connected-overlay.service.mjs +45 -1
  226. package/esm2022/cdk/connected-overlay/lib/helpers/compute-overlay-position.mjs +11 -1
  227. package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +50 -1
  228. package/esm2022/cdk/custom-form-control/lib/custom-form-control.mjs +109 -3
  229. package/esm2022/cdk/custom-form-control/lib/input-control.directive.mjs +76 -1
  230. package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +18 -1
  231. package/esm2022/cdk/dynamic-view/lib/dynamic-view.service.mjs +31 -1
  232. package/esm2022/cdk/dynamic-view/lib/helpers/create-projectable-nodes.mjs +23 -1
  233. package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.mjs +23 -1
  234. package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-view.mjs +23 -1
  235. package/esm2022/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +40 -1
  236. package/esm2022/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +37 -1
  237. package/esm2022/cdk/dynamic-view/lib/tokens/dynamic-view-context.mjs +5 -1
  238. package/esm2022/cdk/dynamic-view/lib/tokens/dynamic-view-default-host.mjs +11 -1
  239. package/esm2022/cdk/event-plugins/lib/event-plugins.config.mjs +36 -1
  240. package/esm2022/cdk/event-plugins/lib/models/event-plugin.mjs +45 -1
  241. package/esm2022/cdk/event-plugins/lib/plugins/debounce-event-plugin.mjs +33 -1
  242. package/esm2022/cdk/event-plugins/lib/plugins/defer-event-plugin.mjs +25 -1
  243. package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +42 -1
  244. package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +48 -1
  245. package/esm2022/cdk/option-control/lib/option-control.mjs +48 -1
  246. package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +9 -1
  247. package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +12 -1
  248. package/esm2022/components/accordion/lib/accordion.component.mjs +9 -1
  249. package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +31 -1
  250. package/esm2022/components/accordion/lib/directives/accordion-item-title.mjs +4 -1
  251. package/esm2022/components/action-group/action-group.component.mjs +7 -1
  252. package/esm2022/components/area-header/area-header.component.mjs +9 -1
  253. package/esm2022/components/area-header/directives/area-header-content.directive.mjs +4 -1
  254. package/esm2022/components/area-header/directives/area-header-subtitle.directive.mjs +4 -1
  255. package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +29 -5
  256. package/esm2022/components/avatar/lib/avatar.component.mjs +9 -1
  257. package/esm2022/components/badge/lib/badge.component.mjs +11 -1
  258. package/esm2022/components/badge/lib/badge.directive.mjs +16 -1
  259. package/esm2022/components/bar/lib/bar.component.mjs +8 -1
  260. package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +4 -1
  261. package/esm2022/components/bar/lib/directives/bar-label.directive.mjs +4 -1
  262. package/esm2022/components/breadcrumbs/lib/breadcrumbs.component.mjs +4 -1
  263. package/esm2022/components/button/lib/button.component.mjs +11 -1
  264. package/esm2022/components/button-group/lib/button-group.component.mjs +16 -1
  265. package/esm2022/components/calendar/lib/calendar.component.mjs +35 -1
  266. package/esm2022/components/calendar/lib/calendar.config.mjs +18 -1
  267. package/esm2022/components/calendar/lib/calendar.service.mjs +49 -1
  268. package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +19 -1
  269. package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +7 -1
  270. package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +7 -1
  271. package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +7 -1
  272. package/esm2022/components/calendar/lib/daterange.service.mjs +17 -1
  273. package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +26 -1
  274. package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +39 -1
  275. package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +6 -1
  276. package/esm2022/components/calendar/lib/services/calendar-month.service.mjs +2 -1
  277. package/esm2022/components/calendar/lib/services/calendar-year.service.mjs +2 -1
  278. package/esm2022/components/calendar/lib/services/calendar-years.service.mjs +2 -1
  279. package/esm2022/components/calendar/lib/utils/check-cell-in-range.mjs +2 -1
  280. package/esm2022/components/calendar/lib/utils/check-identical-date.mjs +2 -1
  281. package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +2 -1
  282. package/esm2022/components/calendar/lib/utils/is-date-disabled.mjs +2 -1
  283. package/esm2022/components/calendar/lib/utils/parse-date.mjs +2 -1
  284. package/esm2022/components/calendar/lib/utils/validate-daterange.mjs +2 -1
  285. package/esm2022/components/calendar/lib/utils/validate-max-date.mjs +2 -1
  286. package/esm2022/components/calendar/lib/utils/validate-min-date.mjs +2 -1
  287. package/esm2022/components/calendar/lib/utils/validate-next-date-set.mjs +2 -1
  288. package/esm2022/components/calendar/lib/utils/validate-previous-date-set.mjs +2 -1
  289. package/esm2022/components/checkbox/lib/checkbox.component.mjs +33 -1
  290. package/esm2022/components/checkbox/lib/checkbox.validator.mjs +24 -1
  291. package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -1
  292. package/esm2022/components/chip/lib/components/chip-list/chip-list.component.mjs +4 -1
  293. package/esm2022/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +4 -1
  294. package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +21 -1
  295. package/esm2022/components/content-box/lib/content-box.component.mjs +4 -1
  296. package/esm2022/components/content-box/lib/directives/content-box-footer.directive.mjs +4 -1
  297. package/esm2022/components/content-box/lib/directives/content-box-header.directive.mjs +4 -1
  298. package/esm2022/components/datepicker/lib/datepicker.component.mjs +33 -1
  299. package/esm2022/components/datepicker/lib/datepicker.config.mjs +20 -1
  300. package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +31 -1
  301. package/esm2022/components/datepicker/lib/utils/get-datepicker-input-pattern.mjs +3 -1
  302. package/esm2022/components/datepicker/lib/utils/get-datepicker-input-value-as-date.mjs +2 -1
  303. package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +65 -1
  304. package/esm2022/components/daterangepicker/lib/daterangepicker.config.mjs +20 -1
  305. package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +31 -1
  306. package/esm2022/components/daterangepicker/lib/range.validator.mjs +16 -1
  307. package/esm2022/components/daterangepicker/lib/required.validator.mjs +15 -1
  308. package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.mjs +3 -1
  309. package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.mjs +2 -1
  310. package/esm2022/components/dropdown/lib/dropdown.component.mjs +8 -1
  311. package/esm2022/components/dropdown/lib/dropdown.directive.mjs +55 -1
  312. package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +6 -1
  313. package/esm2022/components/error-page/lib/error-page.component.mjs +8 -1
  314. package/esm2022/components/error-page/lib/error-page.config.mjs +9 -1
  315. package/esm2022/components/footer/lib/footer.component.mjs +10 -7
  316. package/esm2022/components/footer/lib/footer.config.mjs +3 -1
  317. package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +14 -1
  318. package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +13 -1
  319. package/esm2022/components/form-field/lib/directives/form-field-control.directive.mjs +6 -1
  320. package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +4 -1
  321. package/esm2022/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -1
  322. package/esm2022/components/form-field/lib/directives/form-field-label.directive.mjs +4 -1
  323. package/esm2022/components/form-field/lib/directives/form.directive.mjs +14 -1
  324. package/esm2022/components/form-field/lib/form-field.component.mjs +14 -1
  325. package/esm2022/components/form-field/lib/form-field.service.mjs +43 -1
  326. package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +25 -1
  327. package/esm2022/components/header/lib/directives/header-avatar.directive.mjs +5 -1
  328. package/esm2022/components/header/lib/directives/header-title.directive.mjs +4 -1
  329. package/esm2022/components/header/lib/header.component.mjs +4 -1
  330. package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +4 -1
  331. package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +4 -1
  332. package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +15 -1
  333. package/esm2022/components/icon/lib/icon.component.mjs +25 -1
  334. package/esm2022/components/icon/lib/icon.config.mjs +20 -1
  335. package/esm2022/components/inline-message/lib/inline-message.component.mjs +14 -1
  336. package/esm2022/components/link/link.directive.mjs +4 -1
  337. package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +7 -1
  338. package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +18 -2
  339. package/esm2022/components/list/lib/list.component.mjs +6 -1
  340. package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +10 -2
  341. package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +23 -1
  342. package/esm2022/components/logo/logo.directive.mjs +16 -1
  343. package/esm2022/components/main-menu/lib/directives/main-menu-button.directive.mjs +5 -1
  344. package/esm2022/components/main-menu/lib/directives/main-menu-close.directive.mjs +4 -1
  345. package/esm2022/components/main-menu/lib/directives/main-menu-item.directive.mjs +17 -1
  346. package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +2 -1
  347. package/esm2022/components/main-menu/lib/main-menu.component.mjs +37 -1
  348. package/esm2022/components/main-menu/lib/main-menu.config.mjs +32 -1
  349. package/esm2022/components/main-menu/lib/main-menu.service.mjs +29 -1
  350. package/esm2022/components/mainfilter-group/lib/mainfilter-group.component.mjs +5 -1
  351. package/esm2022/components/menu/lib/directives/menu-item.directive.mjs +7 -1
  352. package/esm2022/components/menu/lib/menu.component.mjs +13 -1
  353. package/esm2022/components/menu/lib/menu.directive.mjs +19 -1
  354. package/esm2022/components/modal/lib/components/basic-modal/basic-modal.component.mjs +15 -1
  355. package/esm2022/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -1
  356. package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +4 -1
  357. package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +12 -1
  358. package/esm2022/components/modal/lib/directives/modal-close.directive.mjs +25 -1
  359. package/esm2022/components/modal/lib/directives/modal-content.directive.mjs +4 -1
  360. package/esm2022/components/modal/lib/directives/modal-dismiss.directive.mjs +18 -1
  361. package/esm2022/components/modal/lib/helpers/inject-modal-ref.mjs +22 -1
  362. package/esm2022/components/modal/lib/helpers/provide-modal-ref.mjs +10 -1
  363. package/esm2022/components/modal/lib/modal.component.mjs +21 -2
  364. package/esm2022/components/modal/lib/modal.config.mjs +34 -1
  365. package/esm2022/components/modal/lib/modal.directive.mjs +25 -1
  366. package/esm2022/components/modal/lib/modal.service.mjs +39 -1
  367. package/esm2022/components/modal/lib/models/modal-ref.mjs +34 -1
  368. package/esm2022/components/navigation-back/lib/navigation-back.component.mjs +4 -1
  369. package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +1 -3
  370. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +19 -5
  371. package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +2 -1
  372. package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +2 -1
  373. package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +2 -1
  374. package/esm2022/components/notification/lib/models/notification-feature.mjs +16 -1
  375. package/esm2022/components/notification/lib/notification.config.mjs +45 -1
  376. package/esm2022/components/notification/lib/notification.logger.mjs +2 -1
  377. package/esm2022/components/notification/lib/notification.service.mjs +56 -1
  378. package/esm2022/components/notification/lib/notification.tokens.mjs +4 -1
  379. package/esm2022/components/notification/lib/services/notification-center.service.mjs +10 -1
  380. package/esm2022/components/paginator/lib/paginator.component.mjs +90 -1
  381. package/esm2022/components/paginator/lib/paginator.config.mjs +29 -1
  382. package/esm2022/components/progress/lib/progress.component.mjs +16 -1
  383. package/esm2022/components/radio-group/lib/components/radio-button/radio-button.component.mjs +20 -3
  384. package/esm2022/components/radio-group/lib/radio-group.component.mjs +13 -2
  385. package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +17 -1
  386. package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +27 -1
  387. package/esm2022/components/rich-list/lib/components/rich-list-content/rich-list-content.component.mjs +5 -1
  388. package/esm2022/components/rich-list/lib/components/rich-list-header/rich-list-header.component.mjs +5 -1
  389. package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +10 -2
  390. package/esm2022/components/rich-list/lib/rich-list.component.mjs +10 -3
  391. package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +49 -7
  392. package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +12 -2
  393. package/esm2022/components/select/lib/pipes/select-search-filter.pipe.mjs +11 -1
  394. package/esm2022/components/select/lib/select.component.mjs +59 -5
  395. package/esm2022/components/slider/lib/slider.directive.mjs +20 -1
  396. package/esm2022/components/spinbox/lib/spinbox.component.mjs +17 -1
  397. package/esm2022/components/switch/lib/switch.component.mjs +11 -1
  398. package/esm2022/components/switch/lib/switch.validator.mjs +13 -1
  399. package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +29 -1
  400. package/esm2022/components/tab-bar/lib/tab-bar.component.mjs +71 -1
  401. package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +19 -1
  402. package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +30 -2
  403. package/esm2022/components/table/lib/directives/table-cell.directive.mjs +5 -1
  404. package/esm2022/components/table/lib/directives/table-row.directive.mjs +5 -1
  405. package/esm2022/components/table/lib/table.component.mjs +30 -1
  406. package/esm2022/components/timepicker/lib/timepicker.component.mjs +15 -6
  407. package/esm2022/components/timepicker/lib/utils/generate-time-stamps.mjs +5 -3
  408. package/esm2022/components/timepicker/lib/utils/ngx-mask-helper.mjs +3 -3
  409. package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +3 -3
  410. package/esm2022/components/toast/lib/components/toast-item/toast-item.component.mjs +5 -3
  411. package/esm2022/components/toast/lib/models/toast.mjs +1 -1
  412. package/esm2022/components/toast/lib/toast.config.mjs +27 -1
  413. package/esm2022/components/toast/lib/toast.service.mjs +36 -1
  414. package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +12 -1
  415. package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +14 -2
  416. package/esm2022/components/tooltip/lib/helpers/resolve-tooltip-trigger-events.mjs +8 -1
  417. package/esm2022/components/tooltip/lib/tooltip.component.mjs +18 -1
  418. package/esm2022/components/tooltip/lib/tooltip.directive.mjs +36 -1
  419. package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +35 -1
  420. package/esm2022/components/wizard/lib/wizard.component.mjs +21 -1
  421. package/esm2022/internal/lib/helpers/decorator-property-name.mjs +9 -1
  422. package/esm2022/internal/translate/lib/translate.config.mjs +32 -1
  423. package/esm2022/internal/translate/lib/translate.service.mjs +30 -1
  424. package/esm2022/lib/controllers/controller.mjs +26 -1
  425. package/esm2022/lib/controllers/disabled.controller.mjs +60 -1
  426. package/esm2022/lib/controllers/readonly.controller.mjs +57 -1
  427. package/esm2022/lib/directives/click-outside.directive.mjs +30 -1
  428. package/esm2022/lib/directives/delegate-focus.directive.mjs +15 -1
  429. package/esm2022/lib/services/window-ref.mjs +67 -1
  430. package/esm2022/lib/tokens/identity-matcher.mjs +25 -1
  431. package/esm2022/lib/tokens/string-search-handler.mjs +25 -1
  432. package/esm2022/lib/tokens/stringify.mjs +26 -1
  433. package/esm2022/localization/lib/features/with-http-language-header.mjs +54 -1
  434. package/esm2022/localization/lib/features/with-http-language-query-param.mjs +52 -1
  435. package/esm2022/localization/lib/loaders/browser-language-loader.mjs +33 -1
  436. package/esm2022/localization/lib/localization.config.mjs +71 -1
  437. package/esm2022/localization/lib/localization.service.mjs +42 -3
  438. package/esm2022/localization/lib/models/localization-feature.mjs +8 -1
  439. package/esm2022/rxjs/index.mjs +2 -2
  440. package/esm2022/rxjs/lib/delay-until.mjs +23 -1
  441. package/esm2022/rxjs/lib/from-element-mutation.mjs +22 -1
  442. package/esm2022/rxjs/lib/from-element-resize.mjs +25 -1
  443. package/esm2022/rxjs/lib/from-events.mjs +25 -1
  444. package/esm2022/rxjs/lib/from-query-list.mjs +24 -0
  445. package/esm2022/sdk/lib/application-environment.mjs +51 -1
  446. package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +19 -1
  447. package/esm2022/theming/lib/helpers/resolve-theme.mjs +26 -1
  448. package/esm2022/theming/lib/helpers/theme-storage.mjs +43 -1
  449. package/esm2022/theming/lib/theming.config.mjs +34 -1
  450. package/esm2022/theming/lib/theming.service.mjs +32 -1
  451. package/esm2022/utils/lib/decorators/pure.mjs +52 -1
  452. package/esm2022/utils/lib/helpers/angular.mjs +37 -1
  453. package/esm2022/utils/lib/helpers/array.mjs +5 -1
  454. package/esm2022/utils/lib/helpers/build-url.mjs +21 -1
  455. package/esm2022/utils/lib/helpers/build-website-url.mjs +3 -2
  456. package/esm2022/utils/lib/helpers/cache-storage-client.mjs +52 -1
  457. package/esm2022/utils/lib/helpers/coercion.mjs +18 -1
  458. package/esm2022/utils/lib/helpers/debounce.mjs +28 -1
  459. package/esm2022/utils/lib/helpers/defer-fn.mjs +21 -1
  460. package/esm2022/utils/lib/helpers/dom.mjs +71 -1
  461. package/esm2022/utils/lib/helpers/get-axis.mjs +21 -1
  462. package/esm2022/utils/lib/helpers/get-language-code.mjs +18 -1
  463. package/esm2022/utils/lib/helpers/get-opposite-side.mjs +22 -1
  464. package/esm2022/utils/lib/helpers/get-side.mjs +18 -1
  465. package/esm2022/utils/lib/helpers/get-unique-id.mjs +34 -1
  466. package/esm2022/utils/lib/helpers/match-url.mjs +41 -1
  467. package/esm2022/utils/lib/helpers/ng-changes.mjs +30 -1
  468. package/esm2022/utils/lib/helpers/provide-config.mjs +57 -1
  469. package/esm2022/utils/lib/helpers/queue.mjs +84 -1
  470. package/esm2022/utils/lib/helpers/type-guards.mjs +58 -1
  471. package/esm2022/utils/lib/helpers/until-destroyed.mjs +39 -1
  472. package/fesm2022/odx-angular-animations.mjs +173 -0
  473. package/fesm2022/odx-angular-animations.mjs.map +1 -1
  474. package/fesm2022/odx-angular-breakpoints.mjs +136 -0
  475. package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
  476. package/fesm2022/odx-angular-cdk-a11y.mjs +71 -0
  477. package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
  478. package/fesm2022/odx-angular-cdk-active-indicator.mjs +63 -0
  479. package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
  480. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +39 -1
  481. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
  482. package/fesm2022/odx-angular-cdk-checkbox-control.mjs +3 -0
  483. package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  484. package/fesm2022/odx-angular-cdk-connected-overlay.mjs +103 -0
  485. package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
  486. package/fesm2022/odx-angular-cdk-custom-form-control.mjs +183 -2
  487. package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  488. package/fesm2022/odx-angular-cdk-dynamic-view.mjs +202 -0
  489. package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  490. package/fesm2022/odx-angular-cdk-event-plugins.mjs +135 -0
  491. package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
  492. package/fesm2022/odx-angular-cdk-expandable.mjs +88 -0
  493. package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
  494. package/fesm2022/odx-angular-cdk-option-control.mjs +47 -0
  495. package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
  496. package/fesm2022/odx-angular-cdk-radio-group-control.mjs +19 -0
  497. package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  498. package/fesm2022/odx-angular-components-accordion.mjs +41 -0
  499. package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
  500. package/fesm2022/odx-angular-components-action-group.mjs +6 -0
  501. package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
  502. package/fesm2022/odx-angular-components-area-header.mjs +14 -0
  503. package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
  504. package/fesm2022/odx-angular-components-autocomplete.mjs +28 -4
  505. package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
  506. package/fesm2022/odx-angular-components-avatar.mjs +8 -0
  507. package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
  508. package/fesm2022/odx-angular-components-badge.mjs +25 -0
  509. package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
  510. package/fesm2022/odx-angular-components-bar.mjs +13 -0
  511. package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
  512. package/fesm2022/odx-angular-components-breadcrumbs.mjs +3 -0
  513. package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
  514. package/fesm2022/odx-angular-components-button-group.mjs +15 -0
  515. package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
  516. package/fesm2022/odx-angular-components-button.mjs +10 -0
  517. package/fesm2022/odx-angular-components-button.mjs.map +1 -1
  518. package/fesm2022/odx-angular-components-calendar.mjs +232 -0
  519. package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
  520. package/fesm2022/odx-angular-components-checkbox.mjs +55 -0
  521. package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
  522. package/fesm2022/odx-angular-components-chip.mjs +20 -0
  523. package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
  524. package/fesm2022/odx-angular-components-circular-progress.mjs +20 -0
  525. package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
  526. package/fesm2022/odx-angular-components-content-box.mjs +9 -0
  527. package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
  528. package/fesm2022/odx-angular-components-datepicker.mjs +84 -0
  529. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  530. package/fesm2022/odx-angular-components-daterangepicker.mjs +145 -0
  531. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  532. package/fesm2022/odx-angular-components-dropdown.mjs +66 -0
  533. package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
  534. package/fesm2022/odx-angular-components-error-page.mjs +15 -0
  535. package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
  536. package/fesm2022/odx-angular-components-footer.mjs +11 -6
  537. package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
  538. package/fesm2022/odx-angular-components-form-field.mjs +131 -0
  539. package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
  540. package/fesm2022/odx-angular-components-header-navigation.mjs +6 -0
  541. package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
  542. package/fesm2022/odx-angular-components-header.mjs +10 -0
  543. package/fesm2022/odx-angular-components-header.mjs.map +1 -1
  544. package/fesm2022/odx-angular-components-icon.mjs +57 -0
  545. package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
  546. package/fesm2022/odx-angular-components-inline-message.mjs +13 -0
  547. package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
  548. package/fesm2022/odx-angular-components-link.mjs +3 -0
  549. package/fesm2022/odx-angular-components-link.mjs.map +1 -1
  550. package/fesm2022/odx-angular-components-list.mjs +28 -1
  551. package/fesm2022/odx-angular-components-list.mjs.map +1 -1
  552. package/fesm2022/odx-angular-components-loading-spinner.mjs +30 -0
  553. package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
  554. package/fesm2022/odx-angular-components-logo.mjs +15 -0
  555. package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
  556. package/fesm2022/odx-angular-components-main-menu.mjs +119 -0
  557. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  558. package/fesm2022/odx-angular-components-mainfilter-group.mjs +4 -0
  559. package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
  560. package/fesm2022/odx-angular-components-menu.mjs +36 -0
  561. package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
  562. package/fesm2022/odx-angular-components-modal.mjs +252 -0
  563. package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
  564. package/fesm2022/odx-angular-components-navigation-back.mjs +3 -0
  565. package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
  566. package/fesm2022/odx-angular-components-notification.mjs +148 -6
  567. package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
  568. package/fesm2022/odx-angular-components-paginator.mjs +117 -0
  569. package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
  570. package/fesm2022/odx-angular-components-progress.mjs +15 -0
  571. package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
  572. package/fesm2022/odx-angular-components-radio-group.mjs +30 -2
  573. package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
  574. package/fesm2022/odx-angular-components-rail-navigation.mjs +42 -0
  575. package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
  576. package/fesm2022/odx-angular-components-rich-list.mjs +26 -3
  577. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  578. package/fesm2022/odx-angular-components-select.mjs +126 -11
  579. package/fesm2022/odx-angular-components-select.mjs.map +1 -1
  580. package/fesm2022/odx-angular-components-slider.mjs +19 -0
  581. package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
  582. package/fesm2022/odx-angular-components-spinbox.mjs +16 -0
  583. package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
  584. package/fesm2022/odx-angular-components-switch.mjs +22 -0
  585. package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
  586. package/fesm2022/odx-angular-components-tab-bar.mjs +98 -0
  587. package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
  588. package/fesm2022/odx-angular-components-table.mjs +84 -1
  589. package/fesm2022/odx-angular-components-table.mjs.map +1 -1
  590. package/fesm2022/odx-angular-components-timepicker.mjs +20 -9
  591. package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
  592. package/fesm2022/odx-angular-components-toast.mjs +67 -4
  593. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  594. package/fesm2022/odx-angular-components-toggle-button-group.mjs +23 -0
  595. package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
  596. package/fesm2022/odx-angular-components-tooltip.mjs +59 -0
  597. package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
  598. package/fesm2022/odx-angular-components-wizard.mjs +54 -0
  599. package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
  600. package/fesm2022/odx-angular-internal-translate.mjs +60 -0
  601. package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
  602. package/fesm2022/odx-angular-internal.mjs +8 -0
  603. package/fesm2022/odx-angular-internal.mjs.map +1 -1
  604. package/fesm2022/odx-angular-localization.mjs +254 -2
  605. package/fesm2022/odx-angular-localization.mjs.map +1 -1
  606. package/fesm2022/odx-angular-rxjs.mjs +115 -5
  607. package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
  608. package/fesm2022/odx-angular-sdk.mjs +50 -0
  609. package/fesm2022/odx-angular-sdk.mjs.map +1 -1
  610. package/fesm2022/odx-angular-theming.mjs +149 -0
  611. package/fesm2022/odx-angular-theming.mjs.map +1 -1
  612. package/fesm2022/odx-angular-utils.mjs +709 -1
  613. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  614. package/fesm2022/odx-angular.mjs +322 -0
  615. package/fesm2022/odx-angular.mjs.map +1 -1
  616. package/internal/lib/helpers/decorator-property-name.d.ts +8 -0
  617. package/internal/translate/lib/translate.config.d.ts +31 -0
  618. package/internal/translate/lib/translate.service.d.ts +29 -0
  619. package/lib/controllers/controller.d.ts +25 -0
  620. package/lib/controllers/disabled.controller.d.ts +59 -0
  621. package/lib/controllers/readonly.controller.d.ts +56 -0
  622. package/lib/directives/click-outside.directive.d.ts +29 -0
  623. package/lib/directives/delegate-focus.directive.d.ts +14 -0
  624. package/lib/services/window-ref.d.ts +66 -0
  625. package/lib/tokens/identity-matcher.d.ts +41 -0
  626. package/lib/tokens/string-search-handler.d.ts +39 -0
  627. package/lib/tokens/stringify.d.ts +42 -0
  628. package/localization/lib/features/with-http-language-header.d.ts +63 -0
  629. package/localization/lib/features/with-http-language-query-param.d.ts +61 -0
  630. package/localization/lib/loaders/browser-language-loader.d.ts +32 -0
  631. package/localization/lib/localization.config.d.ts +81 -0
  632. package/localization/lib/localization.service.d.ts +39 -0
  633. package/localization/lib/models/localization-feature.d.ts +7 -0
  634. package/package.json +1 -1
  635. package/rxjs/index.d.ts +1 -1
  636. package/rxjs/lib/delay-until.d.ts +22 -0
  637. package/rxjs/lib/from-element-mutation.d.ts +21 -0
  638. package/rxjs/lib/from-element-resize.d.ts +24 -0
  639. package/rxjs/lib/from-events.d.ts +24 -0
  640. package/rxjs/lib/from-query-list.d.ts +22 -0
  641. package/sdk/lib/application-environment.d.ts +59 -0
  642. package/theming/lib/helpers/prefers-dark-theme.d.ts +18 -0
  643. package/theming/lib/helpers/resolve-theme.d.ts +25 -0
  644. package/theming/lib/helpers/theme-storage.d.ts +42 -0
  645. package/theming/lib/theming.config.d.ts +46 -0
  646. package/theming/lib/theming.service.d.ts +31 -0
  647. package/utils/lib/decorators/pure.d.ts +51 -0
  648. package/utils/lib/helpers/angular.d.ts +36 -0
  649. package/utils/lib/helpers/array.d.ts +4 -0
  650. package/utils/lib/helpers/build-url.d.ts +20 -0
  651. package/utils/lib/helpers/build-website-url.d.ts +2 -1
  652. package/utils/lib/helpers/cache-storage-client.d.ts +51 -0
  653. package/utils/lib/helpers/coercion.d.ts +17 -0
  654. package/utils/lib/helpers/debounce.d.ts +27 -0
  655. package/utils/lib/helpers/defer-fn.d.ts +20 -0
  656. package/utils/lib/helpers/dom.d.ts +70 -0
  657. package/utils/lib/helpers/get-axis.d.ts +20 -0
  658. package/utils/lib/helpers/get-language-code.d.ts +17 -0
  659. package/utils/lib/helpers/get-opposite-side.d.ts +21 -0
  660. package/utils/lib/helpers/get-side.d.ts +17 -0
  661. package/utils/lib/helpers/get-unique-id.d.ts +33 -0
  662. package/utils/lib/helpers/match-url.d.ts +40 -0
  663. package/utils/lib/helpers/ng-changes.d.ts +52 -0
  664. package/utils/lib/helpers/provide-config.d.ts +56 -0
  665. package/utils/lib/helpers/queue.d.ts +83 -0
  666. package/utils/lib/helpers/type-guards.d.ts +57 -0
  667. package/utils/lib/helpers/until-destroyed.d.ts +38 -0
  668. package/esm2022/rxjs/lib/form-query-list.mjs +0 -5
  669. package/rxjs/lib/form-query-list.d.ts +0 -3
@@ -2,11 +2,44 @@ import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders } from '@angu
2
2
  import { createConfigTokens } from '@odx/angular/utils';
3
3
  import { Theme } from './models';
4
4
  import { ThemingService } from './theming.service';
5
+ /**
6
+ * Utility created by `createConfigTokens` for managing theming configuration tokens and functions.
7
+ * Provides easy access to theming configuration, default values, and dependency injection utilities.
8
+ */
5
9
  export const { ThemingConfig, injectThemingConfig, provideThemingConfig } = createConfigTokens('Theming', '@odx/angular/theme', {
6
10
  autoDetect: false,
7
11
  defaultTheme: Theme.LIGHT,
8
12
  storage: null,
9
13
  });
14
+ /**
15
+ * Provides the theming configuration to the application and initializes the `ThemingService`
16
+ * based on the provided configuration. This function simplifies the setup of a dynamic theming
17
+ * system, integrating with Angular's environment initializers to ensure proper initialization.
18
+ *
19
+ * @template D - The dependencies required by the theming configuration, if any.
20
+ * @param {ConfigProvider<Partial<ThemingConfig>, D>} config - The theming configuration or a configuration factory provider.
21
+ * @returns {EnvironmentProviders} An array of providers for setting up theming in the application.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * // Providing a simple theming configuration
26
+ * provideTheming({
27
+ * autoDetect: true,
28
+ * defaultTheme: Theme.DARK,
29
+ * storage: localStorage,
30
+ * });
31
+ *
32
+ * // Providing a theming configuration with dependencies
33
+ * provideTheming({
34
+ * useFactory: (deps: Dependencies) => ({
35
+ * autoDetect: deps.setting,
36
+ * defaultTheme: Theme.DARK,
37
+ * storage: localStorage,
38
+ * }),
39
+ * deps: [SomeDependency],
40
+ * });
41
+ * ```
42
+ */
10
43
  export function provideTheming(config) {
11
44
  return makeEnvironmentProviders([
12
45
  provideThemingConfig(config),
@@ -18,4 +51,4 @@ export function provideTheming(config) {
18
51
  },
19
52
  ]);
20
53
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdGhlbWluZy9zcmMvbGliL3RoZW1pbmcuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBc0Msa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVFuRCxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRTtJQUM5SCxVQUFVLEVBQUUsS0FBSztJQUNqQixZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUs7SUFDekIsT0FBTyxFQUFFLElBQUk7Q0FDRyxDQUFDLENBQUM7QUFFcEIsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsTUFBaUQ7SUFFakQsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixvQkFBb0IsQ0FBQyxNQUFNLENBQUM7UUFDNUI7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQzlDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGNyZWF0ZUNvbmZpZ1Rva2VucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBUaGVtZSB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFRoZW1pbmdTZXJ2aWNlIH0gZnJvbSAnLi90aGVtaW5nLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1pbmdDb25maWcge1xuICBhdXRvRGV0ZWN0OiBib29sZWFuO1xuICBkZWZhdWx0VGhlbWU6IFRoZW1lO1xuICBzdG9yYWdlPzogU3RvcmFnZSB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB7IFRoZW1pbmdDb25maWcsIGluamVjdFRoZW1pbmdDb25maWcsIHByb3ZpZGVUaGVtaW5nQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoJ1RoZW1pbmcnLCAnQG9keC9hbmd1bGFyL3RoZW1lJywge1xuICBhdXRvRGV0ZWN0OiBmYWxzZSxcbiAgZGVmYXVsdFRoZW1lOiBUaGVtZS5MSUdIVCxcbiAgc3RvcmFnZTogbnVsbCxcbn0gYXMgVGhlbWluZ0NvbmZpZyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVGhlbWluZzxEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gQ29uZmlnRGVwZW5kZW5jaWVzPFRoZW1pbmdDb25maWc+PihcbiAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFRoZW1pbmdDb25maWc+LCBEPlxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBwcm92aWRlVGhlbWluZ0NvbmZpZyhjb25maWcpLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gKCkgPT4gaW5qZWN0KFRoZW1pbmdTZXJ2aWNlKSxcbiAgICAgIGRlcHM6IFtUaGVtaW5nQ29uZmlnXSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0pO1xufVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdGhlbWluZy9zcmMvbGliL3RoZW1pbmcuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBc0Msa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQXVCbkQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDOUgsVUFBVSxFQUFFLEtBQUs7SUFDakIsWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLO0lBQ3pCLE9BQU8sRUFBRSxJQUFJO0NBQ0csQ0FBQyxDQUFDO0FBRXBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsTUFBaUQ7SUFFakQsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixvQkFBb0IsQ0FBQyxNQUFNLENBQUM7UUFDNUI7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQzlDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGNyZWF0ZUNvbmZpZ1Rva2VucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBUaGVtZSB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFRoZW1pbmdTZXJ2aWNlIH0gZnJvbSAnLi90aGVtaW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgdGhlbWluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1pbmdDb25maWcge1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0aGVtZSBzaG91bGQgYmUgYXV0by1kZXRlY3RlZCBiYXNlZCBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMuXG4gICAqL1xuICBhdXRvRGV0ZWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgdGhlbWUgdG8gYmUgdXNlZCBpZiBhdXRvLWRldGVjdGlvbiBpcyBub3QgZW5hYmxlZCBvciBmYWlscy5cbiAgICovXG4gIGRlZmF1bHRUaGVtZTogVGhlbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIG1lY2hhbmlzbSAobGlrZSBgbG9jYWxTdG9yYWdlYCBvciBgc2Vzc2lvblN0b3JhZ2VgKSB0byBwZXJzaXN0IHRoZW1lIHNldHRpbmdzLFxuICAgKiBvciBgbnVsbGAgdG8gZGlzYWJsZSBwZXJzaXN0ZW5jZS5cbiAgICovXG4gIHN0b3JhZ2U/OiBTdG9yYWdlIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGNyZWF0ZWQgYnkgYGNyZWF0ZUNvbmZpZ1Rva2Vuc2AgZm9yIG1hbmFnaW5nIHRoZW1pbmcgY29uZmlndXJhdGlvbiB0b2tlbnMgYW5kIGZ1bmN0aW9ucy5cbiAqIFByb3ZpZGVzIGVhc3kgYWNjZXNzIHRvIHRoZW1pbmcgY29uZmlndXJhdGlvbiwgZGVmYXVsdCB2YWx1ZXMsIGFuZCBkZXBlbmRlbmN5IGluamVjdGlvbiB1dGlsaXRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB7IFRoZW1pbmdDb25maWcsIGluamVjdFRoZW1pbmdDb25maWcsIHByb3ZpZGVUaGVtaW5nQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoJ1RoZW1pbmcnLCAnQG9keC9hbmd1bGFyL3RoZW1lJywge1xuICBhdXRvRGV0ZWN0OiBmYWxzZSxcbiAgZGVmYXVsdFRoZW1lOiBUaGVtZS5MSUdIVCxcbiAgc3RvcmFnZTogbnVsbCxcbn0gYXMgVGhlbWluZ0NvbmZpZyk7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIHRoZW1pbmcgY29uZmlndXJhdGlvbiB0byB0aGUgYXBwbGljYXRpb24gYW5kIGluaXRpYWxpemVzIHRoZSBgVGhlbWluZ1NlcnZpY2VgXG4gKiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBzaW1wbGlmaWVzIHRoZSBzZXR1cCBvZiBhIGR5bmFtaWMgdGhlbWluZ1xuICogc3lzdGVtLCBpbnRlZ3JhdGluZyB3aXRoIEFuZ3VsYXIncyBlbnZpcm9ubWVudCBpbml0aWFsaXplcnMgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgRCAtIFRoZSBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgYnkgdGhlIHRoZW1pbmcgY29uZmlndXJhdGlvbiwgaWYgYW55LlxuICogQHBhcmFtIHtDb25maWdQcm92aWRlcjxQYXJ0aWFsPFRoZW1pbmdDb25maWc+LCBEPn0gY29uZmlnIC0gVGhlIHRoZW1pbmcgY29uZmlndXJhdGlvbiBvciBhIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSBwcm92aWRlci5cbiAqIEByZXR1cm5zIHtFbnZpcm9ubWVudFByb3ZpZGVyc30gQW4gYXJyYXkgb2YgcHJvdmlkZXJzIGZvciBzZXR0aW5nIHVwIHRoZW1pbmcgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gUHJvdmlkaW5nIGEgc2ltcGxlIHRoZW1pbmcgY29uZmlndXJhdGlvblxuICogcHJvdmlkZVRoZW1pbmcoe1xuICogICBhdXRvRGV0ZWN0OiB0cnVlLFxuICogICBkZWZhdWx0VGhlbWU6IFRoZW1lLkRBUkssXG4gKiAgIHN0b3JhZ2U6IGxvY2FsU3RvcmFnZSxcbiAqIH0pO1xuICpcbiAqIC8vIFByb3ZpZGluZyBhIHRoZW1pbmcgY29uZmlndXJhdGlvbiB3aXRoIGRlcGVuZGVuY2llc1xuICogcHJvdmlkZVRoZW1pbmcoe1xuICogICB1c2VGYWN0b3J5OiAoZGVwczogRGVwZW5kZW5jaWVzKSA9PiAoe1xuICogICAgIGF1dG9EZXRlY3Q6IGRlcHMuc2V0dGluZyxcbiAqICAgICBkZWZhdWx0VGhlbWU6IFRoZW1lLkRBUkssXG4gKiAgICAgc3RvcmFnZTogbG9jYWxTdG9yYWdlLFxuICogICB9KSxcbiAqICAgZGVwczogW1NvbWVEZXBlbmRlbmN5XSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVGhlbWluZzxEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gQ29uZmlnRGVwZW5kZW5jaWVzPFRoZW1pbmdDb25maWc+PihcbiAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFRoZW1pbmdDb25maWc+LCBEPixcbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgcHJvdmlkZVRoZW1pbmdDb25maWcoY29uZmlnKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+ICgpID0+IGluamVjdChUaGVtaW5nU2VydmljZSksXG4gICAgICBkZXBzOiBbVGhlbWluZ0NvbmZpZ10sXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdKTtcbn1cbiJdfQ==
@@ -7,24 +7,49 @@ import { Theme } from './models';
7
7
  import { injectThemingConfig } from './theming.config';
8
8
  import * as i0 from "@angular/core";
9
9
  export const THEME_ATTRIBUTE_NAME = 'odxTheme';
10
+ /**
11
+ * Manages theming for the application. It allows for dynamic theme selection, automatically saves theme preferences,
12
+ * and applies the user's preferred theme or the default theme based on configuration settings.
13
+ *
14
+ * The service leverages the BehaviorSubject pattern to reactively handle theme changes across the application,
15
+ * ensuring that subscribers are notified whenever the theme changes. It also interacts with the DOM directly
16
+ * to apply the current theme and with the provided storage mechanism to persist theme preferences.
17
+ */
10
18
  export class ThemingService {
11
19
  constructor() {
12
20
  this.config = injectThemingConfig();
13
21
  this.document = inject(DOCUMENT);
14
22
  this.windowRef = inject(WindowRef);
15
23
  this.theme$$ = new BehaviorSubject(this.getInitialTheme());
24
+ /**
25
+ * An observable stream of the current theme, emitting values whenever the theme changes.
26
+ * Subscribers to this observable can react to theme changes in real-time.
27
+ */
16
28
  this.theme$ = this.theme$$.pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
17
29
  this.theme$.subscribe((theme) => {
18
30
  this.document.body.setAttribute(THEME_ATTRIBUTE_NAME, theme);
19
31
  saveTheme(this.config.storage, theme);
20
32
  });
21
33
  }
34
+ /**
35
+ * Selects and applies a given theme by updating the BehaviorSubject and persisting the preference.
36
+ *
37
+ * @param {Theme} theme - The theme to apply.
38
+ */
22
39
  selectTheme(theme) {
23
40
  this.theme$$.next(theme);
24
41
  }
42
+ /**
43
+ * Retrieves the currently selected theme.
44
+ *
45
+ * @returns {Theme} The currently selected theme.
46
+ */
25
47
  getSelectedTheme() {
26
48
  return this.theme$$.getValue();
27
49
  }
50
+ /**
51
+ * Toggles between dark and light themes, depending on the current theme.
52
+ */
28
53
  toggleDarkMode() {
29
54
  const currentTheme = this.getSelectedTheme();
30
55
  if (currentTheme === Theme.DARK) {
@@ -34,9 +59,15 @@ export class ThemingService {
34
59
  this.enableDarkMode();
35
60
  }
36
61
  }
62
+ /**
63
+ * Enables the dark mode theme.
64
+ */
37
65
  enableDarkMode() {
38
66
  this.selectTheme(Theme.DARK);
39
67
  }
68
+ /**
69
+ * Enables the light mode theme.
70
+ */
40
71
  enableLightMode() {
41
72
  this.selectTheme(Theme.LIGHT);
42
73
  }
@@ -54,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
54
85
  type: Injectable,
55
86
  args: [{ providedIn: 'root' }]
56
87
  }], ctorParameters: function () { return []; } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3RoZW1pbmcvc3JjL2xpYi90aGVtaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFdkQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBRy9DLE1BQU0sT0FBTyxjQUFjO0lBUXpCO1FBUGlCLFdBQU0sR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQy9CLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVEsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFOUQsV0FBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBR2pILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYztRQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLFlBQVksS0FBSyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdGLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQzVCO1FBRUQsT0FBTyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDbkQsQ0FBQzsrR0FoRFUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHByZWZlcnNEYXJrVGhlbWUsIHJlYWRUaGVtZSwgc2F2ZVRoZW1lIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFRoZW1lIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW5qZWN0VGhlbWluZ0NvbmZpZyB9IGZyb20gJy4vdGhlbWluZy5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgVEhFTUVfQVRUUklCVVRFX05BTUUgPSAnb2R4VGhlbWUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1pbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3RUaGVtaW5nQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZiA9IGluamVjdChXaW5kb3dSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZW1lPih0aGlzLmdldEluaXRpYWxUaGVtZSgpKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGhlbWUkID0gdGhpcy50aGVtZSQkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50aGVtZSQuc3Vic2NyaWJlKCh0aGVtZSkgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShUSEVNRV9BVFRSSUJVVEVfTkFNRSwgdGhlbWUpO1xuICAgICAgc2F2ZVRoZW1lKHRoaXMuY29uZmlnLnN0b3JhZ2UsIHRoZW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RUaGVtZSh0aGVtZTogVGhlbWUpOiB2b2lkIHtcbiAgICB0aGlzLnRoZW1lJCQubmV4dCh0aGVtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRUaGVtZSgpOiBUaGVtZSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZURhcmtNb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMuZ2V0U2VsZWN0ZWRUaGVtZSgpO1xuICAgIGlmIChjdXJyZW50VGhlbWUgPT09IFRoZW1lLkRBUkspIHtcbiAgICAgIHRoaXMuZW5hYmxlTGlnaHRNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlRGFya01vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RUaGVtZShUaGVtZS5EQVJLKTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVMaWdodE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RUaGVtZShUaGVtZS5MSUdIVCk7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxUaGVtZSgpOiBUaGVtZSB7XG4gICAgbGV0IHNlbGVjdGVkVGhlbWUgPSByZWFkVGhlbWUodGhpcy5jb25maWcuc3RvcmFnZSk7XG5cbiAgICBpZiAoIXNlbGVjdGVkVGhlbWUgJiYgdGhpcy5jb25maWcuYXV0b0RldGVjdCAmJiBwcmVmZXJzRGFya1RoZW1lKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdykpIHtcbiAgICAgIHNlbGVjdGVkVGhlbWUgPSBUaGVtZS5EQVJLO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RlZFRoZW1lID8/IHRoaXMuY29uZmlnLmRlZmF1bHRUaGVtZTtcbiAgfVxufVxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3RoZW1pbmcvc3JjL2xpYi90aGVtaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFdkQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBRS9DOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sY0FBYztJQVl6QjtRQVhpQixXQUFNLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFRLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRTlFOzs7V0FHRztRQUNhLFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUdqSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3RCxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxLQUFZO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdDLElBQUksWUFBWSxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdGLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQzVCO1FBRUQsT0FBTyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDbkQsQ0FBQzsrR0F2RVUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHByZWZlcnNEYXJrVGhlbWUsIHJlYWRUaGVtZSwgc2F2ZVRoZW1lIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFRoZW1lIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgaW5qZWN0VGhlbWluZ0NvbmZpZyB9IGZyb20gJy4vdGhlbWluZy5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgVEhFTUVfQVRUUklCVVRFX05BTUUgPSAnb2R4VGhlbWUnO1xuXG4vKipcbiAqIE1hbmFnZXMgdGhlbWluZyBmb3IgdGhlIGFwcGxpY2F0aW9uLiBJdCBhbGxvd3MgZm9yIGR5bmFtaWMgdGhlbWUgc2VsZWN0aW9uLCBhdXRvbWF0aWNhbGx5IHNhdmVzIHRoZW1lIHByZWZlcmVuY2VzLFxuICogYW5kIGFwcGxpZXMgdGhlIHVzZXIncyBwcmVmZXJyZWQgdGhlbWUgb3IgdGhlIGRlZmF1bHQgdGhlbWUgYmFzZWQgb24gY29uZmlndXJhdGlvbiBzZXR0aW5ncy5cbiAqXG4gKiBUaGUgc2VydmljZSBsZXZlcmFnZXMgdGhlIEJlaGF2aW9yU3ViamVjdCBwYXR0ZXJuIHRvIHJlYWN0aXZlbHkgaGFuZGxlIHRoZW1lIGNoYW5nZXMgYWNyb3NzIHRoZSBhcHBsaWNhdGlvbixcbiAqIGVuc3VyaW5nIHRoYXQgc3Vic2NyaWJlcnMgYXJlIG5vdGlmaWVkIHdoZW5ldmVyIHRoZSB0aGVtZSBjaGFuZ2VzLiBJdCBhbHNvIGludGVyYWN0cyB3aXRoIHRoZSBET00gZGlyZWN0bHlcbiAqIHRvIGFwcGx5IHRoZSBjdXJyZW50IHRoZW1lIGFuZCB3aXRoIHRoZSBwcm92aWRlZCBzdG9yYWdlIG1lY2hhbmlzbSB0byBwZXJzaXN0IHRoZW1lIHByZWZlcmVuY2VzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1pbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3RUaGVtaW5nQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZiA9IGluamVjdChXaW5kb3dSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZW1lPih0aGlzLmdldEluaXRpYWxUaGVtZSgpKTtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSBzdHJlYW0gb2YgdGhlIGN1cnJlbnQgdGhlbWUsIGVtaXR0aW5nIHZhbHVlcyB3aGVuZXZlciB0aGUgdGhlbWUgY2hhbmdlcy5cbiAgICogU3Vic2NyaWJlcnMgdG8gdGhpcyBvYnNlcnZhYmxlIGNhbiByZWFjdCB0byB0aGVtZSBjaGFuZ2VzIGluIHJlYWwtdGltZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZSQgPSB0aGlzLnRoZW1lJCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRoZW1lJC5zdWJzY3JpYmUoKHRoZW1lKSA9PiB7XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKFRIRU1FX0FUVFJJQlVURV9OQU1FLCB0aGVtZSk7XG4gICAgICBzYXZlVGhlbWUodGhpcy5jb25maWcuc3RvcmFnZSwgdGhlbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYW5kIGFwcGxpZXMgYSBnaXZlbiB0aGVtZSBieSB1cGRhdGluZyB0aGUgQmVoYXZpb3JTdWJqZWN0IGFuZCBwZXJzaXN0aW5nIHRoZSBwcmVmZXJlbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RoZW1lfSB0aGVtZSAtIFRoZSB0aGVtZSB0byBhcHBseS5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUaGVtZSh0aGVtZTogVGhlbWUpOiB2b2lkIHtcbiAgICB0aGlzLnRoZW1lJCQubmV4dCh0aGVtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGhlbWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUaGVtZX0gVGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFRoZW1lKCk6IFRoZW1lIHtcbiAgICByZXR1cm4gdGhpcy50aGVtZSQkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBiZXR3ZWVuIGRhcmsgYW5kIGxpZ2h0IHRoZW1lcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHRoZW1lLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZURhcmtNb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMuZ2V0U2VsZWN0ZWRUaGVtZSgpO1xuICAgIGlmIChjdXJyZW50VGhlbWUgPT09IFRoZW1lLkRBUkspIHtcbiAgICAgIHRoaXMuZW5hYmxlTGlnaHRNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgZGFyayBtb2RlIHRoZW1lLlxuICAgKi9cbiAgcHVibGljIGVuYWJsZURhcmtNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0VGhlbWUoVGhlbWUuREFSSyk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgbGlnaHQgbW9kZSB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyBlbmFibGVMaWdodE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RUaGVtZShUaGVtZS5MSUdIVCk7XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxUaGVtZSgpOiBUaGVtZSB7XG4gICAgbGV0IHNlbGVjdGVkVGhlbWUgPSByZWFkVGhlbWUodGhpcy5jb25maWcuc3RvcmFnZSk7XG5cbiAgICBpZiAoIXNlbGVjdGVkVGhlbWUgJiYgdGhpcy5jb25maWcuYXV0b0RldGVjdCAmJiBwcmVmZXJzRGFya1RoZW1lKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdykpIHtcbiAgICAgIHNlbGVjdGVkVGhlbWUgPSBUaGVtZS5EQVJLO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RlZFRoZW1lID8/IHRoaXMuY29uZmlnLmRlZmF1bHRUaGVtZTtcbiAgfVxufVxuIl19
@@ -1,3 +1,54 @@
1
+ /**
2
+ * A decorator that transforms a class method or getter into a pure function. For methods, it caches the result
3
+ * of the first invocation with a given set of arguments and returns the cached result on subsequent invocations
4
+ * with the same arguments. For getters, it caches the result of the first access and returns the cached value
5
+ * on subsequent accesses.
6
+ *
7
+ * This decorator is intended to improve performance by avoiding unnecessary recalculations or processing
8
+ * when the inputs have not changed.
9
+ *
10
+ * @template T The type of the property being decorated.
11
+ * @param {object} _target The prototype of the class.
12
+ * @param {string} propertyKey The name of the method or getter.
13
+ * @param {TypedPropertyDescriptor<T>} descriptor The property descriptor for the method or getter.
14
+ * @throws {Error} Throws an error if applied to non-function properties.
15
+ * @returns {TypedPropertyDescriptor<T>} A new descriptor with the getter or method patched for pure behavior.
16
+ *
17
+ * @example
18
+ * Usage with a getter:
19
+ * ```ts
20
+ * class ExampleClass {
21
+ * private _value: number = Math.random();
22
+ *
23
+ * @Pure
24
+ * get value(): number {
25
+ * console.log('Getter called');
26
+ * return this._value;
27
+ * }
28
+ * }
29
+ *
30
+ * const example = new ExampleClass();
31
+ * console.log(example.value); // Logs 'Getter called' and the value
32
+ * console.log(example.value); // Logs only the value, without calling the getter again
33
+ * ```
34
+ *
35
+ * Usage with a method:
36
+ * ```ts
37
+ * class Counter {
38
+ * private count = 0;
39
+ *
40
+ * @Pure
41
+ * increment(step: number) {
42
+ * console.log('Increment called');
43
+ * return (this.count += step);
44
+ * }
45
+ * }
46
+ *
47
+ * const counter = new Counter();
48
+ * console.log(counter.increment(1)); // Logs 'Increment called' and 1
49
+ * console.log(counter.increment(1)); // Logs 1 without calling increment again
50
+ * ```
51
+ */
1
52
  export function Pure(_target, propertyKey, { get, enumerable, value }) {
2
53
  if (get) {
3
54
  return {
@@ -34,4 +85,4 @@ export function Pure(_target, propertyKey, { get, enumerable, value }) {
34
85
  },
35
86
  };
36
87
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2RlY29yYXRvcnMvcHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsSUFBSSxDQUFJLE9BQWUsRUFBRSxXQUFtQixFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQThCO0lBQ2xILElBQUksR0FBRyxFQUFFO1FBQ1AsT0FBTztZQUNMLFVBQVU7WUFDVixHQUFHO2dCQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUVoRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRixDQUFDO0tBQ0g7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7S0FDakY7SUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFNUIsT0FBTztRQUNMLFVBQVU7UUFDVixHQUFHO1lBQ0QsSUFBSSxZQUFZLEdBQXVCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxTQUFrQixDQUFDO1lBRXZCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQVcsRUFBRTtnQkFDOUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUUzSCxJQUFJLE1BQU0sRUFBRTtvQkFDVixPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBRUQsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsU0FBUyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUVqQixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUU3RCxPQUFPLE9BQXVCLENBQUM7UUFDakMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIFB1cmU8VD4oX3RhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCB7IGdldCwgZW51bWVyYWJsZSwgdmFsdWUgfTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD4pOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPiB7XG4gIGlmIChnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW51bWVyYWJsZSxcbiAgICAgIGdldCgpOiBUIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQuY2FsbCh0aGlzKTtcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcGVydHlLZXksIHsgZW51bWVyYWJsZSwgdmFsdWUgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignQFB1cmUgZGVjb3JhdG9yIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gZnVuY3Rpb25zIG9yIGdldHRlcnMhJyk7XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG5cbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlLFxuICAgIGdldCgpOiBUIHtcbiAgICAgIGxldCBwcmV2aW91c0FyZ3M6IHJlYWRvbmx5IHVua25vd25bXSA9IFtdO1xuICAgICAgbGV0IHdhc0NhbGxlZCA9IGZhbHNlO1xuICAgICAgbGV0IHB1cmVWYWx1ZTogdW5rbm93bjtcblxuICAgICAgY29uc3QgcGF0Y2hlZCA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcbiAgICAgICAgY29uc3QgaXNQdXJlID0gd2FzQ2FsbGVkICYmIHByZXZpb3VzQXJncy5sZW5ndGggPT09IGFyZ3MubGVuZ3RoICYmIGFyZ3MuZXZlcnkoKGFyZywgaW5kZXgpID0+IGFyZyA9PT0gcHJldmlvdXNBcmdzW2luZGV4XSk7XG5cbiAgICAgICAgaWYgKGlzUHVyZSkge1xuICAgICAgICAgIHJldHVybiBwdXJlVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c0FyZ3MgPSBhcmdzO1xuICAgICAgICBwdXJlVmFsdWUgPSBvcmlnaW5hbFZhbHVlLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB3YXNDYWxsZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBwdXJlVmFsdWU7XG4gICAgICB9O1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcGVydHlLZXksIHsgdmFsdWU6IHBhdGNoZWQgfSk7XG5cbiAgICAgIHJldHVybiBwYXRjaGVkIGFzIHVua25vd24gYXMgVDtcbiAgICB9LFxuICB9O1xufVxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2RlY29yYXRvcnMvcHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFNLFVBQVUsSUFBSSxDQUFJLE9BQWUsRUFBRSxXQUFtQixFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQThCO0lBQ2xILElBQUksR0FBRyxFQUFFO1FBQ1AsT0FBTztZQUNMLFVBQVU7WUFDVixHQUFHO2dCQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUVoRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRixDQUFDO0tBQ0g7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7S0FDakY7SUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFNUIsT0FBTztRQUNMLFVBQVU7UUFDVixHQUFHO1lBQ0QsSUFBSSxZQUFZLEdBQXVCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxTQUFrQixDQUFDO1lBRXZCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQVcsRUFBRTtnQkFDOUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUUzSCxJQUFJLE1BQU0sRUFBRTtvQkFDVixPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBRUQsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsU0FBUyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUVqQixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUU3RCxPQUFPLE9BQXVCLENBQUM7UUFDakMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGRlY29yYXRvciB0aGF0IHRyYW5zZm9ybXMgYSBjbGFzcyBtZXRob2Qgb3IgZ2V0dGVyIGludG8gYSBwdXJlIGZ1bmN0aW9uLiBGb3IgbWV0aG9kcywgaXQgY2FjaGVzIHRoZSByZXN1bHRcbiAqIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uIHdpdGggYSBnaXZlbiBzZXQgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5zIHRoZSBjYWNoZWQgcmVzdWx0IG9uIHN1YnNlcXVlbnQgaW52b2NhdGlvbnNcbiAqIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzLiBGb3IgZ2V0dGVycywgaXQgY2FjaGVzIHRoZSByZXN1bHQgb2YgdGhlIGZpcnN0IGFjY2VzcyBhbmQgcmV0dXJucyB0aGUgY2FjaGVkIHZhbHVlXG4gKiBvbiBzdWJzZXF1ZW50IGFjY2Vzc2VzLlxuICpcbiAqIFRoaXMgZGVjb3JhdG9yIGlzIGludGVuZGVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYnkgYXZvaWRpbmcgdW5uZWNlc3NhcnkgcmVjYWxjdWxhdGlvbnMgb3IgcHJvY2Vzc2luZ1xuICogd2hlbiB0aGUgaW5wdXRzIGhhdmUgbm90IGNoYW5nZWQuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5IGJlaW5nIGRlY29yYXRlZC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBfdGFyZ2V0IFRoZSBwcm90b3R5cGUgb2YgdGhlIGNsYXNzLlxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5S2V5IFRoZSBuYW1lIG9mIHRoZSBtZXRob2Qgb3IgZ2V0dGVyLlxuICogQHBhcmFtIHtUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPn0gZGVzY3JpcHRvciBUaGUgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIG1ldGhvZCBvciBnZXR0ZXIuXG4gKiBAdGhyb3dzIHtFcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIGFwcGxpZWQgdG8gbm9uLWZ1bmN0aW9uIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyB7VHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD59IEEgbmV3IGRlc2NyaXB0b3Igd2l0aCB0aGUgZ2V0dGVyIG9yIG1ldGhvZCBwYXRjaGVkIGZvciBwdXJlIGJlaGF2aW9yLlxuICpcbiAqIEBleGFtcGxlXG4gKiBVc2FnZSB3aXRoIGEgZ2V0dGVyOlxuICogYGBgdHNcbiAqIGNsYXNzIEV4YW1wbGVDbGFzcyB7XG4gKiAgIHByaXZhdGUgX3ZhbHVlOiBudW1iZXIgPSBNYXRoLnJhbmRvbSgpO1xuICpcbiAqICAgQFB1cmVcbiAqICAgZ2V0IHZhbHVlKCk6IG51bWJlciB7XG4gKiAgICAgY29uc29sZS5sb2coJ0dldHRlciBjYWxsZWQnKTtcbiAqICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBjb25zdCBleGFtcGxlID0gbmV3IEV4YW1wbGVDbGFzcygpO1xuICogY29uc29sZS5sb2coZXhhbXBsZS52YWx1ZSk7IC8vIExvZ3MgJ0dldHRlciBjYWxsZWQnIGFuZCB0aGUgdmFsdWVcbiAqIGNvbnNvbGUubG9nKGV4YW1wbGUudmFsdWUpOyAvLyBMb2dzIG9ubHkgdGhlIHZhbHVlLCB3aXRob3V0IGNhbGxpbmcgdGhlIGdldHRlciBhZ2FpblxuICogYGBgXG4gKlxuICogVXNhZ2Ugd2l0aCBhIG1ldGhvZDpcbiAqIGBgYHRzXG4gKiBjbGFzcyBDb3VudGVyIHtcbiAqICAgcHJpdmF0ZSBjb3VudCA9IDA7XG4gKlxuICogICBAUHVyZVxuICogICBpbmNyZW1lbnQoc3RlcDogbnVtYmVyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ0luY3JlbWVudCBjYWxsZWQnKTtcbiAqICAgICByZXR1cm4gKHRoaXMuY291bnQgKz0gc3RlcCk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBjb25zdCBjb3VudGVyID0gbmV3IENvdW50ZXIoKTtcbiAqIGNvbnNvbGUubG9nKGNvdW50ZXIuaW5jcmVtZW50KDEpKTsgLy8gTG9ncyAnSW5jcmVtZW50IGNhbGxlZCcgYW5kIDFcbiAqIGNvbnNvbGUubG9nKGNvdW50ZXIuaW5jcmVtZW50KDEpKTsgLy8gTG9ncyAxIHdpdGhvdXQgY2FsbGluZyBpbmNyZW1lbnQgYWdhaW5cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gUHVyZTxUPihfdGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHsgZ2V0LCBlbnVtZXJhYmxlLCB2YWx1ZSB9OiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxUPik6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+IHtcbiAgaWYgKGdldCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbnVtZXJhYmxlLFxuICAgICAgZ2V0KCk6IFQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldC5jYWxsKHRoaXMpO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwgeyBlbnVtZXJhYmxlLCB2YWx1ZSB9KTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAUHVyZSBkZWNvcmF0b3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBmdW5jdGlvbnMgb3IgZ2V0dGVycyEnKTtcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcblxuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGUsXG4gICAgZ2V0KCk6IFQge1xuICAgICAgbGV0IHByZXZpb3VzQXJnczogcmVhZG9ubHkgdW5rbm93bltdID0gW107XG4gICAgICBsZXQgd2FzQ2FsbGVkID0gZmFsc2U7XG4gICAgICBsZXQgcHVyZVZhbHVlOiB1bmtub3duO1xuXG4gICAgICBjb25zdCBwYXRjaGVkID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuICAgICAgICBjb25zdCBpc1B1cmUgPSB3YXNDYWxsZWQgJiYgcHJldmlvdXNBcmdzLmxlbmd0aCA9PT0gYXJncy5sZW5ndGggJiYgYXJncy5ldmVyeSgoYXJnLCBpbmRleCkgPT4gYXJnID09PSBwcmV2aW91c0FyZ3NbaW5kZXhdKTtcblxuICAgICAgICBpZiAoaXNQdXJlKSB7XG4gICAgICAgICAgcmV0dXJuIHB1cmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZpb3VzQXJncyA9IGFyZ3M7XG4gICAgICAgIHB1cmVWYWx1ZSA9IG9yaWdpbmFsVmFsdWUuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIHdhc0NhbGxlZCA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHB1cmVWYWx1ZTtcbiAgICAgIH07XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwgeyB2YWx1ZTogcGF0Y2hlZCB9KTtcblxuICAgICAgcmV0dXJuIHBhdGNoZWQgYXMgdW5rbm93biBhcyBUO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -6,12 +6,28 @@ function reactiveBinding(updateFn) {
6
6
  const takeUntilDestroyed = untilDestroyed();
7
7
  return (source$) => source$.pipe(tap((state) => updateFn(state)), takeUntilDestroyed());
8
8
  }
9
+ /**
10
+ * Binds an observable to toggle a CSS class on the host element based on the truthiness of the emitted values.
11
+ * The subscription automatically ends when the component is destroyed.
12
+ *
13
+ * @template T The type of items emitted by the source observable.
14
+ * @param {Observable<T> | null | undefined} source$ The observable source emitting truthy or falsy values.
15
+ * @param {string} cssClass The CSS class to toggle based on the emitted values.
16
+ */
9
17
  export function reactiveClassBinding(source$, cssClass) {
10
18
  const { nativeElement } = injectElement();
11
19
  if (source$) {
12
20
  source$.pipe(reactiveBinding((state) => nativeElement.classList.toggle(cssClass, !!state))).subscribe();
13
21
  }
14
22
  }
23
+ /**
24
+ * Binds an observable to update attributes on the host element with the emitted values.
25
+ * The subscription automatically ends when the component is destroyed.
26
+ *
27
+ * @template T The type of items emitted by the source observable.
28
+ * @param {Observable<T> | null | undefined} source$ The observable source.
29
+ * @param {...string[]} attributes The attributes to set on the host element based on the emitted values.
30
+ */
15
31
  export function reactiveAttributeBinding(source$, ...attributes) {
16
32
  const { nativeElement } = injectElement();
17
33
  if (source$) {
@@ -24,13 +40,33 @@ export function reactiveAttributeBinding(source$, ...attributes) {
24
40
  .subscribe();
25
41
  }
26
42
  }
43
+ /**
44
+ * Injects the ElementRef of the host element in an Angular component or directive.
45
+ *
46
+ * @template T The expected type of the native element.
47
+ * @returns {ElementRef<T>} The injected ElementRef instance.
48
+ */
27
49
  export function injectElement() {
28
50
  return inject(ElementRef);
29
51
  }
52
+ /**
53
+ * Tracking function for use with `*ngFor` that tracks items by their index.
54
+ *
55
+ * @param {number} index The index of the item in the iterable.
56
+ * @returns {number} The index, used as the trackBy identity.
57
+ */
30
58
  export function trackByIndex(index) {
31
59
  return index;
32
60
  }
61
+ /**
62
+ * Tracking function for use with `*ngFor` that tracks items by their unique ID.
63
+ *
64
+ * @template T The type of the items in the iterable, must have an 'id' property.
65
+ * @param {number} _ The index of the item in the iterable, not used.
66
+ * @param {T} item The item in the iterable.
67
+ * @returns {T['id']} The item's ID, used as the trackBy identity.
68
+ */
33
69
  export function trackById(_, { id }) {
34
70
  return id;
35
71
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2hlbHBlcnMvYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQXdDLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxTQUFTLGVBQWUsQ0FBSSxRQUFrQztJQUM1RCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO0lBRTVDLE9BQU8sQ0FBQyxPQUFzQixFQUFFLEVBQUUsQ0FDaEMsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUMvQixrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBSSxPQUF5QyxFQUFFLFFBQWdCO0lBQ2pHLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUUxQyxJQUFJLE9BQU8sRUFBRTtRQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUN6RztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUksT0FBeUMsRUFBRSxHQUFHLFVBQW9CO0lBQzVHLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUUxQyxJQUFJLE9BQU8sRUFBRTtRQUNYLE9BQU87YUFDSixJQUFJLENBQ0gsZUFBZSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7Z0JBQ2xDLFlBQVksQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztLQUNoQjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLE1BQU0sQ0FBZ0IsVUFBVSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYTtJQUN4QyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUE2QyxDQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUs7SUFDeEYsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2V0QXR0cmlidXRlIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICcuL3VudGlsLWRlc3Ryb3llZCc7XG5cbmZ1bmN0aW9uIHJlYWN0aXZlQmluZGluZzxUPih1cGRhdGVGbjogKHN0YXRlOiB1bmtub3duKSA9PiB2b2lkKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgY29uc3QgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICByZXR1cm4gKHNvdXJjZSQ6IE9ic2VydmFibGU8VD4pID0+XG4gICAgc291cmNlJC5waXBlKFxuICAgICAgdGFwKChzdGF0ZSkgPT4gdXBkYXRlRm4oc3RhdGUpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFjdGl2ZUNsYXNzQmluZGluZzxUPihzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCwgY3NzQ2xhc3M6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCB7IG5hdGl2ZUVsZW1lbnQgfSA9IGluamVjdEVsZW1lbnQoKTtcblxuICBpZiAoc291cmNlJCkge1xuICAgIHNvdXJjZSQucGlwZShyZWFjdGl2ZUJpbmRpbmcoKHN0YXRlKSA9PiBuYXRpdmVFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoY3NzQ2xhc3MsICEhc3RhdGUpKSkuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWN0aXZlQXR0cmlidXRlQmluZGluZzxUPihzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCwgLi4uYXR0cmlidXRlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3QgeyBuYXRpdmVFbGVtZW50IH0gPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgaWYgKHNvdXJjZSQpIHtcbiAgICBzb3VyY2UkXG4gICAgICAucGlwZShcbiAgICAgICAgcmVhY3RpdmVCaW5kaW5nKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZShuYXRpdmVFbGVtZW50LCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RFbGVtZW50PFQgPSBIVE1MRWxlbWVudD4oKTogRWxlbWVudFJlZjxUPiB7XG4gIHJldHVybiBpbmplY3Q8RWxlbWVudFJlZjxUPj4oRWxlbWVudFJlZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnlJZDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIH0+KF86IG51bWJlciwgeyBpZCB9OiBUKTogVFsnaWQnXSB7XG4gIHJldHVybiBpZDtcbn1cbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2hlbHBlcnMvYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQXdDLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxTQUFTLGVBQWUsQ0FBSSxRQUFrQztJQUM1RCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO0lBRTVDLE9BQU8sQ0FBQyxPQUFzQixFQUFFLEVBQUUsQ0FDaEMsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUMvQixrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0FBQ04sQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUksT0FBeUMsRUFBRSxRQUFnQjtJQUNqRyxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFMUMsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7S0FDekc7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBSSxPQUF5QyxFQUFFLEdBQUcsVUFBb0I7SUFDNUcsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBRTFDLElBQUksT0FBTyxFQUFFO1FBQ1gsT0FBTzthQUNKLElBQUksQ0FDSCxlQUFlLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtnQkFDbEMsWUFBWSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDL0M7UUFDSCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxNQUFNLENBQWdCLFVBQVUsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYTtJQUN4QyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBNkMsQ0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFLO0lBQ3hGLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNldEF0dHJpYnV0ZSB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnLi91bnRpbC1kZXN0cm95ZWQnO1xuXG5mdW5jdGlvbiByZWFjdGl2ZUJpbmRpbmc8VD4odXBkYXRlRm46IChzdGF0ZTogdW5rbm93bikgPT4gdm9pZCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIGNvbnN0IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG5cbiAgcmV0dXJuIChzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+KSA9PlxuICAgIHNvdXJjZSQucGlwZShcbiAgICAgIHRhcCgoc3RhdGUpID0+IHVwZGF0ZUZuKHN0YXRlKSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEJpbmRzIGFuIG9ic2VydmFibGUgdG8gdG9nZ2xlIGEgQ1NTIGNsYXNzIG9uIHRoZSBob3N0IGVsZW1lbnQgYmFzZWQgb24gdGhlIHRydXRoaW5lc3Mgb2YgdGhlIGVtaXR0ZWQgdmFsdWVzLlxuICogVGhlIHN1YnNjcmlwdGlvbiBhdXRvbWF0aWNhbGx5IGVuZHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiBpdGVtcyBlbWl0dGVkIGJ5IHRoZSBzb3VyY2Ugb2JzZXJ2YWJsZS5cbiAqIEBwYXJhbSB7T2JzZXJ2YWJsZTxUPiB8IG51bGwgfCB1bmRlZmluZWR9IHNvdXJjZSQgVGhlIG9ic2VydmFibGUgc291cmNlIGVtaXR0aW5nIHRydXRoeSBvciBmYWxzeSB2YWx1ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gY3NzQ2xhc3MgVGhlIENTUyBjbGFzcyB0byB0b2dnbGUgYmFzZWQgb24gdGhlIGVtaXR0ZWQgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhY3RpdmVDbGFzc0JpbmRpbmc8VD4oc291cmNlJDogT2JzZXJ2YWJsZTxUPiB8IG51bGwgfCB1bmRlZmluZWQsIGNzc0NsYXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgeyBuYXRpdmVFbGVtZW50IH0gPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgaWYgKHNvdXJjZSQpIHtcbiAgICBzb3VyY2UkLnBpcGUocmVhY3RpdmVCaW5kaW5nKChzdGF0ZSkgPT4gbmF0aXZlRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGNzc0NsYXNzLCAhIXN0YXRlKSkpLnN1YnNjcmliZSgpO1xuICB9XG59XG5cbi8qKlxuICogQmluZHMgYW4gb2JzZXJ2YWJsZSB0byB1cGRhdGUgYXR0cmlidXRlcyBvbiB0aGUgaG9zdCBlbGVtZW50IHdpdGggdGhlIGVtaXR0ZWQgdmFsdWVzLlxuICogVGhlIHN1YnNjcmlwdGlvbiBhdXRvbWF0aWNhbGx5IGVuZHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAqXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiBpdGVtcyBlbWl0dGVkIGJ5IHRoZSBzb3VyY2Ugb2JzZXJ2YWJsZS5cbiAqIEBwYXJhbSB7T2JzZXJ2YWJsZTxUPiB8IG51bGwgfCB1bmRlZmluZWR9IHNvdXJjZSQgVGhlIG9ic2VydmFibGUgc291cmNlLlxuICogQHBhcmFtIHsuLi5zdHJpbmdbXX0gYXR0cmlidXRlcyBUaGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGhvc3QgZWxlbWVudCBiYXNlZCBvbiB0aGUgZW1pdHRlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFjdGl2ZUF0dHJpYnV0ZUJpbmRpbmc8VD4oc291cmNlJDogT2JzZXJ2YWJsZTxUPiB8IG51bGwgfCB1bmRlZmluZWQsIC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHsgbmF0aXZlRWxlbWVudCB9ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIGlmIChzb3VyY2UkKSB7XG4gICAgc291cmNlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHJlYWN0aXZlQmluZGluZygodmFsdWUpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGUobmF0aXZlRWxlbWVudCwgYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG4vKipcbiAqIEluamVjdHMgdGhlIEVsZW1lbnRSZWYgb2YgdGhlIGhvc3QgZWxlbWVudCBpbiBhbiBBbmd1bGFyIGNvbXBvbmVudCBvciBkaXJlY3RpdmUuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIGV4cGVjdGVkIHR5cGUgb2YgdGhlIG5hdGl2ZSBlbGVtZW50LlxuICogQHJldHVybnMge0VsZW1lbnRSZWY8VD59IFRoZSBpbmplY3RlZCBFbGVtZW50UmVmIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RWxlbWVudDxUID0gSFRNTEVsZW1lbnQ+KCk6IEVsZW1lbnRSZWY8VD4ge1xuICByZXR1cm4gaW5qZWN0PEVsZW1lbnRSZWY8VD4+KEVsZW1lbnRSZWYpO1xufVxuXG4vKipcbiAqIFRyYWNraW5nIGZ1bmN0aW9uIGZvciB1c2Ugd2l0aCBgKm5nRm9yYCB0aGF0IHRyYWNrcyBpdGVtcyBieSB0aGVpciBpbmRleC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtIGluIHRoZSBpdGVyYWJsZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBpbmRleCwgdXNlZCBhcyB0aGUgdHJhY2tCeSBpZGVudGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIFRyYWNraW5nIGZ1bmN0aW9uIGZvciB1c2Ugd2l0aCBgKm5nRm9yYCB0aGF0IHRyYWNrcyBpdGVtcyBieSB0aGVpciB1bmlxdWUgSUQuXG4gKlxuICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGluIHRoZSBpdGVyYWJsZSwgbXVzdCBoYXZlIGFuICdpZCcgcHJvcGVydHkuXG4gKiBAcGFyYW0ge251bWJlcn0gXyBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlLCBub3QgdXNlZC5cbiAqIEBwYXJhbSB7VH0gaXRlbSBUaGUgaXRlbSBpbiB0aGUgaXRlcmFibGUuXG4gKiBAcmV0dXJucyB7VFsnaWQnXX0gVGhlIGl0ZW0ncyBJRCwgdXNlZCBhcyB0aGUgdHJhY2tCeSBpZGVudGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNrQnlJZDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIH0+KF86IG51bWJlciwgeyBpZCB9OiBUKTogVFsnaWQnXSB7XG4gIHJldHVybiBpZDtcbn1cbiJdfQ==
@@ -8,8 +8,10 @@ import { isNumber, isString } from './type-guards';
8
8
  * @param {K} key - The key whose values are to be plucked from each object in the array.
9
9
  * @returns {Array<T[K]>} An array of values corresponding to the specified key from each object.
10
10
  * @example
11
+ * ```ts
11
12
  * const users = [{ name: 'Alice' }, { name: 'Bob' }];
12
13
  * const names = pluckFromArray(users, 'name'); // ['Alice', 'Bob']
14
+ * ```
13
15
  */
14
16
  export function pluckFromArray(arr, key) {
15
17
  return arr.map((value) => value[key]);
@@ -22,8 +24,10 @@ export function pluckFromArray(arr, key) {
22
24
  * @param {OrderByDirection} [direction='ASC'] - The direction to sort ('ASC' for ascending, 'DESC' for descending).
23
25
  * @returns {(a: T, b: T) => number} A compare function that can be used in the array sort method.
24
26
  * @example
27
+ * ```ts
25
28
  * const items = [{ value: 10 }, { value: 5 }, { value: 7 }];
26
29
  * const sortedItems = items.sort(orderBy('value', 'ASC')); // Sorted by value in ascending order
30
+ * ```
27
31
  */
28
32
  export function orderBy(key, direction = 'ASC') {
29
33
  return (a, b) => {
@@ -44,4 +48,4 @@ export function orderBy(key, direction = 'ASC') {
44
48
  return 0;
45
49
  };
46
50
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5EOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBdUIsR0FBUSxFQUFFLEdBQU07SUFDbkUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBSUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUksR0FBWSxFQUFFLFlBQThCLEtBQUs7SUFDMUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNkLE1BQU0sU0FBUyxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sU0FBUyxHQUFHLFVBQVUsQ0FBQztTQUMvQjtRQUNELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciwgaXNTdHJpbmcgfSBmcm9tICcuL3R5cGUtZ3VhcmRzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgdmFsdWVzIG9mIGEgc3BlY2lmaWVkIGtleSBmcm9tIGVhY2ggb2JqZWN0IGluIGFuIGFycmF5LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdHMgaW4gdGhlIGFycmF5LlxuICogQHRlbXBsYXRlIEsgLSBUaGUgdHlwZSBvZiB0aGUga2V5cyBvZiBgVGAuXG4gKiBAcGFyYW0ge1RbXX0gYXJyIC0gVGhlIGFycmF5IG9mIG9iamVjdHMgdG8gcGx1Y2sgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0t9IGtleSAtIFRoZSBrZXkgd2hvc2UgdmFsdWVzIGFyZSB0byBiZSBwbHVja2VkIGZyb20gZWFjaCBvYmplY3QgaW4gdGhlIGFycmF5LlxuICogQHJldHVybnMge0FycmF5PFRbS10+fSBBbiBhcnJheSBvZiB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGtleSBmcm9tIGVhY2ggb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHVzZXJzID0gW3sgbmFtZTogJ0FsaWNlJyB9LCB7IG5hbWU6ICdCb2InIH1dO1xuICogY29uc3QgbmFtZXMgPSBwbHVja0Zyb21BcnJheSh1c2VycywgJ25hbWUnKTsgLy8gWydBbGljZScsICdCb2InXVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGx1Y2tGcm9tQXJyYXk8VCwgSyBleHRlbmRzIGtleW9mIFQ+KGFycjogVFtdLCBrZXk6IEspOiBBcnJheTxUW0tdPiB7XG4gIHJldHVybiBhcnIubWFwKCh2YWx1ZSkgPT4gdmFsdWVba2V5XSk7XG59XG5cbmV4cG9ydCB0eXBlIE9yZGVyQnlEaXJlY3Rpb24gPSAnQVNDJyB8ICdERVNDJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGFyZSBmdW5jdGlvbiBmb3Igc29ydGluZyBhbiBhcnJheSBvZiBvYmplY3RzIGJhc2VkIG9uIGEgc3BlY2lmaWVkIGtleSBhbmQgZGlyZWN0aW9uLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdHMgaW4gdGhlIGFycmF5LlxuICogQHBhcmFtIHtrZXlvZiBUfSBrZXkgLSBUaGUga2V5IHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge09yZGVyQnlEaXJlY3Rpb259IFtkaXJlY3Rpb249J0FTQyddIC0gVGhlIGRpcmVjdGlvbiB0byBzb3J0ICgnQVNDJyBmb3IgYXNjZW5kaW5nLCAnREVTQycgZm9yIGRlc2NlbmRpbmcpLlxuICogQHJldHVybnMgeyhhOiBULCBiOiBUKSA9PiBudW1iZXJ9IEEgY29tcGFyZSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIHRoZSBhcnJheSBzb3J0IG1ldGhvZC5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBpdGVtcyA9IFt7IHZhbHVlOiAxMCB9LCB7IHZhbHVlOiA1IH0sIHsgdmFsdWU6IDcgfV07XG4gKiBjb25zdCBzb3J0ZWRJdGVtcyA9IGl0ZW1zLnNvcnQob3JkZXJCeSgndmFsdWUnLCAnQVNDJykpOyAvLyBTb3J0ZWQgYnkgdmFsdWUgaW4gYXNjZW5kaW5nIG9yZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcmRlckJ5PFQ+KGtleToga2V5b2YgVCwgZGlyZWN0aW9uOiBPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQycpOiAoYTogVCwgYjogVCkgPT4gbnVtYmVyIHtcbiAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgY29uc3QgbGVmdFZhbHVlID0gZGlyZWN0aW9uID09PSAnQVNDJyA/IGFba2V5XSA6IGJba2V5XTtcbiAgICBjb25zdCByaWdodFZhbHVlID0gZGlyZWN0aW9uID09PSAnQVNDJyA/IGJba2V5XSA6IGFba2V5XTtcbiAgICBpZiAobGVmdFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoaXNOdW1iZXIobGVmdFZhbHVlKSAmJiBpc051bWJlcihyaWdodFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGxlZnRWYWx1ZSAtIHJpZ2h0VmFsdWU7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhsZWZ0VmFsdWUpICYmIGlzU3RyaW5nKHJpZ2h0VmFsdWUpKSB7XG4gICAgICByZXR1cm4gbGVmdFZhbHVlLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShyaWdodFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5EOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUF1QixHQUFRLEVBQUUsR0FBTTtJQUNuRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFJRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFJLEdBQVksRUFBRSxZQUE4QixLQUFLO0lBQzFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDZCxNQUFNLFNBQVMsR0FBRyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxNQUFNLFVBQVUsR0FBRyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBQ0QsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQzVCLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDWDtRQUNELElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxPQUFPLFNBQVMsR0FBRyxVQUFVLENBQUM7U0FDL0I7UUFDRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0MsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIsIGlzU3RyaW5nIH0gZnJvbSAnLi90eXBlLWd1YXJkcyc7XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHZhbHVlcyBvZiBhIHNwZWNpZmllZCBrZXkgZnJvbSBlYWNoIG9iamVjdCBpbiBhbiBhcnJheS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3RzIGluIHRoZSBhcnJheS5cbiAqIEB0ZW1wbGF0ZSBLIC0gVGhlIHR5cGUgb2YgdGhlIGtleXMgb2YgYFRgLlxuICogQHBhcmFtIHtUW119IGFyciAtIFRoZSBhcnJheSBvZiBvYmplY3RzIHRvIHBsdWNrIHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtLfSBrZXkgLSBUaGUga2V5IHdob3NlIHZhbHVlcyBhcmUgdG8gYmUgcGx1Y2tlZCBmcm9tIGVhY2ggb2JqZWN0IGluIHRoZSBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheTxUW0tdPn0gQW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBrZXkgZnJvbSBlYWNoIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgdXNlcnMgPSBbeyBuYW1lOiAnQWxpY2UnIH0sIHsgbmFtZTogJ0JvYicgfV07XG4gKiBjb25zdCBuYW1lcyA9IHBsdWNrRnJvbUFycmF5KHVzZXJzLCAnbmFtZScpOyAvLyBbJ0FsaWNlJywgJ0JvYiddXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBsdWNrRnJvbUFycmF5PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPihhcnI6IFRbXSwga2V5OiBLKTogQXJyYXk8VFtLXT4ge1xuICByZXR1cm4gYXJyLm1hcCgodmFsdWUpID0+IHZhbHVlW2tleV0pO1xufVxuXG5leHBvcnQgdHlwZSBPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQycgfCAnREVTQyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBhcmUgZnVuY3Rpb24gZm9yIHNvcnRpbmcgYW4gYXJyYXkgb2Ygb2JqZWN0cyBiYXNlZCBvbiBhIHNwZWNpZmllZCBrZXkgYW5kIGRpcmVjdGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3RzIGluIHRoZSBhcnJheS5cbiAqIEBwYXJhbSB7a2V5b2YgVH0ga2V5IC0gVGhlIGtleSB0byBzb3J0IGJ5LlxuICogQHBhcmFtIHtPcmRlckJ5RGlyZWN0aW9ufSBbZGlyZWN0aW9uPSdBU0MnXSAtIFRoZSBkaXJlY3Rpb24gdG8gc29ydCAoJ0FTQycgZm9yIGFzY2VuZGluZywgJ0RFU0MnIGZvciBkZXNjZW5kaW5nKS5cbiAqIEByZXR1cm5zIHsoYTogVCwgYjogVCkgPT4gbnVtYmVyfSBBIGNvbXBhcmUgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgYXJyYXkgc29ydCBtZXRob2QuXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGl0ZW1zID0gW3sgdmFsdWU6IDEwIH0sIHsgdmFsdWU6IDUgfSwgeyB2YWx1ZTogNyB9XTtcbiAqIGNvbnN0IHNvcnRlZEl0ZW1zID0gaXRlbXMuc29ydChvcmRlckJ5KCd2YWx1ZScsICdBU0MnKSk7IC8vIFNvcnRlZCBieSB2YWx1ZSBpbiBhc2NlbmRpbmcgb3JkZXJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJCeTxUPihrZXk6IGtleW9mIFQsIGRpcmVjdGlvbjogT3JkZXJCeURpcmVjdGlvbiA9ICdBU0MnKTogKGE6IFQsIGI6IFQpID0+IG51bWJlciB7XG4gIHJldHVybiAoYSwgYikgPT4ge1xuICAgIGNvbnN0IGxlZnRWYWx1ZSA9IGRpcmVjdGlvbiA9PT0gJ0FTQycgPyBhW2tleV0gOiBiW2tleV07XG4gICAgY29uc3QgcmlnaHRWYWx1ZSA9IGRpcmVjdGlvbiA9PT0gJ0FTQycgPyBiW2tleV0gOiBhW2tleV07XG4gICAgaWYgKGxlZnRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChyaWdodFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyKGxlZnRWYWx1ZSkgJiYgaXNOdW1iZXIocmlnaHRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBsZWZ0VmFsdWUgLSByaWdodFZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcobGVmdFZhbHVlKSAmJiBpc1N0cmluZyhyaWdodFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGxlZnRWYWx1ZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUocmlnaHRWYWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG59XG4iXX0=
@@ -1,4 +1,24 @@
1
+ /**
2
+ * Constructs a URL string from provided segments, ensuring proper slash separation without duplications.
3
+ * It gracefully handles `null`, `undefined`, and symbol values by omitting them from the final URL.
4
+ * Additionally, the function preserves the protocol part of the URL, if specified.
5
+ *
6
+ * @param {...Array<string | number | symbol | null | undefined>} args - The segments to concatenate into a URL.
7
+ * Can be a mix of strings, numbers, symbols (converted to strings), or `null`/`undefined` (which are omitted).
8
+ * @returns {string} The constructed URL string with correctly formatted slashes.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // Basic usage
13
+ * console.log(buildUrl('http://example.com', 'path', 'to', 'resource'));
14
+ * // Outputs: "http://example.com/path/to/resource"
15
+ *
16
+ * // Removing duplicate slashes
17
+ * console.log(buildUrl('http://example.com/', '/path/', '//to', '/resource/'));
18
+ * // Outputs: "http://example.com/path/to/resource/"
19
+ * ```
20
+ */
1
21
  export function buildUrl(...args) {
2
22
  return args.join('/').replace(/(^.*)(https?:\/\/)|(\/)+/g, '$2$3');
3
23
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy9idWlsZC11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFHLElBQXdEO0lBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBidWlsZFVybCguLi5hcmdzOiBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgfCBudWxsIHwgdW5kZWZpbmVkPik6IHN0cmluZyB7XG4gIHJldHVybiBhcmdzLmpvaW4oJy8nKS5yZXBsYWNlKC8oXi4qKShodHRwcz86XFwvXFwvKXwoXFwvKSsvZywgJyQyJDMnKTtcbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy9idWlsZC11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQUcsSUFBd0Q7SUFDbEYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25zdHJ1Y3RzIGEgVVJMIHN0cmluZyBmcm9tIHByb3ZpZGVkIHNlZ21lbnRzLCBlbnN1cmluZyBwcm9wZXIgc2xhc2ggc2VwYXJhdGlvbiB3aXRob3V0IGR1cGxpY2F0aW9ucy5cbiAqIEl0IGdyYWNlZnVsbHkgaGFuZGxlcyBgbnVsbGAsIGB1bmRlZmluZWRgLCBhbmQgc3ltYm9sIHZhbHVlcyBieSBvbWl0dGluZyB0aGVtIGZyb20gdGhlIGZpbmFsIFVSTC5cbiAqIEFkZGl0aW9uYWxseSwgdGhlIGZ1bmN0aW9uIHByZXNlcnZlcyB0aGUgcHJvdG9jb2wgcGFydCBvZiB0aGUgVVJMLCBpZiBzcGVjaWZpZWQuXG4gKlxuICogQHBhcmFtIHsuLi5BcnJheTxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgfCBudWxsIHwgdW5kZWZpbmVkPn0gYXJncyAtIFRoZSBzZWdtZW50cyB0byBjb25jYXRlbmF0ZSBpbnRvIGEgVVJMLlxuICogQ2FuIGJlIGEgbWl4IG9mIHN0cmluZ3MsIG51bWJlcnMsIHN5bWJvbHMgKGNvbnZlcnRlZCB0byBzdHJpbmdzKSwgb3IgYG51bGxgL2B1bmRlZmluZWRgICh3aGljaCBhcmUgb21pdHRlZCkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29uc3RydWN0ZWQgVVJMIHN0cmluZyB3aXRoIGNvcnJlY3RseSBmb3JtYXR0ZWQgc2xhc2hlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEJhc2ljIHVzYWdlXG4gKiBjb25zb2xlLmxvZyhidWlsZFVybCgnaHR0cDovL2V4YW1wbGUuY29tJywgJ3BhdGgnLCAndG8nLCAncmVzb3VyY2UnKSk7XG4gKiAvLyBPdXRwdXRzOiBcImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoL3RvL3Jlc291cmNlXCJcbiAqXG4gKiAvLyBSZW1vdmluZyBkdXBsaWNhdGUgc2xhc2hlc1xuICogY29uc29sZS5sb2coYnVpbGRVcmwoJ2h0dHA6Ly9leGFtcGxlLmNvbS8nLCAnL3BhdGgvJywgJy8vdG8nLCAnL3Jlc291cmNlLycpKTtcbiAqIC8vIE91dHB1dHM6IFwiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgvdG8vcmVzb3VyY2UvXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVcmwoLi4uYXJnczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBzdHJpbmcge1xuICByZXR1cm4gYXJncy5qb2luKCcvJykucmVwbGFjZSgvKF4uKikoaHR0cHM/OlxcL1xcLyl8KFxcLykrL2csICckMiQzJyk7XG59XG4iXX0=
@@ -16,14 +16,15 @@ export const DRAEGER_WEBSITE_URL = 'https://www.draeger.com';
16
16
  * @returns {string} The fully constructed URL, including the base URL and all provided path segments.
17
17
  *
18
18
  * @example
19
+ * ```ts
19
20
  * // Returns 'https://www.draeger.com/about-us'
20
21
  * const url = buildWebsiteUrl('about-us');
21
22
  *
22
- * @example
23
23
  * // Can also handle multiple segments, returning 'https://www.draeger.com/products/search/123'
24
24
  * const productUrl = buildWebsiteUrl('products', 'search', 123);
25
+ * ```
25
26
  */
26
27
  export function buildWebsiteUrl(...segments) {
27
28
  return buildUrl(DRAEGER_WEBSITE_URL, ...segments);
28
29
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd2Vic2l0ZS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2J1aWxkLXdlYnNpdGUtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBRyxRQUE0RDtJQUM3RixPQUFPLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFVybCB9IGZyb20gJy4vYnVpbGQtdXJsJztcblxuLyoqXG4gKiBBIGNvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgYmFzZSBVUkwgZm9yIHRoZSBEcmFlZ2VyIHdlYnNpdGUuXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAZGVmYXVsdCAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20nXG4gKi9cbmV4cG9ydCBjb25zdCBEUkFFR0VSX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3LmRyYWVnZXIuY29tJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgZnVsbCBVUkwgZm9yIHRoZSBEcmFlZ2VyIHdlYnNpdGUgYnkgYXBwZW5kaW5nIHRoZSBwcm92aWRlZCBwYXRoIHNlZ21lbnRzIHRvIHRoZSBiYXNlIFVSTC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgYSB1dGlsaXR5IGZvciBjcmVhdGluZyBmdWxseSBxdWFsaWZpZWQgVVJMcyB0byB2YXJpb3VzIHJlc291cmNlcyBvciBwYWdlcyB3aXRoaW4gdGhlIERyYWVnZXIgd2Vic2l0ZS5cbiAqXG4gKiBAZnVuY3Rpb24gYnVpbGRXZWJzaXRlVXJsXG4gKiBAcGFyYW0gey4uLihzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgfCBudWxsIHwgdW5kZWZpbmVkKX0gc2VnbWVudHMgLSBUaGUgcGF0aCBzZWdtZW50cyB0byBhcHBlbmQgdG8gdGhlIGJhc2UgVVJMLlxuICogVGhlc2UgY2FuIGluY2x1ZGUgc3RyaW5ncywgbnVtYmVycywgc3ltYm9scywgb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzICh0aGUgbGF0dGVyIHR3byBhcmUgaWdub3JlZCkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZnVsbHkgY29uc3RydWN0ZWQgVVJMLCBpbmNsdWRpbmcgdGhlIGJhc2UgVVJMIGFuZCBhbGwgcHJvdmlkZWQgcGF0aCBzZWdtZW50cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmV0dXJucyAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20vYWJvdXQtdXMnXG4gKiBjb25zdCB1cmwgPSBidWlsZFdlYnNpdGVVcmwoJ2Fib3V0LXVzJyk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENhbiBhbHNvIGhhbmRsZSBtdWx0aXBsZSBzZWdtZW50cywgcmV0dXJuaW5nICdodHRwczovL3d3dy5kcmFlZ2VyLmNvbS9wcm9kdWN0cy9zZWFyY2gvMTIzJ1xuICogY29uc3QgcHJvZHVjdFVybCA9IGJ1aWxkV2Vic2l0ZVVybCgncHJvZHVjdHMnLCAnc2VhcmNoJywgMTIzKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2Vic2l0ZVVybCguLi5zZWdtZW50czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBzdHJpbmcge1xuICByZXR1cm4gYnVpbGRVcmwoRFJBRUdFUl9XRUJTSVRFX1VSTCwgLi4uc2VnbWVudHMpO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd2Vic2l0ZS11cmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2J1aWxkLXdlYnNpdGUtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUU3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQUcsUUFBNEQ7SUFDN0YsT0FBTyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRVcmwgfSBmcm9tICcuL2J1aWxkLXVybCc7XG5cbi8qKlxuICogQSBjb25zdGFudCByZXByZXNlbnRpbmcgdGhlIGJhc2UgVVJMIGZvciB0aGUgRHJhZWdlciB3ZWJzaXRlLlxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQGRlZmF1bHQgJ2h0dHBzOi8vd3d3LmRyYWVnZXIuY29tJ1xuICovXG5leHBvcnQgY29uc3QgRFJBRUdFUl9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5kcmFlZ2VyLmNvbSc7XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIGZ1bGwgVVJMIGZvciB0aGUgRHJhZWdlciB3ZWJzaXRlIGJ5IGFwcGVuZGluZyB0aGUgcHJvdmlkZWQgcGF0aCBzZWdtZW50cyB0byB0aGUgYmFzZSBVUkwuXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgdXRpbGl0eSBmb3IgY3JlYXRpbmcgZnVsbHkgcXVhbGlmaWVkIFVSTHMgdG8gdmFyaW91cyByZXNvdXJjZXMgb3IgcGFnZXMgd2l0aGluIHRoZSBEcmFlZ2VyIHdlYnNpdGUuXG4gKlxuICogQGZ1bmN0aW9uIGJ1aWxkV2Vic2l0ZVVybFxuICogQHBhcmFtIHsuLi4oc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCB8IHVuZGVmaW5lZCl9IHNlZ21lbnRzIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gYXBwZW5kIHRvIHRoZSBiYXNlIFVSTC5cbiAqIFRoZXNlIGNhbiBpbmNsdWRlIHN0cmluZ3MsIG51bWJlcnMsIHN5bWJvbHMsIG9yIG51bGwvdW5kZWZpbmVkIHZhbHVlcyAodGhlIGxhdHRlciB0d28gYXJlIGlnbm9yZWQpLlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGx5IGNvbnN0cnVjdGVkIFVSTCwgaW5jbHVkaW5nIHRoZSBiYXNlIFVSTCBhbmQgYWxsIHByb3ZpZGVkIHBhdGggc2VnbWVudHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBSZXR1cm5zICdodHRwczovL3d3dy5kcmFlZ2VyLmNvbS9hYm91dC11cydcbiAqIGNvbnN0IHVybCA9IGJ1aWxkV2Vic2l0ZVVybCgnYWJvdXQtdXMnKTtcbiAqXG4gKiAvLyBDYW4gYWxzbyBoYW5kbGUgbXVsdGlwbGUgc2VnbWVudHMsIHJldHVybmluZyAnaHR0cHM6Ly93d3cuZHJhZWdlci5jb20vcHJvZHVjdHMvc2VhcmNoLzEyMydcbiAqIGNvbnN0IHByb2R1Y3RVcmwgPSBidWlsZFdlYnNpdGVVcmwoJ3Byb2R1Y3RzJywgJ3NlYXJjaCcsIDEyMyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2Vic2l0ZVVybCguLi5zZWdtZW50czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBzdHJpbmcge1xuICByZXR1cm4gYnVpbGRVcmwoRFJBRUdFUl9XRUJTSVRFX1VSTCwgLi4uc2VnbWVudHMpO1xufVxuIl19
@@ -1,21 +1,72 @@
1
+ /**
2
+ * The HTTP 'Etag' header, used for web cache validation.
3
+ */
1
4
  export const HTTP_ETAG_HEADER = 'Etag';
5
+ /**
6
+ * The HTTP 'If-None-Match' header, used in conditional requests to compare against the ETag.
7
+ */
2
8
  export const HTTP_IF_NONE_MATCH_HEADER = 'If-None-Match';
9
+ /**
10
+ * The HTTP 'Cache-Control' header, used to specify directives for caching mechanisms in requests and responses.
11
+ */
3
12
  export const HTTP_CACHE_CONTROL_HEADER = 'Cache-Control';
13
+ /**
14
+ * A client for managing cache storage for web applications. It simplifies interactions with the Cache Storage API,
15
+ * allowing for the caching, retrieval, and deletion of request responses. This class uses HTTP caching headers to
16
+ * optimize network requests and cache management.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * // Creating an instance of CacheStorageClient
21
+ * const cacheClient = new CacheStorageClient('my-cache');
22
+ *
23
+ * // Requesting and caching data
24
+ * cacheClient.request('https://api.example.com/data').then(data => {
25
+ * console.log(data);
26
+ * });
27
+ *
28
+ * // Deleting a specific cache entry
29
+ * cacheClient.delete('https://api.example.com/data');
30
+ *
31
+ * // Clearing all cache entries
32
+ * cacheClient.deleteAll();
33
+ * ```
34
+ */
4
35
  export class CacheStorageClient {
5
36
  constructor(cacheKey, cacheStorage = window.caches) {
6
37
  this.cacheKey = cacheKey;
7
38
  this.cacheStorage = cacheStorage;
8
39
  }
40
+ /**
41
+ * Deletes a specific cache entry.
42
+ *
43
+ * @param {RequestInfo | URL} request - The request or URL to delete from the cache.
44
+ * @returns {Promise<boolean>} A promise that resolves to a boolean indicating whether the deletion was successful.
45
+ */
9
46
  async delete(request) {
10
47
  const cache = await this.getCache();
11
48
  return cache.delete(request);
12
49
  }
50
+ /**
51
+ * Deletes all entries from the cache.
52
+ *
53
+ * @returns {Promise<void>} A promise that resolves when all entries have been deleted.
54
+ */
13
55
  async deleteAll() {
14
56
  const cache = await this.getCache();
15
57
  for (const key of await cache.keys()) {
16
58
  await cache.delete(key);
17
59
  }
18
60
  }
61
+ /**
62
+ * Performs a request, caching the response if applicable. If a response is cached for the request and still valid,
63
+ * it returns the cached response instead of making a new network request.
64
+ *
65
+ * @template T - The expected response data type.
66
+ * @param {RequestInfo | URL} requestInfo - The request information or URL to fetch and cache.
67
+ * @param {(response: Response) => boolean} [shouldDelete=({ status }) => status >= 400 && status < 500] - An optional function to determine if the cache entry should be deleted based on the response.
68
+ * @returns {Promise<T | null>} A promise that resolves to the response data, or null if the request fails.
69
+ */
19
70
  async request(requestInfo, shouldDelete = ({ status }) => status >= 400 && status < 500) {
20
71
  const cache = await this.getCache();
21
72
  const request = await this.prepareRequest(cache, requestInfo);
@@ -50,4 +101,4 @@ export class CacheStorageClient {
50
101
  return cache.match(request).then((res) => res ?? null);
51
102
  }
52
103
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3RvcmFnZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2NhY2hlLXN0b3JhZ2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFDekQsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsZUFBZSxDQUFDO0FBRXpELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDbUIsUUFBZ0IsRUFDaEIsZUFBZSxNQUFNLENBQUMsTUFBTTtRQUQ1QixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtJQUM1QyxDQUFDO0lBRUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUksV0FBOEIsRUFBRSxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQVksRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEdBQUcsR0FBRztRQUM1SCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsSUFBSSxRQUFRLElBQUksWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxLQUFLLENBQUMsUUFBUTtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFZLEVBQUUsV0FBOEI7UUFDekUsTUFBTSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sSUFBSSxHQUFHLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxFQUFFO1lBQ1IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUUsT0FBZ0I7UUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkUsSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFO1lBQy9CLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUNoQixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RDtRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSFRUUF9FVEFHX0hFQURFUiA9ICdFdGFnJztcbmV4cG9ydCBjb25zdCBIVFRQX0lGX05PTkVfTUFUQ0hfSEVBREVSID0gJ0lmLU5vbmUtTWF0Y2gnO1xuZXhwb3J0IGNvbnN0IEhUVFBfQ0FDSEVfQ09OVFJPTF9IRUFERVIgPSAnQ2FjaGUtQ29udHJvbCc7XG5cbmV4cG9ydCBjbGFzcyBDYWNoZVN0b3JhZ2VDbGllbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVN0b3JhZ2UgPSB3aW5kb3cuY2FjaGVzLFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXF1ZXN0OiBSZXF1ZXN0SW5mbyB8IFVSTCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgdGhpcy5nZXRDYWNoZSgpO1xuXG4gICAgcmV0dXJuIGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmdldENhY2hlKCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYXdhaXQgY2FjaGUua2V5cygpKSB7XG4gICAgICBhd2FpdCBjYWNoZS5kZWxldGUoa2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPihyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8gfCBVUkwsIHNob3VsZERlbGV0ZSA9ICh7IHN0YXR1cyB9OiBSZXNwb25zZSkgPT4gc3RhdHVzID49IDQwMCAmJiBzdGF0dXMgPCA1MDApOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmdldENhY2hlKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHRoaXMucHJlcGFyZVJlcXVlc3QoY2FjaGUsIHJlcXVlc3RJbmZvKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VuZFJlcXVlc3QoY2FjaGUsIHJlcXVlc3QpO1xuICAgIGlmIChyZXNwb25zZSAmJiBzaG91bGREZWxldGU/LihyZXNwb25zZSkpIHtcbiAgICAgIGF3YWl0IGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlPy5qc29uKCkgPz8gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRDYWNoZSgpOiBQcm9taXNlPENhY2hlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yYWdlLm9wZW4odGhpcy5jYWNoZUtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZVJlcXVlc3QoY2FjaGU6IENhY2hlLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8gfCBVUkwpOiBQcm9taXNlPFJlcXVlc3Q+IHtcbiAgICBjb25zdCBjYWNoZWRSZXNwb25zZSA9IGF3YWl0IGNhY2hlLm1hdGNoKHJlcXVlc3RJbmZvKTtcbiAgICBjb25zdCBldGFnID0gY2FjaGVkUmVzcG9uc2U/LmhlYWRlcnM/LmdldChIVFRQX0VUQUdfSEVBREVSKSA/PyBudWxsO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChyZXF1ZXN0SW5mbyk7XG4gICAgaWYgKGV0YWcpIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5zZXQoSFRUUF9JRl9OT05FX01BVENIX0hFQURFUiwgZXRhZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2VuZFJlcXVlc3QoY2FjaGU6IENhY2hlLCByZXF1ZXN0OiBSZXF1ZXN0KTogUHJvbWlzZTxSZXNwb25zZSB8IG51bGw+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlcXVlc3QpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIGNvbnN0IGNhY2hlQ29udHJvbCA9IHJlc3BvbnNlPy5oZWFkZXJzPy5nZXQoSFRUUF9DQUNIRV9DT05UUk9MX0hFQURFUik7XG4gICAgaWYgKGNhY2hlQ29udHJvbCA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgYXdhaXQgY2FjaGUuZGVsZXRlKHJlcXVlc3QpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGlmIChyZXNwb25zZT8ub2spIHtcbiAgICAgIGF3YWl0IGNhY2hlLnB1dChyZXF1ZXN0LCByZXNwb25zZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlLm1hdGNoKHJlcXVlc3QpLnRoZW4oKHJlcykgPT4gcmVzID8/IG51bGwpO1xuICB9XG59XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc3RvcmFnZS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2NhY2hlLXN0b3JhZ2UtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0FBRXZDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsZUFBZSxDQUFDO0FBRXpEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsZUFBZSxDQUFDO0FBRXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ21CLFFBQWdCLEVBQ2hCLGVBQWUsTUFBTSxDQUFDLE1BQU07UUFENUIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7SUFDNUMsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsU0FBUztRQUNwQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQUksV0FBOEIsRUFBRSxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQVksRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEdBQUcsR0FBRztRQUM1SCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsSUFBSSxRQUFRLElBQUksWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxLQUFLLENBQUMsUUFBUTtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFZLEVBQUUsV0FBOEI7UUFDekUsTUFBTSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sSUFBSSxHQUFHLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxFQUFFO1lBQ1IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZLEVBQUUsT0FBZ0I7UUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkUsSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFO1lBQy9CLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUNELElBQUksUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUNoQixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0RDtRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBIVFRQICdFdGFnJyBoZWFkZXIsIHVzZWQgZm9yIHdlYiBjYWNoZSB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgSFRUUF9FVEFHX0hFQURFUiA9ICdFdGFnJztcblxuLyoqXG4gKiBUaGUgSFRUUCAnSWYtTm9uZS1NYXRjaCcgaGVhZGVyLCB1c2VkIGluIGNvbmRpdGlvbmFsIHJlcXVlc3RzIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgRVRhZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEhUVFBfSUZfTk9ORV9NQVRDSF9IRUFERVIgPSAnSWYtTm9uZS1NYXRjaCc7XG5cbi8qKlxuICogVGhlIEhUVFAgJ0NhY2hlLUNvbnRyb2wnIGhlYWRlciwgdXNlZCB0byBzcGVjaWZ5IGRpcmVjdGl2ZXMgZm9yIGNhY2hpbmcgbWVjaGFuaXNtcyBpbiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLlxuICovXG5leHBvcnQgY29uc3QgSFRUUF9DQUNIRV9DT05UUk9MX0hFQURFUiA9ICdDYWNoZS1Db250cm9sJztcblxuLyoqXG4gKiBBIGNsaWVudCBmb3IgbWFuYWdpbmcgY2FjaGUgc3RvcmFnZSBmb3Igd2ViIGFwcGxpY2F0aW9ucy4gSXQgc2ltcGxpZmllcyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgQ2FjaGUgU3RvcmFnZSBBUEksXG4gKiBhbGxvd2luZyBmb3IgdGhlIGNhY2hpbmcsIHJldHJpZXZhbCwgYW5kIGRlbGV0aW9uIG9mIHJlcXVlc3QgcmVzcG9uc2VzLiBUaGlzIGNsYXNzIHVzZXMgSFRUUCBjYWNoaW5nIGhlYWRlcnMgdG9cbiAqIG9wdGltaXplIG5ldHdvcmsgcmVxdWVzdHMgYW5kIGNhY2hlIG1hbmFnZW1lbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBDcmVhdGluZyBhbiBpbnN0YW5jZSBvZiBDYWNoZVN0b3JhZ2VDbGllbnRcbiAqIGNvbnN0IGNhY2hlQ2xpZW50ID0gbmV3IENhY2hlU3RvcmFnZUNsaWVudCgnbXktY2FjaGUnKTtcbiAqXG4gKiAvLyBSZXF1ZXN0aW5nIGFuZCBjYWNoaW5nIGRhdGFcbiAqIGNhY2hlQ2xpZW50LnJlcXVlc3QoJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tL2RhdGEnKS50aGVuKGRhdGEgPT4ge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH0pO1xuICpcbiAqIC8vIERlbGV0aW5nIGEgc3BlY2lmaWMgY2FjaGUgZW50cnlcbiAqIGNhY2hlQ2xpZW50LmRlbGV0ZSgnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vZGF0YScpO1xuICpcbiAqIC8vIENsZWFyaW5nIGFsbCBjYWNoZSBlbnRyaWVzXG4gKiBjYWNoZUNsaWVudC5kZWxldGVBbGwoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ2FjaGVTdG9yYWdlQ2xpZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZUtleTogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVTdG9yYWdlID0gd2luZG93LmNhY2hlcyxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgc3BlY2lmaWMgY2FjaGUgZW50cnkuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVxdWVzdEluZm8gfCBVUkx9IHJlcXVlc3QgLSBUaGUgcmVxdWVzdCBvciBVUkwgdG8gZGVsZXRlIGZyb20gdGhlIGNhY2hlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlKHJlcXVlc3Q6IFJlcXVlc3RJbmZvIHwgVVJMKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCB0aGlzLmdldENhY2hlKCk7XG5cbiAgICByZXR1cm4gY2FjaGUuZGVsZXRlKHJlcXVlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYWxsIGVudHJpZXMgZnJvbSB0aGUgY2FjaGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGFsbCBlbnRyaWVzIGhhdmUgYmVlbiBkZWxldGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjYWNoZSA9IGF3YWl0IHRoaXMuZ2V0Q2FjaGUoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBhd2FpdCBjYWNoZS5rZXlzKCkpIHtcbiAgICAgIGF3YWl0IGNhY2hlLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIHJlcXVlc3QsIGNhY2hpbmcgdGhlIHJlc3BvbnNlIGlmIGFwcGxpY2FibGUuIElmIGEgcmVzcG9uc2UgaXMgY2FjaGVkIGZvciB0aGUgcmVxdWVzdCBhbmQgc3RpbGwgdmFsaWQsXG4gICAqIGl0IHJldHVybnMgdGhlIGNhY2hlZCByZXNwb25zZSBpbnN0ZWFkIG9mIG1ha2luZyBhIG5ldyBuZXR3b3JrIHJlcXVlc3QuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUIC0gVGhlIGV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgdHlwZS5cbiAgICogQHBhcmFtIHtSZXF1ZXN0SW5mbyB8IFVSTH0gcmVxdWVzdEluZm8gLSBUaGUgcmVxdWVzdCBpbmZvcm1hdGlvbiBvciBVUkwgdG8gZmV0Y2ggYW5kIGNhY2hlLlxuICAgKiBAcGFyYW0geyhyZXNwb25zZTogUmVzcG9uc2UpID0+IGJvb2xlYW59IFtzaG91bGREZWxldGU9KHsgc3RhdHVzIH0pID0+IHN0YXR1cyA+PSA0MDAgJiYgc3RhdHVzIDwgNTAwXSAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgY2FjaGUgZW50cnkgc2hvdWxkIGJlIGRlbGV0ZWQgYmFzZWQgb24gdGhlIHJlc3BvbnNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUIHwgbnVsbD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZSBkYXRhLCBvciBudWxsIGlmIHRoZSByZXF1ZXN0IGZhaWxzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlcXVlc3Q8VD4ocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvIHwgVVJMLCBzaG91bGREZWxldGUgPSAoeyBzdGF0dXMgfTogUmVzcG9uc2UpID0+IHN0YXR1cyA+PSA0MDAgJiYgc3RhdHVzIDwgNTAwKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IGNhY2hlID0gYXdhaXQgdGhpcy5nZXRDYWNoZSgpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnByZXBhcmVSZXF1ZXN0KGNhY2hlLCByZXF1ZXN0SW5mbyk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KGNhY2hlLCByZXF1ZXN0KTtcbiAgICBpZiAocmVzcG9uc2UgJiYgc2hvdWxkRGVsZXRlPy4ocmVzcG9uc2UpKSB7XG4gICAgICBhd2FpdCBjYWNoZS5kZWxldGUocmVxdWVzdCk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZT8uanNvbigpID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0Q2FjaGUoKTogUHJvbWlzZTxDYWNoZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlU3RvcmFnZS5vcGVuKHRoaXMuY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVSZXF1ZXN0KGNhY2hlOiBDYWNoZSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvIHwgVVJMKTogUHJvbWlzZTxSZXF1ZXN0PiB7XG4gICAgY29uc3QgY2FjaGVkUmVzcG9uc2UgPSBhd2FpdCBjYWNoZS5tYXRjaChyZXF1ZXN0SW5mbyk7XG4gICAgY29uc3QgZXRhZyA9IGNhY2hlZFJlc3BvbnNlPy5oZWFkZXJzPy5nZXQoSFRUUF9FVEFHX0hFQURFUikgPz8gbnVsbDtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QocmVxdWVzdEluZm8pO1xuICAgIGlmIChldGFnKSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KEhUVFBfSUZfTk9ORV9NQVRDSF9IRUFERVIsIGV0YWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNlbmRSZXF1ZXN0KGNhY2hlOiBDYWNoZSwgcmVxdWVzdDogUmVxdWVzdCk6IFByb21pc2U8UmVzcG9uc2UgfCBudWxsPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0KS5jYXRjaCgoKSA9PiBudWxsKTtcbiAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSByZXNwb25zZT8uaGVhZGVycz8uZ2V0KEhUVFBfQ0FDSEVfQ09OVFJPTF9IRUFERVIpO1xuICAgIGlmIChjYWNoZUNvbnRyb2wgPT09ICduby1jYWNoZScpIHtcbiAgICAgIGF3YWl0IGNhY2hlLmRlbGV0ZShyZXF1ZXN0KTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2U/Lm9rKSB7XG4gICAgICBhd2FpdCBjYWNoZS5wdXQocmVxdWVzdCwgcmVzcG9uc2UpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZS5tYXRjaChyZXF1ZXN0KS50aGVuKChyZXMpID0+IHJlcyA/PyBudWxsKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,23 @@
1
1
  import { coerceArray } from '@angular/cdk/coercion';
2
+ /**
3
+ * Coerces a value to an array. If the value is already an array, it is returned directly.
4
+ * If the value is not an array, it is wrapped in an array. This utility is useful for
5
+ * handling values that can be either single values or arrays, ensuring consistent array handling.
6
+ *
7
+ * @param {string | string[]} value - The value to coerce to an array. Can be a single string or an array of strings.
8
+ * @returns {string[]} The coerced value as an array of strings.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // Coercing a single string to an array
13
+ * console.log(arrayAttribute('singleValue')); // Outputs: ['singleValue']
14
+ *
15
+ * // Returning an array directly
16
+ * console.log(arrayAttribute(['value1', 'value2'])); // Outputs: ['value1', 'value2']
17
+ * ```
18
+ */
2
19
  export function arrayAttribute(value) {
3
20
  return coerceArray(value);
4
21
  }
5
22
  export { coerceArray, coerceCssPixelValue, coerceElement, coerceStringArray } from '@angular/cdk/coercion';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2NvZXJjaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQXdCO0lBQ3JELE9BQU8sV0FBVyxDQUFTLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlBdHRyaWJ1dGUodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gY29lcmNlQXJyYXk8c3RyaW5nPih2YWx1ZSk7XG59XG5cbmV4cG9ydCB7IGNvZXJjZUFycmF5LCBjb2VyY2VDc3NQaXhlbFZhbHVlLCBjb2VyY2VFbGVtZW50LCBjb2VyY2VTdHJpbmdBcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2NvZXJjaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBd0I7SUFDckQsT0FBTyxXQUFXLENBQVMsS0FBSyxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbi8qKlxuICogQ29lcmNlcyBhIHZhbHVlIHRvIGFuIGFycmF5LiBJZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBhbiBhcnJheSwgaXQgaXMgcmV0dXJuZWQgZGlyZWN0bHkuXG4gKiBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIGFycmF5LCBpdCBpcyB3cmFwcGVkIGluIGFuIGFycmF5LiBUaGlzIHV0aWxpdHkgaXMgdXNlZnVsIGZvclxuICogaGFuZGxpbmcgdmFsdWVzIHRoYXQgY2FuIGJlIGVpdGhlciBzaW5nbGUgdmFsdWVzIG9yIGFycmF5cywgZW5zdXJpbmcgY29uc2lzdGVudCBhcnJheSBoYW5kbGluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb2VyY2UgdG8gYW4gYXJyYXkuIENhbiBiZSBhIHNpbmdsZSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gVGhlIGNvZXJjZWQgdmFsdWUgYXMgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIENvZXJjaW5nIGEgc2luZ2xlIHN0cmluZyB0byBhbiBhcnJheVxuICogY29uc29sZS5sb2coYXJyYXlBdHRyaWJ1dGUoJ3NpbmdsZVZhbHVlJykpOyAvLyBPdXRwdXRzOiBbJ3NpbmdsZVZhbHVlJ11cbiAqXG4gKiAvLyBSZXR1cm5pbmcgYW4gYXJyYXkgZGlyZWN0bHlcbiAqIGNvbnNvbGUubG9nKGFycmF5QXR0cmlidXRlKFsndmFsdWUxJywgJ3ZhbHVlMiddKSk7IC8vIE91dHB1dHM6IFsndmFsdWUxJywgJ3ZhbHVlMiddXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5QXR0cmlidXRlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGNvZXJjZUFycmF5PHN0cmluZz4odmFsdWUpO1xufVxuXG5leHBvcnQgeyBjb2VyY2VBcnJheSwgY29lcmNlQ3NzUGl4ZWxWYWx1ZSwgY29lcmNlRWxlbWVudCwgY29lcmNlU3RyaW5nQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuIl19
@@ -1,3 +1,30 @@
1
+ /**
2
+ * Creates a debounced function that delays invoking the provided function until after `delay` milliseconds
3
+ * have elapsed since the last time the debounced function was invoked. Optionally, the function can be
4
+ * triggered immediately on the first call, then debounced for subsequent calls.
5
+ *
6
+ * @template Args - A tuple representing the types of arguments the `func` accepts.
7
+ * @param {(...args: Args) => void} func - The function to debounce.
8
+ * @param {number} delay - The number of milliseconds to delay.
9
+ * @param {boolean} [immediate=false] - Whether to trigger the function immediately on the first call,
10
+ * and then debounce subsequent calls.
11
+ * @returns {(...args: Args) => void} A new, debounced function.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Example usage with a window resize event
16
+ * const handleResize = debounce(() => {
17
+ * console.log('Window resized');
18
+ * }, 250);
19
+ * window.addEventListener('resize', handleResize);
20
+ *
21
+ * // Example using immediate invocation
22
+ * const processKeyPress = debounce((event) => {
23
+ * console.log('Key pressed:', event.key);
24
+ * }, 200, true);
25
+ * document.addEventListener('keypress', processKeyPress);
26
+ * ```
27
+ */
1
28
  export function debounce(func, delay, immediate = false) {
2
29
  let timeout = null;
3
30
  return function (...args) {
@@ -18,4 +45,4 @@ export function debounce(func, delay, immediate = false) {
18
45
  }
19
46
  };
20
47
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2RlYm91bmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQXlCLElBQTZCLEVBQUUsS0FBYSxFQUFFLFNBQVMsR0FBRyxLQUFLO0lBQzlHLElBQUksT0FBTyxHQUFrQixJQUFJLENBQUM7SUFFbEMsT0FBTyxVQUF5QixHQUFHLElBQVU7UUFDM0MsNERBQTREO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztRQUNyQixNQUFNLGVBQWUsR0FBRyxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQztRQUN0RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxHQUFHLFVBQVUsQ0FBQztZQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDM0I7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFzQixDQUFDO1FBQy9CLElBQUksZUFBZSxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBkZWJvdW5jZTxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihmdW5jOiAoLi4uYXJnczogQXJncykgPT4gdm9pZCwgZGVsYXk6IG51bWJlciwgaW1tZWRpYXRlID0gZmFsc2UpOiAoLi4uYXJnczogQXJncykgPT4gdm9pZCB7XG4gIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICByZXR1cm4gZnVuY3Rpb24gKHRoaXM6IHVua25vd24sIC4uLmFyZ3M6IEFyZ3MpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcztcbiAgICBjb25zdCBjYWxsSW1tZWRpYXRlbHkgPSBpbW1lZGlhdGUgJiYgdGltZW91dCA9PT0gbnVsbDtcbiAgICBpZiAodGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH1cbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIGlmICghY2FsbEltbWVkaWF0ZWx5KSB7XG4gICAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICB9XG4gICAgfSwgZGVsYXkpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuICAgIGlmIChjYWxsSW1tZWRpYXRlbHkpIHtcbiAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgfVxuICB9O1xufVxuIl19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL2RlYm91bmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQXlCLElBQTZCLEVBQUUsS0FBYSxFQUFFLFNBQVMsR0FBRyxLQUFLO0lBQzlHLElBQUksT0FBTyxHQUFrQixJQUFJLENBQUM7SUFFbEMsT0FBTyxVQUF5QixHQUFHLElBQVU7UUFDM0MsNERBQTREO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztRQUNyQixNQUFNLGVBQWUsR0FBRyxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQztRQUN0RCxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxHQUFHLFVBQVUsQ0FBQztZQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDM0I7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFzQixDQUFDO1FBQy9CLElBQUksZUFBZSxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gdW50aWwgYWZ0ZXIgYGRlbGF5YCBtaWxsaXNlY29uZHNcbiAqIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzIGludm9rZWQuIE9wdGlvbmFsbHksIHRoZSBmdW5jdGlvbiBjYW4gYmVcbiAqIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBvbiB0aGUgZmlyc3QgY2FsbCwgdGhlbiBkZWJvdW5jZWQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuXG4gKlxuICogQHRlbXBsYXRlIEFyZ3MgLSBBIHR1cGxlIHJlcHJlc2VudGluZyB0aGUgdHlwZXMgb2YgYXJndW1lbnRzIHRoZSBgZnVuY2AgYWNjZXB0cy5cbiAqIEBwYXJhbSB7KC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWR9IGZ1bmMgLSBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZGVsYXkgLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ltbWVkaWF0ZT1mYWxzZV0gLSBXaGV0aGVyIHRvIHRyaWdnZXIgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IG9uIHRoZSBmaXJzdCBjYWxsLFxuICogYW5kIHRoZW4gZGVib3VuY2Ugc3Vic2VxdWVudCBjYWxscy5cbiAqIEByZXR1cm5zIHsoLi4uYXJnczogQXJncykgPT4gdm9pZH0gQSBuZXcsIGRlYm91bmNlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEV4YW1wbGUgdXNhZ2Ugd2l0aCBhIHdpbmRvdyByZXNpemUgZXZlbnRcbiAqIGNvbnN0IGhhbmRsZVJlc2l6ZSA9IGRlYm91bmNlKCgpID0+IHtcbiAqICAgY29uc29sZS5sb2coJ1dpbmRvdyByZXNpemVkJyk7XG4gKiB9LCAyNTApO1xuICogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XG4gKlxuICogLy8gRXhhbXBsZSB1c2luZyBpbW1lZGlhdGUgaW52b2NhdGlvblxuICogY29uc3QgcHJvY2Vzc0tleVByZXNzID0gZGVib3VuY2UoKGV2ZW50KSA9PiB7XG4gKiAgIGNvbnNvbGUubG9nKCdLZXkgcHJlc3NlZDonLCBldmVudC5rZXkpO1xuICogfSwgMjAwLCB0cnVlKTtcbiAqIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgcHJvY2Vzc0tleVByZXNzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2U8QXJncyBleHRlbmRzIHVua25vd25bXT4oZnVuYzogKC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWQsIGRlbGF5OiBudW1iZXIsIGltbWVkaWF0ZSA9IGZhbHNlKTogKC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWQge1xuICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiB1bmtub3duLCAuLi5hcmdzOiBBcmdzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7XG4gICAgY29uc3QgY2FsbEltbWVkaWF0ZWx5ID0gaW1tZWRpYXRlICYmIHRpbWVvdXQgPT09IG51bGw7XG4gICAgaWYgKHRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB9XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBpZiAoIWNhbGxJbW1lZGlhdGVseSkge1xuICAgICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgfVxuICAgIH0sIGRlbGF5KSBhcyB1bmtub3duIGFzIG51bWJlcjtcbiAgICBpZiAoY2FsbEltbWVkaWF0ZWx5KSB7XG4gICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==