@koobiq/components 18.4.0 → 18.5.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 (310) hide show
  1. package/accordion/_accordion-theme.scss +2 -6
  2. package/accordion/accordion-tokens.scss +0 -18
  3. package/accordion/accordion-trigger.component.scss +0 -5
  4. package/accordion/accordion.component.scss +0 -5
  5. package/alert/_alert-theme.scss +3 -7
  6. package/alert/alert-tokens.scss +0 -23
  7. package/alert/alert.component.scss +0 -3
  8. package/autocomplete/_autocomplete-theme.scss +0 -6
  9. package/autocomplete/autocomplete-tokens.scss +0 -2
  10. package/autocomplete/autocomplete.scss +0 -3
  11. package/badge/_badge-theme.scss +4 -8
  12. package/badge/badge-tokens.scss +0 -34
  13. package/badge/badge.component.scss +0 -3
  14. package/button/_button-base.scss +0 -3
  15. package/button/_button-theme.scss +1 -5
  16. package/button/button-tokens.scss +8 -10
  17. package/button/button.scss +0 -2
  18. package/button-toggle/_button-toggle-theme.scss +1 -6
  19. package/button-toggle/button-toggle-tokens.scss +1 -10
  20. package/button-toggle/button-toggle.scss +0 -3
  21. package/checkbox/_checkbox-theme.scss +4 -7
  22. package/checkbox/checkbox-tokens.scss +0 -30
  23. package/checkbox/checkbox.scss +0 -3
  24. package/code-block/_code-block-theme.scss +1 -6
  25. package/code-block/actionbar.component.scss +0 -4
  26. package/code-block/code-block-tokens.scss +2 -11
  27. package/code-block/code-block.scss +1 -3
  28. package/core/formatters/date/formatter.pipe.d.ts +82 -65
  29. package/core/formatters/index.d.ts +1 -1
  30. package/core/forms/_forms-theme.scss +1 -1
  31. package/core/forms/_forms.scss +2 -2
  32. package/core/forms/forms-tokens.scss +0 -17
  33. package/core/option/_optgroup-theme.scss +1 -1
  34. package/core/option/_option-theme.scss +2 -2
  35. package/core/option/action.scss +3 -3
  36. package/core/option/option-tokens.scss +0 -102
  37. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +0 -2
  38. package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -30
  39. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +0 -3
  40. package/core/styles/_core.scss +0 -2
  41. package/core/styles/_koobiq-theme.scss +0 -2
  42. package/core/styles/common/_groups.scss +4 -12
  43. package/core/styles/common/_list.scss +0 -3
  44. package/core/styles/common/_popup.scss +4 -9
  45. package/core/styles/common/_select.scss +29 -39
  46. package/core/styles/common/_tokens.scss +0 -2
  47. package/core/styles/theming/_scrollbar-theme.scss +0 -3
  48. package/core/styles/theming/_theming.scss +1 -1
  49. package/core/styles/theming/scrollbar-tokens.scss +0 -2
  50. package/core/styles/visual/_layout.scss +0 -3
  51. package/datepicker/_datepicker-theme.scss +2 -7
  52. package/datepicker/calendar-body.scss +0 -8
  53. package/datepicker/calendar-header.scss +0 -5
  54. package/datepicker/calendar.scss +0 -5
  55. package/datepicker/datepicker-content.scss +0 -5
  56. package/datepicker/datepicker-input.scss +0 -3
  57. package/datepicker/datepicker-toggle.scss +0 -5
  58. package/datepicker/datepicker-tokens.scss +0 -9
  59. package/divider/_divider-theme.scss +0 -4
  60. package/divider/divider-tokens.scss +0 -2
  61. package/divider/divider.scss +0 -5
  62. package/dl/_dl-theme.scss +2 -6
  63. package/dl/dl-tokens.scss +0 -18
  64. package/dl/dl.scss +0 -5
  65. package/dropdown/_dropdown-theme.scss +4 -8
  66. package/dropdown/dropdown-item.scss +0 -5
  67. package/dropdown/dropdown-tokens.scss +1 -90
  68. package/dropdown/dropdown.scss +0 -5
  69. package/empty-state/_empty-state-theme.scss +4 -7
  70. package/empty-state/empty-state-tokens.scss +0 -32
  71. package/empty-state/empty-state.scss +0 -4
  72. package/esm2022/accordion/accordion-trigger.component.mjs +2 -2
  73. package/esm2022/accordion/accordion.component.mjs +2 -2
  74. package/esm2022/alert/alert.component.mjs +2 -2
  75. package/esm2022/badge/badge.component.mjs +2 -2
  76. package/esm2022/button/button.component.mjs +2 -2
  77. package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
  78. package/esm2022/checkbox/checkbox.mjs +2 -2
  79. package/esm2022/code-block/code-block.component.mjs +2 -2
  80. package/esm2022/core/formatters/date/formatter.pipe.mjs +280 -120
  81. package/esm2022/core/formatters/index.mjs +65 -12
  82. package/esm2022/core/option/action.mjs +3 -3
  83. package/esm2022/core/option/optgroup.mjs +3 -3
  84. package/esm2022/core/option/option.mjs +3 -3
  85. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +2 -2
  86. package/esm2022/core/version.mjs +2 -2
  87. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  88. package/esm2022/datepicker/calendar-header.component.mjs +3 -3
  89. package/esm2022/datepicker/datepicker.component.mjs +3 -3
  90. package/esm2022/dl/dl.component.mjs +2 -2
  91. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  92. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  93. package/esm2022/empty-state/empty-state.component.mjs +2 -2
  94. package/esm2022/file-upload/multiple-file-upload.component.mjs +2 -2
  95. package/esm2022/file-upload/single-file-upload.component.mjs +2 -2
  96. package/esm2022/form-field/form-field.mjs +2 -2
  97. package/esm2022/form-field/hint.mjs +2 -2
  98. package/esm2022/form-field/password-hint.mjs +2 -2
  99. package/esm2022/form-field/validate.directive.mjs +21 -1
  100. package/esm2022/list/list-selection.component.mjs +2 -2
  101. package/esm2022/list/list.component.mjs +2 -2
  102. package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
  103. package/esm2022/markdown/markdown.component.mjs +34 -20
  104. package/esm2022/markdown/markdown.module.mjs +8 -9
  105. package/esm2022/markdown/markdown.service.mjs +5 -3
  106. package/esm2022/markdown/markdown.values.mjs +5 -1
  107. package/esm2022/modal/modal.component.mjs +2 -2
  108. package/esm2022/navbar/navbar.component.mjs +2 -2
  109. package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
  110. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  111. package/esm2022/popover/popover.component.mjs +3 -3
  112. package/esm2022/progress-bar/progress-bar.component.mjs +2 -2
  113. package/esm2022/progress-spinner/progress-spinner.component.mjs +2 -2
  114. package/esm2022/radio/radio.component.mjs +2 -2
  115. package/esm2022/risk-level/risk-level.component.mjs +2 -2
  116. package/esm2022/select/select.component.mjs +4 -4
  117. package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
  118. package/esm2022/splitter/splitter.component.mjs +2 -2
  119. package/esm2022/table/table.component.mjs +2 -2
  120. package/esm2022/tabs/tab-group.component.mjs +2 -2
  121. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +2 -2
  122. package/esm2022/tags/tag-list.component.mjs +2 -2
  123. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  124. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  125. package/esm2022/toast/toast.component.mjs +3 -3
  126. package/esm2022/toggle/toggle.component.mjs +3 -3
  127. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  128. package/esm2022/tree/padding.directive.mjs +2 -2
  129. package/esm2022/tree/toggle.mjs +2 -2
  130. package/esm2022/tree/tree-option.component.mjs +2 -2
  131. package/esm2022/tree/tree-selection.component.mjs +2 -2
  132. package/esm2022/tree/tree.mjs +2 -2
  133. package/esm2022/tree-select/tree-select.component.mjs +4 -4
  134. package/fesm2022/koobiq-components-accordion.mjs +4 -4
  135. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-alert.mjs +2 -2
  137. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-badge.mjs +2 -2
  139. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
  141. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-button.mjs +2 -2
  143. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  145. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-code-block.mjs +2 -2
  147. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-core.mjs +351 -136
  149. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-datepicker.mjs +6 -6
  151. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-dl.mjs +2 -2
  153. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  154. package/fesm2022/koobiq-components-dropdown.mjs +4 -4
  155. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-empty-state.mjs +2 -2
  157. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-file-upload.mjs +4 -4
  159. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-form-field.mjs +26 -6
  161. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-list.mjs +4 -4
  163. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  165. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-markdown.mjs +49 -30
  167. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-modal.mjs +2 -2
  169. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  170. package/fesm2022/koobiq-components-navbar.mjs +4 -4
  171. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-popover.mjs +4 -4
  173. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
  175. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
  177. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-radio.mjs +2 -2
  179. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-risk-level.mjs +2 -2
  181. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-select.mjs +4 -4
  183. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-sidepanel.mjs +2 -2
  185. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-splitter.mjs +1 -1
  187. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-table.mjs +2 -2
  189. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-tabs.mjs +4 -4
  191. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-tags.mjs +2 -2
  193. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-timezone.mjs +4 -4
  195. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-toast.mjs +2 -2
  197. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-toggle.mjs +2 -2
  199. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  201. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  202. package/fesm2022/koobiq-components-tree-select.mjs +4 -4
  203. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  204. package/fesm2022/koobiq-components-tree.mjs +10 -10
  205. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  206. package/file-upload/_file-upload-theme.scss +6 -10
  207. package/file-upload/file-upload-tokens.scss +0 -41
  208. package/file-upload/multiple-file-upload.component.scss +10 -13
  209. package/form-field/_form-field-theme.scss +2 -7
  210. package/form-field/_hint-theme.scss +2 -6
  211. package/form-field/cleaner.scss +0 -5
  212. package/form-field/form-field-tokens.scss +1 -19
  213. package/form-field/form-field.scss +0 -3
  214. package/form-field/hint-tokens.scss +0 -16
  215. package/form-field/password-toggle.scss +0 -5
  216. package/form-field/stepper.scss +0 -5
  217. package/form-field/validate.directive.d.ts +20 -0
  218. package/icon/_icon-button-theme.scss +0 -5
  219. package/icon/_icon-item-theme.scss +0 -2
  220. package/icon/icon-button-tokens.scss +0 -2
  221. package/icon/icon-button.scss +0 -3
  222. package/icon/icon-item-tokens.scss +0 -2
  223. package/icon/icon-item.scss +0 -3
  224. package/icon/icon-tokens.scss +0 -2
  225. package/icon/icon.scss +0 -3
  226. package/input/_input-theme.scss +1 -1
  227. package/input/input-tokens.scss +0 -9
  228. package/input/input.scss +2 -5
  229. package/link/_link-theme.scss +3 -3
  230. package/link/link-tokens.scss +0 -23
  231. package/list/_list-theme.scss +2 -2
  232. package/list/list-tokens.scss +0 -30
  233. package/list/list.scss +0 -3
  234. package/loader-overlay/_loader-overlay-theme.scss +4 -4
  235. package/loader-overlay/loader-overlay-tokens.scss +0 -36
  236. package/loader-overlay/loader-overlay.scss +1 -0
  237. package/markdown/_markdown-theme.scss +19 -19
  238. package/markdown/markdown-tokens.scss +3 -114
  239. package/markdown/markdown.component.d.ts +17 -10
  240. package/markdown/markdown.module.d.ts +1 -4
  241. package/markdown/markdown.service.d.ts +4 -1
  242. package/markdown/markdown.values.d.ts +4 -0
  243. package/modal/_modal-theme.scss +2 -4
  244. package/modal/modal-tokens.scss +0 -16
  245. package/modal/modal.scss +0 -3
  246. package/navbar/_navbar-item_horizontal.scss +0 -3
  247. package/navbar/_navbar-item_vertical.scss +0 -4
  248. package/navbar/navbar-brand.scss +0 -5
  249. package/navbar/navbar-tokens.scss +1 -3
  250. package/package.json +4 -5
  251. package/popover/_popover-theme.scss +2 -2
  252. package/popover/popover-tokens.scss +0 -17
  253. package/popover/popover.scss +1 -1
  254. package/prebuilt-themes/dark-theme.css +1 -1
  255. package/prebuilt-themes/light-theme.css +1 -1
  256. package/prebuilt-themes/theme.css +1 -1
  257. package/progress-bar/_progress-bar-theme.scss +2 -2
  258. package/progress-bar/progress-bar-tokens.scss +0 -16
  259. package/progress-spinner/_progress-spinner-theme.scss +2 -2
  260. package/progress-spinner/progress-spinner-tokens.scss +0 -16
  261. package/radio/_radio-theme.scss +4 -4
  262. package/radio/radio-tokens.scss +4 -31
  263. package/radio/radio.scss +2 -2
  264. package/risk-level/_risk-level-theme.scss +1 -5
  265. package/risk-level/risk-level-tokens.scss +0 -9
  266. package/schematics/ng-add/index.js +2 -4
  267. package/scrollbar/scrollbar-tokens.scss +0 -2
  268. package/select/_select-theme.scss +4 -4
  269. package/select/select-tokens.scss +1 -20
  270. package/select/select.scss +2 -2
  271. package/sidepanel/_sidepanel-theme.scss +2 -2
  272. package/sidepanel/sidepanel-tokens.scss +0 -16
  273. package/table/_table-theme.scss +2 -5
  274. package/table/table-tokens.scss +0 -16
  275. package/table/table.scss +0 -3
  276. package/tabs/_tabs-theme.scss +1 -1
  277. package/tabs/tab-nav-bar/tab-nav-bar.scss +0 -3
  278. package/tabs/tabs-tokens.scss +0 -9
  279. package/tags/_tag-theme.scss +2 -2
  280. package/tags/tag-input-tokens.scss +0 -9
  281. package/tags/tag-tokens.scss +0 -16
  282. package/textarea/_textarea-theme.scss +1 -4
  283. package/textarea/textarea-tokens.scss +0 -9
  284. package/textarea/textarea.scss +0 -3
  285. package/timepicker/timepicker.scss +0 -3
  286. package/timezone/_timezone-option-theme.scss +4 -8
  287. package/timezone/timezone-option-tokens.scss +0 -47
  288. package/timezone/timezone-option.component.scss +0 -3
  289. package/timezone/timezone-select.component.scss +0 -3
  290. package/toast/_toast-theme.scss +2 -6
  291. package/toast/toast-container.component.scss +0 -3
  292. package/toast/toast-tokens.scss +4 -17
  293. package/toast/toast.component.scss +1 -4
  294. package/toggle/_toggle-theme.scss +6 -9
  295. package/toggle/toggle-tokens.scss +0 -30
  296. package/toggle/toggle.scss +1 -4
  297. package/tooltip/_tooltip-theme.scss +2 -2
  298. package/tooltip/tooltip-tokens.scss +0 -16
  299. package/tooltip/tooltip.scss +0 -3
  300. package/tree/_tree-theme.scss +3 -6
  301. package/tree/toggle.scss +0 -3
  302. package/tree/tree-option.scss +8 -5
  303. package/tree/tree-tokens.scss +0 -16
  304. package/tree-select/_tree-select-theme.scss +1 -5
  305. package/tree-select/tree-select-tokens.scss +0 -14
  306. package/tree-select/tree-select.scss +0 -4
  307. package/core/option/optgroup-tokens.scss +0 -12
  308. package/core/option/option-action-tokens.scss +0 -5
  309. package/markdown/README.md +0 -0
  310. package/splitter/splitter-tokens.scss +0 -1
