@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
1 lines • 2.02 kB
Source Map (JSON)
{"version":3,"file":"ref.cjs","names":["React"],"sources":["../../../src/utils/ref.ts"],"sourcesContent":["import { isObject } from \"@yamada-ui/utils\"\nimport * as React from \"react\"\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<Y = any>(ref: React.Ref<Y> | undefined, value: Y) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<Y = any>(\n ...refs: (null | React.Ref<Y> | undefined)[]\n) {\n return function (node: null | Y) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<Y = any>(...refs: (React.Ref<Y> | undefined)[]) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<Y extends (...args: any[]) => any>(\n callback: undefined | Y,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as Y,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n}\n"],"mappings":";;;;;;;AAGA,SAAgB,YAAY,KAAmC;AAC7D,wCAAgB,IAAI,IAAI,aAAa;;AAGvC,SAAgB,UAAmB,KAA+B,OAAU;AAC1E,KAAI,OAAO,KAAM;AAEjB,KAAI,OAAO,QAAQ,YAAY;AAC7B,MAAI,MAAM;AAEV;;AAGF,KAAI;AAEF,MAAI,UAAU;SACR;AACN,QAAM,IAAI,MAAM,wBAAwB,MAAM,YAAY,IAAI,GAAG;;;AAIrE,SAAgB,UACd,GAAG,MACH;AACA,QAAO,SAAU,MAAgB;AAC/B,SAAO,KAAK,SAAS,QAAQ;AAC3B,aAAU,KAAK,KAAK;IACpB;;;AAIN,SAAgB,aAAsB,GAAG,MAAoC;AAC3E,QAAOA,MAAM,cAAc,UAAU,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC;;AAGxD,SAAgB,eACd,UACA,OAA6B,EAAE,EAC/B;CACA,MAAM,cAAcA,MAAM,OAAO,SAAS;AAE1C,OAAM,gBAAgB;AACpB,cAAY,UAAU;GACtB;AAEF,QAAOA,MAAM,cACT,GAAG,SAAS,YAAY,UAAU,GAAG,KAAK,GAE5C,KACD"}