UNPKG

@liveblocks/react-ui

Version:

A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.

1 lines 1.4 kB
{"version":3,"file":"use-refs.cjs","sources":["../../src/utils/use-refs.ts"],"sourcesContent":["import type { MutableRefObject, Ref, RefCallback } from \"react\";\nimport { useCallback } from \"react\";\n\nfunction applyRef<T>(ref: Ref<T>, value: T) {\n if (value) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref && \"current\" in ref) {\n (ref as MutableRefObject<T>).current = value;\n }\n }\n}\n\nfunction mergeRefs<T>(value: T, ...refs: Ref<T>[]) {\n for (const ref of refs) {\n applyRef(ref, value);\n }\n}\n\nexport function useRefs<T>(...refs: Ref<T>[]): RefCallback<T> {\n // We want to compare the individual refs themselves, not the surrounding array\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback((value: T) => mergeRefs(value, ...refs), refs);\n}\n"],"names":["useCallback"],"mappings":";;;;AAGA,SAAS,QAAA,CAAY,KAAa,KAAU,EAAA;AAC1C,EAAA,IAAI,KAAO,EAAA;AACT,IAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,MAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,KACX,MAAA,IAAW,GAAO,IAAA,SAAA,IAAa,GAAK,EAAA;AAClC,MAAC,IAA4B,OAAU,GAAA,KAAA,CAAA;AAAA,KACzC;AAAA,GACF;AACF,CAAA;AAEA,SAAS,SAAA,CAAa,UAAa,IAAgB,EAAA;AACjD,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAAA,GACrB;AACF,CAAA;AAEO,SAAS,WAAc,IAAgC,EAAA;AAG5D,EAAO,OAAAA,iBAAA,CAAY,CAAC,KAAa,KAAA,SAAA,CAAU,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA,CAAA;AAClE;;;;"}