@@ -1,220 +1,380 @@
1
- import { Pipe } from '@angular/core';
1
+ import { inject, Pipe } from '@angular/core';
2
2
  import { DateAdapter } from '../../datetime';
3
3
  import { DateFormatter } from './formatter';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "../../datetime";
6
- import * as i2 from "./formatter";
7
- export class AbsoluteDateFormatterPipe {
8
- constructor(adapter, formatter) {
9
- this.adapter = adapter;
10
- this.formatter = formatter;
5
+ export class BaseFormatterPipe {
6
+ constructor() {
7
+ this.adapter = inject((DateAdapter));
8
+ this.formatter = inject((DateFormatter));
11
9
  }
10
+ }
11
+ export class AbsoluteDateFormatterPipe extends BaseFormatterPipe {
12
12
  transform(value, currYear) {
13
13
  const date = this.adapter.deserialize(value);
14
14
  return date ? this.formatter.absoluteLongDate(date, currYear) : '';
15
15
  }
16
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
17
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterPipe, name: "absoluteLongDate" }); }
16
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
17
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterPipe, isStandalone: true, name: "absoluteLongDate" }); }
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterPipe, decorators: [{
20
20
  type: Pipe,
21
- args: [{ name: 'absoluteLongDate' }]
22
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
23
- export class AbsoluteDateTimeFormatterPipe {
24
- constructor(adapter, formatter) {
25
- this.adapter = adapter;
26
- this.formatter = formatter;
27
- }
21
+ args: [{
22
+ standalone: true,
23
+ name: 'absoluteLongDate'
24
+ }]
25
+ }] });
26
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
27
+ export class AbsoluteDateFormatterImpurePipe extends AbsoluteDateFormatterPipe {
28
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
29
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterImpurePipe, isStandalone: true, name: "absoluteLongDateImpurePipe", pure: false }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateFormatterImpurePipe, decorators: [{
32
+ type: Pipe,
33
+ args: [{
34
+ standalone: true,
35
+ name: 'absoluteLongDateImpurePipe',
36
+ pure: false
37
+ }]
38
+ }] });
39
+ export class AbsoluteDateTimeFormatterPipe extends BaseFormatterPipe {
28
40
  transform(value, options) {
29
41
  const date = this.adapter.deserialize(value);
30
42
  return date ? this.formatter.absoluteLongDateTime(date, options) : '';
31
43
  }
32
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
33
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterPipe, name: "absoluteLongDateTime" }); }
44
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
45
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterPipe, isStandalone: true, name: "absoluteLongDateTime" }); }
34
46
  }
