{"version":3,"file":"overlay.mjs","sources":["../../../../../packages/components/overlay/src/overlay.ts"],"sourcesContent":["import { createVNode, defineComponent, renderSlot, h, type PropType } from 'vue'\nimport { PatchFlags } from '@element-ultra/utils'\nimport { useNamespace, useSameTarget } from '@element-ultra/hooks'\n\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\n\nexport const overlayProps = {\n  mask: {\n    type: Boolean,\n    default: true\n  },\n  customMaskEvent: {\n    type: Boolean,\n    default: false\n  },\n  overlayClass: {\n    type: [String, Array, Object] as PropType<\n      string | string[] | Record<string, boolean>\n    >\n  },\n  zIndex: {\n    type: [String, Number]\n  }\n}\nexport type OverlayProps = ExtractPropTypes<typeof overlayProps>\n\nexport const overlayEmits = {\n  click: (evt: MouseEvent) => evt instanceof MouseEvent\n}\nexport type OverlayEmits = typeof overlayEmits\n\nexport default defineComponent({\n  name: 'ElOverlay',\n\n  props: overlayProps,\n  emits: overlayEmits,\n\n  setup(props, { slots, emit }) {\n    const ns = useNamespace('overlay')\n\n    const onMaskClick = (e: MouseEvent) => {\n      emit('click', e)\n    }\n    const { onClick, onMousedown, onMouseup } = useSameTarget(\n      props.customMaskEvent ? undefined : onMaskClick\n    )\n\n    // init here\n    return () => {\n      return props.mask\n        ? createVNode(\n            'div',\n            {\n              class: [ns.b(), props.overlayClass],\n              style: {\n                zIndex: props.zIndex\n              },\n              onClick,\n              onMousedown,\n              onMouseup\n            },\n            [renderSlot(slots, 'default')],\n            PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS,\n            ['onClick', 'onMouseup', 'onMousedown']\n          )\n        : h(\n            'div',\n            {\n              class: props.overlayClass,\n              style: {\n                zIndex: props.zIndex,\n                position: 'fixed',\n                top: '0px',\n                right: '0px',\n                bottom: '0px',\n                left: '0px'\n              } as CSSProperties\n            },\n            [renderSlot(slots, 'default')]\n          )\n    }\n  }\n})\n"],"names":[],"mappings":";;;;;;;AAMO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,CAAC,MAAQ,EAAA,KAAA,EAAO,MAAM,CAAA;AAAA,GAG9B;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACvB;AACF,EAAA;AAGO,MAAM,YAAe,GAAA;AAAA,EAC1B,KAAA,EAAO,CAAC,GAAA,KAAoB,GAAe,YAAA,UAAA;AAC7C,EAAA;AAGA,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,WAAA;AAAA,EAEN,KAAO,EAAA,YAAA;AAAA,EACP,KAAO,EAAA,YAAA;AAAA,EAEP,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAQ,EAAA;AAC5B,IAAM,MAAA,EAAA,GAAK,aAAa,SAAS,CAAA,CAAA;AAEjC,IAAM,MAAA,WAAA,GAAc,CAAC,CAAkB,KAAA;AACrC,MAAA,IAAA,CAAK,SAAS,CAAC,CAAA,CAAA;AAAA,KACjB,CAAA;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,WAAa,EAAA,SAAA,EAAc,GAAA,aAAA;AAAA,MAC1C,KAAA,CAAM,kBAAkB,KAAY,CAAA,GAAA,WAAA;AAAA,KACtC,CAAA;AAGA,IAAA,OAAO,MAAM;AACX,MAAA,OAAO,MAAM,IACT,GAAA,WAAA;AAAA,QACE,KAAA;AAAA,QACA;AAAA,UACE,OAAO,CAAC,EAAA,CAAG,CAAE,EAAA,EAAG,MAAM,YAAY,CAAA;AAAA,UAClC,KAAO,EAAA;AAAA,YACL,QAAQ,KAAM,CAAA,MAAA;AAAA,WAChB;AAAA,UACA,OAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA;AAAA,SACF;AAAA,QACA,CAAC,UAAA,CAAW,KAAO,EAAA,SAAS,CAAC,CAAA;AAAA,QAC7B,UAAW,CAAA,KAAA,GAAQ,UAAW,CAAA,KAAA,GAAQ,UAAW,CAAA,KAAA;AAAA,QACjD,CAAC,SAAW,EAAA,WAAA,EAAa,aAAa,CAAA;AAAA,OAExC,GAAA,CAAA;AAAA,QACE,KAAA;AAAA,QACA;AAAA,UACE,OAAO,KAAM,CAAA,YAAA;AAAA,UACb,KAAO,EAAA;AAAA,YACL,QAAQ,KAAM,CAAA,MAAA;AAAA,YACd,QAAU,EAAA,OAAA;AAAA,YACV,GAAK,EAAA,KAAA;AAAA,YACL,KAAO,EAAA,KAAA;AAAA,YACP,MAAQ,EAAA,KAAA;AAAA,YACR,IAAM,EAAA,KAAA;AAAA,WACR;AAAA,SACF;AAAA,QACA,CAAC,UAAA,CAAW,KAAO,EAAA,SAAS,CAAC,CAAA;AAAA,OAC/B,CAAA;AAAA,KACN,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}