{"version":3,"file":"toast.vue2.cjs","sources":["../../../components/toast/toast.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, nextTick, onMounted, reactive } from 'vue'\n\nimport { createIconProp, useIcons, useNameHelper, useProps, useZIndex } from '@vexip-ui/config'\nimport { isFunction } from '@vexip-ui/utils'\nimport { toastProps } from './props'\nimport { effectiveTypes } from './symbol'\n\nimport type { ToastOptions, ToastType } from './symbol'\n\ndefineOptions({ name: 'Toast' })\n\nconst nh = useNameHelper('toast')\n\nconst _props = defineProps(toastProps)\nconst props = useProps('toast', _props, {\n  bodyWidth: 100,\n  icon: createIconProp(),\n  iconProps: () => ({}),\n  position: 'center',\n  transitionName: () => nh.ns('ease'),\n  closable: false,\n  maskClose: false,\n  showMask: false,\n  maskClass: null,\n  maskStyle: null,\n  renderer: {\n    default: null,\n    isFunc: true,\n    static: true,\n  },\n  parseHtml: false,\n})\n\nconst getIndex = useZIndex()\nconst icons = useIcons()\n\nconst predefinedIcons = computed(() => ({\n  success: icons.value.success,\n  warning: icons.value.warning,\n  error: icons.value.error,\n  loading: icons.value.loading,\n}))\n\nconst state = reactive({\n  visible: false,\n  zIndex: 0,\n  type: null as ToastType | null,\n  content: '',\n  icon: props.icon,\n  iconProps: props.iconProps as any,\n  position: props.position,\n  transition: props.transitionName,\n  closable: props.closable,\n  maskClose: props.maskClose,\n  showMask: props.showMask,\n  maskClass: props.maskClass as any,\n  maskStyle: props.maskStyle as any,\n  parseHtml: props.parseHtml,\n  textOnly: false,\n  renderer: props.renderer,\n  onClose: null as (() => void) | null,\n})\n\nconst mountedPromise = new Promise<void>(resolve => {\n  onMounted(() => {\n    nextTick(resolve)\n  })\n})\n\ndefineExpose({ state, openToast, closeToast, handleReset })\n\nasync function openToast(options: ToastOptions) {\n  await mountedPromise\n\n  state.zIndex = getIndex()\n  state.type = options.type ?? null\n  state.content = options.content ?? ''\n  state.icon = options.icon ?? props.icon\n  state.iconProps = options.iconProps ?? props.iconProps\n  state.position = options.position ?? props.position\n  state.transition = options.transitionName ?? props.transitionName\n  state.closable = options.closable ?? props.closable\n  state.maskClose = options.maskClose ?? props.maskClose\n  state.showMask = options.showMask ?? props.showMask\n  state.maskClass = options.maskClass ?? props.maskClass\n  state.maskStyle = options.maskStyle ?? props.maskStyle\n  state.parseHtml = options.parseHtml ?? props.parseHtml\n  state.renderer = isFunction(options.renderer) ? options.renderer : props.renderer\n  state.onClose = options.onClose || null\n\n  state.textOnly = !state.icon && !(state.type && effectiveTypes.includes(state.type))\n\n  if (isFunction(state.renderer)) {\n    const render = state.renderer\n\n    state.renderer = () => render(options)\n    state.textOnly = false\n  }\n\n  state.visible = true\n}\n\nfunction closeToast() {\n  state.visible = false\n\n  if (isFunction(state.onClose)) {\n    state.onClose()\n  }\n}\n\nfunction handleReset() {\n  if (state.visible) return\n\n  state.type = null\n  state.content = ''\n  state.icon = props.icon\n  state.iconProps = props.iconProps\n  state.position = props.position\n  state.transition = props.transitionName\n  state.closable = props.closable\n  state.maskClose = props.maskClose\n  state.showMask = props.showMask\n  state.maskClass = props.maskClass\n  state.maskStyle = props.maskStyle\n  state.parseHtml = props.parseHtml\n  state.textOnly = false\n  state.renderer = props.renderer\n  state.onClose = null\n}\n\nfunction handleWrapperClick() {\n  if (state.visible && state.closable) {\n    closeToast()\n  }\n}\n\nfunction handleMaskClick() {\n  if (state.visible && state.maskClose) {\n    closeToast()\n  }\n}\n</script>\n\n<template>\n  <div\n    :class=\"{\n      [nh.b()]: true,\n      [nh.bs('vars')]: true,\n      [nh.bm('text-only')]: state.textOnly\n    }\"\n    role=\"alert\"\n    :style=\"{\n      zIndex: state.zIndex\n    }\"\n    aria-atomic=\"true\"\n    aria-live=\"assertive\"\n  >\n    <Transition :name=\"nh.ns('fade')\">\n      <div\n        v-if=\"state.showMask && state.visible\"\n        :class=\"[nh.be('mask'), state.maskClass]\"\n        :style=\"state.maskStyle\"\n        @click=\"handleMaskClick\"\n        @wheel.stop.prevent\n      ></div>\n    </Transition>\n    <Transition :name=\"state.transition\">\n      <div\n        v-if=\"state.visible\"\n        :class=\"{\n          [nh.be('wrapper')]: true,\n          [nh.bem('wrapper', state.position)]: state.position !== 'center',\n          [nh.bem('wrapper', 'closable')]: state.closable\n        }\"\n        @click=\"handleWrapperClick\"\n        @wheel.stop.prevent\n      >\n        <Renderer v-if=\"isFunction(state.renderer)\" :renderer=\"state.renderer\"></Renderer>\n        <template v-else>\n          <div\n            v-if=\"state.icon || (state.type && effectiveTypes.includes(state.type))\"\n            :class=\"nh.be('icon')\"\n          >\n            <Icon\n              v-if=\"state.icon\"\n              :icon=\"state.icon\"\n              :scale=\"1.8\"\n              v-bind=\"state.iconProps\"\n            ></Icon>\n            <Icon\n              v-else\n              v-bind=\"{ ...predefinedIcons[state.type!], scale: 1.8, ...state.iconProps }\"\n            ></Icon>\n          </div>\n          <div v-if=\"state.parseHtml\" :class=\"nh.be('content')\" v-html=\"state.content\"></div>\n          <div v-else :class=\"nh.be('content')\">\n            {{ state.content }}\n          </div>\n        </template>\n      </div>\n    </Transition>\n  </div>\n</template>\n"],"names":["nh","useNameHelper","_props","__props","props","useProps","createIconProp","getIndex","useZIndex","icons","useIcons","predefinedIcons","computed","state","reactive","mountedPromise","resolve","onMounted","nextTick","__expose","openToast","closeToast","handleReset","options","isFunction","effectiveTypes","render","handleWrapperClick","handleMaskClick","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_createVNode","_Transition","_createBlock","Renderer","_Fragment","_openBlock","_mergeProps","Icon","_normalizeProps","_toDisplayString"],"mappings":"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"}