35
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterPipe, decorators: [{
36
48
  type: Pipe,
37
- args: [{ name: 'absoluteLongDateTime' }]
38
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
39
- export class AbsoluteDateShortFormatterPipe {
40
- constructor(adapter, formatter) {
41
- this.adapter = adapter;
42
- this.formatter = formatter;
43
- }
49
+ args: [{
50
+ standalone: true,
51
+ name: 'absoluteLongDateTime'
52
+ }]
53
+ }] });
54
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
55
+ export class AbsoluteDateTimeFormatterImpurePipe extends AbsoluteDateTimeFormatterPipe {
56
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
57
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterImpurePipe, isStandalone: true, name: "absoluteLongDateTimeImpurePipe", pure: false }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateTimeFormatterImpurePipe, decorators: [{
60
+ type: Pipe,
61
+ args: [{
62
+ standalone: true,
63
+ name: 'absoluteLongDateTimeImpurePipe',
64
+ pure: false
65
+ }]
66
+ }] });
67
+ export class AbsoluteDateShortFormatterPipe extends BaseFormatterPipe {
44
68
  transform(value, currYear) {
45
69
  const date = this.adapter.deserialize(value);
46
70
  return date ? this.formatter.absoluteShortDate(date, currYear) : '';
47
71
  }
48
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
49
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterPipe, name: "absoluteShortDate" }); }
72
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
73
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterPipe, isStandalone: true, name: "absoluteShortDate" }); }
50
74
  }
51
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterPipe, decorators: [{
52
76
  type: Pipe,
53
- args: [{ name: 'absoluteShortDate' }]
54
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
55
- export class AbsoluteShortDateTimeFormatterPipe {
56
- constructor(adapter, formatter) {
57
- this.adapter = adapter;
58
- this.formatter = formatter;
59
- }
77
+ args: [{
78
+ standalone: true,
79
+ name: 'absoluteShortDate'
80
+ }]
81
+ }] });
82
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
83
+ export class AbsoluteDateShortFormatterImpurePipe extends AbsoluteDateShortFormatterPipe {
84
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
85
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterImpurePipe, isStandalone: true, name: "absoluteShortDateImpurePipe", pure: false }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteDateShortFormatterImpurePipe, decorators: [{
88
+ type: Pipe,
89
+ args: [{
90
+ standalone: true,
91
+ name: 'absoluteShortDateImpurePipe',
92
+ pure: false
93
+ }]
94
+ }] });
95
+ export class AbsoluteShortDateTimeFormatterPipe extends BaseFormatterPipe {
60
96
  transform(value, options) {
61
97
  const date = this.adapter.deserialize(value);
62
98
  return date ? this.formatter.absoluteShortDateTime(date, options) : '';
63
99
  }
64
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
65
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterPipe, name: "absoluteShortDateTime" }); }
100
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
101
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterPipe, isStandalone: true, name: "absoluteShortDateTime" }); }
66
102
  }
