{"ast":null,"code":"\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport raf from \"rc-util/es/raf\";\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport { TARGET_CLS } from './interface';\nimport { getTargetWaveColor } from './util';\nfunction validateNum(value) {\n  return Number.isNaN(value) ? 0 : value;\n}\nconst WaveEffect = props => {\n  const {\n    className,\n    target,\n    component\n  } = props;\n  const divRef = React.useRef(null);\n  const [color, setWaveColor] = React.useState(null);\n  const [borderRadius, setBorderRadius] = React.useState([]);\n  const [left, setLeft] = React.useState(0);\n  const [top, setTop] = React.useState(0);\n  const [width, setWidth] = React.useState(0);\n  const [height, setHeight] = React.useState(0);\n  const [enabled, setEnabled] = React.useState(false);\n  const waveStyle = {\n    left,\n    top,\n    width,\n    height,\n    borderRadius: borderRadius.map(radius => `${radius}px`).join(' ')\n  };\n  if (color) {\n    waveStyle['--wave-color'] = color;\n  }\n  function syncPos() {\n    const nodeStyle = getComputedStyle(target);\n    // Get wave color from target\n    setWaveColor(getTargetWaveColor(target));\n    const isStatic = nodeStyle.position === 'static';\n    // Rect\n    const {\n      borderLeftWidth,\n      borderTopWidth\n    } = nodeStyle;\n    setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n    setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n    setWidth(target.offsetWidth);\n    setHeight(target.offsetHeight);\n    // Get border radius\n    const {\n      borderTopLeftRadius,\n      borderTopRightRadius,\n      borderBottomLeftRadius,\n      borderBottomRightRadius\n    } = nodeStyle;\n    setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(radius => validateNum(parseFloat(radius))));\n  }\n  React.useEffect(() => {\n    if (target) {\n      // We need delay to check position here\n      // since UI may change after click\n      const id = raf(() => {\n        syncPos();\n        setEnabled(true);\n      });\n      // Add resize observer to follow size\n      let resizeObserver;\n      if (typeof ResizeObserver !== 'undefined') {\n        resizeObserver = new ResizeObserver(syncPos);\n        resizeObserver.observe(target);\n      }\n      return () => {\n        raf.cancel(id);\n        resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n      };\n    }\n  }, []);\n  if (!enabled) {\n    return null;\n  }\n  const isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: true,\n    motionAppear: true,\n    motionName: \"wave-motion\",\n    motionDeadline: 5000,\n    onAppearEnd: (_, event) => {\n      var _a;\n      if (event.deadline || event.propertyName === 'opacity') {\n        const holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n        unmount(holder).then(() => {\n          holder === null || holder === void 0 ? void 0 : holder.remove();\n        });\n      }\n      return false;\n    }\n  }, _ref => {\n    let {\n      className: motionClassName\n    } = _ref;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: divRef,\n      className: classNames(className, {\n        'wave-quick': isSmallComponent\n      }, motionClassName),\n      style: waveStyle\n    });\n  });\n};\nconst showWaveEffect = (target, info) => {\n  var _a;\n  const {\n    component\n  } = info;\n  // Skip for unchecked checkbox\n  if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n    return;\n  }\n  // Create holder\n  const holder = document.createElement('div');\n  holder.style.position = 'absolute';\n  holder.style.left = '0px';\n  holder.style.top = '0px';\n  target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n  render( /*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n    target: target\n  })), holder);\n};\nexport default showWaveEffect;","map":{"version":3,"names":["React","classNames","CSSMotion","raf","render","unmount","TARGET_CLS","getTargetWaveColor","validateNum","value","Number","isNaN","WaveEffect","props","className","target","component","divRef","useRef","color","setWaveColor","useState","borderRadius","setBorderRadius","left","setLeft","top","setTop","width","setWidth","height","setHeight","enabled","setEnabled","waveStyle","map","radius","join","syncPos","nodeStyle","getComputedStyle","isStatic","position","borderLeftWidth","borderTopWidth","offsetLeft","parseFloat","offsetTop","offsetWidth","offsetHeight","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","useEffect","id","resizeObserver","ResizeObserver","observe","cancel","disconnect","isSmallComponent","classList","contains","createElement","visible","motionAppear","motionName","motionDeadline","onAppearEnd","_","event","_a","deadline","propertyName","holder","current","parentElement","then","remove","_ref","motionClassName","ref","style","showWaveEffect","info","querySelector","checked","document","insertBefore","firstChild","Object","assign"],"sources":["/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/node_modules/antd/es/_util/wave/WaveEffect.js"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport raf from \"rc-util/es/raf\";\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport { TARGET_CLS } from './interface';\nimport { getTargetWaveColor } from './util';\nfunction validateNum(value) {\n  return Number.isNaN(value) ? 0 : value;\n}\nconst WaveEffect = props => {\n  const {\n    className,\n    target,\n    component\n  } = props;\n  const divRef = React.useRef(null);\n  const [color, setWaveColor] = React.useState(null);\n  const [borderRadius, setBorderRadius] = React.useState([]);\n  const [left, setLeft] = React.useState(0);\n  const [top, setTop] = React.useState(0);\n  const [width, setWidth] = React.useState(0);\n  const [height, setHeight] = React.useState(0);\n  const [enabled, setEnabled] = React.useState(false);\n  const waveStyle = {\n    left,\n    top,\n    width,\n    height,\n    borderRadius: borderRadius.map(radius => `${radius}px`).join(' ')\n  };\n  if (color) {\n    waveStyle['--wave-color'] = color;\n  }\n  function syncPos() {\n    const nodeStyle = getComputedStyle(target);\n    // Get wave color from target\n    setWaveColor(getTargetWaveColor(target));\n    const isStatic = nodeStyle.position === 'static';\n    // Rect\n    const {\n      borderLeftWidth,\n      borderTopWidth\n    } = nodeStyle;\n    setLeft(isStatic ? target.offsetLeft : validateNum(-parseFloat(borderLeftWidth)));\n    setTop(isStatic ? target.offsetTop : validateNum(-parseFloat(borderTopWidth)));\n    setWidth(target.offsetWidth);\n    setHeight(target.offsetHeight);\n    // Get border radius\n    const {\n      borderTopLeftRadius,\n      borderTopRightRadius,\n      borderBottomLeftRadius,\n      borderBottomRightRadius\n    } = nodeStyle;\n    setBorderRadius([borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius].map(radius => validateNum(parseFloat(radius))));\n  }\n  React.useEffect(() => {\n    if (target) {\n      // We need delay to check position here\n      // since UI may change after click\n      const id = raf(() => {\n        syncPos();\n        setEnabled(true);\n      });\n      // Add resize observer to follow size\n      let resizeObserver;\n      if (typeof ResizeObserver !== 'undefined') {\n        resizeObserver = new ResizeObserver(syncPos);\n        resizeObserver.observe(target);\n      }\n      return () => {\n        raf.cancel(id);\n        resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n      };\n    }\n  }, []);\n  if (!enabled) {\n    return null;\n  }\n  const isSmallComponent = (component === 'Checkbox' || component === 'Radio') && (target === null || target === void 0 ? void 0 : target.classList.contains(TARGET_CLS));\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: true,\n    motionAppear: true,\n    motionName: \"wave-motion\",\n    motionDeadline: 5000,\n    onAppearEnd: (_, event) => {\n      var _a;\n      if (event.deadline || event.propertyName === 'opacity') {\n        const holder = (_a = divRef.current) === null || _a === void 0 ? void 0 : _a.parentElement;\n        unmount(holder).then(() => {\n          holder === null || holder === void 0 ? void 0 : holder.remove();\n        });\n      }\n      return false;\n    }\n  }, _ref => {\n    let {\n      className: motionClassName\n    } = _ref;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: divRef,\n      className: classNames(className, {\n        'wave-quick': isSmallComponent\n      }, motionClassName),\n      style: waveStyle\n    });\n  });\n};\nconst showWaveEffect = (target, info) => {\n  var _a;\n  const {\n    component\n  } = info;\n  // Skip for unchecked checkbox\n  if (component === 'Checkbox' && !((_a = target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.checked)) {\n    return;\n  }\n  // Create holder\n  const holder = document.createElement('div');\n  holder.style.position = 'absolute';\n  holder.style.left = '0px';\n  holder.style.top = '0px';\n  target === null || target === void 0 ? void 0 : target.insertBefore(holder, target === null || target === void 0 ? void 0 : target.firstChild);\n  render( /*#__PURE__*/React.createElement(WaveEffect, Object.assign({}, info, {\n    target: target\n  })), holder);\n};\nexport default showWaveEffect;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}