@arsedizioni/ars-utils 20.1.21 → 20.1.23

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/core/index.d.ts CHANGED
@@ -8,51 +8,51 @@ import { SelectionModel } from '@angular/cdk/collections';
8
8
  import { Observable } from 'rxjs';
9
9
 
10
10
  declare class ValidatorDirective implements Validator {
11
- readonly validator: i0.InputSignal<(control: AbstractControl) => ValidationErrors | undefined>;
12
- validate(control: AbstractControl): ValidationErrors | undefined;
11
+ readonly validator: i0.InputSignal<(control: AbstractControl) => ValidationErrors | null>;
12
+ validate(control: AbstractControl): ValidationErrors | null;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ValidatorDirective, never>;
14
14
  static ɵdir: i0.ɵɵDirectiveDeclaration<ValidatorDirective, "[validator]", never, { "validator": { "alias": "validator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
15
  }
16
16
  declare class ValidIfDirective implements Validator {
17
17
  readonly validIf: i0.InputSignal<boolean>;
18
- validate(control: AbstractControl): ValidationErrors | undefined;
18
+ validate(control: AbstractControl): ValidationErrors | null;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<ValidIfDirective, never>;
20
20
  static ɵdir: i0.ɵɵDirectiveDeclaration<ValidIfDirective, "[validIf]", never, { "validIf": { "alias": "validIf"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
21
  }
22
22
  declare class EqualsValidatorDirective implements Validator {
23
23
  readonly equals: i0.InputSignal<AbstractControl<any, any, any>>;
24
- validate(control: AbstractControl): ValidationErrors | undefined;
24
+ validate(control: AbstractControl): ValidationErrors | null;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<EqualsValidatorDirective, never>;
26
26
  static ɵdir: i0.ɵɵDirectiveDeclaration<EqualsValidatorDirective, "[equals]", never, { "equals": { "alias": "equals"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
27
27
  }
28
28
  declare class NotEqualValidatorDirective implements Validator {
29
29
  readonly notEqual: i0.InputSignal<AbstractControl<any, any, any>>;
30
- validate(control: AbstractControl): ValidationErrors | undefined;
30
+ validate(control: AbstractControl): ValidationErrors | null;
31
31
  static ɵfac: i0.ɵɵFactoryDeclaration<NotEqualValidatorDirective, never>;
32
32
  static ɵdir: i0.ɵɵDirectiveDeclaration<NotEqualValidatorDirective, "[notEqual]", never, { "notEqual": { "alias": "notEqual"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
33
33
  }
34
34
  declare class EmailsValidatorDirective implements Validator {
35
- validate(control: AbstractControl): ValidationErrors | undefined;
35
+ validate(control: AbstractControl): ValidationErrors | null;
36
36
  static ɵfac: i0.ɵɵFactoryDeclaration<EmailsValidatorDirective, never>;
37
37
  static ɵdir: i0.ɵɵDirectiveDeclaration<EmailsValidatorDirective, "[emails]", never, {}, {}, never, never, true, never>;
38
38
  }
39
39
  declare class GuidValidatorDirective implements Validator {
40
- validate(control: AbstractControl): ValidationErrors | undefined;
40
+ validate(control: AbstractControl): ValidationErrors | null;
41
41
  static ɵfac: i0.ɵɵFactoryDeclaration<GuidValidatorDirective, never>;
42
42
  static ɵdir: i0.ɵɵDirectiveDeclaration<GuidValidatorDirective, "[guid]", never, {}, {}, never, never, true, never>;
43
43
  }
44
44
  declare class SqlDateValidatorDirective implements Validator {
45
- validate(control: AbstractControl): ValidationErrors | undefined;
45
+ validate(control: AbstractControl): ValidationErrors | null;
46
46
  static ɵfac: i0.ɵɵFactoryDeclaration<SqlDateValidatorDirective, never>;
47
47
  static ɵdir: i0.ɵɵDirectiveDeclaration<SqlDateValidatorDirective, "[sqlDate]", never, {}, {}, never, never, true, never>;
48
48
  }
49
49
  declare class NotFutureValidatorDirective implements Validator {
50
- validate(control: AbstractControl): ValidationErrors | undefined;
50
+ validate(control: AbstractControl): ValidationErrors | null;
51
51
  static ɵfac: i0.ɵɵFactoryDeclaration<NotFutureValidatorDirective, never>;
52
52
  static ɵdir: i0.ɵɵDirectiveDeclaration<NotFutureValidatorDirective, "[notFuture]", never, {}, {}, never, never, true, never>;
53
53
  }
54
54
  declare class UrlValidatorDirective implements Validator {
55
- validate(control: AbstractControl): ValidationErrors | undefined;
55
+ validate(control: AbstractControl): ValidationErrors | null;
56
56
  static ɵfac: i0.ɵɵFactoryDeclaration<UrlValidatorDirective, never>;
57
57
  static ɵdir: i0.ɵɵDirectiveDeclaration<UrlValidatorDirective, "[url]", never, {}, {}, never, never, true, never>;
58
58
  }
@@ -60,18 +60,18 @@ declare class FileSizeValidatorDirective implements Validator {
60
60
  readonly maxSizeMb: i0.InputSignal<number>;
61
61
  readonly minSizeMb: i0.InputSignal<number>;
62
62
  readonly size: i0.InputSignal<number>;
63
- validate(control: AbstractControl): ValidationErrors | undefined;
63
+ validate(control: AbstractControl): ValidationErrors | null;
64
64
  static ɵfac: i0.ɵɵFactoryDeclaration<FileSizeValidatorDirective, never>;
65
65
  static ɵdir: i0.ɵɵDirectiveDeclaration<FileSizeValidatorDirective, "[fileSize]", never, { "maxSizeMb": { "alias": "maxSizeMb"; "required": false; "isSignal": true; }; "minSizeMb": { "alias": "minSizeMb"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
66
66
  }
67
67
  declare class MaxTermsValidatorDirective implements Validator {
68
68
  readonly maxTerms: i0.InputSignal<number>;
69
- validate(control: AbstractControl): ValidationErrors | undefined;
69
+ validate(control: AbstractControl): ValidationErrors | null;
70
70
  static ɵfac: i0.ɵɵFactoryDeclaration<MaxTermsValidatorDirective, never>;
71
71
  static ɵdir: i0.ɵɵDirectiveDeclaration<MaxTermsValidatorDirective, "[maxTerms]", never, { "maxTerms": { "alias": "maxTerms"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
72
72
  }
73
73
  declare class PasswordValidatorDirective implements Validator {
74
- validate(control: AbstractControl): ValidationErrors | undefined;
74
+ validate(control: AbstractControl): ValidationErrors | null;
75
75
  static ɵfac: i0.ɵɵFactoryDeclaration<PasswordValidatorDirective, never>;
76
76
  static ɵdir: i0.ɵɵDirectiveDeclaration<PasswordValidatorDirective, "[password]", never, {}, {}, never, never, true, never>;
77
77
  }
@@ -83,12 +83,12 @@ declare class TimeValidatorDirective implements Validator {
83
83
  * @returns the hours as a number or -1
84
84
  */
85
85
  private getTime;
86
- validate(control: AbstractControl): ValidationErrors | undefined;
86
+ validate(control: AbstractControl): ValidationErrors | null;
87
87
  static ɵfac: i0.ɵɵFactoryDeclaration<TimeValidatorDirective, never>;
88
88
  static ɵdir: i0.ɵɵDirectiveDeclaration<TimeValidatorDirective, "[time]", never, { "slots": { "alias": "slots"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
89
89
  }
90
90
  declare class NotEmptyValidatorDirective implements Validator {
91
- validate(control: AbstractControl): ValidationErrors | undefined;
91
+ validate(control: AbstractControl): ValidationErrors | null;
92
92
  static ɵfac: i0.ɵɵFactoryDeclaration<NotEmptyValidatorDirective, never>;
93
93
  static ɵdir: i0.ɵɵDirectiveDeclaration<NotEmptyValidatorDirective, "[notEmpty]", never, {}, {}, never, never, true, never>;
94
94
  }
@@ -842,7 +842,7 @@ declare class ThemeService implements OnDestroy {
842
842
 
843
843
  declare class ArsCoreModule {
844
844
  static ɵfac: i0.ɵɵFactoryDeclaration<ArsCoreModule, never>;
845
- static ɵmod: i0.ɵɵNgModuleDeclaration<ArsCoreModule, never, [typeof FileSizeValidatorDirective, typeof ValidIfDirective, typeof ValidatorDirective, typeof EqualsValidatorDirective, typeof GuidValidatorDirective, typeof EmailsValidatorDirective, typeof UrlValidatorDirective, typeof NotFutureValidatorDirective, typeof PasswordValidatorDirective, typeof DateIntervalChangeDirective, typeof SqlDateValidatorDirective, typeof SearchFilterPipe, typeof SearchCallbackPipe, typeof SafeHtmlPipe, typeof SafeUrlPipe, typeof ReplacePipe, typeof FormatPipe, typeof FormatHtmlPipe, typeof CopyClipboardDirective, typeof AutoFocusDirective, typeof MaxTermsValidatorDirective], [typeof FileSizeValidatorDirective, typeof ValidIfDirective, typeof ValidatorDirective, typeof EqualsValidatorDirective, typeof GuidValidatorDirective, typeof EmailsValidatorDirective, typeof UrlValidatorDirective, typeof NotFutureValidatorDirective, typeof PasswordValidatorDirective, typeof DateIntervalChangeDirective, typeof SqlDateValidatorDirective, typeof SearchFilterPipe, typeof SearchCallbackPipe, typeof SafeHtmlPipe, typeof SafeUrlPipe, typeof ReplacePipe, typeof FormatPipe, typeof FormatHtmlPipe, typeof CopyClipboardDirective, typeof AutoFocusDirective, typeof MaxTermsValidatorDirective]>;
845
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ArsCoreModule, never, [typeof FileSizeValidatorDirective, typeof ValidIfDirective, typeof ValidatorDirective, typeof EqualsValidatorDirective, typeof GuidValidatorDirective, typeof EmailsValidatorDirective, typeof UrlValidatorDirective, typeof NotFutureValidatorDirective, typeof NotEmptyValidatorDirective, typeof PasswordValidatorDirective, typeof DateIntervalChangeDirective, typeof SqlDateValidatorDirective, typeof SearchFilterPipe, typeof SearchCallbackPipe, typeof SafeHtmlPipe, typeof SafeUrlPipe, typeof ReplacePipe, typeof FormatPipe, typeof FormatHtmlPipe, typeof CopyClipboardDirective, typeof AutoFocusDirective, typeof MaxTermsValidatorDirective], [typeof FileSizeValidatorDirective, typeof ValidIfDirective, typeof ValidatorDirective, typeof EqualsValidatorDirective, typeof GuidValidatorDirective, typeof EmailsValidatorDirective, typeof UrlValidatorDirective, typeof NotFutureValidatorDirective, typeof NotEmptyValidatorDirective, typeof PasswordValidatorDirective, typeof DateIntervalChangeDirective, typeof SqlDateValidatorDirective, typeof SearchFilterPipe, typeof SearchCallbackPipe, typeof SafeHtmlPipe, typeof SafeUrlPipe, typeof ReplacePipe, typeof FormatPipe, typeof FormatHtmlPipe, typeof CopyClipboardDirective, typeof AutoFocusDirective, typeof MaxTermsValidatorDirective]>;
846
846
  static ɵinj: i0.ɵɵInjectorDeclaration<ArsCoreModule>;
847
847
  }
848
848
 
@@ -1139,7 +1139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1139
1139
 
1140
1140
  class ValidatorDirective {
1141
1141
  constructor() {
1142
- this.validator = input(undefined, ...(ngDevMode ? [{ debugName: "validator" }] : []));
1142
+ this.validator = input(null, ...(ngDevMode ? [{ debugName: "validator" }] : []));
1143
1143
  }
1144
1144
  validate(control) {
1145
1145
  return this.validator()(control);
@@ -1171,7 +1171,7 @@ class ValidIfDirective {
1171
1171
  catch { }
1172
1172
  }
1173
1173
  if (isValid) {
1174
- return undefined;
1174
+ return null;
1175
1175
  }
1176
1176
  else {
1177
1177
  return { validIf: "Non valido." };
@@ -1207,7 +1207,7 @@ class EqualsValidatorDirective {
1207
1207
  validate(control) {
1208
1208
  const isValid = this.equals().value === control.value;
1209
1209
  if (isValid) {
1210
- return undefined;
1210
+ return null;
1211
1211
  }
1212
1212
  else {
1213
1213
  return { equals: "Non valido." };
@@ -1238,7 +1238,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1238
1238
  }] });
1239
1239
  class NotEqualValidatorDirective {
1240
1240
  constructor() {
1241
- this.notEqual = input(undefined, ...(ngDevMode ? [{ debugName: "notEqual" }] : []));
1241
+ this.notEqual = input(null, ...(ngDevMode ? [{ debugName: "notEqual" }] : []));
1242
1242
  }
1243
1243
  validate(control) {
1244
1244
  const notEqual = this.notEqual();
@@ -1285,7 +1285,7 @@ class EmailsValidatorDirective {
1285
1285
  let isValid = true;
1286
1286
  const input = control.value;
1287
1287
  if (!input || input.length === 0)
1288
- return undefined;
1288
+ return null;
1289
1289
  var parts = input.replaceAll(/\r\n/g, "").split(";");
1290
1290
  for (var i = 0; i < parts.length; i++) {
1291
1291
  if (parts[i].length > 0) {
@@ -1299,7 +1299,7 @@ class EmailsValidatorDirective {
1299
1299
  return { emails: "Elenco non valido." };
1300
1300
  }
1301
1301
  else {
1302
- return undefined;
1302
+ return null;
1303
1303
  }
1304
1304
  }
1305
1305
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EmailsValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1329,13 +1329,13 @@ class GuidValidatorDirective {
1329
1329
  validate(control) {
1330
1330
  const input = control.value;
1331
1331
  if (!input || input.length === 0)
1332
- return undefined;
1332
+ return null;
1333
1333
  const isValid = SystemUtils.parseUUID(input);
1334
1334
  if (!isValid) {
1335
1335
  return { guid: "Non valido." };
1336
1336
  }
1337
1337
  else {
1338
- return undefined;
1338
+ return null;
1339
1339
  }
1340
1340
  }
1341
1341
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: GuidValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1365,14 +1365,14 @@ class SqlDateValidatorDirective {
1365
1365
  validate(control) {
1366
1366
  const input = control.value;
1367
1367
  if (!input || input.length === 0)
1368
- return undefined;
1368
+ return null;
1369
1369
  const d = endOfDay(SystemUtils.parseDate(input));
1370
1370
  const isValid = d.getFullYear() > 1750;
1371
1371
  if (!isValid) {
1372
- return { notFuture: "Non valido." };
1372
+ return { sqlDate: "Non valido." };
1373
1373
  }
1374
1374
  else {
1375
- return undefined;
1375
+ return null;
1376
1376
  }
1377
1377
  }
1378
1378
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SqlDateValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1402,7 +1402,7 @@ class NotFutureValidatorDirective {
1402
1402
  validate(control) {
1403
1403
  const input = control.value;
1404
1404
  if (!input || input.length === 0)
1405
- return undefined;
1405
+ return null;
1406
1406
  const today = endOfDay(new Date());
1407
1407
  const d = endOfDay(SystemUtils.parseDate(input));
1408
1408
  const isValid = d <= today;
@@ -1410,7 +1410,7 @@ class NotFutureValidatorDirective {
1410
1410
  return { notFuture: "Non valido." };
1411
1411
  }
1412
1412
  else {
1413
- return undefined;
1413
+ return null;
1414
1414
  }
1415
1415
  }
1416
1416
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NotFutureValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1444,7 +1444,7 @@ class UrlValidatorDirective {
1444
1444
  return { url: "Non valido." };
1445
1445
  }
1446
1446
  else {
1447
- return undefined;
1447
+ return null;
1448
1448
  }
1449
1449
  }
1450
1450
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: UrlValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1474,17 +1474,17 @@ class FileSizeValidatorDirective {
1474
1474
  constructor() {
1475
1475
  this.maxSizeMb = input(5, ...(ngDevMode ? [{ debugName: "maxSizeMb" }] : []));
1476
1476
  this.minSizeMb = input(0, ...(ngDevMode ? [{ debugName: "minSizeMb" }] : []));
1477
- this.size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : []));
1477
+ this.size = input(null, ...(ngDevMode ? [{ debugName: "size" }] : []));
1478
1478
  }
1479
1479
  validate(control) {
1480
1480
  const input = control.value;
1481
1481
  const size = this.size();
1482
1482
  let s = size ? size : 0;
1483
1483
  if (!input)
1484
- return undefined;
1484
+ return null;
1485
1485
  const isValid = s <= this.maxSizeMb() && s >= this.minSizeMb();
1486
1486
  if (isValid) {
1487
- return undefined;
1487
+ return null;
1488
1488
  }
1489
1489
  else {
1490
1490
  return { fileSize: "Non valido." };
@@ -1520,11 +1520,11 @@ class MaxTermsValidatorDirective {
1520
1520
  validate(control) {
1521
1521
  const input = control.value;
1522
1522
  if (!input)
1523
- return undefined;
1523
+ return null;
1524
1524
  const terms = input?.match(/\S+/g)?.length ?? 0;
1525
1525
  const isValid = terms <= this.maxTerms();
1526
1526
  if (isValid) {
1527
- return undefined;
1527
+ return null;
1528
1528
  }
1529
1529
  else {
1530
1530
  return { maxTerms: "Non valido." };
@@ -1561,7 +1561,7 @@ class PasswordValidatorDirective {
1561
1561
  return { password: "Non valido." };
1562
1562
  }
1563
1563
  else {
1564
- return undefined;
1564
+ return null;
1565
1565
  }
1566
1566
  }
1567
1567
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PasswordValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1589,7 +1589,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1589
1589
  }] });
1590
1590
  class TimeValidatorDirective {
1591
1591
  constructor() {
1592
- this.slots = input(undefined, ...(ngDevMode ? [{ debugName: "slots" }] : []));
1592
+ this.slots = input(null, ...(ngDevMode ? [{ debugName: "slots" }] : []));
1593
1593
  }
1594
1594
  /**
1595
1595
  * Retrieve hours as a number from a time string (e: 12:00)
@@ -1611,7 +1611,7 @@ class TimeValidatorDirective {
1611
1611
  validate(control) {
1612
1612
  const input = control.value;
1613
1613
  if (!input || input.length === 0)
1614
- return undefined;
1614
+ return null;
1615
1615
  let isValid = false;
1616
1616
  const t = this.getTime(input);
1617
1617
  if (t !== -1) {
@@ -1633,7 +1633,7 @@ class TimeValidatorDirective {
1633
1633
  return { time: "Non valido." };
1634
1634
  }
1635
1635
  else {
1636
- return undefined;
1636
+ return null;
1637
1637
  }
1638
1638
  }
1639
1639
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TimeValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -1661,15 +1661,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1661
1661
  }] });
1662
1662
  class NotEmptyValidatorDirective {
1663
1663
  validate(control) {
1664
- const value = control?.value;
1665
- if (!value || typeof value !== 'string' || value.length === 0)
1666
- return undefined;
1667
- const isValid = value.trim().length > 0;
1664
+ const input = control?.value;
1665
+ if (!input || typeof input !== 'string' || input.length === 0)
1666
+ return null;
1667
+ const isValid = input.trim().length > 0;
1668
1668
  if (!isValid) {
1669
1669
  return { notEmpty: true };
1670
1670
  }
1671
1671
  else {
1672
- return undefined;
1672
+ return null;
1673
1673
  }
1674
1674
  }
1675
1675
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NotEmptyValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -2338,6 +2338,7 @@ class ArsCoreModule {
2338
2338
  EmailsValidatorDirective,
2339
2339
  UrlValidatorDirective,
2340
2340
  NotFutureValidatorDirective,
2341
+ NotEmptyValidatorDirective,
2341
2342
  PasswordValidatorDirective,
2342
2343
  DateIntervalChangeDirective,
2343
2344
  SqlDateValidatorDirective,
@@ -2358,6 +2359,7 @@ class ArsCoreModule {
2358
2359
  EmailsValidatorDirective,
2359
2360
  UrlValidatorDirective,
2360
2361
  NotFutureValidatorDirective,
2362
+ NotEmptyValidatorDirective,
2361
2363
  PasswordValidatorDirective,
2362
2364
  DateIntervalChangeDirective,
2363
2365
  SqlDateValidatorDirective,
@@ -2393,6 +2395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2393
2395
  EmailsValidatorDirective,
2394
2396
  UrlValidatorDirective,
2395
2397
  NotFutureValidatorDirective,
2398
+ NotEmptyValidatorDirective,
2396
2399
  PasswordValidatorDirective,
2397
2400
  DateIntervalChangeDirective,
2398
2401
  SqlDateValidatorDirective,
@@ -2416,6 +2419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2416
2419
  EmailsValidatorDirective,
2417
2420
  UrlValidatorDirective,
2418
2421
  NotFutureValidatorDirective,
2422
+ NotEmptyValidatorDirective,
2419
2423
  PasswordValidatorDirective,
2420
2424
  DateIntervalChangeDirective,
2421
2425
  SqlDateValidatorDirective,
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-core.mjs","sources":["../../../projects/ars-utils/core/directives/autoFocusDirective.ts","../../../projects/ars-utils/core/definitions.ts","../../../projects/ars-utils/core/system.ts","../../../projects/ars-utils/core/directives/changeDateIntervalDirective.ts","../../../projects/ars-utils/core/directives/copyClipboardDirective.ts","../../../projects/ars-utils/core/directives/validators.ts","../../../projects/ars-utils/core/pipes/format.pipe.ts","../../../projects/ars-utils/core/pipes/replace.pipe.ts","../../../projects/ars-utils/core/pipes/safe-html.pipe.ts","../../../projects/ars-utils/core/pipes/safe-url.pipe.ts","../../../projects/ars-utils/core/pipes/search-callback.pipe.ts","../../../projects/ars-utils/core/pipes/search-filter.pipe.ts","../../../projects/ars-utils/core/pipes/format-html.pipe.ts","../../../projects/ars-utils/core/messages.ts","../../../projects/ars-utils/core/selectable.ts","../../../projects/ars-utils/core/services/broadcast.service.ts","../../../projects/ars-utils/core/services/environment.service.ts","../../../projects/ars-utils/core/services/screen.service.ts","../../../projects/ars-utils/core/services/broadcastChannelManager.ts","../../../projects/ars-utils/core/services/theme.service.ts","../../../projects/ars-utils/core/core.module.ts","../../../projects/ars-utils/core/dateFnsAdapter.module.ts","../../../projects/ars-utils/core/directives/removeFocusDirective.ts","../../../projects/ars-utils/core/pipes/format-markdown.pipe.ts","../../../projects/ars-utils/core/public_api.ts","../../../projects/ars-utils/core/arsedizioni-ars-utils-core.ts"],"sourcesContent":["import { AfterContentInit, Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: \"[autoFocus]\",\r\n standalone: true\r\n })\r\nexport class AutoFocusDirective implements AfterContentInit {\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n public ngAfterContentInit() {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n }, 500);\r\n }\r\n }","import { INode } from './system';\r\n\r\nexport interface DoneResult<T> {\r\n isNew?: boolean;\r\n data?: T;\r\n}\r\n\r\nexport interface ApiResponse {\r\n success: boolean;\r\n message: string;\r\n}\r\n\r\nexport interface ApiResult<T> extends ApiResponse {\r\n value: T;\r\n}\r\n\r\nexport interface Folder extends INode {\r\n teamId?: string;\r\n parentId?: string;\r\n position?: number;\r\n isPrivate?: boolean;\r\n itemsCount?: number;\r\n subItemsCount?: number;\r\n\r\n}\r\n\r\nexport interface FolderTree extends Folder {\r\n children?: Folder[];\r\n path?: string;\r\n}\r\n\r\nexport interface File<T> {\r\n ownerId?: T;\r\n id?: number;\r\n fileName: string;\r\n fileData: any;\r\n}\r\n\r\nexport interface Validated {\r\n isValid(): boolean;\r\n}\r\n\r\nexport class FileInfo implements Validated {\r\n file: any;\r\n valid: boolean;\r\n\r\n isValid(): boolean {\r\n return this.valid;\r\n }\r\n}\r\n\r\nexport interface ErrorInfo {\r\n invalidateSession?: boolean;\r\n title?: string;\r\n message?: string;\r\n errorStatus?: number;\r\n service?: string;\r\n}\r\n\r\nexport interface NameValueItem<T> {\r\n name: string;\r\n value: T;\r\n shortName?: string;\r\n parentName?: string;\r\n parentValue?: T;\r\n header?: string;\r\n bag?: any;\r\n bagInfo?: string;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface Checkable {\r\n checked?: boolean;\r\n bag: any;\r\n getId(): any;\r\n}\r\n\r\n\r\nexport class ValueModel<T> {\r\n value: T;\r\n}\r\nexport class IDModel<T> {\r\n id: T;\r\n}\r\nexport class GroupModel<T> {\r\n ids: T[];\r\n}\r\n\r\nexport class DeleteModel<T> extends GroupModel<T> {\r\n mode: number;\r\n}\r\nexport interface DeleteResultModel<T> {\r\n items?: T[],\r\n deleted: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class RelationModel<T> {\r\n id: T;\r\n parentId: T;\r\n}\r\n\r\nexport class UpdateRelationsModel<T> {\r\n id: T;\r\n relatedIds: T[];\r\n}\r\n\r\nexport class QueryModel {\r\n any?: string;\r\n sortBy?: string;\r\n sortDescending?: boolean;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface QueryResultModel<T> {\r\n interval?: string;\r\n items: T[];\r\n total: number;\r\n}\r\n\r\nexport interface UpdateModel<T> {\r\n parentId?: T;\r\n ids: T[];\r\n}\r\n\r\nexport interface UpdateResultModel<T> {\r\n items?: T[];\r\n updated: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport interface AddModel<T> extends UpdateModel<T> {\r\n\r\n}\r\n\r\nexport interface AddResultModel<T> {\r\n items?: T[];\r\n added: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class ImportModel {\r\n origin: string;\r\n dataFile: FileInfo;\r\n jumpFirstLine?: boolean;\r\n map?: any;\r\n}\r\n\r\nexport interface EnableDisableModel {\r\n value: boolean;\r\n}\r\n\r\nexport interface SendToModel {\r\n sendToRecipients?: string;\r\n sendToSubject?: string;\r\n sendToText?: string;\r\n}\r\n\r\nexport interface SearchBag {\r\n name: string;\r\n}\r\n\r\nexport interface Searchable {\r\n searchBag: SearchBag;\r\n}\r\n\r\nexport interface SearchFilterMetadata {\r\n total: number; // totale elementi\r\n count: number; // conteggio filtrati\r\n}\r\n\r\nexport class DateInterval {\r\n from?: Date;\r\n to?: Date;\r\n get fromAsDate() {\r\n return this.from\r\n ? new Date(\r\n this.from.getFullYear(),\r\n this.from.getMonth(),\r\n this.from.getDate(),\r\n 2,\r\n 0,\r\n 0\r\n )\r\n : null;\r\n }\r\n get toAsDate() {\r\n return this.to\r\n ? new Date(this.to.getFullYear(), this.to.getMonth(), this.to.getDate(), 2, 0, 0)\r\n : null;\r\n }\r\n\r\n constructor(from?: Date, to?: Date) {\r\n this.from = from;\r\n this.to = to;\r\n }\r\n\r\n /**\r\n * Clear interval\r\n */\r\n clear() {\r\n this.from = undefined;\r\n this.to = undefined;\r\n }\r\n}\r\n\r\nexport interface LoginResult<T> extends ApiResult<boolean> {\r\n context: T;\r\n token: string;\r\n refreshToken?: string;\r\n}\r\n","import { HttpParams } from \"@angular/common/http\";\r\nimport { DateInterval } from './definitions';\r\nimport { format, parse, parseISO } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { TZDate } from '@date-fns/tz';\r\n\r\nexport interface INode {\r\n id: string;\r\n name?: string;\r\n count?: number;\r\n children?: INode[];\r\n subFolders?: INode[];\r\n parent?: INode;\r\n bag?: any\r\n}\r\n\r\n\r\nexport enum DateFormat {\r\n Short = 1, // dd/mm/yyyy\r\n Long = 2, // d mmmm yyyy\r\n LongWithShortMonth = 3, // d mmm yyyy\r\n LongWithWeekDay = 4, // wwww, d mmmm yyyy\r\n LongWithShortWeekDay = 5, // www, d mmmm yyyy\r\n MonthAndYear = 6, // mmm yyyy\r\n LongMonthAndYear = 7, // mmmm yyyy\r\n WeekDay = 8, // www d\r\n LongWeekDay = 9, // wwww d\r\n DayAndMonth = 10, // d mmmm\r\n ShortUS = 11, // mm/dd/yyyy\r\n ShortISO8601 = 12 // yyyy-mm-dd\r\n}\r\n\r\nexport interface PasswordStrength {\r\n score: number;\r\n label?: string;\r\n color?: string;\r\n suggestions?: string[];\r\n isValid: boolean;\r\n}\r\n\r\ninterface MarkdownListState {\r\n type: 'ul' | 'ol' | null;\r\n items: string[];\r\n}\r\n\r\nexport class SystemUtils {\r\n /**\r\n * Array find by key\r\n * @param array : the array to scan\r\n * @param key : key name\r\n * @param value : the value to search for\r\n * @returns : the property value or null\r\n */\r\n static arrayFindByKey<T>(array: T[] | undefined, key: string, value: any): T | undefined {\r\n if (!array) return undefined;\r\n for (const item of array) {\r\n if ((item as any)[key] === value) {\r\n return item;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Array find index by key\r\n * @param array : the array to scan\r\n * @param key : the key name\r\n * @param value : the value to search for\r\n * @returns : the array index or -1 if not found\r\n */\r\n static arrayFindIndexByKey<T>(array: T[] | undefined, key: string, value: any): number {\r\n if (!array) return -1;\r\n for (let i = 0; i < array.length; i++) {\r\n if ((array[i] as any)[key] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Get a value from and array made of name|value items\r\n * @param array : the array to scan\r\n * @param value : the value to search for\r\n * @returns : the property value or null if not found\r\n */\r\n static arrayGetValue<T>(array: T[] | undefined, value: any): any {\r\n if (!array) return undefined;\r\n for (var i = 0; i < array.length; i++) {\r\n const item = (array[i] as any);\r\n if (item.value === value) {\r\n return item.name || item.id;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Convert items to nodes into a tree structure\r\n * @param items : list of nodes\r\n * @param parent : parent node\r\n * @returns : an array of INode objects\r\n */\r\n static arrayToNodes(items: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n items.forEach(n => {\r\n const node: INode = {\r\n id: n.id.toString(),\r\n name: n.name,\r\n count: n.count ? n.count : 0,\r\n children: undefined,\r\n parent,\r\n bag: n,\r\n };\r\n nodes.push(node);\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this.arrayToNodes(n.children, node)\r\n : [];\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Used to copare items during an array of objects sorting\r\n * @param key : the property name to sort for\r\n * @param order : the order 'asc' or 'desc'\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static arraySortCompare(key: string, order: string = \"asc\") {\r\n const result = function innerSort(a: any, b: any) {\r\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\r\n // property doesn't exist on either object\r\n return 0;\r\n }\r\n const varA = typeof a[key] === \"string\" ? a[key].toUpperCase() : a[key];\r\n const varB = typeof b[key] === \"string\" ? b[key].toUpperCase() : b[key];\r\n let comparison = 0;\r\n if (varA > varB) comparison = 1;\r\n else if (varA < varB) comparison = -1;\r\n return order === \"desc\" ? comparison * -1 : comparison;\r\n };\r\n return result;\r\n }\r\n\r\n /**\r\n * Format weight\r\n * @param gr : grams\r\n * @returns : the formatted string\r\n */\r\n static formatWeight(gr: number): string {\r\n if (gr > 1000000) return (gr / 1000000).toFixed(2) + \" t\";\r\n else if (gr > 100000) return (gr / 100000).toFixed(2) + \" q\";\r\n else if (gr > 1000) return (gr / 1000).toFixed(2) + \" kg\";\r\n else return gr + \" gr\";\r\n }\r\n\r\n /**\r\n * Format file size\r\n * @param bytes : number of bytes\r\n * @returns : the formatted string\r\n */\r\n static formatFileSize(bytes: number): string {\r\n if (bytes > 1024000) return (bytes / 1024000).toFixed(1) + \" MB\";\r\n if (bytes > 1024) return (bytes / 1024).toFixed(1) + \" Kb\";\r\n return bytes + \" byte\";\r\n }\r\n\r\n /**\r\n * Compare two string\r\n * @param a : string a\r\n * @param b : string b\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static compareString(a?: string, b?: string): number {\r\n if ((a ?? \"\").toLowerCase() > (b ?? \"\").toLowerCase()) return 1;\r\n if ((a ?? \"\").toLowerCase() < (b ?? \"\").toLowerCase()) return -1;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Capitalize a string\r\n * @param s : the string to capitalize\r\n * @returns : the capitalized string \r\n */\r\n static capitalize(s?: string): string | undefined {\r\n if (!s) return undefined;\r\n let b = \"\";\r\n let cap = true;\r\n for (const char of s) {\r\n if (char === \" \") {\r\n b += char;\r\n cap = true;\r\n } else if (cap) {\r\n b += char.toUpperCase();\r\n cap = false;\r\n } else {\r\n b += char.toLowerCase();\r\n }\r\n }\r\n return b;\r\n }\r\n\r\n /**\r\n * Truncate a string\r\n * @param s : the string to truncate\r\n * @param max : the max number of chars\r\n * @returns : the truncated string\r\n */\r\n static truncate(s?: string, max: number = 500): string | undefined {\r\n if (!s) return undefined;\r\n if (s.length < max) return s;\r\n let i = max - 1;\r\n while (i > 0) {\r\n if (s[i] === ' ') return s.slice(0, i);\r\n i--;\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Join a list of strings\r\n * @param items : the list of strings\r\n * @param sep : the separator string\r\n * @param max : the maximum resulting string\r\n * @returns : the joined string\r\n */\r\n static join(items?: string[], sep: string = \" \", max: number = 350): string | undefined {\r\n if (!items || items.length === 0) return undefined;\r\n if (items.length > 1) {\r\n let l = 0;\r\n let s = \"\"\r\n while (s.length < max && items.length > l) {\r\n if (l > 0) {\r\n s += sep;\r\n }\r\n s += items[l++];\r\n }\r\n if (items.length > l) {\r\n s += \"...\";\r\n }\r\n return s;\r\n }\r\n return items[0];\r\n }\r\n\r\n /**\r\n * Replace stuff in text html\r\n * @param s : the string to process\r\n * @returns : the replaced string \r\n */\r\n static replaceAsHtml(s?: string): string {\r\n if (!s) return undefined;\r\n const regex = /https?:\\/\\/.*[^\\s]/ig\r\n const m = regex.exec(s);\r\n if (m && m.length > 0) {\r\n let v = undefined;\r\n for (let i = 0; i < m.length; i++) {\r\n v = m[i];\r\n s = s.replace(v, '<a href=\"' + v + '\" target=\"_blank\">' + v + '</a>');\r\n }\r\n }\r\n return s;\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Convert markdown to html\r\n * @param markdown : the markdown data\r\n * @param escapeEntities : true to escape entities. Default is false\r\n * @returns the html\r\n */\r\n static markdownToHtml(markdown: string, escapeEntities: boolean = false): string {\r\n let html = markdown;\r\n\r\n //1. Escape HTML entities \r\n if (escapeEntities == true) {\r\n html = html.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n }\r\n\r\n // 2. Code blocks \r\n html = html.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (_match, lang, code) => {\r\n const langClass = lang ? ` class=\"language-${lang}\"` : '';\r\n return `<pre><code${langClass}>${code.trim()}</code></pre>`;\r\n });\r\n\r\n // 3. Inline code\r\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\r\n\r\n // 4. Headers \r\n html = html.replace(/^##### (.*$)/gim, '<h5>$1</h5>');\r\n html = html.replace(/^#### (.*$)/gim, '<h4>$1</h4>');\r\n html = html.replace(/^### (.*$)/gim, '<h3>$1</h3>');\r\n html = html.replace(/^## (.*$)/gim, '<h2>$1</h2>');\r\n html = html.replace(/^# (.*$)/gim, '<h1>$1</h1>');\r\n\r\n // 5. Horizontal rules\r\n html = html.replace(/^---+$/gim, '<hr>');\r\n html = html.replace(/^\\*\\*\\*+$/gim, '<hr>');\r\n\r\n // 6. Links \r\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\">$1</a>');\r\n\r\n // 7. Images\r\n html = html.replace(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g, '<img src=\"$2\" alt=\"$1\">');\r\n\r\n // 8. Bold e Italic \r\n html = html.replace(/\\*\\*\\*([^*]+)\\*\\*\\*/gim, '<strong><em>$1</em></strong>');\r\n html = html.replace(/___([^_]+)___/gim, '<strong><em>$1</em></strong>');\r\n html = html.replace(/\\*\\*([^*]+)\\*\\*/gim, '<strong>$1</strong>');\r\n html = html.replace(/__([^_]+)__/gim, '<strong>$1</strong>');\r\n html = html.replace(/\\*([^*]+)\\*/gim, '<em>$1</em>');\r\n html = html.replace(/_([^_]+)_/gim, '<em>$1</em>');\r\n\r\n // 9. Strikethrough\r\n html = html.replace(/~~([^~]+)~~/gim, '<del>$1</del>');\r\n\r\n // 10. Blockquotes\r\n html = html.replace(/^> (.*$)/gim, '<blockquote>$1</blockquote>');\r\n\r\n // 11. Tables\r\n html = this.markdownConvertTables(html);\r\n\r\n // 12. Lists \r\n html = this.markdownConvertLists(html);\r\n\r\n // 13. Line breaks\r\n html = html.replace(/ $/gm, '<br>');\r\n\r\n // 14. Paragrafi (ultimo step per non interferire con altri elementi)\r\n html = this.markdownConvertParagraphs(html);\r\n\r\n // 15. Clean up extra newlines\r\n html = html.replace(/\\`\\`\\`markdown/g, '');\r\n html = html.replace(/\\*\\*/g, '');\r\n html = html.replace(/\\n{3,}/g, '\\n\\n');\r\n \r\n\r\n return html.trim();\r\n }\r\n\r\n /**\r\n * Convert markdown table to html\r\n * @param markdown: the markdown string\r\n * @returns : the html\r\n */\r\n private static markdownConvertTables(markdown: string): string {\r\n const lines = markdown.split('\\n');\r\n const result: string[] = [];\r\n let inTable = false;\r\n let tableRows: string[] = [];\r\n let headerProcessed = false;\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n const line = lines[i].trim();\r\n if (line.includes('|') && line.length > 1) {\r\n const nextLine = i + 1 < lines.length ? lines[i + 1].trim() : '';\r\n const isHeaderSeparator = /^\\|?[\\s\\-:|]+\\|?$/.test(nextLine);\r\n if (!inTable) {\r\n inTable = true;\r\n headerProcessed = false;\r\n tableRows = [];\r\n }\r\n if (isHeaderSeparator && !headerProcessed) {\r\n tableRows.push(this.markdownConvertTableRow(line, true));\r\n headerProcessed = true;\r\n i++;\r\n } else if (!isHeaderSeparator) {\r\n tableRows.push(this.markdownConvertTableRow(line, false));\r\n }\r\n } else {\r\n if (inTable && tableRows.length > 0) {\r\n result.push('<table>');\r\n result.push(...tableRows);\r\n result.push('</table>');\r\n tableRows = [];\r\n inTable = false;\r\n }\r\n result.push(line);\r\n }\r\n }\r\n if (inTable && tableRows.length > 0) {\r\n result.push('<table>');\r\n result.push(...tableRows);\r\n result.push('</table>');\r\n }\r\n return result.join('\\n');\r\n }\r\n\r\n /**\r\n * Convert a markdown table row to html\r\n * @param row : the markdown row\r\n * @param isHeader : true if is header\r\n * @returns the html\r\n */\r\n private static markdownConvertTableRow(row: string, isHeader: boolean): string {\r\n const cells = row.split('|').map(cell => cell.trim()).filter(cell => cell !== '');\r\n const tag = isHeader ? 'th' : 'td';\r\n const cellsHtml = cells.map(cell => ` <${tag}>${cell}</${tag}>`).join('\\n');\r\n return ` <tr>\\n${cellsHtml}\\n </tr>`;\r\n }\r\n\r\n\r\n /**\r\n * Convert a markdown list to html\r\n * @param markdown : the markdown list\r\n * @returns the html\r\n */\r\n private static markdownConvertLists(markdown: string): string {\r\n markdown = markdown.replace(/^\\* (.*$)/gim, '<li data-type=\"ul\">$1</li>');\r\n markdown = markdown.replace(/^- (.*$)/gim, '<li data-type=\"ul\">$1</li>');\r\n markdown = markdown.replace(/^\\+ (.*$)/gim, '<li data-type=\"ul\">$1</li>');\r\n markdown = markdown.replace(/^\\d+\\. (.*$)/gim, '<li data-type=\"ol\">$1</li>');\r\n const lines = markdown.split('\\n');\r\n const result: string[] = [];\r\n let currentList: MarkdownListState = { type: null, items: [] };\r\n for (const line of lines) {\r\n const ulMatch = line.match(/^<li data-type=\"ul\">(.*)<\\/li>$/);\r\n const olMatch = line.match(/^<li data-type=\"ol\">(.*)<\\/li>$/);\r\n if (ulMatch) {\r\n if (currentList.type !== 'ul') {\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n }\r\n currentList = { type: 'ul', items: [ulMatch[1]] };\r\n } else {\r\n currentList.items.push(ulMatch[1]);\r\n }\r\n } else if (olMatch) {\r\n if (currentList.type !== 'ol') {\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n }\r\n currentList = { type: 'ol', items: [olMatch[1]] };\r\n } else {\r\n currentList.items.push(olMatch[1]);\r\n }\r\n } else {\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n currentList = { type: null, items: [] };\r\n }\r\n result.push(line);\r\n }\r\n }\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n }\r\n return result.join('\\n');\r\n }\r\n\r\n /**\r\n * Wrap a list\r\n * @param type: the list type \r\n * @param items : the item list\r\n * @returns the html\r\n */\r\n private static markdownWrapList(type: 'ul' | 'ol', items: string[]): string {\r\n const listItems = items.map(item => ` <li>${item}</li>`).join('\\n');\r\n return `<${type}>\\n${listItems}\\n</${type}>`;\r\n }\r\n\r\n /**\r\n * Convert markdown paragraphs to html\r\n * @param markdown : the markdown paragraphs\r\n * @returns the html\r\n */\r\n private static markdownConvertParagraphs(markdown: string): string {\r\n const lines = markdown.split('\\n');\r\n const result: string[] = [];\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed) {\r\n result.push('');\r\n continue;\r\n }\r\n if (trimmed.startsWith('<') && trimmed.endsWith('>')) {\r\n result.push(line);\r\n continue;\r\n }\r\n if (trimmed.startsWith('<') || trimmed.endsWith('>')) {\r\n result.push(line);\r\n continue;\r\n }\r\n result.push(`<p>${trimmed}</p>`);\r\n }\r\n return result.join('\\n');\r\n }\r\n\r\n\r\n\r\n /**\r\n * Compare two names\r\n * @param a : name a\r\n * @param b : name b\r\n * @returns : true if a equals b\r\n */\r\n static compareNames(a?: string, b?: string): boolean {\r\n if (a) a = a.trim();\r\n if (b) b = b.trim();\r\n if (a && b && a.length !== b.length) return false;\r\n if (this.compareString(a, b) === 0) return true;\r\n const p1 = a.split(\" \");\r\n const p2 = b.split(\" \");\r\n if (p1.length !== p2.length) return false;\r\n let matches = p1.length;\r\n for (const s1 of p1) {\r\n for (const s2 of p2) {\r\n if (this.compareString(s1, s2) === 0) {\r\n matches--;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matches === 0;\r\n }\r\n\r\n /**\r\n * Cipher a text\r\n * @param text : the text\r\n * @param key : the key\r\n * @param reverse : true to decode, false to encode\r\n * @returns :the ciphered text\r\n */\r\n static cipher(text: string, key: string, reverse: boolean = false): string | undefined {\r\n // Surrogate pair limit\r\n var bound = 0x10000;\r\n\r\n // Create string from character codes\r\n return String.fromCharCode.apply(\r\n null,\r\n // Turn string to character codes\r\n text.split(\"\").map(function (v: any, i: number) {\r\n // Get rotation from key\r\n var rotation = key.charCodeAt(i % key.length);\r\n\r\n // Are we decrypting?\r\n if (reverse) rotation = -rotation;\r\n\r\n // Return current character code + rotation\r\n return (v.charCodeAt() + rotation + bound) % bound;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Clone an object using JSON\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static clone(obj: any): any | undefined {\r\n if (!obj) return undefined;\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n\r\n /**\r\n * Clone an object using deep cloning\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static deepClone<T>(obj: any, dest?: T): T {\r\n const cloneObj = dest ? dest : (obj.constructor() as any);\r\n const attributes = Object.keys(obj);\r\n for (const attribute of attributes) {\r\n const property = obj[attribute];\r\n if (typeof property === \"object\" && property != null) {\r\n cloneObj[attribute] = this.deepClone(property);\r\n } else {\r\n cloneObj[attribute] = property;\r\n }\r\n }\r\n return cloneObj;\r\n }\r\n\r\n\r\n /**\r\n * Check if a string is a valid UUID\r\n * @param value : the value to parse\r\n * @returns : true if is a valid UUID\r\n */\r\n static parseUUID(value?: string): boolean {\r\n const regex = /^({|()?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(}|))?$/;\r\n return value?.length > 0 && regex.test(value);\r\n }\r\n\r\n /**\r\n * Parse and ensure that UUID is not empty\r\n * @param value : the value to parse\r\n * @returns : true if valid and not empty\r\n */\r\n static parseUUIDNotEmpty(value?: string): boolean {\r\n const regex = /^({|()?0{8}-(0{4}-){3}0{12}(}|))?$/;\r\n return this.parseUUID(value) && !regex.test(value);\r\n }\r\n\r\n /**\r\n * Return an empty UUID\r\n * @returns : the empty UUID\r\n */\r\n static emptyUUID(): string { return \"00000000-0000-0000-0000-000000000000\" };\r\n\r\n /**\r\n * Create a new UUID\r\n * @returns : the string UUID\r\n */\r\n static generateUUID(): string {\r\n const regex = /[xy]/g;\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(regex, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid email or null\r\n * @param value : email\r\n * @returns : true if the email is valid or empty\r\n */\r\n static parseEmail(value?: string): boolean {\r\n if (!value) return true;\r\n const regex = /(?:[a-z0-9+!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/gi\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid url or null\r\n * @param value : the url to parse\r\n * @returns : true if the url is valid or empty\r\n */\r\n static parseUrl(value?: string): boolean {\r\n if (!value) return true;\r\n const regex = new RegExp(\r\n \"(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?\"\r\n );\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Get date parts from a string value\r\n * @param value : the string to parse\r\n * @returns : an array of numbers with year, month, day\r\n */\r\n static getDateParts(value?: string): number[] | undefined {\r\n if (!value) return undefined;\r\n let parts: number[] = [];\r\n if (value.indexOf(\"-\") !== -1) {\r\n const p = value.split(\"-\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[0]), parseInt(p[1]) - 1, parseInt(p[2])];\r\n } else if (value.indexOf(\"/\") !== -1) {\r\n const p = value.split(\"/\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[2]), parseInt(p[1]) - 1, parseInt(p[0])];\r\n }\r\n return parts;\r\n }\r\n\r\n /**\r\n * Parse a date\r\n * @param value : the value to check\r\n * @param locale : the locale to use\r\n * @returns : a valid Date object or null\r\n */\r\n static parseDate(value?: string | Date, locale: any = it): Date | undefined {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A Date value\r\n if (value instanceof Date && value.getTime()) return value;\r\n // Parse known formats using date-fns\r\n let d = parseISO(value as string);\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'dd/MM/yyyy', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'yyyy-MM-dd', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n // Parse values manually\r\n let parts = this.getDateParts(value as string);\r\n if (!parts) return undefined;\r\n if (parts[0] < 100) parts[0] += 2000;\r\n if (isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return undefined;\r\n if (isNaN(parts[1]) || parts[1] < 0) return undefined;\r\n if (isNaN(parts[2]) || parts[2] < 0) return undefined;\r\n if (parts[1] > 11) return undefined;\r\n if (parts[1] === 1 && parts[2] > 29) return undefined;\r\n else if (parts[1] !== 1 && parts[2] > 31) return undefined;\r\n return new TZDate(parts[0], parts[1], parts[2], 12);\r\n }\r\n\r\n /**\r\n * Format a date\r\n * @param value : the date or string to format\r\n * @param fmt : the DateFormat to use or the string pattern\r\n * @param locale : the locale to use (default is IT)\r\n * @returns : the formatted string\r\n */\r\n static formatDate(\r\n value?: Date | string,\r\n fmt: DateFormat | string = DateFormat.Short,\r\n locale: any = it): string {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date \r\n if (!(value instanceof Date && value.getTime()))\r\n return undefined;\r\n // Format\r\n switch (fmt) {\r\n case DateFormat.Short: return format(value, \"dd/MM/yyyy\", { locale: locale });\r\n case DateFormat.Long: return format(value, \"d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortMonth: return format(value, \"d MMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithWeekDay: return format(value, \"EEEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortWeekDay: return format(value, \"EEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.MonthAndYear: return format(value, \"MMM yyyy\", { locale: locale });\r\n case DateFormat.LongMonthAndYear: return format(value, \"MMMM yyyy\", { locale: locale });\r\n case DateFormat.WeekDay: return format(value, \"EEE, d\", { locale: locale });\r\n case DateFormat.LongWeekDay: return format(value, \"EEEE, d\", { locale: locale });\r\n case DateFormat.DayAndMonth: return format(value, \"d MMMM\", { locale: locale });\r\n case DateFormat.ShortUS: return format(value, \"MM/dd/yyyy\", { locale: locale });\r\n case DateFormat.ShortISO8601: return format(value, \"yyyy-MM-dd\", { locale: locale });\r\n default:\r\n return format(value, fmt, { locale: locale });\r\n }\r\n }\r\n\r\n /**\r\n * Return an italian local date\r\n * @param value : the date\r\n * @returns : the new date\r\n */\r\n static toLocalDate(value?: Date | string): Date {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date\r\n if (!(value instanceof Date && value.getTime())) return undefined;\r\n // Update date\r\n return new TZDate(value, \"Europe/Rome\");\r\n }\r\n\r\n /**\r\n * Update a DateInterval object according to a string\r\n * @param value : string value\r\n * @param interval : DateInterval value to update\r\n * @param end : true if must be updated the first or the end value \r\n * @param copy : copy the same value (works only if not end element)\r\n */\r\n static changeDateInterval(value: string, interval: DateInterval, end: boolean = false, copy: boolean = false) {\r\n if (value) {\r\n let year = -1;\r\n if (value.length === 4 && (year = parseInt(value)) > 1750) {\r\n if (!end) {\r\n interval.from = new TZDate(new Date(year, 0, 1), 'Europe/Rome');\r\n interval.to = new TZDate(new Date(year, 11, 31), 'Europe/Rome');\r\n } else\r\n interval.to = new Date(year, 11, 31);\r\n } else {\r\n let parts = this.getDateParts(value);\r\n if (!parts || isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return;\r\n const d = new TZDate(new Date(parts[0], parts[1], parts[2]), 'Europe/Rome');\r\n if (end)\r\n interval.to = d;\r\n else if (copy) {\r\n interval.from = d;\r\n interval.to = d;\r\n } else\r\n interval.from = d;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Encode url\r\n * @param value : the value to encode\r\n * @returns : the url encoded string\r\n */\r\n static urlEncode(value: string): string | undefined {\r\n return value?.length > 0\r\n ? encodeURIComponent(value)\r\n : undefined;\r\n }\r\n\r\n /**\r\n * Decode url\r\n * @param value : the url to decode\r\n * @returns : the decode url string\r\n */\r\n static urlDecode(value?: string): string | undefined {\r\n const regex = /\\+/g;\r\n return value?.length > 0\r\n ? decodeURIComponent((value + \"\").replace(regex, \"%20\"))\r\n : undefined;\r\n }\r\n\r\n /**\r\n * Get a querystring parameter value\r\n * @param name : the parameter name\r\n * @returns : the string value\r\n */\r\n static getQueryStringValueByName(name: string): string {\r\n if (!this.isBrowser()) return undefined;\r\n const url = window.location.href;\r\n if (url.includes(\"?\")) {\r\n const httpParams = new HttpParams({ fromString: url.split(\"?\")[1] });\r\n const v = decodeURIComponent(httpParams.get(name));\r\n if (v && v !== \"null\") return v;\r\n else return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Generate a password\r\n * @returns : the password string\r\n */\r\n static generatePassword(): string {\r\n const random = \"$\" + Math.random().toString(36).slice(-11);\r\n let password = \"\";\r\n let hasUpperCase = false;\r\n for (const rnd of random) {\r\n if (!hasUpperCase && \"abcdefghjilmnopqrstuvywxz\".includes(rnd)) {\r\n password += rnd.toUpperCase();\r\n hasUpperCase = true;\r\n } else {\r\n password += rnd;\r\n }\r\n }\r\n if (!hasUpperCase)\r\n password = password.substring(0, 11) + \"M\";\r\n return password;\r\n }\r\n\r\n /**\r\n * Calculate password strength\r\n * @param password: the password to evaluate\r\n * @returns the password strength info\r\n */\r\n static calculatePasswordStrength(password?: string): PasswordStrength {\r\n if (password?.length > 0) {\r\n let score = 0;\r\n const suggestions: string[] = [];\r\n\r\n // Length\r\n if (password.length >= 10) score++;\r\n else suggestions.push('Usa almeno 10 caratteri.');\r\n if (password.length >= 12) score++;\r\n else if (password.length >= 10) suggestions.push('Considera di usare più di 12 caratteri.');\r\n\r\n // Lowercase letters\r\n if (/[a-z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere minuscole.');\r\n\r\n // Uppercase letters\r\n if (/[A-Z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere maiuscole.');\r\n\r\n // Numbers\r\n if (/\\d/.test(password)) score++;\r\n else suggestions.push('Aggiungi numeri.');\r\n\r\n // Special characters\r\n if (/[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/.test(password)) score++;\r\n else suggestions.push('Aggiungi caratteri speciali (!@#$%^&*).');\r\n\r\n // Common patterns\r\n if (/(.)\\1{2,}/.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita di ripetere lo stesso carattere.');\r\n }\r\n if (/123|abc|qwe/i.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita sequenze comuni (123, abc, qwe).');\r\n }\r\n\r\n // Label and color\r\n let label: string;\r\n let color: string;\r\n let isValid: boolean;\r\n if (score <= 2) {\r\n label = 'Molto debole';\r\n color = '#f44336';\r\n isValid = false;\r\n } else if (score <= 3) {\r\n label = 'Debole';\r\n color = '#ff9800';\r\n isValid = false;\r\n } else if (score <= 4) {\r\n label = 'Media';\r\n color = '#ffc107';\r\n isValid = true;\r\n } else if (score <= 5) {\r\n label = 'Forte';\r\n color = '#8bc34a';\r\n isValid = true;\r\n } else {\r\n label = 'Molto forte';\r\n color = '#4caf50';\r\n isValid = true;\r\n }\r\n\r\n return {\r\n score: score,\r\n label: label,\r\n color: color,\r\n suggestions: suggestions,\r\n isValid: isValid\r\n };\r\n } else\r\n return {\r\n score: 0,\r\n isValid: false,\r\n suggestions: []\r\n };\r\n\r\n }\r\n\r\n\r\n /**\r\n * Check if current browser supports touch\r\n * @returns : true if the display is touchable\r\n */\r\n static isTouchable(): boolean {\r\n return (\r\n this.isBrowser() && (\r\n \"ontouchstart\" in window ||\r\n navigator.maxTouchPoints > 0)\r\n );\r\n }\r\n\r\n /**\r\n * This check will prevent 'window' logic to be executed\r\n * while executing the server rendering\r\n * @returns : true if using the browser\r\n */\r\n static isBrowser(): boolean {\r\n return typeof (window) !== 'undefined';\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n * @returns : a node list\r\n */\r\n static toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, undefined);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n * @param parent : the parent node\r\n * @returns : a node list \r\n */\r\n private static _toNodes(folders: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n folders.forEach((n: INode) => {\r\n const node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: undefined,\r\n bag: n,\r\n };\r\n const children = n.children ?? n.subFolders ?? [];\r\n if (children.length > 0) {\r\n node.children = this._toNodes(n.children ?? n.subFolders, node);\r\n }\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Return the flags array to be used in selections\r\n * @param value : the new value\r\n * @param max: the max number of flags\r\n */\r\n static getFlags(value: number, max: number = 30): number[] {\r\n if (value) {\r\n let items: number[] = [];\r\n let v = 1;\r\n let m = 1 << max;\r\n while (v < m) {\r\n if ((value & v) === v) items.push(v);\r\n v = v << 1;\r\n }\r\n return items;\r\n } else return [];\r\n }\r\n\r\n /**\r\n * Check if a color is light or dark\r\n * @param color : the color\r\n * @param minimumLuminance : the lumimance to consider\r\n * @returns true if the color is light\r\n */\r\n static isColorLight(color: string, minimumLuminance: number = 186): boolean {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.style.color = color;\r\n document.body.appendChild(tempDiv);\r\n const rgb = getComputedStyle(tempDiv).color;\r\n document.body.removeChild(tempDiv);\r\n const result = rgb.match(/\\d+/g);\r\n if (!result || result.length < 3) return true; // fallback\r\n const r = parseInt(result[0], 10);\r\n const g = parseInt(result[1], 10);\r\n const b = parseInt(result[2], 10);\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n return luminance > minimumLuminance;\r\n }\r\n}\r\n","import { Directive, HostListener, OnDestroy, OnInit, input } from '@angular/core';\r\nimport { DateInterval } from '../definitions';\r\nimport { SystemUtils } from '../system';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[dateIntervalChange]',\r\n standalone: true,\r\n})\r\nexport class DateIntervalChangeDirective implements OnInit, OnDestroy {\r\n readonly dateIntervalChange = input<DateInterval>(new DateInterval(null, null));\r\n readonly end = input<boolean>(false);\r\n private subject = new Subject();\r\n private subscription: Subscription;\r\n\r\n ngOnInit() {\r\n this.subscription = this.subject\r\n .pipe(debounceTime(100))\r\n .subscribe((e: any) => { \r\n const value = (e.target as HTMLInputElement).value;\r\n SystemUtils.changeDateInterval(value, this.dateIntervalChange(), this.end(), e.key === ' ');\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @HostListener('keyup', ['$event']) public onKeyup(e: KeyboardEvent): void {\r\n if (e.key === ' ') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n this.subject.next(event);\r\n\r\n }\r\n}","import {\r\n Directive,\r\n HostListener,\r\n Injectable,\r\n input,\r\n output\r\n} from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Directive({\r\n selector: '[copyClipboard]',\r\n standalone: true\r\n})\r\nexport class CopyClipboardDirective {\r\n readonly payload = input<string>(undefined, { alias: \"copyClipboard\" });\r\n\r\n readonly copied = output<string>({ alias: 'copied' });\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(e: MouseEvent): void {\r\n e.preventDefault();\r\n if (!this.payload()) return;\r\n\r\n if (SystemUtils.isBrowser()) {\r\n let listener = (e: ClipboardEvent) => {\r\n let clipboard = e.clipboardData;\r\n const payload = this.payload();\r\n clipboard.setData('text/html', payload.toString());\r\n e.preventDefault();\r\n\r\n this.copied.emit(payload);\r\n };\r\n\r\n document.addEventListener('copy', listener, false);\r\n document.execCommand('copy');\r\n document.removeEventListener('copy', listener, false);\r\n }\r\n }\r\n}\r\n","import { Directive, forwardRef, input } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n} from \"@angular/forms\";\r\nimport { endOfDay } from 'date-fns';\r\nimport { Validated } from '../definitions';\r\nimport { SystemUtils } from \"../system\";\r\n\r\n\r\n@Directive({\r\n selector: '[validator]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true }],\r\n standalone: true,\r\n})\r\nexport class ValidatorDirective implements Validator {\r\n readonly validator = input<(control: AbstractControl) => ValidationErrors | undefined>(undefined);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n return this.validator()(control);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[validIf]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ValidIfDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class ValidIfDirective implements Validator {\r\n readonly validIf = input<boolean>(false);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n let isValid = false;\r\n let c = control.value ? (control.value as Validated) : null;\r\n if (!c) isValid = this.validIf() === true;\r\n else {\r\n try {\r\n isValid = c.isValid();\r\n } catch { }\r\n }\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { validIf: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[equals]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EqualsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EqualsValidatorDirective implements Validator {\r\n readonly equals = input<AbstractControl>(null);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const isValid = this.equals().value === control.value;\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { equals: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[notEqual]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEqualValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotEqualValidatorDirective implements Validator {\r\n\r\n readonly notEqual = input<AbstractControl>(undefined);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n\r\n const notEqual = this.notEqual();\r\n const isValid = (!notEqual.value && !control.value) || (notEqual.value !== control.value);\r\n const errors: ValidationErrors | undefined = isValid ? null : { 'notequal': true };\r\n\r\n // immediate show up\r\n const notEqualValue = this.notEqual();\r\n if (errors) {\r\n control.markAsTouched();\r\n } else if (notEqualValue.hasError('notequal')) {\r\n notEqualValue.setErrors({ 'notequal': null });\r\n notEqualValue.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n notEqualValue.markAsTouched();\r\n notEqualValue.markAsDirty();\r\n }\r\n return errors;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[emails]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EmailsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EmailsValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n let isValid = true;\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n var parts = input.replaceAll(/\\r\\n/g, \"\").split(\";\");\r\n for (var i = 0; i < parts.length; i++) {\r\n if (parts[i].length > 0) {\r\n if (!SystemUtils.parseEmail(parts[i])) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isValid) {\r\n return { emails: \"Elenco non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[guid]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GuidValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class GuidValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const isValid = SystemUtils.parseUUID(input);\r\n if (!isValid) {\r\n return { guid: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[sqlDate]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SqlDateValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class SqlDateValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d.getFullYear() > 1750;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[notFuture]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotFutureValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotFutureValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n const today = endOfDay(new Date());\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d <= today;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[url]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UrlValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n const isValid = SystemUtils.parseUrl(input);\r\n if (!isValid) {\r\n return { url: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[fileSize]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => FileSizeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class FileSizeValidatorDirective implements Validator {\r\n readonly maxSizeMb = input<number>(5);\r\n readonly minSizeMb = input<number>(0);\r\n readonly size = input<number>(undefined);\r\n\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n const size = this.size();\r\n let s = size ? size : 0;\r\n if (!input) return undefined;\r\n const isValid = s <= this.maxSizeMb() && s >= this.minSizeMb();\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { fileSize: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[maxTerms]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MaxTermsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class MaxTermsValidatorDirective implements Validator {\r\n readonly maxTerms = input<number>(0);\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input) return undefined;\r\n const terms = input?.match(/\\S+/g)?.length ?? 0;\r\n const isValid = terms <= this.maxTerms();\r\n if (isValid) {\r\n return undefined;\r\n } else {\r\n return { maxTerms: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[password]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => PasswordValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class PasswordValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value ?? '';\r\n const strength = SystemUtils.calculatePasswordStrength(input);\r\n if (!strength.isValid) {\r\n return { password: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[time]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => TimeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class TimeValidatorDirective implements Validator {\r\n readonly slots = input<string>(undefined);\r\n\r\n\r\n /**\r\n * Retrieve hours as a number from a time string (e: 12:00)\r\n * @param value : the time string\r\n * @returns the hours as a number or -1\r\n */\r\n private getTime(value: string): number | undefined {\r\n const p = value.split(':');\r\n if (p.length !== 2) return -1;\r\n const hh = parseInt(p[0]);\r\n if (hh < 0 || hh > 23) return -1;\r\n const mm = parseInt(p[1]);\r\n if (mm < 0 || hh > 59) return -1;\r\n return parseInt(p[0] + p[1]);\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const input = control.value;\r\n if (!input || input.length === 0) return undefined;\r\n let isValid: boolean = false;\r\n const t = this.getTime(input);\r\n if (t !== -1) {\r\n const slotsValue = this.slots();\r\n if (slotsValue) {\r\n const slots = slotsValue.split('|');\r\n slots.forEach(s => {\r\n const t1 = this.getTime(s.substring(0, 5));\r\n const t2 = this.getTime(s.substring(6));\r\n if (t1 !== -1 && t2 !== -1 && t1 <= t && t2 >= t) {\r\n // Good\r\n isValid = true;\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n if (!isValid) {\r\n return { time: \"Non valido.\" };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[notEmpty]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEmptyValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotEmptyValidatorDirective implements Validator {\r\n\r\n validate(control: AbstractControl): ValidationErrors | undefined {\r\n const value = control?.value;\r\n if (!value || typeof value !== 'string' || value.length === 0) return undefined;\r\n const isValid = value.trim().length > 0;\r\n if (!isValid) {\r\n return { notEmpty: true };\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { format } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'format',\r\n standalone: true\r\n})\r\nexport class FormatPipe implements PipeTransform {\r\n\r\n\r\n transform(\r\n value?: any | undefined,\r\n type: string = 'date',\r\n pattern: string = \"dd/MM/yyyy\"): string | undefined {\r\n if (value === undefined || value === null) return undefined;\r\n switch (type) {\r\n case 'D':\r\n case 'date':\r\n const d = SystemUtils.parseDate(value, it);\r\n if (d) return format(d, pattern, { locale: it });\r\n break;\r\n case 'C':\r\n case 'currency':\r\n return new Intl.NumberFormat('it-IT', { style: 'currency', currency: 'EUR' }).format(value ?? 0);\r\n case 'N':\r\n case 'number':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 2 }).format(value ?? 0);\r\n case 'N0':\r\n case 'number0':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0);\r\n case 'P':\r\n case 'percentage':\r\n return new Intl.NumberFormat('it-IT', { style: 'percent', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0); \r\n }\r\n return undefined;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'replace',\r\n standalone: true\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n\r\n private sanitizer = inject(DomSanitizer);\r\n \r\n transform(value: string | undefined, regexValue: string, replaceValue: string): SafeHtml {\r\n if (!value) return undefined;\r\n if (regexValue === '\\n' && !replaceValue) {\r\n replaceValue = '<br>';\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replace(new RegExp(regexValue, 'g'), replaceValue));\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeHtml',\r\n standalone: true\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value ?? '');\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeUrl',\r\n standalone: true\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value ?? '');\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'callback',\r\n pure: false,\r\n standalone: true\r\n})\r\nexport class SearchCallbackPipe implements PipeTransform {\r\n transform(items: any[] | undefined, callback: (item: any) => boolean): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n return items.filter(item => callback(item));\r\n }\r\n}\r\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\nimport { SearchFilterMetadata } from '../definitions';\r\n\r\n// ---------------------------------------------------------------------------------\r\n// 2023.0921 aggiunto un campo opzionale di tipo SearchFilterMetadata per i conteggi\r\n//\r\n// - nel chiamante:\r\n// let items: Searchable[] = [...];\r\n// let myFilterText: string = 'testo del filtro';\r\n// const myFilterMetadata: SearchFilterMetadata = { total: 0, count: 0 };\r\n// \r\n// <div *ngFor=\"let item of items | search:myFilterText:myFilterMetadata\">\r\n// <div>Totale: {{ myFilterMetadata.total }}, Filtrati: {{ myFilterMetadata.count }}</div>\r\n// ---------------------------------------------------------------------------------\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'search',\r\n standalone: true\r\n})\r\nexport class SearchFilterPipe implements PipeTransform {\r\n transform(items?: any[], value?: string, metadata?: SearchFilterMetadata): any {\r\n\r\n // se non vengono passati i metadati ne crea una copia locale per evitare gli if\r\n metadata = metadata || { total: 0, count: 0 };\r\n\r\n if (!items || !value) {\r\n return items;\r\n }\r\n let result = items.filter(item => {\r\n if (item) {\r\n if (item.searchBag)\r\n return item.searchBag.name\r\n .toLowerCase()\r\n .indexOf(value.toLowerCase()) !== -1;\r\n else return item.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n }\r\n return null;\r\n });\r\n\r\n // aggiorna i conteggi\r\n metadata.total = items.length;\r\n metadata.count = result.length;\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'formatHtml',\r\n standalone: true\r\n})\r\nexport class FormatHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replaceAll(/(?:\\r\\n|\\r|\\n)/g, '<br>') ?? '');\r\n }\r\n}\r\n","export const UtilsMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n\r\n // Select dialog\r\n UTILS_DIALOGS_SELECT_OPTIONS_CHANGED: '§utils-dialogs-select-options-changed'\r\n};\r\n","import { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { SystemUtils } from \"./system\";\r\nimport { EventEmitter } from '@angular/core';\r\n\r\nexport class SelectableModel<T, V> {\r\n\r\n changed: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n private _all: T[] = [];\r\n get all(): T[] {\r\n return this._all;\r\n }\r\n private _current: SelectionModel<T>;\r\n get current(): SelectionModel<T> {\r\n return this._current;\r\n }\r\n private _lookupFieldName: string;\r\n\r\n constructor(\r\n allowMultiSelect: boolean = true,\r\n lookupFieldName: string = \"id\"\r\n ) {\r\n this._current = new SelectionModel<T>(allowMultiSelect, []);\r\n this._all = [];\r\n this._lookupFieldName = lookupFieldName;\r\n }\r\n\r\n /**\r\n * Update the view of an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n updateCurrent(item: T, lookupValue: V) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n toggle(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } else {\r\n this._all.splice(p, 1);\r\n }\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n select(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } \r\n this._current.select(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Deselect an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n deselect(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deselect all specified item lookup values\r\n * @param lookupValues : the values\r\n */\r\n deselectByValues(lookupValues: V[]) {\r\n if (!lookupValues || lookupValues.length === 0) return;\r\n lookupValues.forEach(n => {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n n\r\n );\r\n if (p != -1) {\r\n let item = this._all[p];\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear current view\r\n * @param clearFunc : the function used to clear\r\n */\r\n clearCurrent(clearFunc: any) {\r\n this._current.selected.forEach(n => {\r\n clearFunc(n);\r\n });\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Deselect all items\r\n */\r\n clear() {\r\n this._all = [];\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Checks if an item is selected using its lookup value\r\n * @param lookupValue : the value\r\n * @returns : true if the value is selected\r\n */\r\n isSelected(lookupValue?: V): boolean {\r\n return (lookupValue &&\r\n SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n ) != -1\r\n );\r\n }\r\n\r\n /**\r\n * Checks if a selection exists\r\n * @returns : true if at least one selection exists\r\n */\r\n hasValue(): boolean {\r\n return this._all.length > 0;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface BroadcastMessageInfo {\r\n id: string;\r\n data?: any;\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BroadcastService {\r\n private subject = new Subject<BroadcastMessageInfo>();\r\n\r\n /**\r\n * Send a message\r\n * @param id : the message id\r\n * @param data : the data to send\r\n * @param delay : the number of milliseconds to wait before sending the message\r\n */\r\n sendMessage(id: string, data: any = null, delay: number = 0) {\r\n setTimeout(() => {\r\n this.subject.next({ id: id, data: data } as BroadcastMessageInfo);\r\n }, delay);\r\n }\r\n\r\n /**\r\n * Get the next message as observable\r\n * @returns : the observable object\r\n */\r\n getMessage(): Observable<BroadcastMessageInfo> {\r\n return this.subject.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n \r\n private _appUri: string = '';\r\n get appUri() {\r\n return this._appUri;\r\n }\r\n set appUri(value: string) {\r\n this._appUri = value;\r\n }\r\n\r\n private _appServiceUri: string = '';\r\n get appServiceUri() {\r\n return this._appServiceUri;\r\n }\r\n set appServiceUri(value: string) {\r\n this._appServiceUri = value;\r\n }\r\n\r\n private _appLoginRedirectUri: string = '';\r\n get appLoginRedirectUri() {\r\n return this._appLoginRedirectUri ?? this._appUri;\r\n }\r\n set appLoginRedirectUri(value: string) {\r\n this._appLoginRedirectUri = value;\r\n }\r\n\r\n private _appServiceLoginUri: string = '';\r\n get appServiceLoginUri() {\r\n return this._appServiceLoginUri ?? this._appServiceUri;\r\n }\r\n set appServiceLoginUri(value: string) {\r\n this._appServiceLoginUri = value;\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScreenService {\r\n public mq = signal<string>(\"\");\r\n \r\n get isTouchable(): boolean {\r\n return SystemUtils.isTouchable();\r\n }\r\n get isIEOrEdge(): boolean {\r\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\r\n }\r\n\r\n}\r\n","/**\r\n * Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\n\r\n/**\r\n * The message bag sent as a message\r\n */\r\nexport interface BroadcastChannelMessageBag<T> {\r\n messageId: string;\r\n sender: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * Message subscription params\r\n */\r\nexport interface BroadcastChannelSubscriberInfo<T> {\r\n messageId: string;\r\n action: (bag: BroadcastChannelMessageBag<T>) => void;\r\n}\r\n\r\n/**\r\n * Web Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\nexport class BroadcastChannelManager {\r\n private channel?: BroadcastChannel;\r\n private subscriptions: BroadcastChannelSubscriberInfo<any>[] = [];\r\n\r\n /**\r\n * Get the current channel registration\r\n */\r\n public get currentBus(): string | undefined {\r\n return this.channel?.name;\r\n }\r\n\r\n constructor(bus: string) {\r\n this.channel = new BroadcastChannel(bus);\r\n\r\n this.channel.onmessageerror = (e: any) => {\r\n console.error('[BroadcastChannelManager] Errore di ricezione del messaggio', e);\r\n };\r\n\r\n this.channel.onmessage = (e: MessageEvent) => {\r\n const bag: BroadcastChannelMessageBag<any> | undefined = e.data as BroadcastChannelMessageBag<any>;\r\n if (bag) {\r\n const bagInfo: BroadcastChannelSubscriberInfo<any> | undefined = this.subscriptions.find(m => m.messageId === bag.messageId);\r\n bagInfo?.action(bag);\r\n }\r\n }\r\n }\r\n\r\n dispose(): void {\r\n this.subscriptions = [];\r\n this.channel?.close();\r\n this.channel = undefined;\r\n }\r\n\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value });\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>): void;\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n * @param delay The number of milliseconds to wait before sending the message, see also {@link setTimeout}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value }, 250);\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>, delay?: number): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value);\r\n */\r\n sendMessage<T>(messageId: string, data?: T): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n * @param delay The number of milliseconds to wait before sending the message\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value, 250);\r\n */\r\n sendMessage<T>(messageId: string, data?: T, delay?: number): void;\r\n\r\n /**\r\n * overloads\r\n */\r\n sendMessage<T>(messageIdorBag: string | BroadcastChannelMessageBag<T>, dataOrDelay?: T | number, delay?: number) {\r\n setTimeout(() => {\r\n if (typeof messageIdorBag === 'string') {\r\n this.channel?.postMessage({ messageId: messageIdorBag, data: dataOrDelay } as BroadcastChannelMessageBag<T>);\r\n } else {\r\n this.channel?.postMessage(messageIdorBag as BroadcastChannelMessageBag<T>);\r\n }\r\n }, (typeof dataOrDelay === 'number' ? dataOrDelay : delay) ?? 0);\r\n }\r\n\r\n /**\r\n * Subscribe to a message\r\n * @param args The subscription info, see also {@link BroadcastChannelSubscriberInfo}\r\n */\r\n subscribe<T>(args: BroadcastChannelSubscriberInfo<T>) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === args.messageId);\r\n if (i === -1) {\r\n this.subscriptions.push(args);\r\n } else {\r\n this.subscriptions[i].action = args.action;\r\n }\r\n }\r\n\r\n /**\r\n * Remove a message subscription\r\n * @param messageId The message id\r\n */\r\n unsubscribe(messageId: string) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === messageId);\r\n if (i !== -1) {\r\n this.subscriptions.splice(i, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the current subscriptions\r\n */\r\n unsubscribeAll() {\r\n this.subscriptions = [];\r\n }\r\n}\r\n","import { computed, inject, Injectable, OnDestroy, RendererFactory2, Signal, signal } from \"@angular/core\";\r\nimport { BroadcastChannelManager, BroadcastChannelMessageBag } from './broadcastChannelManager';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\n\r\n/**\r\n * Kind of themes: system default, light or dark\r\n */\r\nexport type ThemeType = 'auto' | 'light' | 'dark';\r\n\r\n/**\r\n * Available themes' schema\r\n */\r\ninterface ThemeInfoRecord {\r\n icon: string;\r\n name: string;\r\n next: ThemeType;\r\n tooltip: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ThemeService implements OnDestroy {\r\n\r\n // messaggi broadcast\r\n private readonly broadcastChannel = new BroadcastChannelManager('THEME-SERVICE');\r\n private readonly broadcastMessage: string = '$theme-changed';\r\n\r\n // per intercettare il cambio di tema a livello di sistema\r\n private readonly prefersColorSchemeMediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\r\n\r\n /**\r\n * Theme changed e.\r\n * Notify the consuming component about the incoming theme change.\r\n * @example \r\n * // React to theme changes\r\n * this.themeService.themeChanged\r\n * .pipe(takeUntil(this.unsubscribe))\r\n * .subscribe((value: ThemeType) => {\r\n * // do the job done....\r\n * });\r\n */\r\n private themeChanged = new BehaviorSubject<ThemeType>('auto');\r\n // espone al consumatore un'observable\r\n public changed: Observable<ThemeType> = this.themeChanged.asObservable();\r\n\r\n private renderFactory2 = inject(RendererFactory2);\r\n private renderer = this.renderFactory2.createRenderer(null, null);\r\n\r\n /**\r\n * Current theme\r\n */\r\n private readonly theme = signal<ThemeType>(\"light\");\r\n /**\r\n * The current theme is \"System default\"\r\n */\r\n private readonly auto: Signal<boolean> = computed(() => this.theme() === 'auto');\r\n\r\n /**\r\n * Configuration schema about the icon, the text and the toggle() sequence\r\n */\r\n private readonly themeInfo: Record<ThemeType, ThemeInfoRecord> = {\r\n ['auto']: { icon: 'routine', name: 'Tema di sistema', next: 'light', tooltip: 'Passa a tema chiaro', },\r\n ['light']: { icon: 'light_mode', name: 'Tema chiaro', next: 'dark', tooltip: 'Passa a tema scuro', },\r\n ['dark']: { icon: 'dark_mode', name: 'Tema scuro', next: 'auto', tooltip: 'Passa a tema di sistema', },\r\n };\r\n\r\n /**\r\n * Icon of the current theme (mat-icon code)\r\n */\r\n public readonly themeIcon: Signal<string> = computed(() => this.themeInfo[this.theme()].icon);\r\n /**\r\n * Current theme name\r\n */\r\n public readonly themeName: Signal<string> = computed(() => this.themeInfo[this.theme()].name);\r\n /**\r\n * Tooltip text on toggle \r\n */\r\n public readonly toggleTooltip: Signal<string> = computed(() => this.themeInfo[this.theme()].tooltip);\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize(theme: ThemeType = this.getPreferredTheme()) {\r\n // React to current theme\r\n this.prefersColorSchemeMediaQueryList.onchange = (_: MediaQueryListEvent) => this.auto() ? this.setTheme(theme) : null;\r\n\r\n // Support boradcast channel messaging\r\n this.broadcastChannel.subscribe<ThemeType>({\r\n messageId: this.broadcastMessage,\r\n action: (bag: BroadcastChannelMessageBag<ThemeType>) => {\r\n if (this.theme() !== bag.data) {\r\n this.setTheme(bag.data);\r\n }\r\n }\r\n });\r\n\r\n // Load theme\r\n this.setTheme(theme);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.broadcastChannel.dispose();\r\n }\r\n\r\n /**\r\n * Get the current preferred theme\r\n */\r\n private getPreferredTheme(): ThemeType {\r\n let theme: ThemeType = localStorage.getItem(\"preferred-theme\") as ThemeType;\r\n if (!this.isTheme(theme)) {\r\n theme = 'auto';\r\n }\r\n return theme;\r\n }\r\n\r\n /**\r\n * Check if a value string is a theme type\r\n * @param value : th string value\r\n * @returns true if the the value is a valid theme type\r\n */\r\n private isTheme(value: string): value is ThemeType {\r\n return ['auto', 'light', 'dark'].includes(value);\r\n }\r\n\r\n\r\n /**\r\n * Set the new theme\r\n * @param theme the new theme\r\n */\r\n private setTheme(theme: ThemeType = 'auto') {\r\n this.renderer.removeClass(document.body, 'light');\r\n this.renderer.removeClass(document.body, 'dark');\r\n this.theme.set(theme);\r\n localStorage.setItem(\"preferred-theme\", this.theme());\r\n this.renderer.addClass(document.body, this.auto() ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\") : theme);\r\n // Notify that current theme has changed\r\n this.themeChanged.next(this.getTheme());\r\n this.broadcastChannel.sendMessage(this.broadcastMessage, this.theme());\r\n }\r\n\r\n /**\r\n * Toggle theme\r\n */\r\n public toggleTheme(): void {\r\n this.setTheme(this.themeInfo[this.theme()].next);\r\n }\r\n\r\n /**\r\n * Get current real theme: light or dark\r\n */\r\n public getTheme(): ThemeType {\r\n return (\r\n this.auto()\r\n ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\")\r\n : this.getPreferredTheme());\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AutoFocusDirective } from './directives/autoFocusDirective';\r\nimport { DateIntervalChangeDirective } from './directives/changeDateIntervalDirective';\r\nimport { CopyClipboardDirective } from './directives/copyClipboardDirective';\r\nimport { EmailsValidatorDirective, EqualsValidatorDirective, FileSizeValidatorDirective, GuidValidatorDirective, MaxTermsValidatorDirective, NotFutureValidatorDirective, PasswordValidatorDirective, SqlDateValidatorDirective, UrlValidatorDirective, ValidIfDirective, ValidatorDirective } from './directives/validators';\r\nimport { FormatPipe } from './pipes/format.pipe';\r\nimport { ReplacePipe } from './pipes/replace.pipe';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\r\nimport { SearchCallbackPipe } from './pipes/search-callback.pipe';\r\nimport { SearchFilterPipe } from './pipes/search-filter.pipe';\r\nimport { FormatHtmlPipe } from './pipes/format-html.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n exports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n providers: [\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe\r\n ]\r\n})\r\nexport class ArsCoreModule { }\r\n\r\nexport * from './definitions';\r\nexport * from './messages';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\nexport * from './services/theme.service';\r\nexport * from './system';\r\n\r\n","import { inject, Injectable, NgModule } from '@angular/core';\r\nimport { DateAdapter, MatDateFormats, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { TZDate } from '@date-fns/tz';\r\nimport {\r\n Locale,\r\n getMonth,\r\n getYear,\r\n getDate,\r\n getDay,\r\n getDaysInMonth,\r\n formatISO,\r\n addYears,\r\n addMonths,\r\n addDays,\r\n isValid,\r\n isDate,\r\n format,\r\n parseISO,\r\n parse,\r\n} from 'date-fns';\r\n\r\n\r\n/** Creates an array and fills it with values. */\r\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n\r\n// date-fns doesn't have a way to read/print month names or days of the week directly,\r\n// so we get them by formatting a date with a format that produces the desired month/day.\r\nconst MONTH_FORMATS = {\r\n long: 'LLLL',\r\n short: 'LLL',\r\n narrow: 'LLLLL',\r\n};\r\n\r\nconst DAY_OF_WEEK_FORMATS = {\r\n long: 'EEEE',\r\n short: 'EEE',\r\n narrow: 'EEEEE',\r\n};\r\n\r\nexport const MAT_DATE_FNS_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: 'P',\r\n },\r\n display: {\r\n dateInput: 'P',\r\n monthYearLabel: 'LLL uuuu',\r\n dateA11yLabel: 'PP',\r\n monthYearA11yLabel: 'LLLL uuuu',\r\n },\r\n};\r\n\r\n\r\n\r\n/** Adds date-fns support to Angular Material. */\r\n@Injectable()\r\nexport class DateFnsAdapter extends DateAdapter<Date, Locale> {\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\r\n this.setLocale(matDateLocale as Locale);\r\n }\r\n\r\n getYear(date: Date): number {\r\n return getYear(date);\r\n }\r\n\r\n getMonth(date: Date): number {\r\n return getMonth(date);\r\n }\r\n\r\n getDate(date: Date): number {\r\n return getDate(date);\r\n }\r\n\r\n getDayOfWeek(date: Date): number {\r\n return getDay(date);\r\n }\r\n\r\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = MONTH_FORMATS[style];\r\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\r\n }\r\n\r\n getDateNames(): string[] {\r\n const dtf =\r\n typeof Intl !== 'undefined'\r\n ? new Intl.DateTimeFormat(this.locale.code, {\r\n day: 'numeric',\r\n timeZone: 'utc',\r\n })\r\n : null;\r\n\r\n return range(31, i => {\r\n if (dtf) {\r\n // date-fns doesn't appear to support this functionality.\r\n // Fall back to `Intl` on supported browsers.\r\n const date = new Date();\r\n date.setUTCFullYear(2017, 0, i + 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\r\n }\r\n\r\n return i + '';\r\n });\r\n }\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = DAY_OF_WEEK_FORMATS[style];\r\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\r\n }\r\n\r\n getYearName(date: Date): string {\r\n return this.format(date, 'y');\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return this.locale.options?.weekStartsOn ?? 0;\r\n }\r\n\r\n getNumDaysInMonth(date: Date): number {\r\n return getDaysInMonth(date);\r\n }\r\n\r\n clone(date: Date): Date {\r\n return new Date(date.getTime());\r\n }\r\n\r\n createDate(year: number, month: number, date: number): Date {\r\n\r\n // Check for invalid month and date (except upper bound on date which we have to check after\r\n // creating the Date).\r\n if (month < 0 || month > 11) {\r\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n }\r\n\r\n if (date < 1) {\r\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n }\r\n\r\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\r\n // To work around this we use `setFullYear` and `setHours` instead.\r\n const result = new Date();\r\n result.setFullYear(year, month, date);\r\n result.setHours(0, 0, 0, 0);\r\n const result2 = new TZDate(result, \"Europe/Rome\");\r\n \r\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\r\n if (result2.getMonth() != month) {\r\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n }\r\n\r\n return result2;\r\n }\r\n\r\n today(): Date {\r\n return new Date();\r\n }\r\n\r\n parse(value: any, parseFormat: string | string[]): Date | undefined {\r\n if (typeof value == 'string' && value.length > 0) {\r\n let iso8601Date = parseISO(value);\r\n if (this.isValid(iso8601Date)) {\r\n iso8601Date = new TZDate(iso8601Date, \"Europe/Rome\");\r\n return iso8601Date;\r\n }\r\n\r\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\r\n\r\n if (!parseFormat.length) {\r\n throw Error('Formats array must not be empty.');\r\n }\r\n\r\n for (const currentFormat of formats) {\r\n let fromFormat = parse(value, currentFormat, new Date(), { locale: this.locale });\r\n if (this.isValid(fromFormat)) {\r\n fromFormat = new TZDate(fromFormat, \"Europe/Rome\");\r\n return fromFormat;\r\n }\r\n }\r\n\r\n return this.invalid();\r\n } else if (typeof value === 'number') {\r\n return new Date(value);\r\n } else if (value instanceof Date) {\r\n return this.clone(value);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n\r\n format(date: Date, displayFormat: string): string {\r\n if (!this.isValid(date)) {\r\n throw Error('DateFnsAdapter: Cannot format invalid date.');\r\n }\r\n\r\n return format(date, displayFormat, { locale: this.locale });\r\n }\r\n\r\n addCalendarYears(date: Date, years: number): Date {\r\n return addYears(date, years);\r\n }\r\n\r\n addCalendarMonths(date: Date, months: number): Date {\r\n return addMonths(date, months);\r\n }\r\n\r\n addCalendarDays(date: Date, days: number): Date {\r\n return addDays(date, days);\r\n }\r\n\r\n toIso8601(date: Date): string {\r\n return formatISO(date, { representation: 'date' });\r\n }\r\n\r\n /**\r\n * Returns the given value if given a valid Date or undefined. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into undefined. Returns an\r\n * invalid date for all other values.\r\n */\r\n override deserialize(value: any): Date | undefined {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const date = parseISO(value);\r\n if (this.isValid(date)) {\r\n return date;\r\n }\r\n }\r\n return super.deserialize(value);\r\n }\r\n\r\n isDateInstance(obj: any): boolean {\r\n return isDate(obj);\r\n }\r\n\r\n isValid(date: Date): boolean {\r\n return isValid(date);\r\n }\r\n\r\n invalid(): Date {\r\n return new Date(NaN);\r\n }\r\n}\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: DateFnsAdapter,\r\n deps: [MAT_DATE_LOCALE],\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }\r\n ],\r\n})\r\nexport class ArsDateFnsModule { }","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[removeFocus]'\r\n})\r\nexport class RemoveFocusDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(_event: Event): void {\r\n // Controllo null safety\r\n if (this.elementRef?.nativeElement && typeof this.elementRef.nativeElement.blur === 'function') {\r\n // Piccolo delay per permettere al click di completarsi\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.blur();\r\n }, 0);\r\n }\r\n }\r\n}","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { SystemUtils } from '../system';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'formatMarkdown',\r\n standalone: true\r\n})\r\nexport class FormatMarkdownPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(\r\n SystemUtils.markdownToHtml(value ?? ''));\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './core.module';\r\nexport * from './dateFnsAdapter.module';\r\nexport * from './directives/changeDateIntervalDirective';\r\nexport * from './directives/copyClipboardDirective';\r\nexport * from './directives/autoFocusDirective';\r\nexport * from './directives/removeFocusDirective';\r\nexport * from './directives/validators';\r\nexport * from './pipes/search-filter.pipe';\r\nexport * from './pipes/search-callback.pipe';\r\nexport * from './pipes/safe-url.pipe';\r\nexport * from './pipes/safe-html.pipe';\r\nexport * from './pipes/replace.pipe';\r\nexport * from './pipes/format.pipe';\r\nexport * from './pipes/format-html.pipe';\r\nexport * from './pipes/format-markdown.pipe';\r\nexport * from './system';\r\nexport * from './definitions';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/broadcastChannelManager';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-core.mjs","sources":["../../../projects/ars-utils/core/directives/autoFocusDirective.ts","../../../projects/ars-utils/core/definitions.ts","../../../projects/ars-utils/core/system.ts","../../../projects/ars-utils/core/directives/changeDateIntervalDirective.ts","../../../projects/ars-utils/core/directives/copyClipboardDirective.ts","../../../projects/ars-utils/core/directives/validators.ts","../../../projects/ars-utils/core/pipes/format.pipe.ts","../../../projects/ars-utils/core/pipes/replace.pipe.ts","../../../projects/ars-utils/core/pipes/safe-html.pipe.ts","../../../projects/ars-utils/core/pipes/safe-url.pipe.ts","../../../projects/ars-utils/core/pipes/search-callback.pipe.ts","../../../projects/ars-utils/core/pipes/search-filter.pipe.ts","../../../projects/ars-utils/core/pipes/format-html.pipe.ts","../../../projects/ars-utils/core/messages.ts","../../../projects/ars-utils/core/selectable.ts","../../../projects/ars-utils/core/services/broadcast.service.ts","../../../projects/ars-utils/core/services/environment.service.ts","../../../projects/ars-utils/core/services/screen.service.ts","../../../projects/ars-utils/core/services/broadcastChannelManager.ts","../../../projects/ars-utils/core/services/theme.service.ts","../../../projects/ars-utils/core/core.module.ts","../../../projects/ars-utils/core/dateFnsAdapter.module.ts","../../../projects/ars-utils/core/directives/removeFocusDirective.ts","../../../projects/ars-utils/core/pipes/format-markdown.pipe.ts","../../../projects/ars-utils/core/public_api.ts","../../../projects/ars-utils/core/arsedizioni-ars-utils-core.ts"],"sourcesContent":["import { AfterContentInit, Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: \"[autoFocus]\",\r\n standalone: true\r\n })\r\nexport class AutoFocusDirective implements AfterContentInit {\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n public ngAfterContentInit() {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n }, 500);\r\n }\r\n }","import { INode } from './system';\r\n\r\nexport interface DoneResult<T> {\r\n isNew?: boolean;\r\n data?: T;\r\n}\r\n\r\nexport interface ApiResponse {\r\n success: boolean;\r\n message: string;\r\n}\r\n\r\nexport interface ApiResult<T> extends ApiResponse {\r\n value: T;\r\n}\r\n\r\nexport interface Folder extends INode {\r\n teamId?: string;\r\n parentId?: string;\r\n position?: number;\r\n isPrivate?: boolean;\r\n itemsCount?: number;\r\n subItemsCount?: number;\r\n\r\n}\r\n\r\nexport interface FolderTree extends Folder {\r\n children?: Folder[];\r\n path?: string;\r\n}\r\n\r\nexport interface File<T> {\r\n ownerId?: T;\r\n id?: number;\r\n fileName: string;\r\n fileData: any;\r\n}\r\n\r\nexport interface Validated {\r\n isValid(): boolean;\r\n}\r\n\r\nexport class FileInfo implements Validated {\r\n file: any;\r\n valid: boolean;\r\n\r\n isValid(): boolean {\r\n return this.valid;\r\n }\r\n}\r\n\r\nexport interface ErrorInfo {\r\n invalidateSession?: boolean;\r\n title?: string;\r\n message?: string;\r\n errorStatus?: number;\r\n service?: string;\r\n}\r\n\r\nexport interface NameValueItem<T> {\r\n name: string;\r\n value: T;\r\n shortName?: string;\r\n parentName?: string;\r\n parentValue?: T;\r\n header?: string;\r\n bag?: any;\r\n bagInfo?: string;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n}\r\n\r\nexport interface Checkable {\r\n checked?: boolean;\r\n bag: any;\r\n getId(): any;\r\n}\r\n\r\n\r\nexport class ValueModel<T> {\r\n value: T;\r\n}\r\nexport class IDModel<T> {\r\n id: T;\r\n}\r\nexport class GroupModel<T> {\r\n ids: T[];\r\n}\r\n\r\nexport class DeleteModel<T> extends GroupModel<T> {\r\n mode: number;\r\n}\r\nexport interface DeleteResultModel<T> {\r\n items?: T[],\r\n deleted: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class RelationModel<T> {\r\n id: T;\r\n parentId: T;\r\n}\r\n\r\nexport class UpdateRelationsModel<T> {\r\n id: T;\r\n relatedIds: T[];\r\n}\r\n\r\nexport class QueryModel {\r\n any?: string;\r\n sortBy?: string;\r\n sortDescending?: boolean;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface QueryResultModel<T> {\r\n interval?: string;\r\n items: T[];\r\n total: number;\r\n}\r\n\r\nexport interface UpdateModel<T> {\r\n parentId?: T;\r\n ids: T[];\r\n}\r\n\r\nexport interface UpdateResultModel<T> {\r\n items?: T[];\r\n updated: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport interface AddModel<T> extends UpdateModel<T> {\r\n\r\n}\r\n\r\nexport interface AddResultModel<T> {\r\n items?: T[];\r\n added: number;\r\n total: number;\r\n log?: string;\r\n}\r\n\r\nexport class ImportModel {\r\n origin: string;\r\n dataFile: FileInfo;\r\n jumpFirstLine?: boolean;\r\n map?: any;\r\n}\r\n\r\nexport interface EnableDisableModel {\r\n value: boolean;\r\n}\r\n\r\nexport interface SendToModel {\r\n sendToRecipients?: string;\r\n sendToSubject?: string;\r\n sendToText?: string;\r\n}\r\n\r\nexport interface SearchBag {\r\n name: string;\r\n}\r\n\r\nexport interface Searchable {\r\n searchBag: SearchBag;\r\n}\r\n\r\nexport interface SearchFilterMetadata {\r\n total: number; // totale elementi\r\n count: number; // conteggio filtrati\r\n}\r\n\r\nexport class DateInterval {\r\n from?: Date;\r\n to?: Date;\r\n get fromAsDate() {\r\n return this.from\r\n ? new Date(\r\n this.from.getFullYear(),\r\n this.from.getMonth(),\r\n this.from.getDate(),\r\n 2,\r\n 0,\r\n 0\r\n )\r\n : null;\r\n }\r\n get toAsDate() {\r\n return this.to\r\n ? new Date(this.to.getFullYear(), this.to.getMonth(), this.to.getDate(), 2, 0, 0)\r\n : null;\r\n }\r\n\r\n constructor(from?: Date, to?: Date) {\r\n this.from = from;\r\n this.to = to;\r\n }\r\n\r\n /**\r\n * Clear interval\r\n */\r\n clear() {\r\n this.from = undefined;\r\n this.to = undefined;\r\n }\r\n}\r\n\r\nexport interface LoginResult<T> extends ApiResult<boolean> {\r\n context: T;\r\n token: string;\r\n refreshToken?: string;\r\n}\r\n","import { HttpParams } from \"@angular/common/http\";\r\nimport { DateInterval } from './definitions';\r\nimport { format, parse, parseISO } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { TZDate } from '@date-fns/tz';\r\n\r\nexport interface INode {\r\n id: string;\r\n name?: string;\r\n count?: number;\r\n children?: INode[];\r\n subFolders?: INode[];\r\n parent?: INode;\r\n bag?: any\r\n}\r\n\r\n\r\nexport enum DateFormat {\r\n Short = 1, // dd/mm/yyyy\r\n Long = 2, // d mmmm yyyy\r\n LongWithShortMonth = 3, // d mmm yyyy\r\n LongWithWeekDay = 4, // wwww, d mmmm yyyy\r\n LongWithShortWeekDay = 5, // www, d mmmm yyyy\r\n MonthAndYear = 6, // mmm yyyy\r\n LongMonthAndYear = 7, // mmmm yyyy\r\n WeekDay = 8, // www d\r\n LongWeekDay = 9, // wwww d\r\n DayAndMonth = 10, // d mmmm\r\n ShortUS = 11, // mm/dd/yyyy\r\n ShortISO8601 = 12 // yyyy-mm-dd\r\n}\r\n\r\nexport interface PasswordStrength {\r\n score: number;\r\n label?: string;\r\n color?: string;\r\n suggestions?: string[];\r\n isValid: boolean;\r\n}\r\n\r\ninterface MarkdownListState {\r\n type: 'ul' | 'ol' | null;\r\n items: string[];\r\n}\r\n\r\nexport class SystemUtils {\r\n /**\r\n * Array find by key\r\n * @param array : the array to scan\r\n * @param key : key name\r\n * @param value : the value to search for\r\n * @returns : the property value or null\r\n */\r\n static arrayFindByKey<T>(array: T[] | undefined, key: string, value: any): T | undefined {\r\n if (!array) return undefined;\r\n for (const item of array) {\r\n if ((item as any)[key] === value) {\r\n return item;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Array find index by key\r\n * @param array : the array to scan\r\n * @param key : the key name\r\n * @param value : the value to search for\r\n * @returns : the array index or -1 if not found\r\n */\r\n static arrayFindIndexByKey<T>(array: T[] | undefined, key: string, value: any): number {\r\n if (!array) return -1;\r\n for (let i = 0; i < array.length; i++) {\r\n if ((array[i] as any)[key] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Get a value from and array made of name|value items\r\n * @param array : the array to scan\r\n * @param value : the value to search for\r\n * @returns : the property value or null if not found\r\n */\r\n static arrayGetValue<T>(array: T[] | undefined, value: any): any {\r\n if (!array) return undefined;\r\n for (var i = 0; i < array.length; i++) {\r\n const item = (array[i] as any);\r\n if (item.value === value) {\r\n return item.name || item.id;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Convert items to nodes into a tree structure\r\n * @param items : list of nodes\r\n * @param parent : parent node\r\n * @returns : an array of INode objects\r\n */\r\n static arrayToNodes(items: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n items.forEach(n => {\r\n const node: INode = {\r\n id: n.id.toString(),\r\n name: n.name,\r\n count: n.count ? n.count : 0,\r\n children: undefined,\r\n parent,\r\n bag: n,\r\n };\r\n nodes.push(node);\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this.arrayToNodes(n.children, node)\r\n : [];\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Used to copare items during an array of objects sorting\r\n * @param key : the property name to sort for\r\n * @param order : the order 'asc' or 'desc'\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static arraySortCompare(key: string, order: string = \"asc\") {\r\n const result = function innerSort(a: any, b: any) {\r\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\r\n // property doesn't exist on either object\r\n return 0;\r\n }\r\n const varA = typeof a[key] === \"string\" ? a[key].toUpperCase() : a[key];\r\n const varB = typeof b[key] === \"string\" ? b[key].toUpperCase() : b[key];\r\n let comparison = 0;\r\n if (varA > varB) comparison = 1;\r\n else if (varA < varB) comparison = -1;\r\n return order === \"desc\" ? comparison * -1 : comparison;\r\n };\r\n return result;\r\n }\r\n\r\n /**\r\n * Format weight\r\n * @param gr : grams\r\n * @returns : the formatted string\r\n */\r\n static formatWeight(gr: number): string {\r\n if (gr > 1000000) return (gr / 1000000).toFixed(2) + \" t\";\r\n else if (gr > 100000) return (gr / 100000).toFixed(2) + \" q\";\r\n else if (gr > 1000) return (gr / 1000).toFixed(2) + \" kg\";\r\n else return gr + \" gr\";\r\n }\r\n\r\n /**\r\n * Format file size\r\n * @param bytes : number of bytes\r\n * @returns : the formatted string\r\n */\r\n static formatFileSize(bytes: number): string {\r\n if (bytes > 1024000) return (bytes / 1024000).toFixed(1) + \" MB\";\r\n if (bytes > 1024) return (bytes / 1024).toFixed(1) + \" Kb\";\r\n return bytes + \" byte\";\r\n }\r\n\r\n /**\r\n * Compare two string\r\n * @param a : string a\r\n * @param b : string b\r\n * @returns : 0 if equals, 1 if bigger, -1 if lower\r\n */\r\n static compareString(a?: string, b?: string): number {\r\n if ((a ?? \"\").toLowerCase() > (b ?? \"\").toLowerCase()) return 1;\r\n if ((a ?? \"\").toLowerCase() < (b ?? \"\").toLowerCase()) return -1;\r\n return 0;\r\n }\r\n\r\n /**\r\n * Capitalize a string\r\n * @param s : the string to capitalize\r\n * @returns : the capitalized string \r\n */\r\n static capitalize(s?: string): string | undefined {\r\n if (!s) return undefined;\r\n let b = \"\";\r\n let cap = true;\r\n for (const char of s) {\r\n if (char === \" \") {\r\n b += char;\r\n cap = true;\r\n } else if (cap) {\r\n b += char.toUpperCase();\r\n cap = false;\r\n } else {\r\n b += char.toLowerCase();\r\n }\r\n }\r\n return b;\r\n }\r\n\r\n /**\r\n * Truncate a string\r\n * @param s : the string to truncate\r\n * @param max : the max number of chars\r\n * @returns : the truncated string\r\n */\r\n static truncate(s?: string, max: number = 500): string | undefined {\r\n if (!s) return undefined;\r\n if (s.length < max) return s;\r\n let i = max - 1;\r\n while (i > 0) {\r\n if (s[i] === ' ') return s.slice(0, i);\r\n i--;\r\n }\r\n return s;\r\n }\r\n\r\n /**\r\n * Join a list of strings\r\n * @param items : the list of strings\r\n * @param sep : the separator string\r\n * @param max : the maximum resulting string\r\n * @returns : the joined string\r\n */\r\n static join(items?: string[], sep: string = \" \", max: number = 350): string | undefined {\r\n if (!items || items.length === 0) return undefined;\r\n if (items.length > 1) {\r\n let l = 0;\r\n let s = \"\"\r\n while (s.length < max && items.length > l) {\r\n if (l > 0) {\r\n s += sep;\r\n }\r\n s += items[l++];\r\n }\r\n if (items.length > l) {\r\n s += \"...\";\r\n }\r\n return s;\r\n }\r\n return items[0];\r\n }\r\n\r\n /**\r\n * Replace stuff in text html\r\n * @param s : the string to process\r\n * @returns : the replaced string \r\n */\r\n static replaceAsHtml(s?: string): string {\r\n if (!s) return undefined;\r\n const regex = /https?:\\/\\/.*[^\\s]/ig\r\n const m = regex.exec(s);\r\n if (m && m.length > 0) {\r\n let v = undefined;\r\n for (let i = 0; i < m.length; i++) {\r\n v = m[i];\r\n s = s.replace(v, '<a href=\"' + v + '\" target=\"_blank\">' + v + '</a>');\r\n }\r\n }\r\n return s;\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Convert markdown to html\r\n * @param markdown : the markdown data\r\n * @param escapeEntities : true to escape entities. Default is false\r\n * @returns the html\r\n */\r\n static markdownToHtml(markdown: string, escapeEntities: boolean = false): string {\r\n let html = markdown;\r\n\r\n //1. Escape HTML entities \r\n if (escapeEntities == true) {\r\n html = html.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n }\r\n\r\n // 2. Code blocks \r\n html = html.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (_match, lang, code) => {\r\n const langClass = lang ? ` class=\"language-${lang}\"` : '';\r\n return `<pre><code${langClass}>${code.trim()}</code></pre>`;\r\n });\r\n\r\n // 3. Inline code\r\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\r\n\r\n // 4. Headers \r\n html = html.replace(/^##### (.*$)/gim, '<h5>$1</h5>');\r\n html = html.replace(/^#### (.*$)/gim, '<h4>$1</h4>');\r\n html = html.replace(/^### (.*$)/gim, '<h3>$1</h3>');\r\n html = html.replace(/^## (.*$)/gim, '<h2>$1</h2>');\r\n html = html.replace(/^# (.*$)/gim, '<h1>$1</h1>');\r\n\r\n // 5. Horizontal rules\r\n html = html.replace(/^---+$/gim, '<hr>');\r\n html = html.replace(/^\\*\\*\\*+$/gim, '<hr>');\r\n\r\n // 6. Links \r\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\">$1</a>');\r\n\r\n // 7. Images\r\n html = html.replace(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g, '<img src=\"$2\" alt=\"$1\">');\r\n\r\n // 8. Bold e Italic \r\n html = html.replace(/\\*\\*\\*([^*]+)\\*\\*\\*/gim, '<strong><em>$1</em></strong>');\r\n html = html.replace(/___([^_]+)___/gim, '<strong><em>$1</em></strong>');\r\n html = html.replace(/\\*\\*([^*]+)\\*\\*/gim, '<strong>$1</strong>');\r\n html = html.replace(/__([^_]+)__/gim, '<strong>$1</strong>');\r\n html = html.replace(/\\*([^*]+)\\*/gim, '<em>$1</em>');\r\n html = html.replace(/_([^_]+)_/gim, '<em>$1</em>');\r\n\r\n // 9. Strikethrough\r\n html = html.replace(/~~([^~]+)~~/gim, '<del>$1</del>');\r\n\r\n // 10. Blockquotes\r\n html = html.replace(/^> (.*$)/gim, '<blockquote>$1</blockquote>');\r\n\r\n // 11. Tables\r\n html = this.markdownConvertTables(html);\r\n\r\n // 12. Lists \r\n html = this.markdownConvertLists(html);\r\n\r\n // 13. Line breaks\r\n html = html.replace(/ $/gm, '<br>');\r\n\r\n // 14. Paragrafi (ultimo step per non interferire con altri elementi)\r\n html = this.markdownConvertParagraphs(html);\r\n\r\n // 15. Clean up extra newlines\r\n html = html.replace(/\\`\\`\\`markdown/g, '');\r\n html = html.replace(/\\*\\*/g, '');\r\n html = html.replace(/\\n{3,}/g, '\\n\\n');\r\n \r\n\r\n return html.trim();\r\n }\r\n\r\n /**\r\n * Convert markdown table to html\r\n * @param markdown: the markdown string\r\n * @returns : the html\r\n */\r\n private static markdownConvertTables(markdown: string): string {\r\n const lines = markdown.split('\\n');\r\n const result: string[] = [];\r\n let inTable = false;\r\n let tableRows: string[] = [];\r\n let headerProcessed = false;\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n const line = lines[i].trim();\r\n if (line.includes('|') && line.length > 1) {\r\n const nextLine = i + 1 < lines.length ? lines[i + 1].trim() : '';\r\n const isHeaderSeparator = /^\\|?[\\s\\-:|]+\\|?$/.test(nextLine);\r\n if (!inTable) {\r\n inTable = true;\r\n headerProcessed = false;\r\n tableRows = [];\r\n }\r\n if (isHeaderSeparator && !headerProcessed) {\r\n tableRows.push(this.markdownConvertTableRow(line, true));\r\n headerProcessed = true;\r\n i++;\r\n } else if (!isHeaderSeparator) {\r\n tableRows.push(this.markdownConvertTableRow(line, false));\r\n }\r\n } else {\r\n if (inTable && tableRows.length > 0) {\r\n result.push('<table>');\r\n result.push(...tableRows);\r\n result.push('</table>');\r\n tableRows = [];\r\n inTable = false;\r\n }\r\n result.push(line);\r\n }\r\n }\r\n if (inTable && tableRows.length > 0) {\r\n result.push('<table>');\r\n result.push(...tableRows);\r\n result.push('</table>');\r\n }\r\n return result.join('\\n');\r\n }\r\n\r\n /**\r\n * Convert a markdown table row to html\r\n * @param row : the markdown row\r\n * @param isHeader : true if is header\r\n * @returns the html\r\n */\r\n private static markdownConvertTableRow(row: string, isHeader: boolean): string {\r\n const cells = row.split('|').map(cell => cell.trim()).filter(cell => cell !== '');\r\n const tag = isHeader ? 'th' : 'td';\r\n const cellsHtml = cells.map(cell => ` <${tag}>${cell}</${tag}>`).join('\\n');\r\n return ` <tr>\\n${cellsHtml}\\n </tr>`;\r\n }\r\n\r\n\r\n /**\r\n * Convert a markdown list to html\r\n * @param markdown : the markdown list\r\n * @returns the html\r\n */\r\n private static markdownConvertLists(markdown: string): string {\r\n markdown = markdown.replace(/^\\* (.*$)/gim, '<li data-type=\"ul\">$1</li>');\r\n markdown = markdown.replace(/^- (.*$)/gim, '<li data-type=\"ul\">$1</li>');\r\n markdown = markdown.replace(/^\\+ (.*$)/gim, '<li data-type=\"ul\">$1</li>');\r\n markdown = markdown.replace(/^\\d+\\. (.*$)/gim, '<li data-type=\"ol\">$1</li>');\r\n const lines = markdown.split('\\n');\r\n const result: string[] = [];\r\n let currentList: MarkdownListState = { type: null, items: [] };\r\n for (const line of lines) {\r\n const ulMatch = line.match(/^<li data-type=\"ul\">(.*)<\\/li>$/);\r\n const olMatch = line.match(/^<li data-type=\"ol\">(.*)<\\/li>$/);\r\n if (ulMatch) {\r\n if (currentList.type !== 'ul') {\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n }\r\n currentList = { type: 'ul', items: [ulMatch[1]] };\r\n } else {\r\n currentList.items.push(ulMatch[1]);\r\n }\r\n } else if (olMatch) {\r\n if (currentList.type !== 'ol') {\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n }\r\n currentList = { type: 'ol', items: [olMatch[1]] };\r\n } else {\r\n currentList.items.push(olMatch[1]);\r\n }\r\n } else {\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n currentList = { type: null, items: [] };\r\n }\r\n result.push(line);\r\n }\r\n }\r\n if (currentList.type && currentList.items.length > 0) {\r\n result.push(this.markdownWrapList(currentList.type, currentList.items));\r\n }\r\n return result.join('\\n');\r\n }\r\n\r\n /**\r\n * Wrap a list\r\n * @param type: the list type \r\n * @param items : the item list\r\n * @returns the html\r\n */\r\n private static markdownWrapList(type: 'ul' | 'ol', items: string[]): string {\r\n const listItems = items.map(item => ` <li>${item}</li>`).join('\\n');\r\n return `<${type}>\\n${listItems}\\n</${type}>`;\r\n }\r\n\r\n /**\r\n * Convert markdown paragraphs to html\r\n * @param markdown : the markdown paragraphs\r\n * @returns the html\r\n */\r\n private static markdownConvertParagraphs(markdown: string): string {\r\n const lines = markdown.split('\\n');\r\n const result: string[] = [];\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed) {\r\n result.push('');\r\n continue;\r\n }\r\n if (trimmed.startsWith('<') && trimmed.endsWith('>')) {\r\n result.push(line);\r\n continue;\r\n }\r\n if (trimmed.startsWith('<') || trimmed.endsWith('>')) {\r\n result.push(line);\r\n continue;\r\n }\r\n result.push(`<p>${trimmed}</p>`);\r\n }\r\n return result.join('\\n');\r\n }\r\n\r\n\r\n\r\n /**\r\n * Compare two names\r\n * @param a : name a\r\n * @param b : name b\r\n * @returns : true if a equals b\r\n */\r\n static compareNames(a?: string, b?: string): boolean {\r\n if (a) a = a.trim();\r\n if (b) b = b.trim();\r\n if (a && b && a.length !== b.length) return false;\r\n if (this.compareString(a, b) === 0) return true;\r\n const p1 = a.split(\" \");\r\n const p2 = b.split(\" \");\r\n if (p1.length !== p2.length) return false;\r\n let matches = p1.length;\r\n for (const s1 of p1) {\r\n for (const s2 of p2) {\r\n if (this.compareString(s1, s2) === 0) {\r\n matches--;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matches === 0;\r\n }\r\n\r\n /**\r\n * Cipher a text\r\n * @param text : the text\r\n * @param key : the key\r\n * @param reverse : true to decode, false to encode\r\n * @returns :the ciphered text\r\n */\r\n static cipher(text: string, key: string, reverse: boolean = false): string | undefined {\r\n // Surrogate pair limit\r\n var bound = 0x10000;\r\n\r\n // Create string from character codes\r\n return String.fromCharCode.apply(\r\n null,\r\n // Turn string to character codes\r\n text.split(\"\").map(function (v: any, i: number) {\r\n // Get rotation from key\r\n var rotation = key.charCodeAt(i % key.length);\r\n\r\n // Are we decrypting?\r\n if (reverse) rotation = -rotation;\r\n\r\n // Return current character code + rotation\r\n return (v.charCodeAt() + rotation + bound) % bound;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Clone an object using JSON\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static clone(obj: any): any | undefined {\r\n if (!obj) return undefined;\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n\r\n /**\r\n * Clone an object using deep cloning\r\n * @param obj : the oblect to clone\r\n * @returns : a new object\r\n */\r\n static deepClone<T>(obj: any, dest?: T): T {\r\n const cloneObj = dest ? dest : (obj.constructor() as any);\r\n const attributes = Object.keys(obj);\r\n for (const attribute of attributes) {\r\n const property = obj[attribute];\r\n if (typeof property === \"object\" && property != null) {\r\n cloneObj[attribute] = this.deepClone(property);\r\n } else {\r\n cloneObj[attribute] = property;\r\n }\r\n }\r\n return cloneObj;\r\n }\r\n\r\n\r\n /**\r\n * Check if a string is a valid UUID\r\n * @param value : the value to parse\r\n * @returns : true if is a valid UUID\r\n */\r\n static parseUUID(value?: string): boolean {\r\n const regex = /^({|()?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(}|))?$/;\r\n return value?.length > 0 && regex.test(value);\r\n }\r\n\r\n /**\r\n * Parse and ensure that UUID is not empty\r\n * @param value : the value to parse\r\n * @returns : true if valid and not empty\r\n */\r\n static parseUUIDNotEmpty(value?: string): boolean {\r\n const regex = /^({|()?0{8}-(0{4}-){3}0{12}(}|))?$/;\r\n return this.parseUUID(value) && !regex.test(value);\r\n }\r\n\r\n /**\r\n * Return an empty UUID\r\n * @returns : the empty UUID\r\n */\r\n static emptyUUID(): string { return \"00000000-0000-0000-0000-000000000000\" };\r\n\r\n /**\r\n * Create a new UUID\r\n * @returns : the string UUID\r\n */\r\n static generateUUID(): string {\r\n const regex = /[xy]/g;\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(regex, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid email or null\r\n * @param value : email\r\n * @returns : true if the email is valid or empty\r\n */\r\n static parseEmail(value?: string): boolean {\r\n if (!value) return true;\r\n const regex = /(?:[a-z0-9+!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/gi\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Parse a text and return true if is a valid url or null\r\n * @param value : the url to parse\r\n * @returns : true if the url is valid or empty\r\n */\r\n static parseUrl(value?: string): boolean {\r\n if (!value) return true;\r\n const regex = new RegExp(\r\n \"(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?\"\r\n );\r\n return regex.test(value.trim().toLowerCase());\r\n }\r\n\r\n /**\r\n * Get date parts from a string value\r\n * @param value : the string to parse\r\n * @returns : an array of numbers with year, month, day\r\n */\r\n static getDateParts(value?: string): number[] | undefined {\r\n if (!value) return undefined;\r\n let parts: number[] = [];\r\n if (value.indexOf(\"-\") !== -1) {\r\n const p = value.split(\"-\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[0]), parseInt(p[1]) - 1, parseInt(p[2])];\r\n } else if (value.indexOf(\"/\") !== -1) {\r\n const p = value.split(\"/\");\r\n if (p.length !== 3) return undefined;\r\n parts = [parseInt(p[2]), parseInt(p[1]) - 1, parseInt(p[0])];\r\n }\r\n return parts;\r\n }\r\n\r\n /**\r\n * Parse a date\r\n * @param value : the value to check\r\n * @param locale : the locale to use\r\n * @returns : a valid Date object or null\r\n */\r\n static parseDate(value?: string | Date, locale: any = it): Date | undefined {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A Date value\r\n if (value instanceof Date && value.getTime()) return value;\r\n // Parse known formats using date-fns\r\n let d = parseISO(value as string);\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'dd/MM/yyyy', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n d = parse(value as string, 'yyyy-MM-dd', new Date(), { locale: locale });\r\n if (d && d.getTime() && d.getFullYear() > 1750) return d;\r\n // Parse values manually\r\n let parts = this.getDateParts(value as string);\r\n if (!parts) return undefined;\r\n if (parts[0] < 100) parts[0] += 2000;\r\n if (isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return undefined;\r\n if (isNaN(parts[1]) || parts[1] < 0) return undefined;\r\n if (isNaN(parts[2]) || parts[2] < 0) return undefined;\r\n if (parts[1] > 11) return undefined;\r\n if (parts[1] === 1 && parts[2] > 29) return undefined;\r\n else if (parts[1] !== 1 && parts[2] > 31) return undefined;\r\n return new TZDate(parts[0], parts[1], parts[2], 12);\r\n }\r\n\r\n /**\r\n * Format a date\r\n * @param value : the date or string to format\r\n * @param fmt : the DateFormat to use or the string pattern\r\n * @param locale : the locale to use (default is IT)\r\n * @returns : the formatted string\r\n */\r\n static formatDate(\r\n value?: Date | string,\r\n fmt: DateFormat | string = DateFormat.Short,\r\n locale: any = it): string {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date \r\n if (!(value instanceof Date && value.getTime()))\r\n return undefined;\r\n // Format\r\n switch (fmt) {\r\n case DateFormat.Short: return format(value, \"dd/MM/yyyy\", { locale: locale });\r\n case DateFormat.Long: return format(value, \"d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortMonth: return format(value, \"d MMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithWeekDay: return format(value, \"EEEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.LongWithShortWeekDay: return format(value, \"EEE, d MMMM yyyy\", { locale: locale });\r\n case DateFormat.MonthAndYear: return format(value, \"MMM yyyy\", { locale: locale });\r\n case DateFormat.LongMonthAndYear: return format(value, \"MMMM yyyy\", { locale: locale });\r\n case DateFormat.WeekDay: return format(value, \"EEE, d\", { locale: locale });\r\n case DateFormat.LongWeekDay: return format(value, \"EEEE, d\", { locale: locale });\r\n case DateFormat.DayAndMonth: return format(value, \"d MMMM\", { locale: locale });\r\n case DateFormat.ShortUS: return format(value, \"MM/dd/yyyy\", { locale: locale });\r\n case DateFormat.ShortISO8601: return format(value, \"yyyy-MM-dd\", { locale: locale });\r\n default:\r\n return format(value, fmt, { locale: locale });\r\n }\r\n }\r\n\r\n /**\r\n * Return an italian local date\r\n * @param value : the date\r\n * @returns : the new date\r\n */\r\n static toLocalDate(value?: Date | string): Date {\r\n // No value at all\r\n if (!value) return undefined;\r\n // A string\r\n if (typeof value === 'string' || value instanceof String)\r\n value = this.parseDate(value as string);\r\n // Not a date\r\n if (!(value instanceof Date && value.getTime())) return undefined;\r\n // Update date\r\n return new TZDate(value, \"Europe/Rome\");\r\n }\r\n\r\n /**\r\n * Update a DateInterval object according to a string\r\n * @param value : string value\r\n * @param interval : DateInterval value to update\r\n * @param end : true if must be updated the first or the end value \r\n * @param copy : copy the same value (works only if not end element)\r\n */\r\n static changeDateInterval(value: string, interval: DateInterval, end: boolean = false, copy: boolean = false) {\r\n if (value) {\r\n let year = -1;\r\n if (value.length === 4 && (year = parseInt(value)) > 1750) {\r\n if (!end) {\r\n interval.from = new TZDate(new Date(year, 0, 1), 'Europe/Rome');\r\n interval.to = new TZDate(new Date(year, 11, 31), 'Europe/Rome');\r\n } else\r\n interval.to = new Date(year, 11, 31);\r\n } else {\r\n let parts = this.getDateParts(value);\r\n if (!parts || isNaN(parts[0]) || parts[0] < 0 || parts[0] < 1750) return;\r\n const d = new TZDate(new Date(parts[0], parts[1], parts[2]), 'Europe/Rome');\r\n if (end)\r\n interval.to = d;\r\n else if (copy) {\r\n interval.from = d;\r\n interval.to = d;\r\n } else\r\n interval.from = d;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Encode url\r\n * @param value : the value to encode\r\n * @returns : the url encoded string\r\n */\r\n static urlEncode(value: string): string | undefined {\r\n return value?.length > 0\r\n ? encodeURIComponent(value)\r\n : undefined;\r\n }\r\n\r\n /**\r\n * Decode url\r\n * @param value : the url to decode\r\n * @returns : the decode url string\r\n */\r\n static urlDecode(value?: string): string | undefined {\r\n const regex = /\\+/g;\r\n return value?.length > 0\r\n ? decodeURIComponent((value + \"\").replace(regex, \"%20\"))\r\n : undefined;\r\n }\r\n\r\n /**\r\n * Get a querystring parameter value\r\n * @param name : the parameter name\r\n * @returns : the string value\r\n */\r\n static getQueryStringValueByName(name: string): string {\r\n if (!this.isBrowser()) return undefined;\r\n const url = window.location.href;\r\n if (url.includes(\"?\")) {\r\n const httpParams = new HttpParams({ fromString: url.split(\"?\")[1] });\r\n const v = decodeURIComponent(httpParams.get(name));\r\n if (v && v !== \"null\") return v;\r\n else return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Generate a password\r\n * @returns : the password string\r\n */\r\n static generatePassword(): string {\r\n const random = \"$\" + Math.random().toString(36).slice(-11);\r\n let password = \"\";\r\n let hasUpperCase = false;\r\n for (const rnd of random) {\r\n if (!hasUpperCase && \"abcdefghjilmnopqrstuvywxz\".includes(rnd)) {\r\n password += rnd.toUpperCase();\r\n hasUpperCase = true;\r\n } else {\r\n password += rnd;\r\n }\r\n }\r\n if (!hasUpperCase)\r\n password = password.substring(0, 11) + \"M\";\r\n return password;\r\n }\r\n\r\n /**\r\n * Calculate password strength\r\n * @param password: the password to evaluate\r\n * @returns the password strength info\r\n */\r\n static calculatePasswordStrength(password?: string): PasswordStrength {\r\n if (password?.length > 0) {\r\n let score = 0;\r\n const suggestions: string[] = [];\r\n\r\n // Length\r\n if (password.length >= 10) score++;\r\n else suggestions.push('Usa almeno 10 caratteri.');\r\n if (password.length >= 12) score++;\r\n else if (password.length >= 10) suggestions.push('Considera di usare più di 12 caratteri.');\r\n\r\n // Lowercase letters\r\n if (/[a-z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere minuscole.');\r\n\r\n // Uppercase letters\r\n if (/[A-Z]/.test(password)) score++;\r\n else suggestions.push('Aggiungi lettere maiuscole.');\r\n\r\n // Numbers\r\n if (/\\d/.test(password)) score++;\r\n else suggestions.push('Aggiungi numeri.');\r\n\r\n // Special characters\r\n if (/[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/.test(password)) score++;\r\n else suggestions.push('Aggiungi caratteri speciali (!@#$%^&*).');\r\n\r\n // Common patterns\r\n if (/(.)\\1{2,}/.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita di ripetere lo stesso carattere.');\r\n }\r\n if (/123|abc|qwe/i.test(password)) {\r\n score = Math.max(0, score - 1);\r\n suggestions.push('Evita sequenze comuni (123, abc, qwe).');\r\n }\r\n\r\n // Label and color\r\n let label: string;\r\n let color: string;\r\n let isValid: boolean;\r\n if (score <= 2) {\r\n label = 'Molto debole';\r\n color = '#f44336';\r\n isValid = false;\r\n } else if (score <= 3) {\r\n label = 'Debole';\r\n color = '#ff9800';\r\n isValid = false;\r\n } else if (score <= 4) {\r\n label = 'Media';\r\n color = '#ffc107';\r\n isValid = true;\r\n } else if (score <= 5) {\r\n label = 'Forte';\r\n color = '#8bc34a';\r\n isValid = true;\r\n } else {\r\n label = 'Molto forte';\r\n color = '#4caf50';\r\n isValid = true;\r\n }\r\n\r\n return {\r\n score: score,\r\n label: label,\r\n color: color,\r\n suggestions: suggestions,\r\n isValid: isValid\r\n };\r\n } else\r\n return {\r\n score: 0,\r\n isValid: false,\r\n suggestions: []\r\n };\r\n\r\n }\r\n\r\n\r\n /**\r\n * Check if current browser supports touch\r\n * @returns : true if the display is touchable\r\n */\r\n static isTouchable(): boolean {\r\n return (\r\n this.isBrowser() && (\r\n \"ontouchstart\" in window ||\r\n navigator.maxTouchPoints > 0)\r\n );\r\n }\r\n\r\n /**\r\n * This check will prevent 'window' logic to be executed\r\n * while executing the server rendering\r\n * @returns : true if using the browser\r\n */\r\n static isBrowser(): boolean {\r\n return typeof (window) !== 'undefined';\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n * @returns : a node list\r\n */\r\n static toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, undefined);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n * @param parent : the parent node\r\n * @returns : a node list \r\n */\r\n private static _toNodes(folders: INode[], parent?: INode): INode[] {\r\n const nodes: INode[] = [];\r\n folders.forEach((n: INode) => {\r\n const node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: undefined,\r\n bag: n,\r\n };\r\n const children = n.children ?? n.subFolders ?? [];\r\n if (children.length > 0) {\r\n node.children = this._toNodes(n.children ?? n.subFolders, node);\r\n }\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Return the flags array to be used in selections\r\n * @param value : the new value\r\n * @param max: the max number of flags\r\n */\r\n static getFlags(value: number, max: number = 30): number[] {\r\n if (value) {\r\n let items: number[] = [];\r\n let v = 1;\r\n let m = 1 << max;\r\n while (v < m) {\r\n if ((value & v) === v) items.push(v);\r\n v = v << 1;\r\n }\r\n return items;\r\n } else return [];\r\n }\r\n\r\n /**\r\n * Check if a color is light or dark\r\n * @param color : the color\r\n * @param minimumLuminance : the lumimance to consider\r\n * @returns true if the color is light\r\n */\r\n static isColorLight(color: string, minimumLuminance: number = 186): boolean {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.style.color = color;\r\n document.body.appendChild(tempDiv);\r\n const rgb = getComputedStyle(tempDiv).color;\r\n document.body.removeChild(tempDiv);\r\n const result = rgb.match(/\\d+/g);\r\n if (!result || result.length < 3) return true; // fallback\r\n const r = parseInt(result[0], 10);\r\n const g = parseInt(result[1], 10);\r\n const b = parseInt(result[2], 10);\r\n const luminance = 0.299 * r + 0.587 * g + 0.114 * b;\r\n return luminance > minimumLuminance;\r\n }\r\n}\r\n","import { Directive, HostListener, OnDestroy, OnInit, input } from '@angular/core';\r\nimport { DateInterval } from '../definitions';\r\nimport { SystemUtils } from '../system';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[dateIntervalChange]',\r\n standalone: true,\r\n})\r\nexport class DateIntervalChangeDirective implements OnInit, OnDestroy {\r\n readonly dateIntervalChange = input<DateInterval>(new DateInterval(null, null));\r\n readonly end = input<boolean>(false);\r\n private subject = new Subject();\r\n private subscription: Subscription;\r\n\r\n ngOnInit() {\r\n this.subscription = this.subject\r\n .pipe(debounceTime(100))\r\n .subscribe((e: any) => { \r\n const value = (e.target as HTMLInputElement).value;\r\n SystemUtils.changeDateInterval(value, this.dateIntervalChange(), this.end(), e.key === ' ');\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @HostListener('keyup', ['$event']) public onKeyup(e: KeyboardEvent): void {\r\n if (e.key === ' ') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n this.subject.next(event);\r\n\r\n }\r\n}","import {\r\n Directive,\r\n HostListener,\r\n Injectable,\r\n input,\r\n output\r\n} from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Directive({\r\n selector: '[copyClipboard]',\r\n standalone: true\r\n})\r\nexport class CopyClipboardDirective {\r\n readonly payload = input<string>(undefined, { alias: \"copyClipboard\" });\r\n\r\n readonly copied = output<string>({ alias: 'copied' });\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(e: MouseEvent): void {\r\n e.preventDefault();\r\n if (!this.payload()) return;\r\n\r\n if (SystemUtils.isBrowser()) {\r\n let listener = (e: ClipboardEvent) => {\r\n let clipboard = e.clipboardData;\r\n const payload = this.payload();\r\n clipboard.setData('text/html', payload.toString());\r\n e.preventDefault();\r\n\r\n this.copied.emit(payload);\r\n };\r\n\r\n document.addEventListener('copy', listener, false);\r\n document.execCommand('copy');\r\n document.removeEventListener('copy', listener, false);\r\n }\r\n }\r\n}\r\n","import { Directive, forwardRef, input } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n NG_VALIDATORS,\r\n ValidationErrors,\r\n Validator,\r\n} from \"@angular/forms\";\r\nimport { endOfDay } from 'date-fns';\r\nimport { Validated } from '../definitions';\r\nimport { SystemUtils } from \"../system\";\r\n\r\n\r\n@Directive({\r\n selector: '[validator]',\r\n providers: [{ provide: NG_VALIDATORS, useExisting: ValidatorDirective, multi: true }],\r\n standalone: true,\r\n})\r\nexport class ValidatorDirective implements Validator {\r\n readonly validator = input<(control: AbstractControl) => ValidationErrors | null>(null);\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.validator()(control);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[validIf]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => ValidIfDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class ValidIfDirective implements Validator {\r\n readonly validIf = input<boolean>(false);\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n let isValid = false;\r\n let c = control.value ? (control.value as Validated) : null;\r\n if (!c) isValid = this.validIf() === true;\r\n else {\r\n try {\r\n isValid = c.isValid();\r\n } catch { }\r\n }\r\n if (isValid) {\r\n return null;\r\n } else {\r\n return { validIf: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[equals]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EqualsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EqualsValidatorDirective implements Validator {\r\n readonly equals = input<AbstractControl>(null);\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const isValid = this.equals().value === control.value;\r\n if (isValid) {\r\n return null;\r\n } else {\r\n return { equals: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[notEqual]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEqualValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotEqualValidatorDirective implements Validator {\r\n\r\n readonly notEqual = input<AbstractControl>(null);\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n\r\n const notEqual = this.notEqual();\r\n const isValid = (!notEqual.value && !control.value) || (notEqual.value !== control.value);\r\n const errors: ValidationErrors | null = isValid ? null : { 'notequal': true };\r\n\r\n // immediate show up\r\n const notEqualValue = this.notEqual();\r\n if (errors) {\r\n control.markAsTouched();\r\n } else if (notEqualValue.hasError('notequal')) {\r\n notEqualValue.setErrors({ 'notequal': null });\r\n notEqualValue.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n notEqualValue.markAsTouched();\r\n notEqualValue.markAsDirty();\r\n }\r\n return errors;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[emails]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => EmailsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class EmailsValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n let isValid = true;\r\n const input = control.value;\r\n if (!input || input.length === 0) return null;\r\n var parts = input.replaceAll(/\\r\\n/g, \"\").split(\";\");\r\n for (var i = 0; i < parts.length; i++) {\r\n if (parts[i].length > 0) {\r\n if (!SystemUtils.parseEmail(parts[i])) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!isValid) {\r\n return { emails: \"Elenco non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[guid]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => GuidValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class GuidValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n if (!input || input.length === 0) return null;\r\n const isValid = SystemUtils.parseUUID(input);\r\n if (!isValid) {\r\n return { guid: \"Non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[sqlDate]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SqlDateValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class SqlDateValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n if (!input || input.length === 0) return null;\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d.getFullYear() > 1750;\r\n if (!isValid) {\r\n return { sqlDate: \"Non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[notFuture]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotFutureValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotFutureValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n if (!input || input.length === 0) return null;\r\n const today = endOfDay(new Date());\r\n const d = endOfDay(SystemUtils.parseDate(input));\r\n const isValid = d <= today;\r\n if (!isValid) {\r\n return { notFuture: \"Non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[url]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UrlValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n const isValid = SystemUtils.parseUrl(input);\r\n if (!isValid) {\r\n return { url: \"Non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n\r\n@Directive({\r\n selector: \"[fileSize]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => FileSizeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class FileSizeValidatorDirective implements Validator {\r\n readonly maxSizeMb = input<number>(5);\r\n readonly minSizeMb = input<number>(0);\r\n readonly size = input<number>(null);\r\n\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n const size = this.size();\r\n let s = size ? size : 0;\r\n if (!input) return null;\r\n const isValid = s <= this.maxSizeMb() && s >= this.minSizeMb();\r\n if (isValid) {\r\n return null;\r\n } else {\r\n return { fileSize: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[maxTerms]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MaxTermsValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class MaxTermsValidatorDirective implements Validator {\r\n readonly maxTerms = input<number>(0);\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n if (!input) return null;\r\n const terms = input?.match(/\\S+/g)?.length ?? 0;\r\n const isValid = terms <= this.maxTerms();\r\n if (isValid) {\r\n return null;\r\n } else {\r\n return { maxTerms: \"Non valido.\" };\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[password]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => PasswordValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class PasswordValidatorDirective implements Validator {\r\n\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value ?? '';\r\n const strength = SystemUtils.calculatePasswordStrength(input);\r\n if (!strength.isValid) {\r\n return { password: \"Non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[time]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => TimeValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\n\r\nexport class TimeValidatorDirective implements Validator {\r\n readonly slots = input<string>(null);\r\n\r\n\r\n /**\r\n * Retrieve hours as a number from a time string (e: 12:00)\r\n * @param value : the time string\r\n * @returns the hours as a number or -1\r\n */\r\n private getTime(value: string): number | null {\r\n const p = value.split(':');\r\n if (p.length !== 2) return -1;\r\n const hh = parseInt(p[0]);\r\n if (hh < 0 || hh > 23) return -1;\r\n const mm = parseInt(p[1]);\r\n if (mm < 0 || hh > 59) return -1;\r\n return parseInt(p[0] + p[1]);\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control.value;\r\n if (!input || input.length === 0) return null;\r\n let isValid: boolean = false;\r\n const t = this.getTime(input);\r\n if (t !== -1) {\r\n const slotsValue = this.slots();\r\n if (slotsValue) {\r\n const slots = slotsValue.split('|');\r\n slots.forEach(s => {\r\n const t1 = this.getTime(s.substring(0, 5));\r\n const t2 = this.getTime(s.substring(6));\r\n if (t1 !== -1 && t2 !== -1 && t1 <= t && t2 >= t) {\r\n // Good\r\n isValid = true;\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n if (!isValid) {\r\n return { time: \"Non valido.\" };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: \"[notEmpty]\",\r\n providers: [\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NotEmptyValidatorDirective),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n})\r\nexport class NotEmptyValidatorDirective implements Validator {\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n const input = control?.value;\r\n if (!input || typeof input !== 'string' || input.length === 0) return null;\r\n const isValid = input.trim().length > 0;\r\n if (!isValid) {\r\n return { notEmpty: true };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\nimport { format } from 'date-fns';\r\nimport { it } from 'date-fns/locale';\r\nimport { SystemUtils } from '../system';\r\n\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'format',\r\n standalone: true\r\n})\r\nexport class FormatPipe implements PipeTransform {\r\n\r\n\r\n transform(\r\n value?: any | undefined,\r\n type: string = 'date',\r\n pattern: string = \"dd/MM/yyyy\"): string | undefined {\r\n if (value === undefined || value === null) return undefined;\r\n switch (type) {\r\n case 'D':\r\n case 'date':\r\n const d = SystemUtils.parseDate(value, it);\r\n if (d) return format(d, pattern, { locale: it });\r\n break;\r\n case 'C':\r\n case 'currency':\r\n return new Intl.NumberFormat('it-IT', { style: 'currency', currency: 'EUR' }).format(value ?? 0);\r\n case 'N':\r\n case 'number':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 2 }).format(value ?? 0);\r\n case 'N0':\r\n case 'number0':\r\n return new Intl.NumberFormat('it-IT', { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0);\r\n case 'P':\r\n case 'percentage':\r\n return new Intl.NumberFormat('it-IT', { style: 'percent', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value ?? 0); \r\n }\r\n return undefined;\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'replace',\r\n standalone: true\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n\r\n private sanitizer = inject(DomSanitizer);\r\n \r\n transform(value: string | undefined, regexValue: string, replaceValue: string): SafeHtml {\r\n if (!value) return undefined;\r\n if (regexValue === '\\n' && !replaceValue) {\r\n replaceValue = '<br>';\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replace(new RegExp(regexValue, 'g'), replaceValue));\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeHtml',\r\n standalone: true\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value ?? '');\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'safeUrl',\r\n standalone: true\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value ?? '');\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'callback',\r\n pure: false,\r\n standalone: true\r\n})\r\nexport class SearchCallbackPipe implements PipeTransform {\r\n transform(items: any[] | undefined, callback: (item: any) => boolean): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n return items.filter(item => callback(item));\r\n }\r\n}\r\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\nimport { SearchFilterMetadata } from '../definitions';\r\n\r\n// ---------------------------------------------------------------------------------\r\n// 2023.0921 aggiunto un campo opzionale di tipo SearchFilterMetadata per i conteggi\r\n//\r\n// - nel chiamante:\r\n// let items: Searchable[] = [...];\r\n// let myFilterText: string = 'testo del filtro';\r\n// const myFilterMetadata: SearchFilterMetadata = { total: 0, count: 0 };\r\n// \r\n// <div *ngFor=\"let item of items | search:myFilterText:myFilterMetadata\">\r\n// <div>Totale: {{ myFilterMetadata.total }}, Filtrati: {{ myFilterMetadata.count }}</div>\r\n// ---------------------------------------------------------------------------------\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'search',\r\n standalone: true\r\n})\r\nexport class SearchFilterPipe implements PipeTransform {\r\n transform(items?: any[], value?: string, metadata?: SearchFilterMetadata): any {\r\n\r\n // se non vengono passati i metadati ne crea una copia locale per evitare gli if\r\n metadata = metadata || { total: 0, count: 0 };\r\n\r\n if (!items || !value) {\r\n return items;\r\n }\r\n let result = items.filter(item => {\r\n if (item) {\r\n if (item.searchBag)\r\n return item.searchBag.name\r\n .toLowerCase()\r\n .indexOf(value.toLowerCase()) !== -1;\r\n else return item.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n }\r\n return null;\r\n });\r\n\r\n // aggiorna i conteggi\r\n metadata.total = items.length;\r\n metadata.count = result.length;\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'formatHtml',\r\n standalone: true\r\n})\r\nexport class FormatHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value.replaceAll(/(?:\\r\\n|\\r|\\n)/g, '<br>') ?? '');\r\n }\r\n}\r\n","export const UtilsMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n\r\n // Select dialog\r\n UTILS_DIALOGS_SELECT_OPTIONS_CHANGED: '§utils-dialogs-select-options-changed'\r\n};\r\n","import { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { SystemUtils } from \"./system\";\r\nimport { EventEmitter } from '@angular/core';\r\n\r\nexport class SelectableModel<T, V> {\r\n\r\n changed: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n private _all: T[] = [];\r\n get all(): T[] {\r\n return this._all;\r\n }\r\n private _current: SelectionModel<T>;\r\n get current(): SelectionModel<T> {\r\n return this._current;\r\n }\r\n private _lookupFieldName: string;\r\n\r\n constructor(\r\n allowMultiSelect: boolean = true,\r\n lookupFieldName: string = \"id\"\r\n ) {\r\n this._current = new SelectionModel<T>(allowMultiSelect, []);\r\n this._all = [];\r\n this._lookupFieldName = lookupFieldName;\r\n }\r\n\r\n /**\r\n * Update the view of an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n updateCurrent(item: T, lookupValue: V) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n toggle(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } else {\r\n this._all.splice(p, 1);\r\n }\r\n this._current.toggle(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Select an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n select(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p == -1) {\r\n this._all.push(item);\r\n } \r\n this._current.select(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Deselect an item\r\n * @param item : the item to update\r\n * @param lookupValue : the value\r\n */\r\n deselect(item: T, lookupValue?: V) {\r\n if (lookupValue) {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n );\r\n if (p != -1) {\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Deselect all specified item lookup values\r\n * @param lookupValues : the values\r\n */\r\n deselectByValues(lookupValues: V[]) {\r\n if (!lookupValues || lookupValues.length === 0) return;\r\n lookupValues.forEach(n => {\r\n const p = SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n n\r\n );\r\n if (p != -1) {\r\n let item = this._all[p];\r\n this._all.splice(p, 1);\r\n this._current.deselect(item);\r\n this.changed.emit(item);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clear current view\r\n * @param clearFunc : the function used to clear\r\n */\r\n clearCurrent(clearFunc: any) {\r\n this._current.selected.forEach(n => {\r\n clearFunc(n);\r\n });\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Deselect all items\r\n */\r\n clear() {\r\n this._all = [];\r\n this._current.clear();\r\n this.changed.emit();\r\n }\r\n\r\n /**\r\n * Checks if an item is selected using its lookup value\r\n * @param lookupValue : the value\r\n * @returns : true if the value is selected\r\n */\r\n isSelected(lookupValue?: V): boolean {\r\n return (lookupValue &&\r\n SystemUtils.arrayFindIndexByKey(\r\n this._all,\r\n this._lookupFieldName,\r\n lookupValue\r\n ) != -1\r\n );\r\n }\r\n\r\n /**\r\n * Checks if a selection exists\r\n * @returns : true if at least one selection exists\r\n */\r\n hasValue(): boolean {\r\n return this._all.length > 0;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface BroadcastMessageInfo {\r\n id: string;\r\n data?: any;\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BroadcastService {\r\n private subject = new Subject<BroadcastMessageInfo>();\r\n\r\n /**\r\n * Send a message\r\n * @param id : the message id\r\n * @param data : the data to send\r\n * @param delay : the number of milliseconds to wait before sending the message\r\n */\r\n sendMessage(id: string, data: any = null, delay: number = 0) {\r\n setTimeout(() => {\r\n this.subject.next({ id: id, data: data } as BroadcastMessageInfo);\r\n }, delay);\r\n }\r\n\r\n /**\r\n * Get the next message as observable\r\n * @returns : the observable object\r\n */\r\n getMessage(): Observable<BroadcastMessageInfo> {\r\n return this.subject.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n \r\n private _appUri: string = '';\r\n get appUri() {\r\n return this._appUri;\r\n }\r\n set appUri(value: string) {\r\n this._appUri = value;\r\n }\r\n\r\n private _appServiceUri: string = '';\r\n get appServiceUri() {\r\n return this._appServiceUri;\r\n }\r\n set appServiceUri(value: string) {\r\n this._appServiceUri = value;\r\n }\r\n\r\n private _appLoginRedirectUri: string = '';\r\n get appLoginRedirectUri() {\r\n return this._appLoginRedirectUri ?? this._appUri;\r\n }\r\n set appLoginRedirectUri(value: string) {\r\n this._appLoginRedirectUri = value;\r\n }\r\n\r\n private _appServiceLoginUri: string = '';\r\n get appServiceLoginUri() {\r\n return this._appServiceLoginUri ?? this._appServiceUri;\r\n }\r\n set appServiceLoginUri(value: string) {\r\n this._appServiceLoginUri = value;\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { SystemUtils } from '../system';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScreenService {\r\n public mq = signal<string>(\"\");\r\n \r\n get isTouchable(): boolean {\r\n return SystemUtils.isTouchable();\r\n }\r\n get isIEOrEdge(): boolean {\r\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\r\n }\r\n\r\n}\r\n","/**\r\n * Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\n\r\n/**\r\n * The message bag sent as a message\r\n */\r\nexport interface BroadcastChannelMessageBag<T> {\r\n messageId: string;\r\n sender: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * Message subscription params\r\n */\r\nexport interface BroadcastChannelSubscriberInfo<T> {\r\n messageId: string;\r\n action: (bag: BroadcastChannelMessageBag<T>) => void;\r\n}\r\n\r\n/**\r\n * Web Standard Broadcast Messages Manager\r\n * https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\r\n */\r\nexport class BroadcastChannelManager {\r\n private channel?: BroadcastChannel;\r\n private subscriptions: BroadcastChannelSubscriberInfo<any>[] = [];\r\n\r\n /**\r\n * Get the current channel registration\r\n */\r\n public get currentBus(): string | undefined {\r\n return this.channel?.name;\r\n }\r\n\r\n constructor(bus: string) {\r\n this.channel = new BroadcastChannel(bus);\r\n\r\n this.channel.onmessageerror = (e: any) => {\r\n console.error('[BroadcastChannelManager] Errore di ricezione del messaggio', e);\r\n };\r\n\r\n this.channel.onmessage = (e: MessageEvent) => {\r\n const bag: BroadcastChannelMessageBag<any> | undefined = e.data as BroadcastChannelMessageBag<any>;\r\n if (bag) {\r\n const bagInfo: BroadcastChannelSubscriberInfo<any> | undefined = this.subscriptions.find(m => m.messageId === bag.messageId);\r\n bagInfo?.action(bag);\r\n }\r\n }\r\n }\r\n\r\n dispose(): void {\r\n this.subscriptions = [];\r\n this.channel?.close();\r\n this.channel = undefined;\r\n }\r\n\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value });\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>): void;\r\n /**\r\n * Send a message\r\n * @param bag The message, see also {@link BroadcastChannelMessageBag}\r\n * @param delay The number of milliseconds to wait before sending the message, see also {@link setTimeout}\r\n *\r\n * @example\r\n * channel.sendMessage({ messageId: 'my-broadcast-message', sender: 'the-sender', data: value }, 250);\r\n */\r\n sendMessage<T>(bag: BroadcastChannelMessageBag<T>, delay?: number): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value);\r\n */\r\n sendMessage<T>(messageId: string, data?: T): void;\r\n /**\r\n * Send a message\r\n * @param messageId The message id\r\n * @param data The data to send\r\n * @param delay The number of milliseconds to wait before sending the message\r\n *\r\n * @example\r\n * channel.sendMessage('my-broadcast-message', value, 250);\r\n */\r\n sendMessage<T>(messageId: string, data?: T, delay?: number): void;\r\n\r\n /**\r\n * overloads\r\n */\r\n sendMessage<T>(messageIdorBag: string | BroadcastChannelMessageBag<T>, dataOrDelay?: T | number, delay?: number) {\r\n setTimeout(() => {\r\n if (typeof messageIdorBag === 'string') {\r\n this.channel?.postMessage({ messageId: messageIdorBag, data: dataOrDelay } as BroadcastChannelMessageBag<T>);\r\n } else {\r\n this.channel?.postMessage(messageIdorBag as BroadcastChannelMessageBag<T>);\r\n }\r\n }, (typeof dataOrDelay === 'number' ? dataOrDelay : delay) ?? 0);\r\n }\r\n\r\n /**\r\n * Subscribe to a message\r\n * @param args The subscription info, see also {@link BroadcastChannelSubscriberInfo}\r\n */\r\n subscribe<T>(args: BroadcastChannelSubscriberInfo<T>) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === args.messageId);\r\n if (i === -1) {\r\n this.subscriptions.push(args);\r\n } else {\r\n this.subscriptions[i].action = args.action;\r\n }\r\n }\r\n\r\n /**\r\n * Remove a message subscription\r\n * @param messageId The message id\r\n */\r\n unsubscribe(messageId: string) {\r\n const i: number = this.subscriptions.findIndex(m => m.messageId === messageId);\r\n if (i !== -1) {\r\n this.subscriptions.splice(i, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the current subscriptions\r\n */\r\n unsubscribeAll() {\r\n this.subscriptions = [];\r\n }\r\n}\r\n","import { computed, inject, Injectable, OnDestroy, RendererFactory2, Signal, signal } from \"@angular/core\";\r\nimport { BroadcastChannelManager, BroadcastChannelMessageBag } from './broadcastChannelManager';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\n\r\n\r\n/**\r\n * Kind of themes: system default, light or dark\r\n */\r\nexport type ThemeType = 'auto' | 'light' | 'dark';\r\n\r\n/**\r\n * Available themes' schema\r\n */\r\ninterface ThemeInfoRecord {\r\n icon: string;\r\n name: string;\r\n next: ThemeType;\r\n tooltip: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ThemeService implements OnDestroy {\r\n\r\n // messaggi broadcast\r\n private readonly broadcastChannel = new BroadcastChannelManager('THEME-SERVICE');\r\n private readonly broadcastMessage: string = '$theme-changed';\r\n\r\n // per intercettare il cambio di tema a livello di sistema\r\n private readonly prefersColorSchemeMediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');\r\n\r\n /**\r\n * Theme changed e.\r\n * Notify the consuming component about the incoming theme change.\r\n * @example \r\n * // React to theme changes\r\n * this.themeService.themeChanged\r\n * .pipe(takeUntil(this.unsubscribe))\r\n * .subscribe((value: ThemeType) => {\r\n * // do the job done....\r\n * });\r\n */\r\n private themeChanged = new BehaviorSubject<ThemeType>('auto');\r\n // espone al consumatore un'observable\r\n public changed: Observable<ThemeType> = this.themeChanged.asObservable();\r\n\r\n private renderFactory2 = inject(RendererFactory2);\r\n private renderer = this.renderFactory2.createRenderer(null, null);\r\n\r\n /**\r\n * Current theme\r\n */\r\n private readonly theme = signal<ThemeType>(\"light\");\r\n /**\r\n * The current theme is \"System default\"\r\n */\r\n private readonly auto: Signal<boolean> = computed(() => this.theme() === 'auto');\r\n\r\n /**\r\n * Configuration schema about the icon, the text and the toggle() sequence\r\n */\r\n private readonly themeInfo: Record<ThemeType, ThemeInfoRecord> = {\r\n ['auto']: { icon: 'routine', name: 'Tema di sistema', next: 'light', tooltip: 'Passa a tema chiaro', },\r\n ['light']: { icon: 'light_mode', name: 'Tema chiaro', next: 'dark', tooltip: 'Passa a tema scuro', },\r\n ['dark']: { icon: 'dark_mode', name: 'Tema scuro', next: 'auto', tooltip: 'Passa a tema di sistema', },\r\n };\r\n\r\n /**\r\n * Icon of the current theme (mat-icon code)\r\n */\r\n public readonly themeIcon: Signal<string> = computed(() => this.themeInfo[this.theme()].icon);\r\n /**\r\n * Current theme name\r\n */\r\n public readonly themeName: Signal<string> = computed(() => this.themeInfo[this.theme()].name);\r\n /**\r\n * Tooltip text on toggle \r\n */\r\n public readonly toggleTooltip: Signal<string> = computed(() => this.themeInfo[this.theme()].tooltip);\r\n\r\n /**\r\n * Initialize\r\n */\r\n initialize(theme: ThemeType = this.getPreferredTheme()) {\r\n // React to current theme\r\n this.prefersColorSchemeMediaQueryList.onchange = (_: MediaQueryListEvent) => this.auto() ? this.setTheme(theme) : null;\r\n\r\n // Support boradcast channel messaging\r\n this.broadcastChannel.subscribe<ThemeType>({\r\n messageId: this.broadcastMessage,\r\n action: (bag: BroadcastChannelMessageBag<ThemeType>) => {\r\n if (this.theme() !== bag.data) {\r\n this.setTheme(bag.data);\r\n }\r\n }\r\n });\r\n\r\n // Load theme\r\n this.setTheme(theme);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.broadcastChannel.dispose();\r\n }\r\n\r\n /**\r\n * Get the current preferred theme\r\n */\r\n private getPreferredTheme(): ThemeType {\r\n let theme: ThemeType = localStorage.getItem(\"preferred-theme\") as ThemeType;\r\n if (!this.isTheme(theme)) {\r\n theme = 'auto';\r\n }\r\n return theme;\r\n }\r\n\r\n /**\r\n * Check if a value string is a theme type\r\n * @param value : th string value\r\n * @returns true if the the value is a valid theme type\r\n */\r\n private isTheme(value: string): value is ThemeType {\r\n return ['auto', 'light', 'dark'].includes(value);\r\n }\r\n\r\n\r\n /**\r\n * Set the new theme\r\n * @param theme the new theme\r\n */\r\n private setTheme(theme: ThemeType = 'auto') {\r\n this.renderer.removeClass(document.body, 'light');\r\n this.renderer.removeClass(document.body, 'dark');\r\n this.theme.set(theme);\r\n localStorage.setItem(\"preferred-theme\", this.theme());\r\n this.renderer.addClass(document.body, this.auto() ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\") : theme);\r\n // Notify that current theme has changed\r\n this.themeChanged.next(this.getTheme());\r\n this.broadcastChannel.sendMessage(this.broadcastMessage, this.theme());\r\n }\r\n\r\n /**\r\n * Toggle theme\r\n */\r\n public toggleTheme(): void {\r\n this.setTheme(this.themeInfo[this.theme()].next);\r\n }\r\n\r\n /**\r\n * Get current real theme: light or dark\r\n */\r\n public getTheme(): ThemeType {\r\n return (\r\n this.auto()\r\n ? (window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\")\r\n : this.getPreferredTheme());\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AutoFocusDirective } from './directives/autoFocusDirective';\r\nimport { DateIntervalChangeDirective } from './directives/changeDateIntervalDirective';\r\nimport { CopyClipboardDirective } from './directives/copyClipboardDirective';\r\nimport { EmailsValidatorDirective, EqualsValidatorDirective, FileSizeValidatorDirective, GuidValidatorDirective, MaxTermsValidatorDirective, NotEmptyValidatorDirective, NotFutureValidatorDirective, PasswordValidatorDirective, SqlDateValidatorDirective, UrlValidatorDirective, ValidIfDirective, ValidatorDirective } from './directives/validators';\r\nimport { FormatPipe } from './pipes/format.pipe';\r\nimport { ReplacePipe } from './pipes/replace.pipe';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { SafeUrlPipe } from './pipes/safe-url.pipe';\r\nimport { SearchCallbackPipe } from './pipes/search-callback.pipe';\r\nimport { SearchFilterPipe } from './pipes/search-filter.pipe';\r\nimport { FormatHtmlPipe } from './pipes/format-html.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n NotEmptyValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n exports: [\r\n FileSizeValidatorDirective,\r\n ValidIfDirective,\r\n ValidatorDirective,\r\n EqualsValidatorDirective,\r\n GuidValidatorDirective,\r\n EmailsValidatorDirective,\r\n UrlValidatorDirective,\r\n NotFutureValidatorDirective,\r\n NotEmptyValidatorDirective,\r\n PasswordValidatorDirective,\r\n DateIntervalChangeDirective,\r\n SqlDateValidatorDirective,\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe,\r\n CopyClipboardDirective,\r\n AutoFocusDirective,\r\n MaxTermsValidatorDirective\r\n ],\r\n providers: [\r\n SearchFilterPipe,\r\n SearchCallbackPipe,\r\n SafeHtmlPipe,\r\n SafeUrlPipe,\r\n ReplacePipe,\r\n FormatPipe,\r\n FormatHtmlPipe\r\n ]\r\n})\r\nexport class ArsCoreModule { }\r\n\r\nexport * from './definitions';\r\nexport * from './messages';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\nexport * from './services/theme.service';\r\nexport * from './system';\r\n\r\n","import { inject, Injectable, NgModule } from '@angular/core';\r\nimport { DateAdapter, MatDateFormats, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { TZDate } from '@date-fns/tz';\r\nimport {\r\n Locale,\r\n getMonth,\r\n getYear,\r\n getDate,\r\n getDay,\r\n getDaysInMonth,\r\n formatISO,\r\n addYears,\r\n addMonths,\r\n addDays,\r\n isValid,\r\n isDate,\r\n format,\r\n parseISO,\r\n parse,\r\n} from 'date-fns';\r\n\r\n\r\n/** Creates an array and fills it with values. */\r\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n\r\n// date-fns doesn't have a way to read/print month names or days of the week directly,\r\n// so we get them by formatting a date with a format that produces the desired month/day.\r\nconst MONTH_FORMATS = {\r\n long: 'LLLL',\r\n short: 'LLL',\r\n narrow: 'LLLLL',\r\n};\r\n\r\nconst DAY_OF_WEEK_FORMATS = {\r\n long: 'EEEE',\r\n short: 'EEE',\r\n narrow: 'EEEEE',\r\n};\r\n\r\nexport const MAT_DATE_FNS_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: 'P',\r\n },\r\n display: {\r\n dateInput: 'P',\r\n monthYearLabel: 'LLL uuuu',\r\n dateA11yLabel: 'PP',\r\n monthYearA11yLabel: 'LLLL uuuu',\r\n },\r\n};\r\n\r\n\r\n\r\n/** Adds date-fns support to Angular Material. */\r\n@Injectable()\r\nexport class DateFnsAdapter extends DateAdapter<Date, Locale> {\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n const matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\r\n this.setLocale(matDateLocale as Locale);\r\n }\r\n\r\n getYear(date: Date): number {\r\n return getYear(date);\r\n }\r\n\r\n getMonth(date: Date): number {\r\n return getMonth(date);\r\n }\r\n\r\n getDate(date: Date): number {\r\n return getDate(date);\r\n }\r\n\r\n getDayOfWeek(date: Date): number {\r\n return getDay(date);\r\n }\r\n\r\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = MONTH_FORMATS[style];\r\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\r\n }\r\n\r\n getDateNames(): string[] {\r\n const dtf =\r\n typeof Intl !== 'undefined'\r\n ? new Intl.DateTimeFormat(this.locale.code, {\r\n day: 'numeric',\r\n timeZone: 'utc',\r\n })\r\n : null;\r\n\r\n return range(31, i => {\r\n if (dtf) {\r\n // date-fns doesn't appear to support this functionality.\r\n // Fall back to `Intl` on supported browsers.\r\n const date = new Date();\r\n date.setUTCFullYear(2017, 0, i + 1);\r\n date.setUTCHours(0, 0, 0, 0);\r\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\r\n }\r\n\r\n return i + '';\r\n });\r\n }\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n const pattern = DAY_OF_WEEK_FORMATS[style];\r\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\r\n }\r\n\r\n getYearName(date: Date): string {\r\n return this.format(date, 'y');\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return this.locale.options?.weekStartsOn ?? 0;\r\n }\r\n\r\n getNumDaysInMonth(date: Date): number {\r\n return getDaysInMonth(date);\r\n }\r\n\r\n clone(date: Date): Date {\r\n return new Date(date.getTime());\r\n }\r\n\r\n createDate(year: number, month: number, date: number): Date {\r\n\r\n // Check for invalid month and date (except upper bound on date which we have to check after\r\n // creating the Date).\r\n if (month < 0 || month > 11) {\r\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n }\r\n\r\n if (date < 1) {\r\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n }\r\n\r\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\r\n // To work around this we use `setFullYear` and `setHours` instead.\r\n const result = new Date();\r\n result.setFullYear(year, month, date);\r\n result.setHours(0, 0, 0, 0);\r\n const result2 = new TZDate(result, \"Europe/Rome\");\r\n \r\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\r\n if (result2.getMonth() != month) {\r\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n }\r\n\r\n return result2;\r\n }\r\n\r\n today(): Date {\r\n return new Date();\r\n }\r\n\r\n parse(value: any, parseFormat: string | string[]): Date | undefined {\r\n if (typeof value == 'string' && value.length > 0) {\r\n let iso8601Date = parseISO(value);\r\n if (this.isValid(iso8601Date)) {\r\n iso8601Date = new TZDate(iso8601Date, \"Europe/Rome\");\r\n return iso8601Date;\r\n }\r\n\r\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\r\n\r\n if (!parseFormat.length) {\r\n throw Error('Formats array must not be empty.');\r\n }\r\n\r\n for (const currentFormat of formats) {\r\n let fromFormat = parse(value, currentFormat, new Date(), { locale: this.locale });\r\n if (this.isValid(fromFormat)) {\r\n fromFormat = new TZDate(fromFormat, \"Europe/Rome\");\r\n return fromFormat;\r\n }\r\n }\r\n\r\n return this.invalid();\r\n } else if (typeof value === 'number') {\r\n return new Date(value);\r\n } else if (value instanceof Date) {\r\n return this.clone(value);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n\r\n format(date: Date, displayFormat: string): string {\r\n if (!this.isValid(date)) {\r\n throw Error('DateFnsAdapter: Cannot format invalid date.');\r\n }\r\n\r\n return format(date, displayFormat, { locale: this.locale });\r\n }\r\n\r\n addCalendarYears(date: Date, years: number): Date {\r\n return addYears(date, years);\r\n }\r\n\r\n addCalendarMonths(date: Date, months: number): Date {\r\n return addMonths(date, months);\r\n }\r\n\r\n addCalendarDays(date: Date, days: number): Date {\r\n return addDays(date, days);\r\n }\r\n\r\n toIso8601(date: Date): string {\r\n return formatISO(date, { representation: 'date' });\r\n }\r\n\r\n /**\r\n * Returns the given value if given a valid Date or undefined. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into undefined. Returns an\r\n * invalid date for all other values.\r\n */\r\n override deserialize(value: any): Date | undefined {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const date = parseISO(value);\r\n if (this.isValid(date)) {\r\n return date;\r\n }\r\n }\r\n return super.deserialize(value);\r\n }\r\n\r\n isDateInstance(obj: any): boolean {\r\n return isDate(obj);\r\n }\r\n\r\n isValid(date: Date): boolean {\r\n return isValid(date);\r\n }\r\n\r\n invalid(): Date {\r\n return new Date(NaN);\r\n }\r\n}\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: DateAdapter,\r\n useClass: DateFnsAdapter,\r\n deps: [MAT_DATE_LOCALE],\r\n },\r\n { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }\r\n ],\r\n})\r\nexport class ArsDateFnsModule { }","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[removeFocus]'\r\n})\r\nexport class RemoveFocusDirective {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(_event: Event): void {\r\n // Controllo null safety\r\n if (this.elementRef?.nativeElement && typeof this.elementRef.nativeElement.blur === 'function') {\r\n // Piccolo delay per permettere al click di completarsi\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.blur();\r\n }, 0);\r\n }\r\n }\r\n}","import { Pipe, Injectable, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { SystemUtils } from '../system';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'formatMarkdown',\r\n standalone: true\r\n})\r\nexport class FormatMarkdownPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n transform(value?: string ): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(\r\n SystemUtils.markdownToHtml(value ?? ''));\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './core.module';\r\nexport * from './dateFnsAdapter.module';\r\nexport * from './directives/changeDateIntervalDirective';\r\nexport * from './directives/copyClipboardDirective';\r\nexport * from './directives/autoFocusDirective';\r\nexport * from './directives/removeFocusDirective';\r\nexport * from './directives/validators';\r\nexport * from './pipes/search-filter.pipe';\r\nexport * from './pipes/search-callback.pipe';\r\nexport * from './pipes/safe-url.pipe';\r\nexport * from './pipes/safe-html.pipe';\r\nexport * from './pipes/replace.pipe';\r\nexport * from './pipes/format.pipe';\r\nexport * from './pipes/format-html.pipe';\r\nexport * from './pipes/format-markdown.pipe';\r\nexport * from './system';\r\nexport * from './definitions';\r\nexport * from './selectable';\r\nexport * from './services/broadcast.service';\r\nexport * from './services/broadcastChannelManager';\r\nexport * from './services/environment.service';\r\nexport * from './services/screen.service';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arsedizioni/ars-utils",
3
- "version": "20.1.21",
3
+ "version": "20.1.23",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -36,34 +36,34 @@
36
36
  "types": "./clipper.common/index.d.ts",
37
37
  "default": "./fesm2022/arsedizioni-ars-utils-clipper.common.mjs"
38
38
  },
39
- "./core": {
40
- "types": "./core/index.d.ts",
41
- "default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
42
- },
43
39
  "./clipper.ui": {
44
40
  "types": "./clipper.ui/index.d.ts",
45
41
  "default": "./fesm2022/arsedizioni-ars-utils-clipper.ui.mjs"
46
42
  },
47
- "./evolution.common": {
48
- "types": "./evolution.common/index.d.ts",
49
- "default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
43
+ "./core": {
44
+ "types": "./core/index.d.ts",
45
+ "default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
50
46
  },
51
47
  "./help": {
52
48
  "types": "./help/index.d.ts",
53
49
  "default": "./fesm2022/arsedizioni-ars-utils-help.mjs"
54
50
  },
51
+ "./evolution.common": {
52
+ "types": "./evolution.common/index.d.ts",
53
+ "default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
54
+ },
55
55
  "./support.common": {
56
56
  "types": "./support.common/index.d.ts",
57
57
  "default": "./fesm2022/arsedizioni-ars-utils-support.common.mjs"
58
58
  },
59
- "./tinymce": {
60
- "types": "./tinymce/index.d.ts",
61
- "default": "./fesm2022/arsedizioni-ars-utils-tinymce.mjs"
62
- },
63
59
  "./support.ui": {
64
60
  "types": "./support.ui/index.d.ts",
65
61
  "default": "./fesm2022/arsedizioni-ars-utils-support.ui.mjs"
66
62
  },
63
+ "./tinymce": {
64
+ "types": "./tinymce/index.d.ts",
65
+ "default": "./fesm2022/arsedizioni-ars-utils-tinymce.mjs"
66
+ },
67
67
  "./ui": {
68
68
  "types": "./ui/index.d.ts",
69
69
  "default": "./fesm2022/arsedizioni-ars-utils-ui.mjs"