67
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterPipe, decorators: [{
68
104
  type: Pipe,
69
- args: [{ name: 'absoluteShortDateTime' }]
70
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
71
- export class RelativeDateFormatterPipe {
72
- constructor(adapter, formatter) {
73
- this.adapter = adapter;
74
- this.formatter = formatter;
75
- }
105
+ args: [{
106
+ standalone: true,
107
+ name: 'absoluteShortDateTime'
108
+ }]
109
+ }] });
110
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
111
+ export class AbsoluteShortDateTimeFormatterImpurePipe extends AbsoluteShortDateTimeFormatterPipe {
112
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
113
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterImpurePipe, isStandalone: true, name: "absoluteShortDateTimeImpurePipe", pure: false }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AbsoluteShortDateTimeFormatterImpurePipe, decorators: [{
116
+ type: Pipe,
117
+ args: [{
118
+ standalone: true,
119
+ name: 'absoluteShortDateTimeImpurePipe',
120
+ pure: false
121
+ }]
122
+ }] });
123
+ export class RelativeDateFormatterPipe extends BaseFormatterPipe {
76
124
  transform(value) {
77
125
  const date = this.adapter.deserialize(value);
78
126
  return date ? this.formatter.relativeLongDate(date) : '';
79
127
  }
80
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
81
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterPipe, name: "relativeLongDate" }); }
128
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
129
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterPipe, isStandalone: true, name: "relativeLongDate" }); }
82
130
  }
83
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterPipe, decorators: [{
84
132
  type: Pipe,
85
- args: [{ name: 'relativeLongDate' }]
86
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
87
- export class RelativeDateTimeFormatterPipe {
88
- constructor(adapter, formatter) {
89
- this.adapter = adapter;
90
- this.formatter = formatter;
91
- }
133
+ args: [{
134
+ standalone: true,
135
+ name: 'relativeLongDate'
136
+ }]
137
+ }] });
138
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
139
+ export class RelativeDateFormatterImpurePipe extends RelativeDateFormatterPipe {
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
141
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterImpurePipe, isStandalone: true, name: "relativeLongDateImpurePipe", pure: false }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateFormatterImpurePipe, decorators: [{
144
+ type: Pipe,
145
+ args: [{
146
+ standalone: true,
147
+ name: 'relativeLongDateImpurePipe',
148
+ pure: false
149
+ }]
150
+ }] });
151
+ export class RelativeDateTimeFormatterPipe extends BaseFormatterPipe {
92
152
  transform(value, options) {
93
153
  const date = this.adapter.deserialize(value);
94
154
  return date ? this.formatter.relativeLongDateTime(date, options) : '';
95
155
  }
96
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
97
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterPipe, name: "relativeLongDateTime" }); }
156
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
157
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterPipe, isStandalone: true, name: "relativeLongDateTime" }); }
98
158
  }
99
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterPipe, decorators: [{
100
160
  type: Pipe,
101
- args: [{ name: 'relativeLongDateTime' }]
102
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
103
- export class RelativeShortDateFormatterPipe {
104
- constructor(adapter, formatter) {
105
- this.adapter = adapter;
106
- this.formatter = formatter;
107
- }
161
+ args: [{
162
+ standalone: true,
163
+ name: 'relativeLongDateTime'
164
+ }]
165
+ }] });
166
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
167
+ export class RelativeDateTimeFormatterImpurePipe extends RelativeDateTimeFormatterPipe {
168
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
169
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterImpurePipe, isStandalone: true, name: "relativeLongDateTimeImpurePipe", pure: false }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeDateTimeFormatterImpurePipe, decorators: [{
172
+ type: Pipe,
173
+ args: [{
174
+ standalone: true,
175
+ name: 'relativeLongDateTimeImpurePipe',
176
+ pure: false
177
+ }]
178
+ }] });
179
+ export class RelativeShortDateFormatterPipe extends BaseFormatterPipe {
108
180
  transform(value) {
109
181
  const date = this.adapter.deserialize(value);
110
182
  return date ? this.formatter.relativeShortDate(date) : '';
111
183
  }
112
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
113
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterPipe, name: "relativeShortDate" }); }
184
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
185
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterPipe, isStandalone: true, name: "relativeShortDate" }); }
114
186
  }
115
187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterPipe, decorators: [{
116
188
  type: Pipe,
117
- args: [{ name: 'relativeShortDate' }]
118
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
119
- export class RelativeShortDateTimeFormatterPipe {
120
- constructor(adapter, formatter) {
121
- this.adapter = adapter;
122
- this.formatter = formatter;
123
- }
189
+ args: [{
190
+ standalone: true,
191
+ name: 'relativeShortDate'
192
+ }]
193
+ }] });
194
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
195
+ export class RelativeShortDateFormatterImpurePipe extends RelativeShortDateFormatterPipe {
196
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
197
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterImpurePipe, isStandalone: true, name: "relativeShortDateImpurePipe", pure: false }); }
198
+ }
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateFormatterImpurePipe, decorators: [{
200
+ type: Pipe,
201
+ args: [{
202
+ standalone: true,
203
+ name: 'relativeShortDateImpurePipe',
204
+ pure: false
205
+ }]
206
+ }] });
207
+ export class RelativeShortDateTimeFormatterPipe extends BaseFormatterPipe {
124
208
  transform(value, options) {
125
209
  const date = this.adapter.deserialize(value);
126
210
  return date ? this.formatter.relativeShortDateTime(date, options) : '';
127
211
  }
128
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
129
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterPipe, name: "relativeShortDateTime" }); }
212
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
213
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterPipe, isStandalone: true, name: "relativeShortDateTime" }); }
130
214
  }
131
215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterPipe, decorators: [{
132
216
  type: Pipe,
133
- args: [{ name: 'relativeShortDateTime' }]
134
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
135
- export class RangeDateFormatterPipe {
136
- constructor(adapter, formatter) {
137
- this.adapter = adapter;
138
- this.formatter = formatter;
139
- }
217
+ args: [{
218
+ standalone: true,
219
+ name: 'relativeShortDateTime'
220
+ }]
221
+ }] });
222
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
223
+ export class RelativeShortDateTimeFormatterImpurePipe extends RelativeShortDateTimeFormatterPipe {
224
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
225
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterImpurePipe, isStandalone: true, name: "relativeShortDateTimeImpurePipe", pure: false }); }
226
+ }
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RelativeShortDateTimeFormatterImpurePipe, decorators: [{
228
+ type: Pipe,
229
+ args: [{
230
+ standalone: true,
231
+ name: 'relativeShortDateTimeImpurePipe',
232
+ pure: false
233
+ }]
234
+ }] });
235
+ export class RangeDateFormatterPipe extends BaseFormatterPipe {
140
236
  transform([value1, value2]) {
141
237
  const date1 = this.adapter.deserialize(value1);
142
238
  const date2 = this.adapter.deserialize(value2);
143
239
  return this.formatter.rangeLongDate(date1, date2);
144
240
  }
145
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
146
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterPipe, name: "rangeLongDate" }); }
241
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
242
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterPipe, isStandalone: true, name: "rangeLongDate" }); }
147
243
  }
