{"version":3,"file":"ref.mjs","names":["React","setRef","ref","value","hasOwnProperty","getRef","current","useCallbackRef","initialValue","callback","useState","facade","last","useForkRef","refs","useCallback","refValue","uniqueRefs","Set","forEach","forkRef","every"],"sources":["../../src/utils/ref.ts"],"sourcesContent":["import React, { type MutableRefObject, type Ref } from 'react';\n\nexport function setRef<T>(ref: Ref<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref?.hasOwnProperty('current')) {\n    // @ts-ignore\n    ref['current'] = value;\n  }\n}\n\ntype Refs = React.ReactInstance | React.RefObject<React.ReactInstance>;\n\nexport function getRef(ref: Refs): React.ReactInstance | null {\n  if (!ref) return null;\n  return 'current' in ref ? ref.current : ref;\n}\n\nexport function useCallbackRef<T>(\n  initialValue: T | null,\n  callback: (newValue: T | null, lastValue: T | null) => void,\n): MutableRefObject<T | null> {\n  const [ref] = React.useState(() => ({\n    // value\n    value: initialValue,\n    // last callback\n    callback,\n    // \"memoized\" public interface\n    facade: {\n      get current() {\n        return ref.value;\n      },\n      set current(value) {\n        const last = ref.value;\n        if (last !== value) {\n          ref.value = value;\n          ref.callback(value, last);\n        }\n      },\n    },\n  }));\n  // update callback\n  ref.callback = callback;\n\n  return ref.facade;\n}\n\nexport function useForkRef<T>(...refs: Ref<T>[]): Ref<T> {\n  return React.useCallback((refValue: any) => {\n    const uniqueRefs = [...new Set(refs)];\n    uniqueRefs.forEach((ref) => setRef(ref, refValue));\n  }, refs);\n}\n\nexport function forkRef<T>(...refs: Ref<T>[]): Ref<T> {\n  if (refs.every((ref) => ref == null)) {\n    return null;\n  }\n  return (refValue) => {\n    const uniqueRefs = [...new Set(refs)];\n    uniqueRefs.forEach((ref) => setRef(ref, refValue));\n  };\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAA2C,OAAO;AAE9D,OAAO,SAASC,MAAMA,CAAIC,GAAW,EAAEC,KAAQ,EAAE;EAC/C,IAAI,OAAOD,GAAG,KAAK,UAAU,EAAE;IAC7BA,GAAG,CAACC,KAAK,CAAC;EACZ,CAAC,MAAM,IAAID,GAAG,EAAEE,cAAc,CAAC,SAAS,CAAC,EAAE;IACzC;IACAF,GAAG,CAAC,SAAS,CAAC,GAAGC,KAAK;EACxB;AACF;AAIA,OAAO,SAASE,MAAMA,CAACH,GAAS,EAA8B;EAC5D,IAAI,CAACA,GAAG,EAAE,OAAO,IAAI;EACrB,OAAO,SAAS,IAAIA,GAAG,GAAGA,GAAG,CAACI,OAAO,GAAGJ,GAAG;AAC7C;AAEA,OAAO,SAASK,cAAcA,CAC5BC,YAAsB,EACtBC,QAA2D,EAC/B;EAC5B,MAAM,CAACP,GAAG,CAAC,GAAGF,KAAK,CAACU,QAAQ,CAAC,OAAO;IAClC;IACAP,KAAK,EAAEK,YAAY;IACnB;IACAC,QAAQ;IACR;IACAE,MAAM,EAAE;MACN,IAAIL,OAAOA,CAAA,EAAG;QACZ,OAAOJ,GAAG,CAACC,KAAK;MAClB,CAAC;MACD,IAAIG,OAAOA,CAACH,KAAK,EAAE;QACjB,MAAMS,IAAI,GAAGV,GAAG,CAACC,KAAK;QACtB,IAAIS,IAAI,KAAKT,KAAK,EAAE;UAClBD,GAAG,CAACC,KAAK,GAAGA,KAAK;UACjBD,GAAG,CAACO,QAAQ,CAACN,KAAK,EAAES,IAAI,CAAC;QAC3B;MACF;IACF;EACF,CAAC,CAAC,CAAC;EACH;EACAV,GAAG,CAACO,QAAQ,GAAGA,QAAQ;EAEvB,OAAOP,GAAG,CAACS,MAAM;AACnB;AAEA,OAAO,SAASE,UAAUA,CAAI,GAAGC,IAAc,EAAU;EACvD,OAAOd,KAAK,CAACe,WAAW,CAAEC,QAAa,IAAK;IAC1C,MAAMC,UAAU,GAAG,CAAC,GAAG,IAAIC,GAAG,CAACJ,IAAI,CAAC,CAAC;IACrCG,UAAU,CAACE,OAAO,CAAEjB,GAAG,IAAKD,MAAM,CAACC,GAAG,EAAEc,QAAQ,CAAC,CAAC;EACpD,CAAC,EAAEF,IAAI,CAAC;AACV;AAEA,OAAO,SAASM,OAAOA,CAAI,GAAGN,IAAc,EAAU;EACpD,IAAIA,IAAI,CAACO,KAAK,CAAEnB,GAAG,IAAKA,GAAG,IAAI,IAAI,CAAC,EAAE;IACpC,OAAO,IAAI;EACb;EACA,OAAQc,QAAQ,IAAK;IACnB,MAAMC,UAAU,GAAG,CAAC,GAAG,IAAIC,GAAG,CAACJ,IAAI,CAAC,CAAC;IACrCG,UAAU,CAACE,OAAO,CAAEjB,GAAG,IAAKD,MAAM,CAACC,GAAG,EAAEc,QAAQ,CAAC,CAAC;EACpD,CAAC;AACH","ignoreList":[]}