{"version":3,"file":"useLazyRipple.mjs","sources":["../../../../../../../../node_modules/@mui/material/useLazyRipple/useLazyRipple.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\n/**\n * Lazy initialization container for the Ripple instance. This improves\n * performance by delaying mounting the ripple until it's needed.\n */\nexport class LazyRipple {\n  /** React ref to the ripple instance */\n\n  /** If the ripple component should be mounted */\n\n  /** Promise that resolves when the ripple component is mounted */\n\n  /** If the ripple component has been mounted */\n\n  /** React state hook setter */\n\n  static create() {\n    return new LazyRipple();\n  }\n  static use() {\n    /* eslint-disable */\n    const ripple = useLazyRef(LazyRipple.create).current;\n    const [shouldMount, setShouldMount] = React.useState(false);\n    ripple.shouldMount = shouldMount;\n    ripple.setShouldMount = setShouldMount;\n    React.useEffect(ripple.mountEffect, [shouldMount]);\n    /* eslint-enable */\n\n    return ripple;\n  }\n  constructor() {\n    this.ref = {\n      current: null\n    };\n    this.mounted = null;\n    this.didMount = false;\n    this.shouldMount = false;\n    this.setShouldMount = null;\n  }\n  mount() {\n    if (!this.mounted) {\n      this.mounted = createControlledPromise();\n      this.shouldMount = true;\n      this.setShouldMount(this.shouldMount);\n    }\n    return this.mounted;\n  }\n  mountEffect = () => {\n    if (this.shouldMount && !this.didMount) {\n      if (this.ref.current !== null) {\n        this.didMount = true;\n        this.mounted.resolve();\n      }\n    }\n  };\n\n  /* Ripple API */\n\n  start(...args) {\n    this.mount().then(() => this.ref.current?.start(...args));\n  }\n  stop(...args) {\n    this.mount().then(() => this.ref.current?.stop(...args));\n  }\n  pulsate(...args) {\n    this.mount().then(() => this.ref.current?.pulsate(...args));\n  }\n}\nexport default function useLazyRipple() {\n  return LazyRipple.use();\n}\nfunction createControlledPromise() {\n  let resolve;\n  let reject;\n  const p = new Promise((resolveFn, rejectFn) => {\n    resolve = resolveFn;\n    reject = rejectFn;\n  });\n  p.resolve = resolve;\n  p.reject = reject;\n  return p;\n}"],"names":["React.useState","React.useEffect"],"mappings":"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","x_google_ignoreList":[0]}