{"version":3,"file":"overlay.mjs","sources":["../../../../../../packages/components/overlay/src/overlay.ts"],"sourcesContent":["import { createVNode, defineComponent, renderSlot, h } from 'vue'\nimport { PatchFlags } from '@element-plus/utils/vnode'\nimport { useSameTarget } from '@element-plus/hooks'\nimport { buildProps, definePropType } from '@element-plus/utils/props'\n\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { ZIndexProperty } from 'csstype'\n\nexport const overlayProps = buildProps({\n  mask: {\n    type: Boolean,\n    default: true,\n  },\n  customMaskEvent: {\n    type: Boolean,\n    default: false,\n  },\n  overlayClass: {\n    type: definePropType<string | string[] | Record<string, boolean>>([\n      String,\n      Array,\n      Object,\n    ]),\n  },\n  zIndex: {\n    type: definePropType<ZIndexProperty>([String, Number]),\n  },\n} as const)\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 onMaskClick = (e: MouseEvent) => {\n      emit('click', e)\n    }\n\n    const { onClick, onMousedown, onMouseup } = useSameTarget(\n      props.customMaskEvent ? undefined : onMaskClick\n    )\n\n    // init here\n    return () => {\n      // when the vnode meets the same structure but with different change trigger\n      // it will not automatically update, thus we simply use h function to manage updating\n      return props.mask\n        ? createVNode(\n            'div',\n            {\n              class: ['el-overlay', 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":";;;;;;MAQa,eAAe,WAAW;AAAA,EACrC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,cAAc;AAAA,IACZ,MAAM,eAA4D;AAAA,MAChE;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,EAGJ,QAAQ;AAAA,IACN,MAAM,eAA+B,CAAC,QAAQ;AAAA;AAAA;MAKrC,eAAe;AAAA,EAC1B,OAAO,CAAC,QAAoB,eAAe;AAAA;AAI7C,cAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EAEN,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,MAAM,OAAO,EAAE,OAAO,QAAQ;AAC5B,UAAM,cAAc,CAAC,MAAkB;AACrC,WAAK,SAAS;AAAA;AAGhB,UAAM,EAAE,SAAS,aAAa,cAAc,cAC1C,MAAM,kBAAkB,SAAY;AAItC,WAAO,MAAM;AAGX,aAAO,MAAM,OACT,YACE,OACA;AAAA,QACE,OAAO,CAAC,cAAc,MAAM;AAAA,QAC5B,OAAO;AAAA,UACL,QAAQ,MAAM;AAAA;AAAA,QAEhB;AAAA,QACA;AAAA,QACA;AAAA,SAEF,CAAC,WAAW,OAAO,aACnB,WAAW,QAAQ,WAAW,QAAQ,WAAW,OACjD,CAAC,WAAW,aAAa,kBAE3B,EACE,OACA;AAAA,QACE,OAAO,MAAM;AAAA,QACb,OAAO;AAAA,UACL,QAAQ,MAAM;AAAA,UACd,UAAU;AAAA,UACV,KAAK;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,MAAM;AAAA;AAAA,SAGV,CAAC,WAAW,OAAO;AAAA;AAAA;AAAA;;;;"}