{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-forward-ref/index.ts"],"sourcesContent":["import { provide } from 'vue'\n\nimport type { InjectionKey, ObjectDirective, Ref } from 'vue'\n\ntype ForwardRefSetter = <T>(el: T) => void\n\nexport type ForwardRefInjectionContext = {\n  setForwardRef: ForwardRefSetter\n}\n\nexport const FORWARD_REF_INJECTION_KEY: InjectionKey<ForwardRefInjectionContext> =\n  Symbol('ForwardRef')\n\nexport const useForwardRef = <T>(forwardRef: Ref<T | null>) => {\n  const setForwardRef = (el: T) => {\n    forwardRef.value = el\n  }\n\n  provide(FORWARD_REF_INJECTION_KEY, {\n    setForwardRef,\n  })\n}\n\nexport const useForwardRefDirective = (\n  setForwardRef: ForwardRefSetter\n): ObjectDirective => {\n  return {\n    mounted(el) {\n      setForwardRef(el)\n    },\n    updated(el) {\n      setForwardRef(el)\n    },\n    unmounted() {\n      setForwardRef(null)\n    },\n  }\n}\n"],"names":[],"mappings":";;AAUa,MAAA,yBAAA,GACX,OAAO,YAAY,EAAA;AAER,MAAA,aAAA,GAAgB,CAAI,UAA8B,KAAA;AAC7D,EAAM,MAAA,aAAA,GAAgB,CAAC,EAAU,KAAA;AAC/B,IAAA,UAAA,CAAW,KAAQ,GAAA,EAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAA,OAAA,CAAQ,yBAA2B,EAAA;AAAA,IACjC,aAAA;AAAA,GACD,CAAA,CAAA;AACH,EAAA;AAEa,MAAA,sBAAA,GAAyB,CACpC,aACoB,KAAA;AACpB,EAAO,OAAA;AAAA,IACL,QAAQ,EAAI,EAAA;AACV,MAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,KAClB;AAAA,IACA,QAAQ,EAAI,EAAA;AACV,MAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,KAClB;AAAA,IACA,SAAY,GAAA;AACV,MAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AACF;;;;"}