element-plus
Version:
A Component Library for Vue 3
1 lines • 1.26 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":[],"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('elForwardRef')\n\nexport const useForwardRef = <T>(forwardRef: Ref<T | null>) => {\n const setForwardRef = ((el: T) => {\n forwardRef.value = el\n }) as ForwardRefSetter\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"],"mappings":";;;AAUA,MAAa,4BACX,OAAO,eAAe;AAExB,MAAa,iBAAoB,eAA8B;CAC7D,MAAM,kBAAkB,OAAU;AAChC,aAAW,QAAQ;;AAGrB,SAAQ,2BAA2B,EACjC,eACD,CAAC;;AAGJ,MAAa,0BACX,kBACoB;AACpB,QAAO;EACL,QAAQ,IAAI;AACV,iBAAc,GAAG;;EAEnB,QAAQ,IAAI;AACV,iBAAc,GAAG;;EAEnB,YAAY;AACV,iBAAc,KAAK;;EAEtB"}