@arsedizioni/ars-utils 20.0.33 → 20.0.35
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
|
@@ -174,20 +174,20 @@ declare class SystemUtils {
|
|
|
174
174
|
* @param b : string b
|
|
175
175
|
* @returns : 0 if equals, 1 if bigger, -1 if lower
|
|
176
176
|
*/
|
|
177
|
-
static compareString(a
|
|
177
|
+
static compareString(a?: string, b?: string): number;
|
|
178
178
|
/**
|
|
179
179
|
* Capitalize a string
|
|
180
180
|
* @param s : the string to capitalize
|
|
181
181
|
* @returns : the capitalized string
|
|
182
182
|
*/
|
|
183
|
-
static capitalize(s
|
|
183
|
+
static capitalize(s?: string): string | undefined;
|
|
184
184
|
/**
|
|
185
185
|
* Truncate a string
|
|
186
186
|
* @param s : the string to truncate
|
|
187
187
|
* @param max : the max number of chars
|
|
188
188
|
* @returns : the truncated string
|
|
189
189
|
*/
|
|
190
|
-
static truncate(s
|
|
190
|
+
static truncate(s?: string, max?: number): string | undefined;
|
|
191
191
|
/**
|
|
192
192
|
* Join a list of strings
|
|
193
193
|
* @param items : the list of strings
|
|
@@ -195,20 +195,26 @@ declare class SystemUtils {
|
|
|
195
195
|
* @param max : the maximum resulting string
|
|
196
196
|
* @returns : the joined string
|
|
197
197
|
*/
|
|
198
|
-
static join(items
|
|
198
|
+
static join(items?: string[], sep?: string, max?: number): string | undefined;
|
|
199
199
|
/**
|
|
200
200
|
* Replace stuff in text html
|
|
201
201
|
* @param s : the string to process
|
|
202
202
|
* @returns : the replaced string
|
|
203
203
|
*/
|
|
204
|
-
static replaceAsHtml(s
|
|
204
|
+
static replaceAsHtml(s?: string): string;
|
|
205
|
+
/**
|
|
206
|
+
* Convert a markdown string to html
|
|
207
|
+
* @param markdown : the markdown string
|
|
208
|
+
* @returns
|
|
209
|
+
*/
|
|
210
|
+
static markdownToHtml(markdown?: string): string | undefined;
|
|
205
211
|
/**
|
|
206
212
|
* Compare two names
|
|
207
213
|
* @param a : name a
|
|
208
214
|
* @param b : name b
|
|
209
215
|
* @returns : true if a equals b
|
|
210
216
|
*/
|
|
211
|
-
static compareNames(a
|
|
217
|
+
static compareNames(a?: string, b?: string): boolean;
|
|
212
218
|
/**
|
|
213
219
|
* Cipher a text
|
|
214
220
|
* @param text : the text
|
|
@@ -216,7 +222,7 @@ declare class SystemUtils {
|
|
|
216
222
|
* @param reverse : true to decode, false to encode
|
|
217
223
|
* @returns :the ciphered text
|
|
218
224
|
*/
|
|
219
|
-
static cipher(text: string, key: string, reverse?: boolean): string;
|
|
225
|
+
static cipher(text: string, key: string, reverse?: boolean): string | undefined;
|
|
220
226
|
/**
|
|
221
227
|
* Clone an object using JSON
|
|
222
228
|
* @param obj : the oblect to clone
|
|
@@ -234,13 +240,13 @@ declare class SystemUtils {
|
|
|
234
240
|
* @param value : the value to parse
|
|
235
241
|
* @returns : true if is a valid UUID
|
|
236
242
|
*/
|
|
237
|
-
static parseUUID(value
|
|
243
|
+
static parseUUID(value?: string): boolean;
|
|
238
244
|
/**
|
|
239
245
|
* Parse and ensure that UUID is not empty
|
|
240
246
|
* @param value : the value to parse
|
|
241
247
|
* @returns : true if valid and not empty
|
|
242
248
|
*/
|
|
243
|
-
static parseUUIDNotEmpty(value
|
|
249
|
+
static parseUUIDNotEmpty(value?: string): boolean;
|
|
244
250
|
/**
|
|
245
251
|
* Return an empty UUID
|
|
246
252
|
* @returns : the empty UUID
|
|
@@ -256,26 +262,26 @@ declare class SystemUtils {
|
|
|
256
262
|
* @param value : email
|
|
257
263
|
* @returns : true if the email is valid or empty
|
|
258
264
|
*/
|
|
259
|
-
static parseEmail(value
|
|
265
|
+
static parseEmail(value?: string): boolean;
|
|
260
266
|
/**
|
|
261
267
|
* Parse a text and return true if is a valid url or null
|
|
262
268
|
* @param value : the url to parse
|
|
263
269
|
* @returns : true if the url is valid or empty
|
|
264
270
|
*/
|
|
265
|
-
static parseUrl(value
|
|
271
|
+
static parseUrl(value?: string): boolean;
|
|
266
272
|
/**
|
|
267
273
|
* Get date parts from a string value
|
|
268
274
|
* @param value : the string to parse
|
|
269
275
|
* @returns : an array of numbers with year, month, day
|
|
270
276
|
*/
|
|
271
|
-
static getDateParts(value
|
|
277
|
+
static getDateParts(value?: string): number[] | undefined;
|
|
272
278
|
/**
|
|
273
279
|
* Parse a date
|
|
274
280
|
* @param value : the value to check
|
|
275
281
|
* @param locale : the locale to use
|
|
276
282
|
* @returns : a valid Date object or null
|
|
277
283
|
*/
|
|
278
|
-
static parseDate(value
|
|
284
|
+
static parseDate(value?: string | Date, locale?: any): Date | undefined;
|
|
279
285
|
/**
|
|
280
286
|
* Format a date
|
|
281
287
|
* @param value : the date or string to format
|
|
@@ -283,13 +289,13 @@ declare class SystemUtils {
|
|
|
283
289
|
* @param locale : the locale to use (default is IT)
|
|
284
290
|
* @returns : the formatted string
|
|
285
291
|
*/
|
|
286
|
-
static formatDate(value
|
|
292
|
+
static formatDate(value?: Date | string, fmt?: DateFormat | string, locale?: any): string;
|
|
287
293
|
/**
|
|
288
294
|
* Return an italian local date
|
|
289
295
|
* @param value : the date
|
|
290
296
|
* @returns : the new date
|
|
291
297
|
*/
|
|
292
|
-
static toLocalDate(value
|
|
298
|
+
static toLocalDate(value?: Date | string): Date;
|
|
293
299
|
/**
|
|
294
300
|
* Update a DateInterval object according to a string
|
|
295
301
|
* @param value : string value
|
|
@@ -303,13 +309,13 @@ declare class SystemUtils {
|
|
|
303
309
|
* @param value : the value to encode
|
|
304
310
|
* @returns : the url encoded string
|
|
305
311
|
*/
|
|
306
|
-
static urlEncode(value: string): string;
|
|
312
|
+
static urlEncode(value: string): string | undefined;
|
|
307
313
|
/**
|
|
308
314
|
* Decode url
|
|
309
315
|
* @param value : the url to decode
|
|
310
316
|
* @returns : the decode url string
|
|
311
317
|
*/
|
|
312
|
-
static urlDecode(value
|
|
318
|
+
static urlDecode(value?: string): string | undefined;
|
|
313
319
|
/**
|
|
314
320
|
* Get a querystring parameter value
|
|
315
321
|
* @param name : the parameter name
|
|
@@ -326,7 +332,7 @@ declare class SystemUtils {
|
|
|
326
332
|
* @param password: the password to evaluate
|
|
327
333
|
* @returns the password strength info
|
|
328
334
|
*/
|
|
329
|
-
static calculatePasswordStrength(password
|
|
335
|
+
static calculatePasswordStrength(password?: string): PasswordStrength;
|
|
330
336
|
/**
|
|
331
337
|
* Check if current browser supports touch
|
|
332
338
|
* @returns : true if the display is touchable
|
|
@@ -307,6 +307,8 @@ class SystemUtils {
|
|
|
307
307
|
* @returns : the replaced string
|
|
308
308
|
*/
|
|
309
309
|
static replaceAsHtml(s) {
|
|
310
|
+
if (!s)
|
|
311
|
+
return undefined;
|
|
310
312
|
const regex = /https?:\/\/.*[^\s]/ig;
|
|
311
313
|
const m = regex.exec(s);
|
|
312
314
|
if (m && m.length > 0) {
|
|
@@ -318,6 +320,91 @@ class SystemUtils {
|
|
|
318
320
|
}
|
|
319
321
|
return s;
|
|
320
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Convert a markdown string to html
|
|
325
|
+
* @param markdown : the markdown string
|
|
326
|
+
* @returns
|
|
327
|
+
*/
|
|
328
|
+
static markdownToHtml(markdown) {
|
|
329
|
+
if (!markdown)
|
|
330
|
+
return undefined;
|
|
331
|
+
let html = markdown;
|
|
332
|
+
// Headers
|
|
333
|
+
html = html.replace(/^### (.*$)/gim, '<h3>$1</h3>');
|
|
334
|
+
html = html.replace(/^## (.*$)/gim, '<h2>$1</h2>');
|
|
335
|
+
html = html.replace(/^# (.*$)/gim, '<h1>$1</h1>');
|
|
336
|
+
// Bold
|
|
337
|
+
html = html.replace(/\*\*(.*)\*\*/gim, '<strong>$1</strong>');
|
|
338
|
+
html = html.replace(/__(.*?)__/gim, '<strong>$1</strong>');
|
|
339
|
+
// Italic
|
|
340
|
+
html = html.replace(/\*(.*?)\*/gim, '<em>$1</em>');
|
|
341
|
+
html = html.replace(/_(.*?)_/gim, '<em>$1</em>');
|
|
342
|
+
// Code blocks
|
|
343
|
+
html = html.replace(/```([\s\S]*?)```/gim, '<pre><code>$1</code></pre>');
|
|
344
|
+
// Inline code
|
|
345
|
+
html = html.replace(/`(.*?)`/gim, '<code>$1</code>');
|
|
346
|
+
// Links
|
|
347
|
+
html = html.replace(/\[([^\]]*)\]\(([^)]*)\)/gim, '<a href="$2">$1</a>');
|
|
348
|
+
// Images
|
|
349
|
+
html = html.replace(/!\[([^\]]*)\]\(([^)]*)\)/gim, '<img alt="$1" src="$2" />');
|
|
350
|
+
// Blockquotes
|
|
351
|
+
html = html.replace(/^\> (.*$)/gim, '<blockquote>$1</blockquote>');
|
|
352
|
+
// Unordered lists
|
|
353
|
+
html = html.replace(/^\* (.*$)/gim, '<li>$1</li>');
|
|
354
|
+
html = html.replace(/^- (.*$)/gim, '<li>$1</li>');
|
|
355
|
+
// Ordered lists
|
|
356
|
+
html = html.replace(/^\d+\. (.*$)/gim, '<li>$1</li>');
|
|
357
|
+
// Wrap list items in ul/ol tags
|
|
358
|
+
html = html.replace(/(<li>.*<\/li>)/gims, function (match) {
|
|
359
|
+
return '<ul>' + match + '</ul>';
|
|
360
|
+
});
|
|
361
|
+
// Tables
|
|
362
|
+
html = html.replace(/\|(.+)\|/g, function (_match, content) {
|
|
363
|
+
const cells = content.split('|').map((cell) => cell.trim());
|
|
364
|
+
return '<tr>' + cells.map((cell) => {
|
|
365
|
+
// Check if this is a header separator row
|
|
366
|
+
if (cell.match(/^[\s\-\:]+$/)) {
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
return '<td>' + cell + '</td>';
|
|
370
|
+
}).filter((cell) => cell !== null).join('') + '</tr>';
|
|
371
|
+
});
|
|
372
|
+
// Convert table rows to proper table structure
|
|
373
|
+
html = html.replace(/(<tr>.*?<\/tr>)\s*\n*(<tr>.*?<\/tr>)/gs, function (match, firstRow, rest) {
|
|
374
|
+
// Check if the second row is a separator (contains only dashes, colons, spaces)
|
|
375
|
+
const secondRowContent = rest.replace(/<\/?t[rd]>/g, '');
|
|
376
|
+
if (secondRowContent.match(/^[\s\-\:\|]+$/)) {
|
|
377
|
+
// This is a header separator, make first row a header
|
|
378
|
+
const headerRow = firstRow.replace(/<td>/g, '<th>').replace(/<\/td>/g, '</th>');
|
|
379
|
+
return headerRow;
|
|
380
|
+
}
|
|
381
|
+
return match;
|
|
382
|
+
});
|
|
383
|
+
// Wrap table rows in table tags
|
|
384
|
+
html = html.replace(/(<tr>.*?<\/tr>(?:\s*<tr>.*?<\/tr>)*)/gs, '<table>$1</table>');
|
|
385
|
+
// Horizontal rules
|
|
386
|
+
html = html.replace(/^\-\-\-$/gim, '<hr>');
|
|
387
|
+
html = html.replace(/^\*\*\*$/gim, '<hr>');
|
|
388
|
+
// Line breaks
|
|
389
|
+
html = html.replace(/\n\n/gim, '</p><p>');
|
|
390
|
+
html = html.replace(/\n/gim, '<br>');
|
|
391
|
+
// Wrap in paragraphs
|
|
392
|
+
html = '<p>' + html + '</p>';
|
|
393
|
+
// Clean up empty paragraphs
|
|
394
|
+
html = html.replace(/<p><\/p>/gim, '');
|
|
395
|
+
html = html.replace(/<p>(<h[1-6]>)/gim, '$1');
|
|
396
|
+
html = html.replace(/(<\/h[1-6]>)<\/p>/gim, '$1');
|
|
397
|
+
html = html.replace(/<p>(<ul>)/gim, '$1');
|
|
398
|
+
html = html.replace(/(<\/ul>)<\/p>/gim, '$1');
|
|
399
|
+
html = html.replace(/<p>(<blockquote>)/gim, '$1');
|
|
400
|
+
html = html.replace(/(<\/blockquote>)<\/p>/gim, '$1');
|
|
401
|
+
html = html.replace(/<p>(<pre>)/gim, '$1');
|
|
402
|
+
html = html.replace(/(<\/pre>)<\/p>/gim, '$1');
|
|
403
|
+
html = html.replace(/<p>(<table>)/gim, '$1');
|
|
404
|
+
html = html.replace(/(<\/table>)<\/p>/gim, '$1');
|
|
405
|
+
html = html.replace(/<p>(<hr>)<\/p>/gim, '$1');
|
|
406
|
+
return html;
|
|
407
|
+
}
|
|
321
408
|
/**
|
|
322
409
|
* Compare two names
|
|
323
410
|
* @param a : name a
|
|
@@ -407,7 +494,7 @@ class SystemUtils {
|
|
|
407
494
|
*/
|
|
408
495
|
static parseUUID(value) {
|
|
409
496
|
const regex = /^({|()?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(}|))?$/;
|
|
410
|
-
return regex.test(value);
|
|
497
|
+
return value?.length > 0 && regex.test(value);
|
|
411
498
|
}
|
|
412
499
|
/**
|
|
413
500
|
* Parse and ensure that UUID is not empty
|
|
@@ -616,7 +703,9 @@ class SystemUtils {
|
|
|
616
703
|
* @returns : the url encoded string
|
|
617
704
|
*/
|
|
618
705
|
static urlEncode(value) {
|
|
619
|
-
return
|
|
706
|
+
return value?.length > 0
|
|
707
|
+
? encodeURIComponent(value)
|
|
708
|
+
: undefined;
|
|
620
709
|
}
|
|
621
710
|
/**
|
|
622
711
|
* Decode url
|
|
@@ -625,7 +714,9 @@ class SystemUtils {
|
|
|
625
714
|
*/
|
|
626
715
|
static urlDecode(value) {
|
|
627
716
|
const regex = /\+/g;
|
|
628
|
-
return
|
|
717
|
+
return value?.length > 0
|
|
718
|
+
? decodeURIComponent((value + "").replace(regex, "%20"))
|
|
719
|
+
: undefined;
|
|
629
720
|
}
|
|
630
721
|
/**
|
|
631
722
|
* Get a querystring parameter value
|
|
@@ -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/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\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 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 * 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 {\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 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 {\r\n return encodeURIComponent(value);\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 {\r\n const regex = /\\+/g;\r\n return decodeURIComponent((value + \"\").replace(regex, \"%20\"));\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@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","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}","/*\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 './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/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\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 * Convert a markdown string to html\r\n * @param markdown : the markdown string\r\n * @returns \r\n */\r\n static markdownToHtml(markdown?: string): string | undefined {\r\n if (!markdown) return undefined;\r\n let html = markdown;\r\n // Headers\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 // Bold\r\n html = html.replace(/\\*\\*(.*)\\*\\*/gim, '<strong>$1</strong>');\r\n html = html.replace(/__(.*?)__/gim, '<strong>$1</strong>');\r\n // Italic\r\n html = html.replace(/\\*(.*?)\\*/gim, '<em>$1</em>');\r\n html = html.replace(/_(.*?)_/gim, '<em>$1</em>');\r\n // Code blocks\r\n html = html.replace(/```([\\s\\S]*?)```/gim, '<pre><code>$1</code></pre>');\r\n // Inline code\r\n html = html.replace(/`(.*?)`/gim, '<code>$1</code>');\r\n // Links\r\n html = html.replace(/\\[([^\\]]*)\\]\\(([^)]*)\\)/gim, '<a href=\"$2\">$1</a>');\r\n // Images\r\n html = html.replace(/!\\[([^\\]]*)\\]\\(([^)]*)\\)/gim, '<img alt=\"$1\" src=\"$2\" />');\r\n // Blockquotes\r\n html = html.replace(/^\\> (.*$)/gim, '<blockquote>$1</blockquote>');\r\n // Unordered lists\r\n html = html.replace(/^\\* (.*$)/gim, '<li>$1</li>');\r\n html = html.replace(/^- (.*$)/gim, '<li>$1</li>');\r\n // Ordered lists\r\n html = html.replace(/^\\d+\\. (.*$)/gim, '<li>$1</li>');\r\n // Wrap list items in ul/ol tags\r\n html = html.replace(/(<li>.*<\\/li>)/gims, function (match) {\r\n return '<ul>' + match + '</ul>';\r\n });\r\n // Tables\r\n html = html.replace(/\\|(.+)\\|/g, function (_match, content) {\r\n const cells = content.split('|').map((cell: any) => cell.trim());\r\n return '<tr>' + cells.map((cell: any) => {\r\n // Check if this is a header separator row\r\n if (cell.match(/^[\\s\\-\\:]+$/)) {\r\n return null;\r\n }\r\n return '<td>' + cell + '</td>';\r\n }).filter((cell: any) => cell !== null).join('') + '</tr>';\r\n });\r\n // Convert table rows to proper table structure\r\n html = html.replace(/(<tr>.*?<\\/tr>)\\s*\\n*(<tr>.*?<\\/tr>)/gs, function (match, firstRow, rest) {\r\n // Check if the second row is a separator (contains only dashes, colons, spaces)\r\n const secondRowContent = rest.replace(/<\\/?t[rd]>/g, '');\r\n if (secondRowContent.match(/^[\\s\\-\\:\\|]+$/)) {\r\n // This is a header separator, make first row a header\r\n const headerRow = firstRow.replace(/<td>/g, '<th>').replace(/<\\/td>/g, '</th>');\r\n return headerRow;\r\n }\r\n return match;\r\n });\r\n // Wrap table rows in table tags\r\n html = html.replace(/(<tr>.*?<\\/tr>(?:\\s*<tr>.*?<\\/tr>)*)/gs, '<table>$1</table>');\r\n // Horizontal rules\r\n html = html.replace(/^\\-\\-\\-$/gim, '<hr>');\r\n html = html.replace(/^\\*\\*\\*$/gim, '<hr>');\r\n // Line breaks\r\n html = html.replace(/\\n\\n/gim, '</p><p>');\r\n html = html.replace(/\\n/gim, '<br>');\r\n // Wrap in paragraphs\r\n html = '<p>' + html + '</p>';\r\n // Clean up empty paragraphs\r\n html = html.replace(/<p><\\/p>/gim, '');\r\n html = html.replace(/<p>(<h[1-6]>)/gim, '$1');\r\n html = html.replace(/(<\\/h[1-6]>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<ul>)/gim, '$1');\r\n html = html.replace(/(<\\/ul>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<blockquote>)/gim, '$1');\r\n html = html.replace(/(<\\/blockquote>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<pre>)/gim, '$1');\r\n html = html.replace(/(<\\/pre>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<table>)/gim, '$1');\r\n html = html.replace(/(<\\/table>)<\\/p>/gim, '$1');\r\n html = html.replace(/<p>(<hr>)<\\/p>/gim, '$1');\r\n return html;\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@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","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}","/*\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 './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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"}
|
|
@@ -214,7 +214,7 @@ class FullScreenEditorComponent {
|
|
|
214
214
|
}, 500);
|
|
215
215
|
}
|
|
216
216
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FullScreenEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
217
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.5", type: FullScreenEditorComponent, isStandalone: true, selector: "ng-component", outputs: { saving: "saving" }, ngImport: i0, template: "<mat-dialog-content style=\"padding: 10px 10px 0 10px\">\r\n <editor style=\"height: 100%;\" [init]=\"tinymceConfig\" class=\"full-screen-editor\"\r\n [disabled]=\"disabled()\" [(ngModel)]=\"text\" licenseKey=\"gpl\">\r\n </editor>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if(dialogData.onShowInfo) {\r\n <button mat-stroked-button (click)=\"dialogData.onShowInfo()\">{{dialogData.infoButtonLabel ?? 'Informazioni'}} </button>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\">Salva</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".mat-mdc-dialog-content{height:calc(100% - 52px)!important;max-height:calc(100% - 52px)!important}::ng-deep .full-screen-editor>.tox-tinymce{height:100%!important}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
217
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.5", type: FullScreenEditorComponent, isStandalone: true, selector: "ng-component", outputs: { saving: "saving" }, ngImport: i0, template: "<mat-dialog-content style=\"padding: 10px 10px 0 10px\">\r\n <editor style=\"height: 100%;\" [init]=\"tinymceConfig\" class=\"full-screen-editor\"\r\n [disabled]=\"disabled()\" [(ngModel)]=\"text\" licenseKey=\"gpl\">\r\n </editor>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if(dialogData.onShowInfo) {\r\n <button mat-stroked-button (click)=\"dialogData.onShowInfo()\">{{dialogData.infoButtonLabel ?? 'Informazioni'}} </button>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\">Salva</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>", styles: [".mat-mdc-dialog-content{height:calc(100% - 52px)!important;max-height:calc(100% - 52px)!important}::ng-deep .full-screen-editor>.tox-tinymce{height:100%!important}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "licenseKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "readonly", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
218
218
|
}
|
|
219
219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: FullScreenEditorComponent, decorators: [{
|
|
220
220
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arsedizioni-ars-utils-tinymce.mjs","sources":["../../../projects/ars-utils/tinymce/tinymce.module.ts","../../../projects/ars-utils/tinymce/utils.ts","../../../projects/ars-utils/tinymce/full-screen-editor/full-screen-editor.component.ts","../../../projects/ars-utils/tinymce/full-screen-editor/full-screen-editor.component.html","../../../projects/ars-utils/tinymce/public_api.ts","../../../projects/ars-utils/tinymce/arsedizioni-ars-utils-tinymce.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n})\r\nexport class ArsTinyMceModule { }\r\n","export class TinymceUtils {\r\n static readonly CDN_URL = 'https://cdn.tiny.cloud/1/5lnoc6ohmpjau6zyzgqyhyf52cueoennkcs8v1yfoak57ku9/tinymce/7/tinymce.min.js';\r\n static readonly LOCAL_URL = '/assets/tinymce/tinymce.min.js';\r\n\r\n /**\r\n * Configurazione di base per TinyMCE editor\r\n */\r\n static TinymceConfig: Record<string, any> = {\r\n base_url: 'assets/tinymce',\r\n suffix: '.min',\r\n license_key: 'gpl', // per evitare il warning riportarla direttamente nell'html: <editor licenseKey=\"gpl\" ...></editor>\r\n language: 'it',\r\n language_url: \"assets/tinymce/langs/it.js\",\r\n height: 500,\r\n width: '100%',\r\n min_height: 250,\r\n onboarding: false,\r\n branding: false,\r\n convert_urls: false,\r\n quickbars_insert_toolbar: false,\r\n quickbars_selection_toolbar: 'removeformat | bold italic | superscript subscript | quicklink h2 h3 blockquote',\r\n fullpage_default_doctype: '<!DOCTYPE html>',\r\n fullpage_default_encoding: 'UTF-8',\r\n fullpage_default_font_family: '\\'Helvetica Neue\\', sans-serif', // '\\'Times New Roman\\', Georgia, Serif',\r\n fullpage_default_xml_pi: false,\r\n fullpage_hide_in_source_view: false,\r\n browser_spellcheck: true,\r\n spellchecker_language: 'it_IT',\r\n save_enablewhendirty: true,\r\n custom_undo_redo_levels: 50,\r\n nonbreaking_force_tab: true, // inserisce 3 per ogni pressione di TAB\r\n nonbreaking_wrap: false,\r\n help_tabs: ['shortcuts', 'keyboardnav', 'versions'],\r\n plugins: 'advlist anchor autolink autosave charmap code fullscreen help hr image insertdatetime link lists media table nonbreaking paste preview print quickbars searchreplace textpattern visualblocks visualchars',\r\n menubar: false,\r\n skin: window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"oxide-dark\" : \"oxide\",\r\n content_css: window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"default\",\r\n toolbar: [\r\n 'fullscreen | undo redo searchreplace | code openCodeMirrorButton preview fullpage | link image media insertMediaButton charmap nonbreaking | table tableprops tabledelete',\r\n 'bold italic superscript subscript forecolor backcolor | alignleft aligncenter alignright alignjustify | removeformat | bullist numlist checklist'\r\n ],\r\n style_formats: [\r\n {\r\n title: 'Immagini float', items: [\r\n {\r\n title: 'Immagine a SX',\r\n selector: 'img',\r\n styles: { float: 'left', margin: '0 10px 0 10px' }\r\n },\r\n {\r\n title: 'Immagine a DX',\r\n selector: 'img',\r\n styles: { float: 'right', margin: '0 10px 0 10px' }\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Formati', items: [\r\n { title: 'Grassetto', format: 'bold' },\r\n { title: 'Corsivo', format: 'italic' },\r\n { title: 'Sottolineato', format: 'underline' },\r\n { title: 'Barrato', format: 'strikethrough' },\r\n { title: 'Superscript', format: 'superscript' },\r\n { title: 'Subscript', format: 'subscript' },\r\n { title: 'Codice', format: 'code' }\r\n ]\r\n }],\r\n formats: {\r\n underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true },\r\n strikethrough: { inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }\r\n },\r\n insertdatetime_formats: ['%d/%m/%Y', '%d %b %Y', '%A, %d %B %Y'],\r\n link_default_target: '_blank',\r\n link_title: true,\r\n link_assume_external_targets: 'https',\r\n link_class_list: [\r\n { title: 'Nessuno', value: '' },\r\n { title: 'Rilevante', value: 'relevant' },\r\n ],\r\n link_context_toolbar: true,\r\n link_list: [\r\n { title: 'Ars Edizioni', value: 'https://www.arsedizioni.it' },\r\n { title: 'Ars Edizioni - Corsi', value: 'https://www.arsedizioni.it/Events' },\r\n { title: 'Clipper', value: 'https://clipper.arsedizioni.it' },\r\n { title: 'Registro', value: 'https://registro.arsedizioni.it' },\r\n { title: 'Ars EVO', value: 'https://evolution.arsedizioni.it' },\r\n { title: 'DG Info', value: 'https://dginfo.arsedizioni.it' },\r\n { title: 'Lavoro e Ambiente', value: 'https://lavoroeambiente.arsedizioni.it' },\r\n { title: 'Sostanze Alimentari', value: 'https://sostanzealimentari.arsedizioni.it' },\r\n { title: 'OrangeNews', value: 'https://orangenews.arsedizioni.it' },\r\n { title: 'MyARS', value: 'https://my.arsedizioni.it' },\r\n { title: 'Canale Youtube Ars', value: 'https://www.youtube.com/user/ARSEDZ' },\r\n // { title: 'My page 2', value: 'https://about.tiny.cloud' }\r\n ],\r\n link_quicklink: true,\r\n rel_list: false,\r\n image_advtab: true,\r\n paste_data_images: true,\r\n image_caption: true,\r\n image_title: true,\r\n automatic_uploads: true,\r\n images_reuse_filename: true,\r\n images_upload_credentials: true,\r\n file_picker_types: 'file image',\r\n };\r\n\r\n static TinymceCompactConfig: Record<string, any> = Object.assign({}, this.TinymceConfig, {\r\n height: 200,\r\n width: '100%',\r\n suffix: '.min',\r\n license_key: 'gpl',\r\n min_height: 200,\r\n max_height: 500,\r\n quickbars_insert_toolbar: 'quickimage hr',\r\n quickbars_selection_toolbar: 'removeformat | bold italic | superscript subscript | quicklink h2 h3 blockquote',\r\n plugins: 'advlist anchor autolink autosave autoresize charmap code image insertdatetime link lists media table nonbreaking preview quickbars searchreplace visualblocks visualchars',\r\n statusbar: false,\r\n menubar: false,\r\n contextmenu: false,\r\n toolbar_location: 'bottom',\r\n toolbar: ['undo redo | quickimage | formatgroup paragraphgroup '],\r\n toolbar_groups: {\r\n formatgroup: {\r\n icon: 'format',\r\n tooltip: 'Formatting',\r\n items: 'bold italic underline superscript subscript | forecolor backcolor | removeformat'\r\n },\r\n paragraphgroup: {\r\n icon: 'paragraph',\r\n tooltip: 'Paragraph format',\r\n items: 'h1 h2 h3 | bullist numlist | alignleft aligncenter alignright alignjustify | indent outdent'\r\n },\r\n insertgroup: {\r\n icon: 'plus',\r\n tooltip: 'Insert',\r\n items: 'quickimage media | link charmap nonbreaking | table tableprops tabledelete'\r\n }\r\n },\r\n formats: {\r\n underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true },\r\n strikethrough: { inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }\r\n },\r\n link_default_target: '_blank',\r\n link_title: true,\r\n link_assume_external_targets: 'https',\r\n link_class_list: [],\r\n });\r\n\r\n static TinymceCompactExtendedConfig: Record<string, any> = Object.assign({}, this.TinymceCompactConfig, {\r\n license_key: 'gpl',\r\n plugins: 'advlist anchor autolink autosave autoresize charmap code image insertdatetime fullscreen link lists media table nonbreaking preview quickbars searchreplace visualblocks visualchars',\r\n toolbar: ['undo redo | quickimage insertgroup | formatgroup paragraphgroup | fullscreen '],\r\n });\r\n\r\n\r\n /**\r\n * Load tiny MCE script \r\n */\r\n static loadTinyMCEScript(useCDN?: boolean): void {\r\n const url = useCDN === true ? this.CDN_URL : this.LOCAL_URL;\r\n if (!document.querySelector(`script[src=\"${url}\"]`)) {\r\n const script = document.createElement('script');\r\n script.src = url;\r\n script.referrerPolicy = 'origin';\r\n document.head.appendChild(script);\r\n }\r\n }\r\n}","import { ChangeDetectionStrategy, Component, OnInit, inject, signal, output } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { TinymceUtils } from '../utils';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EditorComponent } from '@tinymce/tinymce-angular';\r\n\r\nexport interface FullScreenEditorDialogData {\r\n text: string;\r\n configuration: Record<string, any>;\r\n infoButtonLabel?: string;\r\n onShowInfo?: Function,\r\n disabled?: boolean;\r\n useCDN?: boolean;\r\n}\r\n\r\n@Component({\r\n templateUrl: './full-screen-editor.component.html',\r\n styleUrls: ['./full-screen-editor.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogContent, EditorComponent, FormsModule, MatDialogActions, FlexModule, \r\n MatButtonModule, MatDialogClose]\r\n})\r\nexport class FullScreenEditorComponent implements OnInit {\r\n\r\n readonly saving = output<string>();\r\n private dialogRef = inject(MatDialogRef<FullScreenEditorComponent>);\r\n protected dialogData: FullScreenEditorDialogData = inject(MAT_DIALOG_DATA);\r\n protected disabled = signal<boolean>(false);\r\n protected text?: string;\r\n protected tinymceConfig: Record<string, any> = SystemUtils.clone(TinymceUtils.TinymceCompactExtendedConfig);\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.text = this.dialogData.text;\r\n if (this.dialogData.configuration) {\r\n this.tinymceConfig = this.dialogData.configuration\r\n this.tinymceConfig.license_key = 'gpl';\r\n }\r\n this.disabled.set(this.dialogData.disabled);\r\n }\r\n this.tinymceConfig[\"toolbar\"] = ['undo redo | formatgroup paragraphgroup insertgroup | code openCodeMirrorButton'];\r\n\r\n }\r\n\r\n\r\n /**\r\n * Save data\r\n */\r\n protected ok() {\r\n this.saving.emit(this.text);\r\n setTimeout(() => {\r\n this.dialogRef.close();\r\n }, 500);\r\n }\r\n}\r\n","<mat-dialog-content style=\"padding: 10px 10px 0 10px\">\r\n <editor style=\"height: 100%;\" [init]=\"tinymceConfig\" class=\"full-screen-editor\"\r\n [disabled]=\"disabled()\" [(ngModel)]=\"text\" licenseKey=\"gpl\">\r\n </editor>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if(dialogData.onShowInfo) {\r\n <button mat-stroked-button (click)=\"dialogData.onShowInfo()\">{{dialogData.infoButtonLabel ?? 'Informazioni'}} </button>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\">Salva</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","/*\r\n * Public API Surface of ars-utils-tinymse\r\n */\r\nexport * from './tinymce.module';\r\nexport * from './full-screen-editor/full-screen-editor.component';\r\nexport * from './utils';\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-tinymce.mjs","sources":["../../../projects/ars-utils/tinymce/tinymce.module.ts","../../../projects/ars-utils/tinymce/utils.ts","../../../projects/ars-utils/tinymce/full-screen-editor/full-screen-editor.component.ts","../../../projects/ars-utils/tinymce/full-screen-editor/full-screen-editor.component.html","../../../projects/ars-utils/tinymce/public_api.ts","../../../projects/ars-utils/tinymce/arsedizioni-ars-utils-tinymce.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n})\r\nexport class ArsTinyMceModule { }\r\n","export class TinymceUtils {\r\n static readonly CDN_URL = 'https://cdn.tiny.cloud/1/5lnoc6ohmpjau6zyzgqyhyf52cueoennkcs8v1yfoak57ku9/tinymce/7/tinymce.min.js';\r\n static readonly LOCAL_URL = '/assets/tinymce/tinymce.min.js';\r\n\r\n /**\r\n * Configurazione di base per TinyMCE editor\r\n */\r\n static TinymceConfig: Record<string, any> = {\r\n base_url: 'assets/tinymce',\r\n suffix: '.min',\r\n license_key: 'gpl', // per evitare il warning riportarla direttamente nell'html: <editor licenseKey=\"gpl\" ...></editor>\r\n language: 'it',\r\n language_url: \"assets/tinymce/langs/it.js\",\r\n height: 500,\r\n width: '100%',\r\n min_height: 250,\r\n onboarding: false,\r\n branding: false,\r\n convert_urls: false,\r\n quickbars_insert_toolbar: false,\r\n quickbars_selection_toolbar: 'removeformat | bold italic | superscript subscript | quicklink h2 h3 blockquote',\r\n fullpage_default_doctype: '<!DOCTYPE html>',\r\n fullpage_default_encoding: 'UTF-8',\r\n fullpage_default_font_family: '\\'Helvetica Neue\\', sans-serif', // '\\'Times New Roman\\', Georgia, Serif',\r\n fullpage_default_xml_pi: false,\r\n fullpage_hide_in_source_view: false,\r\n browser_spellcheck: true,\r\n spellchecker_language: 'it_IT',\r\n save_enablewhendirty: true,\r\n custom_undo_redo_levels: 50,\r\n nonbreaking_force_tab: true, // inserisce 3 per ogni pressione di TAB\r\n nonbreaking_wrap: false,\r\n help_tabs: ['shortcuts', 'keyboardnav', 'versions'],\r\n plugins: 'advlist anchor autolink autosave charmap code fullscreen help hr image insertdatetime link lists media table nonbreaking paste preview print quickbars searchreplace textpattern visualblocks visualchars',\r\n menubar: false,\r\n skin: window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"oxide-dark\" : \"oxide\",\r\n content_css: window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"default\",\r\n toolbar: [\r\n 'fullscreen | undo redo searchreplace | code openCodeMirrorButton preview fullpage | link image media insertMediaButton charmap nonbreaking | table tableprops tabledelete',\r\n 'bold italic superscript subscript forecolor backcolor | alignleft aligncenter alignright alignjustify | removeformat | bullist numlist checklist'\r\n ],\r\n style_formats: [\r\n {\r\n title: 'Immagini float', items: [\r\n {\r\n title: 'Immagine a SX',\r\n selector: 'img',\r\n styles: { float: 'left', margin: '0 10px 0 10px' }\r\n },\r\n {\r\n title: 'Immagine a DX',\r\n selector: 'img',\r\n styles: { float: 'right', margin: '0 10px 0 10px' }\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Formati', items: [\r\n { title: 'Grassetto', format: 'bold' },\r\n { title: 'Corsivo', format: 'italic' },\r\n { title: 'Sottolineato', format: 'underline' },\r\n { title: 'Barrato', format: 'strikethrough' },\r\n { title: 'Superscript', format: 'superscript' },\r\n { title: 'Subscript', format: 'subscript' },\r\n { title: 'Codice', format: 'code' }\r\n ]\r\n }],\r\n formats: {\r\n underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true },\r\n strikethrough: { inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }\r\n },\r\n insertdatetime_formats: ['%d/%m/%Y', '%d %b %Y', '%A, %d %B %Y'],\r\n link_default_target: '_blank',\r\n link_title: true,\r\n link_assume_external_targets: 'https',\r\n link_class_list: [\r\n { title: 'Nessuno', value: '' },\r\n { title: 'Rilevante', value: 'relevant' },\r\n ],\r\n link_context_toolbar: true,\r\n link_list: [\r\n { title: 'Ars Edizioni', value: 'https://www.arsedizioni.it' },\r\n { title: 'Ars Edizioni - Corsi', value: 'https://www.arsedizioni.it/Events' },\r\n { title: 'Clipper', value: 'https://clipper.arsedizioni.it' },\r\n { title: 'Registro', value: 'https://registro.arsedizioni.it' },\r\n { title: 'Ars EVO', value: 'https://evolution.arsedizioni.it' },\r\n { title: 'DG Info', value: 'https://dginfo.arsedizioni.it' },\r\n { title: 'Lavoro e Ambiente', value: 'https://lavoroeambiente.arsedizioni.it' },\r\n { title: 'Sostanze Alimentari', value: 'https://sostanzealimentari.arsedizioni.it' },\r\n { title: 'OrangeNews', value: 'https://orangenews.arsedizioni.it' },\r\n { title: 'MyARS', value: 'https://my.arsedizioni.it' },\r\n { title: 'Canale Youtube Ars', value: 'https://www.youtube.com/user/ARSEDZ' },\r\n // { title: 'My page 2', value: 'https://about.tiny.cloud' }\r\n ],\r\n link_quicklink: true,\r\n rel_list: false,\r\n image_advtab: true,\r\n paste_data_images: true,\r\n image_caption: true,\r\n image_title: true,\r\n automatic_uploads: true,\r\n images_reuse_filename: true,\r\n images_upload_credentials: true,\r\n file_picker_types: 'file image',\r\n };\r\n\r\n static TinymceCompactConfig: Record<string, any> = Object.assign({}, this.TinymceConfig, {\r\n height: 200,\r\n width: '100%',\r\n suffix: '.min',\r\n license_key: 'gpl',\r\n min_height: 200,\r\n max_height: 500,\r\n quickbars_insert_toolbar: 'quickimage hr',\r\n quickbars_selection_toolbar: 'removeformat | bold italic | superscript subscript | quicklink h2 h3 blockquote',\r\n plugins: 'advlist anchor autolink autosave autoresize charmap code image insertdatetime link lists media table nonbreaking preview quickbars searchreplace visualblocks visualchars',\r\n statusbar: false,\r\n menubar: false,\r\n contextmenu: false,\r\n toolbar_location: 'bottom',\r\n toolbar: ['undo redo | quickimage | formatgroup paragraphgroup '],\r\n toolbar_groups: {\r\n formatgroup: {\r\n icon: 'format',\r\n tooltip: 'Formatting',\r\n items: 'bold italic underline superscript subscript | forecolor backcolor | removeformat'\r\n },\r\n paragraphgroup: {\r\n icon: 'paragraph',\r\n tooltip: 'Paragraph format',\r\n items: 'h1 h2 h3 | bullist numlist | alignleft aligncenter alignright alignjustify | indent outdent'\r\n },\r\n insertgroup: {\r\n icon: 'plus',\r\n tooltip: 'Insert',\r\n items: 'quickimage media | link charmap nonbreaking | table tableprops tabledelete'\r\n }\r\n },\r\n formats: {\r\n underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true },\r\n strikethrough: { inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }\r\n },\r\n link_default_target: '_blank',\r\n link_title: true,\r\n link_assume_external_targets: 'https',\r\n link_class_list: [],\r\n });\r\n\r\n static TinymceCompactExtendedConfig: Record<string, any> = Object.assign({}, this.TinymceCompactConfig, {\r\n license_key: 'gpl',\r\n plugins: 'advlist anchor autolink autosave autoresize charmap code image insertdatetime fullscreen link lists media table nonbreaking preview quickbars searchreplace visualblocks visualchars',\r\n toolbar: ['undo redo | quickimage insertgroup | formatgroup paragraphgroup | fullscreen '],\r\n });\r\n\r\n\r\n /**\r\n * Load tiny MCE script \r\n */\r\n static loadTinyMCEScript(useCDN?: boolean): void {\r\n const url = useCDN === true ? this.CDN_URL : this.LOCAL_URL;\r\n if (!document.querySelector(`script[src=\"${url}\"]`)) {\r\n const script = document.createElement('script');\r\n script.src = url;\r\n script.referrerPolicy = 'origin';\r\n document.head.appendChild(script);\r\n }\r\n }\r\n}","import { ChangeDetectionStrategy, Component, OnInit, inject, signal, output } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\r\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { TinymceUtils } from '../utils';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EditorComponent } from '@tinymce/tinymce-angular';\r\n\r\nexport interface FullScreenEditorDialogData {\r\n text: string;\r\n configuration: Record<string, any>;\r\n infoButtonLabel?: string;\r\n onShowInfo?: Function,\r\n disabled?: boolean;\r\n useCDN?: boolean;\r\n}\r\n\r\n@Component({\r\n templateUrl: './full-screen-editor.component.html',\r\n styleUrls: ['./full-screen-editor.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDialogContent, EditorComponent, FormsModule, MatDialogActions, FlexModule, \r\n MatButtonModule, MatDialogClose]\r\n})\r\nexport class FullScreenEditorComponent implements OnInit {\r\n\r\n readonly saving = output<string>();\r\n private dialogRef = inject(MatDialogRef<FullScreenEditorComponent>);\r\n protected dialogData: FullScreenEditorDialogData = inject(MAT_DIALOG_DATA);\r\n protected disabled = signal<boolean>(false);\r\n protected text?: string;\r\n protected tinymceConfig: Record<string, any> = SystemUtils.clone(TinymceUtils.TinymceCompactExtendedConfig);\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.text = this.dialogData.text;\r\n if (this.dialogData.configuration) {\r\n this.tinymceConfig = this.dialogData.configuration\r\n this.tinymceConfig.license_key = 'gpl';\r\n }\r\n this.disabled.set(this.dialogData.disabled);\r\n }\r\n this.tinymceConfig[\"toolbar\"] = ['undo redo | formatgroup paragraphgroup insertgroup | code openCodeMirrorButton'];\r\n\r\n }\r\n\r\n\r\n /**\r\n * Save data\r\n */\r\n protected ok() {\r\n this.saving.emit(this.text);\r\n setTimeout(() => {\r\n this.dialogRef.close();\r\n }, 500);\r\n }\r\n}\r\n","<mat-dialog-content style=\"padding: 10px 10px 0 10px\">\r\n <editor style=\"height: 100%;\" [init]=\"tinymceConfig\" class=\"full-screen-editor\"\r\n [disabled]=\"disabled()\" [(ngModel)]=\"text\" licenseKey=\"gpl\">\r\n </editor>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"50\">\r\n @if(dialogData.onShowInfo) {\r\n <button mat-stroked-button (click)=\"dialogData.onShowInfo()\">{{dialogData.infoButtonLabel ?? 'Informazioni'}} </button>\r\n }\r\n </div>\r\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\">Salva</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","/*\r\n * Public API Surface of ars-utils-tinymse\r\n */\r\nexport * from './tinymce.module';\r\nexport * from './full-screen-editor/full-screen-editor.component';\r\nexport * from './utils';\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.0.
|
|
3
|
+
"version": "20.0.35",
|
|
4
4
|
"author": {
|
|
5
5
|
"email": "software@arsedizioni.it",
|
|
6
6
|
"name": "Fabio Buscaroli, Alberto Doria"
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"types": "./core/index.d.ts",
|
|
45
45
|
"default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
|
|
46
46
|
},
|
|
47
|
-
"./evolution.common": {
|
|
48
|
-
"types": "./evolution.common/index.d.ts",
|
|
49
|
-
"default": "./fesm2022/arsedizioni-ars-utils-evolution.common.mjs"
|
|
50
|
-
},
|
|
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"
|