@endesyc/format 1.0.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.
Binary file
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kZXN5Yy1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9mb3JtYXQtbGlicmFyeS9zcmMvZW5kZXN5Yy1mb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Pipe } from "@angular/core";
2
+ import { DateUtil } from "./date.util";
3
+ import * as i0 from "@angular/core";
4
+ export class CompanyDatePipe {
5
+ transform(v, t = "dateTime", f = "-") {
6
+ switch (t) {
7
+ case "date":
8
+ return DateUtil.formatDate(v, f);
9
+ case "time":
10
+ return DateUtil.formatTime(v, f);
11
+ case "dateTimeSeconds":
12
+ return DateUtil.formatDateTimeWithSeconds(v, f);
13
+ case "monthYear":
14
+ return DateUtil.formatMonthYear(v, f);
15
+ case "year":
16
+ return DateUtil.formatYear(v, f);
17
+ default:
18
+ return DateUtil.formatDateTime(v, f);
19
+ }
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
22
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CompanyDatePipe, isStandalone: true, name: "companyDate" }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyDatePipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{ name: "companyDate", standalone: true, pure: true }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1kYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtYXQtbGlicmFyeS9zcmMvbGliL2RhdGVzL2NvbXBhbnktZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRXZDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFNBQVMsQ0FBQyxDQUFZLEVBQUUsSUFBdUIsVUFBVSxFQUFFLENBQUMsR0FBRyxHQUFHO1FBQ2hFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDVixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxLQUFLLGlCQUFpQjtnQkFDcEIsT0FBTyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELEtBQUssV0FBVztnQkFDZCxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLEtBQUssTUFBTTtnQkFDVCxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25DO2dCQUNFLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7K0dBaEJVLGVBQWU7NkdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERhdGVEaXNwbGF5Rm9ybWF0IH0gZnJvbSBcIi4vZGF0ZS1kaXNwbGF5LWZvcm1hdFwiO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9kYXRlLWlucHV0XCI7XHJcbmltcG9ydCB7IERhdGVVdGlsIH0gZnJvbSBcIi4vZGF0ZS51dGlsXCI7XHJcbkBQaXBlKHsgbmFtZTogXCJjb21wYW55RGF0ZVwiLCBzdGFuZGFsb25lOiB0cnVlLCBwdXJlOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBDb21wYW55RGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odjogRGF0ZUlucHV0LCB0OiBEYXRlRGlzcGxheUZvcm1hdCA9IFwiZGF0ZVRpbWVcIiwgZiA9IFwiLVwiKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodCkge1xyXG4gICAgICBjYXNlIFwiZGF0ZVwiOlxyXG4gICAgICAgIHJldHVybiBEYXRlVXRpbC5mb3JtYXREYXRlKHYsIGYpO1xyXG4gICAgICBjYXNlIFwidGltZVwiOlxyXG4gICAgICAgIHJldHVybiBEYXRlVXRpbC5mb3JtYXRUaW1lKHYsIGYpO1xyXG4gICAgICBjYXNlIFwiZGF0ZVRpbWVTZWNvbmRzXCI6XHJcbiAgICAgICAgcmV0dXJuIERhdGVVdGlsLmZvcm1hdERhdGVUaW1lV2l0aFNlY29uZHModiwgZik7XHJcbiAgICAgIGNhc2UgXCJtb250aFllYXJcIjpcclxuICAgICAgICByZXR1cm4gRGF0ZVV0aWwuZm9ybWF0TW9udGhZZWFyKHYsIGYpO1xyXG4gICAgICBjYXNlIFwieWVhclwiOlxyXG4gICAgICAgIHJldHVybiBEYXRlVXRpbC5mb3JtYXRZZWFyKHYsIGYpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBEYXRlVXRpbC5mb3JtYXREYXRlVGltZSh2LCBmKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kaXNwbGF5LWZvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1hdC1saWJyYXJ5L3NyYy9saWIvZGF0ZXMvZGF0ZS1kaXNwbGF5LWZvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRGF0ZURpc3BsYXlGb3JtYXQgPVxyXG4gIHwgXCJkYXRlXCJcclxuICB8IFwidGltZVwiXHJcbiAgfCBcImRhdGVUaW1lXCJcclxuICB8IFwiZGF0ZVRpbWVTZWNvbmRzXCJcclxuICB8IFwibW9udGhZZWFyXCJcclxuICB8IFwieWVhclwiO1xyXG4iXX0=
@@ -0,0 +1,10 @@
1
+ export class DateFormats {
2
+ constructor() { }
3
+ static { this.DATE = "DD/MM/YYYY"; }
4
+ static { this.TIME = "HH:mm"; }
5
+ static { this.DATE_TIME = "DD/MM/YYYY HH:mm"; }
6
+ static { this.DATE_TIME_SECONDS = "DD/MM/YYYY HH:mm:ss"; }
7
+ static { this.MONTH_YEAR = "MM/YYYY"; }
8
+ static { this.YEAR = "YYYY"; }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybWF0LWxpYnJhcnkvc3JjL2xpYi9kYXRlcy9kYXRlLWZvcm1hdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFDdEIsZ0JBQXVCLENBQUM7YUFDUixTQUFJLEdBQUcsWUFBWSxDQUFDO2FBQ3BCLFNBQUksR0FBRyxPQUFPLENBQUM7YUFDZixjQUFTLEdBQUcsa0JBQWtCLENBQUM7YUFDL0Isc0JBQWlCLEdBQUcscUJBQXFCLENBQUM7YUFDMUMsZUFBVSxHQUFHLFNBQVMsQ0FBQzthQUN2QixTQUFJLEdBQUcsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERhdGVGb3JtYXRzIHtcclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cclxuICBzdGF0aWMgcmVhZG9ubHkgREFURSA9IFwiREQvTU0vWVlZWVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBUSU1FID0gXCJISDptbVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBEQVRFX1RJTUUgPSBcIkREL01NL1lZWVkgSEg6bW1cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgREFURV9USU1FX1NFQ09ORFMgPSBcIkREL01NL1lZWVkgSEg6bW06c3NcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTU9OVEhfWUVBUiA9IFwiTU0vWVlZWVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBZRUFSID0gXCJZWVlZXCI7XHJcbi8vICAgc3RhdGljIHJlYWRvbmx5IEFQSV9EQVRFID0gXCJZWVlZLU1NLUREXCI7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1hdC1saWJyYXJ5L3NyYy9saWIvZGF0ZXMvZGF0ZS1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7IGV4cG9ydCB0eXBlIERhdGVJbnB1dD1zdHJpbmd8bnVtYmVyfERhdGV8RGF5anN8bnVsbHx1bmRlZmluZWQ7Il19
@@ -0,0 +1,63 @@
1
+ import dayjs from "dayjs";
2
+ import customParseFormat from "dayjs/plugin/customParseFormat";
3
+ import { DateFormats } from "./date-formats";
4
+ dayjs.extend(customParseFormat);
5
+ export class DateUtil {
6
+ constructor() { }
7
+ static { this.FORMATS = [
8
+ "YYYY-MM-DD HH:mm:ss.SSS",
9
+ "YYYY-MM-DD HH:mm:ss",
10
+ "YYYY-MM-DD",
11
+ ]; }
12
+ static formatDate(v, f = "-") {
13
+ return this.format(v, DateFormats.DATE, f);
14
+ }
15
+ static formatTime(v, f = "-") {
16
+ return this.format(v, DateFormats.TIME, f);
17
+ }
18
+ static formatDateTime(v, f = "-") {
19
+ return this.format(v, DateFormats.DATE_TIME, f);
20
+ }
21
+ static formatDateTimeWithSeconds(v, f = "-") {
22
+ return this.format(v, DateFormats.DATE_TIME_SECONDS, f);
23
+ }
24
+ static formatMonthYear(v, f = "-") {
25
+ return this.format(v, DateFormats.MONTH_YEAR, f);
26
+ }
27
+ static formatYear(v, f = "-") {
28
+ return this.format(v, DateFormats.YEAR, f);
29
+ }
30
+ static format(v, o, f = "-") {
31
+ const d = this.parse(v);
32
+ return d ? d.format(o) : f;
33
+ }
34
+ static isValid(v) {
35
+ return this.parse(v) !== null;
36
+ }
37
+ static parse(v) {
38
+ if (v === null || v === undefined || v === "")
39
+ return null;
40
+ if (dayjs.isDayjs(v))
41
+ return v.isValid() ? v.clone() : null;
42
+ if (v instanceof Date || typeof v === "number") {
43
+ const d = dayjs(v);
44
+ return d.isValid() ? d : null;
45
+ }
46
+ if (typeof v !== "string")
47
+ return null;
48
+ const s = v.trim();
49
+ if (!s)
50
+ return null;
51
+ for (const fmt of this.FORMATS) {
52
+ const d = dayjs(s, fmt, true);
53
+ if (d.isValid())
54
+ return d;
55
+ }
56
+ const iso = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;
57
+ if (!iso.test(s))
58
+ return null;
59
+ const d = dayjs(s);
60
+ return d.isValid() ? d : null;
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybWF0LWxpYnJhcnkvc3JjL2xpYi9kYXRlcy9kYXRlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFnQixNQUFNLE9BQU8sQ0FBQztBQUNyQyxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEMsTUFBTSxPQUFPLFFBQVE7SUFDbkIsZ0JBQXVCLENBQUM7YUFDQSxZQUFPLEdBQUc7UUFDaEMseUJBQXlCO1FBQ3pCLHFCQUFxQjtRQUNyQixZQUFZO0tBQ0osQ0FBQztJQUNYLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBWSxFQUFFLENBQUMsR0FBRyxHQUFHO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFZLEVBQUUsQ0FBQyxHQUFHLEdBQUc7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLENBQVksRUFBRSxDQUFDLEdBQUcsR0FBRztRQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFZLEVBQUUsQ0FBQyxHQUFHLEdBQUc7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBWSxFQUFFLENBQUMsR0FBRyxHQUFHO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFZLEVBQUUsQ0FBQyxHQUFHLEdBQUc7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQVksRUFBRSxDQUFTLEVBQUUsQ0FBQyxHQUFHLEdBQUc7UUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ08sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFZO1FBQy9CLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1RCxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FDUCwwRUFBMEUsQ0FBQztRQUM3RSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM5QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGF5anMsIHsgRGF5anMgfSBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gXCJkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXRcIjtcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdHMgfSBmcm9tIFwiLi9kYXRlLWZvcm1hdHNcIjtcclxuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSBcIi4vZGF0ZS1pbnB1dFwiO1xyXG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xyXG5leHBvcnQgY2xhc3MgRGF0ZVV0aWwge1xyXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZPUk1BVFMgPSBbXHJcbiAgICBcIllZWVktTU0tREQgSEg6bW06c3MuU1NTXCIsXHJcbiAgICBcIllZWVktTU0tREQgSEg6bW06c3NcIixcclxuICAgIFwiWVlZWS1NTS1ERFwiLFxyXG4gIF0gYXMgY29uc3Q7XHJcbiAgc3RhdGljIGZvcm1hdERhdGUodjogRGF0ZUlucHV0LCBmID0gXCItXCIpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2LCBEYXRlRm9ybWF0cy5EQVRFLCBmKTtcclxuICB9XHJcbiAgc3RhdGljIGZvcm1hdFRpbWUodjogRGF0ZUlucHV0LCBmID0gXCItXCIpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2LCBEYXRlRm9ybWF0cy5USU1FLCBmKTtcclxuICB9XHJcbiAgc3RhdGljIGZvcm1hdERhdGVUaW1lKHY6IERhdGVJbnB1dCwgZiA9IFwiLVwiKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodiwgRGF0ZUZvcm1hdHMuREFURV9USU1FLCBmKTtcclxuICB9XHJcbiAgc3RhdGljIGZvcm1hdERhdGVUaW1lV2l0aFNlY29uZHModjogRGF0ZUlucHV0LCBmID0gXCItXCIpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2LCBEYXRlRm9ybWF0cy5EQVRFX1RJTUVfU0VDT05EUywgZik7XHJcbiAgfVxyXG4gIHN0YXRpYyBmb3JtYXRNb250aFllYXIodjogRGF0ZUlucHV0LCBmID0gXCItXCIpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2LCBEYXRlRm9ybWF0cy5NT05USF9ZRUFSLCBmKTtcclxuICB9XHJcbiAgc3RhdGljIGZvcm1hdFllYXIodjogRGF0ZUlucHV0LCBmID0gXCItXCIpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2LCBEYXRlRm9ybWF0cy5ZRUFSLCBmKTtcclxuICB9XHJcbiAgc3RhdGljIGZvcm1hdCh2OiBEYXRlSW5wdXQsIG86IHN0cmluZywgZiA9IFwiLVwiKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5wYXJzZSh2KTtcclxuICAgIHJldHVybiBkID8gZC5mb3JtYXQobykgOiBmO1xyXG4gIH1cclxuICBzdGF0aWMgaXNWYWxpZCh2OiBEYXRlSW5wdXQpIHtcclxuICAgIHJldHVybiB0aGlzLnBhcnNlKHYpICE9PSBudWxsO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBwYXJzZSh2OiBEYXRlSW5wdXQpOiBEYXlqcyB8IG51bGwge1xyXG4gICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IFwiXCIpIHJldHVybiBudWxsO1xyXG4gICAgaWYgKGRheWpzLmlzRGF5anModikpIHJldHVybiB2LmlzVmFsaWQoKSA/IHYuY2xvbmUoKSA6IG51bGw7XHJcbiAgICBpZiAodiBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgY29uc3QgZCA9IGRheWpzKHYpO1xyXG4gICAgICByZXR1cm4gZC5pc1ZhbGlkKCkgPyBkIDogbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdiAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBzID0gdi50cmltKCk7XHJcbiAgICBpZiAoIXMpIHJldHVybiBudWxsO1xyXG4gICAgZm9yIChjb25zdCBmbXQgb2YgdGhpcy5GT1JNQVRTKSB7XHJcbiAgICAgIGNvbnN0IGQgPSBkYXlqcyhzLCBmbXQsIHRydWUpO1xyXG4gICAgICBpZiAoZC5pc1ZhbGlkKCkpIHJldHVybiBkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNvID1cclxuICAgICAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZHsxLDl9KT8oPzpafFsrLV1cXGR7Mn06XFxkezJ9KSQvO1xyXG4gICAgaWYgKCFpc28udGVzdChzKSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBkID0gZGF5anMocyk7XHJcbiAgICByZXR1cm4gZC5pc1ZhbGlkKCkgPyBkIDogbnVsbDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,13 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { MoneyUtil } from './money.util';
3
+ import * as i0 from "@angular/core";
4
+ export class CompanyMoneyPipe {
5
+ transform(v, o = {}) { return MoneyUtil.formatBolivianos(v, o); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyMoneyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
7
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CompanyMoneyPipe, isStandalone: true, name: "companyMoney" }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyMoneyPipe, decorators: [{
10
+ type: Pipe,
11
+ args: [{ name: 'companyMoney', standalone: true, pure: true }]
12
+ }] });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1tb25leS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybWF0LWxpYnJhcnkvc3JjL2xpYi9tb25leS9jb21wYW55LW1vbmV5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUFzRyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDOztBQUF3RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQTRCLFNBQVMsQ0FBQyxDQUFZLEVBQUMsSUFBcUIsRUFBRSxJQUFTLE9BQU8sU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUM7K0dBQTFJLGdCQUFnQjs2R0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUFuRixJQUFJO21CQUFDLEVBQUMsSUFBSSxFQUFDLGNBQWMsRUFBQyxVQUFVLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7IGltcG9ydCB7TW9uZXlGb3JtYXRPcHRpb25zfSBmcm9tICcuL21vbmV5LWZvcm1hdC1vcHRpb25zJzsgaW1wb3J0IHtNb25leUlucHV0fSBmcm9tICcuL21vbmV5LWlucHV0JzsgaW1wb3J0IHtNb25leVV0aWx9IGZyb20gJy4vbW9uZXkudXRpbCc7IEBQaXBlKHtuYW1lOidjb21wYW55TW9uZXknLHN0YW5kYWxvbmU6dHJ1ZSxwdXJlOnRydWV9KSBleHBvcnQgY2xhc3MgQ29tcGFueU1vbmV5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0geyB0cmFuc2Zvcm0odjpNb25leUlucHV0LG86TW9uZXlGb3JtYXRPcHRpb25zPXt9KTpzdHJpbmd7cmV0dXJuIE1vbmV5VXRpbC5mb3JtYXRCb2xpdmlhbm9zKHYsbyl9IH0iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXktZm9ybWF0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtYXQtbGlicmFyeS9zcmMvbGliL21vbmV5L21vbmV5LWZvcm1hdC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIE1vbmV5Rm9ybWF0T3B0aW9ucyB7XHJcbiAgc3ltYm9sPzogc3RyaW5nO1xyXG4gIG1pbmltdW1GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcclxuICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XHJcbiAgc2hvd1N5bWJvbD86IGJvb2xlYW47XHJcbiAgc3ltYm9sUG9zaXRpb24/OiBcImJlZm9yZVwiIHwgXCJhZnRlclwiO1xyXG4gIGZhbGxiYWNrPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export class MoneyFormats {
2
+ constructor() { }
3
+ static { this.DEFAULT_LOCALE = "es-BO"; }
4
+ static { this.DEFAULT_CURRENCY = "BOB"; }
5
+ static { this.DEFAULT_SYMBOL = "Bs"; }
6
+ static { this.DEFAULT_DECIMALS = 2; }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXktZm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1hdC1saWJyYXJ5L3NyYy9saWIvbW9uZXkvbW9uZXktZm9ybWF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtJQUN2QixnQkFBdUIsQ0FBQzthQUNSLG1CQUFjLEdBQUcsT0FBTyxDQUFDO2FBQ3pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQzthQUN6QixtQkFBYyxHQUFHLElBQUksQ0FBQzthQUN0QixxQkFBZ0IsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTW9uZXlGb3JtYXRzIHtcclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cclxuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT0NBTEUgPSBcImVzLUJPXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ1VSUkVOQ1kgPSBcIkJPQlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1NZTUJPTCA9IFwiQnNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ERUNJTUFMUyA9IDI7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXktaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtYXQtbGlicmFyeS9zcmMvbGliL21vbmV5L21vbmV5LWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBNb25leUlucHV0ID0gbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuIl19
@@ -0,0 +1,58 @@
1
+ import { MoneyFormats } from "./money-formats";
2
+ export class MoneyUtil {
3
+ constructor() { }
4
+ static formatBolivianos(v, o = {}) {
5
+ const n = this.parse(v);
6
+ if (n === null)
7
+ return o.fallback ?? "-";
8
+ const min = o.minimumFractionDigits ?? 2, max = o.maximumFractionDigits ?? 2;
9
+ const amount = new Intl.NumberFormat(MoneyFormats.DEFAULT_LOCALE, {
10
+ style: "decimal",
11
+ useGrouping: true,
12
+ minimumFractionDigits: min,
13
+ maximumFractionDigits: max,
14
+ }).format(n);
15
+ if (!(o.showSymbol ?? true))
16
+ return amount;
17
+ const s = o.symbol ?? MoneyFormats.DEFAULT_SYMBOL;
18
+ return o.symbolPosition === "after" ? `${amount} ${s}` : `${s} ${amount}`;
19
+ }
20
+ static formatNumber(v, min = 2, max = 2, f = "-") {
21
+ return this.formatBolivianos(v, {
22
+ showSymbol: false,
23
+ minimumFractionDigits: min,
24
+ maximumFractionDigits: max,
25
+ fallback: f,
26
+ });
27
+ }
28
+ static isValid(v) {
29
+ return this.parse(v) !== null;
30
+ }
31
+ static toNumber(v) {
32
+ return this.parse(v);
33
+ }
34
+ static parse(v) {
35
+ if (v === null || v === undefined || v === "")
36
+ return null;
37
+ if (typeof v === "number")
38
+ return Number.isFinite(v) ? v : null;
39
+ const s = v
40
+ .trim()
41
+ .replace(/\s/g, "")
42
+ .replace(/^Bs\.?/i, "");
43
+ if (!s)
44
+ return null;
45
+ let n;
46
+ if (s.includes(",") && s.includes("."))
47
+ n = s.replace(/\./g, "").replace(",", ".");
48
+ else if (s.includes(","))
49
+ n = s.replace(",", ".");
50
+ else
51
+ n = s;
52
+ if (!/^-?\d+(?:\.\d+)?$/.test(n))
53
+ return null;
54
+ const x = Number(n);
55
+ return Number.isFinite(x) ? x : null;
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXkudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1hdC1saWJyYXJ5L3NyYy9saWIvbW9uZXkvbW9uZXkudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsTUFBTSxPQUFPLFNBQVM7SUFDcEIsZ0JBQXVCLENBQUM7SUFDeEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQWEsRUFBRSxJQUF3QixFQUFFO1FBQy9ELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssSUFBSTtZQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixJQUFJLENBQUMsRUFDdEMsR0FBRyxHQUFHLENBQUMsQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUU7WUFDaEUsS0FBSyxFQUFFLFNBQVM7WUFDaEIsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsR0FBRztZQUMxQixxQkFBcUIsRUFBRSxHQUFHO1NBQzNCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUNsRCxPQUFPLENBQUMsQ0FBQyxjQUFjLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBYSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRztRQUMxRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsVUFBVSxFQUFFLEtBQUs7WUFDakIscUJBQXFCLEVBQUUsR0FBRztZQUMxQixxQkFBcUIsRUFBRSxHQUFHO1lBQzFCLFFBQVEsRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBYTtRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQWE7UUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQWE7UUFDaEMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDUixJQUFJLEVBQUU7YUFDTixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzthQUNsQixPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFTLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDcEMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDeEMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQzs7WUFDN0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9uZXlGb3JtYXRPcHRpb25zIH0gZnJvbSBcIi4vbW9uZXktZm9ybWF0LW9wdGlvbnNcIjtcclxuaW1wb3J0IHsgTW9uZXlGb3JtYXRzIH0gZnJvbSBcIi4vbW9uZXktZm9ybWF0c1wiO1xyXG5pbXBvcnQgeyBNb25leUlucHV0IH0gZnJvbSBcIi4vbW9uZXktaW5wdXRcIjtcclxuZXhwb3J0IGNsYXNzIE1vbmV5VXRpbCB7XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XHJcbiAgc3RhdGljIGZvcm1hdEJvbGl2aWFub3ModjogTW9uZXlJbnB1dCwgbzogTW9uZXlGb3JtYXRPcHRpb25zID0ge30pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbiA9IHRoaXMucGFyc2Uodik7XHJcbiAgICBpZiAobiA9PT0gbnVsbCkgcmV0dXJuIG8uZmFsbGJhY2sgPz8gXCItXCI7XHJcbiAgICBjb25zdCBtaW4gPSBvLm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA/PyAyLFxyXG4gICAgICBtYXggPSBvLm1heGltdW1GcmFjdGlvbkRpZ2l0cyA/PyAyO1xyXG4gICAgY29uc3QgYW1vdW50ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KE1vbmV5Rm9ybWF0cy5ERUZBVUxUX0xPQ0FMRSwge1xyXG4gICAgICBzdHlsZTogXCJkZWNpbWFsXCIsXHJcbiAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbixcclxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXgsXHJcbiAgICB9KS5mb3JtYXQobik7XHJcbiAgICBpZiAoIShvLnNob3dTeW1ib2wgPz8gdHJ1ZSkpIHJldHVybiBhbW91bnQ7XHJcbiAgICBjb25zdCBzID0gby5zeW1ib2wgPz8gTW9uZXlGb3JtYXRzLkRFRkFVTFRfU1lNQk9MO1xyXG4gICAgcmV0dXJuIG8uc3ltYm9sUG9zaXRpb24gPT09IFwiYWZ0ZXJcIiA/IGAke2Ftb3VudH0gJHtzfWAgOiBgJHtzfSAke2Ftb3VudH1gO1xyXG4gIH1cclxuICBzdGF0aWMgZm9ybWF0TnVtYmVyKHY6IE1vbmV5SW5wdXQsIG1pbiA9IDIsIG1heCA9IDIsIGYgPSBcIi1cIikge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0Qm9saXZpYW5vcyh2LCB7XHJcbiAgICAgIHNob3dTeW1ib2w6IGZhbHNlLFxyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbixcclxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXgsXHJcbiAgICAgIGZhbGxiYWNrOiBmLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBpc1ZhbGlkKHY6IE1vbmV5SW5wdXQpIHtcclxuICAgIHJldHVybiB0aGlzLnBhcnNlKHYpICE9PSBudWxsO1xyXG4gIH1cclxuICBzdGF0aWMgdG9OdW1iZXIodjogTW9uZXlJbnB1dCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyc2Uodik7XHJcbiAgfVxyXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlKHY6IE1vbmV5SW5wdXQpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBcIlwiKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2KSA/IHYgOiBudWxsO1xyXG4gICAgY29uc3QgcyA9IHZcclxuICAgICAgLnRyaW0oKVxyXG4gICAgICAucmVwbGFjZSgvXFxzL2csIFwiXCIpXHJcbiAgICAgIC5yZXBsYWNlKC9eQnNcXC4/L2ksIFwiXCIpO1xyXG4gICAgaWYgKCFzKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBuOiBzdHJpbmc7XHJcbiAgICBpZiAocy5pbmNsdWRlcyhcIixcIikgJiYgcy5pbmNsdWRlcyhcIi5cIikpXHJcbiAgICAgIG4gPSBzLnJlcGxhY2UoL1xcLi9nLCBcIlwiKS5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XHJcbiAgICBlbHNlIGlmIChzLmluY2x1ZGVzKFwiLFwiKSkgbiA9IHMucmVwbGFjZShcIixcIiwgXCIuXCIpO1xyXG4gICAgZWxzZSBuID0gcztcclxuICAgIGlmICghL14tP1xcZCsoPzpcXC5cXGQrKT8kLy50ZXN0KG4pKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHggPSBOdW1iZXIobik7XHJcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHgpID8geCA6IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export * from './lib/dates/date-formats';
2
+ export * from './lib/dates/date-display-format';
3
+ export * from './lib/dates/date-input';
4
+ export * from './lib/dates/date.util';
5
+ export * from './lib/dates/company-date.pipe';
6
+ export * from './lib/money/money-formats';
7
+ export * from './lib/money/money-input';
8
+ export * from './lib/money/money-format-options';
9
+ export * from './lib/money/money.util';
10
+ export * from './lib/money/company-money.pipe';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Zvcm1hdC1saWJyYXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlcy9kYXRlLWZvcm1hdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZXMvZGF0ZS1kaXNwbGF5LWZvcm1hdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlcy9kYXRlLWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGVzL2RhdGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlcy9jb21wYW55LWRhdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb25leS9tb25leS1mb3JtYXRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vbmV5L21vbmV5LWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vbmV5L21vbmV5LWZvcm1hdC1vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vbmV5L21vbmV5LnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9uZXkvY29tcGFueS1tb25leS5waXBlJztcbiJdfQ==
@@ -0,0 +1,181 @@
1
+ import dayjs from 'dayjs';
2
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
3
+ import * as i0 from '@angular/core';
4
+ import { Pipe } from '@angular/core';
5
+
6
+ class DateFormats {
7
+ constructor() { }
8
+ static { this.DATE = "DD/MM/YYYY"; }
9
+ static { this.TIME = "HH:mm"; }
10
+ static { this.DATE_TIME = "DD/MM/YYYY HH:mm"; }
11
+ static { this.DATE_TIME_SECONDS = "DD/MM/YYYY HH:mm:ss"; }
12
+ static { this.MONTH_YEAR = "MM/YYYY"; }
13
+ static { this.YEAR = "YYYY"; }
14
+ }
15
+
16
+ dayjs.extend(customParseFormat);
17
+ class DateUtil {
18
+ constructor() { }
19
+ static { this.FORMATS = [
20
+ "YYYY-MM-DD HH:mm:ss.SSS",
21
+ "YYYY-MM-DD HH:mm:ss",
22
+ "YYYY-MM-DD",
23
+ ]; }
24
+ static formatDate(v, f = "-") {
25
+ return this.format(v, DateFormats.DATE, f);
26
+ }
27
+ static formatTime(v, f = "-") {
28
+ return this.format(v, DateFormats.TIME, f);
29
+ }
30
+ static formatDateTime(v, f = "-") {
31
+ return this.format(v, DateFormats.DATE_TIME, f);
32
+ }
33
+ static formatDateTimeWithSeconds(v, f = "-") {
34
+ return this.format(v, DateFormats.DATE_TIME_SECONDS, f);
35
+ }
36
+ static formatMonthYear(v, f = "-") {
37
+ return this.format(v, DateFormats.MONTH_YEAR, f);
38
+ }
39
+ static formatYear(v, f = "-") {
40
+ return this.format(v, DateFormats.YEAR, f);
41
+ }
42
+ static format(v, o, f = "-") {
43
+ const d = this.parse(v);
44
+ return d ? d.format(o) : f;
45
+ }
46
+ static isValid(v) {
47
+ return this.parse(v) !== null;
48
+ }
49
+ static parse(v) {
50
+ if (v === null || v === undefined || v === "")
51
+ return null;
52
+ if (dayjs.isDayjs(v))
53
+ return v.isValid() ? v.clone() : null;
54
+ if (v instanceof Date || typeof v === "number") {
55
+ const d = dayjs(v);
56
+ return d.isValid() ? d : null;
57
+ }
58
+ if (typeof v !== "string")
59
+ return null;
60
+ const s = v.trim();
61
+ if (!s)
62
+ return null;
63
+ for (const fmt of this.FORMATS) {
64
+ const d = dayjs(s, fmt, true);
65
+ if (d.isValid())
66
+ return d;
67
+ }
68
+ const iso = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/;
69
+ if (!iso.test(s))
70
+ return null;
71
+ const d = dayjs(s);
72
+ return d.isValid() ? d : null;
73
+ }
74
+ }
75
+
76
+ class CompanyDatePipe {
77
+ transform(v, t = "dateTime", f = "-") {
78
+ switch (t) {
79
+ case "date":
80
+ return DateUtil.formatDate(v, f);
81
+ case "time":
82
+ return DateUtil.formatTime(v, f);
83
+ case "dateTimeSeconds":
84
+ return DateUtil.formatDateTimeWithSeconds(v, f);
85
+ case "monthYear":
86
+ return DateUtil.formatMonthYear(v, f);
87
+ case "year":
88
+ return DateUtil.formatYear(v, f);
89
+ default:
90
+ return DateUtil.formatDateTime(v, f);
91
+ }
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
94
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CompanyDatePipe, isStandalone: true, name: "companyDate" }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyDatePipe, decorators: [{
97
+ type: Pipe,
98
+ args: [{ name: "companyDate", standalone: true, pure: true }]
99
+ }] });
100
+
101
+ class MoneyFormats {
102
+ constructor() { }
103
+ static { this.DEFAULT_LOCALE = "es-BO"; }
104
+ static { this.DEFAULT_CURRENCY = "BOB"; }
105
+ static { this.DEFAULT_SYMBOL = "Bs"; }
106
+ static { this.DEFAULT_DECIMALS = 2; }
107
+ }
108
+
109
+ class MoneyUtil {
110
+ constructor() { }
111
+ static formatBolivianos(v, o = {}) {
112
+ const n = this.parse(v);
113
+ if (n === null)
114
+ return o.fallback ?? "-";
115
+ const min = o.minimumFractionDigits ?? 2, max = o.maximumFractionDigits ?? 2;
116
+ const amount = new Intl.NumberFormat(MoneyFormats.DEFAULT_LOCALE, {
117
+ style: "decimal",
118
+ useGrouping: true,
119
+ minimumFractionDigits: min,
120
+ maximumFractionDigits: max,
121
+ }).format(n);
122
+ if (!(o.showSymbol ?? true))
123
+ return amount;
124
+ const s = o.symbol ?? MoneyFormats.DEFAULT_SYMBOL;
125
+ return o.symbolPosition === "after" ? `${amount} ${s}` : `${s} ${amount}`;
126
+ }
127
+ static formatNumber(v, min = 2, max = 2, f = "-") {
128
+ return this.formatBolivianos(v, {
129
+ showSymbol: false,
130
+ minimumFractionDigits: min,
131
+ maximumFractionDigits: max,
132
+ fallback: f,
133
+ });
134
+ }
135
+ static isValid(v) {
136
+ return this.parse(v) !== null;
137
+ }
138
+ static toNumber(v) {
139
+ return this.parse(v);
140
+ }
141
+ static parse(v) {
142
+ if (v === null || v === undefined || v === "")
143
+ return null;
144
+ if (typeof v === "number")
145
+ return Number.isFinite(v) ? v : null;
146
+ const s = v
147
+ .trim()
148
+ .replace(/\s/g, "")
149
+ .replace(/^Bs\.?/i, "");
150
+ if (!s)
151
+ return null;
152
+ let n;
153
+ if (s.includes(",") && s.includes("."))
154
+ n = s.replace(/\./g, "").replace(",", ".");
155
+ else if (s.includes(","))
156
+ n = s.replace(",", ".");
157
+ else
158
+ n = s;
159
+ if (!/^-?\d+(?:\.\d+)?$/.test(n))
160
+ return null;
161
+ const x = Number(n);
162
+ return Number.isFinite(x) ? x : null;
163
+ }
164
+ }
165
+
166
+ class CompanyMoneyPipe {
167
+ transform(v, o = {}) { return MoneyUtil.formatBolivianos(v, o); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyMoneyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
169
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CompanyMoneyPipe, isStandalone: true, name: "companyMoney" }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyMoneyPipe, decorators: [{
172
+ type: Pipe,
173
+ args: [{ name: 'companyMoney', standalone: true, pure: true }]
174
+ }] });
175
+
176
+ /**
177
+ * Generated bundle index. Do not edit.
178
+ */
179
+
180
+ export { CompanyDatePipe, CompanyMoneyPipe, DateFormats, DateUtil, MoneyFormats, MoneyUtil };
181
+ //# sourceMappingURL=endesyc-format.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endesyc-format.mjs","sources":["../../../projects/format-library/src/lib/dates/date-formats.ts","../../../projects/format-library/src/lib/dates/date.util.ts","../../../projects/format-library/src/lib/dates/company-date.pipe.ts","../../../projects/format-library/src/lib/money/money-formats.ts","../../../projects/format-library/src/lib/money/money.util.ts","../../../projects/format-library/src/lib/money/company-money.pipe.ts","../../../projects/format-library/src/endesyc-format.ts"],"sourcesContent":["export class DateFormats {\r\n private constructor() {}\r\n static readonly DATE = \"DD/MM/YYYY\";\r\n static readonly TIME = \"HH:mm\";\r\n static readonly DATE_TIME = \"DD/MM/YYYY HH:mm\";\r\n static readonly DATE_TIME_SECONDS = \"DD/MM/YYYY HH:mm:ss\";\r\n static readonly MONTH_YEAR = \"MM/YYYY\";\r\n static readonly YEAR = \"YYYY\";\r\n// static readonly API_DATE = \"YYYY-MM-DD\";\r\n}\r\n","import dayjs, { Dayjs } from \"dayjs\";\r\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\r\nimport { DateFormats } from \"./date-formats\";\r\nimport { DateInput } from \"./date-input\";\r\ndayjs.extend(customParseFormat);\r\nexport class DateUtil {\r\n private constructor() {}\r\n private static readonly FORMATS = [\r\n \"YYYY-MM-DD HH:mm:ss.SSS\",\r\n \"YYYY-MM-DD HH:mm:ss\",\r\n \"YYYY-MM-DD\",\r\n ] as const;\r\n static formatDate(v: DateInput, f = \"-\") {\r\n return this.format(v, DateFormats.DATE, f);\r\n }\r\n static formatTime(v: DateInput, f = \"-\") {\r\n return this.format(v, DateFormats.TIME, f);\r\n }\r\n static formatDateTime(v: DateInput, f = \"-\") {\r\n return this.format(v, DateFormats.DATE_TIME, f);\r\n }\r\n static formatDateTimeWithSeconds(v: DateInput, f = \"-\") {\r\n return this.format(v, DateFormats.DATE_TIME_SECONDS, f);\r\n }\r\n static formatMonthYear(v: DateInput, f = \"-\") {\r\n return this.format(v, DateFormats.MONTH_YEAR, f);\r\n }\r\n static formatYear(v: DateInput, f = \"-\") {\r\n return this.format(v, DateFormats.YEAR, f);\r\n }\r\n static format(v: DateInput, o: string, f = \"-\") {\r\n const d = this.parse(v);\r\n return d ? d.format(o) : f;\r\n }\r\n static isValid(v: DateInput) {\r\n return this.parse(v) !== null;\r\n }\r\n private static parse(v: DateInput): Dayjs | null {\r\n if (v === null || v === undefined || v === \"\") return null;\r\n if (dayjs.isDayjs(v)) return v.isValid() ? v.clone() : null;\r\n if (v instanceof Date || typeof v === \"number\") {\r\n const d = dayjs(v);\r\n return d.isValid() ? d : null;\r\n }\r\n if (typeof v !== \"string\") return null;\r\n const s = v.trim();\r\n if (!s) return null;\r\n for (const fmt of this.FORMATS) {\r\n const d = dayjs(s, fmt, true);\r\n if (d.isValid()) return d;\r\n }\r\n const iso =\r\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?(?:Z|[+-]\\d{2}:\\d{2})$/;\r\n if (!iso.test(s)) return null;\r\n const d = dayjs(s);\r\n return d.isValid() ? d : null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DateDisplayFormat } from \"./date-display-format\";\r\nimport { DateInput } from \"./date-input\";\r\nimport { DateUtil } from \"./date.util\";\r\n@Pipe({ name: \"companyDate\", standalone: true, pure: true })\r\nexport class CompanyDatePipe implements PipeTransform {\r\n transform(v: DateInput, t: DateDisplayFormat = \"dateTime\", f = \"-\"): string {\r\n switch (t) {\r\n case \"date\":\r\n return DateUtil.formatDate(v, f);\r\n case \"time\":\r\n return DateUtil.formatTime(v, f);\r\n case \"dateTimeSeconds\":\r\n return DateUtil.formatDateTimeWithSeconds(v, f);\r\n case \"monthYear\":\r\n return DateUtil.formatMonthYear(v, f);\r\n case \"year\":\r\n return DateUtil.formatYear(v, f);\r\n default:\r\n return DateUtil.formatDateTime(v, f);\r\n }\r\n }\r\n}\r\n","export class MoneyFormats {\r\n private constructor() {}\r\n static readonly DEFAULT_LOCALE = \"es-BO\";\r\n static readonly DEFAULT_CURRENCY = \"BOB\";\r\n static readonly DEFAULT_SYMBOL = \"Bs\";\r\n static readonly DEFAULT_DECIMALS = 2;\r\n}\r\n","import { MoneyFormatOptions } from \"./money-format-options\";\r\nimport { MoneyFormats } from \"./money-formats\";\r\nimport { MoneyInput } from \"./money-input\";\r\nexport class MoneyUtil {\r\n private constructor() {}\r\n static formatBolivianos(v: MoneyInput, o: MoneyFormatOptions = {}): string {\r\n const n = this.parse(v);\r\n if (n === null) return o.fallback ?? \"-\";\r\n const min = o.minimumFractionDigits ?? 2,\r\n max = o.maximumFractionDigits ?? 2;\r\n const amount = new Intl.NumberFormat(MoneyFormats.DEFAULT_LOCALE, {\r\n style: \"decimal\",\r\n useGrouping: true,\r\n minimumFractionDigits: min,\r\n maximumFractionDigits: max,\r\n }).format(n);\r\n if (!(o.showSymbol ?? true)) return amount;\r\n const s = o.symbol ?? MoneyFormats.DEFAULT_SYMBOL;\r\n return o.symbolPosition === \"after\" ? `${amount} ${s}` : `${s} ${amount}`;\r\n }\r\n static formatNumber(v: MoneyInput, min = 2, max = 2, f = \"-\") {\r\n return this.formatBolivianos(v, {\r\n showSymbol: false,\r\n minimumFractionDigits: min,\r\n maximumFractionDigits: max,\r\n fallback: f,\r\n });\r\n }\r\n static isValid(v: MoneyInput) {\r\n return this.parse(v) !== null;\r\n }\r\n static toNumber(v: MoneyInput) {\r\n return this.parse(v);\r\n }\r\n private static parse(v: MoneyInput): number | null {\r\n if (v === null || v === undefined || v === \"\") return null;\r\n if (typeof v === \"number\") return Number.isFinite(v) ? v : null;\r\n const s = v\r\n .trim()\r\n .replace(/\\s/g, \"\")\r\n .replace(/^Bs\\.?/i, \"\");\r\n if (!s) return null;\r\n let n: string;\r\n if (s.includes(\",\") && s.includes(\".\"))\r\n n = s.replace(/\\./g, \"\").replace(\",\", \".\");\r\n else if (s.includes(\",\")) n = s.replace(\",\", \".\");\r\n else n = s;\r\n if (!/^-?\\d+(?:\\.\\d+)?$/.test(n)) return null;\r\n const x = Number(n);\r\n return Number.isFinite(x) ? x : null;\r\n }\r\n}\r\n","import {Pipe,PipeTransform} from '@angular/core'; import {MoneyFormatOptions} from './money-format-options'; import {MoneyInput} from './money-input'; import {MoneyUtil} from './money.util'; @Pipe({name:'companyMoney',standalone:true,pure:true}) export class CompanyMoneyPipe implements PipeTransform { transform(v:MoneyInput,o:MoneyFormatOptions={}):string{return MoneyUtil.formatBolivianos(v,o)} }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@endesyc/format" />
5
+ export * from './public-api';
@@ -0,0 +1,9 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ import { DateDisplayFormat } from "./date-display-format";
3
+ import { DateInput } from "./date-input";
4
+ import * as i0 from "@angular/core";
5
+ export declare class CompanyDatePipe implements PipeTransform {
6
+ transform(v: DateInput, t?: DateDisplayFormat, f?: string): string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<CompanyDatePipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<CompanyDatePipe, "companyDate", true>;
9
+ }
@@ -0,0 +1 @@
1
+ export type DateDisplayFormat = "date" | "time" | "dateTime" | "dateTimeSeconds" | "monthYear" | "year";
@@ -0,0 +1,9 @@
1
+ export declare class DateFormats {
2
+ private constructor();
3
+ static readonly DATE = "DD/MM/YYYY";
4
+ static readonly TIME = "HH:mm";
5
+ static readonly DATE_TIME = "DD/MM/YYYY HH:mm";
6
+ static readonly DATE_TIME_SECONDS = "DD/MM/YYYY HH:mm:ss";
7
+ static readonly MONTH_YEAR = "MM/YYYY";
8
+ static readonly YEAR = "YYYY";
9
+ }
@@ -0,0 +1,2 @@
1
+ import { Dayjs } from 'dayjs';
2
+ export type DateInput = string | number | Date | Dayjs | null | undefined;
@@ -0,0 +1,14 @@
1
+ import { DateInput } from "./date-input";
2
+ export declare class DateUtil {
3
+ private constructor();
4
+ private static readonly FORMATS;
5
+ static formatDate(v: DateInput, f?: string): string;
6
+ static formatTime(v: DateInput, f?: string): string;
7
+ static formatDateTime(v: DateInput, f?: string): string;
8
+ static formatDateTimeWithSeconds(v: DateInput, f?: string): string;
9
+ static formatMonthYear(v: DateInput, f?: string): string;
10
+ static formatYear(v: DateInput, f?: string): string;
11
+ static format(v: DateInput, o: string, f?: string): string;
12
+ static isValid(v: DateInput): boolean;
13
+ private static parse;
14
+ }
@@ -0,0 +1,9 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { MoneyFormatOptions } from './money-format-options';
3
+ import { MoneyInput } from './money-input';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CompanyMoneyPipe implements PipeTransform {
6
+ transform(v: MoneyInput, o?: MoneyFormatOptions): string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<CompanyMoneyPipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<CompanyMoneyPipe, "companyMoney", true>;
9
+ }
@@ -0,0 +1,8 @@
1
+ export interface MoneyFormatOptions {
2
+ symbol?: string;
3
+ minimumFractionDigits?: number;
4
+ maximumFractionDigits?: number;
5
+ showSymbol?: boolean;
6
+ symbolPosition?: "before" | "after";
7
+ fallback?: string;
8
+ }
@@ -0,0 +1,7 @@
1
+ export declare class MoneyFormats {
2
+ private constructor();
3
+ static readonly DEFAULT_LOCALE = "es-BO";
4
+ static readonly DEFAULT_CURRENCY = "BOB";
5
+ static readonly DEFAULT_SYMBOL = "Bs";
6
+ static readonly DEFAULT_DECIMALS = 2;
7
+ }
@@ -0,0 +1 @@
1
+ export type MoneyInput = number | string | null | undefined;
@@ -0,0 +1,10 @@
1
+ import { MoneyFormatOptions } from "./money-format-options";
2
+ import { MoneyInput } from "./money-input";
3
+ export declare class MoneyUtil {
4
+ private constructor();
5
+ static formatBolivianos(v: MoneyInput, o?: MoneyFormatOptions): string;
6
+ static formatNumber(v: MoneyInput, min?: number, max?: number, f?: string): string;
7
+ static isValid(v: MoneyInput): boolean;
8
+ static toNumber(v: MoneyInput): number | null;
9
+ private static parse;
10
+ }
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@endesyc/format",
3
+ "version": "1.0.0",
4
+ "description": "Librería Angular compartida para formateo de fechas y montos monetarios.",
5
+ "license": "UNLICENSED",
6
+ "author": "ENDESYC",
7
+ "sideEffects": false,
8
+ "peerDependencies": {
9
+ "@angular/common": ">=18 <21",
10
+ "@angular/core": ">=18 <21",
11
+ "dayjs": "^1.11.13"
12
+ },
13
+ "dependencies": {
14
+ "tslib": "^2.3.0"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "module": "fesm2022/endesyc-format.mjs",
20
+ "typings": "index.d.ts",
21
+ "exports": {
22
+ "./package.json": {
23
+ "default": "./package.json"
24
+ },
25
+ ".": {
26
+ "types": "./index.d.ts",
27
+ "esm2022": "./esm2022/endesyc-format.mjs",
28
+ "esm": "./esm2022/endesyc-format.mjs",
29
+ "default": "./fesm2022/endesyc-format.mjs"
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,10 @@
1
+ export * from './lib/dates/date-formats';
2
+ export * from './lib/dates/date-display-format';
3
+ export * from './lib/dates/date-input';
4
+ export * from './lib/dates/date.util';
5
+ export * from './lib/dates/company-date.pipe';
6
+ export * from './lib/money/money-formats';
7
+ export * from './lib/money/money-input';
8
+ export * from './lib/money/money-format-options';
9
+ export * from './lib/money/money.util';
10
+ export * from './lib/money/company-money.pipe';