{"version":3,"file":"useDateLocale.mjs","names":["React","useMemo","DateTime","UseDateLocaleReturn","convertISOStringToLocalDateTime","date","convertISOStringToLocalDate","getISODate","useDateLocale","t0","t1","$","_c","datetimeFormatOptions","undefined","locale","t2","timeZone","Intl","DateTimeFormat","resolvedOptions","year","month","day","hour","minute","hour12","dateTimeOptions","localeString","navigator","language","t3","luxonDateTime","fromISO","zone","setZone","setLocale","isValid","toLocaleString","t4","date_0","luxonDateTime_0","dateOptions","_temp","t5","now","toISO","includeOffset","suppressMilliseconds"],"sources":["../../src/hooks/useDateLocale.ts"],"sourcesContent":["import React, { useMemo } from 'react'\nimport {DateTime} from 'luxon'\n\n// TODO: tie in datetime config at the user or tenant level\n\nexport interface UseDateLocaleReturn {\n    convertISOStringToLocalDateTime: (date: string) => string | null;\n    convertISOStringToLocalDate: (date: string) => string | null;\n    getISODate: () => string;\n}\n\nexport const useDateLocale = (\n    datetimeFormatOptions : Intl.DateTimeFormatOptions | null = null,\n    locale: string | null = null\n): UseDateLocaleReturn => {\n\n    const dateTimeOptions: Intl.DateTimeFormatOptions = useMemo(() => (datetimeFormatOptions ?? {\n        timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n        year: 'numeric',\n        month: 'short',\n        day: 'numeric',\n        hour: 'numeric',\n        minute: 'numeric',\n        hour12: true,\n    }), [datetimeFormatOptions]);\n\n    const localeString: string = useMemo(() => locale ?? navigator.language,[locale]);\n\n    const convertISOStringToLocalDateTime = (date: string): string | null => {\n        const luxonDateTime = DateTime.fromISO(date, {zone: 'utc'});\n        luxonDateTime.setZone(dateTimeOptions.timeZone);\n\n        luxonDateTime.setLocale(localeString);\n\n        if(!luxonDateTime.isValid)\n        {\n            return null;\n        }\n        return luxonDateTime.toLocaleString(dateTimeOptions);\n\n    }\n\n    const convertISOStringToLocalDate = (date: string): string | null => {\n        const luxonDateTime = DateTime.fromISO(date);\n        luxonDateTime.setZone(dateTimeOptions.timeZone);\n\n        luxonDateTime.setLocale(localeString);\n        if(!luxonDateTime.isValid)\n        {\n            return null;\n        }\n        const { hour, minute, ...dateOptions} = dateTimeOptions;\n        return luxonDateTime.toLocaleString(dateOptions);\n    }\n\n    const getISODate = ():string => {\n        return DateTime.now().toISO({includeOffset:true, suppressMilliseconds: true})\n    }\n\n    return {\n        convertISOStringToLocalDateTime: convertISOStringToLocalDateTime,\n        convertISOStringToLocalDate: convertISOStringToLocalDate,\n        getISODate: getISODate\n    };\n}\n"],"mappings":";;;AAWA,MAAaQ,iBAAgBC,IAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACzB,MAAAC,wBAAAJ,OAAAK,KAAAA,IAAA,OAAAL;CACA,MAAAM,SAAAL,OAAAI,KAAAA,IAAA,OAAAJ;CAA4B,IAAAM;AAAA,KAAAL,EAAA,OAAAE,uBAAA;AAGuCG,OAAAH,yBAAA;GAAAI,UACrDC,KAAIC,gBAAiB,CAAAC,iBAAkB,CAAAH;GAASI,MACpD;GAASC,OACR;GAAOC,KACT;GAASC,MACR;GAASC,QACP;GAASC,QACT;GACX;AAAAf,IAAA,KAAAE;AAAAF,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CARD,MAAAgB,kBAAmEX;CAUnE,MAAAY,eAA2Cb,UAAUc,UAASC;CAAoB,IAAAC;AAAA,KAAApB,EAAA,OAAAgB,mBAAAhB,EAAA,OAAAiB,cAAA;AAE1CG,QAAA1B,SAAA;GACpC,MAAA2B,gBAAsB9B,SAAQ+B,QAAS5B,MAAM,EAAA6B,MAAO,OAAM,CAAC;AAC3DF,iBAAaG,QAASR,gBAAeV,SAAU;AAE/Ce,iBAAaI,UAAWR,aAAa;AAErC,OAAG,CAACI,cAAaK,QAAQ,QAEd;AACV,UACML,cAAaM,eAAgBX,gBAAgB;;AAEvDhB,IAAA,KAAAgB;AAAAhB,IAAA,KAAAiB;AAAAjB,IAAA,KAAAoB;OAAAA,MAAApB,EAAA;CAZD,MAAAP,kCAAwC2B;CAYvC,IAAAQ;AAAA,KAAA5B,EAAA,OAAAgB,mBAAAhB,EAAA,OAAAiB,cAAA;AAEmCW,QAAAC,WAAA;GAChC,MAAAC,kBAAsBvC,SAAQ+B,QAAS5B,OAAK;AAC5C2B,mBAAaG,QAASR,gBAAeV,SAAU;AAE/Ce,mBAAaI,UAAWR,aAAa;AACrC,OAAG,CAACI,gBAAaK,QAAQ,QAEd;GAEX,MAAA,EAAAb,MAAAC,QAAA,GAAAiB,gBAAwCf;AAAgB,UACjDK,gBAAaM,eAAgBI,YAAY;;AACnD/B,IAAA,KAAAgB;AAAAhB,IAAA,KAAAiB;AAAAjB,IAAA,KAAA4B;OAAAA,MAAA5B,EAAA;CAXD,MAAAL,8BAAoCiC;CAapC,MAAAhC,aAAmBoC;CAElB,IAAAC;AAAA,KAAAjC,EAAA,OAAAL,+BAAAK,EAAA,OAAAP,iCAAA;AAEMwC,OAAA;GAAAxC;GAAAE;GAAAC;GAIN;AAAAI,IAAA,KAAAL;AAAAK,IAAA,KAAAP;AAAAO,IAAA,MAAAiC;OAAAA,MAAAjC,EAAA;AAAA,QAJMiC;;AAhDkB,SAAAD,QAAA;AAAA,QA6CdzC,SAAQ2C,KAAM,CAAAC,MAAO;EAAAC,eAAe;EAAIC,sBAAwB;EAAK,CAAC"}