{"version":3,"file":"composeRefs.cjs","sources":["../../../../src/components/utils/composeRefs.ts"],"sourcesContent":["import type React from 'react';\n\ntype AnyRef<T> = React.Ref<T> | undefined | null;\n\nconst assignRef = <T,>(ref: AnyRef<T>, node: T | null): void => {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else if (ref) {\n    (ref as React.MutableRefObject<T | null>).current = node;\n  }\n};\n\n/**\n * Reads the ref attached to a React element across React versions without\n * triggering dev-mode deprecation warnings: React 19 carries it on\n * `element.props.ref` (and warns on `element.ref`); React 18 carries it on\n * `element.ref` (and warns on `element.props.ref`). The warning getters are\n * detectable via their `isReactWarning` marker.\n */\nexport function getElementRef<T>(element: React.ReactElement): AnyRef<T> {\n  // React 18 dev: props.ref is a warning getter — read element.ref\n  let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n  let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return (element as unknown as { ref?: React.Ref<T> }).ref;\n  }\n\n  // React 19 dev: element.ref is a warning getter — read props.ref\n  getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n  mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return (element.props as { ref?: React.Ref<T> }).ref;\n  }\n\n  // production: no warning getters — whichever holds the value\n  return (\n    (element.props as { ref?: React.Ref<T> }).ref ??\n    (element as unknown as { ref?: React.Ref<T> }).ref\n  );\n}\n\n/**\n * Composes multiple refs into one callback ref so cloneElement can attach an\n * internal ref WITHOUT discarding a ref the consumer already put on the\n * element. Null/undefined entries are skipped.\n */\nexport function composeRefs<T>(...refs: AnyRef<T>[]): React.RefCallback<T> {\n  return (node: T | null) => {\n    for (const ref of refs) {\n      assignRef(ref, node);\n    }\n  };\n}\n"],"names":[],"mappings":";;AAIA,MAAM,SAAA,GAAY,CAAK,GAAA,EAAgB,IAAA,KAAyB;AAC9D,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,IAAI,CAAA;AAAA,EACV,WAAW,GAAA,EAAK;AACd,IAAC,IAAyC,OAAA,GAAU,IAAA;AAAA,EACtD;AACF,CAAA;AASO,SAAS,cAAiB,OAAA,EAAwC;AAEvE,EAAA,IAAI,SAAS,MAAA,CAAO,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,EAAG,GAAA;AACpE,EAAA,IAAI,OAAA,GAAU,MAAA,IAAU,gBAAA,IAAoB,MAAA,IAAU,MAAA,CAAO,cAAA;AAC7D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAQ,OAAA,CAA8C,GAAA;AAAA,EACxD;AAGA,EAAA,MAAA,GAAS,MAAA,CAAO,wBAAA,CAAyB,OAAA,EAAS,KAAK,CAAA,EAAG,GAAA;AAC1D,EAAA,OAAA,GAAU,MAAA,IAAU,gBAAA,IAAoB,MAAA,IAAU,MAAA,CAAO,cAAA;AACzD,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAQ,QAAQ,KAAA,CAAiC,GAAA;AAAA,EACnD;AAGA,EAAA,OACG,OAAA,CAAQ,KAAA,CAAiC,GAAA,IACzC,OAAA,CAA8C,GAAA;AAEnD;AAOO,SAAS,eAAkB,IAAA,EAAyC;AACzE,EAAA,OAAO,CAAC,IAAA,KAAmB;AACzB,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AACF;;;;;"}