148
244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterPipe, decorators: [{
149
245
  type: Pipe,
150
- args: [{ name: 'rangeLongDate' }]
151
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
152
- export class RangeShortDateFormatterPipe {
153
- constructor(adapter, formatter) {
154
- this.adapter = adapter;
155
- this.formatter = formatter;
156
- }
246
+ args: [{
247
+ standalone: true,
248
+ name: 'rangeLongDate'
249
+ }]
250
+ }] });
251
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
252
+ export class RangeDateFormatterImpurePipe extends RangeDateFormatterPipe {
253
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
254
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterImpurePipe, isStandalone: true, name: "rangeLongDateImpurePipe", pure: false }); }
255
+ }
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateFormatterImpurePipe, decorators: [{
257
+ type: Pipe,
258
+ args: [{
259
+ standalone: true,
260
+ name: 'rangeLongDateImpurePipe',
261
+ pure: false
262
+ }]
263
+ }] });
264
+ export class RangeShortDateFormatterPipe extends BaseFormatterPipe {
157
265
  transform([value1, value2]) {
158
266
  const date1 = this.adapter.deserialize(value1);
159
267
  const date2 = this.adapter.deserialize(value2);
160
268
  return this.formatter.rangeShortDate(date1, date2);
161
269
  }
162
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
163
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterPipe, name: "rangeShortDate" }); }
270
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
271
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterPipe, isStandalone: true, name: "rangeShortDate" }); }
164
272
  }
165
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterPipe, decorators: [{
166
274
  type: Pipe,
167
- args: [{ name: 'rangeShortDate' }]
168
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
169
- export class RangeDateTimeFormatterPipe {
170
- constructor(adapter, formatter) {
171
- this.adapter = adapter;
172
- this.formatter = formatter;
173
- }
275
+ args: [{
276
+ standalone: true,
277
+ name: 'rangeShortDate'
278
+ }]
279
+ }] });
280
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
281
+ export class RangeShortDateFormatterImpurePipe extends RangeShortDateFormatterPipe {
282
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
283
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterImpurePipe, isStandalone: true, name: "rangeShortDateImpurePipe", pure: false }); }
284
+ }
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateFormatterImpurePipe, decorators: [{
286
+ type: Pipe,
287
+ args: [{
288
+ standalone: true,
289
+ name: 'rangeShortDateImpurePipe',
290
+ pure: false
291
+ }]
292
+ }] });
293
+ export class RangeDateTimeFormatterPipe extends BaseFormatterPipe {
174
294
  transform([value1, value2], options) {
175
295
  const date1 = this.adapter.deserialize(value1);
176
296
  const date2 = this.adapter.deserialize(value2);
177
297
  return this.formatter.rangeLongDateTime(date1, date2, options);
178
298
  }
179
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
180
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterPipe, name: "rangeLongDateTime" }); }
299
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
300
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterPipe, isStandalone: true, name: "rangeLongDateTime" }); }
181
301
  }
182
302
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterPipe, decorators: [{
183
303
  type: Pipe,
184
- args: [{ name: 'rangeLongDateTime' }]
185
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
186
- export class RangeMiddleDateTimeFormatterPipe {
187
- constructor(adapter, formatter) {
188
- this.adapter = adapter;
189
- this.formatter = formatter;
190
- }
304
+ args: [{
305
+ standalone: true,
306
+ name: 'rangeLongDateTime'
307
+ }]
308
+ }] });
309
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
310
+ export class RangeDateTimeFormatterImpurePipe extends RangeDateTimeFormatterPipe {
311
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
312
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterImpurePipe, isStandalone: true, name: "rangeLongDateTimeImpurePipe", pure: false }); }
313
+ }
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeDateTimeFormatterImpurePipe, decorators: [{
315
+ type: Pipe,
316
+ args: [{
317
+ standalone: true,
318
+ name: 'rangeLongDateTimeImpurePipe',
319
+ pure: false
320
+ }]
321
+ }] });
322
+ export class RangeMiddleDateTimeFormatterPipe extends BaseFormatterPipe {
191
323
  transform([value1, value2], options) {
192
324
  const date1 = this.adapter.deserialize(value1);
193
325
  const date2 = this.adapter.deserialize(value2);
194
326
  return this.formatter.rangeMiddleDateTime(date1, date2, options);
195
327
  }
196
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
197
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterPipe, name: "rangeMiddleDateTime" }); }
328
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
329
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterPipe, isStandalone: true, name: "rangeMiddleDateTime" }); }
198
330
  }
199
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterPipe, decorators: [{
200
332
  type: Pipe,
201
- args: [{ name: 'rangeMiddleDateTime' }]
202
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
203
- export class RangeShortDateTimeFormatterPipe {
204
- constructor(adapter, formatter) {
205
- this.adapter = adapter;
206
- this.formatter = formatter;
207
- }
333
+ args: [{
334
+ standalone: true,
335
+ name: 'rangeMiddleDateTime'
336
+ }]
337
+ }] });
338
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
339
+ export class RangeMiddleDateTimeFormatterImpurePipe extends RangeMiddleDateTimeFormatterPipe {
340
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
341
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterImpurePipe, isStandalone: true, name: "rangeMiddleDateTimeImpurePipe", pure: false }); }
342
+ }
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeMiddleDateTimeFormatterImpurePipe, decorators: [{
344
+ type: Pipe,
345
+ args: [{
346
+ standalone: true,
347
+ name: 'rangeMiddleDateTimeImpurePipe',
348
+ pure: false
349
+ }]
350
+ }] });
351
+ export class RangeShortDateTimeFormatterPipe extends BaseFormatterPipe {
208
352
  transform([value1, value2], options) {
209
353
  const date1 = this.adapter.deserialize(value1);
210
354
  const date2 = this.adapter.deserialize(value2);
211
355
  return this.formatter.rangeShortDateTime(date1, date2, options);
212
356
  }
213
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterPipe, deps: [{ token: i1.DateAdapter }, { token: i2.DateFormatter }], target: i0.ɵɵFactoryTarget.Pipe }); }
214
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterPipe, name: "rangeShortDateTime" }); }
357
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
358
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterPipe, isStandalone: true, name: "rangeShortDateTime" }); }
215
359
  }
