{"version":3,"file":"has-length.mjs","names":[],"sources":["../../../src/validators/has-length/has-length.ts"],"sourcesContent":["import type { SyncReactNode } from '../types';\n\ninterface HasLengthOptions {\n  max?: number;\n  min?: number;\n}\n\ntype HasLengthPayload = HasLengthOptions | number;\n\nfunction isLengthValid(payload: HasLengthPayload, value: any) {\n  if (typeof payload === 'number') {\n    return value.length === payload;\n  }\n\n  const { max, min } = payload;\n  let valid = true;\n\n  if (typeof max === 'number' && value.length > max) {\n    valid = false;\n  }\n\n  if (typeof min === 'number' && value.length < min) {\n    valid = false;\n  }\n\n  return valid;\n}\n\nexport function hasLength(payload: HasLengthPayload, error?: SyncReactNode) {\n  const _error = error || true;\n\n  return (value: unknown): SyncReactNode => {\n    if (typeof value === 'string') {\n      return isLengthValid(payload, value.trim()) ? null : _error;\n    }\n\n    if (typeof value === 'object' && value !== null && 'length' in value) {\n      return isLengthValid(payload, value) ? null : _error;\n    }\n\n    return _error;\n  };\n}\n"],"mappings":";;AASA,SAAS,cAAc,SAA2B,OAAY;CAC5D,IAAI,OAAO,YAAY,UACrB,OAAO,MAAM,WAAW;CAG1B,MAAM,EAAE,KAAK,QAAQ;CACrB,IAAI,QAAQ;CAEZ,IAAI,OAAO,QAAQ,YAAY,MAAM,SAAS,KAC5C,QAAQ;CAGV,IAAI,OAAO,QAAQ,YAAY,MAAM,SAAS,KAC5C,QAAQ;CAGV,OAAO;AACT;AAEA,SAAgB,UAAU,SAA2B,OAAuB;CAC1E,MAAM,SAAS,SAAS;CAExB,QAAQ,UAAkC;EACxC,IAAI,OAAO,UAAU,UACnB,OAAO,cAAc,SAAS,MAAM,KAAK,CAAC,IAAI,OAAO;EAGvD,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,YAAY,OAC7D,OAAO,cAAc,SAAS,KAAK,IAAI,OAAO;EAGhD,OAAO;CACT;AACF"}