{
  "version": 3,
  "sources": ["../../../../../src/date/datepicker/dateSelection/LmDateSelection.tsx"],
  "sourcesContent": ["import { XStack } from 'tamagui'\nimport { useId, useRef, useState } from 'react'\nimport { LmFormContainerBaseTypes } from '../../../form/formContainerTypes'\nimport { LmFormFieldContainer } from '../../../form/LmFormFieldContainer'\nimport { LmDaySelect } from './LmDaySelect'\nimport { LmMonthSelect } from './LmMonthSelect'\nimport { LmYearSelect } from './LmYearSelect'\n\nexport type LmDateSelectionProps = LmFormContainerBaseTypes & {\n  onChange?: (date: string | null) => void\n  invalidDateMessage?: string\n  value?: string\n  locale?: string\n}\n\nexport function LmDateSelection({\n  required,\n  error,\n  helperText,\n  label,\n  labelProps,\n  labelInline,\n  onChange,\n  invalidDateMessage = 'This is not a valid date',\n  locale,\n  value,\n}: LmDateSelectionProps) {\n  let dayValue = ''\n  let monthValue = ''\n  let yearValue = ''\n  if (value) {\n    const arr = value.split('-')\n    if (arr.length === 3) {\n      yearValue = arr[0] as string\n      monthValue = arr[1] as string\n      dayValue = arr[2] as string\n    } else {\n      console.warn('the date input value is not yyyy-mm-dd')\n    }\n  }\n  const id = useId()\n  const dayRef = useRef<string | null>(dayValue)\n  const monthRef = useRef<string | null>(monthValue)\n  const yearRef = useRef<string | null>(yearValue)\n  const [isInvalid, setInvalid] = useState<boolean>(false)\n  const getDateString = () => {\n    return `${yearRef.current || 'x'}-${monthRef.current || 'x'}-${dayRef.current || 'x'}`\n  }\n  const isValidDate = () => {\n    if (yearRef.current && monthRef.current && dayRef.current) {\n      const dateString = getDateString()\n      const timestamp = Date.parse(dateString)\n      return !isNaN(timestamp) ? true : new Error(invalidDateMessage)\n    }\n    return false\n  }\n  const updateDate = () => {\n    const isValid = isValidDate()\n    if (typeof isValid !== 'boolean') {\n      setInvalid(true)\n      return\n    }\n    if (typeof onChange === 'function') {\n      if (isValid) {\n        const dateString = getDateString()\n        onChange(dateString)\n        setInvalid(false)\n      } else {\n        onChange(null)\n      }\n    }\n  }\n\n  return (\n    <LmFormFieldContainer\n      id={id}\n      error={isInvalid || error}\n      required={required}\n      labelProps={labelProps}\n      label={label}\n      labelInline={labelInline}\n      helperText={isInvalid ? invalidDateMessage : helperText}\n    >\n      <XStack space id={id}>\n        <LmDaySelect\n          value={dayValue}\n          onValueChange={(day) => {\n            dayRef.current = day\n            updateDate()\n          }}\n        />\n        <LmMonthSelect\n          value={monthValue}\n          locale={locale}\n          onValueChange={(month) => {\n            monthRef.current = month\n            updateDate()\n          }}\n        />\n        <LmYearSelect\n          value={yearValue}\n          onValueChange={(year) => {\n            yearRef.current = year\n            updateDate()\n          }}\n        />\n      </XStack>\n    </LmFormFieldContainer>\n  )\n}\n"],
  "mappings": "AAAA,SAAS,cAAc;AACvB,SAAS,OAAO,QAAQ,gBAAgB;AAExC,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAStB,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AACF,GAAyB;AACvB,MAAI,WAAW;AACf,MAAI,aAAa;AACjB,MAAI,YAAY;AAChB,MAAI,OAAO;AACT,UAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,QAAI,IAAI,WAAW,GAAG;AACpB,kBAAY,IAAI;AAChB,mBAAa,IAAI;AACjB,iBAAW,IAAI;AAAA,IACjB,OAAO;AACL,cAAQ,KAAK,wCAAwC;AAAA,IACvD;AAAA,EACF;AACA,QAAM,KAAK,MAAM;AACjB,QAAM,SAAS,OAAsB,QAAQ;AAC7C,QAAM,WAAW,OAAsB,UAAU;AACjD,QAAM,UAAU,OAAsB,SAAS;AAC/C,QAAM,CAAC,WAAW,UAAU,IAAI,SAAkB,KAAK;AACvD,QAAM,gBAAgB,MAAM;AAC1B,WAAO,GAAG,QAAQ,WAAW,OAAO,SAAS,WAAW,OAAO,OAAO,WAAW;AAAA,EACnF;AACA,QAAM,cAAc,MAAM;AACxB,QAAI,QAAQ,WAAW,SAAS,WAAW,OAAO,SAAS;AACzD,YAAM,aAAa,cAAc;AACjC,YAAM,YAAY,KAAK,MAAM,UAAU;AACvC,aAAO,CAAC,MAAM,SAAS,IAAI,OAAO,IAAI,MAAM,kBAAkB;AAAA,IAChE;AACA,WAAO;AAAA,EACT;AACA,QAAM,aAAa,MAAM;AACvB,UAAM,UAAU,YAAY;AAC5B,QAAI,OAAO,YAAY,WAAW;AAChC,iBAAW,IAAI;AACf;AAAA,IACF;AACA,QAAI,OAAO,aAAa,YAAY;AAClC,UAAI,SAAS;AACX,cAAM,aAAa,cAAc;AACjC,iBAAS,UAAU;AACnB,mBAAW,KAAK;AAAA,MAClB,OAAO;AACL,iBAAS,IAAI;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEA,SACE,CAAC,qBACC,IAAI,IACJ,OAAO,aAAa,OACpB,UAAU,UACV,YAAY,YACZ,OAAO,OACP,aAAa,aACb,YAAY,YAAY,qBAAqB,YAE7C,CAAC,OAAO,MAAM,IAAI;AAAA,IAChB,CAAC,YACC,OAAO,UACP,eAAe,CAAC,QAAQ;AACtB,aAAO,UAAU;AACjB,iBAAW;AAAA,IACb,GACF;AAAA,IACA,CAAC,cACC,OAAO,YACP,QAAQ,QACR,eAAe,CAAC,UAAU;AACxB,eAAS,UAAU;AACnB,iBAAW;AAAA,IACb,GACF;AAAA,IACA,CAAC,aACC,OAAO,WACP,eAAe,CAAC,SAAS;AACvB,cAAQ,UAAU;AAClB,iBAAW;AAAA,IACb,GACF;AAAA,EACF,EAvBC,OAwBH,EAjCC;AAmCL;",
  "names": []
}
