{
  "version": 3,
  "sources": ["../index.ts", "../../../node_modules/@mantine/hooks/src/utils/random-id/random-id.ts"],
  "sourcesContent": ["import { Fragment, createElement as el } from 'react';\nimport { randomId } from '@mantine/hooks';\nimport {\n  hasLength,\n  isNotEmpty,\n  isEmail,\n  isInRange,\n  matches,\n  matchesField,\n} from '@mantine/form';\n\nexport {\n  hasLength,\n  isEmail,\n  isInRange,\n  matches,\n  matchesField,\n} from '@mantine/form';\n\nexport type Rule<Value, Values> = (value: Value, values: Values, path: string) => React.ReactNode;\n\nexport const some = <Value, Values>(items: Rule<Value, Values>[]) => {\n  const callback: Rule<Value, Values> = (value, values, path) => {\n    // eslint-disable-next-line no-plusplus\n    for (let i = 0; i < items.length; i++) {\n      const rule = items[i];\n      const error = rule(value, values, path);\n      if (error) return error;\n    }\n    return null;\n  };\n  return callback;\n};\n\ninterface EveryOptions {\n  itemBuilder?: (children: React.ReactNode, key: string) => React.ReactNode;\n  wrapperBuilder?: (children: React.ReactNode) => React.ReactNode;\n}\n\nexport const every = <Value, Values>(items: Rule<Value, Values>[], options: EveryOptions = {}) => {\n  const {\n    itemBuilder = (children, key) => el(Fragment, { key }, children, el('br')),\n    wrapperBuilder = (children) => children,\n  } = options;\n  const callback: Rule<Value, Values> = (value, values, path) => {\n    const accumulator = [];\n    // eslint-disable-next-line no-plusplus\n    for (let i = 0; i < items.length; i++) {\n      const rule = items[i];\n      const error = rule(value, values, path);\n      if (error) accumulator.push(itemBuilder(error, randomId()));\n    }\n    return accumulator.length > 0 ? wrapperBuilder(accumulator) : null;\n  };\n  return callback;\n};\n\nexport const hasNumber = (error: React.ReactNode = 'Require number characters') => matches(/[0-9]/, error);\n\nexport const hasLowerCase = (error: React.ReactNode = 'Require lowercase characters') =>\n  matches(/[a-z]/, error);\n\nexport const hasUpperCase = (error: React.ReactNode = 'Require uppercase characters') =>\n  matches(/[A-Z]/, error);\n\nexport const hasSymbol = (error: React.ReactNode = 'Require special symbol') =>\n  matches(/[$&+,:;=?@#|'<>.^*()%!-]/, error);\n\nexport const isRequired = (error: React.ReactNode = 'Must be filled') => isNotEmpty(error);\n\nexport const exactLength = (length: number, error?: React.ReactNode) =>\n  hasLength(length, error || `Require exact ${length} characters`);\n\nexport const rangeLength = (min: number, max: number, error?: React.ReactNode) =>\n  hasLength({ min, max }, error || `Require between ${min} to ${max} characters`);\n\nexport const minLength = (length: number, error?: React.ReactNode) =>\n  hasLength({ min: length }, error || `Require minimum ${length} characters`);\n\nexport const maxLength = (length: number, error?: React.ReactNode) =>\n  hasLength({ max: length }, error || `Require maximum ${length} characters`);\n\ninterface RulesOptions extends EveryOptions {\n  accumulate?: boolean;\n}\n\nconst rules = <Value, Values>(items: Rule<Value, Values>[], options: RulesOptions = {}) => {\n  const { accumulate = false, ...everyOptions } = options;\n  return accumulate ? every(items, everyOptions) : some(items);\n};\n\nrules.hasLength = hasLength;\nrules.hasNumber = hasNumber;\nrules.hasLowerCase = hasLowerCase;\nrules.hasUpperCase = hasUpperCase;\nrules.hasSymbol = hasSymbol;\nrules.isRequired = isRequired;\nrules.isEmail = isEmail;\nrules.isInRange = isInRange;\nrules.exactLength = exactLength;\nrules.rangeLength = rangeLength;\nrules.minLength = minLength;\nrules.maxLength = maxLength;\nrules.matches = matches;\nrules.matchesField = matchesField;\n\nexport default rules;\n", "export function randomId() {\n  return `mantine-${Math.random().toString(36).slice(2, 11)}`;\n}\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,UAAAC,EAAA,gBAAAC,EAAA,2CAAAC,EAAA,cAAAC,EAAA,cAAAC,EAAA,iBAAAC,EAAA,+DAAAC,EAAA,oEAAAC,EAAA,cAAAC,EAAA,gBAAAC,EAAA,SAAAC,IAAA,eAAAC,EAAAd,GAAA,IAAAe,EAA8C,iBCAvC,SAASC,GAAW,CACzB,MAAO,WAAW,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,EAAG,EAAE,CAAC,EAC3D,CDAA,IAAAC,EAOO,yBAEPA,EAMO,yBAIMC,EAAuBC,GACI,CAACC,EAAOC,EAAQC,IAAS,CAE7D,QAASC,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAAK,CACrC,IAAMC,EAAOL,EAAMI,CAAC,EACdE,EAAQD,EAAKJ,EAAOC,EAAQC,CAAI,EACtC,GAAIG,EAAO,OAAOA,CACpB,CACA,OAAO,IACT,EASWC,EAAQ,CAAgBP,EAA8BQ,EAAwB,CAAC,IAAM,CAChG,GAAM,CACJ,YAAAC,EAAc,CAACC,EAAUC,OAAQ,EAAAC,eAAG,WAAU,CAAE,IAAAD,CAAI,EAAGD,KAAU,EAAAE,eAAG,IAAI,CAAC,EACzE,eAAAC,EAAkBH,GAAaA,CACjC,EAAIF,EAWJ,MAVsC,CAACP,EAAOC,EAAQC,IAAS,CAC7D,IAAMW,EAAc,CAAC,EAErB,QAASV,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAAK,CACrC,IAAMC,EAAOL,EAAMI,CAAC,EACdE,EAAQD,EAAKJ,EAAOC,EAAQC,CAAI,EAClCG,GAAOQ,EAAY,KAAKL,EAAYH,EAAOS,EAAS,CAAC,CAAC,CAC5D,CACA,OAAOD,EAAY,OAAS,EAAID,EAAeC,CAAW,EAAI,IAChE,CAEF,EAEaE,EAAY,CAACV,EAAyB,iCAAgC,WAAQ,QAASA,CAAK,EAE5FW,EAAe,CAACX,EAAyB,oCACpD,WAAQ,QAASA,CAAK,EAEXY,EAAe,CAACZ,EAAyB,oCACpD,WAAQ,QAASA,CAAK,EAEXa,EAAY,CAACb,EAAyB,8BACjD,WAAQ,2BAA4BA,CAAK,EAE9Bc,EAAa,CAACd,EAAyB,sBAAqB,cAAWA,CAAK,EAE5Ee,EAAc,CAACC,EAAgBhB,OAC1C,aAAUgB,EAAQhB,GAAS,iBAAiBgB,CAAM,aAAa,EAEpDC,EAAc,CAACC,EAAaC,EAAanB,OACpD,aAAU,CAAE,IAAAkB,EAAK,IAAAC,CAAI,EAAGnB,GAAS,mBAAmBkB,CAAG,OAAOC,CAAG,aAAa,EAEnEC,EAAY,CAACJ,EAAgBhB,OACxC,aAAU,CAAE,IAAKgB,CAAO,EAAGhB,GAAS,mBAAmBgB,CAAM,aAAa,EAE/DK,EAAY,CAACL,EAAgBhB,OACxC,aAAU,CAAE,IAAKgB,CAAO,EAAGhB,GAAS,mBAAmBgB,CAAM,aAAa,EAMtEM,EAAQ,CAAgB5B,EAA8BQ,EAAwB,CAAC,IAAM,CACzF,GAAM,CAAE,WAAAqB,EAAa,GAAO,GAAGC,CAAa,EAAItB,EAChD,OAAOqB,EAAatB,EAAMP,EAAO8B,CAAY,EAAI/B,EAAKC,CAAK,CAC7D,EAEA4B,EAAM,UAAY,YAClBA,EAAM,UAAYZ,EAClBY,EAAM,aAAeX,EACrBW,EAAM,aAAeV,EACrBU,EAAM,UAAYT,EAClBS,EAAM,WAAaR,EACnBQ,EAAM,QAAU,UAChBA,EAAM,UAAY,YAClBA,EAAM,YAAcP,EACpBO,EAAM,YAAcL,EACpBK,EAAM,UAAYF,EAClBE,EAAM,UAAYD,EAClBC,EAAM,QAAU,UAChBA,EAAM,aAAe,eAErB,IAAOG,EAAQH",
  "names": ["mantine_form_rules_exports", "__export", "mantine_form_rules_default", "every", "exactLength", "hasLowerCase", "hasNumber", "hasSymbol", "hasUpperCase", "isRequired", "maxLength", "minLength", "rangeLength", "some", "__toCommonJS", "import_react", "randomId", "import_form", "some", "items", "value", "values", "path", "i", "rule", "error", "every", "options", "itemBuilder", "children", "key", "el", "wrapperBuilder", "accumulator", "randomId", "hasNumber", "hasLowerCase", "hasUpperCase", "hasSymbol", "isRequired", "exactLength", "length", "rangeLength", "min", "max", "minLength", "maxLength", "rules", "accumulate", "everyOptions", "mantine_form_rules_default"]
}
