@sumaris-net/ngx-components 18.3.8 → 18.3.9

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.
package/doc/changelog.md CHANGED
@@ -1038,3 +1038,9 @@ enh: Environment: add useHash property to configure Angular router to use hash U
1038
1038
 
1039
1039
  # 12.3.0
1040
1040
  - fix(entity-editor) Fix page reload, when changing tab after the first save
1041
+
1042
+ # 12.3.9
1043
+ - fix(image-gallery) add a padding at bottom, for ios
1044
+ - enh(android) Upgrade compileSdkVersion to API 34 (required by the Google Play Store)
1045
+ - enh(theme) Add css class 'visible-xxs'
1046
+ - enh(dateDiffDuration) Add an option `opts.unit` to convert into a particular unit. If not defined, result will be like `x days HH:MM`
@@ -6,26 +6,27 @@ import * as i1 from "@angular/material/core";
6
6
  import * as i2 from "@ngx-translate/core";
7
7
  export class DateDiffDurationPipe {
8
8
  dateAdapter;
9
- translate;
10
9
  dayUnit;
11
10
  constructor(dateAdapter, translate) {
12
11
  this.dateAdapter = dateAdapter;
13
- this.translate = translate;
14
12
  this.dayUnit = translate.instant('COMMON.DAY_UNIT');
15
13
  translate.get('COMMON.DAY_UNIT').subscribe((dayUnit) => (this.dayUnit = dayUnit));
16
14
  }
17
- transform(value, args) {
15
+ transform(value, opts) {
18
16
  if (!value.startValue || !value.endValue)
19
17
  return '';
20
18
  const startDate = this.dateAdapter.parse(value.startValue, DATE_ISO_PATTERN);
21
19
  const endDate = this.dateAdapter.parse(value.endValue, DATE_ISO_PATTERN);
22
- return this.format(startDate, endDate, args);
20
+ return this.format(startDate, endDate, opts);
23
21
  }
24
- format(startDate, endDate, args) {
22
+ format(startDate, endDate, opts) {
25
23
  const duration = DateUtils.moment.duration(endDate.diff(startDate));
26
- if (duration.asMinutes() < 0)
24
+ // Convert to the expected unit, if any
25
+ if (opts?.unit)
26
+ return '' + duration.as(opts.unit);
27
+ const withSeconds = opts?.seconds;
28
+ if (!withSeconds && duration.asMinutes() < 0)
27
29
  return '';
28
- const withSeconds = args?.seconds;
29
30
  const timeDuration = DateUtils.moment(0).hour(duration.hours()).minute(duration.minutes());
30
31
  if (withSeconds) {
31
32
  timeDuration.second(duration.seconds());
@@ -46,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
46
47
  type: Injectable,
47
48
  args: [{ providedIn: 'root' }]
48
49
  }], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.TranslateService }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kaWZmLWR1cmF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFNckMsTUFBTSxPQUFPLG9CQUFvQjtJQUlyQjtJQUNBO0lBSkEsT0FBTyxDQUFTO0lBRTFCLFlBQ1UsV0FBZ0MsRUFDaEMsU0FBMkI7UUFEM0IsZ0JBQVcsR0FBWCxXQUFXLENBQXFCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBRW5DLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BELFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBaUUsRUFBRSxJQUE0QjtRQUN2RyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUV6RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLElBQTJCO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUVsQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0YsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1SCxDQUFDO3dHQWhDVSxvQkFBb0I7c0dBQXBCLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFKaEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsa0JBQWtCO2lCQUN6Qjs7a0JBQ0EsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERBVEVfSVNPX1BBVFRFUk4gfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVV0aWxzIH0gZnJvbSAnLi4vZGF0ZXMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdkYXRlRGlmZkR1cmF0aW9uJyxcbn0pXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERhdGVEaWZmRHVyYXRpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByb3RlY3RlZCBkYXlVbml0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8TW9tZW50PixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmRheVVuaXQgPSB0cmFuc2xhdGUuaW5zdGFudCgnQ09NTU9OLkRBWV9VTklUJyk7XG4gICAgdHJhbnNsYXRlLmdldCgnQ09NTU9OLkRBWV9VTklUJykuc3Vic2NyaWJlKChkYXlVbml0KSA9PiAodGhpcy5kYXlVbml0ID0gZGF5VW5pdCkpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiB7IHN0YXJ0VmFsdWU6IHN0cmluZyB8IE1vbWVudDsgZW5kVmFsdWU6IHN0cmluZyB8IE1vbWVudCB9LCBhcmdzPzogeyBzZWNvbmRzPzogYm9vbGVhbiB9KTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXZhbHVlLnN0YXJ0VmFsdWUgfHwgIXZhbHVlLmVuZFZhbHVlKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLnN0YXJ0VmFsdWUsIERBVEVfSVNPX1BBVFRFUk4pO1xuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLmVuZFZhbHVlLCBEQVRFX0lTT19QQVRURVJOKTtcblxuICAgIHJldHVybiB0aGlzLmZvcm1hdChzdGFydERhdGUsIGVuZERhdGUsIGFyZ3MpO1xuICB9XG5cbiAgZm9ybWF0KHN0YXJ0RGF0ZTogTW9tZW50LCBlbmREYXRlOiBNb21lbnQsIGFyZ3M6IHsgc2Vjb25kcz86IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50LmR1cmF0aW9uKGVuZERhdGUuZGlmZihzdGFydERhdGUpKTtcbiAgICBpZiAoZHVyYXRpb24uYXNNaW51dGVzKCkgPCAwKSByZXR1cm4gJyc7XG4gICAgY29uc3Qgd2l0aFNlY29uZHMgPSBhcmdzPy5zZWNvbmRzO1xuXG4gICAgY29uc3QgdGltZUR1cmF0aW9uID0gRGF0ZVV0aWxzLm1vbWVudCgwKS5ob3VyKGR1cmF0aW9uLmhvdXJzKCkpLm1pbnV0ZShkdXJhdGlvbi5taW51dGVzKCkpO1xuICAgIGlmICh3aXRoU2Vjb25kcykge1xuICAgICAgdGltZUR1cmF0aW9uLnNlY29uZChkdXJhdGlvbi5zZWNvbmRzKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGR1cmF0aW9uLmFzRGF5cygpKTtcbiAgICByZXR1cm4gKGRheXMgPiAwID8gZGF5cy50b1N0cmluZygpICsgKHRoaXMuZGF5VW5pdCArICcgJykgOiAnJykgKyB0aW1lRHVyYXRpb24uZm9ybWF0KHdpdGhTZWNvbmRzID8gJ0hIOm1tOnNzJyA6ICdISDptbScpO1xuICB9XG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kaWZmLWR1cmF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFPckMsTUFBTSxPQUFPLG9CQUFvQjtJQUlyQjtJQUhBLE9BQU8sQ0FBUztJQUUxQixZQUNVLFdBQWdDLEVBQ3hDLFNBQTJCO1FBRG5CLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUd4QyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsU0FBUyxDQUNQLEtBQWlFLEVBQ2pFLElBQW1EO1FBRW5ELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsSUFBa0Q7UUFDM0YsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXBFLHVDQUF1QztRQUN2QyxJQUFJLElBQUksRUFBRSxJQUFJO1lBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFeEQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUgsQ0FBQzt3R0F2Q1Usb0JBQW9CO3NHQUFwQixvQkFBb0I7NEdBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBSmhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGtCQUFrQjtpQkFDekI7O2tCQUNBLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEQVRFX0lTT19QQVRURVJOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERhdGVVdGlscyB9IGZyb20gJy4uL2RhdGVzJztcbmltcG9ydCB7IHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQvbW9tZW50JztcblxuQFBpcGUoe1xuICBuYW1lOiAnZGF0ZURpZmZEdXJhdGlvbicsXG59KVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEYXRlRGlmZkR1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgZGF5VW5pdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPE1vbWVudD4sXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZGF5VW5pdCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFZX1VOSVQnKTtcbiAgICB0cmFuc2xhdGUuZ2V0KCdDT01NT04uREFZX1VOSVQnKS5zdWJzY3JpYmUoKGRheVVuaXQpID0+ICh0aGlzLmRheVVuaXQgPSBkYXlVbml0KSk7XG4gIH1cblxuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHsgc3RhcnRWYWx1ZTogc3RyaW5nIHwgTW9tZW50OyBlbmRWYWx1ZTogc3RyaW5nIHwgTW9tZW50IH0sXG4gICAgb3B0cz86IHsgc2Vjb25kcz86IGJvb2xlYW47IHVuaXQ6IHVuaXRPZlRpbWUuQmFzZSB9XG4gICk6IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCF2YWx1ZS5zdGFydFZhbHVlIHx8ICF2YWx1ZS5lbmRWYWx1ZSkgcmV0dXJuICcnO1xuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZS5zdGFydFZhbHVlLCBEQVRFX0lTT19QQVRURVJOKTtcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZS5lbmRWYWx1ZSwgREFURV9JU09fUEFUVEVSTik7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXQoc3RhcnREYXRlLCBlbmREYXRlLCBvcHRzKTtcbiAgfVxuXG4gIGZvcm1hdChzdGFydERhdGU6IE1vbWVudCwgZW5kRGF0ZTogTW9tZW50LCBvcHRzOiB7IHNlY29uZHM/OiBib29sZWFuOyB1bml0OiB1bml0T2ZUaW1lLkJhc2UgfSk6IHN0cmluZyB7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50LmR1cmF0aW9uKGVuZERhdGUuZGlmZihzdGFydERhdGUpKTtcblxuICAgIC8vIENvbnZlcnQgdG8gdGhlIGV4cGVjdGVkIHVuaXQsIGlmIGFueVxuICAgIGlmIChvcHRzPy51bml0KSByZXR1cm4gJycgKyBkdXJhdGlvbi5hcyhvcHRzLnVuaXQpO1xuXG4gICAgY29uc3Qgd2l0aFNlY29uZHMgPSBvcHRzPy5zZWNvbmRzO1xuICAgIGlmICghd2l0aFNlY29uZHMgJiYgZHVyYXRpb24uYXNNaW51dGVzKCkgPCAwKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCB0aW1lRHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50KDApLmhvdXIoZHVyYXRpb24uaG91cnMoKSkubWludXRlKGR1cmF0aW9uLm1pbnV0ZXMoKSk7XG4gICAgaWYgKHdpdGhTZWNvbmRzKSB7XG4gICAgICB0aW1lRHVyYXRpb24uc2Vjb25kKGR1cmF0aW9uLnNlY29uZHMoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoZHVyYXRpb24uYXNEYXlzKCkpO1xuICAgIHJldHVybiAoZGF5cyA+IDAgPyBkYXlzLnRvU3RyaW5nKCkgKyAodGhpcy5kYXlVbml0ICsgJyAnKSA6ICcnKSArIHRpbWVEdXJhdGlvbi5mb3JtYXQod2l0aFNlY29uZHMgPyAnSEg6bW06c3MnIDogJ0hIOm1tJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,24 +1,31 @@
1
- import { Pipe, Injectable } from '@angular/core';
1
+ import { Injectable, Pipe } from '@angular/core';
2
2
  import { toDuration } from '../dates';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@ngx-translate/core";
5
5
  export class DurationPipe {
6
- translate;
7
6
  dayUnit;
8
7
  constructor(translate) {
9
- this.translate = translate;
10
8
  this.dayUnit = translate.instant('COMMON.DAY_UNIT');
11
9
  }
12
- transform(value, args) {
10
+ /**
11
+ * Format a diff between two dates.
12
+ *
13
+ * @param value
14
+ * @param opts
15
+ * @param opts.unit allow to convert into a particular unit. If not defined, result will be like `x days HH:MM`
16
+ * @param opts.seconds Should display or ignore the seconds ?
17
+ **/
18
+ transform(value, opts) {
13
19
  if (!value)
14
20
  return '';
15
- const unit = args?.unit || args || 'hours';
21
+ const unit = opts?.unit || opts || 'hours';
16
22
  // try with moment
17
23
  const duration = toDuration(value, unit);
18
24
  const days = duration.days();
19
- const hour = duration.hours().toString().padStart(2, '0');
20
- const minute = duration.minutes().toString().padStart(2, '0');
21
- return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
25
+ const hours = duration.hours().toString().padStart(2, '0');
26
+ const minutes = duration.minutes().toString().padStart(2, '0');
27
+ const seconds = opts?.seconds ? duration.seconds().toString().padStart(2, '0') : null;
28
+ return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hours + ':' + minutes + (seconds ? ':' + seconds : '');
22
29
  }
23
30
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
24
31
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, name: "duration" });
@@ -33,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
33
40
  type: Injectable,
34
41
  args: [{ providedIn: 'root' }]
35
42
  }], ctorParameters: () => [{ type: i1.TranslateService }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2R1cmF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQU90QyxNQUFNLE9BQU8sWUFBWTtJQUdIO0lBRlYsT0FBTyxDQUFTO0lBRTFCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLElBQTJDO1FBQ2xFLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDO1FBRTNDLGtCQUFrQjtRQUNsQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXpDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU5RCxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDeEYsQ0FBQzt3R0FuQlUsWUFBWTtzR0FBWixZQUFZOzRHQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFKeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakI7O2tCQUNBLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgSW5qZWN0YWJsZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgdG9EdXJhdGlvbiB9IGZyb20gJy4uL2RhdGVzJztcbmltcG9ydCB7IHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdkdXJhdGlvbicsXG59KVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEdXJhdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJvdGVjdGVkIGRheVVuaXQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMuZGF5VW5pdCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFZX1VOSVQnKTtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBhcmdzPzogdW5pdE9mVGltZS5EdXJhdGlvbkNvbnN0cnVjdG9yIHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgY29uc3QgdW5pdCA9IGFyZ3M/LnVuaXQgfHwgYXJncyB8fCAnaG91cnMnO1xuXG4gICAgLy8gdHJ5IHdpdGggbW9tZW50XG4gICAgY29uc3QgZHVyYXRpb24gPSB0b0R1cmF0aW9uKHZhbHVlLCB1bml0KTtcblxuICAgIGNvbnN0IGRheXMgPSBkdXJhdGlvbi5kYXlzKCk7XG4gICAgY29uc3QgaG91ciA9IGR1cmF0aW9uLmhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1pbnV0ZSA9IGR1cmF0aW9uLm1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG5cbiAgICByZXR1cm4gKGRheXMgPiAwID8gZGF5cy50b1N0cmluZygpICsgKHRoaXMuZGF5VW5pdCArICcgJykgOiAnJykgKyBob3VyICsgJzonICsgbWludXRlO1xuICB9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2R1cmF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQVF0QyxNQUFNLE9BQU8sWUFBWTtJQUNiLE9BQU8sQ0FBUztJQUUxQixZQUFZLFNBQTJCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7OztRQU9JO0lBQ0osU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUEwRztRQUNqSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFtQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUM7UUFFM0Usa0JBQWtCO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFdEYsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzSCxDQUFDO3dHQTVCVSxZQUFZO3NHQUFaLFlBQVk7NEdBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO2lCQUNqQjs7a0JBQ0EsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b0R1cmF0aW9uIH0gZnJvbSAnLi4vZGF0ZXMnO1xuaW1wb3J0IHsgdW5pdE9mVGltZSB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2R1cmF0aW9uJyxcbn0pXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIER1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgZGF5VW5pdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMuZGF5VW5pdCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFZX1VOSVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYSBkaWZmIGJldHdlZW4gdHdvIGRhdGVzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIG9wdHNcbiAgICogQHBhcmFtIG9wdHMudW5pdCBhbGxvdyB0byBjb252ZXJ0IGludG8gYSBwYXJ0aWN1bGFyIHVuaXQuIElmIG5vdCBkZWZpbmVkLCByZXN1bHQgd2lsbCBiZSBsaWtlIGB4IGRheXMgSEg6TU1gXG4gICAqIEBwYXJhbSBvcHRzLnNlY29uZHMgU2hvdWxkIGRpc3BsYXkgb3IgaWdub3JlIHRoZSBzZWNvbmRzID9cbiAgICoqL1xuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciwgb3B0cz86IHVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3RvciB8IHsgdW5pdD86IHVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3Rvcjsgc2Vjb25kcz86IGJvb2xlYW4gfSB8IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHVuaXQ6IHVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3RvciA9IG9wdHM/LnVuaXQgfHwgb3B0cyB8fCAnaG91cnMnO1xuXG4gICAgLy8gdHJ5IHdpdGggbW9tZW50XG4gICAgY29uc3QgZHVyYXRpb24gPSB0b0R1cmF0aW9uKHZhbHVlLCB1bml0KTtcblxuICAgIGNvbnN0IGRheXMgPSBkdXJhdGlvbi5kYXlzKCk7XG4gICAgY29uc3QgaG91cnMgPSBkdXJhdGlvbi5ob3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtaW51dGVzID0gZHVyYXRpb24ubWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBzZWNvbmRzID0gb3B0cz8uc2Vjb25kcyA/IGR1cmF0aW9uLnNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJykgOiBudWxsO1xuXG4gICAgcmV0dXJuIChkYXlzID4gMCA/IGRheXMudG9TdHJpbmcoKSArICh0aGlzLmRheVVuaXQgKyAnICcpIDogJycpICsgaG91cnMgKyAnOicgKyBtaW51dGVzICsgKHNlY29uZHMgPyAnOicgKyBzZWNvbmRzIDogJycpO1xuICB9XG59XG4iXX0=
@@ -1197,26 +1197,27 @@ function toDuration(value, unit) {
1197
1197
 
1198
1198
  class DateDiffDurationPipe {
1199
1199
  dateAdapter;
1200
- translate;
1201
1200
  dayUnit;
1202
1201
  constructor(dateAdapter, translate) {
1203
1202
  this.dateAdapter = dateAdapter;
1204
- this.translate = translate;
1205
1203
  this.dayUnit = translate.instant('COMMON.DAY_UNIT');
1206
1204
  translate.get('COMMON.DAY_UNIT').subscribe((dayUnit) => (this.dayUnit = dayUnit));
1207
1205
  }
1208
- transform(value, args) {
1206
+ transform(value, opts) {
1209
1207
  if (!value.startValue || !value.endValue)
1210
1208
  return '';
1211
1209
  const startDate = this.dateAdapter.parse(value.startValue, DATE_ISO_PATTERN);
1212
1210
  const endDate = this.dateAdapter.parse(value.endValue, DATE_ISO_PATTERN);
1213
- return this.format(startDate, endDate, args);
1211
+ return this.format(startDate, endDate, opts);
1214
1212
  }
1215
- format(startDate, endDate, args) {
1213
+ format(startDate, endDate, opts) {
1216
1214
  const duration = DateUtils.moment.duration(endDate.diff(startDate));
1217
- if (duration.asMinutes() < 0)
1215
+ // Convert to the expected unit, if any
1216
+ if (opts?.unit)
1217
+ return '' + duration.as(opts.unit);
1218
+ const withSeconds = opts?.seconds;
1219
+ if (!withSeconds && duration.asMinutes() < 0)
1218
1220
  return '';
1219
- const withSeconds = args?.seconds;
1220
1221
  const timeDuration = DateUtils.moment(0).hour(duration.hours()).minute(duration.minutes());
1221
1222
  if (withSeconds) {
1222
1223
  timeDuration.second(duration.seconds());
@@ -2005,22 +2006,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
2005
2006
  }] });
2006
2007
 
2007
2008
  class DurationPipe {
2008
- translate;
2009
2009
  dayUnit;
2010
2010
  constructor(translate) {
2011
- this.translate = translate;
2012
2011
  this.dayUnit = translate.instant('COMMON.DAY_UNIT');
2013
2012
  }
2014
- transform(value, args) {
2013
+ /**
2014
+ * Format a diff between two dates.
2015
+ *
2016
+ * @param value
2017
+ * @param opts
2018
+ * @param opts.unit allow to convert into a particular unit. If not defined, result will be like `x days HH:MM`
2019
+ * @param opts.seconds Should display or ignore the seconds ?
2020
+ **/
2021
+ transform(value, opts) {
2015
2022
  if (!value)
2016
2023
  return '';
2017
- const unit = args?.unit || args || 'hours';
2024
+ const unit = opts?.unit || opts || 'hours';
2018
2025
  // try with moment
2019
2026
  const duration = toDuration(value, unit);
2020
2027
  const days = duration.days();
2021
- const hour = duration.hours().toString().padStart(2, '0');
2022
- const minute = duration.minutes().toString().padStart(2, '0');
2023
- return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2028
+ const hours = duration.hours().toString().padStart(2, '0');
2029
+ const minutes = duration.minutes().toString().padStart(2, '0');
2030
+ const seconds = opts?.seconds ? duration.seconds().toString().padStart(2, '0') : null;
2031
+ return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hours + ':' + minutes + (seconds ? ':' + seconds : '');
2024
2032
  }
2025
2033
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
2026
2034
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, name: "duration" });