{"version":3,"file":"TouchRipple.mjs","sources":["../../../../../../../../node_modules/@mui/material/ButtonBase/TouchRipple.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { keyframes, styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Ripple from \"./Ripple.js\";\nimport touchRippleClasses from \"./touchRippleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes`\n  0% {\n    transform: scale(0);\n    opacity: 0.1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0.3;\n  }\n`;\nconst exitKeyframe = keyframes`\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n`;\nconst pulsateKeyframe = keyframes`\n  0% {\n    transform: scale(1);\n  }\n\n  50% {\n    transform: scale(0.92);\n  }\n\n  100% {\n    transform: scale(1);\n  }\n`;\nexport const TouchRippleRoot = styled('span', {\n  name: 'MuiTouchRipple',\n  slot: 'Root'\n})({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  zIndex: 0,\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n  name: 'MuiTouchRipple',\n  slot: 'Ripple'\n})`\n  opacity: 0;\n  position: absolute;\n\n  &.${touchRippleClasses.rippleVisible} {\n    opacity: 0.3;\n    transform: scale(1);\n    animation-name: ${enterKeyframe};\n    animation-duration: ${DURATION}ms;\n    animation-timing-function: ${({\n  theme\n}) => theme.transitions.easing.easeInOut};\n  }\n\n  &.${touchRippleClasses.ripplePulsate} {\n    animation-duration: ${({\n  theme\n}) => theme.transitions.duration.shorter}ms;\n  }\n\n  & .${touchRippleClasses.child} {\n    opacity: 1;\n    display: block;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    background-color: currentColor;\n  }\n\n  & .${touchRippleClasses.childLeaving} {\n    opacity: 0;\n    animation-name: ${exitKeyframe};\n    animation-duration: ${DURATION}ms;\n    animation-timing-function: ${({\n  theme\n}) => theme.transitions.easing.easeInOut};\n  }\n\n  & .${touchRippleClasses.childPulsate} {\n    position: absolute;\n    /* @noflip */\n    left: 0px;\n    top: 0;\n    animation-name: ${pulsateKeyframe};\n    animation-duration: 2500ms;\n    animation-timing-function: ${({\n  theme\n}) => theme.transitions.easing.easeInOut};\n    animation-iteration-count: infinite;\n    animation-delay: 200ms;\n  }\n`;\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiTouchRipple'\n  });\n  const {\n    center: centerProp = false,\n    classes = {},\n    className,\n    ...other\n  } = props;\n  const [ripples, setRipples] = React.useState([]);\n  const nextKey = React.useRef(0);\n  const rippleCallback = React.useRef(null);\n  React.useEffect(() => {\n    if (rippleCallback.current) {\n      rippleCallback.current();\n      rippleCallback.current = null;\n    }\n  }, [ripples]);\n\n  // Used to filter out mouse emulated events on mobile.\n  const ignoringMouseDown = React.useRef(false);\n  // We use a timer in order to only show the ripples for touch \"click\" like events.\n  // We don't want to display the ripple for touch scroll events.\n  const startTimer = useTimeout();\n\n  // This is the hook called once the previous timeout is ready.\n  const startTimerCommit = React.useRef(null);\n  const container = React.useRef(null);\n  const startCommit = React.useCallback(params => {\n    const {\n      pulsate,\n      rippleX,\n      rippleY,\n      rippleSize,\n      cb\n    } = params;\n    setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n      classes: {\n        ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n        rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n        ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n        child: clsx(classes.child, touchRippleClasses.child),\n        childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n        childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n      },\n      timeout: DURATION,\n      pulsate: pulsate,\n      rippleX: rippleX,\n      rippleY: rippleY,\n      rippleSize: rippleSize\n    }, nextKey.current)]);\n    nextKey.current += 1;\n    rippleCallback.current = cb;\n  }, [classes]);\n  const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n    const {\n      pulsate = false,\n      center = centerProp || options.pulsate,\n      fakeElement = false // For test purposes\n    } = options;\n    if (event?.type === 'mousedown' && ignoringMouseDown.current) {\n      ignoringMouseDown.current = false;\n      return;\n    }\n    if (event?.type === 'touchstart') {\n      ignoringMouseDown.current = true;\n    }\n    const element = fakeElement ? null : container.current;\n    const rect = element ? element.getBoundingClientRect() : {\n      width: 0,\n      height: 0,\n      left: 0,\n      top: 0\n    };\n\n    // Get the size of the ripple\n    let rippleX;\n    let rippleY;\n    let rippleSize;\n    if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n      rippleX = Math.round(rect.width / 2);\n      rippleY = Math.round(rect.height / 2);\n    } else {\n      const {\n        clientX,\n        clientY\n      } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n      rippleX = Math.round(clientX - rect.left);\n      rippleY = Math.round(clientY - rect.top);\n    }\n    if (center) {\n      rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n      // For some reason the animation is broken on Mobile Chrome if the size is even.\n      if (rippleSize % 2 === 0) {\n        rippleSize += 1;\n      }\n    } else {\n      const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n      const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n      rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n    }\n\n    // Touche devices\n    if (event?.touches) {\n      // check that this isn't another touchstart due to multitouch\n      // otherwise we will only clear a single timer when unmounting while two\n      // are running\n      if (startTimerCommit.current === null) {\n        // Prepare the ripple effect.\n        startTimerCommit.current = () => {\n          startCommit({\n            pulsate,\n            rippleX,\n            rippleY,\n            rippleSize,\n            cb\n          });\n        };\n        // Delay the execution of the ripple effect.\n        // We have to make a tradeoff with this delay value.\n        startTimer.start(DELAY_RIPPLE, () => {\n          if (startTimerCommit.current) {\n            startTimerCommit.current();\n            startTimerCommit.current = null;\n          }\n        });\n      }\n    } else {\n      startCommit({\n        pulsate,\n        rippleX,\n        rippleY,\n        rippleSize,\n        cb\n      });\n    }\n  }, [centerProp, startCommit, startTimer]);\n  const pulsate = React.useCallback(() => {\n    start({}, {\n      pulsate: true\n    });\n  }, [start]);\n  const stop = React.useCallback((event, cb) => {\n    startTimer.clear();\n\n    // The touch interaction occurs too quickly.\n    // We still want to show ripple effect.\n    if (event?.type === 'touchend' && startTimerCommit.current) {\n      startTimerCommit.current();\n      startTimerCommit.current = null;\n      startTimer.start(0, () => {\n        stop(event, cb);\n      });\n      return;\n    }\n    startTimerCommit.current = null;\n    setRipples(oldRipples => {\n      if (oldRipples.length > 0) {\n        return oldRipples.slice(1);\n      }\n      return oldRipples;\n    });\n    rippleCallback.current = cb;\n  }, [startTimer]);\n  React.useImperativeHandle(ref, () => ({\n    pulsate,\n    start,\n    stop\n  }), [pulsate, start, stop]);\n  return /*#__PURE__*/_jsx(TouchRippleRoot, {\n    className: clsx(touchRippleClasses.root, classes.root, className),\n    ref: container,\n    ...other,\n    children: /*#__PURE__*/_jsx(TransitionGroup, {\n      component: null,\n      exit: true,\n      children: ripples\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string\n} : void 0;\nexport default TouchRipple;"],"names":["React.forwardRef","React.useState","React.useRef","React.useEffect","React.useCallback","_jsx","React.useImperativeHandle"],"mappings":"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","x_google_ignoreList":[0]}