{"version":3,"file":"button.vue2.mjs","sources":["../../../../../../packages/components/button/src/button.vue"],"sourcesContent":["<script lang=\"ts\">\n  import { getCurrentInstance, reactive, computed, defineComponent } from 'vue'\n  import { getComponentNamespace, getNamespace } from '../../../utils/global-config'\n  import { isArray, isFunction, isPromise } from '../../../utils/is'\n  import { definePropType } from '../../../utils/vue-utils'\n\n  // 方便添加动画\n  import LoadingIcon from './LoadingIcon'\n\n  export default defineComponent({\n    name: getComponentNamespace('Button'),\n    components: {\n      LoadingIcon\n    },\n    props: {\n      disabled: Boolean,\n      block: Boolean,\n      loading: Boolean,\n      loadingFill: {\n        type: Boolean,\n        default: false\n      },\n      shape: {\n        type: definePropType<'circle' | 'round'>(String),\n        default: undefined\n      },\n      link: {\n        type: Boolean,\n        default: false\n      },\n      type: {\n        type: definePropType<'primary' | 'success' | 'danger' | 'warning' | 'strong' | 'card'>(\n          String\n        ),\n        default: undefined\n      },\n      plain: {\n        type: Boolean,\n        default: false\n      },\n      size: {\n        type: definePropType<'mini' | 'small' | 'large' | 'normal'>(String),\n        default: 'normal'\n      },\n      border: {\n        type: Boolean,\n        default: true\n      }\n    },\n    emits: ['click'],\n    setup(props) {\n      const state = reactive({\n        clicked: false\n      })\n\n      const ns = getNamespace('button')\n      const cls = computed(() => {\n        const _cls = [\n          ns,\n          props.type && `${ns}--${props.type}`,\n          props.disabled && `is-disabled`,\n          props.block && `is-block`,\n          props.plain && 'is-plain',\n          props.shape && `is-${props.shape}`,\n          props.link && `is-link`,\n          props.size && `is-${props.size}`,\n          !props.border && `is-hide-border`,\n          isLoading.value && `is-loading`\n        ]\n\n        return _cls\n      })\n\n      const isLoading = computed(() => {\n        return props.loading || state.clicked\n      })\n\n      const instance = getCurrentInstance()\n\n      const execFn = (fn: Function, event: PointerEvent) => {\n        const ret = fn(event)\n        if (isPromise(ret)) {\n          state.clicked = true\n          ret.finally(() => {\n            state.clicked = false\n          })\n        }\n      }\n\n      const handleClick = async (event: PointerEvent) => {\n        // 为了兼容打开弹出层，按下entry键会重复激活弹出层\n        ;(event.target as HTMLElement).blur?.()\n\n        if (isLoading.value) return\n        const clickFn = instance?.vnode?.props?.onClick\n        // 外部注入事件，此时按钮又绑定事件。那么这里就是一个数组。\n        if (isArray(clickFn)) {\n          clickFn.forEach((fn) => execFn(fn, event))\n        } else if (isFunction(clickFn)) {\n          execFn(clickFn, event)\n        }\n      }\n      return {\n        ns,\n        cls,\n        handleClick,\n        isLoading\n      }\n    }\n  })\n</script>\n\n<template>\n  <button :class=\"cls\" type=\"button\" :disabled=\"disabled\" :hover=\"!disabled\" @click=\"handleClick\">\n    <slot></slot>\n    <LoadingIcon :loading=\"isLoading\" :ns=\"ns\" />\n  </button>\n</template>\n"],"names":[],"mappings":"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"}