import { defineComponent, useSlots, renderSlot, ref, SetupContext } from 'vue';
import { fullscreenProps, FullscreenProps } from './fullscreen-types';
import useKeydown from './composables/use-keydown';
import useFullscreen from './composables/use-fullscreen';
import './fullscreen.scss';

export default defineComponent({
  name: 'DFullscreen',
  props: fullscreenProps,
  emits: ['update:modelValue'],
  setup(props: FullscreenProps, ctx: SetupContext) {
    const slotElement = ref();

    useFullscreen(props, slotElement, ctx);
    useKeydown(props, ctx);

    return () => {
      const defaultSlot = renderSlot(useSlots(), 'default');
      return <div ref={slotElement}>{defaultSlot}</div>;
    };
  },
});