{"version":3,"file":"Button.mjs","sources":["../../../../../../packages/components/button/src/Button.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { VNode } from 'vue';\nimport type { ButtonType } from './interface';\nimport { devWarning, flattenChildren, initDefaultProps } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  onBeforeUnmount,\n  onMounted,\n  onUpdated,\n  shallowRef,\n  Text,\n  watch,\n  watchEffect,\n} from 'vue';\nimport { useInjectDisabled } from '../../config-provider';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport { useCompactItemContext } from '../../space';\nimport { Wave } from '../../wave';\nimport useStyle from '../style';\nimport { GroupSizeContext } from './context';\nimport LoadingIcon from './LoadingIcon';\nimport { buttonProps } from './props';\n\ntype Loading = boolean | number;\n\nconst rxTwoCNChar = /^[\\u4E00-\\u9FA5]{2}$/;\nconst isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\n\nfunction isUnBorderedButtonType(type: ButtonType | undefined) {\n  return type === 'text' || type === 'link';\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AButton',\n  inheritAttrs: false,\n  __ANT_BUTTON: true,\n  props: initDefaultProps(buttonProps(), { type: 'default' }),\n  slots: Object as CustomSlotsType<{\n    icon: any\n    default: any\n  }>,\n  // emits: ['click', 'mousedown'],\n  setup(props, { slots, attrs, emit, expose }) {\n    const { prefixCls, autoInsertSpaceInButton, direction, size } = useConfigInject('btn', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const groupSizeContext = GroupSizeContext.useInject();\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => props.disabled ?? disabledContext.value);\n    const buttonNodeRef = shallowRef<HTMLElement>(null);\n    const delayTimeoutRef = shallowRef(undefined);\n    let isNeedInserted = false;\n\n    const innerLoading = shallowRef<Loading>(false);\n    const hasTwoCNChar = shallowRef(false);\n\n    const autoInsertSpace = computed(() => autoInsertSpaceInButton.value !== false);\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n\n    // =============== Update Loading ===============\n    const loadingOrDelay = computed(() =>\n      typeof props.loading === 'object' && props.loading.delay\n        ? props.loading.delay || true\n        : !!props.loading,\n    );\n\n    watch(\n      loadingOrDelay,\n      (val) => {\n        clearTimeout(delayTimeoutRef.value);\n        if (typeof loadingOrDelay.value === 'number') {\n          delayTimeoutRef.value = setTimeout(() => {\n            innerLoading.value = val;\n          }, loadingOrDelay.value);\n        } else {\n          innerLoading.value = val;\n        }\n      },\n      {\n        immediate: true,\n      },\n    );\n\n    const classes = computed(() => {\n      const { type, shape = 'default', ghost, block, danger, success } = props;\n      const pre = prefixCls.value;\n\n      const sizeClassNameMap = { large: 'lg', small: 'sm', middle: undefined };\n      const sizeFullname = compactSize.value || groupSizeContext?.size || size.value;\n      const sizeCls = sizeFullname ? sizeClassNameMap[sizeFullname] || '' : '';\n\n      return [\n        compactItemClassnames.value,\n        {\n          [hashId.value]: true,\n          [`${pre}`]: true,\n          [`${pre}-${shape}`]: shape !== 'default' && shape,\n          [`${pre}-${type}`]: type,\n          [`${pre}-${sizeCls}`]: sizeCls,\n          [`${pre}-loading`]: innerLoading.value,\n          [`${pre}-background-ghost`]: ghost && !isUnBorderedButtonType(type),\n          [`${pre}-two-chinese-chars`]: hasTwoCNChar.value && autoInsertSpace.value,\n          [`${pre}-block`]: block,\n          [`${pre}-dangerous`]: !!danger,\n          [`${pre}-warning`]: !!props.warning,\n          [`${pre}-success`]: !!success,\n          [`${pre}-rtl`]: direction.value === 'rtl',\n        },\n      ];\n    });\n\n    const fixTwoCNChar = () => {\n      // Fix for HOC usage like <FormatMessage />\n      const node = buttonNodeRef.value!;\n      if (!node || autoInsertSpaceInButton.value === false)\n        return;\n\n      const buttonText = node.textContent;\n\n      if (isNeedInserted && isTwoCNChar(buttonText)) {\n        if (!hasTwoCNChar.value)\n          hasTwoCNChar.value = true;\n      } else if (hasTwoCNChar.value) {\n        hasTwoCNChar.value = false;\n      }\n    };\n    const handleClick = (event: Event) => {\n      // https://github.com/ant-design/ant-design/issues/30207\n      if (innerLoading.value || mergedDisabled.value) {\n        event.preventDefault();\n        return;\n      }\n      emit('click', event);\n    };\n    const handleMousedown = (event: Event) => {\n      emit('mousedown', event);\n    };\n\n    const insertSpace = (child: VNode, needInserted: boolean) => {\n      const SPACE = needInserted ? ' ' : '';\n      if (child.type === Text) {\n        let text = (child.children as string).trim();\n        if (isTwoCNChar(text))\n          text = text.split('').join(SPACE);\n\n        return <span>{text}</span>;\n      }\n      return child;\n    };\n\n    watchEffect(() => {\n      devWarning(\n        !(props.ghost && isUnBorderedButtonType(props.type)),\n        'Button',\n        '`link` or `text` button can\\'t be a `ghost` button.',\n      );\n    });\n\n    onMounted(fixTwoCNChar);\n    onUpdated(fixTwoCNChar);\n\n    onBeforeUnmount(() => {\n      delayTimeoutRef.value && clearTimeout(delayTimeoutRef.value);\n    });\n\n    const focus = () => {\n      buttonNodeRef.value?.focus();\n    };\n    const blur = () => {\n      buttonNodeRef.value?.blur();\n    };\n    expose({\n      focus,\n      blur,\n    });\n\n    return () => {\n      const { icon = slots.icon?.() } = props;\n      const children = flattenChildren(slots.default?.());\n\n      isNeedInserted = children.length === 1 && !icon && !isUnBorderedButtonType(props.type);\n\n      const { type, htmlType, href, title, target } = props;\n\n      const iconType = innerLoading.value ? 'loading' : icon;\n      const getButtonProps = {\n        ...attrs,\n        title,\n        disabled: mergedDisabled.value,\n        class: [\n          classes.value,\n          attrs.class,\n          { [`${prefixCls.value}-icon-only`]: children.length === 0 && !!iconType },\n        ],\n        onClick: handleClick,\n        onMousedown: handleMousedown,\n      };\n      // https://github.com/vueComponent/ant-design-vue/issues/4930\n      if (!mergedDisabled.value)\n        delete getButtonProps.disabled;\n\n      const iconNode\n        = icon && !innerLoading.value\n          ? (\n              icon\n            )\n          : (\n              <LoadingIcon\n                existIcon={!!icon}\n                prefixCls={prefixCls.value}\n                loading={!!innerLoading.value}\n              />\n            );\n\n      const kids = children.map(child =>\n        insertSpace(child, isNeedInserted && autoInsertSpace.value),\n      );\n\n      if (href !== undefined) {\n        return wrapSSR(\n          <a {...getButtonProps} href={href} target={target} ref={buttonNodeRef}>\n            {iconNode}\n            {kids}\n          </a>,\n        );\n      }\n\n      let buttonNode = (\n        <button {...getButtonProps} ref={buttonNodeRef} type={htmlType}>\n          {iconNode}\n          {kids}\n        </button>\n      );\n\n      if (!isUnBorderedButtonType(type)) {\n        buttonNode = (\n          <Wave ref=\"wave\" disabled={!!innerLoading.value}>\n            {buttonNode}\n          </Wave>\n        );\n      }\n\n      return wrapSSR(buttonNode);\n    };\n  },\n});\n"],"names":["rxTwoCNChar","isTwoCNChar","test","bind","isUnBorderedButtonType","type","compatConfig","MODE","name","inheritAttrs","__ANT_BUTTON","props","initDefaultProps","buttonProps","slots","Object","setup","attrs","emit","expose","prefixCls","autoInsertSpaceInButton","direction","size","useConfigInject","wrapSSR","hashId","useStyle","groupSizeContext","GroupSizeContext","useInject","disabledContext","useInjectDisabled","mergedDisabled","computed","disabled","value","buttonNodeRef","shallowRef","delayTimeoutRef","undefined","isNeedInserted","innerLoading","hasTwoCNChar","autoInsertSpace","compactSize","compactItemClassnames","useCompactItemContext","loadingOrDelay","loading","delay","watch","val","clearTimeout","setTimeout","immediate","classes","shape","ghost","block","danger","success","pre","sizeClassNameMap","large","small","middle","sizeFullname","sizeCls","warning","fixTwoCNChar","node","buttonText","textContent","handleClick","event","preventDefault","handleMousedown","insertSpace","child","needInserted","SPACE","Text","text","children","trim","split","join","_createVNode","watchEffect","devWarning","onMounted","onUpdated","onBeforeUnmount","focus","blur","icon","flattenChildren","default","length","htmlType","href","title","target","iconType","getButtonProps","class","onClick","onMousedown","iconNode","LoadingIcon","kids","map","buttonNode","_buttonNode","Wave"],"mappings":"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"}