{"version":3,"file":"overlay.mjs","sources":["../../../../../../packages/components/overlay/src/overlay.ts"],"sourcesContent":["import { createVNode, defineComponent, renderSlot, h } from 'vue'\nimport { useSameTarget, useNamespace } from '@hongluan-ui/hooks'\nimport { PatchFlags, buildProps, definePropType } from '@hongluan-ui/utils'\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: Boolean,\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: 'Overlay',\n\n  props: overlayProps,\n  emits: ['click'],\n\n  setup(props, { slots, emit }) {\n    const { namespace } = useNamespace('overlay')\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 ? createVNode(\n        'div',\n        {\n          class: [namespace.value, 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":";;;;;;;;AAGY,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,OAAO;AAC1B,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,SAAS;AACjB,EAAE,KAAK,EAAE,YAAY;AACrB,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC;AAClB,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;AAChC,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAClD,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,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC;AACpD,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;;;;"}