{"version":3,"names":["useRef","useSharedValue","getShadowNodeWrapperFromRef","makeShareableCloneRecursive","shareableMappingCache","Platform","findNodeHandle","isFabric","IS_FABRIC","getComponentOrScrollable","component","getNativeScrollRef","getScrollableNode","getTagValueFunction","useAnimatedRef","tag","viewName","ref","current","fun","value","OS","_viewConfig","viewConfig","uiViewClassName","animatedRefShareableHandle","__init","f","set"],"sources":["useAnimatedRef.ts"],"sourcesContent":["'use strict';\nimport type { Component } from 'react';\nimport { useRef } from 'react';\nimport { useSharedValue } from './useSharedValue';\nimport type { AnimatedRef, AnimatedRefOnUI } from './commonTypes';\nimport type { ShadowNodeWrapper } from '../commonTypes';\nimport { getShadowNodeWrapperFromRef } from '../fabricUtils';\nimport { makeShareableCloneRecursive } from '../shareables';\nimport { shareableMappingCache } from '../shareableMappingCache';\nimport { Platform, findNodeHandle } from 'react-native';\nimport type { ScrollView, FlatList } from 'react-native';\nimport { isFabric } from '../PlatformChecker';\n\nconst IS_FABRIC = isFabric();\n\ninterface MaybeScrollableComponent extends Component {\n getNativeScrollRef?: FlatList['getNativeScrollRef'];\n getScrollableNode?:\n | ScrollView['getScrollableNode']\n | FlatList['getScrollableNode'];\n viewConfig?: {\n uiViewClassName?: string;\n };\n}\n\nfunction getComponentOrScrollable(component: MaybeScrollableComponent) {\n if (IS_FABRIC && component.getNativeScrollRef) {\n return component.getNativeScrollRef();\n } else if (!IS_FABRIC && component.getScrollableNode) {\n return component.getScrollableNode();\n }\n return component;\n}\n\nconst getTagValueFunction = IS_FABRIC\n ? getShadowNodeWrapperFromRef\n : findNodeHandle;\n\n/**\n * Lets you get a reference of a view that you can use inside a worklet.\n *\n * @returns An object with a `.current` property which contains an instance of a component.\n * @see https://docs.swmansion.com/react-native-reanimated/docs/core/useAnimatedRef\n */\nexport function useAnimatedRef<\n TComponent extends Component\n>(): AnimatedRef {\n const tag = useSharedValue(-1);\n const viewName = useSharedValue(null);\n\n const ref = useRef>();\n\n if (!ref.current) {\n const fun: AnimatedRef = >((\n component\n ) => {\n // enters when ref is set by attaching to a component\n if (component) {\n tag.value = getTagValueFunction(getComponentOrScrollable(component));\n fun.current = component;\n // viewName is required only on iOS with Paper\n if (Platform.OS === 'ios' && !IS_FABRIC) {\n viewName.value =\n (component as MaybeScrollableComponent)?.viewConfig\n ?.uiViewClassName || 'RCTView';\n }\n }\n return tag.value;\n });\n\n fun.current = null;\n\n const animatedRefShareableHandle = makeShareableCloneRecursive({\n __init: () => {\n 'worklet';\n const f: AnimatedRefOnUI = () => tag.value;\n f.viewName = viewName;\n return f;\n },\n });\n shareableMappingCache.set(fun, animatedRefShareableHandle);\n ref.current = fun;\n }\n\n return ref.current;\n}\n"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,MAAM,QAAQ,OAAO;AAC9B,SAASC,cAAc,QAAQ,kBAAkB;AAGjD,SAASC,2BAA2B,QAAQ,gBAAgB;AAC5D,SAASC,2BAA2B,QAAQ,eAAe;AAC3D,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,QAAQ,EAAEC,cAAc,QAAQ,cAAc;AAEvD,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,MAAMC,SAAS,GAAGD,QAAQ,EAAE;AAY5B,SAASE,wBAAwBA,CAACC,SAAmC,EAAE;EACrE,IAAIF,SAAS,IAAIE,SAAS,CAACC,kBAAkB,EAAE;IAC7C,OAAOD,SAAS,CAACC,kBAAkB,EAAE;EACvC,CAAC,MAAM,IAAI,CAACH,SAAS,IAAIE,SAAS,CAACE,iBAAiB,EAAE;IACpD,OAAOF,SAAS,CAACE,iBAAiB,EAAE;EACtC;EACA,OAAOF,SAAS;AAClB;AAEA,MAAMG,mBAAmB,GAAGL,SAAS,GACjCN,2BAA2B,GAC3BI,cAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,cAAcA,CAAA,EAED;EAC3B,MAAMC,GAAG,GAAGd,cAAc,CAAoC,CAAC,CAAC,CAAC;EACjE,MAAMe,QAAQ,GAAGf,cAAc,CAAgB,IAAI,CAAC;EAEpD,MAAMgB,GAAG,GAAGjB,MAAM,EAA2B;EAE7C,IAAI,CAACiB,GAAG,CAACC,OAAO,EAAE;IAChB,MAAMC,GAA4B,GAChCT,SAAS,IACN;MACH;MACA,IAAIA,SAAS,EAAE;QACbK,GAAG,CAACK,KAAK,GAAGP,mBAAmB,CAACJ,wBAAwB,CAACC,SAAS,CAAC,CAAC;QACpES,GAAG,CAACD,OAAO,GAAGR,SAAS;QACvB;QACA,IAAIL,QAAQ,CAACgB,EAAE,KAAK,KAAK,IAAI,CAACb,SAAS,EAAE;UAAA,IAAAc,WAAA;UACvCN,QAAQ,CAACI,KAAK,GACZ,CAACV,SAAS,aAATA,SAAS,wBAAAY,WAAA,GAATZ,SAAS,CAA+Ba,UAAU,cAAAD,WAAA,uBAAnDA,WAAA,CACIE,eAAe,KAAI,SAAS;QACpC;MACF;MACA,OAAOT,GAAG,CAACK,KAAK;IAClB,CAAE;IAEFD,GAAG,CAACD,OAAO,GAAG,IAAI;IAElB,MAAMO,0BAA0B,GAAGtB,2BAA2B,CAAC;MAC7DuB,MAAM,EAAEA,CAAA,KAAM;QACZ,SAAS;;QACT,MAAMC,CAAkB,GAAGA,CAAA,KAAMZ,GAAG,CAACK,KAAK;QAC1CO,CAAC,CAACX,QAAQ,GAAGA,QAAQ;QACrB,OAAOW,CAAC;MACV;IACF,CAAC,CAAC;IACFvB,qBAAqB,CAACwB,GAAG,CAACT,GAAG,EAAEM,0BAA0B,CAAC;IAC1DR,GAAG,CAACC,OAAO,GAAGC,GAAG;EACnB;EAEA,OAAOF,GAAG,CAACC,OAAO;AACpB"}