{"version":3,"file":"dist-odcXV7N3.cjs","names":["React","React2"],"sources":["../node_modules/@radix-ui/react-presence/dist/index.mjs"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n  return React.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\n__name(useStateMachine, \"useStateMachine\");\n\n// src/presence.tsx\nvar Presence = /* @__PURE__ */ __name((props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n  const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n  const ref = useStableComposedRefs(presence.ref, getElementRef(child));\n  const forceMount = typeof children === \"function\";\n  return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n}, \"Presence\");\nfunction usePresence(present) {\n  const [node, setNode] = React2.useState();\n  const stylesRef = React2.useRef(null);\n  const prevPresentRef = React2.useRef(present);\n  const prevAnimationNameRef = React2.useRef(\"none\");\n  const mountAnimationNameRef = React2.useRef(void 0);\n  const initialState = present ? \"mounted\" : \"unmounted\";\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: \"unmounted\",\n      ANIMATION_OUT: \"unmountSuspended\"\n    },\n    unmountSuspended: {\n      MOUNT: \"mounted\",\n      ANIMATION_END: \"unmounted\"\n    },\n    unmounted: {\n      MOUNT: \"mounted\"\n    }\n  });\n  React2.useEffect(() => {\n    if (state === \"mounted\") {\n      prevAnimationNameRef.current = mountAnimationNameRef.current ?? getAnimationName(stylesRef.current);\n      mountAnimationNameRef.current = void 0;\n    } else {\n      prevAnimationNameRef.current = \"none\";\n    }\n  }, [state]);\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n      if (present) {\n        mountAnimationNameRef.current = currentAnimationName;\n        send(\"MOUNT\");\n      } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n        send(\"UNMOUNT\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (wasPresent && isAnimating) {\n          send(\"ANIMATION_OUT\");\n        } else {\n          send(\"UNMOUNT\");\n        }\n      }\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n  useLayoutEffect(() => {\n    if (node) {\n      let timeoutId;\n      const ownerWindow = node.ownerDocument.defaultView ?? window;\n      const handleAnimationEnd = /* @__PURE__ */ __name((event) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n        if (event.target === node && isCurrentAnimation) {\n          send(\"ANIMATION_END\");\n          if (!prevPresentRef.current) {\n            const currentFillMode = node.style.animationFillMode;\n            node.style.animationFillMode = \"forwards\";\n            timeoutId = ownerWindow.setTimeout(() => {\n              if (node.style.animationFillMode === \"forwards\") {\n                node.style.animationFillMode = currentFillMode;\n              }\n            });\n          }\n        }\n      }, \"handleAnimationEnd\");\n      const handleAnimationStart = /* @__PURE__ */ __name((event) => {\n        if (event.target === node) {\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      }, \"handleAnimationStart\");\n      node.addEventListener(\"animationstart\", handleAnimationStart);\n      node.addEventListener(\"animationcancel\", handleAnimationEnd);\n      node.addEventListener(\"animationend\", handleAnimationEnd);\n      return () => {\n        ownerWindow.clearTimeout(timeoutId);\n        node.removeEventListener(\"animationstart\", handleAnimationStart);\n        node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n        node.removeEventListener(\"animationend\", handleAnimationEnd);\n      };\n    } else {\n      send(\"ANIMATION_END\");\n    }\n  }, [node, send]);\n  return {\n    isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n    ref: React2.useCallback((node2) => {\n      if (node2) {\n        const styles = getComputedStyle(node2);\n        stylesRef.current = styles;\n        mountAnimationNameRef.current = getAnimationName(styles);\n      } else {\n        stylesRef.current = null;\n      }\n      setNode(node2);\n    }, [])\n  };\n}\n__name(usePresence, \"usePresence\");\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\n__name(setRef, \"setRef\");\nfunction useStableComposedRefs(...refs) {\n  const refsRef = React2.useRef(refs);\n  refsRef.current = refs;\n  return React2.useCallback((node) => {\n    const currentRefs = refsRef.current;\n    let hasCleanup = false;\n    const cleanups = currentRefs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup === \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup === \"function\") {\n            cleanup();\n          } else {\n            setRef(currentRefs[i], null);\n          }\n        }\n      };\n    }\n  }, []);\n}\n__name(useStableComposedRefs, \"useStableComposedRefs\");\nfunction getAnimationName(styles) {\n  return styles?.animationName || \"none\";\n}\n__name(getAnimationName, \"getAnimationName\");\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\n__name(getElementRef, \"getElementRef\");\nvar Root = Presence;\nexport {\n  Presence,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"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"}