import { defineComponent, computed, reactive, onMounted, nextTick } from 'vue';
import styles from './index.module.less';
// 底部拖动区域
export default defineComponent({
  name: 'dragBom',
  emits: ["guideDone"],
	props: {
		/** 是否显示引导 */
		showGuide: {
			type: Boolean,
			default: false,
		},
	},
  setup(props, { emit }) {
    const data = reactive({
      guidePos: "bottom" as "bottom" | "left" | "right" | "top",
    });

    const initGuidePos = () => {
      const pageHeight = document.documentElement.clientHeight || document.body.clientHeight;
      const pageWidth = document.documentElement.clientWidth || document.body.clientWidth;
      const guideHeight = document.querySelector('.bom_guide')?.clientHeight || 0;
      const guideWidth = document.querySelector('.bom_guide')?.clientWidth || 0;
      const dragBBox = document.querySelector('.bom_drag')?.getBoundingClientRect();
      const dragTop = dragBBox?.top || 0;
      const dragLeft = dragBBox?.left || 0;
      // 引导页出现在下边
      if (pageHeight - dragTop < guideHeight + 20) {
        data.guidePos = "top"
      } else {
        // 引导页出现在左边or右边
        data.guidePos = dragLeft > guideWidth ? "left" : "right"
      }
    }
    onMounted(() => {
      console.log('拖动11')
      nextTick(() => {
        setTimeout(() => {
          initGuidePos();
        }, 0);
      });
    });
    return () => (
      <>
        <div class={[styles.dragBom, 'bom_drag']}>
          <div class={styles.box}></div>
          <div class={[styles.box, styles.right]}></div>
        </div>
        {
          props.showGuide && 
          <div class={[styles.guide, data.guidePos === "top" && styles.guideTop, data.guidePos === "left" && styles.guideLeft, data.guidePos === "right" && styles.guideRight, 'bom_guide']} onClick={() => emit("guideDone")}>
            <div class={styles.guideBg}></div>
            <div class={styles.guideDone}></div>
          </div>          
        }

      </>
    );
  }
});
