ngx-moment
Version:
Moment.JS pipes for Angular (timeago and more)
40 lines • 5.55 kB
JavaScript
import moment from 'moment';
import { Inject, Optional, Pipe } from '@angular/core';
import { NGX_MOMENT_OPTIONS } from './moment-options';
import * as i0 from "@angular/core";
export class DurationPipe {
constructor(momentOptions) {
this.allowedUnits = ['ss', 's', 'm', 'h', 'd', 'M'];
this._applyOptions(momentOptions);
}
transform(value, ...args) {
if (typeof args === 'undefined' || args.length !== 1) {
throw new Error('DurationPipe: missing required time unit argument');
}
return moment.duration(value, args[0]).humanize();
}
_applyOptions(momentOptions) {
if (!momentOptions) {
return;
}
if (!!momentOptions.relativeTimeThresholdOptions) {
const units = Object.keys(momentOptions.relativeTimeThresholdOptions);
const filteredUnits = units.filter((unit) => this.allowedUnits.indexOf(unit) !== -1);
filteredUnits.forEach((unit) => {
moment.relativeTimeThreshold(unit, momentOptions.relativeTimeThresholdOptions[unit]);
});
}
}
}
DurationPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: DurationPipe, deps: [{ token: NGX_MOMENT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
DurationPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: DurationPipe, name: "amDuration" });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: DurationPipe, decorators: [{
type: Pipe,
args: [{ name: 'amDuration' }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [NGX_MOMENT_OPTIONS]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kdXJhdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBb0QsYUFBZ0M7UUFGcEYsaUJBQVksR0FBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRzVELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUErQixFQUFFLEdBQUcsSUFBYztRQUMxRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDdEU7UUFDRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQTBDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RixDQUFDO0lBRU8sYUFBYSxDQUFDLGFBQStCO1FBQ25ELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLDRCQUE0QixFQUFFO1lBQ2hELE1BQU0sS0FBSyxHQUFrQixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ3JGLE1BQU0sYUFBYSxHQUFrQixLQUFLLENBQUMsTUFBTSxDQUMvQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2pELENBQUM7WUFDRixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O3lHQTVCVSxZQUFZLGtCQUdTLGtCQUFrQjt1R0FIdkMsWUFBWTsyRkFBWixZQUFZO2tCQUR4QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTs7MEJBSWIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IEluamVjdCwgT3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HWF9NT01FTlRfT1BUSU9OUywgTmd4TW9tZW50T3B0aW9ucyB9IGZyb20gJy4vbW9tZW50LW9wdGlvbnMnO1xuXG5AUGlwZSh7IG5hbWU6ICdhbUR1cmF0aW9uJyB9KVxuZXhwb3J0IGNsYXNzIER1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBhbGxvd2VkVW5pdHM6IEFycmF5PHN0cmluZz4gPSBbJ3NzJywgJ3MnLCAnbScsICdoJywgJ2QnLCAnTSddO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTkdYX01PTUVOVF9PUFRJT05TKSBtb21lbnRPcHRpb25zPzogTmd4TW9tZW50T3B0aW9ucykge1xuICAgIHRoaXMuX2FwcGx5T3B0aW9ucyhtb21lbnRPcHRpb25zKTtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogbW9tZW50LkR1cmF0aW9uSW5wdXRBcmcxLCAuLi5hcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAndW5kZWZpbmVkJyB8fCBhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEdXJhdGlvblBpcGU6IG1pc3NpbmcgcmVxdWlyZWQgdGltZSB1bml0IGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBtb21lbnQuZHVyYXRpb24odmFsdWUsIGFyZ3NbMF0gYXMgbW9tZW50LnVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3RvcikuaHVtYW5pemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3B0aW9ucyhtb21lbnRPcHRpb25zOiBOZ3hNb21lbnRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFtb21lbnRPcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEhbW9tZW50T3B0aW9ucy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGRPcHRpb25zKSB7XG4gICAgICBjb25zdCB1bml0czogQXJyYXk8c3RyaW5nPiA9IE9iamVjdC5rZXlzKG1vbWVudE9wdGlvbnMucmVsYXRpdmVUaW1lVGhyZXNob2xkT3B0aW9ucyk7XG4gICAgICBjb25zdCBmaWx0ZXJlZFVuaXRzOiBBcnJheTxzdHJpbmc+ID0gdW5pdHMuZmlsdGVyKFxuICAgICAgICAodW5pdCkgPT4gdGhpcy5hbGxvd2VkVW5pdHMuaW5kZXhPZih1bml0KSAhPT0gLTEsXG4gICAgICApO1xuICAgICAgZmlsdGVyZWRVbml0cy5mb3JFYWNoKCh1bml0KSA9PiB7XG4gICAgICAgIG1vbWVudC5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQodW5pdCwgbW9tZW50T3B0aW9ucy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGRPcHRpb25zW3VuaXRdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19