UNPKG

@vipstorage/material-file-input

Version:
29 lines 3.25 kB
/** * Validator for size of file * @param max Max of size of file (in bytes) */ export function MaxSizeValidator(max) { return (ctrl) => { max = Number(max); if (isNaN(max)) { throw 'MaxSizeValidator: max of size of file is invalid'; } if (!ctrl.value) return null; let files = ctrl.value; if (!Array.isArray(ctrl.value)) { files = [ctrl.value]; } if (!files.length) return null; const add = (a, b) => a + b; const sumSize = files.map(x => x.size).reduce(add); if (sumSize > max) { return { maxSize: true }; } return null; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXNpemUudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1pbnB1dC9zcmMvbGliL3ZhbGlkYXRvcnMvbWF4LXNpemUudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQ3hDLE9BQU8sQ0FBQyxJQUFxQixFQUEyQixFQUFFO1FBQ3RELEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWixNQUFNLGtEQUFrRCxDQUFDO1NBQzVEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNmLE9BQU87Z0JBQ0gsT0FBTyxFQUFFLElBQUk7YUFDaEIsQ0FBQztTQUNMO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogVmFsaWRhdG9yIGZvciBzaXplIG9mIGZpbGVcbiAqIEBwYXJhbSBtYXggTWF4IG9mIHNpemUgb2YgZmlsZSAoaW4gYnl0ZXMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYXhTaXplVmFsaWRhdG9yKG1heDogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY3RybDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBtYXggPSBOdW1iZXIobWF4KTtcbiAgICAgICAgaWYgKGlzTmFOKG1heCkpIHtcbiAgICAgICAgICAgIHRocm93ICdNYXhTaXplVmFsaWRhdG9yOiBtYXggb2Ygc2l6ZSBvZiBmaWxlIGlzIGludmFsaWQnO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3RybC52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGxldCBmaWxlczogRmlsZVtdID0gY3RybC52YWx1ZTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGN0cmwudmFsdWUpKSB7XG4gICAgICAgICAgICBmaWxlcyA9IFtjdHJsLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICBpZighZmlsZXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgYWRkID0gKGE6IGFueSwgYjogYW55KTogbnVtYmVyID0+IGEgKyBiO1xuICAgICAgICBjb25zdCBzdW1TaXplID0gZmlsZXMubWFwKHggPT4geC5zaXplKS5yZWR1Y2UoYWRkKTtcbiAgICAgICAgaWYgKHN1bVNpemUgPiBtYXgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4U2l6ZTogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59Il19