{"version":3,"file":"use-id.mjs","sources":["../../src/utils/use-id.ts"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\n\nimport { useLayoutEffect } from \"./use-layout-effect\";\n\nlet isHydrated = false;\nlet id = 0;\n\nfunction getId() {\n  return ++id;\n}\n\n// Prevent bundlers from importing `useId` directly.\n// See https://github.com/radix-ui/primitives/pull/1028\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\nconst useReactId: typeof React.useId = (React as any)[\"useId\".toString()];\n\nfunction useIncrementalId() {\n  const [id, setId] = useState(isHydrated ? getId : null);\n\n  useLayoutEffect(() => {\n    if (id === null) {\n      setId(getId());\n    }\n  }, [id]);\n\n  useEffect(() => {\n    if (!isHydrated) {\n      isHydrated = true;\n    }\n  }, []);\n\n  return String(id) ?? undefined;\n}\n\n// React's `useId` is only available in React >=18.\nexport const useId: typeof React.useId = useReactId ?? useIncrementalId;\n"],"names":["React","id"],"mappings":";;;AAIA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,IAAI,EAAK,GAAA,CAAA,CAAA;AAET,SAAS,KAAQ,GAAA;AACf,EAAA,OAAO,EAAE,EAAA,CAAA;AACX,CAAA;AAKA,MAAM,UAAA,GAAkCA,cAAc,CAAA,OAAA,CAAQ,QAAS,EAAA,CAAA,CAAA;AAEvE,SAAS,gBAAmB,GAAA;AAC1B,EAAA,MAAM,CAACC,GAAI,EAAA,KAAK,IAAI,QAAS,CAAA,UAAA,GAAa,QAAQ,IAAI,CAAA,CAAA;AAEtD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAIA,QAAO,IAAM,EAAA;AACf,MAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KACf;AAAA,GACF,EAAG,CAACA,GAAE,CAAC,CAAA,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAa,UAAA,GAAA,IAAA,CAAA;AAAA,KACf;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA,MAAA,CAAOA,GAAE,CAAK,IAAA,KAAA,CAAA,CAAA;AACvB,CAAA;AAGO,MAAM,QAA4B,UAAc,IAAA;;;;"}