{"version":3,"file":"value-DZci_JYG.js","sources":["../../Client/webkit/validation/value.ts"],"sourcesContent":["import { isDayjs } from 'dayjs';\r\n\r\nexport type Rule<RuleType> = {\r\n id: string;\r\n validator: (value: RuleType | null | undefined) => boolean;\r\n error: (name?: string) => string;\r\n};\r\n\r\nexport class Value<Content> {\r\n private initialValue: Content;\r\n private rules: Rule<Content>[];\r\n private defaultError: string | undefined;\r\n\r\n public content: Content;\r\n public name: string;\r\n public error: string | null;\r\n public errorHighlight: string | undefined;\r\n public valid: boolean = true;\r\n\r\n constructor(name: string, value: Content, rules?: Rule<Content>[], errorHighlight?: string) {\r\n this.name = name;\r\n this.content = this.initialValue = value;\r\n this.rules = rules || [];\r\n this.error = null;\r\n this.errorHighlight = errorHighlight;\r\n\r\n this.addRule = this.addRule;\r\n this.setRules = this.setRules;\r\n this.set = this.set;\r\n this.reset = this.reset;\r\n this.validate = this.validate;\r\n this.getRuleIds = this.getRuleIds;\r\n this.toJSON = this.toJSON;\r\n }\r\n\r\n public addRule(rule: Rule<Content>) {\r\n this.rules = [...this.rules.filter(r => r.id !== rule.id), rule];\r\n }\r\n\r\n public setRules(rules: Rule<Content>[]) {\r\n this.rules = [];\r\n rules.forEach(rule => this.addRule(rule));\r\n }\r\n\r\n public set(value: Content, clearError: boolean = true): Value<Content> {\r\n this.content = value;\r\n\r\n if (clearError) {\r\n this.valid = true;\r\n this.error = null;\r\n } else this.validate();\r\n\r\n return this;\r\n }\r\n\r\n public reset(): Value<Content> {\r\n this.set(this.initialValue);\r\n return this;\r\n }\r\n\r\n public validate(): string | null {\r\n const failingRule = this.rules.find(rule => !rule.validator(this.content));\r\n if (failingRule) {\r\n this.valid = false;\r\n this.error = this.defaultError || failingRule.error(this.name);\r\n } else {\r\n this.valid = true;\r\n this.error = null;\r\n }\r\n\r\n return this.error;\r\n }\r\n\r\n public getRuleIds(): string[] {\r\n return this.rules.map(rule => rule.id);\r\n }\r\n\r\n toJSON(): any {\r\n return (\r\n this.content === null ? null\r\n : this.content === undefined ? undefined\r\n : isDayjs(this.content) ? this.content.format()\r\n : this.content\r\n );\r\n }\r\n}\r\n"],"names":["Value","name","value","rules","errorHighlight","__publicField","rule","r","clearError","failingRule","isDayjs"],"mappings":"qMAQO,MAAMA,CAAe,CAWxB,YAAYC,EAAcC,EAAgBC,EAAyBC,EAAyB,CAVpFC,EAAA,qBACAA,EAAA,cACAA,EAAA,qBAEDA,EAAA,gBACAA,EAAA,aACAA,EAAA,cACAA,EAAA,uBACAA,EAAA,aAAiB,IAGpB,KAAK,KAAOJ,EACP,KAAA,QAAU,KAAK,aAAeC,EAC9B,KAAA,MAAQC,GAAS,CAAC,EACvB,KAAK,MAAQ,KACb,KAAK,eAAiBC,EAEtB,KAAK,QAAU,KAAK,QACpB,KAAK,SAAW,KAAK,SACrB,KAAK,IAAM,KAAK,IAChB,KAAK,MAAQ,KAAK,MAClB,KAAK,SAAW,KAAK,SACrB,KAAK,WAAa,KAAK,WACvB,KAAK,OAAS,KAAK,MAAA,CAGhB,QAAQE,EAAqB,CAChC,KAAK,MAAQ,CAAC,GAAG,KAAK,MAAM,OAAYC,GAAAA,EAAE,KAAOD,EAAK,EAAE,EAAGA,CAAI,CAAA,CAG5D,SAASH,EAAwB,CACpC,KAAK,MAAQ,CAAC,EACdA,EAAM,QAAQG,GAAQ,KAAK,QAAQA,CAAI,CAAC,CAAA,CAGrC,IAAIJ,EAAgBM,EAAsB,GAAsB,CACnE,YAAK,QAAUN,EAEXM,GACA,KAAK,MAAQ,GACb,KAAK,MAAQ,WACL,SAAS,EAEd,IAAA,CAGJ,OAAwB,CACtB,YAAA,IAAI,KAAK,YAAY,EACnB,IAAA,CAGJ,UAA0B,CACvB,MAAAC,EAAc,KAAK,MAAM,KAAKH,GAAQ,CAACA,EAAK,UAAU,KAAK,OAAO,CAAC,EACzE,OAAIG,GACA,KAAK,MAAQ,GACb,KAAK,MAAQ,KAAK,cAAgBA,EAAY,MAAM,KAAK,IAAI,IAE7D,KAAK,MAAQ,GACb,KAAK,MAAQ,MAGV,KAAK,KAAA,CAGT,YAAuB,CAC1B,OAAO,KAAK,MAAM,IAAIH,GAAQA,EAAK,EAAE,CAAA,CAGzC,QAAc,CACV,OACI,KAAK,UAAY,KAAO,KACtB,KAAK,UAAY,OAAY,OAC7BI,EAAAA,QAAQ,KAAK,OAAO,EAAI,KAAK,QAAQ,OAAA,EACrC,KAAK,OAAA,CAGnB"}