{"version":3,"file":"overlay.mjs","sources":["../../../../../../packages/components/overlay/src/overlay.ts"],"sourcesContent":["import { createVNode, defineComponent, renderSlot, h } from 'vue'\r\nimport { PatchFlags } from '@sgui-plus/utils/vnode'\r\nimport { useSameTarget } from '@sgui-plus/hooks'\r\nimport { buildProps, definePropType } from '@sgui-plus/utils/props'\r\n\r\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\r\nimport type { ZIndexProperty } from 'csstype'\r\n\r\nexport const overlayProps = buildProps({\r\n  mask: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  customMaskEvent: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  overlayClass: {\r\n    type: definePropType<string | string[] | Record<string, boolean>>([\r\n      String,\r\n      Array,\r\n      Object,\r\n    ]),\r\n  },\r\n  zIndex: {\r\n    type: definePropType<ZIndexProperty>([String, Number]),\r\n  },\r\n} as const)\r\nexport type OverlayProps = ExtractPropTypes<typeof overlayProps>\r\n\r\nexport const overlayEmits = {\r\n  click: (evt: MouseEvent) => evt instanceof MouseEvent,\r\n}\r\nexport type OverlayEmits = typeof overlayEmits\r\n\r\nexport default defineComponent({\r\n  name: 'SgOverlay',\r\n\r\n  props: overlayProps,\r\n  emits: overlayEmits,\r\n\r\n  setup(props, { slots, emit }) {\r\n    const onMaskClick = (e: MouseEvent) => {\r\n      emit('click', e)\r\n    }\r\n\r\n    const { onClick, onMousedown, onMouseup } = useSameTarget(\r\n      props.customMaskEvent ? undefined : onMaskClick\r\n    )\r\n\r\n    // init here\r\n    return () => {\r\n      // when the vnode meets the same structure but with different change trigger\r\n      // it will not automatically update, thus we simply use h function to manage updating\r\n      return props.mask\r\n        ? createVNode(\r\n            'div',\r\n            {\r\n              class: ['sg-overlay', props.overlayClass],\r\n              style: {\r\n                zIndex: props.zIndex,\r\n              },\r\n              onClick,\r\n              onMousedown,\r\n              onMouseup,\r\n            },\r\n            [renderSlot(slots, 'default')],\r\n            PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS,\r\n            ['onClick', 'onMouseup', 'onMousedown']\r\n          )\r\n        : h(\r\n            'div',\r\n            {\r\n              class: props.overlayClass,\r\n              style: {\r\n                zIndex: props.zIndex,\r\n                position: 'fixed',\r\n                top: '0px',\r\n                right: '0px',\r\n                bottom: '0px',\r\n                left: '0px',\r\n              } as CSSProperties,\r\n            },\r\n            [renderSlot(slots, 'default')]\r\n          )\r\n    }\r\n  },\r\n})\r\n"],"names":[],"mappings":";;;;;;AAIY,MAAC,YAAY,GAAG,UAAU,CAAC;AACvC,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO,EAAE,KAAK;AAClB,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,IAAI,IAAI,EAAE,cAAc,CAAC;AACzB,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC,EAAE;AACS,MAAC,YAAY,GAAG;AAC5B,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,YAAY,UAAU;AAC3C,EAAE;AACF,cAAe,eAAe,CAAC;AAC/B,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;AAChC,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK;AAC/B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvB,KAAK,CAAC;AACN,IAAI,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC;AAC5G,IAAI,OAAO,MAAM;AACjB,MAAM,OAAO,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE;AAC7C,QAAQ,KAAK,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;AACjD,QAAQ,KAAK,EAAE;AACf,UAAU,MAAM,EAAE,KAAK,CAAC,MAAM;AAC9B,SAAS;AACT,QAAQ,OAAO;AACf,QAAQ,WAAW;AACnB,QAAQ,SAAS;AACjB,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACrJ,QAAQ,KAAK,EAAE,KAAK,CAAC,YAAY;AACjC,QAAQ,KAAK,EAAE;AACf,UAAU,MAAM,EAAE,KAAK,CAAC,MAAM;AAC9B,UAAU,QAAQ,EAAE,OAAO;AAC3B,UAAU,GAAG,EAAE,KAAK;AACpB,UAAU,KAAK,EAAE,KAAK;AACtB,UAAU,MAAM,EAAE,KAAK;AACvB,UAAU,IAAI,EAAE,KAAK;AACrB,SAAS;AACT,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzC,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;;;;"}