@acorex/core 20.8.16 → 20.8.20
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/fesm2022/acorex-core-file.mjs +41 -3
- package/fesm2022/acorex-core-file.mjs.map +1 -1
- package/file/index.d.ts +19 -3
- package/package.json +12 -12
|
@@ -57,6 +57,38 @@ function formatFileSizeBytes(bytes) {
|
|
|
57
57
|
return `${value.toFixed(digits)} ${units[i]}`;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/** Metadata key for catalog usage context. */
|
|
61
|
+
const AX_FILE_TYPE_METADATA_PURPOSE = 'purpose';
|
|
62
|
+
|
|
63
|
+
const CONVERSATION_NAME_PREFIX = 'conversation-';
|
|
64
|
+
function getFileTypePurposes(type) {
|
|
65
|
+
const raw = type.metadata?.[AX_FILE_TYPE_METADATA_PURPOSE];
|
|
66
|
+
if (Array.isArray(raw)) {
|
|
67
|
+
const values = raw.filter((entry) => typeof entry === 'string' && entry.trim().length > 0);
|
|
68
|
+
if (values.length) {
|
|
69
|
+
return values;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (type.name.startsWith(CONVERSATION_NAME_PREFIX)) {
|
|
73
|
+
return ['conversation'];
|
|
74
|
+
}
|
|
75
|
+
return ['system'];
|
|
76
|
+
}
|
|
77
|
+
function fileTypeMatchesPurpose(type, purpose) {
|
|
78
|
+
const allowed = Array.isArray(purpose) ? purpose : [purpose];
|
|
79
|
+
return getFileTypePurposes(type).some((entry) => allowed.includes(entry));
|
|
80
|
+
}
|
|
81
|
+
function filterFileTypesByPurpose(types, purpose) {
|
|
82
|
+
if (!purpose) {
|
|
83
|
+
return types;
|
|
84
|
+
}
|
|
85
|
+
return types.filter((type) => fileTypeMatchesPurpose(type, purpose));
|
|
86
|
+
}
|
|
87
|
+
function createFileTypeMetadata(purpose) {
|
|
88
|
+
const values = (Array.isArray(purpose) ? purpose : [purpose]).filter((entry) => typeof entry === 'string' && entry.trim().length > 0);
|
|
89
|
+
return { [AX_FILE_TYPE_METADATA_PURPOSE]: values };
|
|
90
|
+
}
|
|
91
|
+
|
|
60
92
|
/** Resolves clipboard/plain text from a copy result. */
|
|
61
93
|
function resolveFileCopyText(result) {
|
|
62
94
|
if (result == null) {
|
|
@@ -229,8 +261,9 @@ class AXFileTypeRegistryService {
|
|
|
229
261
|
this.cache = [...byName.values()];
|
|
230
262
|
return this.cache;
|
|
231
263
|
}
|
|
232
|
-
async getTypes() {
|
|
233
|
-
|
|
264
|
+
async getTypes(query) {
|
|
265
|
+
const types = await this.resolveTypes();
|
|
266
|
+
return filterFileTypesByPurpose(types, query?.purpose);
|
|
234
267
|
}
|
|
235
268
|
async get(name) {
|
|
236
269
|
const types = await this.resolveTypes();
|
|
@@ -329,6 +362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
329
362
|
const MB$4 = 1024 * 1024;
|
|
330
363
|
const AX_AUDIO_FILE_TYPE = {
|
|
331
364
|
name: 'audio',
|
|
365
|
+
metadata: createFileTypeMetadata('system'),
|
|
332
366
|
title: 'Audio',
|
|
333
367
|
icon: 'fa-light fa-music ax-text-amber-500',
|
|
334
368
|
validations: {
|
|
@@ -358,6 +392,7 @@ const MB$3 = 1024 * 1024;
|
|
|
358
392
|
/** Extension-only: no type `validations` — only listed extensions are allowed. */
|
|
359
393
|
const AX_DOCUMENT_FILE_TYPE = {
|
|
360
394
|
name: 'document',
|
|
395
|
+
metadata: createFileTypeMetadata('system'),
|
|
361
396
|
title: 'Document',
|
|
362
397
|
icon: 'fa-light fa-file-lines ax-text-red-500',
|
|
363
398
|
extensions: [{ name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 5 * MB$3 } }],
|
|
@@ -376,6 +411,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
376
411
|
const MB$2 = 1024 * 1024;
|
|
377
412
|
const AX_FILE_FILE_TYPE = {
|
|
378
413
|
name: 'file',
|
|
414
|
+
metadata: createFileTypeMetadata('system'),
|
|
379
415
|
title: 'File',
|
|
380
416
|
icon: 'fa-light fa-file ax-text-neutral-500',
|
|
381
417
|
validations: {
|
|
@@ -405,6 +441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
405
441
|
const MB$1 = 1024 * 1024;
|
|
406
442
|
const AX_IMAGE_FILE_TYPE = {
|
|
407
443
|
name: 'image',
|
|
444
|
+
metadata: createFileTypeMetadata('system'),
|
|
408
445
|
title: 'Image',
|
|
409
446
|
icon: 'fa-light fa-image ax-text-purple-500',
|
|
410
447
|
validations: {
|
|
@@ -435,6 +472,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
435
472
|
const MB = 1024 * 1024;
|
|
436
473
|
const AX_VIDEO_FILE_TYPE = {
|
|
437
474
|
name: 'video',
|
|
475
|
+
metadata: createFileTypeMetadata('system'),
|
|
438
476
|
title: 'Video',
|
|
439
477
|
icon: 'fa-light fa-video ax-text-blue-500',
|
|
440
478
|
validations: {
|
|
@@ -736,5 +774,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
736
774
|
* Generated bundle index. Do not edit.
|
|
737
775
|
*/
|
|
738
776
|
|
|
739
|
-
export { AXAudioFileTypeProvider, AXDocumentFileTypeProvider, AXFileFileTypeProvider, AXFileMaxSizeValidationRule, AXFileMimeTypeValidationRule, AXFileMinSizeValidationRule, AXFileModule, AXFileService, AXFileSizeFormatter, AXFileTypeInfoProvider, AXFileTypeRegistryService, AXImageFileTypeProvider, AXVideoFileTypeProvider, AX_AUDIO_FILE_TYPE, AX_BUILTIN_FILE_TYPE_PROVIDERS, AX_DOCUMENT_FILE_TYPE, AX_FILE_FILE_TYPE, AX_FILE_TYPE_INFO_PROVIDER, AX_FILE_VALIDATION_RULES, AX_IMAGE_FILE_TYPE, AX_VIDEO_FILE_TYPE, fileValidationsToRules, findFileTypeExtension, formatFileSizeBytes, getFileExtension, isEmptyFileValidations, isExtensionsOnlyType, mergeFileValidations, provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders, provideFileTypeInfoProvider, provideFileTypeSystem, provideFileValidationRules, resolveFileCopyText, resolveFileValidations, validateFileAgainstType, validateFileWithValidations };
|
|
777
|
+
export { AXAudioFileTypeProvider, AXDocumentFileTypeProvider, AXFileFileTypeProvider, AXFileMaxSizeValidationRule, AXFileMimeTypeValidationRule, AXFileMinSizeValidationRule, AXFileModule, AXFileService, AXFileSizeFormatter, AXFileTypeInfoProvider, AXFileTypeRegistryService, AXImageFileTypeProvider, AXVideoFileTypeProvider, AX_AUDIO_FILE_TYPE, AX_BUILTIN_FILE_TYPE_PROVIDERS, AX_DOCUMENT_FILE_TYPE, AX_FILE_FILE_TYPE, AX_FILE_TYPE_INFO_PROVIDER, AX_FILE_TYPE_METADATA_PURPOSE, AX_FILE_VALIDATION_RULES, AX_IMAGE_FILE_TYPE, AX_VIDEO_FILE_TYPE, createFileTypeMetadata, fileTypeMatchesPurpose, fileValidationsToRules, filterFileTypesByPurpose, findFileTypeExtension, formatFileSizeBytes, getFileExtension, getFileTypePurposes, isEmptyFileValidations, isExtensionsOnlyType, mergeFileValidations, provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders, provideFileTypeInfoProvider, provideFileTypeSystem, provideFileValidationRules, resolveFileCopyText, resolveFileValidations, validateFileAgainstType, validateFileWithValidations };
|
|
740
778
|
//# sourceMappingURL=acorex-core-file.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-core-file.mjs","sources":["../tmp-esm2022/file/lib/file-size-formatter.js","../tmp-esm2022/file/lib/format-file-size.js","../tmp-esm2022/file/lib/file-type/file-type.copy.js","../tmp-esm2022/file/lib/file-type/file-type-info-provider.js","../tmp-esm2022/file/lib/file-type/file-type.merge.js","../tmp-esm2022/file/lib/file-type/file-type.validate.js","../tmp-esm2022/file/lib/file-type/file-type-registry.service.js","../tmp-esm2022/file/lib/file-type/types.providers/audio-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/document-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/file-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/image-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/video-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/index.js","../tmp-esm2022/file/lib/file-type/rules/file-mime-type.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-min-size.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-max-size.rule.js","../tmp-esm2022/file/lib/file-type/index.js","../tmp-esm2022/file/lib/file.module.js","../tmp-esm2022/file/lib/file.service.js","../tmp-esm2022/file/acorex-core-file.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileSizeFormatter {\n /**\n * Gets the name of the formatter.\n *\n * @returns string - The formatter name 'filesize'\n */\n get name() {\n return 'filesize';\n }\n /**\n * Formats a file size value to human-readable format.\n *\n * @param value - The file size in bytes\n * @returns string - The formatted file size string (e.g., '1.5 MB')\n */\n format(value) {\n const size = Number(value);\n if (size === 0)\n return '0 Bytes';\n if (Number.isNaN(size))\n return 'Unknown';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(size) / Math.log(k));\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtc2l6ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7OztPQUlHO0lBRUgsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFekMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsT0FBTyxVQUFVLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBN0JVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGZpbGVzaXplOiBBWEZpbGVTaXplRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlU2l6ZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdHRlci5cbiAgICpcbiAgICogQHJldHVybnMgc3RyaW5nIC0gVGhlIGZvcm1hdHRlciBuYW1lICdmaWxlc2l6ZSdcbiAgICovXG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2ZpbGVzaXplJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgZmlsZSBzaXplIHZhbHVlIHRvIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBUaGUgZm9ybWF0dGVkIGZpbGUgc2l6ZSBzdHJpbmcgKGUuZy4sICcxLjUgTUInKVxuICAgKi9cblxuICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuICcwIEJ5dGVzJztcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSByZXR1cm4gJ1Vua25vd24nO1xuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coc2l6ZSkgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCgoc2l6ZSAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpKSArICcgJyArIHNpemVzW2ldO1xuICB9XG59XG4iXX0=","/** Human-readable file size (binary units, e.g. `41.5 MB`). */\nexport function formatFileSizeBytes(bytes) {\n if (!Number.isFinite(bytes) || bytes < 0) {\n return '0 B';\n }\n if (bytes === 0) {\n return '0 B';\n }\n const k = 1024;\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), units.length - 1);\n const value = bytes / Math.pow(k, i);\n if (i === 0) {\n return `${bytes} B`;\n }\n const digits = value >= 100 ? 0 : value >= 10 ? 1 : 2;\n return `${value.toFixed(digits)} ${units[i]}`;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWZpbGUtc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2Zvcm1hdC1maWxlLXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDWixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIdW1hbi1yZWFkYWJsZSBmaWxlIHNpemUgKGJpbmFyeSB1bml0cywgZS5nLiBgNDEuNSBNQmApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbGVTaXplQnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGJ5dGVzKSB8fCBieXRlcyA8IDApIHtcbiAgICByZXR1cm4gJzAgQic7XG4gIH1cbiAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgcmV0dXJuICcwIEInO1xuICB9XG5cbiAgY29uc3QgayA9IDEwMjQ7XG4gIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XG4gIGNvbnN0IGkgPSBNYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKSwgdW5pdHMubGVuZ3RoIC0gMSk7XG4gIGNvbnN0IHZhbHVlID0gYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKTtcblxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBgJHtieXRlc30gQmA7XG4gIH1cblxuICBjb25zdCBkaWdpdHMgPSB2YWx1ZSA+PSAxMDAgPyAwIDogdmFsdWUgPj0gMTAgPyAxIDogMjtcbiAgcmV0dXJuIGAke3ZhbHVlLnRvRml4ZWQoZGlnaXRzKX0gJHt1bml0c1tpXX1gO1xufVxuIl19","/** Resolves clipboard/plain text from a copy result. */\nexport function resolveFileCopyText(result) {\n if (result == null) {\n return null;\n }\n if (typeof result === 'string') {\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n const trimmed = result.text?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLmNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0Esd0RBQXdEO0FBQ3hELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUF3QjtJQUMxRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTdHJ1Y3R1cmVkIGNvcHkgcGF5bG9hZCBmcm9tIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVDb3B5RGF0YSB7XG4gIC8qKiBQcmltYXJ5IHBsYWluLXRleHQgdmFsdWUgZm9yIGNsaXBib2FyZCBvciBwcmV2aWV3cy4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdHlwZS1zcGVjaWZpYyBtZXRhZGF0YSBmb3IgY29uc3VtZXJzIChVUkxzLCBuYW1lcywgbWltZSB0eXBlcywg4oCmKS4gKi9cbiAgbWV0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogUmV0dXJuIHZhbHVlIG9mIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9IOKAlCBzaG9ydGhhbmQgc3RyaW5nIG9yIHN0cnVjdHVyZWQgZGF0YS4gKi9cbmV4cG9ydCB0eXBlIEFYRmlsZUNvcHlSZXN1bHQgPSBzdHJpbmcgfCBBWEZpbGVDb3B5RGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKiBSZXNvbHZlcyBjbGlwYm9hcmQvcGxhaW4gdGV4dCBmcm9tIGEgY29weSByZXN1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVDb3B5VGV4dChyZXN1bHQ6IEFYRmlsZUNvcHlSZXN1bHQpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJlc3VsdC50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID4gMCA/IHRyaW1tZWQgOiBudWxsO1xuICB9XG4gIGNvbnN0IHRyaW1tZWQgPSByZXN1bHQudGV4dD8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCAmJiB0cmltbWVkLmxlbmd0aCA+IDAgPyB0cmltbWVkIDogbnVsbDtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/** Contributes {@link AXFileType} entries (multi provider). */\nexport class AXFileTypeInfoProvider {\n}\nexport const AX_FILE_TYPE_INFO_PROVIDER = new InjectionToken('AX_FILE_TYPE_INFO_PROVIDER');\nexport function provideFileTypeInfoProvider(provider) {\n return {\n provide: AX_FILE_TYPE_INFO_PROVIDER,\n useClass: provider,\n multi: true,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLWluZm8tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLWluZm8tcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFHL0QsK0RBQStEO0FBQy9ELE1BQU0sT0FBZ0Isc0JBQXNCO0NBRTNDO0FBRUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQTJCLDRCQUE0QixDQUFDLENBQUM7QUFFckgsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFFBQXNDO0lBQ2hGLE9BQU87UUFDTCxPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5cbi8qKiBDb250cmlidXRlcyB7QGxpbmsgQVhGaWxlVHlwZX0gZW50cmllcyAobXVsdGkgcHJvdmlkZXIpLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIge1xuICBhYnN0cmFjdCBpdGVtcygpOiBQcm9taXNlPEFYRmlsZVR5cGVbXT47XG59XG5cbmV4cG9ydCBjb25zdCBBWF9GSUxFX1RZUEVfSU5GT19QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyW10+KCdBWF9GSUxFX1RZUEVfSU5GT19QUk9WSURFUicpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyKHByb3ZpZGVyOiBUeXBlPEFYRmlsZVR5cGVJbmZvUHJvdmlkZXI+KTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSLFxuICAgIHVzZUNsYXNzOiBwcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cbiJdfQ==","/** Merges type-level validations with extension overrides (extension wins per field). */\nexport function mergeFileValidations(base, override) {\n if (!override) {\n return { ...base };\n }\n return {\n mimeTypes: override.mimeTypes ?? base.mimeTypes,\n minSize: override.minSize ?? base.minSize,\n maxSize: override.maxSize ?? base.maxSize,\n rules: override.rules ?? base.rules,\n };\n}\n/** Resolved validations for a type + optional extension. */\nexport function resolveFileValidations(type, extension) {\n return mergeFileValidations(type.validations ?? {}, extension?.validations);\n}\n/** True when no mime/size/rules are defined on the type. */\nexport function isEmptyFileValidations(validations) {\n if (!validations) {\n return true;\n }\n return ((validations.mimeTypes?.length ?? 0) === 0 &&\n validations.minSize == null &&\n validations.maxSize == null &&\n (validations.rules?.length ?? 0) === 0);\n}\n/**\n * Extension-only mode: empty type `validations` and a non-empty `extensions` list.\n * Files must match a listed extension; rules come from that extension entry.\n */\nexport function isExtensionsOnlyType(type) {\n return isEmptyFileValidations(type.validations) && (type.extensions?.length ?? 0) > 0;\n}\n/** File extension from name (lowercase, no dot). */\nexport function getFileExtension(fileName) {\n const parts = fileName.trim().split('.');\n return parts.length > 1 ? (parts.pop()?.toLowerCase() ?? '') : '';\n}\n/** Matching extension entry for a file within a type, if any. */\nexport function findFileTypeExtension(file, type) {\n const ext = getFileExtension(file.name);\n if (!ext || !type.extensions?.length) {\n return undefined;\n }\n return type.extensions.find((e) => e.name.toLowerCase() === ext);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1lcmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXJnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSx5RkFBeUY7QUFDekYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUF1QixFQUN2QixRQUFxQztJQUVyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQy9DLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLFNBQStCO0lBQ3RGLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQStCO0lBQ3BFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLENBQ0wsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSTtRQUMzQixXQUFXLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDM0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3ZDLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQWdCO0lBQ25ELE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRSxDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUFVLEVBQUUsSUFBZ0I7SUFDaEUsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24sIEFYRmlsZVZhbGlkYXRpb25zIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuLyoqIE1lcmdlcyB0eXBlLWxldmVsIHZhbGlkYXRpb25zIHdpdGggZXh0ZW5zaW9uIG92ZXJyaWRlcyAoZXh0ZW5zaW9uIHdpbnMgcGVyIGZpZWxkKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUZpbGVWYWxpZGF0aW9ucyhcbiAgYmFzZTogQVhGaWxlVmFsaWRhdGlvbnMsXG4gIG92ZXJyaWRlPzogUGFydGlhbDxBWEZpbGVWYWxpZGF0aW9ucz4sXG4pOiBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIGlmICghb3ZlcnJpZGUpIHtcbiAgICByZXR1cm4geyAuLi5iYXNlIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1pbWVUeXBlczogb3ZlcnJpZGUubWltZVR5cGVzID8/IGJhc2UubWltZVR5cGVzLFxuICAgIG1pblNpemU6IG92ZXJyaWRlLm1pblNpemUgPz8gYmFzZS5taW5TaXplLFxuICAgIG1heFNpemU6IG92ZXJyaWRlLm1heFNpemUgPz8gYmFzZS5tYXhTaXplLFxuICAgIHJ1bGVzOiBvdmVycmlkZS5ydWxlcyA/PyBiYXNlLnJ1bGVzLFxuICB9O1xufVxuXG4vKiogUmVzb2x2ZWQgdmFsaWRhdGlvbnMgZm9yIGEgdHlwZSArIG9wdGlvbmFsIGV4dGVuc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVZhbGlkYXRpb25zKHR5cGU6IEFYRmlsZVR5cGUsIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24pOiBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIHJldHVybiBtZXJnZUZpbGVWYWxpZGF0aW9ucyh0eXBlLnZhbGlkYXRpb25zID8/IHt9LCBleHRlbnNpb24/LnZhbGlkYXRpb25zKTtcbn1cblxuLyoqIFRydWUgd2hlbiBubyBtaW1lL3NpemUvcnVsZXMgYXJlIGRlZmluZWQgb24gdGhlIHR5cGUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eUZpbGVWYWxpZGF0aW9ucyh2YWxpZGF0aW9ucz86IEFYRmlsZVZhbGlkYXRpb25zKTogYm9vbGVhbiB7XG4gIGlmICghdmFsaWRhdGlvbnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gKFxuICAgICh2YWxpZGF0aW9ucy5taW1lVHlwZXM/Lmxlbmd0aCA/PyAwKSA9PT0gMCAmJlxuICAgIHZhbGlkYXRpb25zLm1pblNpemUgPT0gbnVsbCAmJlxuICAgIHZhbGlkYXRpb25zLm1heFNpemUgPT0gbnVsbCAmJlxuICAgICh2YWxpZGF0aW9ucy5ydWxlcz8ubGVuZ3RoID8/IDApID09PSAwXG4gICk7XG59XG5cbi8qKlxuICogRXh0ZW5zaW9uLW9ubHkgbW9kZTogZW1wdHkgdHlwZSBgdmFsaWRhdGlvbnNgIGFuZCBhIG5vbi1lbXB0eSBgZXh0ZW5zaW9uc2AgbGlzdC5cbiAqIEZpbGVzIG11c3QgbWF0Y2ggYSBsaXN0ZWQgZXh0ZW5zaW9uOyBydWxlcyBjb21lIGZyb20gdGhhdCBleHRlbnNpb24gZW50cnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVuc2lvbnNPbmx5VHlwZSh0eXBlOiBBWEZpbGVUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0VtcHR5RmlsZVZhbGlkYXRpb25zKHR5cGUudmFsaWRhdGlvbnMpICYmICh0eXBlLmV4dGVuc2lvbnM/Lmxlbmd0aCA/PyAwKSA+IDA7XG59XG5cbi8qKiBGaWxlIGV4dGVuc2lvbiBmcm9tIG5hbWUgKGxvd2VyY2FzZSwgbm8gZG90KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IGZpbGVOYW1lLnRyaW0oKS5zcGxpdCgnLicpO1xuICByZXR1cm4gcGFydHMubGVuZ3RoID4gMSA/IChwYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKSA/PyAnJykgOiAnJztcbn1cblxuLyoqIE1hdGNoaW5nIGV4dGVuc2lvbiBlbnRyeSBmb3IgYSBmaWxlIHdpdGhpbiBhIHR5cGUsIGlmIGFueS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRmlsZVR5cGVFeHRlbnNpb24oZmlsZTogRmlsZSwgdHlwZTogQVhGaWxlVHlwZSk6IEFYRmlsZVR5cGVFeHRlbnNpb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBleHQgPSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGUubmFtZSk7XG4gIGlmICghZXh0IHx8ICF0eXBlLmV4dGVuc2lvbnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHR5cGUuZXh0ZW5zaW9ucy5maW5kKChlKSA9PiBlLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gZXh0KTtcbn1cbiJdfQ==","import { findFileTypeExtension, getFileExtension, isExtensionsOnlyType, resolveFileValidations, } from './file-type.merge';\n/** Maps {@link AXFileValidations} to executable validation entries. */\nexport function fileValidationsToRules(validations) {\n const rules = [];\n if (validations.mimeTypes?.length) {\n rules.push({\n rule: 'fileMimeType',\n options: { allowed: validations.mimeTypes },\n });\n }\n if (validations.minSize != null) {\n rules.push({\n rule: 'fileMinSize',\n options: { minSize: validations.minSize },\n });\n }\n if (validations.maxSize != null) {\n rules.push({\n rule: 'fileMaxSize',\n options: { maxSize: validations.maxSize },\n });\n }\n if (validations.rules?.length) {\n rules.push(...validations.rules);\n }\n return rules;\n}\n/** Failed validation results; empty array means the file is valid. */\nexport async function validateFileWithValidations(validation, file, validations) {\n const entries = fileValidationsToRules(validations);\n const errors = [];\n for (const { rule, options } of entries) {\n const result = await validation.validate(rule, file, options);\n if (!result.result) {\n errors.push(result);\n }\n }\n return errors;\n}\n/** Validates a file against a type; extension rules override when the file name matches. */\nexport async function validateFileAgainstType(validation, file, type, extension) {\n const matchedExtension = extension ?? findFileTypeExtension(file, type);\n if (isExtensionsOnlyType(type) && !matchedExtension) {\n const ext = getFileExtension(file.name);\n return [\n {\n rule: 'fileExtension',\n result: false,\n message: ext ? `Extension \".${ext}\" is not allowed.` : 'File must have an allowed extension.',\n value: ext,\n },\n ];\n }\n const resolved = resolveFileValidations(type, matchedExtension);\n return validateFileWithValidations(validation, file, resolved);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnZhbGlkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS52YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFHM0IsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxXQUE4QjtJQUNuRSxNQUFNLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBRXpDLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGNBQWM7WUFDcEIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUU7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsVUFBK0IsRUFDL0IsSUFBVSxFQUNWLFdBQThCO0lBRTlCLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sTUFBTSxHQUE2QixFQUFFLENBQUM7SUFFNUMsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsVUFBK0IsRUFDL0IsSUFBVSxFQUNWLElBQWdCLEVBQ2hCLFNBQStCO0lBRS9CLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxJQUFJLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV4RSxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTztZQUNMO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztnQkFDN0YsS0FBSyxFQUFFLEdBQUc7YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEUsT0FBTywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFZhbGlkYXRpb25TZXJ2aWNlLCB0eXBlIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQge1xuICBmaW5kRmlsZVR5cGVFeHRlbnNpb24sXG4gIGdldEZpbGVFeHRlbnNpb24sXG4gIGlzRXh0ZW5zaW9uc09ubHlUeXBlLFxuICByZXNvbHZlRmlsZVZhbGlkYXRpb25zLFxufSBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24sIEFYRmlsZVZhbGlkYXRpb25SdWxlLCBBWEZpbGVWYWxpZGF0aW9ucyB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5cbi8qKiBNYXBzIHtAbGluayBBWEZpbGVWYWxpZGF0aW9uc30gdG8gZXhlY3V0YWJsZSB2YWxpZGF0aW9uIGVudHJpZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsZVZhbGlkYXRpb25zVG9SdWxlcyh2YWxpZGF0aW9uczogQVhGaWxlVmFsaWRhdGlvbnMpOiBBWEZpbGVWYWxpZGF0aW9uUnVsZVtdIHtcbiAgY29uc3QgcnVsZXM6IEFYRmlsZVZhbGlkYXRpb25SdWxlW10gPSBbXTtcblxuICBpZiAodmFsaWRhdGlvbnMubWltZVR5cGVzPy5sZW5ndGgpIHtcbiAgICBydWxlcy5wdXNoKHtcbiAgICAgIHJ1bGU6ICdmaWxlTWltZVR5cGUnLFxuICAgICAgb3B0aW9uczogeyBhbGxvd2VkOiB2YWxpZGF0aW9ucy5taW1lVHlwZXMgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9ucy5taW5TaXplICE9IG51bGwpIHtcbiAgICBydWxlcy5wdXNoKHtcbiAgICAgIHJ1bGU6ICdmaWxlTWluU2l6ZScsXG4gICAgICBvcHRpb25zOiB7IG1pblNpemU6IHZhbGlkYXRpb25zLm1pblNpemUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9ucy5tYXhTaXplICE9IG51bGwpIHtcbiAgICBydWxlcy5wdXNoKHtcbiAgICAgIHJ1bGU6ICdmaWxlTWF4U2l6ZScsXG4gICAgICBvcHRpb25zOiB7IG1heFNpemU6IHZhbGlkYXRpb25zLm1heFNpemUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9ucy5ydWxlcz8ubGVuZ3RoKSB7XG4gICAgcnVsZXMucHVzaCguLi52YWxpZGF0aW9ucy5ydWxlcyk7XG4gIH1cblxuICByZXR1cm4gcnVsZXM7XG59XG5cbi8qKiBGYWlsZWQgdmFsaWRhdGlvbiByZXN1bHRzOyBlbXB0eSBhcnJheSBtZWFucyB0aGUgZmlsZSBpcyB2YWxpZC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUZpbGVXaXRoVmFsaWRhdGlvbnMoXG4gIHZhbGlkYXRpb246IEFYVmFsaWRhdGlvblNlcnZpY2UsXG4gIGZpbGU6IEZpbGUsXG4gIHZhbGlkYXRpb25zOiBBWEZpbGVWYWxpZGF0aW9ucyxcbik6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdPiB7XG4gIGNvbnN0IGVudHJpZXMgPSBmaWxlVmFsaWRhdGlvbnNUb1J1bGVzKHZhbGlkYXRpb25zKTtcbiAgY29uc3QgZXJyb3JzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHsgcnVsZSwgb3B0aW9ucyB9IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2YWxpZGF0aW9uLnZhbGlkYXRlKHJ1bGUsIGZpbGUsIG9wdGlvbnMpO1xuICAgIGlmICghcmVzdWx0LnJlc3VsdCkge1xuICAgICAgZXJyb3JzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKiogVmFsaWRhdGVzIGEgZmlsZSBhZ2FpbnN0IGEgdHlwZTsgZXh0ZW5zaW9uIHJ1bGVzIG92ZXJyaWRlIHdoZW4gdGhlIGZpbGUgbmFtZSBtYXRjaGVzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRmlsZUFnYWluc3RUeXBlKFxuICB2YWxpZGF0aW9uOiBBWFZhbGlkYXRpb25TZXJ2aWNlLFxuICBmaWxlOiBGaWxlLFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBleHRlbnNpb24/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uLFxuKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgY29uc3QgbWF0Y2hlZEV4dGVuc2lvbiA9IGV4dGVuc2lvbiA/PyBmaW5kRmlsZVR5cGVFeHRlbnNpb24oZmlsZSwgdHlwZSk7XG5cbiAgaWYgKGlzRXh0ZW5zaW9uc09ubHlUeXBlKHR5cGUpICYmICFtYXRjaGVkRXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgZXh0ID0gZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGU6ICdmaWxlRXh0ZW5zaW9uJyxcbiAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogZXh0ID8gYEV4dGVuc2lvbiBcIi4ke2V4dH1cIiBpcyBub3QgYWxsb3dlZC5gIDogJ0ZpbGUgbXVzdCBoYXZlIGFuIGFsbG93ZWQgZXh0ZW5zaW9uLicsXG4gICAgICAgIHZhbHVlOiBleHQsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVGaWxlVmFsaWRhdGlvbnModHlwZSwgbWF0Y2hlZEV4dGVuc2lvbik7XG4gIHJldHVybiB2YWxpZGF0ZUZpbGVXaXRoVmFsaWRhdGlvbnModmFsaWRhdGlvbiwgZmlsZSwgcmVzb2x2ZWQpO1xufVxuIl19","import { AXValidationService } from '@acorex/core/validation';\nimport { Injectable, inject } from '@angular/core';\nimport { AX_FILE_TYPE_INFO_PROVIDER } from './file-type-info-provider';\nimport { findFileTypeExtension } from './file-type.merge';\nimport { validateFileAgainstType } from './file-type.validate';\nimport * as i0 from \"@angular/core\";\nexport class AXFileTypeRegistryService {\n constructor() {\n this.validation = inject(AXValidationService);\n this.providers = inject(AX_FILE_TYPE_INFO_PROVIDER, { optional: true }) ?? [];\n this.registeredTypes = [];\n this.cache = null;\n }\n /** Registers or replaces catalog entries (e.g. from feature bootstrap). */\n registerTypes(types) {\n for (const type of types) {\n const index = this.registeredTypes.findIndex((t) => t.name === type.name);\n if (index >= 0) {\n this.registeredTypes[index] = type;\n }\n else {\n this.registeredTypes.push(type);\n }\n }\n this.invalidateCache();\n }\n invalidateCache() {\n this.cache = null;\n }\n async resolveTypes() {\n if (this.cache) {\n return this.cache;\n }\n const byName = new Map();\n if (this.providers.length) {\n const batches = await Promise.all(this.providers.map((p) => p.items()));\n for (const batch of batches) {\n for (const type of batch) {\n if (!byName.has(type.name)) {\n byName.set(type.name, type);\n }\n }\n }\n }\n for (const type of this.registeredTypes) {\n byName.set(type.name, type);\n }\n this.cache = [...byName.values()];\n return this.cache;\n }\n async getTypes() {\n return this.resolveTypes();\n }\n async get(name) {\n const types = await this.resolveTypes();\n return types.find((t) => t.name === name);\n }\n async accept(typeNames) {\n const names = typeNames ? (Array.isArray(typeNames) ? typeNames : [typeNames]) : undefined;\n const types = await this.resolveTypes();\n const selected = names?.length ? types.filter((t) => names.includes(t.name)) : types;\n if (names?.length && selected.length === 0) {\n return '';\n }\n const parts = new Set();\n for (const type of selected) {\n type.validations?.mimeTypes?.forEach((m) => parts.add(m));\n type.extensions?.forEach((ext) => {\n ext.validations?.mimeTypes?.forEach((m) => parts.add(m));\n parts.add(`.${ext.name.replace(/^\\./, '')}`);\n });\n }\n return [...parts].join(',');\n }\n async matchType(file) {\n const types = await this.resolveTypes();\n const mime = file.type.trim().toLowerCase();\n return types.find((type) => {\n const patterns = [\n ...(type.validations?.mimeTypes ?? []),\n ...(type.extensions?.flatMap((e) => e.validations?.mimeTypes ?? []) ?? []),\n ];\n if (!patterns.length) {\n return false;\n }\n return patterns.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n });\n }\n async validate(file, typeName) {\n const type = await this.get(typeName);\n if (!type) {\n return [\n {\n rule: 'fileType',\n result: false,\n message: `Unknown file type: ${typeName}`,\n value: typeName,\n },\n ];\n }\n const extension = findFileTypeExtension(file, type);\n return validateFileAgainstType(this.validation, file, type, extension);\n }\n async validateAgainstTypes(file, typeNames) {\n const names = Array.isArray(typeNames) ? typeNames : [typeNames];\n let lastErrors = [];\n for (const name of names) {\n const errors = await this.validate(file, name);\n if (errors.length === 0) {\n return [];\n }\n lastErrors = errors;\n }\n return lastErrors;\n }\n async validateMany(files, typeNames) {\n const accepted = [];\n const rejected = [];\n for (const file of files) {\n const errors = await this.validateAgainstTypes(file, typeNames);\n if (errors.length === 0) {\n accepted.push(file);\n }\n else {\n rejected.push({ file, errors });\n }\n }\n return { accepted, rejected };\n }\n matchesMime(mime, pattern) {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n return mime === pattern;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRegistryService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRy9ELE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXpDLGNBQVMsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekUsb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBRTVDLFVBQUssR0FBd0IsSUFBSSxDQUFDO0tBeUwzQztJQXZMQywyRUFBMkU7SUFFM0UsYUFBYSxDQUFDLEtBQW1CO1FBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTFFLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMs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QUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUVELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUMxQixDQUFDOzhHQS9MVSx5QkFBeUI7a0hBQXpCLHlCQUF5QixjQURaLE1BQU07OzJGQUNuQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuXG5pbXBvcnQgeyBBWFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQVhfRklMRV9UWVBFX0lORk9fUFJPVklERVIgfSBmcm9tICcuL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcblxuaW1wb3J0IHsgZmluZEZpbGVUeXBlRXh0ZW5zaW9uIH0gZnJvbSAnLi9maWxlLXR5cGUubWVyZ2UnO1xuXG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSB9IGZyb20gJy4vZmlsZS10eXBlLnZhbGlkYXRlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0aW9uID0gaW5qZWN0KEFYVmFsaWRhdGlvblNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZXJzID0gaW5qZWN0KEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0ZXJlZFR5cGVzOiBBWEZpbGVUeXBlW10gPSBbXTtcblxuICBwcml2YXRlIGNhY2hlOiBBWEZpbGVUeXBlW10gfCBudWxsID0gbnVsbDtcblxuICAvKiogUmVnaXN0ZXJzIG9yIHJlcGxhY2VzIGNhdGFsb2cgZW50cmllcyAoZS5nLiBmcm9tIGZlYXR1cmUgYm9vdHN0cmFwKS4gKi9cblxuICByZWdpc3RlclR5cGVzKHR5cGVzOiBBWEZpbGVUeXBlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZWdpc3RlcmVkVHlwZXMuZmluZEluZGV4KCh0KSA9PiB0Lm5hbWUgPT09IHR5cGUubmFtZSk7XG5cbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFR5cGVzW2luZGV4XSA9IHR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyZWRUeXBlcy5wdXNoKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaW52YWxpZGF0ZUNhY2hlKCk7XG4gIH1cblxuICBpbnZhbGlkYXRlQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVUeXBlcygpOiBQcm9taXNlPEFYRmlsZVR5cGVbXT4ge1xuICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgICB9XG5cbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgQVhGaWxlVHlwZT4oKTtcblxuICAgIGlmICh0aGlzLnByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGJhdGNoZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLnByb3ZpZGVycy5tYXAoKHApID0+IHAuaXRlbXMoKSkpO1xuXG4gICAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGJhdGNoKSB7XG4gICAgICAgICAgaWYgKCFieU5hbWUuaGFzKHR5cGUubmFtZSkpIHtcbiAgICAgICAgICAgIGJ5TmFtZS5zZXQodHlwZS5uYW1lLCB0eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdGhpcy5yZWdpc3RlcmVkVHlwZXMpIHtcbiAgICAgIGJ5TmFtZS5zZXQodHlwZS5uYW1lLCB0eXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhY2hlID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV07XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgfVxuXG4gIGFzeW5jIGdldFR5cGVzKCk6IFByb21pc2U8QVhGaWxlVHlwZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVR5cGVzKCk7XG4gIH1cblxuICBhc3luYyBnZXQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWEZpbGVUeXBlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdHlwZXMgPSBhd2FpdCB0aGlzLnJlc29sdmVUeXBlcygpO1xuXG4gICAgcmV0dXJuIHR5cGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICBhc3luYyBhY2NlcHQodHlwZU5hbWVzPzogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IG5hbWVzID0gdHlwZU5hbWVzID8gKEFycmF5LmlzQXJyYXkodHlwZU5hbWVzKSA/IHR5cGVOYW1lcyA6IFt0eXBlTmFtZXNdKSA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgdGhpcy5yZXNvbHZlVHlwZXMoKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkID0gbmFtZXM/Lmxlbmd0aCA/IHR5cGVzLmZpbHRlcigodCkgPT4gbmFtZXMuaW5jbHVkZXModC5uYW1lKSkgOiB0eXBlcztcblxuICAgIGlmIChuYW1lcz8ubGVuZ3RoICYmIHNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgIHR5cGUudmFsaWRhdGlvbnM/Lm1pbWVUeXBlcz8uZm9yRWFjaCgobSkgPT4gcGFydHMuYWRkKG0pKTtcblxuICAgICAgdHlwZS5leHRlbnNpb25zPy5mb3JFYWNoKChleHQpID0+IHtcbiAgICAgICAgZXh0LnZhbGlkYXRpb25zPy5taW1lVHlwZXM/LmZvckVhY2goKG0pID0+IHBhcnRzLmFkZChtKSk7XG5cbiAgICAgICAgcGFydHMuYWRkKGAuJHtleHQubmFtZS5yZXBsYWNlKC9eXFwuLywgJycpfWApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wYXJ0c10uam9pbignLCcpO1xuICB9XG5cbiAgYXN5bmMgbWF0Y2hUeXBlKGZpbGU6IEZpbGUpOiBQcm9taXNlPEFYRmlsZVR5cGUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMucmVzb2x2ZVR5cGVzKCk7XG5cbiAgICBjb25zdCBtaW1lID0gZmlsZS50eXBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIHR5cGVzLmZpbmQoKHR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHBhdHRlcm5zID0gW1xuICAgICAgICAuLi4odHlwZS52YWxpZGF0aW9ucz8ubWltZVR5cGVzID8/IFtdKSxcblxuICAgICAgICAuLi4odHlwZS5leHRlbnNpb25zPy5mbGF0TWFwKChlKSA9PiBlLnZhbGlkYXRpb25zPy5taW1lVHlwZXMgPz8gW10pID8/IFtdKSxcbiAgICAgIF07XG5cbiAgICAgIGlmICghcGF0dGVybnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+IHRoaXMubWF0Y2hlc01pbWUobWltZSwgcGF0dGVybi50cmltKCkudG9Mb3dlckNhc2UoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoZmlsZTogRmlsZSwgdHlwZU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0KHR5cGVOYW1lKTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGU6ICdmaWxlVHlwZScsXG5cbiAgICAgICAgICByZXN1bHQ6IGZhbHNlLFxuXG4gICAgICAgICAgbWVzc2FnZTogYFVua25vd24gZmlsZSB0eXBlOiAke3R5cGVOYW1lfWAsXG5cbiAgICAgICAgICB2YWx1ZTogdHlwZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlLCB0eXBlKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSh0aGlzLnZhbGlkYXRpb24sIGZpbGUsIHR5cGUsIGV4dGVuc2lvbik7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZUFnYWluc3RUeXBlcyhcbiAgICBmaWxlOiBGaWxlLFxuXG4gICAgdHlwZU5hbWVzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgICBjb25zdCBuYW1lcyA9IEFycmF5LmlzQXJyYXkodHlwZU5hbWVzKSA/IHR5cGVOYW1lcyA6IFt0eXBlTmFtZXNdO1xuXG4gICAgbGV0IGxhc3RFcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKGZpbGUsIG5hbWUpO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGxhc3RFcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFcnJvcnM7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZU1hbnkoXG4gICAgZmlsZXM6IEZpbGVbXSxcblxuICAgIHR5cGVOYW1lczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICk6IFByb21pc2U8eyBhY2NlcHRlZDogRmlsZVtdOyByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W10gfT4ge1xuICAgIGNvbnN0IGFjY2VwdGVkOiBGaWxlW10gPSBbXTtcblxuICAgIGNvbnN0IHJlamVjdGVkOiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlQWdhaW5zdFR5cGVzKGZpbGUsIHR5cGVOYW1lcyk7XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGFjY2VwdGVkLnB1c2goZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3RlZC5wdXNoKHsgZmlsZSwgZXJyb3JzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGFjY2VwdGVkLCByZWplY3RlZCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaGVzTWltZShtaW1lOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuID09PSAnKi8qJyB8fCBwYXR0ZXJuID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHBhdHRlcm4uc2xpY2UoMCwgLTIpO1xuXG4gICAgICByZXR1cm4gbWltZS5zdGFydHNXaXRoKGAke2NhdGVnb3J5fS9gKSB8fCAobWltZSA9PT0gJycgJiYgY2F0ZWdvcnkgPT09ICdhcHBsaWNhdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiBtaW1lID09PSBwYXR0ZXJuO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_AUDIO_FILE_TYPE = {\n name: 'audio',\n title: 'Audio',\n icon: 'fa-light fa-music ax-text-amber-500',\n validations: {\n mimeTypes: ['audio/*'],\n minSize: 1,\n maxSize: 50 * MB,\n },\n extensions: [\n { name: 'mp3', title: 'MP3' },\n { name: 'wav', title: 'WAV', validations: { maxSize: 30 * MB } },\n { name: 'ogg', title: 'OGG' },\n { name: 'm4a', title: 'M4A' },\n ],\n};\nexport class AXAudioFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_AUDIO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9hdWRpby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHcEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLHFDQUFxQztJQUMzQyxXQUFXLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUU7S0FDakI7SUFDRCxVQUFVLEVBQUU7UUFDVixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtRQUM3QixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ2hFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0tBQzlCO0NBQ0YsQ0FBQztBQUdGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxzQkFBc0I7SUFDakUsS0FBSztRQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQUhVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB9IGZyb20gJy4uL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfQVVESU9fRklMRV9UWVBFOiBBWEZpbGVUeXBlID0ge1xuICBuYW1lOiAnYXVkaW8nLFxuICB0aXRsZTogJ0F1ZGlvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW11c2ljIGF4LXRleHQtYW1iZXItNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXVkaW8vKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogNTAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wMycsIHRpdGxlOiAnTVAzJyB9LFxuICAgIHsgbmFtZTogJ3dhdicsIHRpdGxlOiAnV0FWJywgdmFsaWRhdGlvbnM6IHsgbWF4U2l6ZTogMzAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gICAgeyBuYW1lOiAnbTRhJywgdGl0bGU6ICdNNEEnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhBdWRpb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9BVURJT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\n/** Extension-only: no type `validations` — only listed extensions are allowed. */\nexport const AX_DOCUMENT_FILE_TYPE = {\n name: 'document',\n title: 'Document',\n icon: 'fa-light fa-file-lines ax-text-red-500',\n extensions: [{ name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 5 * MB } }],\n};\nexport class AXDocumentFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_DOCUMENT_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9kb2N1bWVudC1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHcEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWU7SUFDL0MsSUFBSSxFQUFFLFVBQVU7SUFDaEIsS0FBSyxFQUFFLFVBQVU7SUFDakIsSUFBSSxFQUFFLHdDQUF3QztJQUM5QyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztDQUM5RyxDQUFDO0FBR0YsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtJQUNwRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7OEdBSFUsMEJBQTBCO2tIQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1vZGVscyc7XG5cbmNvbnN0IE1CID0gMTAyNCAqIDEwMjQ7XG5cbi8qKiBFeHRlbnNpb24tb25seTogbm8gdHlwZSBgdmFsaWRhdGlvbnNgIOKAlCBvbmx5IGxpc3RlZCBleHRlbnNpb25zIGFyZSBhbGxvd2VkLiAqL1xuZXhwb3J0IGNvbnN0IEFYX0RPQ1VNRU5UX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ2RvY3VtZW50JyxcbiAgdGl0bGU6ICdEb2N1bWVudCcsXG4gIGljb246ICdmYS1saWdodCBmYS1maWxlLWxpbmVzIGF4LXRleHQtcmVkLTUwMCcsXG4gIGV4dGVuc2lvbnM6IFt7IG5hbWU6ICdwZGYnLCB0aXRsZTogJ1BERicsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9wZGYnXSwgbWF4U2l6ZTogNSAqIE1CIH0gfV0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9ET0NVTUVOVF9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_FILE_FILE_TYPE = {\n name: 'file',\n title: 'File',\n icon: 'fa-light fa-file ax-text-neutral-500',\n validations: {\n mimeTypes: ['application/*', 'text/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 25 * MB } },\n { name: 'doc', title: 'Word' },\n { name: 'docx', title: 'Word' },\n { name: 'txt', title: 'Text', validations: { mimeTypes: ['text/plain'], maxSize: 5 * MB } },\n { name: 'zip', title: 'ZIP', validations: { maxSize: 50 * MB } },\n ],\n};\nexport class AXFileFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_FILE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1maWxlLXR5cGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBR3BFLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDM0MsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsTUFBTTtJQUNiLElBQUksRUFBRSxzQ0FBc0M7SUFDNUMsV0FBVyxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtRQUNoRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtRQUM5QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtRQUMvQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQzNGLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7S0FDakU7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQUNoRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OEdBSFUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1vZGVscyc7XG5cbmNvbnN0IE1CID0gMTAyNCAqIDEwMjQ7XG5cbmV4cG9ydCBjb25zdCBBWF9GSUxFX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ2ZpbGUnLFxuICB0aXRsZTogJ0ZpbGUnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZSBheC10ZXh0LW5ldXRyYWwtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vKicsICd0ZXh0LyonXSxcbiAgICBtaW5TaXplOiAxLFxuICAgIG1heFNpemU6IDEwMCAqIE1CLFxuICB9LFxuICBleHRlbnNpb25zOiBbXG4gICAgeyBuYW1lOiAncGRmJywgdGl0bGU6ICdQREYnLCB2YWxpZGF0aW9uczogeyBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vcGRmJ10sIG1heFNpemU6IDI1ICogTUIgfSB9LFxuICAgIHsgbmFtZTogJ2RvYycsIHRpdGxlOiAnV29yZCcgfSxcbiAgICB7IG5hbWU6ICdkb2N4JywgdGl0bGU6ICdXb3JkJyB9LFxuICAgIHsgbmFtZTogJ3R4dCcsIHRpdGxlOiAnVGV4dCcsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWyd0ZXh0L3BsYWluJ10sIG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnemlwJywgdGl0bGU6ICdaSVAnLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiA1MCAqIE1CIH0gfSxcbiAgXSxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIGV4dGVuZHMgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB7XG4gIGl0ZW1zKCk6IFByb21pc2U8QVhGaWxlVHlwZVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbQVhfRklMRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_IMAGE_FILE_TYPE = {\n name: 'image',\n title: 'Image',\n icon: 'fa-light fa-image ax-text-purple-500',\n validations: {\n mimeTypes: ['image/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'jpg', title: 'JPEG' },\n { name: 'jpeg', title: 'JPEG', validations: { maxSize: 5 * MB } },\n { name: 'png', title: 'PNG' },\n { name: 'gif', title: 'GIF' },\n { name: 'webp', title: 'WebP' },\n { name: 'svg', title: 'SVG', validations: { maxSize: 2 * MB } },\n ],\n};\nexport class AXImageFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_IMAGE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9pbWFnZS1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHcEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLHNDQUFzQztJQUM1QyxXQUFXLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUU7S0FDbEI7SUFDRCxVQUFVLEVBQUU7UUFDVixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtRQUM5QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ2pFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQy9CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7S0FDaEU7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1vZGVscyc7XG5cbmNvbnN0IE1CID0gMTAyNCAqIDEwMjQ7XG5cbmV4cG9ydCBjb25zdCBBWF9JTUFHRV9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdpbWFnZScsXG4gIHRpdGxlOiAnSW1hZ2UnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtaW1hZ2UgYXgtdGV4dC1wdXJwbGUtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnaW1hZ2UvKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogMTAwICogTUIsXG4gIH0sXG4gIGV4dGVuc2lvbnM6IFtcbiAgICB7IG5hbWU6ICdqcGcnLCB0aXRsZTogJ0pQRUcnIH0sXG4gICAgeyBuYW1lOiAnanBlZycsIHRpdGxlOiAnSlBFRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAncG5nJywgdGl0bGU6ICdQTkcnIH0sXG4gICAgeyBuYW1lOiAnZ2lmJywgdGl0bGU6ICdHSUYnIH0sXG4gICAgeyBuYW1lOiAnd2VicCcsIHRpdGxlOiAnV2ViUCcgfSxcbiAgICB7IG5hbWU6ICdzdmcnLCB0aXRsZTogJ1NWRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDIgKiBNQiB9IH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhJbWFnZUZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9JTUFHRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_VIDEO_FILE_TYPE = {\n name: 'video',\n title: 'Video',\n icon: 'fa-light fa-video ax-text-blue-500',\n validations: {\n mimeTypes: ['video/*'],\n minSize: 1,\n maxSize: 500 * MB,\n },\n extensions: [\n { name: 'mp4', title: 'MP4' },\n { name: 'webm', title: 'WebM', validations: { maxSize: 200 * MB } },\n { name: 'ogg', title: 'OGG' },\n ],\n};\nexport class AXVideoFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_VIDEO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy92aWRlby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHcEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLG9DQUFvQztJQUMxQyxXQUFXLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUU7S0FDbEI7SUFDRCxVQUFVLEVBQUU7UUFDVixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtRQUM3QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ25FLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0tBQzlCO0NBQ0YsQ0FBQztBQUdGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxzQkFBc0I7SUFDakUsS0FBSztRQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQUhVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB9IGZyb20gJy4uL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfVklERU9fRklMRV9UWVBFOiBBWEZpbGVUeXBlID0ge1xuICBuYW1lOiAndmlkZW8nLFxuICB0aXRsZTogJ1ZpZGVvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXZpZGVvIGF4LXRleHQtYmx1ZS01MDAnLFxuICB2YWxpZGF0aW9uczoge1xuICAgIG1pbWVUeXBlczogWyd2aWRlby8qJ10sXG4gICAgbWluU2l6ZTogMSxcbiAgICBtYXhTaXplOiA1MDAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wNCcsIHRpdGxlOiAnTVA0JyB9LFxuICAgIHsgbmFtZTogJ3dlYm0nLCB0aXRsZTogJ1dlYk0nLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiAyMDAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9WSURFT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { provideFileTypeInfoProvider } from '../file-type-info-provider';\nimport { AXAudioFileTypeProvider } from './audio-file-type.provider';\nimport { AXDocumentFileTypeProvider } from './document-file-type.provider';\nimport { AXFileFileTypeProvider } from './file-file-type.provider';\nimport { AXImageFileTypeProvider } from './image-file-type.provider';\nimport { AXVideoFileTypeProvider } from './video-file-type.provider';\nexport * from './image-file-type.provider';\nexport * from './video-file-type.provider';\nexport * from './audio-file-type.provider';\nexport * from './file-file-type.provider';\nexport * from './document-file-type.provider';\n/** Built-in file type provider classes (one logical type per provider). */\nexport const AX_BUILTIN_FILE_TYPE_PROVIDERS = [\n AXImageFileTypeProvider,\n AXVideoFileTypeProvider,\n AXAudioFileTypeProvider,\n AXFileFileTypeProvider,\n AXDocumentFileTypeProvider,\n];\n/** Registers all built-in file type providers (image, video, audio, file, document). */\nexport function provideBuiltinFileTypeProviders() {\n return AX_BUILTIN_FILE_TYPE_PROVIDERS.map((provider) => provideFileTypeInfoProvider(provider));\n}\n/** @deprecated Use {@link provideBuiltinFileTypeProviders}. */\nexport const provideDefaultFileTypeProviders = provideBuiltinFileTypeProviders;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QiwwQkFBMEI7Q0FDZ0MsQ0FBQztBQUU3RCx3RkFBd0Y7QUFDeEYsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVGaWxlVHlwZUluZm9Qcm92aWRlciwgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB9IGZyb20gJy4uL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmltcG9ydCB7IEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9hdWRpby1maWxlLXR5cGUucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgfSBmcm9tICcuL2RvY3VtZW50LWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9maWxlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEltYWdlRmlsZVR5cGVQcm92aWRlciB9IGZyb20gJy4vaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYVmlkZW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi92aWRlby1maWxlLXR5cGUucHJvdmlkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGlvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyJztcblxuLyoqIEJ1aWx0LWluIGZpbGUgdHlwZSBwcm92aWRlciBjbGFzc2VzIChvbmUgbG9naWNhbCB0eXBlIHBlciBwcm92aWRlcikuICovXG5leHBvcnQgY29uc3QgQVhfQlVJTFRJTl9GSUxFX1RZUEVfUFJPVklERVJTID0gW1xuICBBWEltYWdlRmlsZVR5cGVQcm92aWRlcixcbiAgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIsXG4gIEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyLFxuICBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyLFxuICBBWERvY3VtZW50RmlsZVR5cGVQcm92aWRlcixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFR5cGU8QVhGaWxlVHlwZUluZm9Qcm92aWRlcj5bXTtcblxuLyoqIFJlZ2lzdGVycyBhbGwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycyAoaW1hZ2UsIHZpZGVvLCBhdWRpbywgZmlsZSwgZG9jdW1lbnQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnMoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBBWF9CVUlMVElOX0ZJTEVfVFlQRV9QUk9WSURFUlMubWFwKChwcm92aWRlcikgPT4gcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyKHByb3ZpZGVyKSk7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnN9LiAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVEZWZhdWx0RmlsZVR5cGVQcm92aWRlcnMgPSBwcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzO1xuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMimeTypeValidationRule {\n get name() {\n return 'fileMimeType';\n }\n async validate(value, options) {\n const mime = (value instanceof File || value instanceof Blob ? value.type : '').trim().toLowerCase();\n const allowed = options.allowed ?? [];\n const valid = allowed.length === 0 ||\n allowed.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n return {\n rule: this.name,\n result: valid,\n message: valid ? '' : (options.message ?? 'File type is not allowed.'),\n value: mime,\n };\n }\n matchesMime(mime, pattern) {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n return mime === pattern;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW1lLXR5cGUucnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9ydWxlcy9maWxlLW1pbWUtdHlwZS5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUIzQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLElBQUksSUFBSTtRQUNOLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTRDO1FBRTVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FDVCxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSwyQkFBMkIsQ0FBQztZQUN0RSxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVksRUFBRSxPQUFlO1FBQy9DLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLEtBQUssSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUMxQixDQUFDOzhHQWhDVSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWltZVR5cGVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNSU1FIHBhdHRlcm5zLCBlLmcuIGBpbWFnZS8qYCwgYGltYWdlL3BuZ2AuICovXG4gIGFsbG93ZWQ6IHN0cmluZ1tdO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWltZVR5cGU6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVNaW1lVHlwZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWltZVR5cGUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICApOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICBjb25zdCBtaW1lID0gKHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS50eXBlIDogJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbG93ZWQgPSBvcHRpb25zLmFsbG93ZWQgPz8gW107XG4gICAgY29uc3QgdmFsaWQgPVxuICAgICAgYWxsb3dlZC5sZW5ndGggPT09IDAgfHxcbiAgICAgIGFsbG93ZWQuc29tZSgocGF0dGVybikgPT4gdGhpcy5tYXRjaGVzTWltZShtaW1lLCBwYXR0ZXJuLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkID8gJycgOiAob3B0aW9ucy5tZXNzYWdlID8/ICdGaWxlIHR5cGUgaXMgbm90IGFsbG93ZWQuJyksXG4gICAgICB2YWx1ZTogbWltZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaGVzTWltZShtaW1lOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuID09PSAnKi8qJyB8fCBwYXR0ZXJuID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocGF0dGVybi5lbmRzV2l0aCgnLyonKSkge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBwYXR0ZXJuLnNsaWNlKDAsIC0yKTtcbiAgICAgIHJldHVybiBtaW1lLnN0YXJ0c1dpdGgoYCR7Y2F0ZWdvcnl9L2ApIHx8IChtaW1lID09PSAnJyAmJiBjYXRlZ29yeSA9PT0gJ2FwcGxpY2F0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBtaW1lID09PSBwYXR0ZXJuO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMinSizeValidationRule {\n get name() {\n return 'fileMinSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size >= options.minSize;\n const limitLabel = formatFileSizeBytes(options.minSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ?? `File is too small. Minimum size is ${limitLabel}.`),\n value: size,\n minSize: options.minSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW4tc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWluLXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxVQUFVLEdBQUcsQ0FBQztZQUM1RSxLQUFLLEVBQUUsSUFBSTtZQUNYLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDO0lBQ0osQ0FBQzs4R0F0QlUsMkJBQTJCO2tIQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFZhbGlkYXRpb25SdWxlLFxuICBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCxcbn0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgZm9ybWF0RmlsZVNpemVCeXRlcyB9IGZyb20gJy4uLy4uL2Zvcm1hdC1maWxlLXNpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNaW5pbXVtIHNpemUgaW4gYnl0ZXMuICovXG4gIG1pblNpemU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJyB7XG4gIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgZmlsZU1pblNpemU6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZmlsZU1pblNpemUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgIGNvbnN0IHNpemUgPSB2YWx1ZSBpbnN0YW5jZW9mIEZpbGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBCbG9iID8gdmFsdWUuc2l6ZSA6IDA7XG4gICAgY29uc3QgdmFsaWQgPSBzaXplID49IG9wdGlvbnMubWluU2l6ZTtcbiAgICBjb25zdCBsaW1pdExhYmVsID0gZm9ybWF0RmlsZVNpemVCeXRlcyhvcHRpb25zLm1pblNpemUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgIHJlc3VsdDogdmFsaWQsXG4gICAgICBtZXNzYWdlOiB2YWxpZFxuICAgICAgICA/ICcnXG4gICAgICAgIDogKG9wdGlvbnMubWVzc2FnZSA/PyBgRmlsZSBpcyB0b28gc21hbGwuIE1pbmltdW0gc2l6ZSBpcyAke2xpbWl0TGFiZWx9LmApLFxuICAgICAgdmFsdWU6IHNpemUsXG4gICAgICBtaW5TaXplOiBvcHRpb25zLm1pblNpemUsXG4gICAgfTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMaxSizeValidationRule {\n get name() {\n return 'fileMaxSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size <= options.maxSize;\n const limitLabel = formatFileSizeBytes(options.maxSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ??\n `File is too large. Maximum size is ${limitLabel}.`),\n value: size,\n maxSize: options.maxSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYXgtc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWF4LXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztvQkFDaEIsc0NBQXNDLFVBQVUsR0FBRyxDQUFDO1lBQ3hELEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUM7SUFDSixDQUFDOzhHQXZCVSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZUJ5dGVzIH0gZnJvbSAnLi4vLi4vZm9ybWF0LWZpbGUtc2l6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgLyoqIE1heGltdW0gc2l6ZSBpbiBieXRlcy4gKi9cbiAgbWF4U2l6ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWF4U2l6ZTogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWF4U2l6ZSc7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZShcbiAgICB2YWx1ZTogRmlsZSB8IEJsb2IsXG4gICAgb3B0aW9uczogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XG4gICAgY29uc3Qgc2l6ZSA9IHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS5zaXplIDogMDtcbiAgICBjb25zdCB2YWxpZCA9IHNpemUgPD0gb3B0aW9ucy5tYXhTaXplO1xuICAgIGNvbnN0IGxpbWl0TGFiZWwgPSBmb3JtYXRGaWxlU2l6ZUJ5dGVzKG9wdGlvbnMubWF4U2l6ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkXG4gICAgICAgID8gJydcbiAgICAgICAgOiAob3B0aW9ucy5tZXNzYWdlID8/XG4gICAgICAgICAgYEZpbGUgaXMgdG9vIGxhcmdlLiBNYXhpbXVtIHNpemUgaXMgJHtsaW1pdExhYmVsfS5gKSxcbiAgICAgIHZhbHVlOiBzaXplLFxuICAgICAgbWF4U2l6ZTogb3B0aW9ucy5tYXhTaXplLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","export * from './file-type.models';\nexport * from './file-type.copy';\nexport * from './file-type-info-provider';\nexport * from './file-type-registry.service';\nexport * from './file-type.merge';\nexport * from './file-type.validate';\nexport * from './types.providers';\nexport * from './rules/file-mime-type.rule';\nexport * from './rules/file-min-size.rule';\nexport * from './rules/file-max-size.rule';\nimport { AXValidationRegistryService } from '@acorex/core/validation';\nimport { provideBuiltinFileTypeProviders } from './types.providers';\nimport { AXFileMaxSizeValidationRule } from './rules/file-max-size.rule';\nimport { AXFileMimeTypeValidationRule } from './rules/file-mime-type.rule';\nimport { AXFileMinSizeValidationRule } from './rules/file-min-size.rule';\n/** Validation rule classes to register with {@link AXValidationModule}. */\nexport const AX_FILE_VALIDATION_RULES = [\n AXFileMimeTypeValidationRule,\n AXFileMinSizeValidationRule,\n AXFileMaxSizeValidationRule,\n];\n/** Registers file validation rules with {@link AXValidationRegistryService}. */\nexport function provideFileValidationRules() {\n return {\n provide: 'AXValidationModuleFactory',\n useFactory: (registry) => () => {\n registry.register(...AX_FILE_VALIDATION_RULES);\n },\n deps: [AXValidationRegistryService],\n multi: true,\n };\n}\n/** Registers built-in image / video / audio / file / document type providers. */\nexport { provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders } from './types.providers';\n/**\n * Registers validation rules and optional built-in file type providers.\n * {@link AXFileTypeRegistryService} and {@link AXFileService} are `providedIn: 'root'`.\n */\nexport function provideFileTypeSystem() {\n return [provideFileValidationRules(), ...provideBuiltinFileTypeProviders()];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUczQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RSwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsNEJBQTRCO0lBQzVCLDJCQUEyQjtJQUMzQiwyQkFBMkI7Q0FDbkIsQ0FBQztBQUVYLGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU87UUFDTCxPQUFPLEVBQUUsMkJBQTJCO1FBQ3BDLFVBQVUsRUFBRSxDQUFDLFFBQXFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTtZQUMxRCxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsMkJBQTJCLENBQUM7UUFDbkMsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELGlGQUFpRjtBQUNqRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLEdBQUcsK0JBQStCLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUuY29weSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUubWVyZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUudmFsaWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy5wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1pbWUtdHlwZS5ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZXMvZmlsZS1taW4tc2l6ZS5ydWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZXMvZmlsZS1tYXgtc2l6ZS5ydWxlJztcblxuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnMgfSBmcm9tICcuL3R5cGVzLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBBWEZpbGVNYXhTaXplVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2ZpbGUtbWF4LXNpemUucnVsZSc7XG5pbXBvcnQgeyBBWEZpbGVNaW1lVHlwZVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9maWxlLW1pbWUtdHlwZS5ydWxlJztcbmltcG9ydCB7IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvZmlsZS1taW4tc2l6ZS5ydWxlJztcblxuLyoqIFZhbGlkYXRpb24gcnVsZSBjbGFzc2VzIHRvIHJlZ2lzdGVyIHdpdGgge0BsaW5rIEFYVmFsaWRhdGlvbk1vZHVsZX0uICovXG5leHBvcnQgY29uc3QgQVhfRklMRV9WQUxJREFUSU9OX1JVTEVTID0gW1xuICBBWEZpbGVNaW1lVHlwZVZhbGlkYXRpb25SdWxlLFxuICBBWEZpbGVNaW5TaXplVmFsaWRhdGlvblJ1bGUsXG4gIEFYRmlsZU1heFNpemVWYWxpZGF0aW9uUnVsZSxcbl0gYXMgY29uc3Q7XG5cbi8qKiBSZWdpc3RlcnMgZmlsZSB2YWxpZGF0aW9uIHJ1bGVzIHdpdGgge0BsaW5rIEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZX0uICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpbGVWYWxpZGF0aW9uUnVsZXMoKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6ICdBWFZhbGlkYXRpb25Nb2R1bGVGYWN0b3J5JyxcbiAgICB1c2VGYWN0b3J5OiAocmVnaXN0cnk6IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSkgPT4gKCkgPT4ge1xuICAgICAgcmVnaXN0cnkucmVnaXN0ZXIoLi4uQVhfRklMRV9WQUxJREFUSU9OX1JVTEVTKTtcbiAgICB9LFxuICAgIGRlcHM6IFtBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2VdLFxuICAgIG11bHRpOiB0cnVlLFxuICB9O1xufVxuXG4vKiogUmVnaXN0ZXJzIGJ1aWx0LWluIGltYWdlIC8gdmlkZW8gLyBhdWRpbyAvIGZpbGUgLyBkb2N1bWVudCB0eXBlIHByb3ZpZGVycy4gKi9cbmV4cG9ydCB7IHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnMsIHByb3ZpZGVEZWZhdWx0RmlsZVR5cGVQcm92aWRlcnMgfSBmcm9tICcuL3R5cGVzLnByb3ZpZGVycyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHZhbGlkYXRpb24gcnVsZXMgYW5kIG9wdGlvbmFsIGJ1aWx0LWluIGZpbGUgdHlwZSBwcm92aWRlcnMuXG4gKiB7QGxpbmsgQVhGaWxlVHlwZVJlZ2lzdHJ5U2VydmljZX0gYW5kIHtAbGluayBBWEZpbGVTZXJ2aWNlfSBhcmUgYHByb3ZpZGVkSW46ICdyb290J2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsZVR5cGVTeXN0ZW0oKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbcHJvdmlkZUZpbGVWYWxpZGF0aW9uUnVsZXMoKSwgLi4ucHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycygpXTtcbn1cbiJdfQ==","import { AXFormatModule } from '@acorex/core/format';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { NgModule } from '@angular/core';\nimport { AXFileSizeFormatter } from './file-size-formatter';\nimport { AX_FILE_VALIDATION_RULES, provideDefaultFileTypeProviders, provideFileValidationRules, } from './file-type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/format\";\nimport * as i2 from \"@acorex/core/validation\";\nexport class AXFileModule {\n static forRoot(config) {\n const includeDefaults = config?.includeDefaultFileTypes !== false;\n return {\n ngModule: AXFileModule,\n providers: [\n provideFileValidationRules(),\n ...(includeDefaults ? provideDefaultFileTypeProviders() : []),\n ...(config?.fileTypeProviders ?? []),\n ],\n };\n }\n static forChild(config) {\n return AXFileModule.forRoot(config);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, imports: [i1.AXFormatModule, i2.AXValidationModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, providers: [AXFileSizeFormatter], imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] }),\n AXValidationModule.forChild({ rules: [...AX_FILE_VALIDATION_RULES] })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] }),\n AXValidationModule.forChild({ rules: [...AX_FILE_VALIDATION_RULES] }),\n ],\n providers: [AXFileSizeFormatter],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsMEJBQTBCLEdBQzNCLE1BQU0sYUFBYSxDQUFDOzs7O0FBY3JCLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMkI7UUFDeEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxFQUFFLHVCQUF1QixLQUFLLEtBQUssQ0FBQztRQUVsRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFO2dCQUNULDBCQUEwQixFQUFFO2dCQUM1QixHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELEdBQUcsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUFDO2FBQ3JDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQTJCO1FBQ3pDLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQWhCVSxZQUFZOytHQUFaLFlBQVk7K0dBQVosWUFBWSxhQUZaLENBQUMsbUJBQW1CLENBQUMsWUFIOUIsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUM5RCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLEVBQUUsQ0FBQzs7MkZBSTVELFlBQVk7a0JBUHhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7d0JBQzlELGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsRUFBRSxDQUFDO3FCQUN0RTtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVTaXplRm9ybWF0dGVyIH0gZnJvbSAnLi9maWxlLXNpemUtZm9ybWF0dGVyJztcbmltcG9ydCB7XG4gIEFYX0ZJTEVfVkFMSURBVElPTl9SVUxFUyxcbiAgcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycyxcbiAgcHJvdmlkZUZpbGVWYWxpZGF0aW9uUnVsZXMsXG59IGZyb20gJy4vZmlsZS10eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVNb2R1bGVDb25maWcge1xuICBmaWxlVHlwZVByb3ZpZGVycz86IFByb3ZpZGVyW107XG4gIGluY2x1ZGVEZWZhdWx0RmlsZVR5cGVzPzogYm9vbGVhbjtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFYRm9ybWF0TW9kdWxlLmZvckNoaWxkKHsgZm9ybWF0dGVyczogW0FYRmlsZVNpemVGb3JtYXR0ZXJdIH0pLFxuICAgIEFYVmFsaWRhdGlvbk1vZHVsZS5mb3JDaGlsZCh7IHJ1bGVzOiBbLi4uQVhfRklMRV9WQUxJREFUSU9OX1JVTEVTXSB9KSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQVhGaWxlU2l6ZUZvcm1hdHRlcl0sXG59KVxuZXhwb3J0IGNsYXNzIEFYRmlsZU1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYRmlsZU1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhGaWxlTW9kdWxlPiB7XG4gICAgY29uc3QgaW5jbHVkZURlZmF1bHRzID0gY29uZmlnPy5pbmNsdWRlRGVmYXVsdEZpbGVUeXBlcyAhPT0gZmFsc2U7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYRmlsZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpLFxuICAgICAgICAuLi4oaW5jbHVkZURlZmF1bHRzID8gcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycygpIDogW10pLFxuICAgICAgICAuLi4oY29uZmlnPy5maWxlVHlwZVByb3ZpZGVycyA/PyBbXSksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnPzogQVhGaWxlTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWEZpbGVNb2R1bGU+IHtcbiAgICByZXR1cm4gQVhGaWxlTW9kdWxlLmZvclJvb3QoY29uZmlnKTtcbiAgfVxufVxuIl19","import { DOCUMENT, inject, Injectable, isDevMode } from '@angular/core';\nimport { AXFileTypeRegistryService } from './file-type/file-type-registry.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFileService {\n constructor() {\n this.document = inject(DOCUMENT);\n this.fileTypes = inject(AXFileTypeRegistryService);\n }\n async getFileTypes() {\n return this.fileTypes.getTypes();\n }\n async getFileType(name) {\n return this.fileTypes.get(name);\n }\n async getAcceptAttribute(fileType) {\n return this.fileTypes.accept(fileType);\n }\n async matchFileType(file) {\n return this.fileTypes.matchType(file);\n }\n validate(file, fileType) {\n return this.fileTypes.validateAgainstTypes(file, fileType);\n }\n validateMany(files, fileType) {\n return this.fileTypes.validateMany(files, fileType);\n }\n /**\n * Opens a file selection dialog.\n * With `fileType`, returns files that pass catalog validation (`accept` defaults from the catalog).\n * Without `fileType`, returns all selected files (legacy `accept` / `multiple` only).\n */\n async chooseValidated(options) {\n const resolved = await this.resolveChooseOptions(options);\n const files = await this.openFileDialog(resolved);\n if (files.length === 0) {\n return { accepted: [], rejected: [] };\n }\n if (options.fileType) {\n return this.validateMany(files, options.fileType);\n }\n return { accepted: files, rejected: [] };\n }\n async choose(options) {\n const { accepted } = await this.chooseValidated(options);\n return accepted;\n }\n blobToBase64(blob) {\n if (!(blob instanceof Blob)) {\n return Promise.reject(new Error('input is not blob'));\n }\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error);\n reader.onload = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n }\n getSize(file) {\n if (this.isBase64(file)) {\n return this.getBase64Size(file);\n }\n return false;\n }\n isBase64(base64) {\n const regx = /[^:]\\w+\\/[\\w-+\\d.]+(?=;|,)/;\n return regx.test(base64);\n }\n getBase64Size(base64) {\n return atob(base64.substring(base64.indexOf(',') + 1)).length;\n }\n async resolveChooseOptions(options) {\n const multiple = options.multiple ?? false;\n if (options.fileType) {\n const accept = options.accept ?? (await this.getAcceptAttribute(options.fileType));\n if (isDevMode() && !accept) {\n const name = Array.isArray(options.fileType) ? options.fileType.join(', ') : options.fileType;\n console.warn(`[AXFileService] No accept filter for file type \"${name}\". ` +\n 'Register a file type provider (e.g. provideConversationFileCatalog).');\n }\n return { accept, multiple };\n }\n return { accept: options.accept ?? '', multiple };\n }\n openFileDialog(options) {\n return new Promise((resolve, reject) => {\n const input = this.document.createElement('input');\n input.style.display = 'none';\n this.document.body.appendChild(input);\n input.type = 'file';\n input.accept = options.accept;\n input.multiple = options.multiple;\n const cleanup = () => {\n input.removeEventListener('change', onChange);\n input.removeEventListener('error', onError);\n if (input.parentNode) {\n this.document.body.removeChild(input);\n }\n input.remove();\n };\n const onError = (e) => {\n cleanup();\n reject(e);\n };\n const onChange = () => {\n const files = Array.from(input.files ?? []);\n cleanup();\n resolve(files);\n };\n input.addEventListener('change', onChange);\n input.addEventListener('error', onError);\n input.click();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBV25GLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBNEloRTtJQTFJQyxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBNEI7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFVLEVBQUUsUUFBMkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWSxDQUNWLEtBQWEsRUFDYixRQUEyQjtRQUUzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQ25CLE9BQTRCO1FBRTVCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQTRCO1FBQ3ZDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sSUFBSSxPQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUEwQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBYyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBYyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLDRCQUE0QixDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hFLENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLE9BQTRCO1FBRTVCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO1FBRTNDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUVuRixJQUFJLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDOUYsT0FBTyxDQUFDLElBQUksQ0FDVixtREFBbUQsSUFBSSxLQUFLO29CQUMxRCxzRUFBc0UsQ0FDekUsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFTyxjQUFjLENBQUMsT0FBOEM7UUFDbkUsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM3QyxNQUFNLEtBQUssR0FBcUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckUsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUNwQixLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDOUIsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBRWxDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDOUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUM7WUFFRixLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E3SVUsYUFBYTtrSEFBYixhQUFhLGNBREEsTUFBTTs7MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGluamVjdCwgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLXR5cGUvZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi9maWxlLXR5cGUvZmlsZS10eXBlLm1vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlQ2hvb3NlT3B0aW9ucyB7XG4gIC8qKiBMb2dpY2FsIHR5cGUgbmFtZShzKSBmcm9tIHtAbGluayBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlfS4gV2hlbiBzZXQsIGZpbGVzIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgY2F0YWxvZy4gKi9cbiAgZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgYWNjZXB0Pzogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhGaWxlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVUeXBlcyA9IGluamVjdChBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlKTtcblxuICBhc3luYyBnZXRGaWxlVHlwZXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMuZ2V0VHlwZXMoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVUeXBlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhGaWxlVHlwZSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVUeXBlcy5nZXQobmFtZSk7XG4gIH1cblxuICBhc3luYyBnZXRBY2NlcHRBdHRyaWJ1dGUoZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZVR5cGVzLmFjY2VwdChmaWxlVHlwZSk7XG4gIH1cblxuICBhc3luYyBtYXRjaEZpbGVUeXBlKGZpbGU6IEZpbGUpOiBQcm9taXNlPEFYRmlsZVR5cGUgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMubWF0Y2hUeXBlKGZpbGUpO1xuICB9XG5cbiAgdmFsaWRhdGUoZmlsZTogRmlsZSwgZmlsZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMudmFsaWRhdGVBZ2FpbnN0VHlwZXMoZmlsZSwgZmlsZVR5cGUpO1xuICB9XG5cbiAgdmFsaWRhdGVNYW55KFxuICAgIGZpbGVzOiBGaWxlW10sXG4gICAgZmlsZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPHsgYWNjZXB0ZWQ6IEZpbGVbXTsgcmVqZWN0ZWQ6IHsgZmlsZTogRmlsZTsgZXJyb3JzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10gfVtdIH0+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMudmFsaWRhdGVNYW55KGZpbGVzLCBmaWxlVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYSBmaWxlIHNlbGVjdGlvbiBkaWFsb2cuXG4gICAqIFdpdGggYGZpbGVUeXBlYCwgcmV0dXJucyBmaWxlcyB0aGF0IHBhc3MgY2F0YWxvZyB2YWxpZGF0aW9uIChgYWNjZXB0YCBkZWZhdWx0cyBmcm9tIHRoZSBjYXRhbG9nKS5cbiAgICogV2l0aG91dCBgZmlsZVR5cGVgLCByZXR1cm5zIGFsbCBzZWxlY3RlZCBmaWxlcyAobGVnYWN5IGBhY2NlcHRgIC8gYG11bHRpcGxlYCBvbmx5KS5cbiAgICovXG4gIGFzeW5jIGNob29zZVZhbGlkYXRlZChcbiAgICBvcHRpb25zOiBBWEZpbGVDaG9vc2VPcHRpb25zLFxuICApOiBQcm9taXNlPHsgYWNjZXB0ZWQ6IEZpbGVbXTsgcmVqZWN0ZWQ6IHsgZmlsZTogRmlsZTsgZXJyb3JzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10gfVtdIH0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZUNob29zZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLm9wZW5GaWxlRGlhbG9nKHJlc29sdmVkKTtcblxuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IGFjY2VwdGVkOiBbXSwgcmVqZWN0ZWQ6IFtdIH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZmlsZVR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTWFueShmaWxlcywgb3B0aW9ucy5maWxlVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYWNjZXB0ZWQ6IGZpbGVzLCByZWplY3RlZDogW10gfTtcbiAgfVxuXG4gIGFzeW5jIGNob29zZShvcHRpb25zOiBBWEZpbGVDaG9vc2VPcHRpb25zKTogUHJvbWlzZTxGaWxlW10+IHtcbiAgICBjb25zdCB7IGFjY2VwdGVkIH0gPSBhd2FpdCB0aGlzLmNob29zZVZhbGlkYXRlZChvcHRpb25zKTtcbiAgICByZXR1cm4gYWNjZXB0ZWQ7XG4gIH1cblxuICBibG9iVG9CYXNlNjQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCEoYmxvYiBpbnN0YW5jZW9mIEJsb2IpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdpbnB1dCBpcyBub3QgYmxvYicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlYWRlci5lcnJvcik7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNpemUoZmlsZTogRmlsZSB8IEJsb2IgfCBzdHJpbmcpOiBudW1iZXIgfCBmYWxzZSB7XG4gICAgaWYgKHRoaXMuaXNCYXNlNjQoZmlsZSBhcyBzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXNlNjRTaXplKGZpbGUgYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNCYXNlNjQoYmFzZTY0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWd4ID0gL1teOl1cXHcrXFwvW1xcdy0rXFxkLl0rKD89O3wsKS87XG4gICAgcmV0dXJuIHJlZ3gudGVzdChiYXNlNjQpO1xuICB9XG5cbiAgZ2V0QmFzZTY0U2l6ZShiYXNlNjQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGF0b2IoYmFzZTY0LnN1YnN0cmluZyhiYXNlNjQuaW5kZXhPZignLCcpICsgMSkpLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUNob29zZU9wdGlvbnMoXG4gICAgb3B0aW9uczogQVhGaWxlQ2hvb3NlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTx7IGFjY2VwdDogc3RyaW5nOyBtdWx0aXBsZTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3QgbXVsdGlwbGUgPSBvcHRpb25zLm11bHRpcGxlID8/IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuZmlsZVR5cGUpIHtcbiAgICAgIGNvbnN0IGFjY2VwdCA9IG9wdGlvbnMuYWNjZXB0ID8/IChhd2FpdCB0aGlzLmdldEFjY2VwdEF0dHJpYnV0ZShvcHRpb25zLmZpbGVUeXBlKSk7XG5cbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiAhYWNjZXB0KSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuZmlsZVR5cGUpID8gb3B0aW9ucy5maWxlVHlwZS5qb2luKCcsICcpIDogb3B0aW9ucy5maWxlVHlwZTtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbQVhGaWxlU2VydmljZV0gTm8gYWNjZXB0IGZpbHRlciBmb3IgZmlsZSB0eXBlIFwiJHtuYW1lfVwiLiBgICtcbiAgICAgICAgICAgICdSZWdpc3RlciBhIGZpbGUgdHlwZSBwcm92aWRlciAoZS5nLiBwcm92aWRlQ29udmVyc2F0aW9uRmlsZUNhdGFsb2cpLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGFjY2VwdCwgbXVsdGlwbGUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBhY2NlcHQ6IG9wdGlvbnMuYWNjZXB0ID8/ICcnLCBtdWx0aXBsZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRmlsZURpYWxvZyhvcHRpb25zOiB7IGFjY2VwdDogc3RyaW5nOyBtdWx0aXBsZTogYm9vbGVhbiB9KTogUHJvbWlzZTxGaWxlW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RmlsZVtdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgIGlucHV0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuICAgICAgaW5wdXQudHlwZSA9ICdmaWxlJztcbiAgICAgIGlucHV0LmFjY2VwdCA9IG9wdGlvbnMuYWNjZXB0O1xuICAgICAgaW5wdXQubXVsdGlwbGUgPSBvcHRpb25zLm11bHRpcGxlO1xuXG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNoYW5nZSk7XG4gICAgICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIGlmIChpbnB1dC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC5yZW1vdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGlucHV0LmZpbGVzID8/IFtdKTtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKGZpbGVzKTtcbiAgICAgIH07XG5cbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ2hhbmdlKTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBpbnB1dC5jbGljaygpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvYWNvcmV4LWNvcmUtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["MB"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-core-file.mjs","sources":["../tmp-esm2022/file/lib/file-size-formatter.js","../tmp-esm2022/file/lib/format-file-size.js","../tmp-esm2022/file/lib/file-type/file-type.models.js","../tmp-esm2022/file/lib/file-type/file-type.metadata.js","../tmp-esm2022/file/lib/file-type/file-type.copy.js","../tmp-esm2022/file/lib/file-type/file-type-info-provider.js","../tmp-esm2022/file/lib/file-type/file-type.merge.js","../tmp-esm2022/file/lib/file-type/file-type.validate.js","../tmp-esm2022/file/lib/file-type/file-type-registry.service.js","../tmp-esm2022/file/lib/file-type/types.providers/audio-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/document-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/file-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/image-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/video-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/index.js","../tmp-esm2022/file/lib/file-type/rules/file-mime-type.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-min-size.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-max-size.rule.js","../tmp-esm2022/file/lib/file-type/index.js","../tmp-esm2022/file/lib/file.module.js","../tmp-esm2022/file/lib/file.service.js","../tmp-esm2022/file/acorex-core-file.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileSizeFormatter {\n /**\n * Gets the name of the formatter.\n *\n * @returns string - The formatter name 'filesize'\n */\n get name() {\n return 'filesize';\n }\n /**\n * Formats a file size value to human-readable format.\n *\n * @param value - The file size in bytes\n * @returns string - The formatted file size string (e.g., '1.5 MB')\n */\n format(value) {\n const size = Number(value);\n if (size === 0)\n return '0 Bytes';\n if (Number.isNaN(size))\n return 'Unknown';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(size) / Math.log(k));\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtc2l6ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7OztPQUlHO0lBRUgsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFekMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsT0FBTyxVQUFVLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBN0JVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGZpbGVzaXplOiBBWEZpbGVTaXplRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlU2l6ZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdHRlci5cbiAgICpcbiAgICogQHJldHVybnMgc3RyaW5nIC0gVGhlIGZvcm1hdHRlciBuYW1lICdmaWxlc2l6ZSdcbiAgICovXG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2ZpbGVzaXplJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgZmlsZSBzaXplIHZhbHVlIHRvIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBUaGUgZm9ybWF0dGVkIGZpbGUgc2l6ZSBzdHJpbmcgKGUuZy4sICcxLjUgTUInKVxuICAgKi9cblxuICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuICcwIEJ5dGVzJztcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSByZXR1cm4gJ1Vua25vd24nO1xuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coc2l6ZSkgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCgoc2l6ZSAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpKSArICcgJyArIHNpemVzW2ldO1xuICB9XG59XG4iXX0=","/** Human-readable file size (binary units, e.g. `41.5 MB`). */\nexport function formatFileSizeBytes(bytes) {\n if (!Number.isFinite(bytes) || bytes < 0) {\n return '0 B';\n }\n if (bytes === 0) {\n return '0 B';\n }\n const k = 1024;\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), units.length - 1);\n const value = bytes / Math.pow(k, i);\n if (i === 0) {\n return `${bytes} B`;\n }\n const digits = value >= 100 ? 0 : value >= 10 ? 1 : 2;\n return `${value.toFixed(digits)} ${units[i]}`;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWZpbGUtc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2Zvcm1hdC1maWxlLXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDWixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIdW1hbi1yZWFkYWJsZSBmaWxlIHNpemUgKGJpbmFyeSB1bml0cywgZS5nLiBgNDEuNSBNQmApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbGVTaXplQnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGJ5dGVzKSB8fCBieXRlcyA8IDApIHtcbiAgICByZXR1cm4gJzAgQic7XG4gIH1cbiAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgcmV0dXJuICcwIEInO1xuICB9XG5cbiAgY29uc3QgayA9IDEwMjQ7XG4gIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XG4gIGNvbnN0IGkgPSBNYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKSwgdW5pdHMubGVuZ3RoIC0gMSk7XG4gIGNvbnN0IHZhbHVlID0gYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKTtcblxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBgJHtieXRlc30gQmA7XG4gIH1cblxuICBjb25zdCBkaWdpdHMgPSB2YWx1ZSA+PSAxMDAgPyAwIDogdmFsdWUgPj0gMTAgPyAxIDogMjtcbiAgcmV0dXJuIGAke3ZhbHVlLnRvRml4ZWQoZGlnaXRzKX0gJHt1bml0c1tpXX1gO1xufVxuIl19","/** Metadata key for catalog usage context. */\nexport const AX_FILE_TYPE_METADATA_PURPOSE = 'purpose';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9maWxlLXR5cGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxTQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlQ29weVJlc3VsdCB9IGZyb20gJy4vZmlsZS10eXBlLmNvcHknO1xuXG4vKiogTWV0YWRhdGEga2V5IGZvciBjYXRhbG9nIHVzYWdlIGNvbnRleHQuICovXG5leHBvcnQgY29uc3QgQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0UgPSAncHVycG9zZScgYXMgY29uc3Q7XG5cbi8qKiBDYXRhbG9nIG1ldGFkYXRhIGJhZzsgYHB1cnBvc2VgIGxpc3RzIHVzYWdlIGNvbnRleHRzIChlLmcuIGBbJ3N5c3RlbSddYCkuICovXG5leHBvcnQgdHlwZSBBWEZpbGVUeXBlTWV0YWRhdGEgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIHtcbiAgW0FYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFXT86IHN0cmluZ1tdO1xufTtcblxuLyoqIEZpbHRlciBjYXRhbG9nIGVudHJpZXMgYnkge0BsaW5rIEFYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlVHlwZVF1ZXJ5IHtcbiAgcHVycG9zZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG4vKiogR2VuZXJpYyBydWxlIGV4ZWN1dGVkIHZpYSB7QGxpbmsgQVhWYWxpZGF0aW9uU2VydmljZX0uICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVZhbGlkYXRpb25SdWxlIHtcbiAgcnVsZTogc3RyaW5nO1xuICBvcHRpb25zPzogQVhWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG59XG5cbi8qKlxuICogQ29tbW9uIGZpbGUgY29uc3RyYWludHMgc2hhcmVkIGJ5IHtAbGluayBBWEZpbGVUeXBlfSBhbmQge0BsaW5rIEFYRmlsZVR5cGVFeHRlbnNpb259LlxuICogRXh0ZW5zaW9uIGB2YWxpZGF0aW9uc2AgYXJlIHBhcnRpYWwgYW5kIG92ZXJyaWRlIHRoZSBwYXJlbnQgdHlwZSBmaWVsZC1ieS1maWVsZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIG1pbWVUeXBlcz86IHN0cmluZ1tdO1xuICBtaW5TaXplPzogbnVtYmVyO1xuICBtYXhTaXplPzogbnVtYmVyO1xuICBydWxlcz86IEFYRmlsZVZhbGlkYXRpb25SdWxlW107XG59XG5cbi8qKiBFeHRlbnNpb24gZW50cnk7IGB2YWxpZGF0aW9uc2Agb3ZlcnJpZGUgdGhlIHBhcmVudCB7QGxpbmsgQVhGaWxlVHlwZS52YWxpZGF0aW9uc30uICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVR5cGVFeHRlbnNpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2YWxpZGF0aW9ucz86IFBhcnRpYWw8QVhGaWxlVmFsaWRhdGlvbnM+O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgZmlsZSBjYXRlZ29yeSAoaW1hZ2UsIHZpZGVvLCDigKYpLlxuICpcbiAqIC0gV2l0aCB0eXBlIGB2YWxpZGF0aW9uc2Agc2V0OiBhbnkgZmlsZSBtYXRjaGluZyB0aG9zZSBydWxlcyBpcyBhbGxvd2VkOyBgZXh0ZW5zaW9uc2Agb25seSBvdmVycmlkZSB3aGVuIG1hdGNoZWQuXG4gKiAtIFdpdGggZW1wdHkgLyBvbWl0dGVkIGB2YWxpZGF0aW9uc2AgYW5kIGBleHRlbnNpb25zYCBsaXN0ZWQ6IG9ubHkgdGhvc2UgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVUeXBlPFxuICBUID0gUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoXG4gICAgICBjdHg6IHtcbiAgICAgICAgcmVhZEFzRGF0YVVybDogKGZpbGU6IEZpbGUgfCBCbG9iKSA9PiBQcm9taXNlPHN0cmluZz47XG4gICAgICAgIHBsYXRmb3JtSWQ6IG9iamVjdDtcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzOiB1bmtub3duW11cbiAgICApID0+IFByb21pc2U8dW5rbm93bj4gfCB1bmtub3duXG4gID4sXG4+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBBWEZpbGVUeXBlTWV0YWRhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhGaWxlVmFsaWRhdGlvbnM7XG4gIGV4dGVuc2lvbnM/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uW107XG4gIC8qKiBEeW5hbWljIHV0aWxpdHkgZnVuY3Rpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBmaWxlIHR5cGUuICovXG4gIHV0aWxpdGllcz86IFQ7XG4gIHBhc3RlPzogKCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgLyoqXG4gICAqIFByb2R1Y2UgY29weWFibGUgY29udGVudCBmcm9tIGEgcGF5bG9hZCAoZG9lcyBub3Qgd3JpdGUgdG8gdGhlIGNsaXBib2FyZCkuXG4gICAqIFJldHVybnMgYSBwbGFpbiBzdHJpbmcgb3Ige0BsaW5rIEFYRmlsZUNvcHlEYXRhfSB3aXRoIGB0ZXh0YCBhbmQgb3B0aW9uYWwgYG1ldGFgLlxuICAgKi9cbiAgY29weT86IChwYXlsb2FkOiB1bmtub3duKSA9PiBQcm9taXNlPEFYRmlsZUNvcHlSZXN1bHQ+IHwgQVhGaWxlQ29weVJlc3VsdDtcbn1cbiJdfQ==","import { AX_FILE_TYPE_METADATA_PURPOSE } from './file-type.models';\nexport { AX_FILE_TYPE_METADATA_PURPOSE } from './file-type.models';\nconst CONVERSATION_NAME_PREFIX = 'conversation-';\nexport function getFileTypePurposes(type) {\n const raw = type.metadata?.[AX_FILE_TYPE_METADATA_PURPOSE];\n if (Array.isArray(raw)) {\n const values = raw.filter((entry) => typeof entry === 'string' && entry.trim().length > 0);\n if (values.length) {\n return values;\n }\n }\n if (type.name.startsWith(CONVERSATION_NAME_PREFIX)) {\n return ['conversation'];\n }\n return ['system'];\n}\nexport function fileTypeMatchesPurpose(type, purpose) {\n const allowed = Array.isArray(purpose) ? purpose : [purpose];\n return getFileTypePurposes(type).some((entry) => allowed.includes(entry));\n}\nexport function filterFileTypesByPurpose(types, purpose) {\n if (!purpose) {\n return types;\n }\n return types.filter((type) => fileTypeMatchesPurpose(type, purpose));\n}\nexport function createFileTypeMetadata(purpose) {\n const values = (Array.isArray(purpose) ? purpose : [purpose]).filter((entry) => typeof entry === 'string' && entry.trim().length > 0);\n return { [AX_FILE_TYPE_METADATA_PURPOSE]: values };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQztBQUVqRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBZ0I7SUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDM0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBbUIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLE9BQTBCO0lBQ2pGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBbUIsRUFBRSxPQUEyQjtJQUN2RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBMEI7SUFDL0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ2xFLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNqRixDQUFDO0lBQ0YsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcbmltcG9ydCB7IEFYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuZXhwb3J0IHsgQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0UgfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBDT05WRVJTQVRJT05fTkFNRV9QUkVGSVggPSAnY29udmVyc2F0aW9uLSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlVHlwZVB1cnBvc2VzKHR5cGU6IEFYRmlsZVR5cGUpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJhdyA9IHR5cGUubWV0YWRhdGE/LltBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRV07XG4gIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSByYXcuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnICYmIGVudHJ5LnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGUubmFtZS5zdGFydHNXaXRoKENPTlZFUlNBVElPTl9OQU1FX1BSRUZJWCkpIHtcbiAgICByZXR1cm4gWydjb252ZXJzYXRpb24nXTtcbiAgfVxuICByZXR1cm4gWydzeXN0ZW0nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVUeXBlTWF0Y2hlc1B1cnBvc2UodHlwZTogQVhGaWxlVHlwZSwgcHVycG9zZTogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgY29uc3QgYWxsb3dlZCA9IEFycmF5LmlzQXJyYXkocHVycG9zZSkgPyBwdXJwb3NlIDogW3B1cnBvc2VdO1xuICByZXR1cm4gZ2V0RmlsZVR5cGVQdXJwb3Nlcyh0eXBlKS5zb21lKChlbnRyeSkgPT4gYWxsb3dlZC5pbmNsdWRlcyhlbnRyeSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRmlsZVR5cGVzQnlQdXJwb3NlKHR5cGVzOiBBWEZpbGVUeXBlW10sIHB1cnBvc2U/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IEFYRmlsZVR5cGVbXSB7XG4gIGlmICghcHVycG9zZSkge1xuICAgIHJldHVybiB0eXBlcztcbiAgfVxuICByZXR1cm4gdHlwZXMuZmlsdGVyKCh0eXBlKSA9PiBmaWxlVHlwZU1hdGNoZXNQdXJwb3NlKHR5cGUsIHB1cnBvc2UpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEocHVycG9zZTogc3RyaW5nIHwgc3RyaW5nW10pOiBOb25OdWxsYWJsZTxBWEZpbGVUeXBlWydtZXRhZGF0YSddPiB7XG4gIGNvbnN0IHZhbHVlcyA9IChBcnJheS5pc0FycmF5KHB1cnBvc2UpID8gcHVycG9zZSA6IFtwdXJwb3NlXSkuZmlsdGVyKFxuICAgIChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnICYmIGVudHJ5LnRyaW0oKS5sZW5ndGggPiAwLFxuICApO1xuICByZXR1cm4geyBbQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0VdOiB2YWx1ZXMgfTtcbn1cbiJdfQ==","/** Resolves clipboard/plain text from a copy result. */\nexport function resolveFileCopyText(result) {\n if (result == null) {\n return null;\n }\n if (typeof result === 'string') {\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n const trimmed = result.text?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLmNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0Esd0RBQXdEO0FBQ3hELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUF3QjtJQUMxRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTdHJ1Y3R1cmVkIGNvcHkgcGF5bG9hZCBmcm9tIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVDb3B5RGF0YSB7XG4gIC8qKiBQcmltYXJ5IHBsYWluLXRleHQgdmFsdWUgZm9yIGNsaXBib2FyZCBvciBwcmV2aWV3cy4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdHlwZS1zcGVjaWZpYyBtZXRhZGF0YSBmb3IgY29uc3VtZXJzIChVUkxzLCBuYW1lcywgbWltZSB0eXBlcywg4oCmKS4gKi9cbiAgbWV0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogUmV0dXJuIHZhbHVlIG9mIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9IOKAlCBzaG9ydGhhbmQgc3RyaW5nIG9yIHN0cnVjdHVyZWQgZGF0YS4gKi9cbmV4cG9ydCB0eXBlIEFYRmlsZUNvcHlSZXN1bHQgPSBzdHJpbmcgfCBBWEZpbGVDb3B5RGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKiBSZXNvbHZlcyBjbGlwYm9hcmQvcGxhaW4gdGV4dCBmcm9tIGEgY29weSByZXN1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVDb3B5VGV4dChyZXN1bHQ6IEFYRmlsZUNvcHlSZXN1bHQpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJlc3VsdC50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID4gMCA/IHRyaW1tZWQgOiBudWxsO1xuICB9XG4gIGNvbnN0IHRyaW1tZWQgPSByZXN1bHQudGV4dD8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCAmJiB0cmltbWVkLmxlbmd0aCA+IDAgPyB0cmltbWVkIDogbnVsbDtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/** Contributes {@link AXFileType} entries (multi provider). */\nexport class AXFileTypeInfoProvider {\n}\nexport const AX_FILE_TYPE_INFO_PROVIDER = new InjectionToken('AX_FILE_TYPE_INFO_PROVIDER');\nexport function provideFileTypeInfoProvider(provider) {\n return {\n provide: AX_FILE_TYPE_INFO_PROVIDER,\n useClass: provider,\n multi: true,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLWluZm8tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLWluZm8tcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFHL0QsK0RBQStEO0FBQy9ELE1BQU0sT0FBZ0Isc0JBQXNCO0NBRTNDO0FBRUQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQTJCLDRCQUE0QixDQUFDLENBQUM7QUFFckgsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFFBQXNDO0lBQ2hGLE9BQU87UUFDTCxPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5cbi8qKiBDb250cmlidXRlcyB7QGxpbmsgQVhGaWxlVHlwZX0gZW50cmllcyAobXVsdGkgcHJvdmlkZXIpLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIge1xuICBhYnN0cmFjdCBpdGVtcygpOiBQcm9taXNlPEFYRmlsZVR5cGVbXT47XG59XG5cbmV4cG9ydCBjb25zdCBBWF9GSUxFX1RZUEVfSU5GT19QUk9WSURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyW10+KCdBWF9GSUxFX1RZUEVfSU5GT19QUk9WSURFUicpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyKHByb3ZpZGVyOiBUeXBlPEFYRmlsZVR5cGVJbmZvUHJvdmlkZXI+KTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSLFxuICAgIHVzZUNsYXNzOiBwcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cbiJdfQ==","/** Merges type-level validations with extension overrides (extension wins per field). */\nexport function mergeFileValidations(base, override) {\n if (!override) {\n return { ...base };\n }\n return {\n mimeTypes: override.mimeTypes ?? base.mimeTypes,\n minSize: override.minSize ?? base.minSize,\n maxSize: override.maxSize ?? base.maxSize,\n rules: override.rules ?? base.rules,\n };\n}\n/** Resolved validations for a type + optional extension. */\nexport function resolveFileValidations(type, extension) {\n return mergeFileValidations(type.validations ?? {}, extension?.validations);\n}\n/** True when no mime/size/rules are defined on the type. */\nexport function isEmptyFileValidations(validations) {\n if (!validations) {\n return true;\n }\n return ((validations.mimeTypes?.length ?? 0) === 0 &&\n validations.minSize == null &&\n validations.maxSize == null &&\n (validations.rules?.length ?? 0) === 0);\n}\n/**\n * Extension-only mode: empty type `validations` and a non-empty `extensions` list.\n * Files must match a listed extension; rules come from that extension entry.\n */\nexport function isExtensionsOnlyType(type) {\n return isEmptyFileValidations(type.validations) && (type.extensions?.length ?? 0) > 0;\n}\n/** File extension from name (lowercase, no dot). */\nexport function getFileExtension(fileName) {\n const parts = fileName.trim().split('.');\n return parts.length > 1 ? (parts.pop()?.toLowerCase() ?? '') : '';\n}\n/** Matching extension entry for a file within a type, if any. */\nexport function findFileTypeExtension(file, type) {\n const ext = getFileExtension(file.name);\n if (!ext || !type.extensions?.length) {\n return undefined;\n }\n return type.extensions.find((e) => e.name.toLowerCase() === ext);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1lcmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXJnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSx5RkFBeUY7QUFDekYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUF1QixFQUN2QixRQUFxQztJQUVyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQy9DLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLFNBQStCO0lBQ3RGLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQStCO0lBQ3BFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLENBQ0wsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSTtRQUMzQixXQUFXLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDM0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3ZDLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQWdCO0lBQ25ELE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRSxDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUFVLEVBQUUsSUFBZ0I7SUFDaEUsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24sIEFYRmlsZVZhbGlkYXRpb25zIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuLyoqIE1lcmdlcyB0eXBlLWxldmVsIHZhbGlkYXRpb25zIHdpdGggZXh0ZW5zaW9uIG92ZXJyaWRlcyAoZXh0ZW5zaW9uIHdpbnMgcGVyIGZpZWxkKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUZpbGVWYWxpZGF0aW9ucyhcbiAgYmFzZTogQVhGaWxlVmFsaWRhdGlvbnMsXG4gIG92ZXJyaWRlPzogUGFydGlhbDxBWEZpbGVWYWxpZGF0aW9ucz4sXG4pOiBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIGlmICghb3ZlcnJpZGUpIHtcbiAgICByZXR1cm4geyAuLi5iYXNlIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1pbWVUeXBlczogb3ZlcnJpZGUubWltZVR5cGVzID8/IGJhc2UubWltZVR5cGVzLFxuICAgIG1pblNpemU6IG92ZXJyaWRlLm1pblNpemUgPz8gYmFzZS5taW5TaXplLFxuICAgIG1heFNpemU6IG92ZXJyaWRlLm1heFNpemUgPz8gYmFzZS5tYXhTaXplLFxuICAgIHJ1bGVzOiBvdmVycmlkZS5ydWxlcyA/PyBiYXNlLnJ1bGVzLFxuICB9O1xufVxuXG4vKiogUmVzb2x2ZWQgdmFsaWRhdGlvbnMgZm9yIGEgdHlwZSArIG9wdGlvbmFsIGV4dGVuc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVZhbGlkYXRpb25zKHR5cGU6IEFYRmlsZVR5cGUsIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24pOiBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIHJldHVybiBtZXJnZUZpbGVWYWxpZGF0aW9ucyh0eXBlLnZhbGlkYXRpb25zID8/IHt9LCBleHRlbnNpb24/LnZhbGlkYXRpb25zKTtcbn1cblxuLyoqIFRydWUgd2hlbiBubyBtaW1lL3NpemUvcnVsZXMgYXJlIGRlZmluZWQgb24gdGhlIHR5cGUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eUZpbGVWYWxpZGF0aW9ucyh2YWxpZGF0aW9ucz86IEFYRmlsZVZhbGlkYXRpb25zKTogYm9vbGVhbiB7XG4gIGlmICghdmFsaWRhdGlvbnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gKFxuICAgICh2YWxpZGF0aW9ucy5taW1lVHlwZXM/Lmxlbmd0aCA/PyAwKSA9PT0gMCAmJlxuICAgIHZhbGlkYXRpb25zLm1pblNpemUgPT0gbnVsbCAmJlxuICAgIHZhbGlkYXRpb25zLm1heFNpemUgPT0gbnVsbCAmJlxuICAgICh2YWxpZGF0aW9ucy5ydWxlcz8ubGVuZ3RoID8/IDApID09PSAwXG4gICk7XG59XG5cbi8qKlxuICogRXh0ZW5zaW9uLW9ubHkgbW9kZTogZW1wdHkgdHlwZSBgdmFsaWRhdGlvbnNgIGFuZCBhIG5vbi1lbXB0eSBgZXh0ZW5zaW9uc2AgbGlzdC5cbiAqIEZpbGVzIG11c3QgbWF0Y2ggYSBsaXN0ZWQgZXh0ZW5zaW9uOyBydWxlcyBjb21lIGZyb20gdGhhdCBleHRlbnNpb24gZW50cnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVuc2lvbnNPbmx5VHlwZSh0eXBlOiBBWEZpbGVUeXBlKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0VtcHR5RmlsZVZhbGlkYXRpb25zKHR5cGUudmFsaWRhdGlvbnMpICYmICh0eXBlLmV4dGVuc2lvbnM/Lmxlbmd0aCA/PyAwKSA+IDA7XG59XG5cbi8qKiBGaWxlIGV4dGVuc2lvbiBmcm9tIG5hbWUgKGxvd2VyY2FzZSwgbm8gZG90KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IGZpbGVOYW1lLnRyaW0oKS5zcGxpdCgnLicpO1xuICByZXR1cm4gcGFydHMubGVuZ3RoID4gMSA/IChwYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKSA/PyAnJykgOiAnJztcbn1cblxuLyoqIE1hdGNoaW5nIGV4dGVuc2lvbiBlbnRyeSBmb3IgYSBmaWxlIHdpdGhpbiBhIHR5cGUsIGlmIGFueS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRmlsZVR5cGVFeHRlbnNpb24oZmlsZTogRmlsZSwgdHlwZTogQVhGaWxlVHlwZSk6IEFYRmlsZVR5cGVFeHRlbnNpb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBleHQgPSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGUubmFtZSk7XG4gIGlmICghZXh0IHx8ICF0eXBlLmV4dGVuc2lvbnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHR5cGUuZXh0ZW5zaW9ucy5maW5kKChlKSA9PiBlLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gZXh0KTtcbn1cbiJdfQ==","import { findFileTypeExtension, getFileExtension, isExtensionsOnlyType, resolveFileValidations, } from './file-type.merge';\n/** Maps {@link AXFileValidations} to executable validation entries. */\nexport function fileValidationsToRules(validations) {\n const rules = [];\n if (validations.mimeTypes?.length) {\n rules.push({\n rule: 'fileMimeType',\n options: { allowed: validations.mimeTypes },\n });\n }\n if (validations.minSize != null) {\n rules.push({\n rule: 'fileMinSize',\n options: { minSize: validations.minSize },\n });\n }\n if (validations.maxSize != null) {\n rules.push({\n rule: 'fileMaxSize',\n options: { maxSize: validations.maxSize },\n });\n }\n if (validations.rules?.length) {\n rules.push(...validations.rules);\n }\n return rules;\n}\n/** Failed validation results; empty array means the file is valid. */\nexport async function validateFileWithValidations(validation, file, validations) {\n const entries = fileValidationsToRules(validations);\n const errors = [];\n for (const { rule, options } of entries) {\n const result = await validation.validate(rule, file, options);\n if (!result.result) {\n errors.push(result);\n }\n }\n return errors;\n}\n/** Validates a file against a type; extension rules override when the file name matches. */\nexport async function validateFileAgainstType(validation, file, type, extension) {\n const matchedExtension = extension ?? findFileTypeExtension(file, type);\n if (isExtensionsOnlyType(type) && !matchedExtension) {\n const ext = getFileExtension(file.name);\n return [\n {\n rule: 'fileExtension',\n result: false,\n message: ext ? `Extension \".${ext}\" is not allowed.` : 'File must have an allowed extension.',\n value: ext,\n },\n ];\n }\n const resolved = resolveFileValidations(type, matchedExtension);\n return validateFileWithValidations(validation, file, resolved);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnZhbGlkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS52YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFHM0IsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxXQUE4QjtJQUNuRSxNQUFNLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBRXpDLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGNBQWM7WUFDcEIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUU7U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsVUFBK0IsRUFDL0IsSUFBVSxFQUNWLFdBQThCO0lBRTlCLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sTUFBTSxHQUE2QixFQUFFLENBQUM7SUFFNUMsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsVUFBK0IsRUFDL0IsSUFBVSxFQUNWLElBQWdCLEVBQ2hCLFNBQStCO0lBRS9CLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxJQUFJLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV4RSxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTztZQUNMO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztnQkFDN0YsS0FBSyxFQUFFLEdBQUc7YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDaEUsT0FBTywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFZhbGlkYXRpb25TZXJ2aWNlLCB0eXBlIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQge1xuICBmaW5kRmlsZVR5cGVFeHRlbnNpb24sXG4gIGdldEZpbGVFeHRlbnNpb24sXG4gIGlzRXh0ZW5zaW9uc09ubHlUeXBlLFxuICByZXNvbHZlRmlsZVZhbGlkYXRpb25zLFxufSBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24sIEFYRmlsZVZhbGlkYXRpb25SdWxlLCBBWEZpbGVWYWxpZGF0aW9ucyB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5cbi8qKiBNYXBzIHtAbGluayBBWEZpbGVWYWxpZGF0aW9uc30gdG8gZXhlY3V0YWJsZSB2YWxpZGF0aW9uIGVudHJpZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsZVZhbGlkYXRpb25zVG9SdWxlcyh2YWxpZGF0aW9uczogQVhGaWxlVmFsaWRhdGlvbnMpOiBBWEZpbGVWYWxpZGF0aW9uUnVsZVtdIHtcbiAgY29uc3QgcnVsZXM6IEFYRmlsZVZhbGlkYXRpb25SdWxlW10gPSBbXTtcblxuICBpZiAodmFsaWRhdGlvbnMubWltZVR5cGVzPy5sZW5ndGgpIHtcbiAgICBydWxlcy5wdXNoKHtcbiAgICAgIHJ1bGU6ICdmaWxlTWltZVR5cGUnLFxuICAgICAgb3B0aW9uczogeyBhbGxvd2VkOiB2YWxpZGF0aW9ucy5taW1lVHlwZXMgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9ucy5taW5TaXplICE9IG51bGwpIHtcbiAgICBydWxlcy5wdXNoKHtcbiAgICAgIHJ1bGU6ICdmaWxlTWluU2l6ZScsXG4gICAgICBvcHRpb25zOiB7IG1pblNpemU6IHZhbGlkYXRpb25zLm1pblNpemUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9ucy5tYXhTaXplICE9IG51bGwpIHtcbiAgICBydWxlcy5wdXNoKHtcbiAgICAgIHJ1bGU6ICdmaWxlTWF4U2l6ZScsXG4gICAgICBvcHRpb25zOiB7IG1heFNpemU6IHZhbGlkYXRpb25zLm1heFNpemUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9ucy5ydWxlcz8ubGVuZ3RoKSB7XG4gICAgcnVsZXMucHVzaCguLi52YWxpZGF0aW9ucy5ydWxlcyk7XG4gIH1cblxuICByZXR1cm4gcnVsZXM7XG59XG5cbi8qKiBGYWlsZWQgdmFsaWRhdGlvbiByZXN1bHRzOyBlbXB0eSBhcnJheSBtZWFucyB0aGUgZmlsZSBpcyB2YWxpZC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUZpbGVXaXRoVmFsaWRhdGlvbnMoXG4gIHZhbGlkYXRpb246IEFYVmFsaWRhdGlvblNlcnZpY2UsXG4gIGZpbGU6IEZpbGUsXG4gIHZhbGlkYXRpb25zOiBBWEZpbGVWYWxpZGF0aW9ucyxcbik6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdPiB7XG4gIGNvbnN0IGVudHJpZXMgPSBmaWxlVmFsaWRhdGlvbnNUb1J1bGVzKHZhbGlkYXRpb25zKTtcbiAgY29uc3QgZXJyb3JzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHsgcnVsZSwgb3B0aW9ucyB9IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2YWxpZGF0aW9uLnZhbGlkYXRlKHJ1bGUsIGZpbGUsIG9wdGlvbnMpO1xuICAgIGlmICghcmVzdWx0LnJlc3VsdCkge1xuICAgICAgZXJyb3JzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKiogVmFsaWRhdGVzIGEgZmlsZSBhZ2FpbnN0IGEgdHlwZTsgZXh0ZW5zaW9uIHJ1bGVzIG92ZXJyaWRlIHdoZW4gdGhlIGZpbGUgbmFtZSBtYXRjaGVzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRmlsZUFnYWluc3RUeXBlKFxuICB2YWxpZGF0aW9uOiBBWFZhbGlkYXRpb25TZXJ2aWNlLFxuICBmaWxlOiBGaWxlLFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBleHRlbnNpb24/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uLFxuKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgY29uc3QgbWF0Y2hlZEV4dGVuc2lvbiA9IGV4dGVuc2lvbiA/PyBmaW5kRmlsZVR5cGVFeHRlbnNpb24oZmlsZSwgdHlwZSk7XG5cbiAgaWYgKGlzRXh0ZW5zaW9uc09ubHlUeXBlKHR5cGUpICYmICFtYXRjaGVkRXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgZXh0ID0gZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGU6ICdmaWxlRXh0ZW5zaW9uJyxcbiAgICAgICAgcmVzdWx0OiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogZXh0ID8gYEV4dGVuc2lvbiBcIi4ke2V4dH1cIiBpcyBub3QgYWxsb3dlZC5gIDogJ0ZpbGUgbXVzdCBoYXZlIGFuIGFsbG93ZWQgZXh0ZW5zaW9uLicsXG4gICAgICAgIHZhbHVlOiBleHQsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVGaWxlVmFsaWRhdGlvbnModHlwZSwgbWF0Y2hlZEV4dGVuc2lvbik7XG4gIHJldHVybiB2YWxpZGF0ZUZpbGVXaXRoVmFsaWRhdGlvbnModmFsaWRhdGlvbiwgZmlsZSwgcmVzb2x2ZWQpO1xufVxuIl19","import { AXValidationService } from '@acorex/core/validation';\nimport { Injectable, inject } from '@angular/core';\nimport { AX_FILE_TYPE_INFO_PROVIDER } from './file-type-info-provider';\nimport { findFileTypeExtension } from './file-type.merge';\nimport { filterFileTypesByPurpose } from './file-type.metadata';\nimport { validateFileAgainstType } from './file-type.validate';\nimport * as i0 from \"@angular/core\";\nexport class AXFileTypeRegistryService {\n constructor() {\n this.validation = inject(AXValidationService);\n this.providers = inject(AX_FILE_TYPE_INFO_PROVIDER, { optional: true }) ?? [];\n this.registeredTypes = [];\n this.cache = null;\n }\n /** Registers or replaces catalog entries (e.g. from feature bootstrap). */\n registerTypes(types) {\n for (const type of types) {\n const index = this.registeredTypes.findIndex((t) => t.name === type.name);\n if (index >= 0) {\n this.registeredTypes[index] = type;\n }\n else {\n this.registeredTypes.push(type);\n }\n }\n this.invalidateCache();\n }\n invalidateCache() {\n this.cache = null;\n }\n async resolveTypes() {\n if (this.cache) {\n return this.cache;\n }\n const byName = new Map();\n if (this.providers.length) {\n const batches = await Promise.all(this.providers.map((p) => p.items()));\n for (const batch of batches) {\n for (const type of batch) {\n if (!byName.has(type.name)) {\n byName.set(type.name, type);\n }\n }\n }\n }\n for (const type of this.registeredTypes) {\n byName.set(type.name, type);\n }\n this.cache = [...byName.values()];\n return this.cache;\n }\n async getTypes(query) {\n const types = await this.resolveTypes();\n return filterFileTypesByPurpose(types, query?.purpose);\n }\n async get(name) {\n const types = await this.resolveTypes();\n return types.find((t) => t.name === name);\n }\n async accept(typeNames) {\n const names = typeNames ? (Array.isArray(typeNames) ? typeNames : [typeNames]) : undefined;\n const types = await this.resolveTypes();\n const selected = names?.length ? types.filter((t) => names.includes(t.name)) : types;\n if (names?.length && selected.length === 0) {\n return '';\n }\n const parts = new Set();\n for (const type of selected) {\n type.validations?.mimeTypes?.forEach((m) => parts.add(m));\n type.extensions?.forEach((ext) => {\n ext.validations?.mimeTypes?.forEach((m) => parts.add(m));\n parts.add(`.${ext.name.replace(/^\\./, '')}`);\n });\n }\n return [...parts].join(',');\n }\n async matchType(file) {\n const types = await this.resolveTypes();\n const mime = file.type.trim().toLowerCase();\n return types.find((type) => {\n const patterns = [\n ...(type.validations?.mimeTypes ?? []),\n ...(type.extensions?.flatMap((e) => e.validations?.mimeTypes ?? []) ?? []),\n ];\n if (!patterns.length) {\n return false;\n }\n return patterns.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n });\n }\n async validate(file, typeName) {\n const type = await this.get(typeName);\n if (!type) {\n return [\n {\n rule: 'fileType',\n result: false,\n message: `Unknown file type: ${typeName}`,\n value: typeName,\n },\n ];\n }\n const extension = findFileTypeExtension(file, type);\n return validateFileAgainstType(this.validation, file, type, extension);\n }\n async validateAgainstTypes(file, typeNames) {\n const names = Array.isArray(typeNames) ? typeNames : [typeNames];\n let lastErrors = [];\n for (const name of names) {\n const errors = await this.validate(file, name);\n if (errors.length === 0) {\n return [];\n }\n lastErrors = errors;\n }\n return lastErrors;\n }\n async validateMany(files, typeNames) {\n const accepted = [];\n const rejected = [];\n for (const file of files) {\n const errors = await this.validateAgainstTypes(file, typeNames);\n if (errors.length === 0) {\n accepted.push(file);\n }\n else {\n rejected.push({ file, errors });\n }\n }\n return { accepted, rejected };\n }\n matchesMime(mime, pattern) {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n return mime === pattern;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRegistryService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRy9ELE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXpDLGNBQVMsR0FBRyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekUsb0JBQWUsR0FBaUIsRUFBRSxDQUFDO1FBRTVDLFVBQUssR0FBd0IsSUFBSSxDQUFDO0tBMEwzQztJQXhMQywyRUFBMkU7SUFFM0UsYUFBYSxDQUFDLEtBQW1CO1FBQy9CLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTFFLElBQUksS0FBSyxJ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SyxLQUFLLElBQUksT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLElBQUksUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFFRCxPQUFPLElBQUksS0FBSyxPQUFPLENBQUM7SUFDMUIsQ0FBQzs4R0FoTVUseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FEWixNQUFNOzsyRkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcblxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSIH0gZnJvbSAnLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5cbmltcG9ydCB7IGZpbmRGaWxlVHlwZUV4dGVuc2lvbiB9IGZyb20gJy4vZmlsZS10eXBlLm1lcmdlJztcblxuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlLCBBWEZpbGVUeXBlUXVlcnkgfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5pbXBvcnQgeyBmaWx0ZXJGaWxlVHlwZXNCeVB1cnBvc2UgfSBmcm9tICcuL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5cbmltcG9ydCB7IHZhbGlkYXRlRmlsZUFnYWluc3RUeXBlIH0gZnJvbSAnLi9maWxlLXR5cGUudmFsaWRhdGUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkYXRpb24gPSBpbmplY3QoQVhWYWxpZGF0aW9uU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcnMgPSBpbmplY3QoQVhfRklMRV9UWVBFX0lORk9fUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RlcmVkVHlwZXM6IEFYRmlsZVR5cGVbXSA9IFtdO1xuXG4gIHByaXZhdGUgY2FjaGU6IEFYRmlsZVR5cGVbXSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBSZWdpc3RlcnMgb3IgcmVwbGFjZXMgY2F0YWxvZyBlbnRyaWVzIChlLmcuIGZyb20gZmVhdHVyZSBib290c3RyYXApLiAqL1xuXG4gIHJlZ2lzdGVyVHlwZXModHlwZXM6IEFYRmlsZVR5cGVbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlZ2lzdGVyZWRUeXBlcy5maW5kSW5kZXgoKHQpID0+IHQubmFtZSA9PT0gdHlwZS5uYW1lKTtcblxuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlcmVkVHlwZXNbaW5kZXhdID0gdHlwZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFR5cGVzLnB1c2godHlwZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbnZhbGlkYXRlQ2FjaGUoKTtcbiAgfVxuXG4gIGludmFsaWRhdGVDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVR5cGVzKCk6IFByb21pc2U8QVhGaWxlVHlwZVtdPiB7XG4gICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBBWEZpbGVUeXBlPigpO1xuXG4gICAgaWYgKHRoaXMucHJvdmlkZXJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgYmF0Y2hlcyA9IGF3YWl0IFByb21pc2UuYWxsKHRoaXMucHJvdmlkZXJzLm1hcCgocCkgPT4gcC5pdGVtcygpKSk7XG5cbiAgICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgYmF0Y2gpIHtcbiAgICAgICAgICBpZiAoIWJ5TmFtZS5oYXModHlwZS5uYW1lKSkge1xuICAgICAgICAgICAgYnlOYW1lLnNldCh0eXBlLm5hbWUsIHR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0aGlzLnJlZ2lzdGVyZWRUeXBlcykge1xuICAgICAgYnlOYW1lLnNldCh0eXBlLm5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMuY2FjaGUgPSBbLi4uYnlOYW1lLnZhbHVlcygpXTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlO1xuICB9XG5cbiAgYXN5bmMgZ2V0VHlwZXMocXVlcnk/OiBBWEZpbGVUeXBlUXVlcnkpOiBQcm9taXNlPEFYRmlsZVR5cGVbXT4ge1xuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgdGhpcy5yZXNvbHZlVHlwZXMoKTtcbiAgICByZXR1cm4gZmlsdGVyRmlsZVR5cGVzQnlQdXJwb3NlKHR5cGVzLCBxdWVyeT8ucHVycG9zZSk7XG4gIH1cblxuICBhc3luYyBnZXQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWEZpbGVUeXBlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdHlwZXMgPSBhd2FpdCB0aGlzLnJlc29sdmVUeXBlcygpO1xuXG4gICAgcmV0dXJuIHR5cGVzLmZpbmQoKHQpID0+IHQubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICBhc3luYyBhY2NlcHQodHlwZU5hbWVzPzogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IG5hbWVzID0gdHlwZU5hbWVzID8gKEFycmF5LmlzQXJyYXkodHlwZU5hbWVzKSA/IHR5cGVOYW1lcyA6IFt0eXBlTmFtZXNdKSA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgdGhpcy5yZXNvbHZlVHlwZXMoKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkID0gbmFtZXM/Lmxlbmd0aCA/IHR5cGVzLmZpbHRlcigodCkgPT4gbmFtZXMuaW5jbHVkZXModC5uYW1lKSkgOiB0eXBlcztcblxuICAgIGlmIChuYW1lcz8ubGVuZ3RoICYmIHNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgIHR5cGUudmFsaWRhdGlvbnM/Lm1pbWVUeXBlcz8uZm9yRWFjaCgobSkgPT4gcGFydHMuYWRkKG0pKTtcblxuICAgICAgdHlwZS5leHRlbnNpb25zPy5mb3JFYWNoKChleHQpID0+IHtcbiAgICAgICAgZXh0LnZhbGlkYXRpb25zPy5taW1lVHlwZXM/LmZvckVhY2goKG0pID0+IHBhcnRzLmFkZChtKSk7XG5cbiAgICAgICAgcGFydHMuYWRkKGAuJHtleHQubmFtZS5yZXBsYWNlKC9eXFwuLywgJycpfWApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wYXJ0c10uam9pbignLCcpO1xuICB9XG5cbiAgYXN5bmMgbWF0Y2hUeXBlKGZpbGU6IEZpbGUpOiBQcm9taXNlPEFYRmlsZVR5cGUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMucmVzb2x2ZVR5cGVzKCk7XG5cbiAgICBjb25zdCBtaW1lID0gZmlsZS50eXBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIHR5cGVzLmZpbmQoKHR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHBhdHRlcm5zID0gW1xuICAgICAgICAuLi4odHlwZS52YWxpZGF0aW9ucz8ubWltZVR5cGVzID8/IFtdKSxcblxuICAgICAgICAuLi4odHlwZS5leHRlbnNpb25zPy5mbGF0TWFwKChlKSA9PiBlLnZhbGlkYXRpb25zPy5taW1lVHlwZXMgPz8gW10pID8/IFtdKSxcbiAgICAgIF07XG5cbiAgICAgIGlmICghcGF0dGVybnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+IHRoaXMubWF0Y2hlc01pbWUobWltZSwgcGF0dGVybi50cmltKCkudG9Mb3dlckNhc2UoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoZmlsZTogRmlsZSwgdHlwZU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0KHR5cGVOYW1lKTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGU6ICdmaWxlVHlwZScsXG5cbiAgICAgICAgICByZXN1bHQ6IGZhbHNlLFxuXG4gICAgICAgICAgbWVzc2FnZTogYFVua25vd24gZmlsZSB0eXBlOiAke3R5cGVOYW1lfWAsXG5cbiAgICAgICAgICB2YWx1ZTogdHlwZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlLCB0eXBlKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSh0aGlzLnZhbGlkYXRpb24sIGZpbGUsIHR5cGUsIGV4dGVuc2lvbik7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZUFnYWluc3RUeXBlcyhcbiAgICBmaWxlOiBGaWxlLFxuXG4gICAgdHlwZU5hbWVzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgICBjb25zdCBuYW1lcyA9IEFycmF5LmlzQXJyYXkodHlwZU5hbWVzKSA/IHR5cGVOYW1lcyA6IFt0eXBlTmFtZXNdO1xuXG4gICAgbGV0IGxhc3RFcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKGZpbGUsIG5hbWUpO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGxhc3RFcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFcnJvcnM7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZU1hbnkoXG4gICAgZmlsZXM6IEZpbGVbXSxcblxuICAgIHR5cGVOYW1lczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICk6IFByb21pc2U8eyBhY2NlcHRlZDogRmlsZVtdOyByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W10gfT4ge1xuICAgIGNvbnN0IGFjY2VwdGVkOiBGaWxlW10gPSBbXTtcblxuICAgIGNvbnN0IHJlamVjdGVkOiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlQWdhaW5zdFR5cGVzKGZpbGUsIHR5cGVOYW1lcyk7XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGFjY2VwdGVkLnB1c2goZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3RlZC5wdXNoKHsgZmlsZSwgZXJyb3JzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGFjY2VwdGVkLCByZWplY3RlZCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaGVzTWltZShtaW1lOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuID09PSAnKi8qJyB8fCBwYXR0ZXJuID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHBhdHRlcm4uc2xpY2UoMCwgLTIpO1xuXG4gICAgICByZXR1cm4gbWltZS5zdGFydHNXaXRoKGAke2NhdGVnb3J5fS9gKSB8fCAobWltZSA9PT0gJycgJiYgY2F0ZWdvcnkgPT09ICdhcHBsaWNhdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiBtaW1lID09PSBwYXR0ZXJuO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_AUDIO_FILE_TYPE = {\n name: 'audio',\n metadata: createFileTypeMetadata('system'),\n title: 'Audio',\n icon: 'fa-light fa-music ax-text-amber-500',\n validations: {\n mimeTypes: ['audio/*'],\n minSize: 1,\n maxSize: 50 * MB,\n },\n extensions: [\n { name: 'mp3', title: 'MP3' },\n { name: 'wav', title: 'WAV', validations: { maxSize: 30 * MB } },\n { name: 'ogg', title: 'OGG' },\n { name: 'm4a', title: 'M4A' },\n ],\n};\nexport class AXAudioFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_AUDIO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9hdWRpby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUscUNBQXFDO0lBQzNDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRTtLQUNqQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDaEUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7S0FDOUI7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHsgY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuLi9maWxlLXR5cGUubW9kZWxzJztcblxuY29uc3QgTUIgPSAxMDI0ICogMTAyNDtcblxuZXhwb3J0IGNvbnN0IEFYX0FVRElPX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ2F1ZGlvJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ0F1ZGlvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW11c2ljIGF4LXRleHQtYW1iZXItNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXVkaW8vKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogNTAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wMycsIHRpdGxlOiAnTVAzJyB9LFxuICAgIHsgbmFtZTogJ3dhdicsIHRpdGxlOiAnV0FWJywgdmFsaWRhdGlvbnM6IHsgbWF4U2l6ZTogMzAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gICAgeyBuYW1lOiAnbTRhJywgdGl0bGU6ICdNNEEnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhBdWRpb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9BVURJT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\n/** Extension-only: no type `validations` — only listed extensions are allowed. */\nexport const AX_DOCUMENT_FILE_TYPE = {\n name: 'document',\n metadata: createFileTypeMetadata('system'),\n title: 'Document',\n icon: 'fa-light fa-file-lines ax-text-red-500',\n extensions: [{ name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 5 * MB } }],\n};\nexport class AXDocumentFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_DOCUMENT_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9kb2N1bWVudC1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWU7SUFDL0MsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztJQUMxQyxLQUFLLEVBQUUsVUFBVTtJQUNqQixJQUFJLEVBQUUsd0NBQXdDO0lBQzlDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0NBQzlHLENBQUM7QUFHRixNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBQ3BFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FIVSwwQkFBMEI7a0hBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG4vKiogRXh0ZW5zaW9uLW9ubHk6IG5vIHR5cGUgYHZhbGlkYXRpb25zYCDigJQgb25seSBsaXN0ZWQgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC4gKi9cbmV4cG9ydCBjb25zdCBBWF9ET0NVTUVOVF9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdkb2N1bWVudCcsXG4gIG1ldGFkYXRhOiBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhKCdzeXN0ZW0nKSxcbiAgdGl0bGU6ICdEb2N1bWVudCcsXG4gIGljb246ICdmYS1saWdodCBmYS1maWxlLWxpbmVzIGF4LXRleHQtcmVkLTUwMCcsXG4gIGV4dGVuc2lvbnM6IFt7IG5hbWU6ICdwZGYnLCB0aXRsZTogJ1BERicsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9wZGYnXSwgbWF4U2l6ZTogNSAqIE1CIH0gfV0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9ET0NVTUVOVF9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_FILE_FILE_TYPE = {\n name: 'file',\n metadata: createFileTypeMetadata('system'),\n title: 'File',\n icon: 'fa-light fa-file ax-text-neutral-500',\n validations: {\n mimeTypes: ['application/*', 'text/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 25 * MB } },\n { name: 'doc', title: 'Word' },\n { name: 'docx', title: 'Word' },\n { name: 'txt', title: 'Text', validations: { mimeTypes: ['text/plain'], maxSize: 5 * MB } },\n { name: 'zip', title: 'ZIP', validations: { maxSize: 50 * MB } },\n ],\n};\nexport class AXFileFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_FILE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1maWxlLXR5cGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRy9ELE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDM0MsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsSUFBSSxFQUFFLHNDQUFzQztJQUM1QyxXQUFXLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFO0tBQ2xCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ2hHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQy9CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDM0YsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtLQUNqRTtDQUNGLENBQUM7QUFHRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsc0JBQXNCO0lBQ2hFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs4R0FIVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfRklMRV9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdmaWxlJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ0ZpbGUnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZSBheC10ZXh0LW5ldXRyYWwtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vKicsICd0ZXh0LyonXSxcbiAgICBtaW5TaXplOiAxLFxuICAgIG1heFNpemU6IDEwMCAqIE1CLFxuICB9LFxuICBleHRlbnNpb25zOiBbXG4gICAgeyBuYW1lOiAncGRmJywgdGl0bGU6ICdQREYnLCB2YWxpZGF0aW9uczogeyBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vcGRmJ10sIG1heFNpemU6IDI1ICogTUIgfSB9LFxuICAgIHsgbmFtZTogJ2RvYycsIHRpdGxlOiAnV29yZCcgfSxcbiAgICB7IG5hbWU6ICdkb2N4JywgdGl0bGU6ICdXb3JkJyB9LFxuICAgIHsgbmFtZTogJ3R4dCcsIHRpdGxlOiAnVGV4dCcsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWyd0ZXh0L3BsYWluJ10sIG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnemlwJywgdGl0bGU6ICdaSVAnLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiA1MCAqIE1CIH0gfSxcbiAgXSxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIGV4dGVuZHMgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB7XG4gIGl0ZW1zKCk6IFByb21pc2U8QVhGaWxlVHlwZVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbQVhfRklMRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_IMAGE_FILE_TYPE = {\n name: 'image',\n metadata: createFileTypeMetadata('system'),\n title: 'Image',\n icon: 'fa-light fa-image ax-text-purple-500',\n validations: {\n mimeTypes: ['image/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'jpg', title: 'JPEG' },\n { name: 'jpeg', title: 'JPEG', validations: { maxSize: 5 * MB } },\n { name: 'png', title: 'PNG' },\n { name: 'gif', title: 'GIF' },\n { name: 'webp', title: 'WebP' },\n { name: 'svg', title: 'SVG', validations: { maxSize: 2 * MB } },\n ],\n};\nexport class AXImageFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_IMAGE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9pbWFnZS1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDakUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDL0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtLQUNoRTtDQUNGLENBQUM7QUFHRixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ2pFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FIVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfSU1BR0VfRklMRV9UWVBFOiBBWEZpbGVUeXBlID0ge1xuICBuYW1lOiAnaW1hZ2UnLFxuICBtZXRhZGF0YTogY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSgnc3lzdGVtJyksXG4gIHRpdGxlOiAnSW1hZ2UnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtaW1hZ2UgYXgtdGV4dC1wdXJwbGUtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnaW1hZ2UvKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogMTAwICogTUIsXG4gIH0sXG4gIGV4dGVuc2lvbnM6IFtcbiAgICB7IG5hbWU6ICdqcGcnLCB0aXRsZTogJ0pQRUcnIH0sXG4gICAgeyBuYW1lOiAnanBlZycsIHRpdGxlOiAnSlBFRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAncG5nJywgdGl0bGU6ICdQTkcnIH0sXG4gICAgeyBuYW1lOiAnZ2lmJywgdGl0bGU6ICdHSUYnIH0sXG4gICAgeyBuYW1lOiAnd2VicCcsIHRpdGxlOiAnV2ViUCcgfSxcbiAgICB7IG5hbWU6ICdzdmcnLCB0aXRsZTogJ1NWRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDIgKiBNQiB9IH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhJbWFnZUZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9JTUFHRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_VIDEO_FILE_TYPE = {\n name: 'video',\n metadata: createFileTypeMetadata('system'),\n title: 'Video',\n icon: 'fa-light fa-video ax-text-blue-500',\n validations: {\n mimeTypes: ['video/*'],\n minSize: 1,\n maxSize: 500 * MB,\n },\n extensions: [\n { name: 'mp4', title: 'MP4' },\n { name: 'webm', title: 'WebM', validations: { maxSize: 200 * MB } },\n { name: 'ogg', title: 'OGG' },\n ],\n};\nexport class AXVideoFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_VIDEO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy92aWRlby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsb0NBQW9DO0lBQzFDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDbkUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7S0FDOUI7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHsgY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuLi9maWxlLXR5cGUubW9kZWxzJztcblxuY29uc3QgTUIgPSAxMDI0ICogMTAyNDtcblxuZXhwb3J0IGNvbnN0IEFYX1ZJREVPX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ3ZpZGVvJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ1ZpZGVvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXZpZGVvIGF4LXRleHQtYmx1ZS01MDAnLFxuICB2YWxpZGF0aW9uczoge1xuICAgIG1pbWVUeXBlczogWyd2aWRlby8qJ10sXG4gICAgbWluU2l6ZTogMSxcbiAgICBtYXhTaXplOiA1MDAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wNCcsIHRpdGxlOiAnTVA0JyB9LFxuICAgIHsgbmFtZTogJ3dlYm0nLCB0aXRsZTogJ1dlYk0nLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiAyMDAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9WSURFT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { provideFileTypeInfoProvider } from '../file-type-info-provider';\nimport { AXAudioFileTypeProvider } from './audio-file-type.provider';\nimport { AXDocumentFileTypeProvider } from './document-file-type.provider';\nimport { AXFileFileTypeProvider } from './file-file-type.provider';\nimport { AXImageFileTypeProvider } from './image-file-type.provider';\nimport { AXVideoFileTypeProvider } from './video-file-type.provider';\nexport * from './image-file-type.provider';\nexport * from './video-file-type.provider';\nexport * from './audio-file-type.provider';\nexport * from './file-file-type.provider';\nexport * from './document-file-type.provider';\n/** Built-in file type provider classes (one logical type per provider). */\nexport const AX_BUILTIN_FILE_TYPE_PROVIDERS = [\n AXImageFileTypeProvider,\n AXVideoFileTypeProvider,\n AXAudioFileTypeProvider,\n AXFileFileTypeProvider,\n AXDocumentFileTypeProvider,\n];\n/** Registers all built-in file type providers (image, video, audio, file, document). */\nexport function provideBuiltinFileTypeProviders() {\n return AX_BUILTIN_FILE_TYPE_PROVIDERS.map((provider) => provideFileTypeInfoProvider(provider));\n}\n/** @deprecated Use {@link provideBuiltinFileTypeProviders}. */\nexport const provideDefaultFileTypeProviders = provideBuiltinFileTypeProviders;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QiwwQkFBMEI7Q0FDZ0MsQ0FBQztBQUU3RCx3RkFBd0Y7QUFDeEYsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVGaWxlVHlwZUluZm9Qcm92aWRlciwgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB9IGZyb20gJy4uL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmltcG9ydCB7IEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9hdWRpby1maWxlLXR5cGUucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgfSBmcm9tICcuL2RvY3VtZW50LWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9maWxlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEltYWdlRmlsZVR5cGVQcm92aWRlciB9IGZyb20gJy4vaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYVmlkZW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi92aWRlby1maWxlLXR5cGUucHJvdmlkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGlvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyJztcblxuLyoqIEJ1aWx0LWluIGZpbGUgdHlwZSBwcm92aWRlciBjbGFzc2VzIChvbmUgbG9naWNhbCB0eXBlIHBlciBwcm92aWRlcikuICovXG5leHBvcnQgY29uc3QgQVhfQlVJTFRJTl9GSUxFX1RZUEVfUFJPVklERVJTID0gW1xuICBBWEltYWdlRmlsZVR5cGVQcm92aWRlcixcbiAgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIsXG4gIEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyLFxuICBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyLFxuICBBWERvY3VtZW50RmlsZVR5cGVQcm92aWRlcixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFR5cGU8QVhGaWxlVHlwZUluZm9Qcm92aWRlcj5bXTtcblxuLyoqIFJlZ2lzdGVycyBhbGwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycyAoaW1hZ2UsIHZpZGVvLCBhdWRpbywgZmlsZSwgZG9jdW1lbnQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnMoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBBWF9CVUlMVElOX0ZJTEVfVFlQRV9QUk9WSURFUlMubWFwKChwcm92aWRlcikgPT4gcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyKHByb3ZpZGVyKSk7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnN9LiAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVEZWZhdWx0RmlsZVR5cGVQcm92aWRlcnMgPSBwcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzO1xuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMimeTypeValidationRule {\n get name() {\n return 'fileMimeType';\n }\n async validate(value, options) {\n const mime = (value instanceof File || value instanceof Blob ? value.type : '').trim().toLowerCase();\n const allowed = options.allowed ?? [];\n const valid = allowed.length === 0 ||\n allowed.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n return {\n rule: this.name,\n result: valid,\n message: valid ? '' : (options.message ?? 'File type is not allowed.'),\n value: mime,\n };\n }\n matchesMime(mime, pattern) {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n return mime === pattern;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW1lLXR5cGUucnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9ydWxlcy9maWxlLW1pbWUtdHlwZS5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUIzQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLElBQUksSUFBSTtRQUNOLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTRDO1FBRTVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FDVCxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSwyQkFBMkIsQ0FBQztZQUN0RSxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVksRUFBRSxPQUFlO1FBQy9DLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLEtBQUssSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUMxQixDQUFDOzhHQWhDVSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWltZVR5cGVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNSU1FIHBhdHRlcm5zLCBlLmcuIGBpbWFnZS8qYCwgYGltYWdlL3BuZ2AuICovXG4gIGFsbG93ZWQ6IHN0cmluZ1tdO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWltZVR5cGU6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVNaW1lVHlwZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWltZVR5cGUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICApOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICBjb25zdCBtaW1lID0gKHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS50eXBlIDogJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbG93ZWQgPSBvcHRpb25zLmFsbG93ZWQgPz8gW107XG4gICAgY29uc3QgdmFsaWQgPVxuICAgICAgYWxsb3dlZC5sZW5ndGggPT09IDAgfHxcbiAgICAgIGFsbG93ZWQuc29tZSgocGF0dGVybikgPT4gdGhpcy5tYXRjaGVzTWltZShtaW1lLCBwYXR0ZXJuLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkID8gJycgOiAob3B0aW9ucy5tZXNzYWdlID8/ICdGaWxlIHR5cGUgaXMgbm90IGFsbG93ZWQuJyksXG4gICAgICB2YWx1ZTogbWltZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaGVzTWltZShtaW1lOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuID09PSAnKi8qJyB8fCBwYXR0ZXJuID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocGF0dGVybi5lbmRzV2l0aCgnLyonKSkge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBwYXR0ZXJuLnNsaWNlKDAsIC0yKTtcbiAgICAgIHJldHVybiBtaW1lLnN0YXJ0c1dpdGgoYCR7Y2F0ZWdvcnl9L2ApIHx8IChtaW1lID09PSAnJyAmJiBjYXRlZ29yeSA9PT0gJ2FwcGxpY2F0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBtaW1lID09PSBwYXR0ZXJuO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMinSizeValidationRule {\n get name() {\n return 'fileMinSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size >= options.minSize;\n const limitLabel = formatFileSizeBytes(options.minSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ?? `File is too small. Minimum size is ${limitLabel}.`),\n value: size,\n minSize: options.minSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW4tc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWluLXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxVQUFVLEdBQUcsQ0FBQztZQUM1RSxLQUFLLEVBQUUsSUFBSTtZQUNYLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDO0lBQ0osQ0FBQzs4R0F0QlUsMkJBQTJCO2tIQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFZhbGlkYXRpb25SdWxlLFxuICBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCxcbn0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgZm9ybWF0RmlsZVNpemVCeXRlcyB9IGZyb20gJy4uLy4uL2Zvcm1hdC1maWxlLXNpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNaW5pbXVtIHNpemUgaW4gYnl0ZXMuICovXG4gIG1pblNpemU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJyB7XG4gIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgZmlsZU1pblNpemU6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZmlsZU1pblNpemUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgIGNvbnN0IHNpemUgPSB2YWx1ZSBpbnN0YW5jZW9mIEZpbGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBCbG9iID8gdmFsdWUuc2l6ZSA6IDA7XG4gICAgY29uc3QgdmFsaWQgPSBzaXplID49IG9wdGlvbnMubWluU2l6ZTtcbiAgICBjb25zdCBsaW1pdExhYmVsID0gZm9ybWF0RmlsZVNpemVCeXRlcyhvcHRpb25zLm1pblNpemUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgIHJlc3VsdDogdmFsaWQsXG4gICAgICBtZXNzYWdlOiB2YWxpZFxuICAgICAgICA/ICcnXG4gICAgICAgIDogKG9wdGlvbnMubWVzc2FnZSA/PyBgRmlsZSBpcyB0b28gc21hbGwuIE1pbmltdW0gc2l6ZSBpcyAke2xpbWl0TGFiZWx9LmApLFxuICAgICAgdmFsdWU6IHNpemUsXG4gICAgICBtaW5TaXplOiBvcHRpb25zLm1pblNpemUsXG4gICAgfTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMaxSizeValidationRule {\n get name() {\n return 'fileMaxSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size <= options.maxSize;\n const limitLabel = formatFileSizeBytes(options.maxSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ??\n `File is too large. Maximum size is ${limitLabel}.`),\n value: size,\n maxSize: options.maxSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYXgtc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWF4LXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztvQkFDaEIsc0NBQXNDLFVBQVUsR0FBRyxDQUFDO1lBQ3hELEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUM7SUFDSixDQUFDOzhHQXZCVSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZUJ5dGVzIH0gZnJvbSAnLi4vLi4vZm9ybWF0LWZpbGUtc2l6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgLyoqIE1heGltdW0gc2l6ZSBpbiBieXRlcy4gKi9cbiAgbWF4U2l6ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWF4U2l6ZTogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWF4U2l6ZSc7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZShcbiAgICB2YWx1ZTogRmlsZSB8IEJsb2IsXG4gICAgb3B0aW9uczogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XG4gICAgY29uc3Qgc2l6ZSA9IHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS5zaXplIDogMDtcbiAgICBjb25zdCB2YWxpZCA9IHNpemUgPD0gb3B0aW9ucy5tYXhTaXplO1xuICAgIGNvbnN0IGxpbWl0TGFiZWwgPSBmb3JtYXRGaWxlU2l6ZUJ5dGVzKG9wdGlvbnMubWF4U2l6ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkXG4gICAgICAgID8gJydcbiAgICAgICAgOiAob3B0aW9ucy5tZXNzYWdlID8/XG4gICAgICAgICAgYEZpbGUgaXMgdG9vIGxhcmdlLiBNYXhpbXVtIHNpemUgaXMgJHtsaW1pdExhYmVsfS5gKSxcbiAgICAgIHZhbHVlOiBzaXplLFxuICAgICAgbWF4U2l6ZTogb3B0aW9ucy5tYXhTaXplLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","export * from './file-type.metadata';\nexport * from './file-type.models';\nexport * from './file-type.copy';\nexport * from './file-type-info-provider';\nexport * from './file-type-registry.service';\nexport * from './file-type.merge';\nexport * from './file-type.validate';\nexport * from './types.providers';\nexport * from './rules/file-mime-type.rule';\nexport * from './rules/file-min-size.rule';\nexport * from './rules/file-max-size.rule';\nimport { AXValidationRegistryService } from '@acorex/core/validation';\nimport { provideBuiltinFileTypeProviders } from './types.providers';\nimport { AXFileMaxSizeValidationRule } from './rules/file-max-size.rule';\nimport { AXFileMimeTypeValidationRule } from './rules/file-mime-type.rule';\nimport { AXFileMinSizeValidationRule } from './rules/file-min-size.rule';\n/** Validation rule classes to register with {@link AXValidationModule}. */\nexport const AX_FILE_VALIDATION_RULES = [\n AXFileMimeTypeValidationRule,\n AXFileMinSizeValidationRule,\n AXFileMaxSizeValidationRule,\n];\n/** Registers file validation rules with {@link AXValidationRegistryService}. */\nexport function provideFileValidationRules() {\n return {\n provide: 'AXValidationModuleFactory',\n useFactory: (registry) => () => {\n registry.register(...AX_FILE_VALIDATION_RULES);\n },\n deps: [AXValidationRegistryService],\n multi: true,\n };\n}\n/** Registers built-in image / video / audio / file / document type providers. */\nexport { provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders } from './types.providers';\n/**\n * Registers validation rules and optional built-in file type providers.\n * {@link AXFileTypeRegistryService} and {@link AXFileService} are `providedIn: 'root'`.\n */\nexport function provideFileTypeSystem() {\n return [provideFileValidationRules(), ...provideBuiltinFileTypeProviders()];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBRzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpFLDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0Qyw0QkFBNEI7SUFDNUIsMkJBQTJCO0lBQzNCLDJCQUEyQjtDQUNuQixDQUFDO0FBRVgsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsT0FBTztRQUNMLE9BQU8sRUFBRSwyQkFBMkI7UUFDcEMsVUFBVSxFQUFFLENBQUMsUUFBcUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQzFELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztRQUNuQyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsaUZBQWlGO0FBQ2pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJHOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLEVBQUUsR0FBRywrQkFBK0IsRUFBRSxDQUFDLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5jb3B5JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS52YWxpZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzLnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVzL2ZpbGUtbWltZS10eXBlLnJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1pbi1zaXplLnJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1heC1zaXplLnJ1bGUnO1xuXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgcHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycyB9IGZyb20gJy4vdHlwZXMucHJvdmlkZXJzJztcbmltcG9ydCB7IEFYRmlsZU1heFNpemVWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvZmlsZS1tYXgtc2l6ZS5ydWxlJztcbmltcG9ydCB7IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2ZpbGUtbWltZS10eXBlLnJ1bGUnO1xuaW1wb3J0IHsgQVhGaWxlTWluU2l6ZVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9maWxlLW1pbi1zaXplLnJ1bGUnO1xuXG4vKiogVmFsaWRhdGlvbiBydWxlIGNsYXNzZXMgdG8gcmVnaXN0ZXIgd2l0aCB7QGxpbmsgQVhWYWxpZGF0aW9uTW9kdWxlfS4gKi9cbmV4cG9ydCBjb25zdCBBWF9GSUxFX1ZBTElEQVRJT05fUlVMRVMgPSBbXG4gIEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGUsXG4gIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSxcbiAgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlLFxuXSBhcyBjb25zdDtcblxuLyoqIFJlZ2lzdGVycyBmaWxlIHZhbGlkYXRpb24gcnVsZXMgd2l0aCB7QGxpbmsgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogJ0FYVmFsaWRhdGlvbk1vZHVsZUZhY3RvcnknLFxuICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlciguLi5BWF9GSUxFX1ZBTElEQVRJT05fUlVMRVMpO1xuICAgIH0sXG4gICAgZGVwczogW0FYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZV0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH07XG59XG5cbi8qKiBSZWdpc3RlcnMgYnVpbHQtaW4gaW1hZ2UgLyB2aWRlbyAvIGF1ZGlvIC8gZmlsZSAvIGRvY3VtZW50IHR5cGUgcHJvdmlkZXJzLiAqL1xuZXhwb3J0IHsgcHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycywgcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycyB9IGZyb20gJy4vdHlwZXMucHJvdmlkZXJzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdmFsaWRhdGlvbiBydWxlcyBhbmQgb3B0aW9uYWwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycy5cbiAqIHtAbGluayBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlfSBhbmQge0BsaW5rIEFYRmlsZVNlcnZpY2V9IGFyZSBgcHJvdmlkZWRJbjogJ3Jvb3QnYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGaWxlVHlwZVN5c3RlbSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpLCAuLi5wcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzKCldO1xufVxuIl19","import { AXFormatModule } from '@acorex/core/format';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { NgModule } from '@angular/core';\nimport { AXFileSizeFormatter } from './file-size-formatter';\nimport { AX_FILE_VALIDATION_RULES, provideDefaultFileTypeProviders, provideFileValidationRules, } from './file-type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/format\";\nimport * as i2 from \"@acorex/core/validation\";\nexport class AXFileModule {\n static forRoot(config) {\n const includeDefaults = config?.includeDefaultFileTypes !== false;\n return {\n ngModule: AXFileModule,\n providers: [\n provideFileValidationRules(),\n ...(includeDefaults ? provideDefaultFileTypeProviders() : []),\n ...(config?.fileTypeProviders ?? []),\n ],\n };\n }\n static forChild(config) {\n return AXFileModule.forRoot(config);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, imports: [i1.AXFormatModule, i2.AXValidationModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, providers: [AXFileSizeFormatter], imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] }),\n AXValidationModule.forChild({ rules: [...AX_FILE_VALIDATION_RULES] })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] }),\n AXValidationModule.forChild({ rules: [...AX_FILE_VALIDATION_RULES] }),\n ],\n providers: [AXFileSizeFormatter],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsMEJBQTBCLEdBQzNCLE1BQU0sYUFBYSxDQUFDOzs7O0FBY3JCLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMkI7UUFDeEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxFQUFFLHVCQUF1QixLQUFLLEtBQUssQ0FBQztRQUVsRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFO2dCQUNULDBCQUEwQixFQUFFO2dCQUM1QixHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELEdBQUcsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUFDO2FBQ3JDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQTJCO1FBQ3pDLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQWhCVSxZQUFZOytHQUFaLFlBQVk7K0dBQVosWUFBWSxhQUZaLENBQUMsbUJBQW1CLENBQUMsWUFIOUIsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUM5RCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLEVBQUUsQ0FBQzs7MkZBSTVELFlBQVk7a0JBUHhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7d0JBQzlELGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsRUFBRSxDQUFDO3FCQUN0RTtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVTaXplRm9ybWF0dGVyIH0gZnJvbSAnLi9maWxlLXNpemUtZm9ybWF0dGVyJztcbmltcG9ydCB7XG4gIEFYX0ZJTEVfVkFMSURBVElPTl9SVUxFUyxcbiAgcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycyxcbiAgcHJvdmlkZUZpbGVWYWxpZGF0aW9uUnVsZXMsXG59IGZyb20gJy4vZmlsZS10eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVNb2R1bGVDb25maWcge1xuICBmaWxlVHlwZVByb3ZpZGVycz86IFByb3ZpZGVyW107XG4gIGluY2x1ZGVEZWZhdWx0RmlsZVR5cGVzPzogYm9vbGVhbjtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFYRm9ybWF0TW9kdWxlLmZvckNoaWxkKHsgZm9ybWF0dGVyczogW0FYRmlsZVNpemVGb3JtYXR0ZXJdIH0pLFxuICAgIEFYVmFsaWRhdGlvbk1vZHVsZS5mb3JDaGlsZCh7IHJ1bGVzOiBbLi4uQVhfRklMRV9WQUxJREFUSU9OX1JVTEVTXSB9KSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQVhGaWxlU2l6ZUZvcm1hdHRlcl0sXG59KVxuZXhwb3J0IGNsYXNzIEFYRmlsZU1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYRmlsZU1vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QVhGaWxlTW9kdWxlPiB7XG4gICAgY29uc3QgaW5jbHVkZURlZmF1bHRzID0gY29uZmlnPy5pbmNsdWRlRGVmYXVsdEZpbGVUeXBlcyAhPT0gZmFsc2U7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYRmlsZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpLFxuICAgICAgICAuLi4oaW5jbHVkZURlZmF1bHRzID8gcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycygpIDogW10pLFxuICAgICAgICAuLi4oY29uZmlnPy5maWxlVHlwZVByb3ZpZGVycyA/PyBbXSksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnPzogQVhGaWxlTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWEZpbGVNb2R1bGU+IHtcbiAgICByZXR1cm4gQVhGaWxlTW9kdWxlLmZvclJvb3QoY29uZmlnKTtcbiAgfVxufVxuIl19","import { DOCUMENT, inject, Injectable, isDevMode } from '@angular/core';\nimport { AXFileTypeRegistryService } from './file-type/file-type-registry.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFileService {\n constructor() {\n this.document = inject(DOCUMENT);\n this.fileTypes = inject(AXFileTypeRegistryService);\n }\n async getFileTypes() {\n return this.fileTypes.getTypes();\n }\n async getFileType(name) {\n return this.fileTypes.get(name);\n }\n async getAcceptAttribute(fileType) {\n return this.fileTypes.accept(fileType);\n }\n async matchFileType(file) {\n return this.fileTypes.matchType(file);\n }\n validate(file, fileType) {\n return this.fileTypes.validateAgainstTypes(file, fileType);\n }\n validateMany(files, fileType) {\n return this.fileTypes.validateMany(files, fileType);\n }\n /**\n * Opens a file selection dialog.\n * With `fileType`, returns files that pass catalog validation (`accept` defaults from the catalog).\n * Without `fileType`, returns all selected files (legacy `accept` / `multiple` only).\n */\n async chooseValidated(options) {\n const resolved = await this.resolveChooseOptions(options);\n const files = await this.openFileDialog(resolved);\n if (files.length === 0) {\n return { accepted: [], rejected: [] };\n }\n if (options.fileType) {\n return this.validateMany(files, options.fileType);\n }\n return { accepted: files, rejected: [] };\n }\n async choose(options) {\n const { accepted } = await this.chooseValidated(options);\n return accepted;\n }\n blobToBase64(blob) {\n if (!(blob instanceof Blob)) {\n return Promise.reject(new Error('input is not blob'));\n }\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error);\n reader.onload = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n }\n getSize(file) {\n if (this.isBase64(file)) {\n return this.getBase64Size(file);\n }\n return false;\n }\n isBase64(base64) {\n const regx = /[^:]\\w+\\/[\\w-+\\d.]+(?=;|,)/;\n return regx.test(base64);\n }\n getBase64Size(base64) {\n return atob(base64.substring(base64.indexOf(',') + 1)).length;\n }\n async resolveChooseOptions(options) {\n const multiple = options.multiple ?? false;\n if (options.fileType) {\n const accept = options.accept ?? (await this.getAcceptAttribute(options.fileType));\n if (isDevMode() && !accept) {\n const name = Array.isArray(options.fileType) ? options.fileType.join(', ') : options.fileType;\n console.warn(`[AXFileService] No accept filter for file type \"${name}\". ` +\n 'Register a file type provider (e.g. provideConversationFileCatalog).');\n }\n return { accept, multiple };\n }\n return { accept: options.accept ?? '', multiple };\n }\n openFileDialog(options) {\n return new Promise((resolve, reject) => {\n const input = this.document.createElement('input');\n input.style.display = 'none';\n this.document.body.appendChild(input);\n input.type = 'file';\n input.accept = options.accept;\n input.multiple = options.multiple;\n const cleanup = () => {\n input.removeEventListener('change', onChange);\n input.removeEventListener('error', onError);\n if (input.parentNode) {\n this.document.body.removeChild(input);\n }\n input.remove();\n };\n const onError = (e) => {\n cleanup();\n reject(e);\n };\n const onChange = () => {\n const files = Array.from(input.files ?? []);\n cleanup();\n resolve(files);\n };\n input.addEventListener('change', onChange);\n input.addEventListener('error', onError);\n input.click();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBV25GLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBNEloRTtJQTFJQyxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBNEI7UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFVLEVBQUUsUUFBMkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWSxDQUNWLEtBQWEsRUFDYixRQUEyQjtR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QUMsQ0FBQztnQkFDNUMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUM7WUFFRixLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E3SVUsYUFBYTtrSEFBYixhQUFhLGNBREEsTUFBTTs7MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGluamVjdCwgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLXR5cGUvZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi9maWxlLXR5cGUvZmlsZS10eXBlLm1vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlQ2hvb3NlT3B0aW9ucyB7XG4gIC8qKiBMb2dpY2FsIHR5cGUgbmFtZShzKSBmcm9tIHtAbGluayBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlfS4gV2hlbiBzZXQsIGZpbGVzIGFyZSB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgY2F0YWxvZy4gKi9cbiAgZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgYWNjZXB0Pzogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhGaWxlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVUeXBlcyA9IGluamVjdChBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlKTtcblxuICBhc3luYyBnZXRGaWxlVHlwZXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMuZ2V0VHlwZXMoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVUeXBlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhGaWxlVHlwZSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVUeXBlcy5nZXQobmFtZSk7XG4gIH1cblxuICBhc3luYyBnZXRBY2NlcHRBdHRyaWJ1dGUoZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZVR5cGVzLmFjY2VwdChmaWxlVHlwZSk7XG4gIH1cblxuICBhc3luYyBtYXRjaEZpbGVUeXBlKGZpbGU6IEZpbGUpOiBQcm9taXNlPEFYRmlsZVR5cGUgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMubWF0Y2hUeXBlKGZpbGUpO1xuICB9XG5cbiAgdmFsaWRhdGUoZmlsZTogRmlsZSwgZmlsZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMudmFsaWRhdGVBZ2FpbnN0VHlwZXMoZmlsZSwgZmlsZVR5cGUpO1xuICB9XG5cbiAgdmFsaWRhdGVNYW55KFxuICAgIGZpbGVzOiBGaWxlW10sXG4gICAgZmlsZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPHsgYWNjZXB0ZWQ6IEZpbGVbXTsgcmVqZWN0ZWQ6IHsgZmlsZTogRmlsZTsgZXJyb3JzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10gfVtdIH0+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlVHlwZXMudmFsaWRhdGVNYW55KGZpbGVzLCBmaWxlVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYSBmaWxlIHNlbGVjdGlvbiBkaWFsb2cuXG4gICAqIFdpdGggYGZpbGVUeXBlYCwgcmV0dXJucyBmaWxlcyB0aGF0IHBhc3MgY2F0YWxvZyB2YWxpZGF0aW9uIChgYWNjZXB0YCBkZWZhdWx0cyBmcm9tIHRoZSBjYXRhbG9nKS5cbiAgICogV2l0aG91dCBgZmlsZVR5cGVgLCByZXR1cm5zIGFsbCBzZWxlY3RlZCBmaWxlcyAobGVnYWN5IGBhY2NlcHRgIC8gYG11bHRpcGxlYCBvbmx5KS5cbiAgICovXG4gIGFzeW5jIGNob29zZVZhbGlkYXRlZChcbiAgICBvcHRpb25zOiBBWEZpbGVDaG9vc2VPcHRpb25zLFxuICApOiBQcm9taXNlPHsgYWNjZXB0ZWQ6IEZpbGVbXTsgcmVqZWN0ZWQ6IHsgZmlsZTogRmlsZTsgZXJyb3JzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10gfVtdIH0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHRoaXMucmVzb2x2ZUNob29zZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLm9wZW5GaWxlRGlhbG9nKHJlc29sdmVkKTtcblxuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IGFjY2VwdGVkOiBbXSwgcmVqZWN0ZWQ6IFtdIH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZmlsZVR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTWFueShmaWxlcywgb3B0aW9ucy5maWxlVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYWNjZXB0ZWQ6IGZpbGVzLCByZWplY3RlZDogW10gfTtcbiAgfVxuXG4gIGFzeW5jIGNob29zZShvcHRpb25zOiBBWEZpbGVDaG9vc2VPcHRpb25zKTogUHJvbWlzZTxGaWxlW10+IHtcbiAgICBjb25zdCB7IGFjY2VwdGVkIH0gPSBhd2FpdCB0aGlzLmNob29zZVZhbGlkYXRlZChvcHRpb25zKTtcbiAgICByZXR1cm4gYWNjZXB0ZWQ7XG4gIH1cblxuICBibG9iVG9CYXNlNjQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCEoYmxvYiBpbnN0YW5jZW9mIEJsb2IpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdpbnB1dCBpcyBub3QgYmxvYicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlYWRlci5lcnJvcik7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNpemUoZmlsZTogRmlsZSB8IEJsb2IgfCBzdHJpbmcpOiBudW1iZXIgfCBmYWxzZSB7XG4gICAgaWYgKHRoaXMuaXNCYXNlNjQoZmlsZSBhcyBzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCYXNlNjRTaXplKGZpbGUgYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNCYXNlNjQoYmFzZTY0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWd4ID0gL1teOl1cXHcrXFwvW1xcdy0rXFxkLl0rKD89O3wsKS87XG4gICAgcmV0dXJuIHJlZ3gudGVzdChiYXNlNjQpO1xuICB9XG5cbiAgZ2V0QmFzZTY0U2l6ZShiYXNlNjQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGF0b2IoYmFzZTY0LnN1YnN0cmluZyhiYXNlNjQuaW5kZXhPZignLCcpICsgMSkpLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZUNob29zZU9wdGlvbnMoXG4gICAgb3B0aW9uczogQVhGaWxlQ2hvb3NlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTx7IGFjY2VwdDogc3RyaW5nOyBtdWx0aXBsZTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3QgbXVsdGlwbGUgPSBvcHRpb25zLm11bHRpcGxlID8/IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuZmlsZVR5cGUpIHtcbiAgICAgIGNvbnN0IGFjY2VwdCA9IG9wdGlvbnMuYWNjZXB0ID8/IChhd2FpdCB0aGlzLmdldEFjY2VwdEF0dHJpYnV0ZShvcHRpb25zLmZpbGVUeXBlKSk7XG5cbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiAhYWNjZXB0KSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuZmlsZVR5cGUpID8gb3B0aW9ucy5maWxlVHlwZS5qb2luKCcsICcpIDogb3B0aW9ucy5maWxlVHlwZTtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbQVhGaWxlU2VydmljZV0gTm8gYWNjZXB0IGZpbHRlciBmb3IgZmlsZSB0eXBlIFwiJHtuYW1lfVwiLiBgICtcbiAgICAgICAgICAgICdSZWdpc3RlciBhIGZpbGUgdHlwZSBwcm92aWRlciAoZS5nLiBwcm92aWRlQ29udmVyc2F0aW9uRmlsZUNhdGFsb2cpLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGFjY2VwdCwgbXVsdGlwbGUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBhY2NlcHQ6IG9wdGlvbnMuYWNjZXB0ID8/ICcnLCBtdWx0aXBsZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRmlsZURpYWxvZyhvcHRpb25zOiB7IGFjY2VwdDogc3RyaW5nOyBtdWx0aXBsZTogYm9vbGVhbiB9KTogUHJvbWlzZTxGaWxlW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RmlsZVtdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgIGlucHV0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpO1xuICAgICAgaW5wdXQudHlwZSA9ICdmaWxlJztcbiAgICAgIGlucHV0LmFjY2VwdCA9IG9wdGlvbnMuYWNjZXB0O1xuICAgICAgaW5wdXQubXVsdGlwbGUgPSBvcHRpb25zLm11bHRpcGxlO1xuXG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNoYW5nZSk7XG4gICAgICAgIGlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIGlmIChpbnB1dC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC5yZW1vdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGlucHV0LmZpbGVzID8/IFtdKTtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICByZXNvbHZlKGZpbGVzKTtcbiAgICAgIH07XG5cbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ2hhbmdlKTtcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBpbnB1dC5jbGljaygpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvYWNvcmV4LWNvcmUtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["MB"],"mappings":"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"}
|
package/file/index.d.ts
CHANGED
|
@@ -46,6 +46,16 @@ type AXFileCopyResult = string | AXFileCopyData | null | undefined;
|
|
|
46
46
|
/** Resolves clipboard/plain text from a copy result. */
|
|
47
47
|
declare function resolveFileCopyText(result: AXFileCopyResult): string | null;
|
|
48
48
|
|
|
49
|
+
/** Metadata key for catalog usage context. */
|
|
50
|
+
declare const AX_FILE_TYPE_METADATA_PURPOSE: "purpose";
|
|
51
|
+
/** Catalog metadata bag; `purpose` lists usage contexts (e.g. `['system']`). */
|
|
52
|
+
type AXFileTypeMetadata = Record<string, unknown> & {
|
|
53
|
+
[AX_FILE_TYPE_METADATA_PURPOSE]?: string[];
|
|
54
|
+
};
|
|
55
|
+
/** Filter catalog entries by {@link AX_FILE_TYPE_METADATA_PURPOSE}. */
|
|
56
|
+
interface AXFileTypeQuery {
|
|
57
|
+
purpose?: string | string[];
|
|
58
|
+
}
|
|
49
59
|
/** Generic rule executed via {@link AXValidationService}. */
|
|
50
60
|
interface AXFileValidationRule {
|
|
51
61
|
rule: string;
|
|
@@ -81,6 +91,7 @@ interface AXFileType<T = Record<string, (ctx: {
|
|
|
81
91
|
name: string;
|
|
82
92
|
title?: string;
|
|
83
93
|
icon?: string;
|
|
94
|
+
metadata?: AXFileTypeMetadata;
|
|
84
95
|
validations?: AXFileValidations;
|
|
85
96
|
extensions?: AXFileTypeExtension[];
|
|
86
97
|
/** Dynamic utility functions available for this file type. */
|
|
@@ -93,6 +104,11 @@ interface AXFileType<T = Record<string, (ctx: {
|
|
|
93
104
|
copy?: (payload: unknown) => Promise<AXFileCopyResult> | AXFileCopyResult;
|
|
94
105
|
}
|
|
95
106
|
|
|
107
|
+
declare function getFileTypePurposes(type: AXFileType): string[];
|
|
108
|
+
declare function fileTypeMatchesPurpose(type: AXFileType, purpose: string | string[]): boolean;
|
|
109
|
+
declare function filterFileTypesByPurpose(types: AXFileType[], purpose?: string | string[]): AXFileType[];
|
|
110
|
+
declare function createFileTypeMetadata(purpose: string | string[]): NonNullable<AXFileType['metadata']>;
|
|
111
|
+
|
|
96
112
|
/** Contributes {@link AXFileType} entries (multi provider). */
|
|
97
113
|
declare abstract class AXFileTypeInfoProvider {
|
|
98
114
|
abstract items(): Promise<AXFileType[]>;
|
|
@@ -109,7 +125,7 @@ declare class AXFileTypeRegistryService {
|
|
|
109
125
|
registerTypes(types: AXFileType[]): void;
|
|
110
126
|
invalidateCache(): void;
|
|
111
127
|
private resolveTypes;
|
|
112
|
-
getTypes(): Promise<AXFileType[]>;
|
|
128
|
+
getTypes(query?: AXFileTypeQuery): Promise<AXFileType[]>;
|
|
113
129
|
get(name: string): Promise<AXFileType | undefined>;
|
|
114
130
|
accept(typeNames?: string | string[]): Promise<string>;
|
|
115
131
|
matchType(file: File): Promise<AXFileType | undefined>;
|
|
@@ -309,5 +325,5 @@ declare class AXFileService {
|
|
|
309
325
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXFileService>;
|
|
310
326
|
}
|
|
311
327
|
|
|
312
|
-
export { AXAudioFileTypeProvider, AXDocumentFileTypeProvider, AXFileFileTypeProvider, AXFileMaxSizeValidationRule, AXFileMimeTypeValidationRule, AXFileMinSizeValidationRule, AXFileModule, AXFileService, AXFileSizeFormatter, AXFileTypeInfoProvider, AXFileTypeRegistryService, AXImageFileTypeProvider, AXVideoFileTypeProvider, AX_AUDIO_FILE_TYPE, AX_BUILTIN_FILE_TYPE_PROVIDERS, AX_DOCUMENT_FILE_TYPE, AX_FILE_FILE_TYPE, AX_FILE_TYPE_INFO_PROVIDER, AX_FILE_VALIDATION_RULES, AX_IMAGE_FILE_TYPE, AX_VIDEO_FILE_TYPE, fileValidationsToRules, findFileTypeExtension, formatFileSizeBytes, getFileExtension, isEmptyFileValidations, isExtensionsOnlyType, mergeFileValidations, provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders, provideFileTypeInfoProvider, provideFileTypeSystem, provideFileValidationRules, resolveFileCopyText, resolveFileValidations, validateFileAgainstType, validateFileWithValidations };
|
|
313
|
-
export type { AXFileChooseOptions, AXFileCopyData, AXFileCopyResult, AXFileMaxSizeValidationRuleOptions, AXFileMimeTypeValidationRuleOptions, AXFileMinSizeValidationRuleOptions, AXFileModuleConfig, AXFileSizeFormatterOptions, AXFileType, AXFileTypeExtension, AXFileValidationRule, AXFileValidations };
|
|
328
|
+
export { AXAudioFileTypeProvider, AXDocumentFileTypeProvider, AXFileFileTypeProvider, AXFileMaxSizeValidationRule, AXFileMimeTypeValidationRule, AXFileMinSizeValidationRule, AXFileModule, AXFileService, AXFileSizeFormatter, AXFileTypeInfoProvider, AXFileTypeRegistryService, AXImageFileTypeProvider, AXVideoFileTypeProvider, AX_AUDIO_FILE_TYPE, AX_BUILTIN_FILE_TYPE_PROVIDERS, AX_DOCUMENT_FILE_TYPE, AX_FILE_FILE_TYPE, AX_FILE_TYPE_INFO_PROVIDER, AX_FILE_TYPE_METADATA_PURPOSE, AX_FILE_VALIDATION_RULES, AX_IMAGE_FILE_TYPE, AX_VIDEO_FILE_TYPE, createFileTypeMetadata, fileTypeMatchesPurpose, fileValidationsToRules, filterFileTypesByPurpose, findFileTypeExtension, formatFileSizeBytes, getFileExtension, getFileTypePurposes, isEmptyFileValidations, isExtensionsOnlyType, mergeFileValidations, provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders, provideFileTypeInfoProvider, provideFileTypeSystem, provideFileValidationRules, resolveFileCopyText, resolveFileValidations, validateFileAgainstType, validateFileWithValidations };
|
|
329
|
+
export type { AXFileChooseOptions, AXFileCopyData, AXFileCopyResult, AXFileMaxSizeValidationRuleOptions, AXFileMimeTypeValidationRuleOptions, AXFileMinSizeValidationRuleOptions, AXFileModuleConfig, AXFileSizeFormatterOptions, AXFileType, AXFileTypeExtension, AXFileTypeMetadata, AXFileTypeQuery, AXFileValidationRule, AXFileValidations };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/core",
|
|
3
|
-
"version": "20.8.
|
|
3
|
+
"version": "20.8.20",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"lodash-es": ">=4.17.21",
|
|
6
6
|
"memoizee": ">=0.4.15",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"types": "./events/index.d.ts",
|
|
43
43
|
"default": "./fesm2022/acorex-core-events.mjs"
|
|
44
44
|
},
|
|
45
|
-
"./file": {
|
|
46
|
-
"types": "./file/index.d.ts",
|
|
47
|
-
"default": "./fesm2022/acorex-core-file.mjs"
|
|
48
|
-
},
|
|
49
45
|
"./format": {
|
|
50
46
|
"types": "./format/index.d.ts",
|
|
51
47
|
"default": "./fesm2022/acorex-core-format.mjs"
|
|
52
48
|
},
|
|
49
|
+
"./file": {
|
|
50
|
+
"types": "./file/index.d.ts",
|
|
51
|
+
"default": "./fesm2022/acorex-core-file.mjs"
|
|
52
|
+
},
|
|
53
53
|
"./full-screen": {
|
|
54
54
|
"types": "./full-screen/index.d.ts",
|
|
55
55
|
"default": "./fesm2022/acorex-core-full-screen.mjs"
|
|
@@ -62,10 +62,6 @@
|
|
|
62
62
|
"types": "./image/index.d.ts",
|
|
63
63
|
"default": "./fesm2022/acorex-core-image.mjs"
|
|
64
64
|
},
|
|
65
|
-
"./locale": {
|
|
66
|
-
"types": "./locale/index.d.ts",
|
|
67
|
-
"default": "./fesm2022/acorex-core-locale.mjs"
|
|
68
|
-
},
|
|
69
65
|
"./memoize": {
|
|
70
66
|
"types": "./memoize/index.d.ts",
|
|
71
67
|
"default": "./fesm2022/acorex-core-memoize.mjs"
|
|
@@ -74,14 +70,18 @@
|
|
|
74
70
|
"types": "./network/index.d.ts",
|
|
75
71
|
"default": "./fesm2022/acorex-core-network.mjs"
|
|
76
72
|
},
|
|
77
|
-
"./
|
|
78
|
-
"types": "./
|
|
79
|
-
"default": "./fesm2022/acorex-core-
|
|
73
|
+
"./locale": {
|
|
74
|
+
"types": "./locale/index.d.ts",
|
|
75
|
+
"default": "./fesm2022/acorex-core-locale.mjs"
|
|
80
76
|
},
|
|
81
77
|
"./platform": {
|
|
82
78
|
"types": "./platform/index.d.ts",
|
|
83
79
|
"default": "./fesm2022/acorex-core-platform.mjs"
|
|
84
80
|
},
|
|
81
|
+
"./pipes": {
|
|
82
|
+
"types": "./pipes/index.d.ts",
|
|
83
|
+
"default": "./fesm2022/acorex-core-pipes.mjs"
|
|
84
|
+
},
|
|
85
85
|
"./storage": {
|
|
86
86
|
"types": "./storage/index.d.ts",
|
|
87
87
|
"default": "./fesm2022/acorex-core-storage.mjs"
|