@acorex/core 21.0.2-next.38 → 21.0.2-next.39
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-components.mjs +3 -3
- package/fesm2022/acorex-core-components.mjs.map +1 -1
- package/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-config.mjs.map +1 -1
- package/fesm2022/acorex-core-constants.mjs.map +1 -1
- package/fesm2022/acorex-core-date-time.mjs +25 -25
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-events.mjs.map +1 -1
- package/fesm2022/acorex-core-file.mjs +37 -37
- package/fesm2022/acorex-core-file.mjs.map +1 -1
- package/fesm2022/acorex-core-format.mjs +19 -19
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-full-screen.mjs +4 -4
- package/fesm2022/acorex-core-full-screen.mjs.map +1 -1
- package/fesm2022/acorex-core-icon.mjs +3 -3
- package/fesm2022/acorex-core-icon.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-image.mjs.map +1 -1
- package/fesm2022/acorex-core-locale.mjs +12 -12
- package/fesm2022/acorex-core-locale.mjs.map +1 -1
- package/fesm2022/acorex-core-memoize.mjs.map +1 -1
- package/fesm2022/acorex-core-network.mjs +4 -4
- package/fesm2022/acorex-core-network.mjs.map +1 -1
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs.map +1 -1
- package/fesm2022/acorex-core-platform.mjs +5 -5
- package/fesm2022/acorex-core-platform.mjs.map +1 -1
- package/fesm2022/acorex-core-storage.mjs +9 -9
- package/fesm2022/acorex-core-storage.mjs.map +1 -1
- package/fesm2022/acorex-core-translation.mjs +16 -16
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +6 -4
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +40 -40
- package/fesm2022/acorex-core-validation.mjs.map +1 -1
- package/fesm2022/acorex-core-z-index.mjs +3 -3
- package/fesm2022/acorex-core-z-index.mjs.map +1 -1
- package/fesm2022/acorex-core.mjs.map +1 -1
- package/package.json +25 -24
- package/{format/index.d.ts → types/acorex-core-format.d.ts} +2 -2
- package/{utils/index.d.ts → types/acorex-core-utils.d.ts} +10 -2
- package/{validation/index.d.ts → types/acorex-core-validation.d.ts} +10 -10
- /package/{components/index.d.ts → types/acorex-core-components.d.ts} +0 -0
- /package/{config/index.d.ts → types/acorex-core-config.d.ts} +0 -0
- /package/{constants/index.d.ts → types/acorex-core-constants.d.ts} +0 -0
- /package/{date-time/index.d.ts → types/acorex-core-date-time.d.ts} +0 -0
- /package/{events/index.d.ts → types/acorex-core-events.d.ts} +0 -0
- /package/{file/index.d.ts → types/acorex-core-file.d.ts} +0 -0
- /package/{full-screen/index.d.ts → types/acorex-core-full-screen.d.ts} +0 -0
- /package/{icon/index.d.ts → types/acorex-core-icon.d.ts} +0 -0
- /package/{image/index.d.ts → types/acorex-core-image.d.ts} +0 -0
- /package/{locale/index.d.ts → types/acorex-core-locale.d.ts} +0 -0
- /package/{memoize/index.d.ts → types/acorex-core-memoize.d.ts} +0 -0
- /package/{network/index.d.ts → types/acorex-core-network.d.ts} +0 -0
- /package/{pipes/index.d.ts → types/acorex-core-pipes.d.ts} +0 -0
- /package/{platform/index.d.ts → types/acorex-core-platform.d.ts} +0 -0
- /package/{storage/index.d.ts → types/acorex-core-storage.d.ts} +0 -0
- /package/{translation/index.d.ts → types/acorex-core-translation.d.ts} +0 -0
- /package/{z-index/index.d.ts → types/acorex-core-z-index.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-core.d.ts} +0 -0
|
@@ -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,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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"}
|
|
1
|
+
{"version":3,"file":"acorex-core-file.mjs","sources":["../../../../packages/core/file/src/lib/file-size-formatter.ts","../../../../packages/core/file/src/lib/format-file-size.ts","../../../../packages/core/file/src/lib/file-type/file-type.copy.ts","../../../../packages/core/file/src/lib/file-type/file-type-info-provider.ts","../../../../packages/core/file/src/lib/file-type/file-type.merge.ts","../../../../packages/core/file/src/lib/file-type/file-type.validate.ts","../../../../packages/core/file/src/lib/file-type/file-type-registry.service.ts","../../../../packages/core/file/src/lib/file-type/types.providers/audio-file-type.provider.ts","../../../../packages/core/file/src/lib/file-type/types.providers/document-file-type.provider.ts","../../../../packages/core/file/src/lib/file-type/types.providers/file-file-type.provider.ts","../../../../packages/core/file/src/lib/file-type/types.providers/image-file-type.provider.ts","../../../../packages/core/file/src/lib/file-type/types.providers/video-file-type.provider.ts","../../../../packages/core/file/src/lib/file-type/types.providers/index.ts","../../../../packages/core/file/src/lib/file-type/rules/file-mime-type.rule.ts","../../../../packages/core/file/src/lib/file-type/rules/file-min-size.rule.ts","../../../../packages/core/file/src/lib/file-type/rules/file-max-size.rule.ts","../../../../packages/core/file/src/lib/file-type/index.ts","../../../../packages/core/file/src/lib/file.module.ts","../../../../packages/core/file/src/lib/file.service.ts","../../../../packages/core/file/src/acorex-core-file.ts"],"sourcesContent":["import { AXFormatOptions, AXFormatter } from '@acorex/core/format';\nimport { Injectable } from '@angular/core';\n\nexport interface AXFileSizeFormatterOptions extends AXFormatOptions {\n format: string;\n}\n\ndeclare module '@acorex/core/format' {\n interface AXFormatOptionsMap {\n filesize: AXFileSizeFormatterOptions;\n }\n}\n\n@Injectable()\nexport class AXFileSizeFormatter implements AXFormatter {\n /**\n * Gets the name of the formatter.\n *\n * @returns string - The formatter name 'filesize'\n */\n\n get name(): string {\n return 'filesize';\n }\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\n format(value: number): string {\n const size = Number(value);\n\n if (size === 0) return '0 Bytes';\n if (Number.isNaN(size)) return 'Unknown';\n\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\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n}\n","/** Human-readable file size (binary units, e.g. `41.5 MB`). */\nexport function formatFileSizeBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) {\n return '0 B';\n }\n if (bytes === 0) {\n return '0 B';\n }\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\n if (i === 0) {\n return `${bytes} B`;\n }\n\n const digits = value >= 100 ? 0 : value >= 10 ? 1 : 2;\n return `${value.toFixed(digits)} ${units[i]}`;\n}\n","/** Structured copy payload from {@link AXFileType.copy}. */\nexport interface AXFileCopyData {\n /** Primary plain-text value for clipboard or previews. */\n text: string;\n /** Optional type-specific metadata for consumers (URLs, names, mime types, …). */\n meta?: Record<string, unknown>;\n}\n\n/** Return value of {@link AXFileType.copy} — shorthand string or structured data. */\nexport type AXFileCopyResult = string | AXFileCopyData | null | undefined;\n\n/** Resolves clipboard/plain text from a copy result. */\nexport function resolveFileCopyText(result: AXFileCopyResult): string | null {\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","import { InjectionToken, Provider, Type } from '@angular/core';\nimport type { AXFileType } from './file-type.models';\n\n/** Contributes {@link AXFileType} entries (multi provider). */\nexport abstract class AXFileTypeInfoProvider {\n abstract items(): Promise<AXFileType[]>;\n}\n\nexport const AX_FILE_TYPE_INFO_PROVIDER = new InjectionToken<AXFileTypeInfoProvider[]>('AX_FILE_TYPE_INFO_PROVIDER');\n\nexport function provideFileTypeInfoProvider(provider: Type<AXFileTypeInfoProvider>): Provider {\n return {\n provide: AX_FILE_TYPE_INFO_PROVIDER,\n useClass: provider,\n multi: true,\n };\n}\n","import type { AXFileType, AXFileTypeExtension, AXFileValidations } from './file-type.models';\n\n/** Merges type-level validations with extension overrides (extension wins per field). */\nexport function mergeFileValidations(\n base: AXFileValidations,\n override?: Partial<AXFileValidations>,\n): AXFileValidations {\n if (!override) {\n return { ...base };\n }\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\n/** Resolved validations for a type + optional extension. */\nexport function resolveFileValidations(type: AXFileType, extension?: AXFileTypeExtension): AXFileValidations {\n return mergeFileValidations(type.validations ?? {}, extension?.validations);\n}\n\n/** True when no mime/size/rules are defined on the type. */\nexport function isEmptyFileValidations(validations?: AXFileValidations): boolean {\n if (!validations) {\n return true;\n }\n return (\n (validations.mimeTypes?.length ?? 0) === 0 &&\n validations.minSize == null &&\n validations.maxSize == null &&\n (validations.rules?.length ?? 0) === 0\n );\n}\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: AXFileType): boolean {\n return isEmptyFileValidations(type.validations) && (type.extensions?.length ?? 0) > 0;\n}\n\n/** File extension from name (lowercase, no dot). */\nexport function getFileExtension(fileName: string): string {\n const parts = fileName.trim().split('.');\n return parts.length > 1 ? (parts.pop()?.toLowerCase() ?? '') : '';\n}\n\n/** Matching extension entry for a file within a type, if any. */\nexport function findFileTypeExtension(file: File, type: AXFileType): AXFileTypeExtension | undefined {\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","import { AXValidationService, type AXValidationRuleResult } from '@acorex/core/validation';\nimport {\n findFileTypeExtension,\n getFileExtension,\n isExtensionsOnlyType,\n resolveFileValidations,\n} from './file-type.merge';\nimport type { AXFileType, AXFileTypeExtension, AXFileValidationRule, AXFileValidations } from './file-type.models';\n\n/** Maps {@link AXFileValidations} to executable validation entries. */\nexport function fileValidationsToRules(validations: AXFileValidations): AXFileValidationRule[] {\n const rules: AXFileValidationRule[] = [];\n\n if (validations.mimeTypes?.length) {\n rules.push({\n rule: 'fileMimeType',\n options: { allowed: validations.mimeTypes },\n });\n }\n\n if (validations.minSize != null) {\n rules.push({\n rule: 'fileMinSize',\n options: { minSize: validations.minSize },\n });\n }\n\n if (validations.maxSize != null) {\n rules.push({\n rule: 'fileMaxSize',\n options: { maxSize: validations.maxSize },\n });\n }\n\n if (validations.rules?.length) {\n rules.push(...validations.rules);\n }\n\n return rules;\n}\n\n/** Failed validation results; empty array means the file is valid. */\nexport async function validateFileWithValidations(\n validation: AXValidationService,\n file: File,\n validations: AXFileValidations,\n): Promise<AXValidationRuleResult[]> {\n const entries = fileValidationsToRules(validations);\n const errors: AXValidationRuleResult[] = [];\n\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\n return errors;\n}\n\n/** Validates a file against a type; extension rules override when the file name matches. */\nexport async function validateFileAgainstType(\n validation: AXValidationService,\n file: File,\n type: AXFileType,\n extension?: AXFileTypeExtension,\n): Promise<AXValidationRuleResult[]> {\n const matchedExtension = extension ?? findFileTypeExtension(file, type);\n\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\n const resolved = resolveFileValidations(type, matchedExtension);\n return validateFileWithValidations(validation, file, resolved);\n}\n","import type { AXValidationRuleResult } from '@acorex/core/validation';\n\nimport { AXValidationService } from '@acorex/core/validation';\n\nimport { Injectable, inject } from '@angular/core';\n\nimport { AX_FILE_TYPE_INFO_PROVIDER } from './file-type-info-provider';\n\nimport { findFileTypeExtension } from './file-type.merge';\n\nimport type { AXFileType } from './file-type.models';\n\nimport { validateFileAgainstType } from './file-type.validate';\n\n@Injectable({ providedIn: 'root' })\nexport class AXFileTypeRegistryService {\n private readonly validation = inject(AXValidationService);\n\n private readonly providers = inject(AX_FILE_TYPE_INFO_PROVIDER, { optional: true }) ?? [];\n\n private readonly registeredTypes: AXFileType[] = [];\n\n private cache: AXFileType[] | null = null;\n\n /** Registers or replaces catalog entries (e.g. from feature bootstrap). */\n\n registerTypes(types: AXFileType[]): void {\n for (const type of types) {\n const index = this.registeredTypes.findIndex((t) => t.name === type.name);\n\n if (index >= 0) {\n this.registeredTypes[index] = type;\n } else {\n this.registeredTypes.push(type);\n }\n }\n\n this.invalidateCache();\n }\n\n invalidateCache(): void {\n this.cache = null;\n }\n\n private async resolveTypes(): Promise<AXFileType[]> {\n if (this.cache) {\n return this.cache;\n }\n\n const byName = new Map<string, AXFileType>();\n\n if (this.providers.length) {\n const batches = await Promise.all(this.providers.map((p) => p.items()));\n\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\n for (const type of this.registeredTypes) {\n byName.set(type.name, type);\n }\n\n this.cache = [...byName.values()];\n\n return this.cache;\n }\n\n async getTypes(): Promise<AXFileType[]> {\n return this.resolveTypes();\n }\n\n async get(name: string): Promise<AXFileType | undefined> {\n const types = await this.resolveTypes();\n\n return types.find((t) => t.name === name);\n }\n\n async accept(typeNames?: string | string[]): Promise<string> {\n const names = typeNames ? (Array.isArray(typeNames) ? typeNames : [typeNames]) : undefined;\n\n const types = await this.resolveTypes();\n\n const selected = names?.length ? types.filter((t) => names.includes(t.name)) : types;\n\n if (names?.length && selected.length === 0) {\n return '';\n }\n\n const parts = new Set<string>();\n\n for (const type of selected) {\n type.validations?.mimeTypes?.forEach((m) => parts.add(m));\n\n type.extensions?.forEach((ext) => {\n ext.validations?.mimeTypes?.forEach((m) => parts.add(m));\n\n parts.add(`.${ext.name.replace(/^\\./, '')}`);\n });\n }\n\n return [...parts].join(',');\n }\n\n async matchType(file: File): Promise<AXFileType | undefined> {\n const types = await this.resolveTypes();\n\n const mime = file.type.trim().toLowerCase();\n\n return types.find((type) => {\n const patterns = [\n ...(type.validations?.mimeTypes ?? []),\n\n ...(type.extensions?.flatMap((e) => e.validations?.mimeTypes ?? []) ?? []),\n ];\n\n if (!patterns.length) {\n return false;\n }\n\n return patterns.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n });\n }\n\n async validate(file: File, typeName: string): Promise<AXValidationRuleResult[]> {\n const type = await this.get(typeName);\n\n if (!type) {\n return [\n {\n rule: 'fileType',\n\n result: false,\n\n message: `Unknown file type: ${typeName}`,\n\n value: typeName,\n },\n ];\n }\n\n const extension = findFileTypeExtension(file, type);\n\n return validateFileAgainstType(this.validation, file, type, extension);\n }\n\n async validateAgainstTypes(\n file: File,\n\n typeNames: string | string[],\n ): Promise<AXValidationRuleResult[]> {\n const names = Array.isArray(typeNames) ? typeNames : [typeNames];\n\n let lastErrors: AXValidationRuleResult[] = [];\n\n for (const name of names) {\n const errors = await this.validate(file, name);\n\n if (errors.length === 0) {\n return [];\n }\n\n lastErrors = errors;\n }\n\n return lastErrors;\n }\n\n async validateMany(\n files: File[],\n\n typeNames: string | string[],\n ): Promise<{ accepted: File[]; rejected: { file: File; errors: AXValidationRuleResult[] }[] }> {\n const accepted: File[] = [];\n\n const rejected: { file: File; errors: AXValidationRuleResult[] }[] = [];\n\n for (const file of files) {\n const errors = await this.validateAgainstTypes(file, typeNames);\n\n if (errors.length === 0) {\n accepted.push(file);\n } else {\n rejected.push({ file, errors });\n }\n }\n\n return { accepted, rejected };\n }\n\n private matchesMime(mime: string, pattern: string): boolean {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n\n return mime === pattern;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport type { AXFileType } from '../file-type.models';\n\nconst MB = 1024 * 1024;\n\nexport const AX_AUDIO_FILE_TYPE: AXFileType = {\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};\n\n@Injectable()\nexport class AXAudioFileTypeProvider extends AXFileTypeInfoProvider {\n items(): Promise<AXFileType[]> {\n return Promise.resolve([AX_AUDIO_FILE_TYPE]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport type { AXFileType } from '../file-type.models';\n\nconst MB = 1024 * 1024;\n\n/** Extension-only: no type `validations` — only listed extensions are allowed. */\nexport const AX_DOCUMENT_FILE_TYPE: AXFileType = {\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};\n\n@Injectable()\nexport class AXDocumentFileTypeProvider extends AXFileTypeInfoProvider {\n items(): Promise<AXFileType[]> {\n return Promise.resolve([AX_DOCUMENT_FILE_TYPE]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport type { AXFileType } from '../file-type.models';\n\nconst MB = 1024 * 1024;\n\nexport const AX_FILE_FILE_TYPE: AXFileType = {\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};\n\n@Injectable()\nexport class AXFileFileTypeProvider extends AXFileTypeInfoProvider {\n items(): Promise<AXFileType[]> {\n return Promise.resolve([AX_FILE_FILE_TYPE]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport type { AXFileType } from '../file-type.models';\n\nconst MB = 1024 * 1024;\n\nexport const AX_IMAGE_FILE_TYPE: AXFileType = {\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};\n\n@Injectable()\nexport class AXImageFileTypeProvider extends AXFileTypeInfoProvider {\n items(): Promise<AXFileType[]> {\n return Promise.resolve([AX_IMAGE_FILE_TYPE]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport type { AXFileType } from '../file-type.models';\n\nconst MB = 1024 * 1024;\n\nexport const AX_VIDEO_FILE_TYPE: AXFileType = {\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};\n\n@Injectable()\nexport class AXVideoFileTypeProvider extends AXFileTypeInfoProvider {\n items(): Promise<AXFileType[]> {\n return Promise.resolve([AX_VIDEO_FILE_TYPE]);\n }\n}\n","import { Provider, Type } from '@angular/core';\nimport { provideFileTypeInfoProvider, AXFileTypeInfoProvider } 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';\n\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\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] as const satisfies readonly Type<AXFileTypeInfoProvider>[];\n\n/** Registers all built-in file type providers (image, video, audio, file, document). */\nexport function provideBuiltinFileTypeProviders(): Provider[] {\n return AX_BUILTIN_FILE_TYPE_PROVIDERS.map((provider) => provideFileTypeInfoProvider(provider));\n}\n\n/** @deprecated Use {@link provideBuiltinFileTypeProviders}. */\nexport const provideDefaultFileTypeProviders = provideBuiltinFileTypeProviders;\n","import { Injectable } from '@angular/core';\nimport {\n AXValidationRule,\n AXValidationRuleOptions,\n AXValidationRuleResult,\n} from '@acorex/core/validation';\n\nexport interface AXFileMimeTypeValidationRuleOptions extends AXValidationRuleOptions {\n /** MIME patterns, e.g. `image/*`, `image/png`. */\n allowed: string[];\n}\n\ndeclare module '@acorex/core/validation' {\n interface AXValidationRuleOptionsMap {\n fileMimeType: AXFileMimeTypeValidationRuleOptions;\n }\n}\n\n@Injectable()\nexport class AXFileMimeTypeValidationRule implements AXValidationRule {\n get name(): string {\n return 'fileMimeType';\n }\n\n async validate(\n value: File | Blob,\n options: AXFileMimeTypeValidationRuleOptions,\n ): Promise<AXValidationRuleResult> {\n const mime = (value instanceof File || value instanceof Blob ? value.type : '').trim().toLowerCase();\n const allowed = options.allowed ?? [];\n const valid =\n allowed.length === 0 ||\n allowed.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n\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\n private matchesMime(mime: string, pattern: string): boolean {\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}\n","import { Injectable } from '@angular/core';\nimport {\n AXValidationRule,\n AXValidationRuleOptions,\n AXValidationRuleResult,\n} from '@acorex/core/validation';\nimport { formatFileSizeBytes } from '../../format-file-size';\n\nexport interface AXFileMinSizeValidationRuleOptions extends AXValidationRuleOptions {\n /** Minimum size in bytes. */\n minSize: number;\n}\n\ndeclare module '@acorex/core/validation' {\n interface AXValidationRuleOptionsMap {\n fileMinSize: AXFileMinSizeValidationRuleOptions;\n }\n}\n\n@Injectable()\nexport class AXFileMinSizeValidationRule implements AXValidationRule {\n get name(): string {\n return 'fileMinSize';\n }\n\n async validate(\n value: File | Blob,\n options: AXFileMinSizeValidationRuleOptions,\n ): Promise<AXValidationRuleResult> {\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\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}\n","import { Injectable } from '@angular/core';\nimport {\n AXValidationRule,\n AXValidationRuleOptions,\n AXValidationRuleResult,\n} from '@acorex/core/validation';\nimport { formatFileSizeBytes } from '../../format-file-size';\n\nexport interface AXFileMaxSizeValidationRuleOptions extends AXValidationRuleOptions {\n /** Maximum size in bytes. */\n maxSize: number;\n}\n\ndeclare module '@acorex/core/validation' {\n interface AXValidationRuleOptionsMap {\n fileMaxSize: AXFileMaxSizeValidationRuleOptions;\n }\n}\n\n@Injectable()\nexport class AXFileMaxSizeValidationRule implements AXValidationRule {\n get name(): string {\n return 'fileMaxSize';\n }\n\n async validate(\n value: File | Blob,\n options: AXFileMaxSizeValidationRuleOptions,\n ): Promise<AXValidationRuleResult> {\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\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}\n","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';\n\nimport { Provider } from '@angular/core';\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\n/** Validation rule classes to register with {@link AXValidationModule}. */\nexport const AX_FILE_VALIDATION_RULES = [\n AXFileMimeTypeValidationRule,\n AXFileMinSizeValidationRule,\n AXFileMaxSizeValidationRule,\n] as const;\n\n/** Registers file validation rules with {@link AXValidationRegistryService}. */\nexport function provideFileValidationRules(): Provider {\n return {\n provide: 'AXValidationModuleFactory',\n useFactory: (registry: AXValidationRegistryService) => () => {\n registry.register(...AX_FILE_VALIDATION_RULES);\n },\n deps: [AXValidationRegistryService],\n multi: true,\n };\n}\n\n/** Registers built-in image / video / audio / file / document type providers. */\nexport { provideBuiltinFileTypeProviders, provideDefaultFileTypeProviders } from './types.providers';\n\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(): Provider[] {\n return [provideFileValidationRules(), ...provideBuiltinFileTypeProviders()];\n}\n","import { AXFormatModule } from '@acorex/core/format';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { AXFileSizeFormatter } from './file-size-formatter';\nimport {\n AX_FILE_VALIDATION_RULES,\n provideDefaultFileTypeProviders,\n provideFileValidationRules,\n} from './file-type';\n\nexport interface AXFileModuleConfig {\n fileTypeProviders?: Provider[];\n includeDefaultFileTypes?: boolean;\n}\n\n@NgModule({\n imports: [\n AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] }),\n AXValidationModule.forChild({ rules: [...AX_FILE_VALIDATION_RULES] }),\n ],\n providers: [AXFileSizeFormatter],\n})\nexport class AXFileModule {\n static forRoot(config?: AXFileModuleConfig): ModuleWithProviders<AXFileModule> {\n const includeDefaults = config?.includeDefaultFileTypes !== false;\n\n return {\n ngModule: AXFileModule,\n providers: [\n provideFileValidationRules(),\n ...(includeDefaults ? provideDefaultFileTypeProviders() : []),\n ...(config?.fileTypeProviders ?? []),\n ],\n };\n }\n\n static forChild(config?: AXFileModuleConfig): ModuleWithProviders<AXFileModule> {\n return AXFileModule.forRoot(config);\n }\n}\n","import type { AXValidationRuleResult } from '@acorex/core/validation';\nimport { DOCUMENT, inject, Injectable, isDevMode } from '@angular/core';\nimport { AXFileTypeRegistryService } from './file-type/file-type-registry.service';\nimport type { AXFileType } from './file-type/file-type.models';\n\nexport interface AXFileChooseOptions {\n /** Logical type name(s) from {@link AXFileTypeRegistryService}. When set, files are validated against the catalog. */\n fileType?: string | string[];\n accept?: string;\n multiple?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXFileService {\n private readonly document = inject(DOCUMENT);\n private readonly fileTypes = inject(AXFileTypeRegistryService);\n\n async getFileTypes(): Promise<AXFileType[]> {\n return this.fileTypes.getTypes();\n }\n\n async getFileType(name: string): Promise<AXFileType | undefined> {\n return this.fileTypes.get(name);\n }\n\n async getAcceptAttribute(fileType?: string | string[]): Promise<string> {\n return this.fileTypes.accept(fileType);\n }\n\n async matchFileType(file: File): Promise<AXFileType | undefined> {\n return this.fileTypes.matchType(file);\n }\n\n validate(file: File, fileType: string | string[]): Promise<AXValidationRuleResult[]> {\n return this.fileTypes.validateAgainstTypes(file, fileType);\n }\n\n validateMany(\n files: File[],\n fileType: string | string[],\n ): Promise<{ accepted: File[]; rejected: { file: File; errors: AXValidationRuleResult[] }[] }> {\n return this.fileTypes.validateMany(files, fileType);\n }\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(\n options: AXFileChooseOptions,\n ): Promise<{ accepted: File[]; rejected: { file: File; errors: AXValidationRuleResult[] }[] }> {\n const resolved = await this.resolveChooseOptions(options);\n const files = await this.openFileDialog(resolved);\n\n if (files.length === 0) {\n return { accepted: [], rejected: [] };\n }\n\n if (options.fileType) {\n return this.validateMany(files, options.fileType);\n }\n\n return { accepted: files, rejected: [] };\n }\n\n async choose(options: AXFileChooseOptions): Promise<File[]> {\n const { accepted } = await this.chooseValidated(options);\n return accepted;\n }\n\n blobToBase64(blob: Blob): Promise<string> {\n if (!(blob instanceof Blob)) {\n return Promise.reject(new Error('input is not blob'));\n }\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error);\n reader.onload = () => resolve(reader.result as string);\n reader.readAsDataURL(blob);\n });\n }\n\n getSize(file: File | Blob | string): number | false {\n if (this.isBase64(file as string)) {\n return this.getBase64Size(file as string);\n }\n return false;\n }\n\n isBase64(base64: string): boolean {\n const regx = /[^:]\\w+\\/[\\w-+\\d.]+(?=;|,)/;\n return regx.test(base64);\n }\n\n getBase64Size(base64: string): number {\n return atob(base64.substring(base64.indexOf(',') + 1)).length;\n }\n\n private async resolveChooseOptions(\n options: AXFileChooseOptions,\n ): Promise<{ accept: string; multiple: boolean }> {\n const multiple = options.multiple ?? false;\n\n if (options.fileType) {\n const accept = options.accept ?? (await this.getAcceptAttribute(options.fileType));\n\n if (isDevMode() && !accept) {\n const name = Array.isArray(options.fileType) ? options.fileType.join(', ') : options.fileType;\n console.warn(\n `[AXFileService] No accept filter for file type \"${name}\". ` +\n 'Register a file type provider (e.g. provideConversationFileCatalog).',\n );\n }\n\n return { accept, multiple };\n }\n\n return { accept: options.accept ?? '', multiple };\n }\n\n private openFileDialog(options: { accept: string; multiple: boolean }): Promise<File[]> {\n return new Promise<File[]>((resolve, reject) => {\n const input: HTMLInputElement = 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\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\n const onError = (e: Event) => {\n cleanup();\n reject(e);\n };\n\n const onChange = () => {\n const files = Array.from(input.files ?? []);\n cleanup();\n resolve(files);\n };\n\n input.addEventListener('change', onChange);\n input.addEventListener('error', onError);\n input.click();\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["MB"],"mappings":"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"}
|
|
@@ -41,10 +41,10 @@ class AXFormatterRegistryService {
|
|
|
41
41
|
}
|
|
42
42
|
return formatter;
|
|
43
43
|
}
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
45
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatterRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatterRegistryService, providedIn: 'root' }); }
|
|
46
46
|
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatterRegistryService, decorators: [{
|
|
48
48
|
type: Injectable,
|
|
49
49
|
args: [{
|
|
50
50
|
providedIn: 'root',
|
|
@@ -82,10 +82,10 @@ class AXFormatService {
|
|
|
82
82
|
return new AXFormatFluent(this, this.pluginRegistry, value);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
86
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
86
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatService, providedIn: 'root' }); }
|
|
87
87
|
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatService, decorators: [{
|
|
89
89
|
type: Injectable,
|
|
90
90
|
args: [{ providedIn: 'root' }]
|
|
91
91
|
}] });
|
|
@@ -126,10 +126,10 @@ class AXFormatterDirective {
|
|
|
126
126
|
},
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
130
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
130
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: AXFormatterDirective, isStandalone: true, selector: "[formatter]", ngImport: i0 }); }
|
|
131
131
|
}
|
|
132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatterDirective, decorators: [{
|
|
133
133
|
type: Directive,
|
|
134
134
|
args: [{
|
|
135
135
|
selector: '[formatter]',
|
|
@@ -177,10 +177,10 @@ class AXFormatPipe {
|
|
|
177
177
|
// For non-periodic formatters, use the original behavior
|
|
178
178
|
return systemEvents$.pipe(startWith(null), map(() => this.formatService.format(value, name, options)));
|
|
179
179
|
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
181
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
180
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
181
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXFormatPipe, isStandalone: true, name: "format" }); }
|
|
182
182
|
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatPipe, decorators: [{
|
|
184
184
|
type: Pipe,
|
|
185
185
|
args: [{
|
|
186
186
|
name: 'format',
|
|
@@ -252,10 +252,10 @@ class AXNumberFormatter {
|
|
|
252
252
|
this.separatorsCache[locale] = { thousandSeparator, decimalSeparator };
|
|
253
253
|
return this.separatorsCache[locale];
|
|
254
254
|
}
|
|
255
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
256
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
255
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXNumberFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
256
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXNumberFormatter }); }
|
|
257
257
|
}
|
|
258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXNumberFormatter, decorators: [{
|
|
259
259
|
type: Injectable
|
|
260
260
|
}] });
|
|
261
261
|
|
|
@@ -330,11 +330,11 @@ class AXFormatModule {
|
|
|
330
330
|
f();
|
|
331
331
|
});
|
|
332
332
|
}
|
|
333
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
334
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
335
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
334
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXFormatModule, imports: [AXFormatterDirective, AXFormatPipe], exports: [AXFormatterDirective, AXFormatPipe] }); }
|
|
335
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatModule }); }
|
|
336
336
|
}
|
|
337
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXFormatModule, decorators: [{
|
|
338
338
|
type: NgModule,
|
|
339
339
|
args: [{
|
|
340
340
|
imports: [AXFormatterDirective, AXFormatPipe],
|