@acorex/core 20.9.0 → 20.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-core-file.mjs +140 -2
- package/fesm2022/acorex-core-file.mjs.map +1 -1
- package/file/index.d.ts +102 -6
- package/package.json +1 -1
|
@@ -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.models.js","../tmp-esm2022/file/lib/file-type/file-type.metadata.js","../tmp-esm2022/file/lib/file-type/file-type.copy.js","../tmp-esm2022/file/lib/file-type/file-type.merge.js","../tmp-esm2022/file/lib/file-type/file-type.resolve.js","../tmp-esm2022/file/lib/file-type/file-type.open.js","../tmp-esm2022/file/lib/file-type/file-type-info-provider.js","../tmp-esm2022/file/lib/file-type/file-type.validate.js","../tmp-esm2022/file/lib/file-type/file-type-registry.service.js","../tmp-esm2022/file/lib/file-type/types.providers/audio-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/document-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/file-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/image-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/video-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/index.js","../tmp-esm2022/file/lib/file-type/rules/file-mime-type.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-min-size.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-max-size.rule.js","../tmp-esm2022/file/lib/file-type/index.js","../tmp-esm2022/file/lib/file.module.js","../tmp-esm2022/file/lib/file.service.js","../tmp-esm2022/file/acorex-core-file.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileSizeFormatter {\n /**\n * Gets the name of the formatter.\n *\n * @returns string - The formatter name 'filesize'\n */\n get name() {\n return 'filesize';\n }\n /**\n * Formats a file size value to human-readable format.\n *\n * @param value - The file size in bytes\n * @returns string - The formatted file size string (e.g., '1.5 MB')\n */\n format(value) {\n const size = Number(value);\n if (size === 0)\n return '0 Bytes';\n if (Number.isNaN(size))\n return 'Unknown';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(size) / Math.log(k));\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtc2l6ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7OztPQUlHO0lBRUgsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFekMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsT0FBTyxVQUFVLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBN0JVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGZpbGVzaXplOiBBWEZpbGVTaXplRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlU2l6ZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdHRlci5cbiAgICpcbiAgICogQHJldHVybnMgc3RyaW5nIC0gVGhlIGZvcm1hdHRlciBuYW1lICdmaWxlc2l6ZSdcbiAgICovXG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2ZpbGVzaXplJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgZmlsZSBzaXplIHZhbHVlIHRvIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBUaGUgZm9ybWF0dGVkIGZpbGUgc2l6ZSBzdHJpbmcgKGUuZy4sICcxLjUgTUInKVxuICAgKi9cblxuICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuICcwIEJ5dGVzJztcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSByZXR1cm4gJ1Vua25vd24nO1xuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coc2l6ZSkgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCgoc2l6ZSAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpKSArICcgJyArIHNpemVzW2ldO1xuICB9XG59XG4iXX0=","/** Human-readable file size (binary units, e.g. `41.5 MB`). */\nexport function formatFileSizeBytes(bytes) {\n if (!Number.isFinite(bytes) || bytes < 0) {\n return '0 B';\n }\n if (bytes === 0) {\n return '0 B';\n }\n const k = 1024;\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), units.length - 1);\n const value = bytes / Math.pow(k, i);\n if (i === 0) {\n return `${bytes} B`;\n }\n const digits = value >= 100 ? 0 : value >= 10 ? 1 : 2;\n return `${value.toFixed(digits)} ${units[i]}`;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWZpbGUtc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2Zvcm1hdC1maWxlLXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDWixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIdW1hbi1yZWFkYWJsZSBmaWxlIHNpemUgKGJpbmFyeSB1bml0cywgZS5nLiBgNDEuNSBNQmApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbGVTaXplQnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGJ5dGVzKSB8fCBieXRlcyA8IDApIHtcbiAgICByZXR1cm4gJzAgQic7XG4gIH1cbiAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgcmV0dXJuICcwIEInO1xuICB9XG5cbiAgY29uc3QgayA9IDEwMjQ7XG4gIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XG4gIGNvbnN0IGkgPSBNYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKSwgdW5pdHMubGVuZ3RoIC0gMSk7XG4gIGNvbnN0IHZhbHVlID0gYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKTtcblxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBgJHtieXRlc30gQmA7XG4gIH1cblxuICBjb25zdCBkaWdpdHMgPSB2YWx1ZSA+PSAxMDAgPyAwIDogdmFsdWUgPj0gMTAgPyAxIDogMjtcbiAgcmV0dXJuIGAke3ZhbHVlLnRvRml4ZWQoZGlnaXRzKX0gJHt1bml0c1tpXX1gO1xufVxuIl19","/** Metadata key for catalog usage context. */\nexport const AX_FILE_TYPE_METADATA_PURPOSE = 'purpose';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9maWxlLXR5cGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxTQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZUNvbnRleHQsIEFYRmlsZVR5cGVPcGVuQ29udGV4dCB9IGZyb20gJy4vZmlsZS10eXBlLmNvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVDb3B5UmVzdWx0IH0gZnJvbSAnLi9maWxlLXR5cGUuY29weSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZU9wZW5SZXN1bHQgfSBmcm9tICcuL2ZpbGUtdHlwZS5vcGVuJztcblxuLyoqIE1ldGFkYXRhIGtleSBmb3IgY2F0YWxvZyB1c2FnZSBjb250ZXh0LiAqL1xuZXhwb3J0IGNvbnN0IEFYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFID0gJ3B1cnBvc2UnIGFzIGNvbnN0O1xuXG4vKiogQ2F0YWxvZyBtZXRhZGF0YSBiYWc7IGBwdXJwb3NlYCBsaXN0cyB1c2FnZSBjb250ZXh0cyAoZS5nLiBgWydzeXN0ZW0nXWApLiAqL1xuZXhwb3J0IHR5cGUgQVhGaWxlVHlwZU1ldGFkYXRhID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7XG4gIFtBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRV0/OiBzdHJpbmdbXTtcbn07XG5cbi8qKiBGaWx0ZXIgY2F0YWxvZyBlbnRyaWVzIGJ5IHtAbGluayBBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRX0uICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVR5cGVRdWVyeSB7XG4gIHB1cnBvc2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuLyoqIEdlbmVyaWMgcnVsZSBleGVjdXRlZCB2aWEge0BsaW5rIEFYVmFsaWRhdGlvblNlcnZpY2V9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVWYWxpZGF0aW9uUnVsZSB7XG4gIHJ1bGU6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xufVxuXG4vKipcbiAqIENvbW1vbiBmaWxlIGNvbnN0cmFpbnRzIHNoYXJlZCBieSB7QGxpbmsgQVhGaWxlVHlwZX0gYW5kIHtAbGluayBBWEZpbGVUeXBlRXh0ZW5zaW9ufS5cbiAqIEV4dGVuc2lvbiBgdmFsaWRhdGlvbnNgIG92ZXJyaWRlIHRoZSBwYXJlbnQgdHlwZSBmaWVsZC1ieS1maWVsZCB3aGVuIG1lcmdlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIG1pbWVUeXBlcz86IHN0cmluZ1tdO1xuICBtaW5TaXplPzogbnVtYmVyO1xuICBtYXhTaXplPzogbnVtYmVyO1xuICBydWxlcz86IEFYRmlsZVZhbGlkYXRpb25SdWxlW107XG59XG5cbnR5cGUgQVhGaWxlVHlwZVV0aWxpdGllcyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICAoY3R4OiBBWEZpbGVUeXBlQ29udGV4dCwgLi4uYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+IHwgdW5rbm93blxuPjtcblxuLyoqXG4gKiBMb2dpY2FsIGZpbGUgY2F0ZWdvcnkgKGltYWdlLCB2aWRlbywg4oCmKS5cbiAqXG4gKiAtIFdpdGggdHlwZSBgdmFsaWRhdGlvbnNgIHNldDogYW55IGZpbGUgbWF0Y2hpbmcgdGhvc2UgcnVsZXMgaXMgYWxsb3dlZDsgYGV4dGVuc2lvbnNgIG9ubHkgb3ZlcnJpZGUgd2hlbiBtYXRjaGVkLlxuICogLSBXaXRoIGVtcHR5IC8gb21pdHRlZCBgdmFsaWRhdGlvbnNgIGFuZCBgZXh0ZW5zaW9uc2AgbGlzdGVkOiBvbmx5IHRob3NlIGV4dGVuc2lvbnMgYXJlIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlVHlwZTxUIGV4dGVuZHMgQVhGaWxlVHlwZVV0aWxpdGllcyA9IEFYRmlsZVR5cGVVdGlsaXRpZXM+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBBWEZpbGVUeXBlTWV0YWRhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhGaWxlVmFsaWRhdGlvbnM7XG4gIGV4dGVuc2lvbnM/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uPFQ+W107XG4gIC8qKiBEeW5hbWljIHV0aWxpdHkgZnVuY3Rpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBmaWxlIHR5cGUuICovXG4gIHV0aWxpdGllcz86IFQ7XG4gIHBhc3RlPzogKCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgLyoqXG4gICAqIFByb2R1Y2UgY29weWFibGUgY29udGVudCBmcm9tIGEgcGF5bG9hZCAoZG9lcyBub3Qgd3JpdGUgdG8gdGhlIGNsaXBib2FyZCkuXG4gICAqIFJldHVybnMgYSBwbGFpbiBzdHJpbmcgb3Ige0BsaW5rIEFYRmlsZUNvcHlEYXRhfSB3aXRoIGB0ZXh0YCBhbmQgb3B0aW9uYWwgYG1ldGFgLlxuICAgKi9cbiAgY29weT86IChwYXlsb2FkOiB1bmtub3duKSA9PiBQcm9taXNlPEFYRmlsZUNvcHlSZXN1bHQ+IHwgQVhGaWxlQ29weVJlc3VsdDtcbiAgLyoqXG4gICAqIE9wZW4gb3IgcHJldmlldyBhIHBheWxvYWQgKGUuZy4gbmF2aWdhdGUsIHNob3cgYSBkaWFsb2cpLlxuICAgKiBJbnZva2UgdmlhIHtAbGluayBydW5GaWxlVHlwZU9wZW59IHNvIGBpbmplY3QoKWAgd29ya3MgaW4gdGhlIGNhbGxlcidzIGNvbnRleHQuXG4gICAqL1xuICBvcGVuPzogKFxuICAgIGN0eDogQVhGaWxlVHlwZU9wZW5Db250ZXh0LFxuICAgIHBheWxvYWQ6IHVua25vd24sXG4gICkgPT4gUHJvbWlzZTxBWEZpbGVPcGVuUmVzdWx0PiB8IEFYRmlsZU9wZW5SZXN1bHQ7XG59XG5cbi8qKiBFeHRlbnNpb24gZW50cnkg4oCUIHtAbGluayBBWEZpbGVUeXBlfSB3aXRob3V0IG5lc3RlZCBgZXh0ZW5zaW9uc2AuICovXG5leHBvcnQgdHlwZSBBWEZpbGVUeXBlRXh0ZW5zaW9uPFQgZXh0ZW5kcyBBWEZpbGVUeXBlVXRpbGl0aWVzID0gQVhGaWxlVHlwZVV0aWxpdGllcz4gPSBPbWl0PFxuICBBWEZpbGVUeXBlPFQ+LFxuICAnZXh0ZW5zaW9ucydcbj47XG4iXX0=","import { AX_FILE_TYPE_METADATA_PURPOSE } from './file-type.models';\nexport { AX_FILE_TYPE_METADATA_PURPOSE } from './file-type.models';\nconst CONVERSATION_NAME_PREFIX = 'conversation-';\nexport function getFileTypePurposes(type) {\n const raw = type.metadata?.[AX_FILE_TYPE_METADATA_PURPOSE];\n if (Array.isArray(raw)) {\n const values = raw.filter((entry) => typeof entry === 'string' && entry.trim().length > 0);\n if (values.length) {\n return values;\n }\n }\n if (type.name.startsWith(CONVERSATION_NAME_PREFIX)) {\n return ['conversation'];\n }\n return ['system'];\n}\nexport function fileTypeMatchesPurpose(type, purpose) {\n const allowed = Array.isArray(purpose) ? purpose : [purpose];\n return getFileTypePurposes(type).some((entry) => allowed.includes(entry));\n}\nexport function filterFileTypesByPurpose(types, purpose) {\n if (!purpose) {\n return types;\n }\n return types.filter((type) => fileTypeMatchesPurpose(type, purpose));\n}\nexport function createFileTypeMetadata(purpose) {\n const values = (Array.isArray(purpose) ? purpose : [purpose]).filter((entry) => typeof entry === 'string' && entry.trim().length > 0);\n return { [AX_FILE_TYPE_METADATA_PURPOSE]: values };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQztBQUVqRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBZ0I7SUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDM0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBbUIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLE9BQTBCO0lBQ2pGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBbUIsRUFBRSxPQUEyQjtJQUN2RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBMEI7SUFDL0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ2xFLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNqRixDQUFDO0lBQ0YsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcbmltcG9ydCB7IEFYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuZXhwb3J0IHsgQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0UgfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBDT05WRVJTQVRJT05fTkFNRV9QUkVGSVggPSAnY29udmVyc2F0aW9uLSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlVHlwZVB1cnBvc2VzKHR5cGU6IEFYRmlsZVR5cGUpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJhdyA9IHR5cGUubWV0YWRhdGE/LltBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRV07XG4gIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSByYXcuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnICYmIGVudHJ5LnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGUubmFtZS5zdGFydHNXaXRoKENPTlZFUlNBVElPTl9OQU1FX1BSRUZJWCkpIHtcbiAgICByZXR1cm4gWydjb252ZXJzYXRpb24nXTtcbiAgfVxuICByZXR1cm4gWydzeXN0ZW0nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVUeXBlTWF0Y2hlc1B1cnBvc2UodHlwZTogQVhGaWxlVHlwZSwgcHVycG9zZTogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgY29uc3QgYWxsb3dlZCA9IEFycmF5LmlzQXJyYXkocHVycG9zZSkgPyBwdXJwb3NlIDogW3B1cnBvc2VdO1xuICByZXR1cm4gZ2V0RmlsZVR5cGVQdXJwb3Nlcyh0eXBlKS5zb21lKChlbnRyeSkgPT4gYWxsb3dlZC5pbmNsdWRlcyhlbnRyeSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRmlsZVR5cGVzQnlQdXJwb3NlKHR5cGVzOiBBWEZpbGVUeXBlW10sIHB1cnBvc2U/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IEFYRmlsZVR5cGVbXSB7XG4gIGlmICghcHVycG9zZSkge1xuICAgIHJldHVybiB0eXBlcztcbiAgfVxuICByZXR1cm4gdHlwZXMuZmlsdGVyKCh0eXBlKSA9PiBmaWxlVHlwZU1hdGNoZXNQdXJwb3NlKHR5cGUsIHB1cnBvc2UpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEocHVycG9zZTogc3RyaW5nIHwgc3RyaW5nW10pOiBOb25OdWxsYWJsZTxBWEZpbGVUeXBlWydtZXRhZGF0YSddPiB7XG4gIGNvbnN0IHZhbHVlcyA9IChBcnJheS5pc0FycmF5KHB1cnBvc2UpID8gcHVycG9zZSA6IFtwdXJwb3NlXSkuZmlsdGVyKFxuICAgIChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnICYmIGVudHJ5LnRyaW0oKS5sZW5ndGggPiAwLFxuICApO1xuICByZXR1cm4geyBbQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0VdOiB2YWx1ZXMgfTtcbn1cbiJdfQ==","/** Resolves clipboard/plain text from a copy result. */\nexport function resolveFileCopyText(result) {\n if (result == null) {\n return null;\n }\n if (typeof result === 'string') {\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n const trimmed = result.text?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLmNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0Esd0RBQXdEO0FBQ3hELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUF3QjtJQUMxRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTdHJ1Y3R1cmVkIGNvcHkgcGF5bG9hZCBmcm9tIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVDb3B5RGF0YSB7XG4gIC8qKiBQcmltYXJ5IHBsYWluLXRleHQgdmFsdWUgZm9yIGNsaXBib2FyZCBvciBwcmV2aWV3cy4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdHlwZS1zcGVjaWZpYyBtZXRhZGF0YSBmb3IgY29uc3VtZXJzIChVUkxzLCBuYW1lcywgbWltZSB0eXBlcywg4oCmKS4gKi9cbiAgbWV0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogUmV0dXJuIHZhbHVlIG9mIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9IOKAlCBzaG9ydGhhbmQgc3RyaW5nIG9yIHN0cnVjdHVyZWQgZGF0YS4gKi9cbmV4cG9ydCB0eXBlIEFYRmlsZUNvcHlSZXN1bHQgPSBzdHJpbmcgfCBBWEZpbGVDb3B5RGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKiBSZXNvbHZlcyBjbGlwYm9hcmQvcGxhaW4gdGV4dCBmcm9tIGEgY29weSByZXN1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVDb3B5VGV4dChyZXN1bHQ6IEFYRmlsZUNvcHlSZXN1bHQpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJlc3VsdC50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID4gMCA/IHRyaW1tZWQgOiBudWxsO1xuICB9XG4gIGNvbnN0IHRyaW1tZWQgPSByZXN1bHQudGV4dD8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCAmJiB0cmltbWVkLmxlbmd0aCA+IDAgPyB0cmltbWVkIDogbnVsbDtcbn1cbiJdfQ==","/** 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 entry. */\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//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1lcmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXJnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSx5RkFBeUY7QUFDekYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUF1QixFQUN2QixRQUFxQztJQUVyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQy9DLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLFNBQStCO0lBQ3RGLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQStCO0lBQ3BFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLENBQ0wsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSTtRQUMzQixXQUFXLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDM0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3ZDLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQWdCO0lBQ25ELE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlLCBBWEZpbGVUeXBlRXh0ZW5zaW9uLCBBWEZpbGVWYWxpZGF0aW9ucyB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5cbi8qKiBNZXJnZXMgdHlwZS1sZXZlbCB2YWxpZGF0aW9ucyB3aXRoIGV4dGVuc2lvbiBvdmVycmlkZXMgKGV4dGVuc2lvbiB3aW5zIHBlciBmaWVsZCkuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWxlVmFsaWRhdGlvbnMoXG4gIGJhc2U6IEFYRmlsZVZhbGlkYXRpb25zLFxuICBvdmVycmlkZT86IFBhcnRpYWw8QVhGaWxlVmFsaWRhdGlvbnM+LFxuKTogQVhGaWxlVmFsaWRhdGlvbnMge1xuICBpZiAoIW92ZXJyaWRlKSB7XG4gICAgcmV0dXJuIHsgLi4uYmFzZSB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtaW1lVHlwZXM6IG92ZXJyaWRlLm1pbWVUeXBlcyA/PyBiYXNlLm1pbWVUeXBlcyxcbiAgICBtaW5TaXplOiBvdmVycmlkZS5taW5TaXplID8/IGJhc2UubWluU2l6ZSxcbiAgICBtYXhTaXplOiBvdmVycmlkZS5tYXhTaXplID8/IGJhc2UubWF4U2l6ZSxcbiAgICBydWxlczogb3ZlcnJpZGUucnVsZXMgPz8gYmFzZS5ydWxlcyxcbiAgfTtcbn1cblxuLyoqIFJlc29sdmVkIHZhbGlkYXRpb25zIGZvciBhIHR5cGUgKyBvcHRpb25hbCBleHRlbnNpb24gZW50cnkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVWYWxpZGF0aW9ucyh0eXBlOiBBWEZpbGVUeXBlLCBleHRlbnNpb24/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uKTogQVhGaWxlVmFsaWRhdGlvbnMge1xuICByZXR1cm4gbWVyZ2VGaWxlVmFsaWRhdGlvbnModHlwZS52YWxpZGF0aW9ucyA/PyB7fSwgZXh0ZW5zaW9uPy52YWxpZGF0aW9ucyk7XG59XG5cbi8qKiBUcnVlIHdoZW4gbm8gbWltZS9zaXplL3J1bGVzIGFyZSBkZWZpbmVkIG9uIHRoZSB0eXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHlGaWxlVmFsaWRhdGlvbnModmFsaWRhdGlvbnM/OiBBWEZpbGVWYWxpZGF0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAoIXZhbGlkYXRpb25zKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIChcbiAgICAodmFsaWRhdGlvbnMubWltZVR5cGVzPy5sZW5ndGggPz8gMCkgPT09IDAgJiZcbiAgICB2YWxpZGF0aW9ucy5taW5TaXplID09IG51bGwgJiZcbiAgICB2YWxpZGF0aW9ucy5tYXhTaXplID09IG51bGwgJiZcbiAgICAodmFsaWRhdGlvbnMucnVsZXM/Lmxlbmd0aCA/PyAwKSA9PT0gMFxuICApO1xufVxuXG4vKipcbiAqIEV4dGVuc2lvbi1vbmx5IG1vZGU6IGVtcHR5IHR5cGUgYHZhbGlkYXRpb25zYCBhbmQgYSBub24tZW1wdHkgYGV4dGVuc2lvbnNgIGxpc3QuXG4gKiBGaWxlcyBtdXN0IG1hdGNoIGEgbGlzdGVkIGV4dGVuc2lvbjsgcnVsZXMgY29tZSBmcm9tIHRoYXQgZXh0ZW5zaW9uIGVudHJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlbnNpb25zT25seVR5cGUodHlwZTogQVhGaWxlVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNFbXB0eUZpbGVWYWxpZGF0aW9ucyh0eXBlLnZhbGlkYXRpb25zKSAmJiAodHlwZS5leHRlbnNpb25zPy5sZW5ndGggPz8gMCkgPiAwO1xufVxuXG4vKiogRmlsZSBleHRlbnNpb24gZnJvbSBuYW1lIChsb3dlcmNhc2UsIG5vIGRvdCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHMgPSBmaWxlTmFtZS50cmltKCkuc3BsaXQoJy4nKTtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyAocGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCkgPz8gJycpIDogJyc7XG59XG4iXX0=","import { getFileExtension } from './file-type.merge';\n/** Matches a MIME type against a catalog pattern (`image/*`, exact type, …). */\nexport function matchesFileMime(mime, pattern) {\n const normalizedMime = mime.trim().toLowerCase();\n const normalizedPattern = pattern.trim().toLowerCase();\n if (!normalizedPattern || normalizedPattern === '*/*' || normalizedPattern === '*') {\n return true;\n }\n if (normalizedPattern.endsWith('/*')) {\n const category = normalizedPattern.slice(0, -2);\n return normalizedMime.startsWith(`${category}/`) || (normalizedMime === '' && category === 'application');\n }\n return normalizedMime === normalizedPattern;\n}\n/** Finds an extension entry by its `name` (without dot). */\nexport function findFileTypeExtensionByName(type, extensionName) {\n const ext = extensionName.replace(/^\\./, '').trim().toLowerCase();\n if (!ext || !type.extensions?.length) {\n return undefined;\n }\n return type.extensions.find((entry) => entry.name.toLowerCase() === ext);\n}\n/** Finds an extension entry whose validations include the given MIME type. */\nexport function findFileTypeExtensionForMime(type, mimeType) {\n const mime = mimeType.trim().toLowerCase();\n if (!mime || !type.extensions?.length) {\n return undefined;\n }\n return type.extensions.find((entry) => entry.validations?.mimeTypes?.some((pattern) => matchesFileMime(mime, pattern)));\n}\n/** Matching extension entry for a file within a type, if any. */\nexport function findFileTypeExtension(file, type) {\n return resolveFileTypeExtension(type, { file });\n}\n/** Resolves the best-matching extension entry for a file or hint. */\nexport function resolveFileTypeExtension(type, hint) {\n if (!hint) {\n return undefined;\n }\n if (hint.file) {\n const byFileName = findFileTypeExtensionByName(type, getFileExtension(hint.file.name));\n if (byFileName) {\n return byFileName;\n }\n if (hint.file.type) {\n const byFileMime = findFileTypeExtensionForMime(type, hint.file.type);\n if (byFileMime) {\n return byFileMime;\n }\n }\n }\n if (hint.extensionName) {\n const byName = findFileTypeExtensionByName(type, hint.extensionName);\n if (byName) {\n return byName;\n }\n }\n if (hint.mimeType) {\n return findFileTypeExtensionForMime(type, hint.mimeType);\n }\n return undefined;\n}\nexport function resolveFileTypeCopy(type, extension) {\n return extension?.copy ?? type.copy;\n}\nexport function resolveFileTypeOpen(type, extension) {\n return extension?.open ?? type.open;\n}\nexport function resolveFileTypePaste(type, extension) {\n return extension?.paste ?? type.paste;\n}\nexport function resolveFileTypeUtility(type, extension, name) {\n const fromExtension = extension?.utilities?.[name];\n if (fromExtension) {\n return fromExtension;\n }\n return type.utilities?.[name];\n}\n/** Runs `copy` from extension first, then parent type. */\nexport async function runFileTypeCopy(type, payload, extension) {\n const copy = resolveFileTypeCopy(type, extension);\n if (!copy) {\n return undefined;\n }\n return copy(payload);\n}\n/** Runs a utility from extension first, then parent type. */\nexport function runFileTypeUtility(type, ctx, extension, name, ...args) {\n const utility = resolveFileTypeUtility(type, extension, name);\n if (!utility) {\n return undefined;\n }\n return utility(ctx, ...args);\n}\n/** Runs a catalog utility with optional file-based extension resolution. */\nexport function runFileTypeUtilityForFile(type, ctx, file, name, ...args) {\n const extension = file ? findFileTypeExtension(file, type) : undefined;\n return runFileTypeUtility(type, ctx, extension, name, ...args);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnJlc29sdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLnJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFVckQsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQWU7SUFDM0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXZELElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLElBQUksaUJBQWlCLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxFQUFFLElBQUksUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxPQUFPLGNBQWMsS0FBSyxpQkFBaUIsQ0FBQztBQUM5QyxDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsSUFBZ0IsRUFDaEIsYUFBcUI7SUFFckIsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDckMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLElBQWdCLEVBQ2hCLFFBQWdCO0lBRWhCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3BDLEtBQUssQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUNoRixDQUFDO0FBQ0osQ0FBQztBQUVELGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBVSxFQUFFLElBQWdCO0lBQ2hFLE9BQU8sd0JBQXdCLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsSUFBZ0IsRUFDaEIsSUFBOEI7SUFFOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsTUFBTSxVQUFVLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0RSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLDJCQUEyQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxJQUFnQixFQUNoQixTQUErQjtJQUUvQixPQUFPLFNBQVMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxJQUFnQixFQUNoQixTQUErQjtJQUUvQixPQUFPLFNBQVMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUFnQixFQUNoQixTQUErQjtJQUUvQixPQUFPLFNBQVMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxJQUFnQixFQUNoQixTQUEwQyxFQUMxQyxJQUFZO0lBRVosTUFBTSxhQUFhLEdBQUcsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLElBQWdCLEVBQ2hCLE9BQWdCLEVBQ2hCLFNBQStCO0lBRS9CLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQWdCLEVBQ2hCLEdBQXNCLEVBQ3RCLFNBQTBDLEVBQzFDLElBQVksRUFDWixHQUFHLElBQWU7SUFFbEIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLElBQWdCLEVBQ2hCLEdBQXNCLEVBQ3RCLElBQXNCLEVBQ3RCLElBQVksRUFDWixHQUFHLElBQWU7SUFFbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RSxPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGVDb250ZXh0IH0gZnJvbSAnLi9maWxlLXR5cGUuY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZUNvcHlSZXN1bHQgfSBmcm9tICcuL2ZpbGUtdHlwZS5jb3B5JztcbmltcG9ydCB7IGdldEZpbGVFeHRlbnNpb24gfSBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24gfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG4vKiogSGludCBmb3IgcmVzb2x2aW5nIGEgY2F0YWxvZyBleHRlbnNpb24gZW50cnkuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVR5cGVFeHRlbnNpb25IaW50IHtcbiAgZmlsZT86IEZpbGU7XG4gIGV4dGVuc2lvbk5hbWU/OiBzdHJpbmc7XG4gIG1pbWVUeXBlPzogc3RyaW5nO1xufVxuXG4vKiogTWF0Y2hlcyBhIE1JTUUgdHlwZSBhZ2FpbnN0IGEgY2F0YWxvZyBwYXR0ZXJuIChgaW1hZ2UvKmAsIGV4YWN0IHR5cGUsIOKApikuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hlc0ZpbGVNaW1lKG1pbWU6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRNaW1lID0gbWltZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdHRlcm4gPSBwYXR0ZXJuLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICghbm9ybWFsaXplZFBhdHRlcm4gfHwgbm9ybWFsaXplZFBhdHRlcm4gPT09ICcqLyonIHx8IG5vcm1hbGl6ZWRQYXR0ZXJuID09PSAnKicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChub3JtYWxpemVkUGF0dGVybi5lbmRzV2l0aCgnLyonKSkge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gbm9ybWFsaXplZFBhdHRlcm4uc2xpY2UoMCwgLTIpO1xuICAgIHJldHVybiBub3JtYWxpemVkTWltZS5zdGFydHNXaXRoKGAke2NhdGVnb3J5fS9gKSB8fCAobm9ybWFsaXplZE1pbWUgPT09ICcnICYmIGNhdGVnb3J5ID09PSAnYXBwbGljYXRpb24nKTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkTWltZSA9PT0gbm9ybWFsaXplZFBhdHRlcm47XG59XG5cbi8qKiBGaW5kcyBhbiBleHRlbnNpb24gZW50cnkgYnkgaXRzIGBuYW1lYCAod2l0aG91dCBkb3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaWxlVHlwZUV4dGVuc2lvbkJ5TmFtZShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uTmFtZTogc3RyaW5nLFxuKTogQVhGaWxlVHlwZUV4dGVuc2lvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV4dCA9IGV4dGVuc2lvbk5hbWUucmVwbGFjZSgvXlxcLi8sICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgaWYgKCFleHQgfHwgIXR5cGUuZXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gdHlwZS5leHRlbnNpb25zLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IGV4dCk7XG59XG5cbi8qKiBGaW5kcyBhbiBleHRlbnNpb24gZW50cnkgd2hvc2UgdmFsaWRhdGlvbnMgaW5jbHVkZSB0aGUgZ2l2ZW4gTUlNRSB0eXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaWxlVHlwZUV4dGVuc2lvbkZvck1pbWUoXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIG1pbWVUeXBlOiBzdHJpbmcsXG4pOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWltZSA9IG1pbWVUeXBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIW1pbWUgfHwgIXR5cGUuZXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB0eXBlLmV4dGVuc2lvbnMuZmluZCgoZW50cnkpID0+XG4gICAgZW50cnkudmFsaWRhdGlvbnM/Lm1pbWVUeXBlcz8uc29tZSgocGF0dGVybikgPT4gbWF0Y2hlc0ZpbGVNaW1lKG1pbWUsIHBhdHRlcm4pKSxcbiAgKTtcbn1cblxuLyoqIE1hdGNoaW5nIGV4dGVuc2lvbiBlbnRyeSBmb3IgYSBmaWxlIHdpdGhpbiBhIHR5cGUsIGlmIGFueS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRmlsZVR5cGVFeHRlbnNpb24oZmlsZTogRmlsZSwgdHlwZTogQVhGaWxlVHlwZSk6IEFYRmlsZVR5cGVFeHRlbnNpb24gfCB1bmRlZmluZWQge1xuICByZXR1cm4gcmVzb2x2ZUZpbGVUeXBlRXh0ZW5zaW9uKHR5cGUsIHsgZmlsZSB9KTtcbn1cblxuLyoqIFJlc29sdmVzIHRoZSBiZXN0LW1hdGNoaW5nIGV4dGVuc2lvbiBlbnRyeSBmb3IgYSBmaWxlIG9yIGhpbnQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVUeXBlRXh0ZW5zaW9uKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBoaW50PzogQVhGaWxlVHlwZUV4dGVuc2lvbkhpbnQsXG4pOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFoaW50KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChoaW50LmZpbGUpIHtcbiAgICBjb25zdCBieUZpbGVOYW1lID0gZmluZEZpbGVUeXBlRXh0ZW5zaW9uQnlOYW1lKHR5cGUsIGdldEZpbGVFeHRlbnNpb24oaGludC5maWxlLm5hbWUpKTtcbiAgICBpZiAoYnlGaWxlTmFtZSkge1xuICAgICAgcmV0dXJuIGJ5RmlsZU5hbWU7XG4gICAgfVxuICAgIGlmIChoaW50LmZpbGUudHlwZSkge1xuICAgICAgY29uc3QgYnlGaWxlTWltZSA9IGZpbmRGaWxlVHlwZUV4dGVuc2lvbkZvck1pbWUodHlwZSwgaGludC5maWxlLnR5cGUpO1xuICAgICAgaWYgKGJ5RmlsZU1pbWUpIHtcbiAgICAgICAgcmV0dXJuIGJ5RmlsZU1pbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGhpbnQuZXh0ZW5zaW9uTmFtZSkge1xuICAgIGNvbnN0IGJ5TmFtZSA9IGZpbmRGaWxlVHlwZUV4dGVuc2lvbkJ5TmFtZSh0eXBlLCBoaW50LmV4dGVuc2lvbk5hbWUpO1xuICAgIGlmIChieU5hbWUpIHtcbiAgICAgIHJldHVybiBieU5hbWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGhpbnQubWltZVR5cGUpIHtcbiAgICByZXR1cm4gZmluZEZpbGVUeXBlRXh0ZW5zaW9uRm9yTWltZSh0eXBlLCBoaW50Lm1pbWVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVR5cGVDb3B5KFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBleHRlbnNpb24/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uLFxuKTogQVhGaWxlVHlwZVsnY29weSddIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGV4dGVuc2lvbj8uY29weSA/PyB0eXBlLmNvcHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVR5cGVPcGVuKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBleHRlbnNpb24/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uLFxuKTogQVhGaWxlVHlwZVsnb3BlbiddIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGV4dGVuc2lvbj8ub3BlbiA/PyB0eXBlLm9wZW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVR5cGVQYXN0ZShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uPzogQVhGaWxlVHlwZUV4dGVuc2lvbixcbik6IEFYRmlsZVR5cGVbJ3Bhc3RlJ10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZXh0ZW5zaW9uPy5wYXN0ZSA/PyB0eXBlLnBhc3RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVUeXBlVXRpbGl0eShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBzdHJpbmcsXG4pOiAoKGN0eDogQVhGaWxlVHlwZUNvbnRleHQsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24pIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZnJvbUV4dGVuc2lvbiA9IGV4dGVuc2lvbj8udXRpbGl0aWVzPy5bbmFtZV07XG4gIGlmIChmcm9tRXh0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGZyb21FeHRlbnNpb247XG4gIH1cbiAgcmV0dXJuIHR5cGUudXRpbGl0aWVzPy5bbmFtZV07XG59XG5cbi8qKiBSdW5zIGBjb3B5YCBmcm9tIGV4dGVuc2lvbiBmaXJzdCwgdGhlbiBwYXJlbnQgdHlwZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5GaWxlVHlwZUNvcHkoXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIHBheWxvYWQ6IHVua25vd24sXG4gIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24sXG4pOiBQcm9taXNlPEFYRmlsZUNvcHlSZXN1bHQ+IHtcbiAgY29uc3QgY29weSA9IHJlc29sdmVGaWxlVHlwZUNvcHkodHlwZSwgZXh0ZW5zaW9uKTtcbiAgaWYgKCFjb3B5KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gY29weShwYXlsb2FkKTtcbn1cblxuLyoqIFJ1bnMgYSB1dGlsaXR5IGZyb20gZXh0ZW5zaW9uIGZpcnN0LCB0aGVuIHBhcmVudCB0eXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkZpbGVUeXBlVXRpbGl0eShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgY3R4OiBBWEZpbGVUeXBlQ29udGV4dCxcbiAgZXh0ZW5zaW9uOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBzdHJpbmcsXG4gIC4uLmFyZ3M6IHVua25vd25bXVxuKTogUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24ge1xuICBjb25zdCB1dGlsaXR5ID0gcmVzb2x2ZUZpbGVUeXBlVXRpbGl0eSh0eXBlLCBleHRlbnNpb24sIG5hbWUpO1xuICBpZiAoIXV0aWxpdHkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1dGlsaXR5KGN0eCwgLi4uYXJncyk7XG59XG5cbi8qKiBSdW5zIGEgY2F0YWxvZyB1dGlsaXR5IHdpdGggb3B0aW9uYWwgZmlsZS1iYXNlZCBleHRlbnNpb24gcmVzb2x1dGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5GaWxlVHlwZVV0aWxpdHlGb3JGaWxlKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBjdHg6IEFYRmlsZVR5cGVDb250ZXh0LFxuICBmaWxlOiBGaWxlIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBzdHJpbmcsXG4gIC4uLmFyZ3M6IHVua25vd25bXVxuKTogUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24ge1xuICBjb25zdCBleHRlbnNpb24gPSBmaWxlID8gZmluZEZpbGVUeXBlRXh0ZW5zaW9uKGZpbGUsIHR5cGUpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcnVuRmlsZVR5cGVVdGlsaXR5KHR5cGUsIGN0eCwgZXh0ZW5zaW9uLCBuYW1lLCAuLi5hcmdzKTtcbn1cbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { resolveFileTypeOpen } from './file-type.resolve';\n/** Runs `open` from extension first, then parent type, in the caller's injection context. */\nexport function runFileTypeOpen(type, ctx, payload, extension) {\n const open = resolveFileTypeOpen(type, extension);\n if (!open) {\n return false;\n }\n return runInInjectionContext(ctx.injector, () => open(ctx, payload));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm9wZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLm9wZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSzFELDZGQUE2RjtBQUM3RixNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUFnQixFQUNoQixHQUEwQixFQUMxQixPQUFnQixFQUNoQixTQUErQjtJQUUvQixNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZU9wZW5Db250ZXh0IH0gZnJvbSAnLi9maWxlLXR5cGUuY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24gfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuaW1wb3J0IHsgcmVzb2x2ZUZpbGVUeXBlT3BlbiB9IGZyb20gJy4vZmlsZS10eXBlLnJlc29sdmUnO1xuXG4vKiogUmVzdWx0IG9mIHtAbGluayBBWEZpbGVUeXBlLm9wZW59OyBgZmFsc2VgIG1lYW5zIHRoZSBwYXlsb2FkIHdhcyBub3Qgb3BlbmVkLiAqL1xuZXhwb3J0IHR5cGUgQVhGaWxlT3BlblJlc3VsdCA9IHZvaWQgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqIFJ1bnMgYG9wZW5gIGZyb20gZXh0ZW5zaW9uIGZpcnN0LCB0aGVuIHBhcmVudCB0eXBlLCBpbiB0aGUgY2FsbGVyJ3MgaW5qZWN0aW9uIGNvbnRleHQuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuRmlsZVR5cGVPcGVuKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBjdHg6IEFYRmlsZVR5cGVPcGVuQ29udGV4dCxcbiAgcGF5bG9hZDogdW5rbm93bixcbiAgZXh0ZW5zaW9uPzogQVhGaWxlVHlwZUV4dGVuc2lvbixcbik6IFByb21pc2U8QVhGaWxlT3BlblJlc3VsdD4gfCBBWEZpbGVPcGVuUmVzdWx0IHtcbiAgY29uc3Qgb3BlbiA9IHJlc29sdmVGaWxlVHlwZU9wZW4odHlwZSwgZXh0ZW5zaW9uKTtcbiAgaWYgKCFvcGVuKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoY3R4LmluamVjdG9yLCAoKSA9PiBvcGVuKGN0eCwgcGF5bG9hZCkpO1xufVxuIl19","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==","import { getFileExtension, isExtensionsOnlyType, resolveFileValidations, } from './file-type.merge';\nimport { findFileTypeExtension } from './file-type.resolve';\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnZhbGlkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS52YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc1RCx1RUFBdUU7QUFDdkUsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQThCO0lBQ25FLE1BQU0sS0FBSyxHQUEyQixFQUFFLENBQUM7SUFFekMsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsY0FBYztZQUNwQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRTtTQUM1QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsYUFBYTtZQUNuQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsYUFBYTtZQUNuQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUMvQyxVQUErQixFQUMvQixJQUFVLEVBQ1YsV0FBOEI7SUFFOUIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQTZCLEVBQUUsQ0FBQztJQUU1QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELDRGQUE0RjtBQUM1RixNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxVQUErQixFQUMvQixJQUFVLEVBQ1YsSUFBZ0IsRUFDaEIsU0FBK0I7SUFFL0IsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLElBQUkscUJBQXFCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXhFLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0NBQXNDO2dCQUM3RixLQUFLLEVBQUUsR0FBRzthQUNYO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRSxPQUFPLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVmFsaWRhdGlvblNlcnZpY2UsIHR5cGUgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7XG4gIGdldEZpbGVFeHRlbnNpb24sXG4gIGlzRXh0ZW5zaW9uc09ubHlUeXBlLFxuICByZXNvbHZlRmlsZVZhbGlkYXRpb25zLFxufSBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5pbXBvcnQgeyBmaW5kRmlsZVR5cGVFeHRlbnNpb24gfSBmcm9tICcuL2ZpbGUtdHlwZS5yZXNvbHZlJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSwgQVhGaWxlVHlwZUV4dGVuc2lvbiwgQVhGaWxlVmFsaWRhdGlvblJ1bGUsIEFYRmlsZVZhbGlkYXRpb25zIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuLyoqIE1hcHMge0BsaW5rIEFYRmlsZVZhbGlkYXRpb25zfSB0byBleGVjdXRhYmxlIHZhbGlkYXRpb24gZW50cmllcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxlVmFsaWRhdGlvbnNUb1J1bGVzKHZhbGlkYXRpb25zOiBBWEZpbGVWYWxpZGF0aW9ucyk6IEFYRmlsZVZhbGlkYXRpb25SdWxlW10ge1xuICBjb25zdCBydWxlczogQVhGaWxlVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xuXG4gIGlmICh2YWxpZGF0aW9ucy5taW1lVHlwZXM/Lmxlbmd0aCkge1xuICAgIHJ1bGVzLnB1c2goe1xuICAgICAgcnVsZTogJ2ZpbGVNaW1lVHlwZScsXG4gICAgICBvcHRpb25zOiB7IGFsbG93ZWQ6IHZhbGlkYXRpb25zLm1pbWVUeXBlcyB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRpb25zLm1pblNpemUgIT0gbnVsbCkge1xuICAgIHJ1bGVzLnB1c2goe1xuICAgICAgcnVsZTogJ2ZpbGVNaW5TaXplJyxcbiAgICAgIG9wdGlvbnM6IHsgbWluU2l6ZTogdmFsaWRhdGlvbnMubWluU2l6ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRpb25zLm1heFNpemUgIT0gbnVsbCkge1xuICAgIHJ1bGVzLnB1c2goe1xuICAgICAgcnVsZTogJ2ZpbGVNYXhTaXplJyxcbiAgICAgIG9wdGlvbnM6IHsgbWF4U2l6ZTogdmFsaWRhdGlvbnMubWF4U2l6ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRpb25zLnJ1bGVzPy5sZW5ndGgpIHtcbiAgICBydWxlcy5wdXNoKC4uLnZhbGlkYXRpb25zLnJ1bGVzKTtcbiAgfVxuXG4gIHJldHVybiBydWxlcztcbn1cblxuLyoqIEZhaWxlZCB2YWxpZGF0aW9uIHJlc3VsdHM7IGVtcHR5IGFycmF5IG1lYW5zIHRoZSBmaWxlIGlzIHZhbGlkLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRmlsZVdpdGhWYWxpZGF0aW9ucyhcbiAgdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uU2VydmljZSxcbiAgZmlsZTogRmlsZSxcbiAgdmFsaWRhdGlvbnM6IEFYRmlsZVZhbGlkYXRpb25zLFxuKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgY29uc3QgZW50cmllcyA9IGZpbGVWYWxpZGF0aW9uc1RvUnVsZXModmFsaWRhdGlvbnMpO1xuICBjb25zdCBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBydWxlLCBvcHRpb25zIH0gb2YgZW50cmllcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb24udmFsaWRhdGUocnVsZSwgZmlsZSwgb3B0aW9ucyk7XG4gICAgaWYgKCFyZXN1bHQucmVzdWx0KSB7XG4gICAgICBlcnJvcnMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKiBWYWxpZGF0ZXMgYSBmaWxlIGFnYWluc3QgYSB0eXBlOyBleHRlbnNpb24gcnVsZXMgb3ZlcnJpZGUgd2hlbiB0aGUgZmlsZSBuYW1lIG1hdGNoZXMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVGaWxlQWdhaW5zdFR5cGUoXG4gIHZhbGlkYXRpb246IEFYVmFsaWRhdGlvblNlcnZpY2UsXG4gIGZpbGU6IEZpbGUsXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24sXG4pOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXT4ge1xuICBjb25zdCBtYXRjaGVkRXh0ZW5zaW9uID0gZXh0ZW5zaW9uID8/IGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlLCB0eXBlKTtcblxuICBpZiAoaXNFeHRlbnNpb25zT25seVR5cGUodHlwZSkgJiYgIW1hdGNoZWRFeHRlbnNpb24pIHtcbiAgICBjb25zdCBleHQgPSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGUubmFtZSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcnVsZTogJ2ZpbGVFeHRlbnNpb24nLFxuICAgICAgICByZXN1bHQ6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiBleHQgPyBgRXh0ZW5zaW9uIFwiLiR7ZXh0fVwiIGlzIG5vdCBhbGxvd2VkLmAgOiAnRmlsZSBtdXN0IGhhdmUgYW4gYWxsb3dlZCBleHRlbnNpb24uJyxcbiAgICAgICAgdmFsdWU6IGV4dCxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUZpbGVWYWxpZGF0aW9ucyh0eXBlLCBtYXRjaGVkRXh0ZW5zaW9uKTtcbiAgcmV0dXJuIHZhbGlkYXRlRmlsZVdpdGhWYWxpZGF0aW9ucyh2YWxpZGF0aW9uLCBmaWxlLCByZXNvbHZlZCk7XG59XG4iXX0=","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, matchesFileMime } from './file-type.resolve';\nimport { filterFileTypesByPurpose } from './file-type.metadata';\nimport { validateFileAgainstType } from './file-type.validate';\nimport * as i0 from \"@angular/core\";\nexport class AXFileTypeRegistryService {\n constructor() {\n this.validation = inject(AXValidationService);\n this.providers = inject(AX_FILE_TYPE_INFO_PROVIDER, { optional: true }) ?? [];\n this.registeredTypes = [];\n this.cache = null;\n }\n /** Registers or replaces catalog entries (e.g. from feature bootstrap). */\n registerTypes(types) {\n for (const type of types) {\n const index = this.registeredTypes.findIndex((t) => t.name === type.name);\n if (index >= 0) {\n this.registeredTypes[index] = type;\n }\n else {\n this.registeredTypes.push(type);\n }\n }\n this.invalidateCache();\n }\n invalidateCache() {\n this.cache = null;\n }\n async resolveTypes() {\n if (this.cache) {\n return this.cache;\n }\n const byName = new Map();\n if (this.providers.length) {\n const batches = await Promise.all(this.providers.map((p) => p.items()));\n for (const batch of batches) {\n for (const type of batch) {\n if (!byName.has(type.name)) {\n byName.set(type.name, type);\n }\n }\n }\n }\n for (const type of this.registeredTypes) {\n byName.set(type.name, type);\n }\n this.cache = [...byName.values()];\n return this.cache;\n }\n async getTypes(query) {\n const types = await this.resolveTypes();\n return filterFileTypesByPurpose(types, query?.purpose);\n }\n async get(name) {\n const types = await this.resolveTypes();\n return types.find((t) => t.name === name);\n }\n async accept(typeNames) {\n const names = typeNames ? (Array.isArray(typeNames) ? typeNames : [typeNames]) : undefined;\n const types = await this.resolveTypes();\n const selected = names?.length ? types.filter((t) => names.includes(t.name)) : types;\n if (names?.length && selected.length === 0) {\n return '';\n }\n const parts = new Set();\n for (const type of selected) {\n type.validations?.mimeTypes?.forEach((m) => parts.add(m));\n type.extensions?.forEach((ext) => {\n ext.validations?.mimeTypes?.forEach((m) => parts.add(m));\n parts.add(`.${ext.name.replace(/^\\./, '')}`);\n });\n }\n return [...parts].join(',');\n }\n async matchType(file) {\n const types = await this.resolveTypes();\n const mime = file.type.trim().toLowerCase();\n return types.find((type) => {\n const patterns = [\n ...(type.validations?.mimeTypes ?? []),\n ...(type.extensions?.flatMap((e) => e.validations?.mimeTypes ?? []) ?? []),\n ];\n if (!patterns.length) {\n return false;\n }\n return patterns.some((pattern) => matchesFileMime(mime, pattern));\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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUcvRCxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV6QyxjQUFTLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpFLG9CQUFlLEdBQWlCLEVBQUUsQ0FBQztRQUU1QyxVQUFLLEdBQXdCLElBQUksQ0FBQztLQTRLM0M7SUExS0MsMkVBQTJFO0lBRTNFLGFBQWEsQ0FBQyxLQUFtQjtRQUMvQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxRSxJ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RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcblxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSIH0gZnJvbSAnLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5cbmltcG9ydCB7IGZpbmRGaWxlVHlwZUV4dGVuc2lvbiwgbWF0Y2hlc0ZpbGVNaW1lIH0gZnJvbSAnLi9maWxlLXR5cGUucmVzb2x2ZSc7XG5cbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSwgQVhGaWxlVHlwZVF1ZXJ5IH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuaW1wb3J0IHsgZmlsdGVyRmlsZVR5cGVzQnlQdXJwb3NlIH0gZnJvbSAnLi9maWxlLXR5cGUubWV0YWRhdGEnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSB9IGZyb20gJy4vZmlsZS10eXBlLnZhbGlkYXRlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0aW9uID0gaW5qZWN0KEFYVmFsaWRhdGlvblNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZXJzID0gaW5qZWN0KEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0ZXJlZFR5cGVzOiBBWEZpbGVUeXBlW10gPSBbXTtcblxuICBwcml2YXRlIGNhY2hlOiBBWEZpbGVUeXBlW10gfCBudWxsID0gbnVsbDtcblxuICAvKiogUmVnaXN0ZXJzIG9yIHJlcGxhY2VzIGNhdGFsb2cgZW50cmllcyAoZS5nLiBmcm9tIGZlYXR1cmUgYm9vdHN0cmFwKS4gKi9cblxuICByZWdpc3RlclR5cGVzKHR5cGVzOiBBWEZpbGVUeXBlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZWdpc3RlcmVkVHlwZXMuZmluZEluZGV4KCh0KSA9PiB0Lm5hbWUgPT09IHR5cGUubmFtZSk7XG5cbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFR5cGVzW2luZGV4XSA9IHR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyZWRUeXBlcy5wdXNoKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaW52YWxpZGF0ZUNhY2hlKCk7XG4gIH1cblxuICBpbnZhbGlkYXRlQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVUeXBlcygpOiBQcm9taXNlPEFYRmlsZVR5cGVbXT4ge1xuICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgICB9XG5cbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgQVhGaWxlVHlwZT4oKTtcblxuICAgIGlmICh0aGlzLnByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGJhdGNoZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLnByb3ZpZGVycy5tYXAoKHApID0+IHAuaXRlbXMoKSkpO1xuXG4gICAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGJhdGNoKSB7XG4gICAgICAgICAgaWYgKCFieU5hbWUuaGFzKHR5cGUubmFtZSkpIHtcbiAgICAgICAgICAgIGJ5TmFtZS5zZXQodHlwZS5uYW1lLCB0eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdGhpcy5yZWdpc3RlcmVkVHlwZXMpIHtcbiAgICAgIGJ5TmFtZS5zZXQodHlwZS5uYW1lLCB0eXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhY2hlID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV07XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgfVxuXG4gIGFzeW5jIGdldFR5cGVzKHF1ZXJ5PzogQVhGaWxlVHlwZVF1ZXJ5KTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMucmVzb2x2ZVR5cGVzKCk7XG4gICAgcmV0dXJuIGZpbHRlckZpbGVUeXBlc0J5UHVycG9zZSh0eXBlcywgcXVlcnk/LnB1cnBvc2UpO1xuICB9XG5cbiAgYXN5bmMgZ2V0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhGaWxlVHlwZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgdGhpcy5yZXNvbHZlVHlwZXMoKTtcblxuICAgIHJldHVybiB0eXBlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0KHR5cGVOYW1lcz86IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBuYW1lcyA9IHR5cGVOYW1lcyA/IChBcnJheS5pc0FycmF5KHR5cGVOYW1lcykgPyB0eXBlTmFtZXMgOiBbdHlwZU5hbWVzXSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMucmVzb2x2ZVR5cGVzKCk7XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IG5hbWVzPy5sZW5ndGggPyB0eXBlcy5maWx0ZXIoKHQpID0+IG5hbWVzLmluY2x1ZGVzKHQubmFtZSkpIDogdHlwZXM7XG5cbiAgICBpZiAobmFtZXM/Lmxlbmd0aCAmJiBzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHNlbGVjdGVkKSB7XG4gICAgICB0eXBlLnZhbGlkYXRpb25zPy5taW1lVHlwZXM/LmZvckVhY2goKG0pID0+IHBhcnRzLmFkZChtKSk7XG5cbiAgICAgIHR5cGUuZXh0ZW5zaW9ucz8uZm9yRWFjaCgoZXh0KSA9PiB7XG4gICAgICAgIGV4dC52YWxpZGF0aW9ucz8ubWltZVR5cGVzPy5mb3JFYWNoKChtKSA9PiBwYXJ0cy5hZGQobSkpO1xuXG4gICAgICAgIHBhcnRzLmFkZChgLiR7ZXh0Lm5hbWUucmVwbGFjZSgvXlxcLi8sICcnKX1gKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBbLi4ucGFydHNdLmpvaW4oJywnKTtcbiAgfVxuXG4gIGFzeW5jIG1hdGNoVHlwZShmaWxlOiBGaWxlKTogUHJvbWlzZTxBWEZpbGVUeXBlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdHlwZXMgPSBhd2FpdCB0aGlzLnJlc29sdmVUeXBlcygpO1xuXG4gICAgY29uc3QgbWltZSA9IGZpbGUudHlwZS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiB0eXBlcy5maW5kKCh0eXBlKSA9PiB7XG4gICAgICBjb25zdCBwYXR0ZXJucyA9IFtcbiAgICAgICAgLi4uKHR5cGUudmFsaWRhdGlvbnM/Lm1pbWVUeXBlcyA/PyBbXSksXG5cbiAgICAgICAgLi4uKHR5cGUuZXh0ZW5zaW9ucz8uZmxhdE1hcCgoZSkgPT4gZS52YWxpZGF0aW9ucz8ubWltZVR5cGVzID8/IFtdKSA/PyBbXSksXG4gICAgICBdO1xuXG4gICAgICBpZiAoIXBhdHRlcm5zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXR0ZXJucy5zb21lKChwYXR0ZXJuKSA9PiBtYXRjaGVzRmlsZU1pbWUobWltZSwgcGF0dGVybikpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoZmlsZTogRmlsZSwgdHlwZU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0KHR5cGVOYW1lKTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGU6ICdmaWxlVHlwZScsXG5cbiAgICAgICAgICByZXN1bHQ6IGZhbHNlLFxuXG4gICAgICAgICAgbWVzc2FnZTogYFVua25vd24gZmlsZSB0eXBlOiAke3R5cGVOYW1lfWAsXG5cbiAgICAgICAgICB2YWx1ZTogdHlwZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlLCB0eXBlKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSh0aGlzLnZhbGlkYXRpb24sIGZpbGUsIHR5cGUsIGV4dGVuc2lvbik7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZUFnYWluc3RUeXBlcyhcbiAgICBmaWxlOiBGaWxlLFxuXG4gICAgdHlwZU5hbWVzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgICBjb25zdCBuYW1lcyA9IEFycmF5LmlzQXJyYXkodHlwZU5hbWVzKSA/IHR5cGVOYW1lcyA6IFt0eXBlTmFtZXNdO1xuXG4gICAgbGV0IGxhc3RFcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKGZpbGUsIG5hbWUpO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGxhc3RFcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFcnJvcnM7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZU1hbnkoXG4gICAgZmlsZXM6IEZpbGVbXSxcblxuICAgIHR5cGVOYW1lczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICk6IFByb21pc2U8eyBhY2NlcHRlZDogRmlsZVtdOyByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W10gfT4ge1xuICAgIGNvbnN0IGFjY2VwdGVkOiBGaWxlW10gPSBbXTtcblxuICAgIGNvbnN0IHJlamVjdGVkOiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlQWdhaW5zdFR5cGVzKGZpbGUsIHR5cGVOYW1lcyk7XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGFjY2VwdGVkLnB1c2goZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3RlZC5wdXNoKHsgZmlsZSwgZXJyb3JzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGFjY2VwdGVkLCByZWplY3RlZCB9O1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_AUDIO_FILE_TYPE = {\n name: 'audio',\n metadata: createFileTypeMetadata('system'),\n title: 'Audio',\n icon: 'fa-light fa-music ax-text-amber-500',\n validations: {\n mimeTypes: ['audio/*'],\n minSize: 1,\n maxSize: 50 * MB,\n },\n extensions: [\n { name: 'mp3', title: 'MP3' },\n { name: 'wav', title: 'WAV', validations: { maxSize: 30 * MB } },\n { name: 'ogg', title: 'OGG' },\n { name: 'm4a', title: 'M4A' },\n ],\n};\nexport class AXAudioFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_AUDIO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9hdWRpby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUscUNBQXFDO0lBQzNDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRTtLQUNqQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDaEUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7S0FDOUI7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHsgY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuLi9maWxlLXR5cGUubW9kZWxzJztcblxuY29uc3QgTUIgPSAxMDI0ICogMTAyNDtcblxuZXhwb3J0IGNvbnN0IEFYX0FVRElPX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ2F1ZGlvJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ0F1ZGlvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW11c2ljIGF4LXRleHQtYW1iZXItNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXVkaW8vKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogNTAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wMycsIHRpdGxlOiAnTVAzJyB9LFxuICAgIHsgbmFtZTogJ3dhdicsIHRpdGxlOiAnV0FWJywgdmFsaWRhdGlvbnM6IHsgbWF4U2l6ZTogMzAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gICAgeyBuYW1lOiAnbTRhJywgdGl0bGU6ICdNNEEnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhBdWRpb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9BVURJT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\n/** Extension-only: no type `validations` — only listed extensions are allowed. */\nexport const AX_DOCUMENT_FILE_TYPE = {\n name: 'document',\n metadata: createFileTypeMetadata('system'),\n title: 'Document',\n icon: 'fa-light fa-file-lines ax-text-red-500',\n extensions: [{ name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 5 * MB } }],\n};\nexport class AXDocumentFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_DOCUMENT_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9kb2N1bWVudC1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWU7SUFDL0MsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztJQUMxQyxLQUFLLEVBQUUsVUFBVTtJQUNqQixJQUFJLEVBQUUsd0NBQXdDO0lBQzlDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0NBQzlHLENBQUM7QUFHRixNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBQ3BFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FIVSwwQkFBMEI7a0hBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG4vKiogRXh0ZW5zaW9uLW9ubHk6IG5vIHR5cGUgYHZhbGlkYXRpb25zYCDigJQgb25seSBsaXN0ZWQgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC4gKi9cbmV4cG9ydCBjb25zdCBBWF9ET0NVTUVOVF9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdkb2N1bWVudCcsXG4gIG1ldGFkYXRhOiBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhKCdzeXN0ZW0nKSxcbiAgdGl0bGU6ICdEb2N1bWVudCcsXG4gIGljb246ICdmYS1saWdodCBmYS1maWxlLWxpbmVzIGF4LXRleHQtcmVkLTUwMCcsXG4gIGV4dGVuc2lvbnM6IFt7IG5hbWU6ICdwZGYnLCB0aXRsZTogJ1BERicsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9wZGYnXSwgbWF4U2l6ZTogNSAqIE1CIH0gfV0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9ET0NVTUVOVF9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_FILE_FILE_TYPE = {\n name: 'file',\n metadata: createFileTypeMetadata('system'),\n title: 'File',\n icon: 'fa-light fa-file ax-text-neutral-500',\n validations: {\n mimeTypes: ['application/*', 'text/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 25 * MB } },\n { name: 'doc', title: 'Word' },\n { name: 'docx', title: 'Word' },\n { name: 'txt', title: 'Text', validations: { mimeTypes: ['text/plain'], maxSize: 5 * MB } },\n { name: 'zip', title: 'ZIP', validations: { maxSize: 50 * MB } },\n ],\n};\nexport class AXFileFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_FILE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1maWxlLXR5cGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRy9ELE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDM0MsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsSUFBSSxFQUFFLHNDQUFzQztJQUM1QyxXQUFXLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFO0tBQ2xCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ2hHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQy9CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDM0YsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtLQUNqRTtDQUNGLENBQUM7QUFHRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsc0JBQXNCO0lBQ2hFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs4R0FIVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfRklMRV9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdmaWxlJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ0ZpbGUnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZSBheC10ZXh0LW5ldXRyYWwtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vKicsICd0ZXh0LyonXSxcbiAgICBtaW5TaXplOiAxLFxuICAgIG1heFNpemU6IDEwMCAqIE1CLFxuICB9LFxuICBleHRlbnNpb25zOiBbXG4gICAgeyBuYW1lOiAncGRmJywgdGl0bGU6ICdQREYnLCB2YWxpZGF0aW9uczogeyBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vcGRmJ10sIG1heFNpemU6IDI1ICogTUIgfSB9LFxuICAgIHsgbmFtZTogJ2RvYycsIHRpdGxlOiAnV29yZCcgfSxcbiAgICB7IG5hbWU6ICdkb2N4JywgdGl0bGU6ICdXb3JkJyB9LFxuICAgIHsgbmFtZTogJ3R4dCcsIHRpdGxlOiAnVGV4dCcsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWyd0ZXh0L3BsYWluJ10sIG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnemlwJywgdGl0bGU6ICdaSVAnLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiA1MCAqIE1CIH0gfSxcbiAgXSxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIGV4dGVuZHMgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB7XG4gIGl0ZW1zKCk6IFByb21pc2U8QVhGaWxlVHlwZVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbQVhfRklMRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_IMAGE_FILE_TYPE = {\n name: 'image',\n metadata: createFileTypeMetadata('system'),\n title: 'Image',\n icon: 'fa-light fa-image ax-text-purple-500',\n validations: {\n mimeTypes: ['image/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'jpg', title: 'JPEG' },\n { name: 'jpeg', title: 'JPEG', validations: { maxSize: 5 * MB } },\n { name: 'png', title: 'PNG' },\n { name: 'gif', title: 'GIF' },\n { name: 'webp', title: 'WebP' },\n { name: 'svg', title: 'SVG', validations: { maxSize: 2 * MB } },\n ],\n};\nexport class AXImageFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_IMAGE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9pbWFnZS1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDakUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDL0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtLQUNoRTtDQUNGLENBQUM7QUFHRixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ2pFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FIVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfSU1BR0VfRklMRV9UWVBFOiBBWEZpbGVUeXBlID0ge1xuICBuYW1lOiAnaW1hZ2UnLFxuICBtZXRhZGF0YTogY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSgnc3lzdGVtJyksXG4gIHRpdGxlOiAnSW1hZ2UnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtaW1hZ2UgYXgtdGV4dC1wdXJwbGUtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnaW1hZ2UvKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogMTAwICogTUIsXG4gIH0sXG4gIGV4dGVuc2lvbnM6IFtcbiAgICB7IG5hbWU6ICdqcGcnLCB0aXRsZTogJ0pQRUcnIH0sXG4gICAgeyBuYW1lOiAnanBlZycsIHRpdGxlOiAnSlBFRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAncG5nJywgdGl0bGU6ICdQTkcnIH0sXG4gICAgeyBuYW1lOiAnZ2lmJywgdGl0bGU6ICdHSUYnIH0sXG4gICAgeyBuYW1lOiAnd2VicCcsIHRpdGxlOiAnV2ViUCcgfSxcbiAgICB7IG5hbWU6ICdzdmcnLCB0aXRsZTogJ1NWRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDIgKiBNQiB9IH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhJbWFnZUZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9JTUFHRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_VIDEO_FILE_TYPE = {\n name: 'video',\n metadata: createFileTypeMetadata('system'),\n title: 'Video',\n icon: 'fa-light fa-video ax-text-blue-500',\n validations: {\n mimeTypes: ['video/*'],\n minSize: 1,\n maxSize: 500 * MB,\n },\n extensions: [\n { name: 'mp4', title: 'MP4' },\n { name: 'webm', title: 'WebM', validations: { maxSize: 200 * MB } },\n { name: 'ogg', title: 'OGG' },\n ],\n};\nexport class AXVideoFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_VIDEO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy92aWRlby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsb0NBQW9DO0lBQzFDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDbkUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7S0FDOUI7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHsgY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuLi9maWxlLXR5cGUubW9kZWxzJztcblxuY29uc3QgTUIgPSAxMDI0ICogMTAyNDtcblxuZXhwb3J0IGNvbnN0IEFYX1ZJREVPX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ3ZpZGVvJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ1ZpZGVvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXZpZGVvIGF4LXRleHQtYmx1ZS01MDAnLFxuICB2YWxpZGF0aW9uczoge1xuICAgIG1pbWVUeXBlczogWyd2aWRlby8qJ10sXG4gICAgbWluU2l6ZTogMSxcbiAgICBtYXhTaXplOiA1MDAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wNCcsIHRpdGxlOiAnTVA0JyB9LFxuICAgIHsgbmFtZTogJ3dlYm0nLCB0aXRsZTogJ1dlYk0nLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiAyMDAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9WSURFT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { provideFileTypeInfoProvider } from '../file-type-info-provider';\nimport { AXAudioFileTypeProvider } from './audio-file-type.provider';\nimport { AXDocumentFileTypeProvider } from './document-file-type.provider';\nimport { AXFileFileTypeProvider } from './file-file-type.provider';\nimport { AXImageFileTypeProvider } from './image-file-type.provider';\nimport { AXVideoFileTypeProvider } from './video-file-type.provider';\nexport * from './image-file-type.provider';\nexport * from './video-file-type.provider';\nexport * from './audio-file-type.provider';\nexport * from './file-file-type.provider';\nexport * from './document-file-type.provider';\n/** Built-in file type provider classes (one logical type per provider). */\nexport const AX_BUILTIN_FILE_TYPE_PROVIDERS = [\n AXImageFileTypeProvider,\n AXVideoFileTypeProvider,\n AXAudioFileTypeProvider,\n AXFileFileTypeProvider,\n AXDocumentFileTypeProvider,\n];\n/** Registers all built-in file type providers (image, video, audio, file, document). */\nexport function provideBuiltinFileTypeProviders() {\n return AX_BUILTIN_FILE_TYPE_PROVIDERS.map((provider) => provideFileTypeInfoProvider(provider));\n}\n/** @deprecated Use {@link provideBuiltinFileTypeProviders}. */\nexport const provideDefaultFileTypeProviders = provideBuiltinFileTypeProviders;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QiwwQkFBMEI7Q0FDZ0MsQ0FBQztBQUU3RCx3RkFBd0Y7QUFDeEYsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVGaWxlVHlwZUluZm9Qcm92aWRlciwgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB9IGZyb20gJy4uL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmltcG9ydCB7IEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9hdWRpby1maWxlLXR5cGUucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgfSBmcm9tICcuL2RvY3VtZW50LWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9maWxlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEltYWdlRmlsZVR5cGVQcm92aWRlciB9IGZyb20gJy4vaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYVmlkZW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi92aWRlby1maWxlLXR5cGUucHJvdmlkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGlvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyJztcblxuLyoqIEJ1aWx0LWluIGZpbGUgdHlwZSBwcm92aWRlciBjbGFzc2VzIChvbmUgbG9naWNhbCB0eXBlIHBlciBwcm92aWRlcikuICovXG5leHBvcnQgY29uc3QgQVhfQlVJTFRJTl9GSUxFX1RZUEVfUFJPVklERVJTID0gW1xuICBBWEltYWdlRmlsZVR5cGVQcm92aWRlcixcbiAgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIsXG4gIEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyLFxuICBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyLFxuICBBWERvY3VtZW50RmlsZVR5cGVQcm92aWRlcixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFR5cGU8QVhGaWxlVHlwZUluZm9Qcm92aWRlcj5bXTtcblxuLyoqIFJlZ2lzdGVycyBhbGwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycyAoaW1hZ2UsIHZpZGVvLCBhdWRpbywgZmlsZSwgZG9jdW1lbnQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnMoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBBWF9CVUlMVElOX0ZJTEVfVFlQRV9QUk9WSURFUlMubWFwKChwcm92aWRlcikgPT4gcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyKHByb3ZpZGVyKSk7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnN9LiAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVEZWZhdWx0RmlsZVR5cGVQcm92aWRlcnMgPSBwcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzO1xuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMimeTypeValidationRule {\n get name() {\n return 'fileMimeType';\n }\n async validate(value, options) {\n const mime = (value instanceof File || value instanceof Blob ? value.type : '').trim().toLowerCase();\n const allowed = options.allowed ?? [];\n const valid = allowed.length === 0 ||\n allowed.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n return {\n rule: this.name,\n result: valid,\n message: valid ? '' : (options.message ?? 'File type is not allowed.'),\n value: mime,\n };\n }\n matchesMime(mime, pattern) {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n return mime === pattern;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW1lLXR5cGUucnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9ydWxlcy9maWxlLW1pbWUtdHlwZS5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUIzQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLElBQUksSUFBSTtRQUNOLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTRDO1FBRTVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FDVCxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSwyQkFBMkIsQ0FBQztZQUN0RSxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVksRUFBRSxPQUFlO1FBQy9DLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLEtBQUssSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUMxQixDQUFDOzhHQWhDVSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWltZVR5cGVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNSU1FIHBhdHRlcm5zLCBlLmcuIGBpbWFnZS8qYCwgYGltYWdlL3BuZ2AuICovXG4gIGFsbG93ZWQ6IHN0cmluZ1tdO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWltZVR5cGU6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVNaW1lVHlwZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWltZVR5cGUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICApOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICBjb25zdCBtaW1lID0gKHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS50eXBlIDogJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbG93ZWQgPSBvcHRpb25zLmFsbG93ZWQgPz8gW107XG4gICAgY29uc3QgdmFsaWQgPVxuICAgICAgYWxsb3dlZC5sZW5ndGggPT09IDAgfHxcbiAgICAgIGFsbG93ZWQuc29tZSgocGF0dGVybikgPT4gdGhpcy5tYXRjaGVzTWltZShtaW1lLCBwYXR0ZXJuLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkID8gJycgOiAob3B0aW9ucy5tZXNzYWdlID8/ICdGaWxlIHR5cGUgaXMgbm90IGFsbG93ZWQuJyksXG4gICAgICB2YWx1ZTogbWltZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaGVzTWltZShtaW1lOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuID09PSAnKi8qJyB8fCBwYXR0ZXJuID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocGF0dGVybi5lbmRzV2l0aCgnLyonKSkge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBwYXR0ZXJuLnNsaWNlKDAsIC0yKTtcbiAgICAgIHJldHVybiBtaW1lLnN0YXJ0c1dpdGgoYCR7Y2F0ZWdvcnl9L2ApIHx8IChtaW1lID09PSAnJyAmJiBjYXRlZ29yeSA9PT0gJ2FwcGxpY2F0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBtaW1lID09PSBwYXR0ZXJuO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMinSizeValidationRule {\n get name() {\n return 'fileMinSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size >= options.minSize;\n const limitLabel = formatFileSizeBytes(options.minSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ?? `File is too small. Minimum size is ${limitLabel}.`),\n value: size,\n minSize: options.minSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW4tc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWluLXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxVQUFVLEdBQUcsQ0FBQztZQUM1RSxLQUFLLEVBQUUsSUFBSTtZQUNYLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDO0lBQ0osQ0FBQzs4R0F0QlUsMkJBQTJCO2tIQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFZhbGlkYXRpb25SdWxlLFxuICBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCxcbn0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgZm9ybWF0RmlsZVNpemVCeXRlcyB9IGZyb20gJy4uLy4uL2Zvcm1hdC1maWxlLXNpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNaW5pbXVtIHNpemUgaW4gYnl0ZXMuICovXG4gIG1pblNpemU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJyB7XG4gIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgZmlsZU1pblNpemU6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZmlsZU1pblNpemUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgIGNvbnN0IHNpemUgPSB2YWx1ZSBpbnN0YW5jZW9mIEZpbGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBCbG9iID8gdmFsdWUuc2l6ZSA6IDA7XG4gICAgY29uc3QgdmFsaWQgPSBzaXplID49IG9wdGlvbnMubWluU2l6ZTtcbiAgICBjb25zdCBsaW1pdExhYmVsID0gZm9ybWF0RmlsZVNpemVCeXRlcyhvcHRpb25zLm1pblNpemUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgIHJlc3VsdDogdmFsaWQsXG4gICAgICBtZXNzYWdlOiB2YWxpZFxuICAgICAgICA/ICcnXG4gICAgICAgIDogKG9wdGlvbnMubWVzc2FnZSA/PyBgRmlsZSBpcyB0b28gc21hbGwuIE1pbmltdW0gc2l6ZSBpcyAke2xpbWl0TGFiZWx9LmApLFxuICAgICAgdmFsdWU6IHNpemUsXG4gICAgICBtaW5TaXplOiBvcHRpb25zLm1pblNpemUsXG4gICAgfTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMaxSizeValidationRule {\n get name() {\n return 'fileMaxSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size <= options.maxSize;\n const limitLabel = formatFileSizeBytes(options.maxSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ??\n `File is too large. Maximum size is ${limitLabel}.`),\n value: size,\n maxSize: options.maxSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYXgtc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWF4LXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztvQkFDaEIsc0NBQXNDLFVBQVUsR0FBRyxDQUFDO1lBQ3hELEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUM7SUFDSixDQUFDOzhHQXZCVSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZUJ5dGVzIH0gZnJvbSAnLi4vLi4vZm9ybWF0LWZpbGUtc2l6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgLyoqIE1heGltdW0gc2l6ZSBpbiBieXRlcy4gKi9cbiAgbWF4U2l6ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWF4U2l6ZTogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWF4U2l6ZSc7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZShcbiAgICB2YWx1ZTogRmlsZSB8IEJsb2IsXG4gICAgb3B0aW9uczogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XG4gICAgY29uc3Qgc2l6ZSA9IHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS5zaXplIDogMDtcbiAgICBjb25zdCB2YWxpZCA9IHNpemUgPD0gb3B0aW9ucy5tYXhTaXplO1xuICAgIGNvbnN0IGxpbWl0TGFiZWwgPSBmb3JtYXRGaWxlU2l6ZUJ5dGVzKG9wdGlvbnMubWF4U2l6ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkXG4gICAgICAgID8gJydcbiAgICAgICAgOiAob3B0aW9ucy5tZXNzYWdlID8/XG4gICAgICAgICAgYEZpbGUgaXMgdG9vIGxhcmdlLiBNYXhpbXVtIHNpemUgaXMgJHtsaW1pdExhYmVsfS5gKSxcbiAgICAgIHZhbHVlOiBzaXplLFxuICAgICAgbWF4U2l6ZTogb3B0aW9ucy5tYXhTaXplLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","export * from './file-type.metadata';\nexport * from './file-type.models';\nexport * from './file-type.context';\nexport * from './file-type.copy';\nexport * from './file-type.open';\nexport * from './file-type.resolve';\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBRzNDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpFLDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0Qyw0QkFBNEI7SUFDNUIsMkJBQTJCO0lBQzNCLDJCQUEyQjtDQUNuQixDQUFDO0FBRVgsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsT0FBTztRQUNMLE9BQU8sRUFBRSwyQkFBMkI7UUFDcEMsVUFBVSxFQUFFLENBQUMsUUFBcUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQzFELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztRQUNuQyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsaUZBQWlGO0FBQ2pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJHOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLEVBQUUsR0FBRywrQkFBK0IsRUFBRSxDQUFDLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5jb250ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLmNvcHknO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUub3Blbic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5yZXNvbHZlJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS52YWxpZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzLnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVzL2ZpbGUtbWltZS10eXBlLnJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1pbi1zaXplLnJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1heC1zaXplLnJ1bGUnO1xuXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgcHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycyB9IGZyb20gJy4vdHlwZXMucHJvdmlkZXJzJztcbmltcG9ydCB7IEFYRmlsZU1heFNpemVWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvZmlsZS1tYXgtc2l6ZS5ydWxlJztcbmltcG9ydCB7IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2ZpbGUtbWltZS10eXBlLnJ1bGUnO1xuaW1wb3J0IHsgQVhGaWxlTWluU2l6ZVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9maWxlLW1pbi1zaXplLnJ1bGUnO1xuXG4vKiogVmFsaWRhdGlvbiBydWxlIGNsYXNzZXMgdG8gcmVnaXN0ZXIgd2l0aCB7QGxpbmsgQVhWYWxpZGF0aW9uTW9kdWxlfS4gKi9cbmV4cG9ydCBjb25zdCBBWF9GSUxFX1ZBTElEQVRJT05fUlVMRVMgPSBbXG4gIEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGUsXG4gIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSxcbiAgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlLFxuXSBhcyBjb25zdDtcblxuLyoqIFJlZ2lzdGVycyBmaWxlIHZhbGlkYXRpb24gcnVsZXMgd2l0aCB7QGxpbmsgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogJ0FYVmFsaWRhdGlvbk1vZHVsZUZhY3RvcnknLFxuICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlciguLi5BWF9GSUxFX1ZBTElEQVRJT05fUlVMRVMpO1xuICAgIH0sXG4gICAgZGVwczogW0FYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZV0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH07XG59XG5cbi8qKiBSZWdpc3RlcnMgYnVpbHQtaW4gaW1hZ2UgLyB2aWRlbyAvIGF1ZGlvIC8gZmlsZSAvIGRvY3VtZW50IHR5cGUgcHJvdmlkZXJzLiAqL1xuZXhwb3J0IHsgcHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycywgcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycyB9IGZyb20gJy4vdHlwZXMucHJvdmlkZXJzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdmFsaWRhdGlvbiBydWxlcyBhbmQgb3B0aW9uYWwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycy5cbiAqIHtAbGluayBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlfSBhbmQge0BsaW5rIEFYRmlsZVNlcnZpY2V9IGFyZSBgcHJvdmlkZWRJbjogJ3Jvb3QnYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGaWxlVHlwZVN5c3RlbSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpLCAuLi5wcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzKCldO1xufVxuIl19","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":["../tmp-esm2022/file/lib/file-size-formatter.js","../tmp-esm2022/file/lib/format-file-size.js","../tmp-esm2022/file/lib/file-type/file-type.models.js","../tmp-esm2022/file/lib/file-type/file-type.metadata.js","../tmp-esm2022/file/lib/file-type/file-type.copy.js","../tmp-esm2022/file/lib/file-type/file-type.merge.js","../tmp-esm2022/file/lib/file-type/file-type.renderer.js","../tmp-esm2022/file/lib/file-type/file-type.resolve.js","../tmp-esm2022/file/lib/file-type/file-type.open.js","../tmp-esm2022/file/lib/file-type/file-type.define.js","../tmp-esm2022/file/lib/file-type/file-type-info-provider.js","../tmp-esm2022/file/lib/file-type/file-type.providers.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/file-type-renderer-outlet.component.js","../tmp-esm2022/file/lib/file-type/types.providers/audio-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/document-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/file-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/image-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/video-file-type.provider.js","../tmp-esm2022/file/lib/file-type/types.providers/index.js","../tmp-esm2022/file/lib/file-type/rules/file-mime-type.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-min-size.rule.js","../tmp-esm2022/file/lib/file-type/rules/file-max-size.rule.js","../tmp-esm2022/file/lib/file-type/index.js","../tmp-esm2022/file/lib/file.module.js","../tmp-esm2022/file/lib/file.service.js","../tmp-esm2022/file/acorex-core-file.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileSizeFormatter {\n /**\n * Gets the name of the formatter.\n *\n * @returns string - The formatter name 'filesize'\n */\n get name() {\n return 'filesize';\n }\n /**\n * Formats a file size value to human-readable format.\n *\n * @param value - The file size in bytes\n * @returns string - The formatted file size string (e.g., '1.5 MB')\n */\n format(value) {\n const size = Number(value);\n if (size === 0)\n return '0 Bytes';\n if (Number.isNaN(size))\n return 'Unknown';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(size) / Math.log(k));\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileSizeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtc2l6ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7OztPQUlHO0lBRUgsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFekMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsT0FBTyxVQUFVLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBN0JVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGZpbGVzaXplOiBBWEZpbGVTaXplRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlU2l6ZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdHRlci5cbiAgICpcbiAgICogQHJldHVybnMgc3RyaW5nIC0gVGhlIGZvcm1hdHRlciBuYW1lICdmaWxlc2l6ZSdcbiAgICovXG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2ZpbGVzaXplJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgZmlsZSBzaXplIHZhbHVlIHRvIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGZpbGUgc2l6ZSBpbiBieXRlc1xuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBUaGUgZm9ybWF0dGVkIGZpbGUgc2l6ZSBzdHJpbmcgKGUuZy4sICcxLjUgTUInKVxuICAgKi9cblxuICBmb3JtYXQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l6ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuICcwIEJ5dGVzJztcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSByZXR1cm4gJ1Vua25vd24nO1xuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coc2l6ZSkgLyBNYXRoLmxvZyhrKSk7XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCgoc2l6ZSAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpKSArICcgJyArIHNpemVzW2ldO1xuICB9XG59XG4iXX0=","/** Human-readable file size (binary units, e.g. `41.5 MB`). */\nexport function formatFileSizeBytes(bytes) {\n if (!Number.isFinite(bytes) || bytes < 0) {\n return '0 B';\n }\n if (bytes === 0) {\n return '0 B';\n }\n const k = 1024;\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), units.length - 1);\n const value = bytes / Math.pow(k, i);\n if (i === 0) {\n return `${bytes} B`;\n }\n const digits = value >= 100 ? 0 : value >= 10 ? 1 : 2;\n return `${value.toFixed(digits)} ${units[i]}`;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWZpbGUtc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2Zvcm1hdC1maWxlLXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDWixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIdW1hbi1yZWFkYWJsZSBmaWxlIHNpemUgKGJpbmFyeSB1bml0cywgZS5nLiBgNDEuNSBNQmApLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbGVTaXplQnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGJ5dGVzKSB8fCBieXRlcyA8IDApIHtcbiAgICByZXR1cm4gJzAgQic7XG4gIH1cbiAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgcmV0dXJuICcwIEInO1xuICB9XG5cbiAgY29uc3QgayA9IDEwMjQ7XG4gIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XG4gIGNvbnN0IGkgPSBNYXRoLm1pbihNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKSwgdW5pdHMubGVuZ3RoIC0gMSk7XG4gIGNvbnN0IHZhbHVlID0gYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKTtcblxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBgJHtieXRlc30gQmA7XG4gIH1cblxuICBjb25zdCBkaWdpdHMgPSB2YWx1ZSA+PSAxMDAgPyAwIDogdmFsdWUgPj0gMTAgPyAxIDogMjtcbiAgcmV0dXJuIGAke3ZhbHVlLnRvRml4ZWQoZGlnaXRzKX0gJHt1bml0c1tpXX1gO1xufVxuIl19","/** Metadata key for catalog usage context. */\nexport const AX_FILE_TYPE_METADATA_PURPOSE = 'purpose';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9maWxlLXR5cGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxTQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZUNvbnRleHQsIEFYRmlsZVR5cGVPcGVuQ29udGV4dCB9IGZyb20gJy4vZmlsZS10eXBlLmNvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVDb3B5UmVzdWx0IH0gZnJvbSAnLi9maWxlLXR5cGUuY29weSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZU9wZW5SZXN1bHQgfSBmcm9tICcuL2ZpbGUtdHlwZS5vcGVuJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZUNvbXBvbmVudCB9IGZyb20gJy4vZmlsZS10eXBlLnJlbmRlcmVyJztcblxuLyoqIE1ldGFkYXRhIGtleSBmb3IgY2F0YWxvZyB1c2FnZSBjb250ZXh0LiAqL1xuZXhwb3J0IGNvbnN0IEFYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFID0gJ3B1cnBvc2UnIGFzIGNvbnN0O1xuXG4vKiogQ2F0YWxvZyBtZXRhZGF0YSBiYWc7IGBwdXJwb3NlYCBsaXN0cyB1c2FnZSBjb250ZXh0cyAoZS5nLiBgWydzeXN0ZW0nXWApLiAqL1xuZXhwb3J0IHR5cGUgQVhGaWxlVHlwZU1ldGFkYXRhID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7XG4gIFtBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRV0/OiBzdHJpbmdbXTtcbn07XG5cbi8qKiBGaWx0ZXIgY2F0YWxvZyBlbnRyaWVzIGJ5IHtAbGluayBBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRX0uICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVR5cGVRdWVyeSB7XG4gIHB1cnBvc2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuLyoqIEdlbmVyaWMgcnVsZSBleGVjdXRlZCB2aWEge0BsaW5rIEFYVmFsaWRhdGlvblNlcnZpY2V9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVWYWxpZGF0aW9uUnVsZSB7XG4gIHJ1bGU6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xufVxuXG4vKipcbiAqIENvbW1vbiBmaWxlIGNvbnN0cmFpbnRzIHNoYXJlZCBieSB7QGxpbmsgQVhGaWxlVHlwZX0gYW5kIHtAbGluayBBWEZpbGVUeXBlRXh0ZW5zaW9ufS5cbiAqIEV4dGVuc2lvbiBgdmFsaWRhdGlvbnNgIG92ZXJyaWRlIHRoZSBwYXJlbnQgdHlwZSBmaWVsZC1ieS1maWVsZCB3aGVuIG1lcmdlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVWYWxpZGF0aW9ucyB7XG4gIG1pbWVUeXBlcz86IHN0cmluZ1tdO1xuICBtaW5TaXplPzogbnVtYmVyO1xuICBtYXhTaXplPzogbnVtYmVyO1xuICBydWxlcz86IEFYRmlsZVZhbGlkYXRpb25SdWxlW107XG59XG5cbnR5cGUgQVhGaWxlVHlwZVV0aWxpdGllcyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICAoY3R4OiBBWEZpbGVUeXBlQ29udGV4dCwgLi4uYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+IHwgdW5rbm93blxuPjtcblxuLyoqXG4gKiBMb2dpY2FsIGZpbGUgY2F0ZWdvcnkgKGltYWdlLCB2aWRlbywg4oCmKS5cbiAqXG4gKiAtIFdpdGggdHlwZSBgdmFsaWRhdGlvbnNgIHNldDogYW55IGZpbGUgbWF0Y2hpbmcgdGhvc2UgcnVsZXMgaXMgYWxsb3dlZDsgYGV4dGVuc2lvbnNgIG9ubHkgb3ZlcnJpZGUgd2hlbiBtYXRjaGVkLlxuICogLSBXaXRoIGVtcHR5IC8gb21pdHRlZCBgdmFsaWRhdGlvbnNgIGFuZCBgZXh0ZW5zaW9uc2AgbGlzdGVkOiBvbmx5IHRob3NlIGV4dGVuc2lvbnMgYXJlIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlVHlwZTxUIGV4dGVuZHMgQVhGaWxlVHlwZVV0aWxpdGllcyA9IEFYRmlsZVR5cGVVdGlsaXRpZXM+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBBWEZpbGVUeXBlTWV0YWRhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhGaWxlVmFsaWRhdGlvbnM7XG4gIGV4dGVuc2lvbnM/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uPFQ+W107XG4gIC8qKiBEeW5hbWljIHV0aWxpdHkgZnVuY3Rpb25zIGF2YWlsYWJsZSBmb3IgdGhpcyBmaWxlIHR5cGUuICovXG4gIHV0aWxpdGllcz86IFQ7XG4gIHBhc3RlPzogKCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgLyoqXG4gICAqIFByb2R1Y2UgY29weWFibGUgY29udGVudCBmcm9tIGEgcGF5bG9hZCAoZG9lcyBub3Qgd3JpdGUgdG8gdGhlIGNsaXBib2FyZCkuXG4gICAqIFJldHVybnMgYSBwbGFpbiBzdHJpbmcgb3Ige0BsaW5rIEFYRmlsZUNvcHlEYXRhfSB3aXRoIGB0ZXh0YCBhbmQgb3B0aW9uYWwgYG1ldGFgLlxuICAgKi9cbiAgY29weT86IChwYXlsb2FkOiB1bmtub3duKSA9PiBQcm9taXNlPEFYRmlsZUNvcHlSZXN1bHQ+IHwgQVhGaWxlQ29weVJlc3VsdDtcbiAgLyoqXG4gICAqIE9wZW4gb3IgcHJldmlldyBhIHBheWxvYWQgKGUuZy4gbmF2aWdhdGUsIHNob3cgYSBkaWFsb2cpLlxuICAgKiBJbnZva2UgdmlhIHtAbGluayBydW5GaWxlVHlwZU9wZW59IHNvIGBpbmplY3QoKWAgd29ya3MgaW4gdGhlIGNhbGxlcidzIGNvbnRleHQuXG4gICAqL1xuICBvcGVuPzogKFxuICAgIGN0eDogQVhGaWxlVHlwZU9wZW5Db250ZXh0LFxuICAgIHBheWxvYWQ6IHVua25vd24sXG4gICkgPT4gUHJvbWlzZTxBWEZpbGVPcGVuUmVzdWx0PiB8IEFYRmlsZU9wZW5SZXN1bHQ7XG4gIC8qKiBPcHRpb25hbCB2aWV3IGNvbXBvbmVudCAoZWFnZXIgY2xhc3Mgb3IgbGF6eSBgKCkgPT4gaW1wb3J0KC4uLilgKSBmb3IgdGhpcyBmaWxlIHR5cGUncyBwYXlsb2FkLiAqL1xuICBjb21wb25lbnQ/OiBBWEZpbGVUeXBlQ29tcG9uZW50O1xufVxuXG4vKiogRXh0ZW5zaW9uIGVudHJ5IOKAlCB7QGxpbmsgQVhGaWxlVHlwZX0gd2l0aG91dCBuZXN0ZWQgYGV4dGVuc2lvbnNgLiAqL1xuZXhwb3J0IHR5cGUgQVhGaWxlVHlwZUV4dGVuc2lvbjxUIGV4dGVuZHMgQVhGaWxlVHlwZVV0aWxpdGllcyA9IEFYRmlsZVR5cGVVdGlsaXRpZXM+ID0gT21pdDxcbiAgQVhGaWxlVHlwZTxUPixcbiAgJ2V4dGVuc2lvbnMnXG4+O1xuIl19","import { AX_FILE_TYPE_METADATA_PURPOSE } from './file-type.models';\nexport { AX_FILE_TYPE_METADATA_PURPOSE } from './file-type.models';\nconst CONVERSATION_NAME_PREFIX = 'conversation-';\nexport function getFileTypePurposes(type) {\n const raw = type.metadata?.[AX_FILE_TYPE_METADATA_PURPOSE];\n if (Array.isArray(raw)) {\n const values = raw.filter((entry) => typeof entry === 'string' && entry.trim().length > 0);\n if (values.length) {\n return values;\n }\n }\n if (type.name.startsWith(CONVERSATION_NAME_PREFIX)) {\n return ['conversation'];\n }\n return ['system'];\n}\nexport function fileTypeMatchesPurpose(type, purpose) {\n const allowed = Array.isArray(purpose) ? purpose : [purpose];\n return getFileTypePurposes(type).some((entry) => allowed.includes(entry));\n}\nexport function filterFileTypesByPurpose(types, purpose) {\n if (!purpose) {\n return types;\n }\n return types.filter((type) => fileTypeMatchesPurpose(type, purpose));\n}\nexport function createFileTypeMetadata(purpose) {\n const values = (Array.isArray(purpose) ? purpose : [purpose]).filter((entry) => typeof entry === 'string' && entry.trim().length > 0);\n return { [AX_FILE_TYPE_METADATA_PURPOSE]: values };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRSxNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQztBQUVqRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBZ0I7SUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDM0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBbUIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLE9BQTBCO0lBQ2pGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBbUIsRUFBRSxPQUEyQjtJQUN2RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBMEI7SUFDL0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ2xFLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNqRixDQUFDO0lBQ0YsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcbmltcG9ydCB7IEFYX0ZJTEVfVFlQRV9NRVRBREFUQV9QVVJQT1NFIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuZXhwb3J0IHsgQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0UgfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBDT05WRVJTQVRJT05fTkFNRV9QUkVGSVggPSAnY29udmVyc2F0aW9uLSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlVHlwZVB1cnBvc2VzKHR5cGU6IEFYRmlsZVR5cGUpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJhdyA9IHR5cGUubWV0YWRhdGE/LltBWF9GSUxFX1RZUEVfTUVUQURBVEFfUFVSUE9TRV07XG4gIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSByYXcuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnICYmIGVudHJ5LnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGUubmFtZS5zdGFydHNXaXRoKENPTlZFUlNBVElPTl9OQU1FX1BSRUZJWCkpIHtcbiAgICByZXR1cm4gWydjb252ZXJzYXRpb24nXTtcbiAgfVxuICByZXR1cm4gWydzeXN0ZW0nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVUeXBlTWF0Y2hlc1B1cnBvc2UodHlwZTogQVhGaWxlVHlwZSwgcHVycG9zZTogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgY29uc3QgYWxsb3dlZCA9IEFycmF5LmlzQXJyYXkocHVycG9zZSkgPyBwdXJwb3NlIDogW3B1cnBvc2VdO1xuICByZXR1cm4gZ2V0RmlsZVR5cGVQdXJwb3Nlcyh0eXBlKS5zb21lKChlbnRyeSkgPT4gYWxsb3dlZC5pbmNsdWRlcyhlbnRyeSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRmlsZVR5cGVzQnlQdXJwb3NlKHR5cGVzOiBBWEZpbGVUeXBlW10sIHB1cnBvc2U/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IEFYRmlsZVR5cGVbXSB7XG4gIGlmICghcHVycG9zZSkge1xuICAgIHJldHVybiB0eXBlcztcbiAgfVxuICByZXR1cm4gdHlwZXMuZmlsdGVyKCh0eXBlKSA9PiBmaWxlVHlwZU1hdGNoZXNQdXJwb3NlKHR5cGUsIHB1cnBvc2UpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEocHVycG9zZTogc3RyaW5nIHwgc3RyaW5nW10pOiBOb25OdWxsYWJsZTxBWEZpbGVUeXBlWydtZXRhZGF0YSddPiB7XG4gIGNvbnN0IHZhbHVlcyA9IChBcnJheS5pc0FycmF5KHB1cnBvc2UpID8gcHVycG9zZSA6IFtwdXJwb3NlXSkuZmlsdGVyKFxuICAgIChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnICYmIGVudHJ5LnRyaW0oKS5sZW5ndGggPiAwLFxuICApO1xuICByZXR1cm4geyBbQVhfRklMRV9UWVBFX01FVEFEQVRBX1BVUlBPU0VdOiB2YWx1ZXMgfTtcbn1cbiJdfQ==","/** Resolves clipboard/plain text from a copy result. */\nexport function resolveFileCopyText(result) {\n if (result == null) {\n return null;\n }\n if (typeof result === 'string') {\n const trimmed = result.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n const trimmed = result.text?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLmNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0Esd0RBQXdEO0FBQ3hELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUF3QjtJQUMxRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTdHJ1Y3R1cmVkIGNvcHkgcGF5bG9hZCBmcm9tIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVDb3B5RGF0YSB7XG4gIC8qKiBQcmltYXJ5IHBsYWluLXRleHQgdmFsdWUgZm9yIGNsaXBib2FyZCBvciBwcmV2aWV3cy4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgdHlwZS1zcGVjaWZpYyBtZXRhZGF0YSBmb3IgY29uc3VtZXJzIChVUkxzLCBuYW1lcywgbWltZSB0eXBlcywg4oCmKS4gKi9cbiAgbWV0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogUmV0dXJuIHZhbHVlIG9mIHtAbGluayBBWEZpbGVUeXBlLmNvcHl9IOKAlCBzaG9ydGhhbmQgc3RyaW5nIG9yIHN0cnVjdHVyZWQgZGF0YS4gKi9cbmV4cG9ydCB0eXBlIEFYRmlsZUNvcHlSZXN1bHQgPSBzdHJpbmcgfCBBWEZpbGVDb3B5RGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKiBSZXNvbHZlcyBjbGlwYm9hcmQvcGxhaW4gdGV4dCBmcm9tIGEgY29weSByZXN1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVDb3B5VGV4dChyZXN1bHQ6IEFYRmlsZUNvcHlSZXN1bHQpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHJlc3VsdC50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID4gMCA/IHRyaW1tZWQgOiBudWxsO1xuICB9XG4gIGNvbnN0IHRyaW1tZWQgPSByZXN1bHQudGV4dD8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCAmJiB0cmltbWVkLmxlbmd0aCA+IDAgPyB0cmltbWVkIDogbnVsbDtcbn1cbiJdfQ==","/** 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 entry. */\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//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm1lcmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5tZXJnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSx5RkFBeUY7QUFDekYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUF1QixFQUN2QixRQUFxQztJQUVyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQy9DLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ3pDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFnQixFQUFFLFNBQStCO0lBQ3RGLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQStCO0lBQ3BFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLENBQ0wsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSTtRQUMzQixXQUFXLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDM0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ3ZDLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQWdCO0lBQ25ELE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hGLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlLCBBWEZpbGVUeXBlRXh0ZW5zaW9uLCBBWEZpbGVWYWxpZGF0aW9ucyB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XG5cbi8qKiBNZXJnZXMgdHlwZS1sZXZlbCB2YWxpZGF0aW9ucyB3aXRoIGV4dGVuc2lvbiBvdmVycmlkZXMgKGV4dGVuc2lvbiB3aW5zIHBlciBmaWVsZCkuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWxlVmFsaWRhdGlvbnMoXG4gIGJhc2U6IEFYRmlsZVZhbGlkYXRpb25zLFxuICBvdmVycmlkZT86IFBhcnRpYWw8QVhGaWxlVmFsaWRhdGlvbnM+LFxuKTogQVhGaWxlVmFsaWRhdGlvbnMge1xuICBpZiAoIW92ZXJyaWRlKSB7XG4gICAgcmV0dXJuIHsgLi4uYmFzZSB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtaW1lVHlwZXM6IG92ZXJyaWRlLm1pbWVUeXBlcyA/PyBiYXNlLm1pbWVUeXBlcyxcbiAgICBtaW5TaXplOiBvdmVycmlkZS5taW5TaXplID8/IGJhc2UubWluU2l6ZSxcbiAgICBtYXhTaXplOiBvdmVycmlkZS5tYXhTaXplID8/IGJhc2UubWF4U2l6ZSxcbiAgICBydWxlczogb3ZlcnJpZGUucnVsZXMgPz8gYmFzZS5ydWxlcyxcbiAgfTtcbn1cblxuLyoqIFJlc29sdmVkIHZhbGlkYXRpb25zIGZvciBhIHR5cGUgKyBvcHRpb25hbCBleHRlbnNpb24gZW50cnkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVWYWxpZGF0aW9ucyh0eXBlOiBBWEZpbGVUeXBlLCBleHRlbnNpb24/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uKTogQVhGaWxlVmFsaWRhdGlvbnMge1xuICByZXR1cm4gbWVyZ2VGaWxlVmFsaWRhdGlvbnModHlwZS52YWxpZGF0aW9ucyA/PyB7fSwgZXh0ZW5zaW9uPy52YWxpZGF0aW9ucyk7XG59XG5cbi8qKiBUcnVlIHdoZW4gbm8gbWltZS9zaXplL3J1bGVzIGFyZSBkZWZpbmVkIG9uIHRoZSB0eXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHlGaWxlVmFsaWRhdGlvbnModmFsaWRhdGlvbnM/OiBBWEZpbGVWYWxpZGF0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAoIXZhbGlkYXRpb25zKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIChcbiAgICAodmFsaWRhdGlvbnMubWltZVR5cGVzPy5sZW5ndGggPz8gMCkgPT09IDAgJiZcbiAgICB2YWxpZGF0aW9ucy5taW5TaXplID09IG51bGwgJiZcbiAgICB2YWxpZGF0aW9ucy5tYXhTaXplID09IG51bGwgJiZcbiAgICAodmFsaWRhdGlvbnMucnVsZXM/Lmxlbmd0aCA/PyAwKSA9PT0gMFxuICApO1xufVxuXG4vKipcbiAqIEV4dGVuc2lvbi1vbmx5IG1vZGU6IGVtcHR5IHR5cGUgYHZhbGlkYXRpb25zYCBhbmQgYSBub24tZW1wdHkgYGV4dGVuc2lvbnNgIGxpc3QuXG4gKiBGaWxlcyBtdXN0IG1hdGNoIGEgbGlzdGVkIGV4dGVuc2lvbjsgcnVsZXMgY29tZSBmcm9tIHRoYXQgZXh0ZW5zaW9uIGVudHJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlbnNpb25zT25seVR5cGUodHlwZTogQVhGaWxlVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNFbXB0eUZpbGVWYWxpZGF0aW9ucyh0eXBlLnZhbGlkYXRpb25zKSAmJiAodHlwZS5leHRlbnNpb25zPy5sZW5ndGggPz8gMCkgPiAwO1xufVxuXG4vKiogRmlsZSBleHRlbnNpb24gZnJvbSBuYW1lIChsb3dlcmNhc2UsIG5vIGRvdCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHMgPSBmaWxlTmFtZS50cmltKCkuc3BsaXQoJy4nKTtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyAocGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCkgPz8gJycpIDogJyc7XG59XG4iXX0=","/** Resolves a {@link AXFileTypeComponent} to an Angular component type. */\nexport async function resolveFileTypeComponentType(component) {\n if (isLazyFileTypeComponentLoader(component)) {\n return component();\n }\n return component;\n}\n/** Whether `value` is a lazy loader rather than an Angular component class. */\nexport function isLazyFileTypeComponentLoader(value) {\n return typeof value === 'function' && !('ɵcmp' in value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS5yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQkEsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsNEJBQTRCLENBQ2hELFNBQThCO0lBRTlCLElBQUksNkJBQTZCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSw2QkFBNkIsQ0FDM0MsS0FBMEI7SUFFMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbnB1dFNpZ25hbCwgU2lnbmFsLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVmlldyBjb21wb25lbnQgZm9yIGEgZmlsZSB0eXBlIOKAlCBlaXRoZXIgYW4gQW5ndWxhciBjb21wb25lbnQgY2xhc3Mgb3IgYSBsYXp5IGxvYWRlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIGVhZ2VyXG4gKiBjb21wb25lbnQ6IEltYWdlVmlld2VyQ29tcG9uZW50LFxuICpcbiAqIC8vIGxhenlcbiAqIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2ltYWdlLXZpZXdlci5jb21wb25lbnQnKS50aGVuKG0gPT4gbS5JbWFnZVZpZXdlckNvbXBvbmVudCksXG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgQVhGaWxlVHlwZUNvbXBvbmVudCA9XG4gIHwgVHlwZTxBWEZpbGVUeXBlVmlld0NvbXBvbmVudD5cbiAgfCAoKCkgPT4gUHJvbWlzZTxUeXBlPEFYRmlsZVR5cGVWaWV3Q29tcG9uZW50Pj4pO1xuXG4vKipcbiAqIFJlY29tbWVuZGVkIGNvbnRyYWN0IGZvciBmaWxlLXR5cGUgdmlldyBjb21wb25lbnRzLlxuICogSW1wbGVtZW50IGByZWFkb25seSBwYXlsb2FkID0gaW5wdXQucmVxdWlyZWQ8VFBheWxvYWQ+KClgIGluIG5ldyBjb21wb25lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZVR5cGVWaWV3Q29tcG9uZW50PFRQYXlsb2FkID0gdW5rbm93bj4ge1xuICByZWFkb25seSBwYXlsb2FkOiBJbnB1dFNpZ25hbDxUUGF5bG9hZD4gfCBTaWduYWw8VFBheWxvYWQ+O1xufVxuXG4vKiogUmVzb2x2ZXMgYSB7QGxpbmsgQVhGaWxlVHlwZUNvbXBvbmVudH0gdG8gYW4gQW5ndWxhciBjb21wb25lbnQgdHlwZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlRmlsZVR5cGVDb21wb25lbnRUeXBlKFxuICBjb21wb25lbnQ6IEFYRmlsZVR5cGVDb21wb25lbnQsXG4pOiBQcm9taXNlPFR5cGU8dW5rbm93bj4+IHtcbiAgaWYgKGlzTGF6eUZpbGVUeXBlQ29tcG9uZW50TG9hZGVyKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gY29tcG9uZW50KCk7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudDtcbn1cblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhIGxhenkgbG9hZGVyIHJhdGhlciB0aGFuIGFuIEFuZ3VsYXIgY29tcG9uZW50IGNsYXNzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGF6eUZpbGVUeXBlQ29tcG9uZW50TG9hZGVyKFxuICB2YWx1ZTogQVhGaWxlVHlwZUNvbXBvbmVudCxcbik6IHZhbHVlIGlzICgpID0+IFByb21pc2U8VHlwZTxBWEZpbGVUeXBlVmlld0NvbXBvbmVudD4+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKCfJtWNtcCcgaW4gdmFsdWUpO1xufVxuIl19","import { getFileExtension } from './file-type.merge';\nimport { resolveFileTypeComponentType } from './file-type.renderer';\n/** Matches a MIME type against a catalog pattern (`image/*`, exact type, …). */\nexport function matchesFileMime(mime, pattern) {\n const normalizedMime = mime.trim().toLowerCase();\n const normalizedPattern = pattern.trim().toLowerCase();\n if (!normalizedPattern || normalizedPattern === '*/*' || normalizedPattern === '*') {\n return true;\n }\n if (normalizedPattern.endsWith('/*')) {\n const category = normalizedPattern.slice(0, -2);\n return normalizedMime.startsWith(`${category}/`) || (normalizedMime === '' && category === 'application');\n }\n return normalizedMime === normalizedPattern;\n}\n/** Finds an extension entry by its `name` (without dot). */\nexport function findFileTypeExtensionByName(type, extensionName) {\n const ext = extensionName.replace(/^\\./, '').trim().toLowerCase();\n if (!ext || !type.extensions?.length) {\n return undefined;\n }\n return type.extensions.find((entry) => entry.name.toLowerCase() === ext);\n}\n/** Finds an extension entry whose validations include the given MIME type. */\nexport function findFileTypeExtensionForMime(type, mimeType) {\n const mime = mimeType.trim().toLowerCase();\n if (!mime || !type.extensions?.length) {\n return undefined;\n }\n return type.extensions.find((entry) => entry.validations?.mimeTypes?.some((pattern) => matchesFileMime(mime, pattern)));\n}\n/** Matching extension entry for a file within a type, if any. */\nexport function findFileTypeExtension(file, type) {\n return resolveFileTypeExtension(type, { file });\n}\n/** Resolves the best-matching extension entry for a file or hint. */\nexport function resolveFileTypeExtension(type, hint) {\n if (!hint) {\n return undefined;\n }\n if (hint.file) {\n const byFileName = findFileTypeExtensionByName(type, getFileExtension(hint.file.name));\n if (byFileName) {\n return byFileName;\n }\n if (hint.file.type) {\n const byFileMime = findFileTypeExtensionForMime(type, hint.file.type);\n if (byFileMime) {\n return byFileMime;\n }\n }\n }\n if (hint.extensionName) {\n const byName = findFileTypeExtensionByName(type, hint.extensionName);\n if (byName) {\n return byName;\n }\n }\n if (hint.mimeType) {\n return findFileTypeExtensionForMime(type, hint.mimeType);\n }\n return undefined;\n}\nexport function resolveFileTypeCopy(type, extension) {\n return extension?.copy ?? type.copy;\n}\nexport function resolveFileTypeOpen(type, extension) {\n return extension?.open ?? type.open;\n}\nexport function resolveFileTypeComponent(type, extension) {\n return extension?.component ?? type.component;\n}\n/** Loads the resolved view component (extension override first). */\nexport async function loadFileTypeComponent(type, extension) {\n const component = resolveFileTypeComponent(type, extension);\n if (!component) {\n return undefined;\n }\n return resolveFileTypeComponentType(component);\n}\nexport function resolveFileTypePaste(type, extension) {\n return extension?.paste ?? type.paste;\n}\nexport function resolveFileTypeUtility(type, extension, name) {\n const fromExtension = extension?.utilities?.[name];\n if (fromExtension) {\n return fromExtension;\n }\n return type.utilities?.[name];\n}\n/** Runs `copy` from extension first, then parent type. */\nexport async function runFileTypeCopy(type, payload, extension) {\n const copy = resolveFileTypeCopy(type, extension);\n if (!copy) {\n return undefined;\n }\n return copy(payload);\n}\n/** Runs a utility from extension first, then parent type. */\nexport function runFileTypeUtility(type, ctx, extension, name, ...args) {\n const utility = resolveFileTypeUtility(type, extension, name);\n if (!utility) {\n return undefined;\n }\n return utility(ctx, ...args);\n}\n/** Runs a catalog utility with optional file-based extension resolution. */\nexport function runFileTypeUtilityForFile(type, ctx, file, name, ...args) {\n const extension = file ? findFileTypeExtension(file, type) : undefined;\n return runFileTypeUtility(type, ctx, extension, name, ...args);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnJlc29sdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLnJlc29sdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHckQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFTcEUsZ0ZBQWdGO0FBQ2hGLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQWU7SUFDM0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXZELElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLElBQUksaUJBQWlCLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxFQUFFLElBQUksUUFBUSxLQUFLLGFBQWEsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxPQUFPLGNBQWMsS0FBSyxpQkFBaUIsQ0FBQztBQUM5QyxDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsSUFBZ0IsRUFDaEIsYUFBcUI7SUFFckIs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QUNsRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDZEQUE2RDtBQUM3RCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQWdCLEVBQ2hCLEdBQXNCLEVBQ3RCLFNBQTBDLEVBQzFDLElBQVksRUFDWixHQUFHLElBQWU7SUFFbEIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLElBQWdCLEVBQ2hCLEdBQXNCLEVBQ3RCLElBQXNCLEVBQ3RCLElBQVksRUFDWixHQUFHLElBQWU7SUFFbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RSxPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlQ29udGV4dCB9IGZyb20gJy4vZmlsZS10eXBlLmNvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVDb3B5UmVzdWx0IH0gZnJvbSAnLi9maWxlLXR5cGUuY29weSc7XG5pbXBvcnQgeyBnZXRGaWxlRXh0ZW5zaW9uIH0gZnJvbSAnLi9maWxlLXR5cGUubWVyZ2UnO1xuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlLCBBWEZpbGVUeXBlRXh0ZW5zaW9uIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZUNvbXBvbmVudCB9IGZyb20gJy4vZmlsZS10eXBlLnJlbmRlcmVyJztcbmltcG9ydCB7IHJlc29sdmVGaWxlVHlwZUNvbXBvbmVudFR5cGUgfSBmcm9tICcuL2ZpbGUtdHlwZS5yZW5kZXJlcic7XG5cbi8qKiBIaW50IGZvciByZXNvbHZpbmcgYSBjYXRhbG9nIGV4dGVuc2lvbiBlbnRyeS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlVHlwZUV4dGVuc2lvbkhpbnQge1xuICBmaWxlPzogRmlsZTtcbiAgZXh0ZW5zaW9uTmFtZT86IHN0cmluZztcbiAgbWltZVR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKiBNYXRjaGVzIGEgTUlNRSB0eXBlIGFnYWluc3QgYSBjYXRhbG9nIHBhdHRlcm4gKGBpbWFnZS8qYCwgZXhhY3QgdHlwZSwg4oCmKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaGVzRmlsZU1pbWUobWltZTogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9ybWFsaXplZE1pbWUgPSBtaW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBub3JtYWxpemVkUGF0dGVybiA9IHBhdHRlcm4udHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKCFub3JtYWxpemVkUGF0dGVybiB8fCBub3JtYWxpemVkUGF0dGVybiA9PT0gJyovKicgfHwgbm9ybWFsaXplZFBhdHRlcm4gPT09ICcqJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKG5vcm1hbGl6ZWRQYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBub3JtYWxpemVkUGF0dGVybi5zbGljZSgwLCAtMik7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRNaW1lLnN0YXJ0c1dpdGgoYCR7Y2F0ZWdvcnl9L2ApIHx8IChub3JtYWxpemVkTWltZSA9PT0gJycgJiYgY2F0ZWdvcnkgPT09ICdhcHBsaWNhdGlvbicpO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRNaW1lID09PSBub3JtYWxpemVkUGF0dGVybjtcbn1cblxuLyoqIEZpbmRzIGFuIGV4dGVuc2lvbiBlbnRyeSBieSBpdHMgYG5hbWVgICh3aXRob3V0IGRvdCkuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpbGVUeXBlRXh0ZW5zaW9uQnlOYW1lKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBleHRlbnNpb25OYW1lOiBzdHJpbmcsXG4pOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXh0ID0gZXh0ZW5zaW9uTmFtZS5yZXBsYWNlKC9eXFwuLywgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIWV4dCB8fCAhdHlwZS5leHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB0eXBlLmV4dGVuc2lvbnMuZmluZCgoZW50cnkpID0+IGVudHJ5Lm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gZXh0KTtcbn1cblxuLyoqIEZpbmRzIGFuIGV4dGVuc2lvbiBlbnRyeSB3aG9zZSB2YWxpZGF0aW9ucyBpbmNsdWRlIHRoZSBnaXZlbiBNSU1FIHR5cGUuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpbGVUeXBlRXh0ZW5zaW9uRm9yTWltZShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgbWltZVR5cGU6IHN0cmluZyxcbik6IEFYRmlsZVR5cGVFeHRlbnNpb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBtaW1lID0gbWltZVR5cGUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghbWltZSB8fCAhdHlwZS5leHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHR5cGUuZXh0ZW5zaW9ucy5maW5kKChlbnRyeSkgPT5cbiAgICBlbnRyeS52YWxpZGF0aW9ucz8ubWltZVR5cGVzPy5zb21lKChwYXR0ZXJuKSA9PiBtYXRjaGVzRmlsZU1pbWUobWltZSwgcGF0dGVybikpLFxuICApO1xufVxuXG4vKiogTWF0Y2hpbmcgZXh0ZW5zaW9uIGVudHJ5IGZvciBhIGZpbGUgd2l0aGluIGEgdHlwZSwgaWYgYW55LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlOiBGaWxlLCB0eXBlOiBBWEZpbGVUeXBlKTogQVhGaWxlVHlwZUV4dGVuc2lvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiByZXNvbHZlRmlsZVR5cGVFeHRlbnNpb24odHlwZSwgeyBmaWxlIH0pO1xufVxuXG4vKiogUmVzb2x2ZXMgdGhlIGJlc3QtbWF0Y2hpbmcgZXh0ZW5zaW9uIGVudHJ5IGZvciBhIGZpbGUgb3IgaGludC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVR5cGVFeHRlbnNpb24oXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIGhpbnQ/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uSGludCxcbik6IEFYRmlsZVR5cGVFeHRlbnNpb24gfCB1bmRlZmluZWQge1xuICBpZiAoIWhpbnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGhpbnQuZmlsZSkge1xuICAgIGNvbnN0IGJ5RmlsZU5hbWUgPSBmaW5kRmlsZVR5cGVFeHRlbnNpb25CeU5hbWUodHlwZSwgZ2V0RmlsZUV4dGVuc2lvbihoaW50LmZpbGUubmFtZSkpO1xuICAgIGlmIChieUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gYnlGaWxlTmFtZTtcbiAgICB9XG4gICAgaWYgKGhpbnQuZmlsZS50eXBlKSB7XG4gICAgICBjb25zdCBieUZpbGVNaW1lID0gZmluZEZpbGVUeXBlRXh0ZW5zaW9uRm9yTWltZSh0eXBlLCBoaW50LmZpbGUudHlwZSk7XG4gICAgICBpZiAoYnlGaWxlTWltZSkge1xuICAgICAgICByZXR1cm4gYnlGaWxlTWltZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoaGludC5leHRlbnNpb25OYW1lKSB7XG4gICAgY29uc3QgYnlOYW1lID0gZmluZEZpbGVUeXBlRXh0ZW5zaW9uQnlOYW1lKHR5cGUsIGhpbnQuZXh0ZW5zaW9uTmFtZSk7XG4gICAgaWYgKGJ5TmFtZSkge1xuICAgICAgcmV0dXJuIGJ5TmFtZTtcbiAgICB9XG4gIH1cblxuICBpZiAoaGludC5taW1lVHlwZSkge1xuICAgIHJldHVybiBmaW5kRmlsZVR5cGVFeHRlbnNpb25Gb3JNaW1lKHR5cGUsIGhpbnQubWltZVR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGaWxlVHlwZUNvcHkoXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24sXG4pOiBBWEZpbGVUeXBlWydjb3B5J10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZXh0ZW5zaW9uPy5jb3B5ID8/IHR5cGUuY29weTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGaWxlVHlwZU9wZW4oXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24sXG4pOiBBWEZpbGVUeXBlWydvcGVuJ10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZXh0ZW5zaW9uPy5vcGVuID8/IHR5cGUub3Blbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGaWxlVHlwZUNvbXBvbmVudChcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uPzogQVhGaWxlVHlwZUV4dGVuc2lvbixcbik6IEFYRmlsZVR5cGVbJ2NvbXBvbmVudCddIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGV4dGVuc2lvbj8uY29tcG9uZW50ID8/IHR5cGUuY29tcG9uZW50O1xufVxuXG4vKiogTG9hZHMgdGhlIHJlc29sdmVkIHZpZXcgY29tcG9uZW50IChleHRlbnNpb24gb3ZlcnJpZGUgZmlyc3QpLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRGaWxlVHlwZUNvbXBvbmVudChcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uPzogQVhGaWxlVHlwZUV4dGVuc2lvbixcbik6IFByb21pc2U8VHlwZTx1bmtub3duPiB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBjb21wb25lbnQgPSByZXNvbHZlRmlsZVR5cGVDb21wb25lbnQodHlwZSwgZXh0ZW5zaW9uKTtcbiAgaWYgKCFjb21wb25lbnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiByZXNvbHZlRmlsZVR5cGVDb21wb25lbnRUeXBlKGNvbXBvbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmlsZVR5cGVQYXN0ZShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uPzogQVhGaWxlVHlwZUV4dGVuc2lvbixcbik6IEFYRmlsZVR5cGVbJ3Bhc3RlJ10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZXh0ZW5zaW9uPy5wYXN0ZSA/PyB0eXBlLnBhc3RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZpbGVUeXBlVXRpbGl0eShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgZXh0ZW5zaW9uOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBzdHJpbmcsXG4pOiAoKGN0eDogQVhGaWxlVHlwZUNvbnRleHQsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24pIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZnJvbUV4dGVuc2lvbiA9IGV4dGVuc2lvbj8udXRpbGl0aWVzPy5bbmFtZV07XG4gIGlmIChmcm9tRXh0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGZyb21FeHRlbnNpb247XG4gIH1cbiAgcmV0dXJuIHR5cGUudXRpbGl0aWVzPy5bbmFtZV07XG59XG5cbi8qKiBSdW5zIGBjb3B5YCBmcm9tIGV4dGVuc2lvbiBmaXJzdCwgdGhlbiBwYXJlbnQgdHlwZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5GaWxlVHlwZUNvcHkoXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIHBheWxvYWQ6IHVua25vd24sXG4gIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24sXG4pOiBQcm9taXNlPEFYRmlsZUNvcHlSZXN1bHQ+IHtcbiAgY29uc3QgY29weSA9IHJlc29sdmVGaWxlVHlwZUNvcHkodHlwZSwgZXh0ZW5zaW9uKTtcbiAgaWYgKCFjb3B5KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gY29weShwYXlsb2FkKTtcbn1cblxuLyoqIFJ1bnMgYSB1dGlsaXR5IGZyb20gZXh0ZW5zaW9uIGZpcnN0LCB0aGVuIHBhcmVudCB0eXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkZpbGVUeXBlVXRpbGl0eShcbiAgdHlwZTogQVhGaWxlVHlwZSxcbiAgY3R4OiBBWEZpbGVUeXBlQ29udGV4dCxcbiAgZXh0ZW5zaW9uOiBBWEZpbGVUeXBlRXh0ZW5zaW9uIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBzdHJpbmcsXG4gIC4uLmFyZ3M6IHVua25vd25bXVxuKTogUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24ge1xuICBjb25zdCB1dGlsaXR5ID0gcmVzb2x2ZUZpbGVUeXBlVXRpbGl0eSh0eXBlLCBleHRlbnNpb24sIG5hbWUpO1xuICBpZiAoIXV0aWxpdHkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1dGlsaXR5KGN0eCwgLi4uYXJncyk7XG59XG5cbi8qKiBSdW5zIGEgY2F0YWxvZyB1dGlsaXR5IHdpdGggb3B0aW9uYWwgZmlsZS1iYXNlZCBleHRlbnNpb24gcmVzb2x1dGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5GaWxlVHlwZVV0aWxpdHlGb3JGaWxlKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBjdHg6IEFYRmlsZVR5cGVDb250ZXh0LFxuICBmaWxlOiBGaWxlIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBzdHJpbmcsXG4gIC4uLmFyZ3M6IHVua25vd25bXVxuKTogUHJvbWlzZTx1bmtub3duPiB8IHVua25vd24ge1xuICBjb25zdCBleHRlbnNpb24gPSBmaWxlID8gZmluZEZpbGVUeXBlRXh0ZW5zaW9uKGZpbGUsIHR5cGUpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcnVuRmlsZVR5cGVVdGlsaXR5KHR5cGUsIGN0eCwgZXh0ZW5zaW9uLCBuYW1lLCAuLi5hcmdzKTtcbn1cbiJdfQ==","import { runInInjectionContext } from '@angular/core';\nimport { resolveFileTypeOpen } from './file-type.resolve';\n/** Runs `open` from extension first, then parent type, in the caller's injection context. */\nexport function runFileTypeOpen(type, ctx, payload, extension) {\n const open = resolveFileTypeOpen(type, extension);\n if (!open) {\n return false;\n }\n return runInInjectionContext(ctx.injector, () => open(ctx, payload));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLm9wZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLm9wZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSzFELDZGQUE2RjtBQUM3RixNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUFnQixFQUNoQixHQUEwQixFQUMxQixPQUFnQixFQUNoQixTQUErQjtJQUUvQixNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZU9wZW5Db250ZXh0IH0gZnJvbSAnLi9maWxlLXR5cGUuY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUsIEFYRmlsZVR5cGVFeHRlbnNpb24gfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuaW1wb3J0IHsgcmVzb2x2ZUZpbGVUeXBlT3BlbiB9IGZyb20gJy4vZmlsZS10eXBlLnJlc29sdmUnO1xuXG4vKiogUmVzdWx0IG9mIHtAbGluayBBWEZpbGVUeXBlLm9wZW59OyBgZmFsc2VgIG1lYW5zIHRoZSBwYXlsb2FkIHdhcyBub3Qgb3BlbmVkLiAqL1xuZXhwb3J0IHR5cGUgQVhGaWxlT3BlblJlc3VsdCA9IHZvaWQgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqIFJ1bnMgYG9wZW5gIGZyb20gZXh0ZW5zaW9uIGZpcnN0LCB0aGVuIHBhcmVudCB0eXBlLCBpbiB0aGUgY2FsbGVyJ3MgaW5qZWN0aW9uIGNvbnRleHQuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuRmlsZVR5cGVPcGVuKFxuICB0eXBlOiBBWEZpbGVUeXBlLFxuICBjdHg6IEFYRmlsZVR5cGVPcGVuQ29udGV4dCxcbiAgcGF5bG9hZDogdW5rbm93bixcbiAgZXh0ZW5zaW9uPzogQVhGaWxlVHlwZUV4dGVuc2lvbixcbik6IFByb21pc2U8QVhGaWxlT3BlblJlc3VsdD4gfCBBWEZpbGVPcGVuUmVzdWx0IHtcbiAgY29uc3Qgb3BlbiA9IHJlc29sdmVGaWxlVHlwZU9wZW4odHlwZSwgZXh0ZW5zaW9uKTtcbiAgaWYgKCFvcGVuKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoY3R4LmluamVjdG9yLCAoKSA9PiBvcGVuKGN0eCwgcGF5bG9hZCkpO1xufVxuIl19","/**\n\n * Builds an {@link AXFileType} with optional typed handlers and view component.\n\n *\n\n * @example\n\n * ```ts\n\n * export const imageFileType = defineFileType<ImagePayload>({\n\n * name: 'image',\n\n * copy: (p) => p.caption ?? p.url,\n\n * component: () => import('./image-viewer.component').then(m => m.ImageViewerComponent),\n\n * });\n\n * ```\n\n */\nexport function defineFileType(config) {\n const { copy, open, ...rest } = config;\n return {\n ...rest,\n ...(copy ? { copy: copy } : {}),\n ...(open ? { open: open } : {}),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLmRlZmluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9maWxlLXR5cGUuZGVmaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE1BQU0sVUFBVSxjQUFjLENBRTVCLE1BQWtEO0lBSWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBSXZDLE9BQU87UUFFTCxHQUFHLElBQUk7UUFFUCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVqRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUVsRSxDQUFDO0FBRUosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXHJcblxyXHJcbmltcG9ydCB0eXBlIHsgQVhGaWxlQ29weVJlc3VsdCB9IGZyb20gJy4vZmlsZS10eXBlLmNvcHknO1xyXHJcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSwgQVhGaWxlVHlwZUV4dGVuc2lvbiwgQVhGaWxlVmFsaWRhdGlvbnMsIEFYRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4vZmlsZS10eXBlLm1vZGVscyc7XHJcclxuaW1wb3J0IHR5cGUgeyBBWEZpbGVPcGVuUmVzdWx0IH0gZnJvbSAnLi9maWxlLXR5cGUub3Blbic7XHJcclxuaW1wb3J0IHR5cGUgeyBBWEZpbGVUeXBlT3BlbkNvbnRleHQgfSBmcm9tICcuL2ZpbGUtdHlwZS5jb250ZXh0JztcclxyXG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGVDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdHlwZS5yZW5kZXJlcic7XHJcclxuXHJcclxudHlwZSBBWEZpbGVUeXBlVXRpbGl0aWVzID0gUmVjb3JkPFxyXHJcbiAgc3RyaW5nLFxyXHJcbiAgKGN0eDogaW1wb3J0KCcuL2ZpbGUtdHlwZS5jb250ZXh0JykuQVhGaWxlVHlwZUNvbnRleHQsIC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd25cclxyXG4+O1xyXHJcblxyXHJcbi8qKiBDb25maWcgZm9yIHtAbGluayBkZWZpbmVGaWxlVHlwZX0uICovXHJcclxuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVGaWxlVHlwZUNvbmZpZzxcclxyXG4gIFRQYXlsb2FkID0gdW5rbm93bixcclxyXG4gIFRVdGlsaXRpZXMgZXh0ZW5kcyBBWEZpbGVUeXBlVXRpbGl0aWVzID0gQVhGaWxlVHlwZVV0aWxpdGllcyxcclxyXG4+IHtcclxyXG4gIG5hbWU6IHN0cmluZztcclxyXG4gIHRpdGxlPzogc3RyaW5nO1xyXHJcbiAgaWNvbj86IHN0cmluZztcclxyXG4gIG1ldGFkYXRhPzogQVhGaWxlVHlwZU1ldGFkYXRhO1xyXHJcbiAgdmFsaWRhdGlvbnM/OiBBWEZpbGVWYWxpZGF0aW9ucztcclxyXG4gIGV4dGVuc2lvbnM/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uPFRVdGlsaXRpZXM+W107XHJcclxuICB1dGlsaXRpZXM/OiBUVXRpbGl0aWVzO1xyXHJcbiAgcGFzdGU/OiBBWEZpbGVUeXBlPFRVdGlsaXRpZXM+WydwYXN0ZSddO1xyXHJcbiAgY29weT86IChwYXlsb2FkOiBUUGF5bG9hZCkgPT4gUHJvbWlzZTxBWEZpbGVDb3B5UmVzdWx0PiB8IEFYRmlsZUNvcHlSZXN1bHQ7XHJcclxuICBvcGVuPzogKFxyXHJcbiAgICBjdHg6IEFYRmlsZVR5cGVPcGVuQ29udGV4dCxcclxyXG4gICAgcGF5bG9hZDogVFBheWxvYWQsXHJcclxuICApID0+IFByb21pc2U8QVhGaWxlT3BlblJlc3VsdD4gfCBBWEZpbGVPcGVuUmVzdWx0O1xyXHJcbiAgLyoqIEVhZ2VyIGNvbXBvbmVudCBjbGFzcyBvciBsYXp5IGAoKSA9PiBpbXBvcnQoLi4uKS50aGVuKG0gPT4gbS5Db21wb25lbnQpYC4gKi9cclxyXG4gIGNvbXBvbmVudD86IEFYRmlsZVR5cGVDb21wb25lbnQ7XHJcclxufVxyXHJcblxyXHJcbi8qKlxyXHJcbiAqIEJ1aWxkcyBhbiB7QGxpbmsgQVhGaWxlVHlwZX0gd2l0aCBvcHRpb25hbCB0eXBlZCBoYW5kbGVycyBhbmQgdmlldyBjb21wb25lbnQuXHJcclxuICpcclxyXG4gKiBAZXhhbXBsZVxyXHJcbiAqIGBgYHRzXHJcclxuICogZXhwb3J0IGNvbnN0IGltYWdlRmlsZVR5cGUgPSBkZWZpbmVGaWxlVHlwZTxJbWFnZVBheWxvYWQ+KHtcclxyXG4gKiAgIG5hbWU6ICdpbWFnZScsXHJcclxuICogICBjb3B5OiAocCkgPT4gcC5jYXB0aW9uID8/IHAudXJsLFxyXHJcbiAqICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vaW1hZ2Utdmlld2VyLmNvbXBvbmVudCcpLnRoZW4obSA9PiBtLkltYWdlVmlld2VyQ29tcG9uZW50KSxcclxyXG4gKiB9KTtcclxyXG4gKiBgYGBcclxyXG4gKi9cclxyXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lRmlsZVR5cGU8VFBheWxvYWQgPSB1bmtub3duLCBUVXRpbGl0aWVzIGV4dGVuZHMgQVhGaWxlVHlwZVV0aWxpdGllcyA9IEFYRmlsZVR5cGVVdGlsaXRpZXM+KFxyXHJcbiAgY29uZmlnOiBEZWZpbmVGaWxlVHlwZUNvbmZpZzxUUGF5bG9hZCwgVFV0aWxpdGllcz4sXHJcclxuKTogQVhGaWxlVHlwZTxUVXRpbGl0aWVzPiB7XHJcclxuICBjb25zdCB7IGNvcHksIG9wZW4sIC4uLnJlc3QgfSA9IGNvbmZpZztcclxyXG5cclxyXG4gIHJldHVybiB7XHJcclxuICAgIC4uLnJlc3QsXHJcclxuICAgIC4uLihjb3B5ID8geyBjb3B5OiBjb3B5IGFzIEFYRmlsZVR5cGU8VFV0aWxpdGllcz5bJ2NvcHknXSB9IDoge30pLFxyXHJcbiAgICAuLi4ob3BlbiA/IHsgb3Blbjogb3BlbiBhcyBBWEZpbGVUeXBlPFRVdGlsaXRpZXM+WydvcGVuJ10gfSA6IHt9KSxcclxyXG4gIH07XHJcclxufVxyXHJcblxyIl19","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==","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider, provideFileTypeInfoProvider } from './file-type-info-provider';\nimport * as i0 from \"@angular/core\";\n/** Registers static file types via the existing {@link AXFileTypeInfoProvider} multi-token. */\nexport function provideFileTypes(types) {\n class AXStaticFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n const value = typeof types === 'function' ? types() : types;\n return Promise.resolve(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXStaticFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXStaticFileTypeProvider }); }\n }\n i0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXStaticFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n return provideFileTypeInfoProvider(AXStaticFileTypeProvider);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9maWxlLXR5cGUucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRWhHLCtGQUErRjtBQUMvRixNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBa0U7SUFDakcsTUFDTSx3QkFBeUIsU0FBUSxzQkFBc0I7UUFDbEQsS0FBSztZQUNaLE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM1RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztrSEFKRyx3QkFBd0I7c0hBQXhCLHdCQUF3Qjs7K0ZBQXhCLHdCQUF3QjtzQkFEN0IsVUFBVTs7SUFRWCxPQUFPLDJCQUEyQixDQUFDLHdCQUF3QixDQUFDLENBQUM7Q0FDOUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuL2ZpbGUtdHlwZS5tb2RlbHMnO1xuaW1wb3J0IHsgQVhGaWxlVHlwZUluZm9Qcm92aWRlciwgcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5cbi8qKiBSZWdpc3RlcnMgc3RhdGljIGZpbGUgdHlwZXMgdmlhIHRoZSBleGlzdGluZyB7QGxpbmsgQVhGaWxlVHlwZUluZm9Qcm92aWRlcn0gbXVsdGktdG9rZW4uICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpbGVUeXBlcyh0eXBlczogQVhGaWxlVHlwZVtdIHwgKCgpID0+IEFYRmlsZVR5cGVbXSB8IFByb21pc2U8QVhGaWxlVHlwZVtdPikpOiBQcm92aWRlciB7XG4gIEBJbmplY3RhYmxlKClcbiAgY2xhc3MgQVhTdGF0aWNGaWxlVHlwZVByb3ZpZGVyIGV4dGVuZHMgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB7XG4gICAgb3ZlcnJpZGUgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHR5cGVzID09PSAnZnVuY3Rpb24nID8gdHlwZXMoKSA6IHR5cGVzO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb3ZpZGVGaWxlVHlwZUluZm9Qcm92aWRlcihBWFN0YXRpY0ZpbGVUeXBlUHJvdmlkZXIpO1xufVxuIl19","import { getFileExtension, isExtensionsOnlyType, resolveFileValidations, } from './file-type.merge';\nimport { findFileTypeExtension } from './file-type.resolve';\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLnZhbGlkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL2ZpbGUtdHlwZS52YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc1RCx1RUFBdUU7QUFDdkUsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFdBQThCO0lBQ25FLE1BQU0sS0FBSyxHQUEyQixFQUFFLENBQUM7SUFFekMsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsY0FBYztZQUNwQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRTtTQUM1QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsYUFBYTtZQUNuQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsYUFBYTtZQUNuQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUMvQyxVQUErQixFQUMvQixJQUFVLEVBQ1YsV0FBOEI7SUFFOUIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsTUFBTSxNQUFNLEdBQTZCLEVBQUUsQ0FBQztJQUU1QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELDRGQUE0RjtBQUM1RixNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxVQUErQixFQUMvQixJQUFVLEVBQ1YsSUFBZ0IsRUFDaEIsU0FBK0I7SUFFL0IsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLElBQUkscUJBQXFCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXhFLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0NBQXNDO2dCQUM3RixLQUFLLEVBQUUsR0FBRzthQUNYO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRSxPQUFPLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVmFsaWRhdGlvblNlcnZpY2UsIHR5cGUgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7XG4gIGdldEZpbGVFeHRlbnNpb24sXG4gIGlzRXh0ZW5zaW9uc09ubHlUeXBlLFxuICByZXNvbHZlRmlsZVZhbGlkYXRpb25zLFxufSBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5pbXBvcnQgeyBmaW5kRmlsZVR5cGVFeHRlbnNpb24gfSBmcm9tICcuL2ZpbGUtdHlwZS5yZXNvbHZlJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSwgQVhGaWxlVHlwZUV4dGVuc2lvbiwgQVhGaWxlVmFsaWRhdGlvblJ1bGUsIEFYRmlsZVZhbGlkYXRpb25zIH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuLyoqIE1hcHMge0BsaW5rIEFYRmlsZVZhbGlkYXRpb25zfSB0byBleGVjdXRhYmxlIHZhbGlkYXRpb24gZW50cmllcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxlVmFsaWRhdGlvbnNUb1J1bGVzKHZhbGlkYXRpb25zOiBBWEZpbGVWYWxpZGF0aW9ucyk6IEFYRmlsZVZhbGlkYXRpb25SdWxlW10ge1xuICBjb25zdCBydWxlczogQVhGaWxlVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xuXG4gIGlmICh2YWxpZGF0aW9ucy5taW1lVHlwZXM/Lmxlbmd0aCkge1xuICAgIHJ1bGVzLnB1c2goe1xuICAgICAgcnVsZTogJ2ZpbGVNaW1lVHlwZScsXG4gICAgICBvcHRpb25zOiB7IGFsbG93ZWQ6IHZhbGlkYXRpb25zLm1pbWVUeXBlcyB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRpb25zLm1pblNpemUgIT0gbnVsbCkge1xuICAgIHJ1bGVzLnB1c2goe1xuICAgICAgcnVsZTogJ2ZpbGVNaW5TaXplJyxcbiAgICAgIG9wdGlvbnM6IHsgbWluU2l6ZTogdmFsaWRhdGlvbnMubWluU2l6ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRpb25zLm1heFNpemUgIT0gbnVsbCkge1xuICAgIHJ1bGVzLnB1c2goe1xuICAgICAgcnVsZTogJ2ZpbGVNYXhTaXplJyxcbiAgICAgIG9wdGlvbnM6IHsgbWF4U2l6ZTogdmFsaWRhdGlvbnMubWF4U2l6ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHZhbGlkYXRpb25zLnJ1bGVzPy5sZW5ndGgpIHtcbiAgICBydWxlcy5wdXNoKC4uLnZhbGlkYXRpb25zLnJ1bGVzKTtcbiAgfVxuXG4gIHJldHVybiBydWxlcztcbn1cblxuLyoqIEZhaWxlZCB2YWxpZGF0aW9uIHJlc3VsdHM7IGVtcHR5IGFycmF5IG1lYW5zIHRoZSBmaWxlIGlzIHZhbGlkLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlRmlsZVdpdGhWYWxpZGF0aW9ucyhcbiAgdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uU2VydmljZSxcbiAgZmlsZTogRmlsZSxcbiAgdmFsaWRhdGlvbnM6IEFYRmlsZVZhbGlkYXRpb25zLFxuKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgY29uc3QgZW50cmllcyA9IGZpbGVWYWxpZGF0aW9uc1RvUnVsZXModmFsaWRhdGlvbnMpO1xuICBjb25zdCBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBydWxlLCBvcHRpb25zIH0gb2YgZW50cmllcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb24udmFsaWRhdGUocnVsZSwgZmlsZSwgb3B0aW9ucyk7XG4gICAgaWYgKCFyZXN1bHQucmVzdWx0KSB7XG4gICAgICBlcnJvcnMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKiBWYWxpZGF0ZXMgYSBmaWxlIGFnYWluc3QgYSB0eXBlOyBleHRlbnNpb24gcnVsZXMgb3ZlcnJpZGUgd2hlbiB0aGUgZmlsZSBuYW1lIG1hdGNoZXMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVGaWxlQWdhaW5zdFR5cGUoXG4gIHZhbGlkYXRpb246IEFYVmFsaWRhdGlvblNlcnZpY2UsXG4gIGZpbGU6IEZpbGUsXG4gIHR5cGU6IEFYRmlsZVR5cGUsXG4gIGV4dGVuc2lvbj86IEFYRmlsZVR5cGVFeHRlbnNpb24sXG4pOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXT4ge1xuICBjb25zdCBtYXRjaGVkRXh0ZW5zaW9uID0gZXh0ZW5zaW9uID8/IGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlLCB0eXBlKTtcblxuICBpZiAoaXNFeHRlbnNpb25zT25seVR5cGUodHlwZSkgJiYgIW1hdGNoZWRFeHRlbnNpb24pIHtcbiAgICBjb25zdCBleHQgPSBnZXRGaWxlRXh0ZW5zaW9uKGZpbGUubmFtZSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcnVsZTogJ2ZpbGVFeHRlbnNpb24nLFxuICAgICAgICByZXN1bHQ6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiBleHQgPyBgRXh0ZW5zaW9uIFwiLiR7ZXh0fVwiIGlzIG5vdCBhbGxvd2VkLmAgOiAnRmlsZSBtdXN0IGhhdmUgYW4gYWxsb3dlZCBleHRlbnNpb24uJyxcbiAgICAgICAgdmFsdWU6IGV4dCxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUZpbGVWYWxpZGF0aW9ucyh0eXBlLCBtYXRjaGVkRXh0ZW5zaW9uKTtcbiAgcmV0dXJuIHZhbGlkYXRlRmlsZVdpdGhWYWxpZGF0aW9ucyh2YWxpZGF0aW9uLCBmaWxlLCByZXNvbHZlZCk7XG59XG4iXX0=","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, loadFileTypeComponent, matchesFileMime, resolveFileTypeComponent, resolveFileTypeExtension, } from './file-type.resolve';\nimport { filterFileTypesByPurpose } from './file-type.metadata';\nimport { validateFileAgainstType } from './file-type.validate';\nimport * as i0 from \"@angular/core\";\nexport class AXFileTypeRegistryService {\n constructor() {\n this.validation = inject(AXValidationService);\n this.providers = inject(AX_FILE_TYPE_INFO_PROVIDER, { optional: true }) ?? [];\n this.registeredTypes = [];\n this.cache = null;\n }\n /** Registers or replaces catalog entries (e.g. from feature bootstrap). */\n registerTypes(types) {\n for (const type of types) {\n const index = this.registeredTypes.findIndex((t) => t.name === type.name);\n if (index >= 0) {\n this.registeredTypes[index] = type;\n }\n else {\n this.registeredTypes.push(type);\n }\n }\n this.invalidateCache();\n }\n invalidateCache() {\n this.cache = null;\n }\n async resolveTypes() {\n if (this.cache) {\n return this.cache;\n }\n const byName = new Map();\n if (this.providers.length) {\n const batches = await Promise.all(this.providers.map((p) => p.items()));\n for (const batch of batches) {\n for (const type of batch) {\n if (!byName.has(type.name)) {\n byName.set(type.name, type);\n }\n }\n }\n }\n for (const type of this.registeredTypes) {\n byName.set(type.name, type);\n }\n this.cache = [...byName.values()];\n return this.cache;\n }\n async getTypes(query) {\n const types = await this.resolveTypes();\n return filterFileTypesByPurpose(types, query?.purpose);\n }\n async get(name) {\n const types = await this.resolveTypes();\n return types.find((t) => t.name === name);\n }\n /** Resolved view component ref for a catalog entry (optional extension hint). */\n async getComponent(name, hint) {\n const type = await this.get(name);\n if (!type) {\n return undefined;\n }\n const extension = hint ? resolveFileTypeExtension(type, hint) : undefined;\n return resolveFileTypeComponent(type, extension);\n }\n /** Loads the view component for a catalog entry. */\n async loadComponent(name, hint) {\n const type = await this.get(name);\n if (!type) {\n return undefined;\n }\n const extension = hint ? resolveFileTypeExtension(type, hint) : undefined;\n return loadFileTypeComponent(type, extension);\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) => matchesFileMime(mime, pattern));\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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLHdCQUF3QixFQUN4Qix3QkFBd0IsR0FFekIsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHL0QsTUFBTSxPQUFPLHlCQUF5QjtJQUR0QztRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFekMsY0FBUyxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV6RSxvQkFBZSxHQUFpQixFQUFFLENBQUM7UUFFNUMsVUFBSyxHQUF3QixJQUFJLENBQUM7S0FnTTNDO0lBOUxDLDJFQUEyRTtJQUUzRSxhQUFhLENBQUMsS0FBbUI7UUFDL0IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElB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Q0FBQztZQUUvQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUVELFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUNoQixLQUFhLEVBRWIsU0FBNEI7UUFFNUIsTUFBTSxRQUFRLEdBQVcsRUFBRSxDQUFDO1FBRTVCLE1BQU0sUUFBUSxHQUF1RCxFQUFFLENBQUM7UUFFeEUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFaEUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OEdBdE1VLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRFosTUFBTTs7MkZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmltcG9ydCB7IEFYVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWF9GSUxFX1RZUEVfSU5GT19QUk9WSURFUiB9IGZyb20gJy4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuXG5pbXBvcnQge1xuICBmaW5kRmlsZVR5cGVFeHRlbnNpb24sXG4gIGxvYWRGaWxlVHlwZUNvbXBvbmVudCxcbiAgbWF0Y2hlc0ZpbGVNaW1lLFxuICByZXNvbHZlRmlsZVR5cGVDb21wb25lbnQsXG4gIHJlc29sdmVGaWxlVHlwZUV4dGVuc2lvbixcbiAgdHlwZSBBWEZpbGVUeXBlRXh0ZW5zaW9uSGludCxcbn0gZnJvbSAnLi9maWxlLXR5cGUucmVzb2x2ZSc7XG5cbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSwgQVhGaWxlVHlwZVF1ZXJ5IH0gZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcblxuaW1wb3J0IHsgZmlsdGVyRmlsZVR5cGVzQnlQdXJwb3NlIH0gZnJvbSAnLi9maWxlLXR5cGUubWV0YWRhdGEnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSB9IGZyb20gJy4vZmlsZS10eXBlLnZhbGlkYXRlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0aW9uID0gaW5qZWN0KEFYVmFsaWRhdGlvblNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlkZXJzID0gaW5qZWN0KEFYX0ZJTEVfVFlQRV9JTkZPX1BST1ZJREVSLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0ZXJlZFR5cGVzOiBBWEZpbGVUeXBlW10gPSBbXTtcblxuICBwcml2YXRlIGNhY2hlOiBBWEZpbGVUeXBlW10gfCBudWxsID0gbnVsbDtcblxuICAvKiogUmVnaXN0ZXJzIG9yIHJlcGxhY2VzIGNhdGFsb2cgZW50cmllcyAoZS5nLiBmcm9tIGZlYXR1cmUgYm9vdHN0cmFwKS4gKi9cblxuICByZWdpc3RlclR5cGVzKHR5cGVzOiBBWEZpbGVUeXBlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZWdpc3RlcmVkVHlwZXMuZmluZEluZGV4KCh0KSA9PiB0Lm5hbWUgPT09IHR5cGUubmFtZSk7XG5cbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFR5cGVzW2luZGV4XSA9IHR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyZWRUeXBlcy5wdXNoKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaW52YWxpZGF0ZUNhY2hlKCk7XG4gIH1cblxuICBpbnZhbGlkYXRlQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVUeXBlcygpOiBQcm9taXNlPEFYRmlsZVR5cGVbXT4ge1xuICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgICB9XG5cbiAgICBjb25zdCBieU5hbWUgPSBuZXcgTWFwPHN0cmluZywgQVhGaWxlVHlwZT4oKTtcblxuICAgIGlmICh0aGlzLnByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGJhdGNoZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLnByb3ZpZGVycy5tYXAoKHApID0+IHAuaXRlbXMoKSkpO1xuXG4gICAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGJhdGNoKSB7XG4gICAgICAgICAgaWYgKCFieU5hbWUuaGFzKHR5cGUubmFtZSkpIHtcbiAgICAgICAgICAgIGJ5TmFtZS5zZXQodHlwZS5uYW1lLCB0eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdGhpcy5yZWdpc3RlcmVkVHlwZXMpIHtcbiAgICAgIGJ5TmFtZS5zZXQodHlwZS5uYW1lLCB0eXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhY2hlID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV07XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgfVxuXG4gIGFzeW5jIGdldFR5cGVzKHF1ZXJ5PzogQVhGaWxlVHlwZVF1ZXJ5KTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMucmVzb2x2ZVR5cGVzKCk7XG4gICAgcmV0dXJuIGZpbHRlckZpbGVUeXBlc0J5UHVycG9zZSh0eXBlcywgcXVlcnk/LnB1cnBvc2UpO1xuICB9XG5cbiAgYXN5bmMgZ2V0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhGaWxlVHlwZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgdGhpcy5yZXNvbHZlVHlwZXMoKTtcblxuICAgIHJldHVybiB0eXBlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgLyoqIFJlc29sdmVkIHZpZXcgY29tcG9uZW50IHJlZiBmb3IgYSBjYXRhbG9nIGVudHJ5IChvcHRpb25hbCBleHRlbnNpb24gaGludCkuICovXG4gIGFzeW5jIGdldENvbXBvbmVudChuYW1lOiBzdHJpbmcsIGhpbnQ/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uSGludCk6IFByb21pc2U8QVhGaWxlVHlwZVsnY29tcG9uZW50J10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0eXBlID0gYXdhaXQgdGhpcy5nZXQobmFtZSk7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBleHRlbnNpb24gPSBoaW50ID8gcmVzb2x2ZUZpbGVUeXBlRXh0ZW5zaW9uKHR5cGUsIGhpbnQpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXNvbHZlRmlsZVR5cGVDb21wb25lbnQodHlwZSwgZXh0ZW5zaW9uKTtcbiAgfVxuXG4gIC8qKiBMb2FkcyB0aGUgdmlldyBjb21wb25lbnQgZm9yIGEgY2F0YWxvZyBlbnRyeS4gKi9cbiAgYXN5bmMgbG9hZENvbXBvbmVudChuYW1lOiBzdHJpbmcsIGhpbnQ/OiBBWEZpbGVUeXBlRXh0ZW5zaW9uSGludCk6IFByb21pc2U8VHlwZTx1bmtub3duPiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHR5cGUgPSBhd2FpdCB0aGlzLmdldChuYW1lKTtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGhpbnQgPyByZXNvbHZlRmlsZVR5cGVFeHRlbnNpb24odHlwZSwgaGludCkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGxvYWRGaWxlVHlwZUNvbXBvbmVudCh0eXBlLCBleHRlbnNpb24pO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0KHR5cGVOYW1lcz86IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBuYW1lcyA9IHR5cGVOYW1lcyA/IChBcnJheS5pc0FycmF5KHR5cGVOYW1lcykgPyB0eXBlTmFtZXMgOiBbdHlwZU5hbWVzXSkgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB0eXBlcyA9IGF3YWl0IHRoaXMucmVzb2x2ZVR5cGVzKCk7XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IG5hbWVzPy5sZW5ndGggPyB0eXBlcy5maWx0ZXIoKHQpID0+IG5hbWVzLmluY2x1ZGVzKHQubmFtZSkpIDogdHlwZXM7XG5cbiAgICBpZiAobmFtZXM/Lmxlbmd0aCAmJiBzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHNlbGVjdGVkKSB7XG4gICAgICB0eXBlLnZhbGlkYXRpb25zPy5taW1lVHlwZXM/LmZvckVhY2goKG0pID0+IHBhcnRzLmFkZChtKSk7XG5cbiAgICAgIHR5cGUuZXh0ZW5zaW9ucz8uZm9yRWFjaCgoZXh0KSA9PiB7XG4gICAgICAgIGV4dC52YWxpZGF0aW9ucz8ubWltZVR5cGVzPy5mb3JFYWNoKChtKSA9PiBwYXJ0cy5hZGQobSkpO1xuXG4gICAgICAgIHBhcnRzLmFkZChgLiR7ZXh0Lm5hbWUucmVwbGFjZSgvXlxcLi8sICcnKX1gKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBbLi4ucGFydHNdLmpvaW4oJywnKTtcbiAgfVxuXG4gIGFzeW5jIG1hdGNoVHlwZShmaWxlOiBGaWxlKTogUHJvbWlzZTxBWEZpbGVUeXBlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdHlwZXMgPSBhd2FpdCB0aGlzLnJlc29sdmVUeXBlcygpO1xuXG4gICAgY29uc3QgbWltZSA9IGZpbGUudHlwZS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiB0eXBlcy5maW5kKCh0eXBlKSA9PiB7XG4gICAgICBjb25zdCBwYXR0ZXJucyA9IFtcbiAgICAgICAgLi4uKHR5cGUudmFsaWRhdGlvbnM/Lm1pbWVUeXBlcyA/PyBbXSksXG5cbiAgICAgICAgLi4uKHR5cGUuZXh0ZW5zaW9ucz8uZmxhdE1hcCgoZSkgPT4gZS52YWxpZGF0aW9ucz8ubWltZVR5cGVzID8/IFtdKSA/PyBbXSksXG4gICAgICBdO1xuXG4gICAgICBpZiAoIXBhdHRlcm5zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXR0ZXJucy5zb21lKChwYXR0ZXJuKSA9PiBtYXRjaGVzRmlsZU1pbWUobWltZSwgcGF0dGVybikpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoZmlsZTogRmlsZSwgdHlwZU5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0KHR5cGVOYW1lKTtcblxuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGU6ICdmaWxlVHlwZScsXG5cbiAgICAgICAgICByZXN1bHQ6IGZhbHNlLFxuXG4gICAgICAgICAgbWVzc2FnZTogYFVua25vd24gZmlsZSB0eXBlOiAke3R5cGVOYW1lfWAsXG5cbiAgICAgICAgICB2YWx1ZTogdHlwZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbmRGaWxlVHlwZUV4dGVuc2lvbihmaWxlLCB0eXBlKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZUZpbGVBZ2FpbnN0VHlwZSh0aGlzLnZhbGlkYXRpb24sIGZpbGUsIHR5cGUsIGV4dGVuc2lvbik7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZUFnYWluc3RUeXBlcyhcbiAgICBmaWxlOiBGaWxlLFxuXG4gICAgdHlwZU5hbWVzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0W10+IHtcbiAgICBjb25zdCBuYW1lcyA9IEFycmF5LmlzQXJyYXkodHlwZU5hbWVzKSA/IHR5cGVOYW1lcyA6IFt0eXBlTmFtZXNdO1xuXG4gICAgbGV0IGxhc3RFcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlKGZpbGUsIG5hbWUpO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG5cbiAgICAgIGxhc3RFcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RFcnJvcnM7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZU1hbnkoXG4gICAgZmlsZXM6IEZpbGVbXSxcblxuICAgIHR5cGVOYW1lczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICk6IFByb21pc2U8eyBhY2NlcHRlZDogRmlsZVtdOyByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W10gfT4ge1xuICAgIGNvbnN0IGFjY2VwdGVkOiBGaWxlW10gPSBbXTtcblxuICAgIGNvbnN0IHJlamVjdGVkOiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlQWdhaW5zdFR5cGVzKGZpbGUsIHR5cGVOYW1lcyk7XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGFjY2VwdGVkLnB1c2goZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3RlZC5wdXNoKHsgZmlsZSwgZXJyb3JzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGFjY2VwdGVkLCByZWplY3RlZCB9O1xuICB9XG59XG4iXX0=","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal, } from '@angular/core';\nimport { AXFileTypeRegistryService } from '../file-type/file-type-registry.service';\nimport * as i0 from \"@angular/core\";\nexport class AXFileTypeRendererOutletComponent {\n constructor() {\n this.registry = inject(AXFileTypeRegistryService);\n /** Catalog name (e.g. `image`, `conversation-image`). */\n this.fileType = input.required(...(ngDevMode ? [{ debugName: \"fileType\" }] : []));\n /** Payload passed to the file-type view component. */\n this.payload = input.required(...(ngDevMode ? [{ debugName: \"payload\" }] : []));\n /** Optional extension / MIME hint for extension-level renderer overrides. */\n this.extensionHint = input(...(ngDevMode ? [undefined, { debugName: \"extensionHint\" }] : []));\n /** Extra inputs merged with `payload` (e.g. `message` in conversation). */\n this.inputs = input({}, ...(ngDevMode ? [{ debugName: \"inputs\" }] : []));\n this.resolvedComponent = signal(null, ...(ngDevMode ? [{ debugName: \"resolvedComponent\" }] : []));\n this.loading = signal(false, ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.mergedInputs = signal({}, ...(ngDevMode ? [{ debugName: \"mergedInputs\" }] : []));\n effect(() => {\n const name = this.fileType();\n const payload = this.payload();\n const hint = this.extensionHint();\n const extra = this.inputs();\n this.mergedInputs.set({ payload, ...extra });\n this.loading.set(true);\n this.resolvedComponent.set(null);\n void this.registry.loadComponent(name, hint).then((component) => {\n this.resolvedComponent.set(component ?? null);\n this.loading.set(false);\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRendererOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXFileTypeRendererOutletComponent, isStandalone: true, selector: \"ax-file-type-renderer\", inputs: { fileType: { classPropertyName: \"fileType\", publicName: \"fileType\", isSignal: true, isRequired: true, transformFunction: null }, payload: { classPropertyName: \"payload\", publicName: \"payload\", isSignal: true, isRequired: true, transformFunction: null }, extensionHint: { classPropertyName: \"extensionHint\", publicName: \"extensionHint\", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: \"inputs\", publicName: \"inputs\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\n @if (resolvedComponent(); as component) {\n <ng-container *ngComponentOutlet=\"component; inputs: mergedInputs()\" />\n } @else if (loading()) {\n <span class=\"ax-file-type-renderer__loading\" aria-hidden=\"true\"></span>\n }\n `, isInline: true, styles: [\":host{display:contents}.ax-file-type-renderer__loading{display:inline-block;min-height:1rem;min-width:1rem}\\n\"], dependencies: [{ kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileTypeRendererOutletComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-file-type-renderer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgComponentOutlet], template: `\n @if (resolvedComponent(); as component) {\n <ng-container *ngComponentOutlet=\"component; inputs: mergedInputs()\" />\n } @else if (loading()) {\n <span class=\"ax-file-type-renderer__loading\" aria-hidden=\"true\"></span>\n }\n `, styles: [\":host{display:contents}.ax-file-type-renderer__loading{display:inline-block;min-height:1rem;min-width:1rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10eXBlLXJlbmRlcmVyLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvZmlsZS10eXBlLXJlbmRlcmVyLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQTBCcEYsTUFBTSxPQUFPLGlDQUFpQztJQW9CNUM7UUFuQmlCLGFBQVEsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUU5RCx5REFBeUQ7UUFDaEQsYUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLG1EQUFVLENBQUM7UUFFN0Msc0RBQXNEO1FBQzdDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxrREFBVyxDQUFDO1FBRTdDLDZFQUE2RTtRQUNwRSxrQkFBYSxHQUFHLEtBQUssbUVBQTJCLENBQUM7UUFFMUQsMkVBQTJFO1FBQ2xFLFdBQU0sR0FBRyxLQUFLLENBQTBCLEVBQUUsa0RBQUMsQ0FBQztRQUU1QyxzQkFBaUIsR0FBRyxNQUFNLENBQXVCLElBQUksNkRBQUMsQ0FBQztRQUN2RCxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssbURBQUMsQ0FBQztRQUV4QixpQkFBWSxHQUFHLE1BQU0sQ0FBMEIsRUFBRSx3REFBQyxDQUFDO1FBRzFELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FwQ1UsaUNBQWlDO2tHQUFqQyxpQ0FBaUMscW1CQW5CbEM7Ozs7OztHQU1ULHVMQVBTLGlCQUFpQjs7MkZBb0JoQixpQ0FBaUM7a0JBdkI3QyxTQUFTOytCQUNFLHVCQUF1QixtQkFDaEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGlCQUFpQixDQUFDLFlBQ2xCOzs7Ozs7R0FNVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICB0eXBlIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsZS10eXBlL2ZpbGUtdHlwZS1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZUV4dGVuc2lvbkhpbnQgfSBmcm9tICcuLi9maWxlLXR5cGUvZmlsZS10eXBlLnJlc29sdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1maWxlLXR5cGUtcmVuZGVyZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW05nQ29tcG9uZW50T3V0bGV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHJlc29sdmVkQ29tcG9uZW50KCk7IGFzIGNvbXBvbmVudCkge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wb25lbnQ7IGlucHV0czogbWVyZ2VkSW5wdXRzKClcIiAvPlxuICAgIH0gQGVsc2UgaWYgKGxvYWRpbmcoKSkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJheC1maWxlLXR5cGUtcmVuZGVyZXJfX2xvYWRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgfVxuICBgLFxuICBzdHlsZXM6IGBcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICB9XG5cbiAgICAuYXgtZmlsZS10eXBlLXJlbmRlcmVyX19sb2FkaW5nIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gICAgICBtaW4td2lkdGg6IDFyZW07XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBBWEZpbGVUeXBlUmVuZGVyZXJPdXRsZXRDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KEFYRmlsZVR5cGVSZWdpc3RyeVNlcnZpY2UpO1xuXG4gIC8qKiBDYXRhbG9nIG5hbWUgKGUuZy4gYGltYWdlYCwgYGNvbnZlcnNhdGlvbi1pbWFnZWApLiAqL1xuICByZWFkb25seSBmaWxlVHlwZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICAvKiogUGF5bG9hZCBwYXNzZWQgdG8gdGhlIGZpbGUtdHlwZSB2aWV3IGNvbXBvbmVudC4gKi9cbiAgcmVhZG9ubHkgcGF5bG9hZCA9IGlucHV0LnJlcXVpcmVkPHVua25vd24+KCk7XG5cbiAgLyoqIE9wdGlvbmFsIGV4dGVuc2lvbiAvIE1JTUUgaGludCBmb3IgZXh0ZW5zaW9uLWxldmVsIHJlbmRlcmVyIG92ZXJyaWRlcy4gKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uSGludCA9IGlucHV0PEFYRmlsZVR5cGVFeHRlbnNpb25IaW50PigpO1xuXG4gIC8qKiBFeHRyYSBpbnB1dHMgbWVyZ2VkIHdpdGggYHBheWxvYWRgIChlLmcuIGBtZXNzYWdlYCBpbiBjb252ZXJzYXRpb24pLiAqL1xuICByZWFkb25seSBpbnB1dHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29tcG9uZW50ID0gc2lnbmFsPFR5cGU8dW5rbm93bj4gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgbWVyZ2VkSW5wdXRzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmZpbGVUeXBlKCk7XG4gICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkKCk7XG4gICAgICBjb25zdCBoaW50ID0gdGhpcy5leHRlbnNpb25IaW50KCk7XG4gICAgICBjb25zdCBleHRyYSA9IHRoaXMuaW5wdXRzKCk7XG5cbiAgICAgIHRoaXMubWVyZ2VkSW5wdXRzLnNldCh7IHBheWxvYWQsIC4uLmV4dHJhIH0pO1xuICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRDb21wb25lbnQuc2V0KG51bGwpO1xuXG4gICAgICB2b2lkIHRoaXMucmVnaXN0cnkubG9hZENvbXBvbmVudChuYW1lLCBoaW50KS50aGVuKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgdGhpcy5yZXNvbHZlZENvbXBvbmVudC5zZXQoY29tcG9uZW50ID8/IG51bGwpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_AUDIO_FILE_TYPE = {\n name: 'audio',\n metadata: createFileTypeMetadata('system'),\n title: 'Audio',\n icon: 'fa-light fa-music ax-text-amber-500',\n validations: {\n mimeTypes: ['audio/*'],\n minSize: 1,\n maxSize: 50 * MB,\n },\n extensions: [\n { name: 'mp3', title: 'MP3' },\n { name: 'wav', title: 'WAV', validations: { maxSize: 30 * MB } },\n { name: 'ogg', title: 'OGG' },\n { name: 'm4a', title: 'M4A' },\n ],\n};\nexport class AXAudioFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_AUDIO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXAudioFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9hdWRpby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUscUNBQXFDO0lBQzNDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRTtLQUNqQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDaEUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7S0FDOUI7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHsgY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuLi9maWxlLXR5cGUubW9kZWxzJztcblxuY29uc3QgTUIgPSAxMDI0ICogMTAyNDtcblxuZXhwb3J0IGNvbnN0IEFYX0FVRElPX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ2F1ZGlvJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ0F1ZGlvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW11c2ljIGF4LXRleHQtYW1iZXItNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXVkaW8vKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogNTAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wMycsIHRpdGxlOiAnTVAzJyB9LFxuICAgIHsgbmFtZTogJ3dhdicsIHRpdGxlOiAnV0FWJywgdmFsaWRhdGlvbnM6IHsgbWF4U2l6ZTogMzAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gICAgeyBuYW1lOiAnbTRhJywgdGl0bGU6ICdNNEEnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhBdWRpb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9BVURJT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\n/** Extension-only: no type `validations` — only listed extensions are allowed. */\nexport const AX_DOCUMENT_FILE_TYPE = {\n name: 'document',\n metadata: createFileTypeMetadata('system'),\n title: 'Document',\n icon: 'fa-light fa-file-lines ax-text-red-500',\n extensions: [{ name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 5 * MB } }],\n};\nexport class AXDocumentFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_DOCUMENT_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDocumentFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9kb2N1bWVudC1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQWU7SUFDL0MsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztJQUMxQyxLQUFLLEVBQUUsVUFBVTtJQUNqQixJQUFJLEVBQUUsd0NBQXdDO0lBQzlDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO0NBQzlHLENBQUM7QUFHRixNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBQ3BFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FIVSwwQkFBMEI7a0hBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG4vKiogRXh0ZW5zaW9uLW9ubHk6IG5vIHR5cGUgYHZhbGlkYXRpb25zYCDigJQgb25seSBsaXN0ZWQgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC4gKi9cbmV4cG9ydCBjb25zdCBBWF9ET0NVTUVOVF9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdkb2N1bWVudCcsXG4gIG1ldGFkYXRhOiBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhKCdzeXN0ZW0nKSxcbiAgdGl0bGU6ICdEb2N1bWVudCcsXG4gIGljb246ICdmYS1saWdodCBmYS1maWxlLWxpbmVzIGF4LXRleHQtcmVkLTUwMCcsXG4gIGV4dGVuc2lvbnM6IFt7IG5hbWU6ICdwZGYnLCB0aXRsZTogJ1BERicsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9wZGYnXSwgbWF4U2l6ZTogNSAqIE1CIH0gfV0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9ET0NVTUVOVF9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_FILE_FILE_TYPE = {\n name: 'file',\n metadata: createFileTypeMetadata('system'),\n title: 'File',\n icon: 'fa-light fa-file ax-text-neutral-500',\n validations: {\n mimeTypes: ['application/*', 'text/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'pdf', title: 'PDF', validations: { mimeTypes: ['application/pdf'], maxSize: 25 * MB } },\n { name: 'doc', title: 'Word' },\n { name: 'docx', title: 'Word' },\n { name: 'txt', title: 'Text', validations: { mimeTypes: ['text/plain'], maxSize: 5 * MB } },\n { name: 'zip', title: 'ZIP', validations: { maxSize: 50 * MB } },\n ],\n};\nexport class AXFileFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_FILE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1maWxlLXR5cGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRy9ELE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDM0MsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsSUFBSSxFQUFFLHNDQUFzQztJQUM1QyxXQUFXLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFO0tBQ2xCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ2hHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQy9CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDM0YsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtLQUNqRTtDQUNGLENBQUM7QUFHRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsc0JBQXNCO0lBQ2hFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs4R0FIVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfRklMRV9GSUxFX1RZUEU6IEFYRmlsZVR5cGUgPSB7XG4gIG5hbWU6ICdmaWxlJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ0ZpbGUnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZSBheC10ZXh0LW5ldXRyYWwtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vKicsICd0ZXh0LyonXSxcbiAgICBtaW5TaXplOiAxLFxuICAgIG1heFNpemU6IDEwMCAqIE1CLFxuICB9LFxuICBleHRlbnNpb25zOiBbXG4gICAgeyBuYW1lOiAncGRmJywgdGl0bGU6ICdQREYnLCB2YWxpZGF0aW9uczogeyBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vcGRmJ10sIG1heFNpemU6IDI1ICogTUIgfSB9LFxuICAgIHsgbmFtZTogJ2RvYycsIHRpdGxlOiAnV29yZCcgfSxcbiAgICB7IG5hbWU6ICdkb2N4JywgdGl0bGU6ICdXb3JkJyB9LFxuICAgIHsgbmFtZTogJ3R4dCcsIHRpdGxlOiAnVGV4dCcsIHZhbGlkYXRpb25zOiB7IG1pbWVUeXBlczogWyd0ZXh0L3BsYWluJ10sIG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnemlwJywgdGl0bGU6ICdaSVAnLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiA1MCAqIE1CIH0gfSxcbiAgXSxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIGV4dGVuZHMgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB7XG4gIGl0ZW1zKCk6IFByb21pc2U8QVhGaWxlVHlwZVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbQVhfRklMRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_IMAGE_FILE_TYPE = {\n name: 'image',\n metadata: createFileTypeMetadata('system'),\n title: 'Image',\n icon: 'fa-light fa-image ax-text-purple-500',\n validations: {\n mimeTypes: ['image/*'],\n minSize: 1,\n maxSize: 100 * MB,\n },\n extensions: [\n { name: 'jpg', title: 'JPEG' },\n { name: 'jpeg', title: 'JPEG', validations: { maxSize: 5 * MB } },\n { name: 'png', title: 'PNG' },\n { name: 'gif', title: 'GIF' },\n { name: 'webp', title: 'WebP' },\n { name: 'svg', title: 'SVG', validations: { maxSize: 2 * MB } },\n ],\n};\nexport class AXImageFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_IMAGE_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXImageFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy9pbWFnZS1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDakUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDN0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDL0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtLQUNoRTtDQUNGLENBQUM7QUFHRixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ2pFLEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FIVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRmlsZVR5cGVJbmZvUHJvdmlkZXIgfSBmcm9tICcuLi9maWxlLXR5cGUtaW5mby1wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVGaWxlVHlwZU1ldGFkYXRhIH0gZnJvbSAnLi4vZmlsZS10eXBlLm1ldGFkYXRhJztcbmltcG9ydCB0eXBlIHsgQVhGaWxlVHlwZSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tb2RlbHMnO1xuXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgY29uc3QgQVhfSU1BR0VfRklMRV9UWVBFOiBBWEZpbGVUeXBlID0ge1xuICBuYW1lOiAnaW1hZ2UnLFxuICBtZXRhZGF0YTogY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSgnc3lzdGVtJyksXG4gIHRpdGxlOiAnSW1hZ2UnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtaW1hZ2UgYXgtdGV4dC1wdXJwbGUtNTAwJyxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICBtaW1lVHlwZXM6IFsnaW1hZ2UvKiddLFxuICAgIG1pblNpemU6IDEsXG4gICAgbWF4U2l6ZTogMTAwICogTUIsXG4gIH0sXG4gIGV4dGVuc2lvbnM6IFtcbiAgICB7IG5hbWU6ICdqcGcnLCB0aXRsZTogJ0pQRUcnIH0sXG4gICAgeyBuYW1lOiAnanBlZycsIHRpdGxlOiAnSlBFRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDUgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAncG5nJywgdGl0bGU6ICdQTkcnIH0sXG4gICAgeyBuYW1lOiAnZ2lmJywgdGl0bGU6ICdHSUYnIH0sXG4gICAgeyBuYW1lOiAnd2VicCcsIHRpdGxlOiAnV2ViUCcgfSxcbiAgICB7IG5hbWU6ICdzdmcnLCB0aXRsZTogJ1NWRycsIHZhbGlkYXRpb25zOiB7IG1heFNpemU6IDIgKiBNQiB9IH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhJbWFnZUZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9JTUFHRV9GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXFileTypeInfoProvider } from '../file-type-info-provider';\nimport { createFileTypeMetadata } from '../file-type.metadata';\nimport * as i0 from \"@angular/core\";\nconst MB = 1024 * 1024;\nexport const AX_VIDEO_FILE_TYPE = {\n name: 'video',\n metadata: createFileTypeMetadata('system'),\n title: 'Video',\n icon: 'fa-light fa-video ax-text-blue-500',\n validations: {\n mimeTypes: ['video/*'],\n minSize: 1,\n maxSize: 500 * MB,\n },\n extensions: [\n { name: 'mp4', title: 'MP4' },\n { name: 'webm', title: 'WebM', validations: { maxSize: 200 * MB } },\n { name: 'ogg', title: 'OGG' },\n ],\n};\nexport class AXVideoFileTypeProvider extends AXFileTypeInfoProvider {\n items() {\n return Promise.resolve([AX_VIDEO_FILE_TYPE]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXVideoFileTypeProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZmlsZS10eXBlLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3R5cGVzLnByb3ZpZGVycy92aWRlby1maWxlLXR5cGUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFHL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUV2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUM1QyxJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7SUFDMUMsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsb0NBQW9DO0lBQzFDLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRTtLQUNsQjtJQUNELFVBQVUsRUFBRTtRQUNWLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDbkUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7S0FDOUI7Q0FDRixDQUFDO0FBR0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNqRSxLQUFLO1FBQ0gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuaW1wb3J0IHsgY3JlYXRlRmlsZVR5cGVNZXRhZGF0YSB9IGZyb20gJy4uL2ZpbGUtdHlwZS5tZXRhZGF0YSc7XG5pbXBvcnQgdHlwZSB7IEFYRmlsZVR5cGUgfSBmcm9tICcuLi9maWxlLXR5cGUubW9kZWxzJztcblxuY29uc3QgTUIgPSAxMDI0ICogMTAyNDtcblxuZXhwb3J0IGNvbnN0IEFYX1ZJREVPX0ZJTEVfVFlQRTogQVhGaWxlVHlwZSA9IHtcbiAgbmFtZTogJ3ZpZGVvJyxcbiAgbWV0YWRhdGE6IGNyZWF0ZUZpbGVUeXBlTWV0YWRhdGEoJ3N5c3RlbScpLFxuICB0aXRsZTogJ1ZpZGVvJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXZpZGVvIGF4LXRleHQtYmx1ZS01MDAnLFxuICB2YWxpZGF0aW9uczoge1xuICAgIG1pbWVUeXBlczogWyd2aWRlby8qJ10sXG4gICAgbWluU2l6ZTogMSxcbiAgICBtYXhTaXplOiA1MDAgKiBNQixcbiAgfSxcbiAgZXh0ZW5zaW9uczogW1xuICAgIHsgbmFtZTogJ21wNCcsIHRpdGxlOiAnTVA0JyB9LFxuICAgIHsgbmFtZTogJ3dlYm0nLCB0aXRsZTogJ1dlYk0nLCB2YWxpZGF0aW9uczogeyBtYXhTaXplOiAyMDAgKiBNQiB9IH0sXG4gICAgeyBuYW1lOiAnb2dnJywgdGl0bGU6ICdPR0cnIH0sXG4gIF0sXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIgZXh0ZW5kcyBBWEZpbGVUeXBlSW5mb1Byb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWEZpbGVUeXBlW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtBWF9WSURFT19GSUxFX1RZUEVdKTtcbiAgfVxufVxuIl19","import { provideFileTypeInfoProvider } from '../file-type-info-provider';\nimport { AXAudioFileTypeProvider } from './audio-file-type.provider';\nimport { AXDocumentFileTypeProvider } from './document-file-type.provider';\nimport { AXFileFileTypeProvider } from './file-file-type.provider';\nimport { AXImageFileTypeProvider } from './image-file-type.provider';\nimport { AXVideoFileTypeProvider } from './video-file-type.provider';\nexport * from './image-file-type.provider';\nexport * from './video-file-type.provider';\nexport * from './audio-file-type.provider';\nexport * from './file-file-type.provider';\nexport * from './document-file-type.provider';\n/** Built-in file type provider classes (one logical type per provider). */\nexport const AX_BUILTIN_FILE_TYPE_PROVIDERS = [\n AXImageFileTypeProvider,\n AXVideoFileTypeProvider,\n AXAudioFileTypeProvider,\n AXFileFileTypeProvider,\n AXDocumentFileTypeProvider,\n];\n/** Registers all built-in file type providers (image, video, audio, file, document). */\nexport function provideBuiltinFileTypeProviders() {\n return AX_BUILTIN_FILE_TYPE_PROVIDERS.map((provider) => provideFileTypeInfoProvider(provider));\n}\n/** @deprecated Use {@link provideBuiltinFileTypeProviders}. */\nexport const provideDefaultFileTypeProviders = provideBuiltinFileTypeProviders;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvdHlwZXMucHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwyQkFBMkIsRUFBMEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QiwwQkFBMEI7Q0FDZ0MsQ0FBQztBQUU3RCx3RkFBd0Y7QUFDeEYsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVGaWxlVHlwZUluZm9Qcm92aWRlciwgQVhGaWxlVHlwZUluZm9Qcm92aWRlciB9IGZyb20gJy4uL2ZpbGUtdHlwZS1pbmZvLXByb3ZpZGVyJztcbmltcG9ydCB7IEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9hdWRpby1maWxlLXR5cGUucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhEb2N1bWVudEZpbGVUeXBlUHJvdmlkZXIgfSBmcm9tICcuL2RvY3VtZW50LWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi9maWxlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWEltYWdlRmlsZVR5cGVQcm92aWRlciB9IGZyb20gJy4vaW1hZ2UtZmlsZS10eXBlLnByb3ZpZGVyJztcbmltcG9ydCB7IEFYVmlkZW9GaWxlVHlwZVByb3ZpZGVyIH0gZnJvbSAnLi92aWRlby1maWxlLXR5cGUucHJvdmlkZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3ZpZGVvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGlvLWZpbGUtdHlwZS5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtZmlsZS10eXBlLnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZG9jdW1lbnQtZmlsZS10eXBlLnByb3ZpZGVyJztcblxuLyoqIEJ1aWx0LWluIGZpbGUgdHlwZSBwcm92aWRlciBjbGFzc2VzIChvbmUgbG9naWNhbCB0eXBlIHBlciBwcm92aWRlcikuICovXG5leHBvcnQgY29uc3QgQVhfQlVJTFRJTl9GSUxFX1RZUEVfUFJPVklERVJTID0gW1xuICBBWEltYWdlRmlsZVR5cGVQcm92aWRlcixcbiAgQVhWaWRlb0ZpbGVUeXBlUHJvdmlkZXIsXG4gIEFYQXVkaW9GaWxlVHlwZVByb3ZpZGVyLFxuICBBWEZpbGVGaWxlVHlwZVByb3ZpZGVyLFxuICBBWERvY3VtZW50RmlsZVR5cGVQcm92aWRlcixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IFR5cGU8QVhGaWxlVHlwZUluZm9Qcm92aWRlcj5bXTtcblxuLyoqIFJlZ2lzdGVycyBhbGwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycyAoaW1hZ2UsIHZpZGVvLCBhdWRpbywgZmlsZSwgZG9jdW1lbnQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnMoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBBWF9CVUlMVElOX0ZJTEVfVFlQRV9QUk9WSURFUlMubWFwKChwcm92aWRlcikgPT4gcHJvdmlkZUZpbGVUeXBlSW5mb1Byb3ZpZGVyKHByb3ZpZGVyKSk7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHByb3ZpZGVCdWlsdGluRmlsZVR5cGVQcm92aWRlcnN9LiAqL1xuZXhwb3J0IGNvbnN0IHByb3ZpZGVEZWZhdWx0RmlsZVR5cGVQcm92aWRlcnMgPSBwcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzO1xuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMimeTypeValidationRule {\n get name() {\n return 'fileMimeType';\n }\n async validate(value, options) {\n const mime = (value instanceof File || value instanceof Blob ? value.type : '').trim().toLowerCase();\n const allowed = options.allowed ?? [];\n const valid = allowed.length === 0 ||\n allowed.some((pattern) => this.matchesMime(mime, pattern.trim().toLowerCase()));\n return {\n rule: this.name,\n result: valid,\n message: valid ? '' : (options.message ?? 'File type is not allowed.'),\n value: mime,\n };\n }\n matchesMime(mime, pattern) {\n if (!pattern || pattern === '*/*' || pattern === '*') {\n return true;\n }\n if (pattern.endsWith('/*')) {\n const category = pattern.slice(0, -2);\n return mime.startsWith(`${category}/`) || (mime === '' && category === 'application');\n }\n return mime === pattern;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMimeTypeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW1lLXR5cGUucnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUtdHlwZS9ydWxlcy9maWxlLW1pbWUtdHlwZS5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBbUIzQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLElBQUksSUFBSTtRQUNOLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTRDO1FBRTVDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FDVCxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSwyQkFBMkIsQ0FBQztZQUN0RSxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVksRUFBRSxPQUFlO1FBQy9DLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxLQUFLLEtBQUssSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUMxQixDQUFDOzhHQWhDVSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWltZVR5cGVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNSU1FIHBhdHRlcm5zLCBlLmcuIGBpbWFnZS8qYCwgYGltYWdlL3BuZ2AuICovXG4gIGFsbG93ZWQ6IHN0cmluZ1tdO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWltZVR5cGU6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVNaW1lVHlwZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWltZVR5cGUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICApOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICBjb25zdCBtaW1lID0gKHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS50eXBlIDogJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbG93ZWQgPSBvcHRpb25zLmFsbG93ZWQgPz8gW107XG4gICAgY29uc3QgdmFsaWQgPVxuICAgICAgYWxsb3dlZC5sZW5ndGggPT09IDAgfHxcbiAgICAgIGFsbG93ZWQuc29tZSgocGF0dGVybikgPT4gdGhpcy5tYXRjaGVzTWltZShtaW1lLCBwYXR0ZXJuLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkID8gJycgOiAob3B0aW9ucy5tZXNzYWdlID8/ICdGaWxlIHR5cGUgaXMgbm90IGFsbG93ZWQuJyksXG4gICAgICB2YWx1ZTogbWltZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaGVzTWltZShtaW1lOiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF0dGVybiB8fCBwYXR0ZXJuID09PSAnKi8qJyB8fCBwYXR0ZXJuID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAocGF0dGVybi5lbmRzV2l0aCgnLyonKSkge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBwYXR0ZXJuLnNsaWNlKDAsIC0yKTtcbiAgICAgIHJldHVybiBtaW1lLnN0YXJ0c1dpdGgoYCR7Y2F0ZWdvcnl9L2ApIHx8IChtaW1lID09PSAnJyAmJiBjYXRlZ29yeSA9PT0gJ2FwcGxpY2F0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiBtaW1lID09PSBwYXR0ZXJuO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMinSizeValidationRule {\n get name() {\n return 'fileMinSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size >= options.minSize;\n const limitLabel = formatFileSizeBytes(options.minSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ?? `File is too small. Minimum size is ${limitLabel}.`),\n value: size,\n minSize: options.minSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMinSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1taW4tc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWluLXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxVQUFVLEdBQUcsQ0FBQztZQUM1RSxLQUFLLEVBQUUsSUFBSTtZQUNYLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDO0lBQ0osQ0FBQzs4R0F0QlUsMkJBQTJCO2tIQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFZhbGlkYXRpb25SdWxlLFxuICBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCxcbn0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgZm9ybWF0RmlsZVNpemVCeXRlcyB9IGZyb20gJy4uLy4uL2Zvcm1hdC1maWxlLXNpemUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMgZXh0ZW5kcyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucyB7XG4gIC8qKiBNaW5pbXVtIHNpemUgaW4gYnl0ZXMuICovXG4gIG1pblNpemU6IG51bWJlcjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJyB7XG4gIGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlT3B0aW9uc01hcCB7XG4gICAgZmlsZU1pblNpemU6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZmlsZU1pblNpemUnO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoXG4gICAgdmFsdWU6IEZpbGUgfCBCbG9iLFxuICAgIG9wdGlvbnM6IEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xuICAgIGNvbnN0IHNpemUgPSB2YWx1ZSBpbnN0YW5jZW9mIEZpbGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBCbG9iID8gdmFsdWUuc2l6ZSA6IDA7XG4gICAgY29uc3QgdmFsaWQgPSBzaXplID49IG9wdGlvbnMubWluU2l6ZTtcbiAgICBjb25zdCBsaW1pdExhYmVsID0gZm9ybWF0RmlsZVNpemVCeXRlcyhvcHRpb25zLm1pblNpemUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6IHRoaXMubmFtZSxcbiAgICAgIHJlc3VsdDogdmFsaWQsXG4gICAgICBtZXNzYWdlOiB2YWxpZFxuICAgICAgICA/ICcnXG4gICAgICAgIDogKG9wdGlvbnMubWVzc2FnZSA/PyBgRmlsZSBpcyB0b28gc21hbGwuIE1pbmltdW0gc2l6ZSBpcyAke2xpbWl0TGFiZWx9LmApLFxuICAgICAgdmFsdWU6IHNpemUsXG4gICAgICBtaW5TaXplOiBvcHRpb25zLm1pblNpemUsXG4gICAgfTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { formatFileSizeBytes } from '../../format-file-size';\nimport * as i0 from \"@angular/core\";\nexport class AXFileMaxSizeValidationRule {\n get name() {\n return 'fileMaxSize';\n }\n async validate(value, options) {\n const size = value instanceof File || value instanceof Blob ? value.size : 0;\n const valid = size <= options.maxSize;\n const limitLabel = formatFileSizeBytes(options.maxSize);\n return {\n rule: this.name,\n result: valid,\n message: valid\n ? ''\n : (options.message ??\n `File is too large. Maximum size is ${limitLabel}.`),\n value: size,\n maxSize: options.maxSize,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXFileMaxSizeValidationRule, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tYXgtc2l6ZS5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9maWxlL3NyYy9saWIvZmlsZS10eXBlL3J1bGVzL2ZpbGUtbWF4LXNpemUucnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWtCLEVBQ2xCLE9BQTJDO1FBRTNDLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztnQkFDWixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztvQkFDaEIsc0NBQXNDLFVBQVUsR0FBRyxDQUFDO1lBQ3hELEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUM7SUFDSixDQUFDOzhHQXZCVSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYVmFsaWRhdGlvblJ1bGUsXG4gIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zLFxuICBBWFZhbGlkYXRpb25SdWxlUmVzdWx0LFxufSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZUJ5dGVzIH0gZnJvbSAnLi4vLi4vZm9ybWF0LWZpbGUtc2l6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyBleHRlbmRzIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zIHtcbiAgLyoqIE1heGltdW0gc2l6ZSBpbiBieXRlcy4gKi9cbiAgbWF4U2l6ZTogbnVtYmVyO1xufVxuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nIHtcbiAgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zTWFwIHtcbiAgICBmaWxlTWF4U2l6ZTogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmaWxlTWF4U2l6ZSc7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZShcbiAgICB2YWx1ZTogRmlsZSB8IEJsb2IsXG4gICAgb3B0aW9uczogQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XG4gICAgY29uc3Qgc2l6ZSA9IHZhbHVlIGluc3RhbmNlb2YgRmlsZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJsb2IgPyB2YWx1ZS5zaXplIDogMDtcbiAgICBjb25zdCB2YWxpZCA9IHNpemUgPD0gb3B0aW9ucy5tYXhTaXplO1xuICAgIGNvbnN0IGxpbWl0TGFiZWwgPSBmb3JtYXRGaWxlU2l6ZUJ5dGVzKG9wdGlvbnMubWF4U2l6ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVsZTogdGhpcy5uYW1lLFxuICAgICAgcmVzdWx0OiB2YWxpZCxcbiAgICAgIG1lc3NhZ2U6IHZhbGlkXG4gICAgICAgID8gJydcbiAgICAgICAgOiAob3B0aW9ucy5tZXNzYWdlID8/XG4gICAgICAgICAgYEZpbGUgaXMgdG9vIGxhcmdlLiBNYXhpbXVtIHNpemUgaXMgJHtsaW1pdExhYmVsfS5gKSxcbiAgICAgIHZhbHVlOiBzaXplLFxuICAgICAgbWF4U2l6ZTogb3B0aW9ucy5tYXhTaXplLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","export * from './file-type.metadata';\nexport * from './file-type.models';\nexport * from './file-type.context';\nexport * from './file-type.copy';\nexport * from './file-type.open';\nexport * from './file-type.resolve';\nexport * from './file-type.renderer';\nexport * from './file-type.define';\nexport * from './file-type.providers';\nexport * from './file-type-renderer-outlet.component';\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2ZpbGUvc3JjL2xpYi9maWxlLXR5cGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFHM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekUsMkVBQTJFO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLDRCQUE0QjtJQUM1QiwyQkFBMkI7SUFDM0IsMkJBQTJCO0NBQ25CLENBQUM7QUFFWCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLDBCQUEwQjtJQUN4QyxPQUFPO1FBQ0wsT0FBTyxFQUFFLDJCQUEyQjtRQUNwQyxVQUFVLEVBQUUsQ0FBQyxRQUFxQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7WUFDMUQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLDJCQUEyQixDQUFDO1FBQ25DLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQztBQUNKLENBQUM7QUFFRCxpRkFBaUY7QUFDakYsT0FBTyxFQUFFLCtCQUErQixFQUFFLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckc7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxHQUFHLCtCQUErQixFQUFFLENBQUMsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUubWV0YWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLmNvbnRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUuY29weSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5vcGVuJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLnJlc29sdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUucmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUuZGVmaW5lJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS1yZW5kZXJlci1vdXRsZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS10eXBlLWluZm8tcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXR5cGUtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS5tZXJnZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdHlwZS52YWxpZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzLnByb3ZpZGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3J1bGVzL2ZpbGUtbWltZS10eXBlLnJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1pbi1zaXplLnJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy9maWxlLW1heC1zaXplLnJ1bGUnO1xuXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgcHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycyB9IGZyb20gJy4vdHlwZXMucHJvdmlkZXJzJztcbmltcG9ydCB7IEFYRmlsZU1heFNpemVWYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvZmlsZS1tYXgtc2l6ZS5ydWxlJztcbmltcG9ydCB7IEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL2ZpbGUtbWltZS10eXBlLnJ1bGUnO1xuaW1wb3J0IHsgQVhGaWxlTWluU2l6ZVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9maWxlLW1pbi1zaXplLnJ1bGUnO1xuXG4vKiogVmFsaWRhdGlvbiBydWxlIGNsYXNzZXMgdG8gcmVnaXN0ZXIgd2l0aCB7QGxpbmsgQVhWYWxpZGF0aW9uTW9kdWxlfS4gKi9cbmV4cG9ydCBjb25zdCBBWF9GSUxFX1ZBTElEQVRJT05fUlVMRVMgPSBbXG4gIEFYRmlsZU1pbWVUeXBlVmFsaWRhdGlvblJ1bGUsXG4gIEFYRmlsZU1pblNpemVWYWxpZGF0aW9uUnVsZSxcbiAgQVhGaWxlTWF4U2l6ZVZhbGlkYXRpb25SdWxlLFxuXSBhcyBjb25zdDtcblxuLyoqIFJlZ2lzdGVycyBmaWxlIHZhbGlkYXRpb24gcnVsZXMgd2l0aCB7QGxpbmsgQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogJ0FYVmFsaWRhdGlvbk1vZHVsZUZhY3RvcnknLFxuICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlKSA9PiAoKSA9PiB7XG4gICAgICByZWdpc3RyeS5yZWdpc3RlciguLi5BWF9GSUxFX1ZBTElEQVRJT05fUlVMRVMpO1xuICAgIH0sXG4gICAgZGVwczogW0FYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZV0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH07XG59XG5cbi8qKiBSZWdpc3RlcnMgYnVpbHQtaW4gaW1hZ2UgLyB2aWRlbyAvIGF1ZGlvIC8gZmlsZSAvIGRvY3VtZW50IHR5cGUgcHJvdmlkZXJzLiAqL1xuZXhwb3J0IHsgcHJvdmlkZUJ1aWx0aW5GaWxlVHlwZVByb3ZpZGVycywgcHJvdmlkZURlZmF1bHRGaWxlVHlwZVByb3ZpZGVycyB9IGZyb20gJy4vdHlwZXMucHJvdmlkZXJzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdmFsaWRhdGlvbiBydWxlcyBhbmQgb3B0aW9uYWwgYnVpbHQtaW4gZmlsZSB0eXBlIHByb3ZpZGVycy5cbiAqIHtAbGluayBBWEZpbGVUeXBlUmVnaXN0cnlTZXJ2aWNlfSBhbmQge0BsaW5rIEFYRmlsZVNlcnZpY2V9IGFyZSBgcHJvdmlkZWRJbjogJ3Jvb3QnYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGaWxlVHlwZVN5c3RlbSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtwcm92aWRlRmlsZVZhbGlkYXRpb25SdWxlcygpLCAuLi5wcm92aWRlQnVpbHRpbkZpbGVUeXBlUHJvdmlkZXJzKCldO1xufVxuIl19","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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"}
|