{"version":3,"file":"components\\ui\\hole-background.cjs","sources":["webpack://@arolariu/components/./src/components/ui/hole-background.tsx"],"sourcesContent":["\n\nimport * as React from \"react\";\nimport { motion } from \"motion/react\";\n\nimport { cn } from \"@/lib/utils\";\n\ninterface HoleBackgroundProps extends React.HTMLAttributes<HTMLCanvasElement> {\n  strokeColor?: string;\n  numberOfLines?: number;\n  numberOfDiscs?: number;\n  particleRGBColor?: [number, number, number];\n}\n\nconst HoleBackground = React.forwardRef<HTMLCanvasElement, HoleBackgroundProps>(\n  (\n    {\n      strokeColor = \"#737373\",\n      numberOfLines = 50,\n      numberOfDiscs = 50,\n      particleRGBColor = [255, 255, 255],\n      className,\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const canvasRef = React.useRef<HTMLCanvasElement>(null);\n    React.useImperativeHandle(\n      ref,\n      () => canvasRef.current as HTMLCanvasElement\n    );\n\n    const animationFrameIdRef = React.useRef<number>(0);\n    const stateRef = React.useRef<any>({\n      discs: [] as any[],\n      lines: [] as any[],\n      particles: [] as any[],\n      clip: {},\n      startDisc: {},\n      endDisc: {},\n      rect: { width: 0, height: 0 },\n      render: { width: 0, height: 0, dpi: 1 },\n      particleArea: {},\n      linesCanvas: null,\n    });\n\n    const linear = (p: number) => p;\n    const easeInExpo = (p: number) => (p === 0 ? 0 : Math.pow(2, 10 * (p - 1)));\n\n    const tweenValue = React.useCallback(\n      (start: number, end: number, p: number, ease: \"inExpo\" | null = null) => {\n        const delta = end - start;\n        const easeFn = ease === \"inExpo\" ? easeInExpo : linear;\n        return start + delta * easeFn(p);\n      },\n      []\n    );\n\n    const tweenDisc = React.useCallback(\n      (disc: any) => {\n        const { startDisc, endDisc } = stateRef.current;\n        disc.x = tweenValue(startDisc.x, endDisc.x, disc.p);\n        disc.y = tweenValue(startDisc.y, endDisc.y, disc.p, \"inExpo\");\n        disc.w = tweenValue(startDisc.w, endDisc.w, disc.p);\n        disc.h = tweenValue(startDisc.h, endDisc.h, disc.p);\n      },\n      [tweenValue]\n    );\n\n    const setSize = React.useCallback(() => {\n      const canvas = canvasRef.current;\n      if (!canvas) return;\n      const rect = canvas.getBoundingClientRect();\n      stateRef.current.rect = { width: rect.width, height: rect.height };\n      stateRef.current.render = {\n        width: rect.width,\n        height: rect.height,\n        dpi: window.devicePixelRatio || 1,\n      };\n      canvas.width =\n        stateRef.current.render.width * stateRef.current.render.dpi;\n      canvas.height =\n        stateRef.current.render.height * stateRef.current.render.dpi;\n    }, []);\n\n    const setDiscs = React.useCallback(() => {\n      const { width, height } = stateRef.current.rect;\n      stateRef.current.discs = [];\n      stateRef.current.startDisc = {\n        x: width * 0.5,\n        y: height * 0.45,\n        w: width * 0.75,\n        h: height * 0.7,\n      };\n      stateRef.current.endDisc = {\n        x: width * 0.5,\n        y: height * 0.95,\n        w: 0,\n        h: 0,\n      };\n      let prevBottom = height;\n      stateRef.current.clip = {};\n      for (let i = 0; i < numberOfDiscs; i++) {\n        const p = i / numberOfDiscs;\n        const disc = { p, x: 0, y: 0, w: 0, h: 0 };\n        tweenDisc(disc);\n        const bottom = disc.y + disc.h;\n        if (bottom <= prevBottom) {\n          stateRef.current.clip = { disc: { ...disc }, i };\n        }\n        prevBottom = bottom;\n        stateRef.current.discs.push(disc);\n      }\n      const clipPath = new Path2D();\n      const disc = stateRef.current.clip.disc;\n      clipPath.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\n      clipPath.rect(disc.x - disc.w, 0, disc.w * 2, disc.y);\n      stateRef.current.clip.path = clipPath;\n    }, [tweenDisc]);\n\n    const setLines = React.useCallback(() => {\n      const { width, height } = stateRef.current.rect;\n      stateRef.current.lines = [];\n      const linesAngle = (Math.PI * 2) / numberOfLines;\n      for (let i = 0; i < numberOfLines; i++) {\n        stateRef.current.lines.push([]);\n      }\n      stateRef.current.discs.forEach((disc: any) => {\n        for (let i = 0; i < numberOfLines; i++) {\n          const angle = i * linesAngle;\n          const p = {\n            x: disc.x + Math.cos(angle) * disc.w,\n            y: disc.y + Math.sin(angle) * disc.h,\n          };\n          stateRef.current.lines[i].push(p);\n        }\n      });\n      const offCanvas = document.createElement(\"canvas\");\n      offCanvas.width = width;\n      offCanvas.height = height;\n      const ctx = offCanvas.getContext(\"2d\");\n      if (!ctx) return;\n      stateRef.current.lines.forEach((line: any) => {\n        ctx.save();\n        let lineIsIn = false;\n        line.forEach((p1: any, j: number) => {\n          if (j === 0) return;\n          const p0 = line[j - 1];\n          if (\n            !lineIsIn &&\n            (ctx.isPointInPath(stateRef.current.clip.path, p1.x, p1.y) ||\n              ctx.isPointInStroke(stateRef.current.clip.path, p1.x, p1.y))\n          ) {\n            lineIsIn = true;\n          } else if (lineIsIn) {\n            ctx.clip(stateRef.current.clip.path);\n          }\n          ctx.beginPath();\n          ctx.moveTo(p0.x, p0.y);\n          ctx.lineTo(p1.x, p1.y);\n          ctx.strokeStyle = strokeColor;\n          ctx.lineWidth = 2;\n          ctx.stroke();\n          ctx.closePath();\n        });\n        ctx.restore();\n      });\n      stateRef.current.linesCanvas = offCanvas;\n    }, [strokeColor]);\n\n    const initParticle = React.useCallback((start: boolean = false) => {\n      const sx =\n        stateRef.current.particleArea.sx +\n        stateRef.current.particleArea.sw * Math.random();\n      const ex =\n        stateRef.current.particleArea.ex +\n        stateRef.current.particleArea.ew * Math.random();\n      const dx = ex - sx;\n      const y = start\n        ? stateRef.current.particleArea.h * Math.random()\n        : stateRef.current.particleArea.h;\n      const r = 0.5 + Math.random() * 4;\n      const vy = 0.5 + Math.random();\n      return {\n        x: sx,\n        sx,\n        dx,\n        y,\n        vy,\n        p: 0,\n        r,\n        c: `rgba(${particleRGBColor[0]}, ${particleRGBColor[1]}, ${\n          particleRGBColor[2]\n        }, ${Math.random()})`,\n      };\n    }, []);\n\n    const setParticles = React.useCallback(() => {\n      const { width, height } = stateRef.current.rect;\n      stateRef.current.particles = [];\n      const disc = stateRef.current.clip.disc;\n      stateRef.current.particleArea = {\n        sw: disc.w * 0.5,\n        ew: disc.w * 2,\n        h: height * 0.85,\n      };\n      stateRef.current.particleArea.sx =\n        (width - stateRef.current.particleArea.sw) / 2;\n      stateRef.current.particleArea.ex =\n        (width - stateRef.current.particleArea.ew) / 2;\n      const totalParticles = 100;\n      for (let i = 0; i < totalParticles; i++) {\n        stateRef.current.particles.push(initParticle(true));\n      }\n    }, [initParticle]);\n\n    const drawDiscs = React.useCallback(\n      (ctx: CanvasRenderingContext2D) => {\n        ctx.strokeStyle = strokeColor;\n        ctx.lineWidth = 2;\n        const outerDisc = stateRef.current.startDisc;\n        ctx.beginPath();\n        ctx.ellipse(\n          outerDisc.x,\n          outerDisc.y,\n          outerDisc.w,\n          outerDisc.h,\n          0,\n          0,\n          Math.PI * 2\n        );\n        ctx.stroke();\n        ctx.closePath();\n        stateRef.current.discs.forEach((disc: any, i: number) => {\n          if (i % 5 !== 0) return;\n          if (disc.w < stateRef.current.clip.disc.w - 5) {\n            ctx.save();\n            ctx.clip(stateRef.current.clip.path);\n          }\n          ctx.beginPath();\n          ctx.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\n          ctx.stroke();\n          ctx.closePath();\n          if (disc.w < stateRef.current.clip.disc.w - 5) {\n            ctx.restore();\n          }\n        });\n      },\n      [strokeColor]\n    );\n\n    const drawLines = React.useCallback((ctx: CanvasRenderingContext2D) => {\n      if (stateRef.current.linesCanvas) {\n        ctx.drawImage(stateRef.current.linesCanvas, 0, 0);\n      }\n    }, []);\n\n    const drawParticles = React.useCallback((ctx: CanvasRenderingContext2D) => {\n      ctx.save();\n      ctx.clip(stateRef.current.clip.path);\n      stateRef.current.particles.forEach((particle: any) => {\n        ctx.fillStyle = particle.c;\n        ctx.beginPath();\n        ctx.rect(particle.x, particle.y, particle.r, particle.r);\n        ctx.closePath();\n        ctx.fill();\n      });\n      ctx.restore();\n    }, []);\n\n    const moveDiscs = React.useCallback(() => {\n      stateRef.current.discs.forEach((disc: any) => {\n        disc.p = (disc.p + 0.001) % 1;\n        tweenDisc(disc);\n      });\n    }, [tweenDisc]);\n\n    const moveParticles = React.useCallback(() => {\n      stateRef.current.particles.forEach((particle: any, idx: number) => {\n        particle.p = 1 - particle.y / stateRef.current.particleArea.h;\n        particle.x = particle.sx + particle.dx * particle.p;\n        particle.y -= particle.vy;\n        if (particle.y < 0) {\n          stateRef.current.particles[idx] = initParticle();\n        }\n      });\n    }, [initParticle]);\n\n    const tick = React.useCallback(() => {\n      const canvas = canvasRef.current;\n      if (!canvas) return;\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) return;\n      ctx.clearRect(0, 0, canvas.width, canvas.height);\n      ctx.save();\n      ctx.scale(stateRef.current.render.dpi, stateRef.current.render.dpi);\n      moveDiscs();\n      moveParticles();\n      drawDiscs(ctx);\n      drawLines(ctx);\n      drawParticles(ctx);\n      ctx.restore();\n      animationFrameIdRef.current = requestAnimationFrame(tick);\n    }, [moveDiscs, moveParticles, drawDiscs, drawLines, drawParticles]);\n\n    const init = React.useCallback(() => {\n      setSize();\n      setDiscs();\n      setLines();\n      setParticles();\n    }, [setSize, setDiscs, setLines, setParticles]);\n\n    React.useEffect(() => {\n      const canvas = canvasRef.current;\n      if (!canvas) return;\n      init();\n      tick();\n      const handleResize = () => {\n        setSize();\n        setDiscs();\n        setLines();\n        setParticles();\n      };\n      window.addEventListener(\"resize\", handleResize);\n      return () => {\n        window.removeEventListener(\"resize\", handleResize);\n        cancelAnimationFrame(animationFrameIdRef.current);\n      };\n    }, [init, tick, setSize, setDiscs, setLines, setParticles]);\n\n    return (\n      <div\n        className={cn(\n          \"relative size-full overflow-hidden\",\n          'before:content-[\"\"] before:absolute before:top-1/2 before:left-1/2 before:block before:size-[140%] dark:before:[background:radial-gradient(ellipse_at_50%_55%,transparent_10%,black_50%)] before:[background:radial-gradient(ellipse_at_50%_55%,transparent_10%,white_50%)] before:[transform:translate3d(-50%,-50%,0)]',\n          'after:content-[\"\"] after:absolute after:z-[5] after:top-1/2 after:left-1/2 after:block after:size-full after:[background:radial-gradient(ellipse_at_50%_75%,#a900ff_20%,transparent_75%)] after:[transform:translate3d(-50%,-50%,0)] after:mix-blend-overlay',\n          className\n        )}\n      >\n        {children}\n        <canvas\n          ref={canvasRef}\n          className=\"absolute inset-0 block size-full dark:opacity-20 opacity-10\"\n          {...props}\n        />\n        <motion.div\n          className={cn(\n            \"absolute top-[-71.5%] left-1/2 z-[3] w-[30%] h-[140%] rounded-b-full blur-3xl opacity-75 dark:mix-blend-plus-lighter mix-blend-plus-darker [transform:translate3d(-50%,0,0)] [background-position:0%_100%] [background-size:100%_200%]\",\n            \"dark:[background:linear-gradient(20deg,#00f8f1,#ffbd1e20_16.5%,#fe848f_33%,#fe848f20_49.5%,#00f8f1_66%,#00f8f160_85.5%,#ffbd1e_100%)_0_100%_/_100%_200%] [background:linear-gradient(20deg,#00f8f1,#ffbd1e40_16.5%,#fe848f_33%,#fe848f40_49.5%,#00f8f1_66%,#00f8f180_85.5%,#ffbd1e_100%)_0_100%_/_100%_200%]\"\n          )}\n          animate={{ backgroundPosition: \"0% 300%\" }}\n          transition={{ duration: 5, ease: \"linear\", repeat: Infinity }}\n        />\n        <div className=\"absolute top-0 left-0 z-[7] size-full dark:[background:repeating-linear-gradient(transparent,transparent_1px,white_1px,white_2px)] mix-blend-overlay opacity-50\" />\n      </div>\n    );\n  }\n);\n\nexport { HoleBackground, type HoleBackgroundProps };\n"],"names":["HoleBackground","React","strokeColor","numberOfLines","numberOfDiscs","particleRGBColor","className","children","props","ref","canvasRef","animationFrameIdRef","stateRef","linear","p","easeInExpo","Math","tweenValue","start","end","ease","delta","easeFn","tweenDisc","disc","startDisc","endDisc","setSize","canvas","rect","window","setDiscs","width","height","prevBottom","i","bottom","clipPath","Path2D","setLines","linesAngle","angle","offCanvas","document","ctx","line","lineIsIn","p1","j","p0","initParticle","sx","ex","dx","y","r","vy","setParticles","totalParticles","drawDiscs","outerDisc","drawLines","drawParticles","particle","moveDiscs","moveParticles","idx","tick","requestAnimationFrame","init","handleResize","cancelAnimationFrame","cn","motion","Infinity"],"mappings":"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"}