{"version":3,"file":"overlay.mjs","sources":["../../../../../../../packages/components/overlay/src/overlay.tsx"],"sourcesContent":["import {\n  type CSSProperties,\n  type ExtractPropTypes,\n  type PropType,\n  Teleport,\n  type TeleportProps,\n  Transition,\n  defineComponent,\n  ref,\n} from 'vue'\n\n// Utils\nimport {\n  createNamespace,\n  extend,\n  getZIndexStyle,\n  isDef,\n  numericProp,\n  preventDefault,\n  truthProp,\n  unknownProp,\n} from '@xzx-design/utils'\n\nimport { useEventListener, useLazyRender } from '@xzx-design/hooks'\n\nconst [name, bem] = createNamespace('overlay')\n\nexport type OverlayThemeVars = {\n  overlayZIndex?: number | string\n  overlayBackground?: string\n}\n\nexport const overlayProps = {\n  show: Boolean,\n  zIndex: numericProp,\n  duration: numericProp,\n  className: unknownProp,\n  lockScroll: truthProp,\n  lazyRender: truthProp,\n  customStyle: Object as PropType<CSSProperties>,\n  teleport: [String, Object] as PropType<TeleportProps['to']>,\n}\n\nexport type OverlayProps = ExtractPropTypes<typeof overlayProps>\n\nexport default defineComponent({\n  name,\n\n  props: overlayProps,\n\n  setup(props, { slots }) {\n    const root = ref<HTMLElement>()\n    const lazyRender = useLazyRender(() => props.show || !props.lazyRender)\n\n    const onTouchMove = (event: TouchEvent) => {\n      if (props.lockScroll) {\n        preventDefault(event, true)\n      }\n    }\n\n    const renderOverlay = lazyRender(() => {\n      const style: CSSProperties = extend(\n        getZIndexStyle(props.zIndex),\n        props.customStyle\n      )\n\n      if (isDef(props.duration)) {\n        style.animationDuration = `${props.duration}s`\n      }\n\n      return (\n        <div\n          v-show={props.show}\n          ref={root}\n          style={style}\n          class={[bem(), props.className]}\n        >\n          {slots.default?.()}\n        </div>\n      )\n    })\n\n    // useEventListener will set passive to `false` to eliminate the warning of Chrome\n    useEventListener('touchmove', onTouchMove, {\n      target: root,\n    })\n\n    return () => {\n      const Content = (\n        <Transition\n          v-slots={{ default: renderOverlay }}\n          name=\"xzx-fade\"\n          appear\n        />\n      )\n\n      if (props.teleport) {\n        return <Teleport to={props.teleport}>{Content}</Teleport>\n      }\n\n      return Content\n    }\n  },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","bem","createNamespace","overlayProps","show","Boolean","zIndex","numericProp","duration","className","unknownProp","lockScroll","truthProp","lazyRender","customStyle","teleport","String","defineComponent","props","setup","slots","root","ref","useLazyRender","onTouchMove","event","preventDefault","renderOverlay","style","extend","getZIndexStyle","isDef","animationDuration","_withDirectives","_createVNode","default","_vShow","useEventListener","target","Content","Transition","Teleport"],"mappings":"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"}