forward-ref.mjs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { defineComponent, ref, createVNode, Fragment } from 'vue';
  2. import { ensureOnlyChild } from '../../../utils/vue/vnode.mjs';
  3. import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
  4. import { composeRefs } from '../../../utils/vue/refs.mjs';
  5. const forwardRefProps = buildProps({
  6. setRef: {
  7. type: definePropType(Function),
  8. required: true
  9. },
  10. onlyChild: Boolean
  11. });
  12. var ForwardRef = defineComponent({
  13. props: forwardRefProps,
  14. setup(props, {
  15. slots
  16. }) {
  17. const fragmentRef = ref();
  18. const setRef = composeRefs(fragmentRef, (el) => {
  19. if (el) {
  20. props.setRef(el.nextElementSibling);
  21. } else {
  22. props.setRef(null);
  23. }
  24. });
  25. return () => {
  26. var _a;
  27. const [firstChild] = ((_a = slots.default) == null ? void 0 : _a.call(slots)) || [];
  28. const child = props.onlyChild ? ensureOnlyChild(firstChild.children) : firstChild.children;
  29. return createVNode(Fragment, {
  30. "ref": setRef
  31. }, [child]);
  32. };
  33. }
  34. });
  35. export { ForwardRef as default, forwardRefProps };
  36. //# sourceMappingURL=forward-ref.mjs.map