216
360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterPipe, decorators: [{
217
361
  type: Pipe,
218
- args: [{ name: 'rangeShortDateTime' }]
219
- }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.DateFormatter }] });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9kYXRlL2Zvcm1hdHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7O0FBRzVDLE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsWUFDWSxPQUF1QixFQUN2QixTQUEyQjtRQUQzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUNwQyxDQUFDO0lBRUosU0FBUyxDQUFDLEtBQWlCLEVBQUUsUUFBa0I7UUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkUsQ0FBQztpSUFWUSx5QkFBeUI7K0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTs7QUFlbEMsTUFBTSxPQUFPLDZCQUE2QjtJQUN0QyxZQUNZLE9BQXVCLEVBQ3ZCLFNBQTJCO1FBRDNCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQ3BDLENBQUM7SUFFSixTQUFTLENBQUMsS0FBaUIsRUFBRSxPQUF5QjtRQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMs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SUFDL0UsQ0FBQztpSUFYUSxnQ0FBZ0M7K0hBQWhDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFENUMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTs7QUFnQnJDLE1BQU0sT0FBTywrQkFBK0I7SUFDeEMsWUFDWSxPQUF1QixFQUN2QixTQUEyQjtRQUQzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUNwQyxDQUFDO0lBRUosU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBaUIsRUFBRSxPQUF5QjtRQUNqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBVSxFQUFFLEtBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO2lJQVhRLCtCQUErQjsrSEFBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUQzQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVRpbWVPcHRpb25zIH0gZnJvbSAnQGtvb2JpcS9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJy4uLy4uL2RhdGV0aW1lJztcbmltcG9ydCB7IERhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcic7XG5cbkBQaXBlKHsgbmFtZTogJ2Fic29sdXRlTG9uZ0RhdGUnIH0pXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVEYXRlRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+LFxuICAgICAgICBwcml2YXRlIGZvcm1hdHRlcjogRGF0ZUZvcm1hdHRlcjxEPlxuICAgICkge31cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogRCB8IHN0cmluZywgY3VyclllYXI/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGUgPyB0aGlzLmZvcm1hdHRlci5hYnNvbHV0ZUxvbmdEYXRlKGRhdGUsIGN1cnJZZWFyKSA6ICcnO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAnYWJzb2x1dGVMb25nRGF0ZVRpbWUnIH0pXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZm9ybWF0dGVyLmFic29sdXRlTG9uZ0RhdGVUaW1lKGRhdGUsIG9wdGlvbnMpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdhYnNvbHV0ZVNob3J0RGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcsIGN1cnJZZWFyPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBkYXRlID8gdGhpcy5mb3JtYXR0ZXIuYWJzb2x1dGVTaG9ydERhdGUoZGF0ZSwgY3VyclllYXIpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdhYnNvbHV0ZVNob3J0RGF0ZVRpbWUnIH0pXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+LFxuICAgICAgICBwcml2YXRlIGZvcm1hdHRlcjogRGF0ZUZvcm1hdHRlcjxEPlxuICAgICkge31cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogRCB8IHN0cmluZywgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBkYXRlID8gdGhpcy5mb3JtYXR0ZXIuYWJzb2x1dGVTaG9ydERhdGVUaW1lKGRhdGUsIG9wdGlvbnMpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdyZWxhdGl2ZUxvbmdEYXRlJyB9KVxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlRGF0ZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZm9ybWF0dGVyLnJlbGF0aXZlTG9uZ0RhdGUoZGF0ZSkgOiAnJztcbiAgICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ3JlbGF0aXZlTG9uZ0RhdGVUaW1lJyB9KVxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4sXG4gICAgICAgIHByaXZhdGUgZm9ybWF0dGVyOiBEYXRlRm9ybWF0dGVyPEQ+XG4gICAgKSB7fVxuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBEIHwgc3RyaW5nLCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGUgPyB0aGlzLmZvcm1hdHRlci5yZWxhdGl2ZUxvbmdEYXRlVGltZShkYXRlLCBvcHRpb25zKSA6ICcnO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmVsYXRpdmVTaG9ydERhdGUnIH0pXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4sXG4gICAgICAgIHByaXZhdGUgZm9ybWF0dGVyOiBEYXRlRm9ybWF0dGVyPEQ+XG4gICAgKSB7fVxuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBEIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGUgPyB0aGlzLmZvcm1hdHRlci5yZWxhdGl2ZVNob3J0RGF0ZShkYXRlKSA6ICcnO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmVsYXRpdmVTaG9ydERhdGVUaW1lJyB9KVxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZm9ybWF0dGVyLnJlbGF0aXZlU2hvcnREYXRlVGltZShkYXRlLCBvcHRpb25zKSA6ICcnO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmFuZ2VMb25nRGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBSYW5nZURhdGVGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4sXG4gICAgICAgIHByaXZhdGUgZm9ybWF0dGVyOiBEYXRlRm9ybWF0dGVyPEQ+XG4gICAgKSB7fVxuXG4gICAgdHJhbnNmb3JtKFt2YWx1ZTEsIHZhbHVlMl06IERbXSB8IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZTEgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUxKTtcbiAgICAgICAgY29uc3QgZGF0ZTIgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXIucmFuZ2VMb25nRGF0ZShkYXRlMSBhcyBELCBkYXRlMiBhcyBEKTtcbiAgICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ3JhbmdlU2hvcnREYXRlJyB9KVxuZXhwb3J0IGNsYXNzIFJhbmdlU2hvcnREYXRlRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+LFxuICAgICAgICBwcml2YXRlIGZvcm1hdHRlcjogRGF0ZUZvcm1hdHRlcjxEPlxuICAgICkge31cblxuICAgIHRyYW5zZm9ybShbdmFsdWUxLCB2YWx1ZTJdOiBEW10gfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUxID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlMSk7XG4gICAgICAgIGNvbnN0IGRhdGUyID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlMik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLnJhbmdlU2hvcnREYXRlKGRhdGUxIGFzIEQsIGRhdGUyIGFzIEQpO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmFuZ2VMb25nRGF0ZVRpbWUnIH0pXG5leHBvcnQgY2xhc3MgUmFuZ2VEYXRlVGltZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0oW3ZhbHVlMSwgdmFsdWUyXTogRFtdIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlMSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTEpO1xuICAgICAgICBjb25zdCBkYXRlMiA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5yYW5nZUxvbmdEYXRlVGltZShkYXRlMSBhcyBELCBkYXRlMiBhcyBELCBvcHRpb25zKTtcbiAgICB9XG59XG5cbkBQaXBlKHsgbmFtZTogJ3JhbmdlTWlkZGxlRGF0ZVRpbWUnIH0pXG5leHBvcnQgY2xhc3MgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0oW3ZhbHVlMSwgdmFsdWUyXTogRFtdIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlMSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTEpO1xuICAgICAgICBjb25zdCBkYXRlMiA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5yYW5nZU1pZGRsZURhdGVUaW1lKGRhdGUxIGFzIEQsIGRhdGUyIGFzIEQsIG9wdGlvbnMpO1xuICAgIH1cbn1cblxuQFBpcGUoeyBuYW1lOiAncmFuZ2VTaG9ydERhdGVUaW1lJyB9KVxuZXhwb3J0IGNsYXNzIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgcHJpdmF0ZSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD5cbiAgICApIHt9XG5cbiAgICB0cmFuc2Zvcm0oW3ZhbHVlMSwgdmFsdWUyXTogRFtdIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlMSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTEpO1xuICAgICAgICBjb25zdCBkYXRlMiA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5yYW5nZVNob3J0RGF0ZVRpbWUoZGF0ZTEgYXMgRCwgZGF0ZTIgYXMgRCwgb3B0aW9ucyk7XG4gICAgfVxufVxuIl19
362
+ args: [{
363
+ standalone: true,
364
+ name: 'rangeShortDateTime'
365
+ }]
366
+ }] });
367
+ // eslint-disable-next-line @angular-eslint/use-pipe-transform-interface
368
+ export class RangeShortDateTimeFormatterImpurePipe extends RangeShortDateTimeFormatterPipe {
369
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterImpurePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
370
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterImpurePipe, isStandalone: true, name: "rangeShortDateTimeImpurePipe", pure: false }); }
371
+ }
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RangeShortDateTimeFormatterImpurePipe, decorators: [{
373
+ type: Pipe,
374
+ args: [{
375
+ standalone: true,
376
+ name: 'rangeShortDateTimeImpurePipe',
377
+ pure: false
378
+ }]
379
+ }] });
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9kYXRlL2Zvcm1hdHRlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUU1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFNUMsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUN1QixZQUFPLEdBQW1CLE1BQU0sQ0FBQyxDQUFBLFdBQWMsQ0FBQSxDQUFDLENBQUM7UUFDakQsY0FBUyxHQUFxQixNQUFNLENBQUMsQ0FBQSxhQUFnQixDQUFBLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQUE7QUFNRCxNQUFNLE9BQU8seUJBQTZCLFNBQVEsaUJBQW9CO0lBQ2xFLFNBQVMsQ0FBQyxLQUFpQixFQUFFLFFBQWtCO1FBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7aUlBTFEseUJBQXlCOytIQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7aUJBQzNCOztBQWNELHdFQUF3RTtBQUN4RSxNQUFNLE9BQU8sK0JBQW1DLFNBQVEseUJBQTRCO2lJQUF2RSwrQkFBK0I7K0hBQS9CLCtCQUErQjs7MkZB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QUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBaUIsRUFBRSxPQUF5QjtRQUNqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBVSxFQUFFLEtBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO2lJQU5RLCtCQUErQjsrSEFBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUozQyxJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsb0JBQW9CO2lCQUM3Qjs7QUFlRCx3RUFBd0U7QUFDeEUsTUFBTSxPQUFPLHFDQUF5QyxTQUFRLCtCQUFrQztpSUFBbkYscUNBQXFDOytIQUFyQyxxQ0FBcUM7OzJGQUFyQyxxQ0FBcUM7a0JBTmpELElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSw4QkFBOEI7b0JBQ3BDLElBQUksRUFBRSxLQUFLO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlVGltZU9wdGlvbnMgfSBmcm9tICdAa29vYmlxL2RhdGUtZm9ybWF0dGVyJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVyJztcblxuZXhwb3J0IGNsYXNzIEJhc2VGb3JtYXR0ZXJQaXBlPEQ+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4gPSBpbmplY3QoRGF0ZUFkYXB0ZXI8RD4pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtYXR0ZXI6IERhdGVGb3JtYXR0ZXI8RD4gPSBpbmplY3QoRGF0ZUZvcm1hdHRlcjxEPik7XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdhYnNvbHV0ZUxvbmdEYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlPEQ+IGV4dGVuZHMgQmFzZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcsIGN1cnJZZWFyPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBkYXRlID8gdGhpcy5mb3JtYXR0ZXIuYWJzb2x1dGVMb25nRGF0ZShkYXRlLCBjdXJyWWVhcikgOiAnJztcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdhYnNvbHV0ZUxvbmdEYXRlSW1wdXJlUGlwZScsXG4gICAgcHVyZTogZmFsc2Vcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3VzZS1waXBlLXRyYW5zZm9ybS1pbnRlcmZhY2VcbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlPEQ+IGV4dGVuZHMgQWJzb2x1dGVEYXRlRm9ybWF0dGVyUGlwZTxEPiB7fVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnYWJzb2x1dGVMb25nRGF0ZVRpbWUnXG59KVxuZXhwb3J0IGNsYXNzIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlPEQ+IGV4dGVuZHMgQmFzZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZm9ybWF0dGVyLmFic29sdXRlTG9uZ0RhdGVUaW1lKGRhdGUsIG9wdGlvbnMpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnYWJzb2x1dGVMb25nRGF0ZVRpbWVJbXB1cmVQaXBlJyxcbiAgICBwdXJlOiBmYWxzZVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdXNlLXBpcGUtdHJhbnNmb3JtLWludGVyZmFjZVxuZXhwb3J0IGNsYXNzIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlPEQ+IGV4dGVuZHMgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2Fic29sdXRlU2hvcnREYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGU8RD4gZXh0ZW5kcyBCYXNlRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogRCB8IHN0cmluZywgY3VyclllYXI/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGUgPyB0aGlzLmZvcm1hdHRlci5hYnNvbHV0ZVNob3J0RGF0ZShkYXRlLCBjdXJyWWVhcikgOiAnJztcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdhYnNvbHV0ZVNob3J0RGF0ZUltcHVyZVBpcGUnLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtcGlwZS10cmFuc2Zvcm0taW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVEYXRlU2hvcnRGb3JtYXR0ZXJJbXB1cmVQaXBlPEQ+IGV4dGVuZHMgQWJzb2x1dGVEYXRlU2hvcnRGb3JtYXR0ZXJQaXBlPEQ+IHt9XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdhYnNvbHV0ZVNob3J0RGF0ZVRpbWUnXG59KVxuZXhwb3J0IGNsYXNzIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGU8RD4gZXh0ZW5kcyBCYXNlRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogRCB8IHN0cmluZywgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBkYXRlID8gdGhpcy5mb3JtYXR0ZXIuYWJzb2x1dGVTaG9ydERhdGVUaW1lKGRhdGUsIG9wdGlvbnMpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnYWJzb2x1dGVTaG9ydERhdGVUaW1lSW1wdXJlUGlwZScsXG4gICAgcHVyZTogZmFsc2Vcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3VzZS1waXBlLXRyYW5zZm9ybS1pbnRlcmZhY2VcbmV4cG9ydCBjbGFzcyBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlPEQ+IGV4dGVuZHMgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZTxEPiB7fVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncmVsYXRpdmVMb25nRGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVEYXRlRm9ybWF0dGVyUGlwZTxEPiBleHRlbmRzIEJhc2VGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBEIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGUgPyB0aGlzLmZvcm1hdHRlci5yZWxhdGl2ZUxvbmdEYXRlKGRhdGUpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncmVsYXRpdmVMb25nRGF0ZUltcHVyZVBpcGUnLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtcGlwZS10cmFuc2Zvcm0taW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZTxEPiBleHRlbmRzIFJlbGF0aXZlRGF0ZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JlbGF0aXZlTG9uZ0RhdGVUaW1lJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyUGlwZTxEPiBleHRlbmRzIEJhc2VGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBEIHwgc3RyaW5nLCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGRhdGUgPyB0aGlzLmZvcm1hdHRlci5yZWxhdGl2ZUxvbmdEYXRlVGltZShkYXRlLCBvcHRpb25zKSA6ICcnO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JlbGF0aXZlTG9uZ0RhdGVUaW1lSW1wdXJlUGlwZScsXG4gICAgcHVyZTogZmFsc2Vcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3VzZS1waXBlLXRyYW5zZm9ybS1pbnRlcmZhY2VcbmV4cG9ydCBjbGFzcyBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZTxEPiBleHRlbmRzIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlPEQ+IHt9XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdyZWxhdGl2ZVNob3J0RGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJQaXBlPEQ+IGV4dGVuZHMgQmFzZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZm9ybWF0dGVyLnJlbGF0aXZlU2hvcnREYXRlKGRhdGUpIDogJyc7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncmVsYXRpdmVTaG9ydERhdGVJbXB1cmVQaXBlJyxcbiAgICBwdXJlOiBmYWxzZVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdXNlLXBpcGUtdHJhbnNmb3JtLWludGVyZmFjZVxuZXhwb3J0IGNsYXNzIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZTxEPiBleHRlbmRzIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZTxEPiB7fVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncmVsYXRpdmVTaG9ydERhdGVUaW1lJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlPEQ+IGV4dGVuZHMgQmFzZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IEQgfCBzdHJpbmcsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gZGF0ZSA/IHRoaXMuZm9ybWF0dGVyLnJlbGF0aXZlU2hvcnREYXRlVGltZShkYXRlLCBvcHRpb25zKSA6ICcnO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JlbGF0aXZlU2hvcnREYXRlVGltZUltcHVyZVBpcGUnLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtcGlwZS10cmFuc2Zvcm0taW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZTxEPiBleHRlbmRzIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlTG9uZ0RhdGUnXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlRGF0ZUZvcm1hdHRlclBpcGU8RD4gZXh0ZW5kcyBCYXNlRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShbdmFsdWUxLCB2YWx1ZTJdOiBEW10gfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUxID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlMSk7XG4gICAgICAgIGNvbnN0IGRhdGUyID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlMik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLnJhbmdlTG9uZ0RhdGUoZGF0ZTEgYXMgRCwgZGF0ZTIgYXMgRCk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncmFuZ2VMb25nRGF0ZUltcHVyZVBpcGUnLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtcGlwZS10cmFuc2Zvcm0taW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgUmFuZ2VEYXRlRm9ybWF0dGVySW1wdXJlUGlwZTxEPiBleHRlbmRzIFJhbmdlRGF0ZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlU2hvcnREYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGU8RD4gZXh0ZW5kcyBCYXNlRm9ybWF0dGVyUGlwZTxEPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShbdmFsdWUxLCB2YWx1ZTJdOiBEW10gfCBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUxID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlMSk7XG4gICAgICAgIGNvbnN0IGRhdGUyID0gdGhpcy5hZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlMik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLnJhbmdlU2hvcnREYXRlKGRhdGUxIGFzIEQsIGRhdGUyIGFzIEQpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlU2hvcnREYXRlSW1wdXJlUGlwZScsXG4gICAgcHVyZTogZmFsc2Vcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3VzZS1waXBlLXRyYW5zZm9ybS1pbnRlcmZhY2VcbmV4cG9ydCBjbGFzcyBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGU8RD4gZXh0ZW5kcyBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlTG9uZ0RhdGVUaW1lJ1xufSlcbmV4cG9ydCBjbGFzcyBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZTxEPiBleHRlbmRzIEJhc2VGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKFt2YWx1ZTEsIHZhbHVlMl06IERbXSB8IHN0cmluZ1tdLCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZTEgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUxKTtcbiAgICAgICAgY29uc3QgZGF0ZTIgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXIucmFuZ2VMb25nRGF0ZVRpbWUoZGF0ZTEgYXMgRCwgZGF0ZTIgYXMgRCwgb3B0aW9ucyk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncmFuZ2VMb25nRGF0ZVRpbWVJbXB1cmVQaXBlJyxcbiAgICBwdXJlOiBmYWxzZVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdXNlLXBpcGUtdHJhbnNmb3JtLWludGVyZmFjZVxuZXhwb3J0IGNsYXNzIFJhbmdlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlPEQ+IGV4dGVuZHMgUmFuZ2VEYXRlVGltZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlTWlkZGxlRGF0ZVRpbWUnXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlTWlkZGxlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlPEQ+IGV4dGVuZHMgQmFzZUZvcm1hdHRlclBpcGU8RD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oW3ZhbHVlMSwgdmFsdWUyXTogRFtdIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlMSA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTEpO1xuICAgICAgICBjb25zdCBkYXRlMiA9IHRoaXMuYWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZTIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5yYW5nZU1pZGRsZURhdGVUaW1lKGRhdGUxIGFzIEQsIGRhdGUyIGFzIEQsIG9wdGlvbnMpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlTWlkZGxlRGF0ZVRpbWVJbXB1cmVQaXBlJyxcbiAgICBwdXJlOiBmYWxzZVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdXNlLXBpcGUtdHJhbnNmb3JtLWludGVyZmFjZVxuZXhwb3J0IGNsYXNzIFJhbmdlTWlkZGxlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlPEQ+IGV4dGVuZHMgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlclBpcGU8RD4ge31cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlU2hvcnREYXRlVGltZSdcbn0pXG5leHBvcnQgY2xhc3MgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZTxEPiBleHRlbmRzIEJhc2VGb3JtYXR0ZXJQaXBlPEQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKFt2YWx1ZTEsIHZhbHVlMl06IERbXSB8IHN0cmluZ1tdLCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0ZTEgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUxKTtcbiAgICAgICAgY29uc3QgZGF0ZTIgPSB0aGlzLmFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXIucmFuZ2VTaG9ydERhdGVUaW1lKGRhdGUxIGFzIEQsIGRhdGUyIGFzIEQsIG9wdGlvbnMpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3JhbmdlU2hvcnREYXRlVGltZUltcHVyZVBpcGUnLFxuICAgIHB1cmU6IGZhbHNlXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtcGlwZS10cmFuc2Zvcm0taW50ZXJmYWNlXG5leHBvcnQgY2xhc3MgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZTxEPiBleHRlbmRzIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGU8RD4ge31cbiJdfQ==