{"version":3,"file":"forward-ref.mjs","sources":["../../../../../../packages/components/tooltip-v2/src/forward-ref.tsx"],"sourcesContent":["import { Fragment, defineComponent, ref } from 'vue'\nimport {\n  buildProps,\n  composeRefs,\n  definePropType,\n  ensureOnlyChild,\n} from '@lit-element/utils'\n\nimport type { ExtractPropTypes, VNodeArrayChildren } from 'vue'\n\nexport type RefSetter = (el: HTMLElement | null) => void\n\nexport const forwardRefProps = buildProps({\n  setRef: { type: definePropType<RefSetter>(Function), required: true },\n  onlyChild: Boolean,\n} as const)\n\nexport type ForwardRefProps = ExtractPropTypes<typeof forwardRefProps>\n\n// TODO: consider make this component a reusable component without the only child feature.\nexport default defineComponent({\n  props: forwardRefProps,\n  setup(props, { slots }) {\n    const fragmentRef = ref()\n    const setRef = composeRefs(fragmentRef, (el) => {\n      // vue fragments is represented as a text element.\n      // The first element sibling should be the first element children of fragment.\n      // This is how we get the element.\n      if (el) {\n        props.setRef(\n          (el as HTMLElement).nextElementSibling as HTMLElement | null\n        )\n      } else {\n        props.setRef(null)\n      }\n    })\n    return () => {\n      const [firstChild] = slots.default?.() || []\n      const child = props.onlyChild\n        ? ensureOnlyChild(firstChild.children as VNodeArrayChildren)\n        : firstChild.children\n      // Dunno why the ref for jsx complains about the typing issue which was not\n      // in template\n      return <Fragment ref={setRef as any}>{child}</Fragment>\n    }\n  },\n})\n"],"names":["forwardRefProps","buildProps","setRef","type","definePropType","Function","required","onlyChild","Boolean","props","setup","slots","fragmentRef","_createVNode","_Fragment","firstChild"],"mappings":";;;;;;AAYaA,MAAAA,eAAe,GAAGC,UAAU,CAAC;AACxCC,EAAAA,MAAM,EAAE;AAAEC,IAAAA,IAAI,EAAEC,cAAc,CAAYC,QAAQ,CAAC;AAAEC,IAAAA,QAAQ,EAAE,IAAA;GAAM;AACrEC,EAAAA,SAAS,EAAEC,OAAAA;AACb,CAAU,EAAC;AAIX,iBAAA,eAAA,CAAA;AACA,EAAA,KAAA,EAAA;AACEC,EAAAA,KAAK,MAAiB,EAAA;IACjBC;AAAUC,GAAAA,EAAAA;AAAM,IAAG,MAAA,WAAA,GAAA,GAAA,EAAA,CAAA;AACtB,IAAA,MAAMC,MAAW,GAAA,WAAQ,CAAA,WAAA,EAAA,CAAA,EAAA,KAAA;AACzB,MAAA,IAAMV;AACJ,QAAA,KAAA,CAAA,MAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAA;AACA,OAAA,MAAA;AACA,QAAA,KAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA;AACA,OAAA;AACEO,KAAAA,CAAAA,CAAAA;AAGF,IAAA,OAAO,MAAA;AACLA,MAAAA,IAAAA,EAAAA,CAAK;AACP,MAAA,MAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,EAAA,GAAA,KAAA,CAAA,OAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,EAAA,CAAA;AACF,MAAE,MAAA,KAAA,GAAA,KAAA,CAAA,SAAA,GAAA,eAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,UAAA,CAAA,QAAA,CAAA;AACF,MAAA,OAAaI,WAAA,CAAAC,QAAA,EAAA;QACL,KAACC,EAAU,MAAA;AACjB,OAAA,EAAA,CAAA,KAAW,CAAA,CAAA,CAAA;AAGX,KAAA,CAAA;AACA,GAAA;;;;;"}