{"version":3,"file":"ng-valid-range.mjs","sources":["../../../projects/ng-valid-range/src/lib/ng-valid-range.directive.ts","../../../projects/ng-valid-range/src/lib/ng-valid-range.module.ts","../../../projects/ng-valid-range/src/public-api.ts","../../../projects/ng-valid-range/src/ng-valid-range.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, FormControl, ValidatorFn } from '@angular/forms';\r\n\r\n\r\nexport function validRangeFactory(arg: string): ValidatorFn {\r\n    if (!arg) {\r\n        return () => null;\r\n    }\r\n    const regex = /([\\[\\]])?(.*),([^\\[\\]]*)([\\[\\]])?/;\r\n    const parts = regex.exec(arg);\r\n    if (!parts) {\r\n      throw new Error('Invalid ngValidRange argument: ' + arg);\r\n    }\r\n    const min = +parts[2];\r\n    const max = +parts[3];\r\n    const excludeMin = parts[1] !== '[';\r\n    const excludeMax = parts[4] !== ']';\r\n    const testMin = !!parts[2];\r\n    const testMax = !!parts[3];\r\n\r\n    return (control) => {\r\n        const value = +control.value;\r\n        if (control.value == null || isNaN(value)) {\r\n            return null;\r\n        }\r\n        if (testMin && (value < min || (excludeMin && value === min))) {\r\n            return { ngValidRange: { value: control.value, tooSmall: 1, min } };\r\n        }\r\n        if (testMax && (value > max || (excludeMax && value === max))) {\r\n            return { ngValidRange: { value: control.value, tooLarge: 1, max } };\r\n        }\r\n        return null;\r\n    };\r\n}\r\n\r\n@Directive({\r\n    selector: '[ngValidRange][ngModel]',\r\n    providers: [\r\n        { provide: NG_VALIDATORS, useExisting: NgValidRangeDirective, multi: true }\r\n    ]\r\n})\r\nexport class NgValidRangeDirective implements Validator {\r\n    private validRange!: string;\r\n    private validator!: ValidatorFn;\r\n    private onChange?: () => void;\r\n\r\n    @Input()\r\n    get ngValidRange(): string {\r\n        return this.validRange;\r\n    }\r\n\r\n    set ngValidRange(value: string) {\r\n        this.validRange = value;\r\n        this.validator = validRangeFactory(value);\r\n        if (this.onChange) {\r\n            this.onChange();\r\n        }\r\n    }\r\n\r\n    validate(c: FormControl) {\r\n        return this.validator ? this.validator(c) : null;\r\n    }\r\n\r\n    registerOnValidatorChange(fn: () => void) {\r\n        this.onChange = fn;\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgValidRangeDirective } from './ng-valid-range.directive';\r\n\r\n@NgModule({\r\n  declarations: [NgValidRangeDirective],\r\n  imports: [],\r\n  exports: [NgValidRangeDirective]\r\n})\r\nexport class NgValidRangeModule { }\r\n","/*\r\n * Public API Surface of ng-valid-range\r\n */\r\n\r\nexport * from './lib/ng-valid-range.directive';\r\nexport * from './lib/ng-valid-range.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}