{"version":3,"file":"Wave.cjs","sources":["../../../../../../packages/components/wave/src/Wave.tsx"],"sourcesContent":["import { classNames, findDOMNode, isVisible } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  watch,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport useStyle from '../style';\nimport useWave from './useWave';\n\nexport interface WaveProps {\n  disabled?: boolean\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VcWave',\n  props: {\n    disabled: Boolean,\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const { prefixCls, wave } = useConfigInject('wave', props);\n\n    // ============================== Style ===============================\n    const [, hashId] = useStyle(prefixCls);\n\n    // =============================== Wave ===============================\n    const showWave = useWave(\n      computed(() => classNames(prefixCls.value, hashId.value)),\n      wave,\n    );\n    let onClick: (e: MouseEvent) => void;\n    const clear = () => {\n      const node = findDOMNode(instance) as HTMLElement;\n      node.removeEventListener('click', onClick, true);\n    };\n\n    onMounted(() => {\n      watch(\n        () => props.disabled,\n        () => {\n          clear();\n          nextTick(() => {\n            const node: HTMLElement = findDOMNode(instance);\n            node?.removeEventListener('click', onClick, true);\n\n            if (!node || node.nodeType !== 1 || props.disabled)\n              return;\n\n            // Click handler\n            onClick = (e: MouseEvent) => {\n              // Fix radio button click twice\n              if (\n                (e.target as HTMLElement).tagName === 'INPUT'\n                || !isVisible(e.target as HTMLElement)\n                // No need wave\n                || !node.getAttribute\n                || node.getAttribute('disabled')\n                || (node as HTMLInputElement).disabled\n                || node.className.includes('disabled')\n                || node.className.includes('-leave')\n              ) {\n                return;\n              }\n\n              showWave();\n            };\n\n            // Bind events\n            node.addEventListener('click', onClick, true);\n          });\n        },\n        {\n          immediate: true,\n          flush: 'post',\n        },\n      );\n    });\n    onBeforeUnmount(() => {\n      clear();\n    });\n\n    return () => {\n      // ============================== Render ==============================\n      const children = slots.default?.()[0];\n      return children;\n    };\n  },\n});\n"],"names":["defineComponent","compatConfig","MODE","name","props","disabled","Boolean","setup","slots","instance","getCurrentInstance","prefixCls","wave","useConfigInject","hashId","useStyle","showWave","useWave","computed","classNames","value","onClick","clear","node","findDOMNode","removeEventListener","onMounted","watch","nextTick","nodeType","e","target","tagName","isVisible","getAttribute","className","includes","addEventListener","immediate","flush","onBeforeUnmount","children","default"],"mappings":"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"}