@paper-design/shaders-react 0.0.28 → 0.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/shader-mount.tsx", "../src/use-merge-refs.ts", "../src/shaders/mesh-gradient.tsx", "../src/index.ts", "../src/shaders/smoke-ring.tsx", "../src/shaders/neuro-noise.tsx", "../src/shaders/dot-orbit.tsx", "../src/shaders/dot-grid.tsx", "../src/shaders/stepped-simplex-noise.tsx", "../src/shaders/metaballs.tsx", "../src/shaders/waves.tsx", "../src/shaders/perlin-noise.tsx", "../src/shaders/voronoi.tsx", "../src/shaders/warp.tsx", "../src/shaders/god-rays.tsx", "../src/shaders/spiral.tsx"],
4
- "sourcesContent": ["import React, { useEffect, useRef, forwardRef } from 'react';\nimport { ShaderMount as ShaderMountVanilla, type ShaderMountUniforms } from '@paper-design/shaders';\nimport { useMergeRefs } from './use-merge-refs';\n\n/** The React ShaderMount can also accept strings as uniform values, which will assumed to be URLs and loaded as images */\nexport type ShaderMountUniformsReact = { [key: string]: ShaderMountUniforms[keyof ShaderMountUniforms] | string };\n\nexport interface ShaderMountProps extends React.ComponentProps<'div'> {\n shaderMountRef?: React.RefObject<ShaderMountVanilla | null>;\n fragmentShader: string;\n uniforms?: ShaderMountUniformsReact;\n webGlContextAttributes?: WebGLContextAttributes;\n speed?: number;\n frame?: number;\n}\n\n/** Params that every shader can set as part of their controls */\nexport type GlobalParams = Pick<ShaderMountProps, 'speed' | 'frame'>;\n\n/** Parse the provided uniforms, turning URL strings into loaded images */\nconst processUniforms = (uniforms: ShaderMountUniformsReact): Promise<ShaderMountUniforms> => {\n const processedUniforms: ShaderMountUniforms = {};\n const imageLoadPromises: Promise<void>[] = [];\n\n const isValidUrl = (url: string): boolean => {\n try {\n // Handle absolute paths\n if (url.startsWith('/')) return true;\n // Check if it's a valid URL\n new URL(url);\n return true;\n } catch {\n return false;\n }\n };\n\n const isExternalUrl = (url: string): boolean => {\n try {\n if (url.startsWith('/')) return false;\n const urlObject = new URL(url, window.location.origin);\n return urlObject.origin !== window.location.origin;\n } catch {\n return false;\n }\n };\n\n Object.entries(uniforms).forEach(([key, value]) => {\n if (typeof value === 'string') {\n // Make sure the provided string is a valid URL or just skip trying to set this uniform entirely\n if (!isValidUrl(value)) {\n console.warn(`Uniform \"${key}\" has invalid URL \"${value}\". Skipping image loading.`);\n return;\n }\n\n const imagePromise = new Promise<void>((resolve, reject) => {\n const img = new Image();\n if (isExternalUrl(value)) {\n img.crossOrigin = 'anonymous';\n }\n img.onload = () => {\n processedUniforms[key] = img;\n resolve();\n };\n img.onerror = () => {\n console.error(`Could not set uniforms. Failed to load image at ${value}`);\n reject();\n };\n img.src = value;\n });\n imageLoadPromises.push(imagePromise);\n } else {\n processedUniforms[key] = value;\n }\n });\n\n return Promise.all(imageLoadPromises).then(() => processedUniforms);\n};\n\n/**\n * A React component that mounts a shader and updates its uniforms as the component's props change\n * If you pass a string as a uniform value, it will be assumed to be a URL and attempted to be loaded as an image\n */\nexport const ShaderMount: React.FC<ShaderMountProps> = forwardRef<HTMLDivElement, ShaderMountProps>(\n function ShaderMountImpl(\n {\n shaderMountRef: externalShaderMountRef,\n fragmentShader,\n uniforms = {},\n webGlContextAttributes,\n speed = 1,\n frame = 0,\n ...divProps\n },\n forwardedRef\n ) {\n const divRef = useRef<HTMLDivElement>(null);\n const shaderMountRef: React.RefObject<ShaderMountVanilla | null> = useRef<ShaderMountVanilla>(null);\n\n useEffect(() => {\n const initShader = async () => {\n const processedUniforms = await processUniforms(uniforms);\n\n if (divRef.current && !shaderMountRef.current) {\n shaderMountRef.current = new ShaderMountVanilla(\n divRef.current,\n fragmentShader,\n processedUniforms,\n webGlContextAttributes,\n speed,\n frame\n );\n\n if (externalShaderMountRef) {\n externalShaderMountRef.current = shaderMountRef.current;\n }\n }\n };\n\n initShader();\n\n return () => {\n shaderMountRef.current?.dispose();\n shaderMountRef.current = null;\n };\n }, [fragmentShader, webGlContextAttributes]);\n\n useEffect(() => {\n const updateUniforms = async () => {\n const processedUniforms = await processUniforms(uniforms);\n shaderMountRef.current?.setUniforms(processedUniforms);\n };\n\n updateUniforms();\n }, [uniforms]);\n\n useEffect(() => {\n shaderMountRef.current?.setSpeed(speed);\n }, [speed]);\n\n useEffect(() => {\n shaderMountRef.current?.setFrame(frame);\n }, [frame]);\n\n return <div ref={useMergeRefs([divRef, forwardedRef])} {...divProps} />;\n }\n);\n\nShaderMount.displayName = 'ShaderMount';\n", "import * as React from 'react';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nexport function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.Ref<Instance> {\n const cleanupRef = React.useRef<void | (() => void)>(undefined);\n\n const refEffect = React.useCallback((instance: Instance | null) => {\n const cleanups = refs.map((ref) => {\n if (ref == null) {\n return;\n }\n\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup: void | (() => void) = refCallback(instance);\n return typeof refCleanup === 'function'\n ? refCleanup\n : () => {\n refCallback(null);\n };\n }\n\n (ref as React.MutableRefObject<Instance | null>).current = instance;\n return () => {\n (ref as React.MutableRefObject<Instance | null>).current = null;\n };\n });\n\n return () => {\n cleanups.forEach((refCleanup) => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n\n return React.useMemo(() => {\n if (refs.every((ref) => ref == null)) {\n return null;\n }\n\n return (value) => {\n if (cleanupRef.current) {\n cleanupRef.current();\n (cleanupRef as React.MutableRefObject<void | (() => void)>).current = undefined;\n }\n\n if (value != null) {\n (cleanupRef as React.MutableRefObject<void | (() => void)>).current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, meshGradientFragmentShader, type MeshGradientUniforms } from '@paper-design/shaders';\n\nexport type MeshGradientParams = {\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n} & GlobalParams;\n\nexport type MeshGradientProps = Omit<ShaderMountProps, 'fragmentShader'> & MeshGradientParams;\n\ntype MeshGradientPreset = { name: string; params: Required<MeshGradientParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MeshGradientPreset = {\n name: 'Default',\n params: {\n speed: 0.15,\n frame: 0,\n color1: 'hsla(259, 29%, 73%, 1)',\n color2: 'hsla(263, 57%, 39%, 1)',\n color3: 'hsla(48, 73%, 84%, 1)',\n color4: 'hsla(295, 32%, 70%, 1)',\n },\n};\n\nexport const beachPreset: MeshGradientPreset = {\n name: 'Beach',\n params: {\n speed: 0.1,\n frame: 0,\n color1: 'hsla(186, 81%, 83%, 1)',\n color2: 'hsla(198, 55%, 68%, 1)',\n color3: 'hsla(53, 67%, 88%, 1)',\n color4: 'hsla(45, 93%, 73%, 1)',\n },\n};\n\nexport const fadedPreset: MeshGradientPreset = {\n name: 'Faded',\n params: {\n speed: -0.3,\n frame: 0,\n color1: 'hsla(186, 41%, 90%, 1)',\n color2: 'hsla(208, 71%, 85%, 1)',\n color3: 'hsla(183, 51%, 92%, 1)',\n color4: 'hsla(201, 72%, 90%, 1)',\n },\n};\n\nexport const meshGradientPresets: MeshGradientPreset[] = [defaultPreset, beachPreset, fadedPreset];\n\nexport const MeshGradient = ({ color1, color2, color3, color4, ...props }: MeshGradientProps): React.ReactElement => {\n const uniforms: MeshGradientUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n };\n }, [color1, color2, color3, color4]);\n\n return <ShaderMount {...props} fragmentShader={meshGradientFragmentShader} uniforms={uniforms} />;\n};\n", "// ----- ShaderMount ----- //\nexport { ShaderMount } from './shader-mount';\n\n// ----- Fragment shaders ----- //\n\n// Mesh gradient\nexport { MeshGradient, meshGradientPresets } from './shaders/mesh-gradient';\nexport { type MeshGradientProps } from './shaders/mesh-gradient';\nexport { type MeshGradientParams } from './shaders/mesh-gradient';\nexport { type MeshGradientUniforms } from '@paper-design/shaders';\n\n// Smoke ring\nexport { SmokeRing, smokeRingPresets } from './shaders/smoke-ring';\nexport { type SmokeRingProps } from './shaders/smoke-ring';\nexport { type SmokeRingParams } from './shaders/smoke-ring';\nexport { type SmokeRingUniforms } from '@paper-design/shaders';\n\n// Neuro noise\nexport { NeuroNoise, neuroNoisePresets } from './shaders/neuro-noise';\nexport { type NeuroNoiseProps } from './shaders/neuro-noise';\nexport { type NeuroNoiseParams } from './shaders/neuro-noise';\nexport { type NeuroNoiseUniforms } from '@paper-design/shaders';\n\n// Animated dot pattern: orbit type of animation\nexport { DotOrbit, dotOrbitPresets } from './shaders/dot-orbit';\nexport { type DotOrbitProps } from './shaders/dot-orbit';\nexport { type DotOrbitParams } from './shaders/dot-orbit';\nexport { type DotOrbitUniforms } from '@paper-design/shaders';\n\n// Dot Grid\nexport { DotGrid, dotGridPresets } from './shaders/dot-grid';\nexport { type DotGridProps } from './shaders/dot-grid';\nexport { type DotGridParams } from './shaders/dot-grid';\nexport { type DotGridUniforms, DotGridShapes, type DotGridShape } from '@paper-design/shaders';\n\n// Stepped simplex noise\nexport { SteppedSimplexNoise, steppedSimplexNoisePresets } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseProps } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseParams } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseUniforms } from '@paper-design/shaders';\n\n// Metaballs\nexport { Metaballs, metaballsPresets } from './shaders/metaballs';\nexport { type MetaballsProps } from './shaders/metaballs';\nexport { type MetaballsParams } from './shaders/metaballs';\nexport { type MetaballsUniforms } from '@paper-design/shaders';\n\n// Waves\nexport { Waves, wavesPresets } from './shaders/waves';\nexport { type WavesProps } from './shaders/waves';\nexport { type WavesParams } from './shaders/waves';\nexport { type WavesUniforms } from '@paper-design/shaders';\n\n// Perlin noise\nexport { PerlinNoise, perlinNoisePresets } from './shaders/perlin-noise';\nexport { type PerlinNoiseProps } from './shaders/perlin-noise';\nexport { type PerlinNoiseParams } from './shaders/perlin-noise';\nexport { type PerlinNoiseUniforms } from '@paper-design/shaders';\n\n// Voronoi diagram\nexport { Voronoi, voronoiPresets } from './shaders/voronoi';\nexport { type VoronoiProps } from './shaders/voronoi';\nexport { type VoronoiParams } from './shaders/voronoi';\nexport { type VoronoiUniforms } from '@paper-design/shaders';\n\n// Warping distortion\nexport { Warp, warpPresets } from './shaders/warp';\nexport { type WarpProps } from './shaders/warp';\nexport { type WarpParams } from './shaders/warp';\nexport { type WarpUniforms, PatternShapes, type PatternShape } from '@paper-design/shaders';\n\n// God Rays effect\nexport { GodRays, godRaysPresets } from './shaders/god-rays';\nexport { type GodRaysProps } from './shaders/god-rays';\nexport { type GodRaysParams } from './shaders/god-rays';\nexport { type GodRaysUniforms } from '@paper-design/shaders';\n\n// Single-colored spiral shape\nexport { Spiral, spiralPresets } from './shaders/spiral';\nexport { type SpiralProps } from './shaders/spiral';\nexport { type SpiralParams } from './shaders/spiral';\nexport { type SpiralUniforms } from '@paper-design/shaders';\n\n// ----- Uniform conversion utils ----- //\nexport { getShaderColorFromString } from '@paper-design/shaders';\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, smokeRingFragmentShader, type SmokeRingUniforms } from '@paper-design/shaders';\n\nexport type SmokeRingParams = {\n colorInner?: string;\n colorOuter?: string;\n scale?: number;\n noiseScale?: number;\n thickness?: number;\n} & GlobalParams;\n\nexport type SmokeRingProps = Omit<ShaderMountProps, 'fragmentShader'> & SmokeRingParams;\n\ntype SmokeRingPreset = { name: string; params: Required<SmokeRingParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SmokeRingPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(38, 4%, 38%, 1)',\n noiseScale: 1,\n thickness: 0.5,\n },\n};\n\nexport const cloudPreset: SmokeRingPreset = {\n name: 'Cloud',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(0, 0%, 100%, 1)',\n noiseScale: 1.8,\n thickness: 0.7,\n },\n style: {\n background: 'hsla(218, 100%, 62%, 1)',\n },\n};\n\nexport const firePreset: SmokeRingPreset = {\n name: 'Fire',\n params: {\n scale: 1,\n speed: 4,\n frame: 0,\n colorInner: 'hsla(40, 100%, 50%, 1)',\n colorOuter: 'hsla(0, 100%, 50%, 1)',\n noiseScale: 1.4,\n thickness: 0.35,\n },\n style: {\n background: 'hsla(20, 100%, 5%, 1)',\n },\n};\n\nexport const electricPreset: SmokeRingPreset = {\n name: 'Electric',\n params: {\n scale: 1,\n speed: -2.5,\n frame: 0,\n colorInner: 'hsla(47, 100%, 64%, 1)',\n colorOuter: 'hsla(47, 100%, 64%, 1)',\n noiseScale: 1.8,\n thickness: 0.1,\n },\n style: {\n background: 'hsla(47, 50%, 7%, 1)',\n },\n};\n\nexport const poisonPreset: SmokeRingPreset = {\n name: 'Poison',\n params: {\n scale: 1,\n speed: 3,\n frame: 0,\n colorInner: 'hsla(120, 100%, 3%, 1)',\n colorOuter: 'hsla(120, 100%, 66%, 1)',\n noiseScale: 5,\n thickness: 0.6,\n },\n style: {\n background: 'hsla(120, 100%, 3%, 1)',\n },\n};\n\nexport const smokeRingPresets: SmokeRingPreset[] = [\n defaultPreset,\n cloudPreset,\n firePreset,\n electricPreset,\n poisonPreset,\n];\n\nexport const SmokeRing = ({\n scale,\n colorInner,\n colorOuter,\n noiseScale,\n thickness,\n ...props\n}: SmokeRingProps): React.ReactElement => {\n const uniforms: SmokeRingUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorInner: getShaderColorFromString(colorInner, defaultPreset.params.colorInner),\n u_colorOuter: getShaderColorFromString(colorOuter, defaultPreset.params.colorOuter),\n u_noiseScale: noiseScale ?? defaultPreset.params.noiseScale,\n u_thickness: thickness ?? defaultPreset.params.thickness,\n };\n }, [scale, colorInner, colorOuter, noiseScale, thickness]);\n\n return <ShaderMount {...props} fragmentShader={smokeRingFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, neuroNoiseFragmentShader, type NeuroNoiseUniforms } from '@paper-design/shaders';\n\nexport type NeuroNoiseParams = {\n scale?: number;\n colorFront?: string;\n colorBack?: string;\n brightness?: number;\n} & GlobalParams;\n\nexport type NeuroNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & NeuroNoiseParams;\n\ntype NeuroNoisePreset = { name: string; params: Required<NeuroNoiseParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: NeuroNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorFront: 'hsla(261, 100%, 82%, 1)',\n colorBack: 'hsla(0, 0%, 0%, 1)',\n brightness: 1.3,\n },\n};\n\nconst marblePreset: NeuroNoisePreset = {\n name: 'Marble',\n params: {\n scale: 0.4,\n speed: 0,\n frame: 0,\n colorFront: 'hsla(230, 24%, 15%, 1)',\n colorBack: 'hsla(0, 0%, 97%, 1)',\n brightness: 1.1,\n },\n};\n\nexport const neuroNoisePresets: NeuroNoisePreset[] = [defaultPreset, marblePreset] as const;\n\nexport const NeuroNoise = ({\n scale,\n colorFront,\n colorBack,\n brightness,\n ...props\n}: NeuroNoiseProps): React.ReactElement => {\n const uniforms: NeuroNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorFront: getShaderColorFromString(colorFront, defaultPreset.params.colorFront),\n u_colorBack: getShaderColorFromString(colorBack, defaultPreset.params.colorBack),\n u_brightness: brightness ?? defaultPreset.params.brightness,\n };\n }, [scale, colorFront, colorBack, brightness]);\n\n return <ShaderMount {...props} fragmentShader={neuroNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, dotOrbitFragmentShader, type DotOrbitUniforms } from '@paper-design/shaders';\n\nexport type DotOrbitParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n dotSize?: number;\n dotSizeRange?: number;\n spreading?: number;\n} & GlobalParams;\n\nexport type DotOrbitProps = Omit<ShaderMountProps, 'fragmentShader'> & DotOrbitParams;\n\ntype DotOrbitPreset = { name: string; params: Required<DotOrbitParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: DotOrbitPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 2,\n frame: 0,\n color1: 'hsla(358, 66%, 49%, 1)',\n color2: 'hsla(145, 30%, 33%, 1)',\n color3: 'hsla(39, 88%, 52%, 1)',\n color4: 'hsla(274, 30%, 35%, 1)',\n dotSize: 0.7,\n dotSizeRange: 0.4,\n spreading: 1,\n },\n};\n\nexport const dotOrbitPresets: DotOrbitPreset[] = [defaultPreset];\n\nexport const DotOrbit = ({\n scale,\n color1,\n color2,\n color3,\n color4,\n dotSize,\n dotSizeRange,\n spreading,\n ...props\n}: DotOrbitProps): React.ReactElement => {\n const uniforms: DotOrbitUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n u_dotSize: dotSize ?? defaultPreset.params.dotSize,\n u_dotSizeRange: dotSizeRange ?? defaultPreset.params.dotSizeRange,\n u_spreading: spreading ?? defaultPreset.params.spreading,\n };\n }, [scale, color1, color2, color3, color4, dotSize, dotSizeRange, spreading]);\n\n return <ShaderMount {...props} fragmentShader={dotOrbitFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport {\n dotGridFragmentShader,\n getShaderColorFromString,\n type DotGridUniforms,\n type DotGridShape,\n DotGridShapes,\n} from '@paper-design/shaders';\n\nexport type DotGridParams = {\n colorFill?: string;\n colorStroke?: string;\n dotSize?: number;\n gridSpacingX?: number;\n gridSpacingY?: number;\n strokeWidth?: number;\n sizeRange?: number;\n opacityRange?: number;\n shape?: DotGridShape;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport type DotGridProps = Omit<ShaderMountProps, 'fragmentShader'> & DotGridParams;\n\ntype DotGridPreset = { name: string; params: Required<DotGridParams>; style?: React.CSSProperties };\n\nexport const defaultPreset: DotGridPreset = {\n name: 'Default',\n params: {\n colorFill: 'hsla(0, 0%, 0%, 1)',\n colorStroke: 'hsla(40, 100%, 50%, 1)',\n dotSize: 2,\n gridSpacingX: 50,\n gridSpacingY: 50,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Circle,\n },\n};\n\nexport const macrodataPreset: DotGridPreset = {\n name: 'Macrodata',\n params: {\n colorFill: 'hsla(218, 100%, 67%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 3,\n gridSpacingX: 25,\n gridSpacingY: 25,\n strokeWidth: 0,\n sizeRange: 0.25,\n opacityRange: 0.9,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(211, 37%, 13%, 1)',\n },\n};\n\nconst trianglesPreset: DotGridPreset = {\n name: 'Triangles',\n params: {\n colorFill: 'hsla(0, 0%, 100%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, .5)',\n dotSize: 5,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Triangle,\n },\n style: {\n background: 'hsla(0, 0%, 100%, 1)',\n },\n};\n\nconst bubblesPreset: DotGridPreset = {\n name: 'Bubbles',\n params: {\n colorFill: 'hsla(100, 30%, 100%, 1)',\n colorStroke: 'hsla(0, 100%, 0%, 1)',\n dotSize: 28,\n gridSpacingX: 60,\n gridSpacingY: 60,\n strokeWidth: 12,\n sizeRange: 0.7,\n opacityRange: 1.3,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(234, 100%, 31%, .5)',\n },\n};\n\nconst treeLinePreset: DotGridPreset = {\n name: 'Tree line',\n params: {\n colorFill: 'hsla(150, 80%, 10%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 8,\n gridSpacingX: 20,\n gridSpacingY: 90,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0.6,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(100, 100%, 36%, .05)',\n },\n};\n\nconst diamondsPreset: DotGridPreset = {\n name: 'Diamonds',\n params: {\n colorFill: 'hsla(0, 100%, 50%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 15,\n gridSpacingX: 30,\n gridSpacingY: 30,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 2,\n shape: DotGridShapes.Diamond,\n },\n style: {\n background: 'hsla(0, 0%, 0%, 0)',\n },\n};\n\nconst wallpaperPreset: DotGridPreset = {\n name: 'Wallpaper',\n params: {\n colorFill: 'hsla(0, 0%, 0%, 0)',\n colorStroke: 'hsla(36, 48%, 58%, 1)',\n dotSize: 9,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Diamond,\n },\n style: {\n background: 'hsla(154, 33%, 19%, 1)',\n },\n};\n\nconst matrixPreset: DotGridPreset = {\n name: 'Enter the Matrix',\n params: {\n colorFill: 'hsla(182, 100%, 64%, 1)',\n colorStroke: 'hsla(0, 100%, 100%, 0)',\n dotSize: 2,\n gridSpacingX: 10,\n gridSpacingY: 10,\n strokeWidth: 0.5,\n sizeRange: 0.25,\n opacityRange: 1,\n shape: DotGridShapes.Triangle,\n },\n style: {\n background: 'hsla(0, 100%, 0%, 1)',\n },\n};\n\nconst waveformPreset: DotGridPreset = {\n name: 'Waveform',\n params: {\n colorFill: 'hsla(227, 93%, 38%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 0)',\n dotSize: 100,\n gridSpacingX: 2,\n gridSpacingY: 215,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0,\n shape: DotGridShapes.Square,\n },\n style: {\n background: 'hsla(0, 100%, 100%, 1)',\n },\n};\n\nexport const dotGridPresets: DotGridPreset[] = [\n defaultPreset,\n macrodataPreset,\n trianglesPreset,\n bubblesPreset,\n treeLinePreset,\n diamondsPreset,\n wallpaperPreset,\n matrixPreset,\n waveformPreset,\n];\n\nexport const DotGrid = ({\n colorFill,\n colorStroke,\n dotSize,\n gridSpacingX,\n gridSpacingY,\n strokeWidth,\n sizeRange,\n opacityRange,\n shape,\n ...props\n}: DotGridProps): React.ReactElement => {\n const uniforms: DotGridUniforms = useMemo(() => {\n return {\n u_colorFill: getShaderColorFromString(colorFill, defaultPreset.params.colorStroke),\n u_colorStroke: getShaderColorFromString(colorStroke, defaultPreset.params.colorStroke),\n u_dotSize: dotSize ?? defaultPreset.params.dotSize,\n u_gridSpacingX: gridSpacingX ?? defaultPreset.params.gridSpacingX,\n u_gridSpacingY: gridSpacingY ?? defaultPreset.params.gridSpacingY,\n u_strokeWidth: strokeWidth ?? defaultPreset.params.strokeWidth,\n u_sizeRange: sizeRange ?? defaultPreset.params.sizeRange,\n u_opacityRange: opacityRange ?? defaultPreset.params.opacityRange,\n u_shape: shape ?? defaultPreset.params.shape,\n };\n }, [colorFill, colorStroke, dotSize, gridSpacingX, gridSpacingY, strokeWidth, sizeRange, opacityRange, shape]);\n\n return <ShaderMount {...props} fragmentShader={dotGridFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n steppedSimplexNoiseFragmentShader,\n type SteppedSimplexNoiseUniforms,\n} from '@paper-design/shaders';\n\nexport type SteppedSimplexNoiseParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n color5?: string;\n stepsNumber?: number;\n} & GlobalParams;\n\nexport type SteppedSimplexNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & SteppedSimplexNoiseParams;\n\ntype SteppedSimplexNoisePreset = {\n name: string;\n params: Required<SteppedSimplexNoiseParams>;\n style?: React.CSSProperties;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SteppedSimplexNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.15,\n frame: 0,\n color1: 'hsla(208, 25%, 45%, 1)',\n color2: 'hsla(94, 38%, 59%, 1)',\n color3: 'hsla(359, 94%, 62%, 1)',\n color4: 'hsla(42, 93%, 64%, 1)',\n color5: 'hsla(0, 0%, 100%, 1)',\n stepsNumber: 13,\n },\n};\n\nconst magmaPreset: SteppedSimplexNoisePreset = {\n name: 'Magma',\n params: {\n scale: 0.3,\n speed: 0.2,\n frame: 0,\n color1: 'hsla(0, 100%, 36%, 1)',\n color2: 'hsla(0, 95%, 44%, 1)',\n color3: 'hsla(20, 100%, 49%, 1)',\n color4: 'hsla(45, 100%, 45%, 1)',\n color5: 'hsla(31, 100%, 94%, 1)',\n stepsNumber: 8,\n },\n};\n\nconst bloodCellPreset: SteppedSimplexNoisePreset = {\n name: 'Blood cell',\n params: {\n scale: 1.2,\n speed: 0.22,\n frame: 0,\n color1: 'hsla(302, 43%, 13%, 1)',\n color2: 'hsla(325, 93%, 17%, 1)',\n color3: 'hsla(338, 80%, 25%, 1)',\n color4: 'hsla(338, 80%, 25%, 1)',\n color5: 'hsla(2, 85%, 72%, 1)',\n stepsNumber: 29,\n },\n};\n\nconst firstContactPreset: SteppedSimplexNoisePreset = {\n name: 'First contact',\n params: {\n scale: 1.2,\n speed: -0.1,\n frame: 0,\n color1: 'hsla(300, 43%, 82%, 1)',\n color2: 'hsla(266, 70%, 9%, 1)',\n color3: 'hsla(289, 36%, 26%, 1)',\n color4: 'hsla(0, 41%, 78%, 1)',\n color5: 'hsla(0, 100%, 96%, 1)',\n stepsNumber: 40,\n },\n};\n\nexport const steppedSimplexNoisePresets: SteppedSimplexNoisePreset[] = [\n defaultPreset,\n magmaPreset,\n bloodCellPreset,\n firstContactPreset,\n];\n\nexport const SteppedSimplexNoise = ({\n scale,\n color1,\n color2,\n color3,\n color4,\n color5,\n stepsNumber,\n ...props\n}: SteppedSimplexNoiseProps): React.ReactElement => {\n const uniforms: SteppedSimplexNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n u_color5: getShaderColorFromString(color5, defaultPreset.params.color5),\n u_steps_number: stepsNumber ?? defaultPreset.params.stepsNumber,\n };\n }, [scale, color1, color2, color3, color4, color5, stepsNumber]);\n\n return <ShaderMount {...props} fragmentShader={steppedSimplexNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, metaballsFragmentShader, type MetaballsUniforms } from '@paper-design/shaders';\n\nexport type MetaballsParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n ballSize?: number;\n visibilityRange?: number;\n} & GlobalParams;\n\nexport type MetaballsProps = Omit<ShaderMountProps, 'fragmentShader'> & MetaballsParams;\n\ntype MetaballsPreset = { name: string; params: Required<MetaballsParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MetaballsPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n color1: 'hsla(350, 90%, 55%, 1)',\n color2: 'hsla(350, 80%, 60%, 1)',\n color3: 'hsla(20, 85%, 70%, 1)',\n ballSize: 1,\n visibilityRange: 0.4,\n },\n};\n\nexport const metaballsPresets: MetaballsPreset[] = [defaultPreset];\n\nexport const Metaballs = ({\n scale,\n color1,\n color2,\n color3,\n ballSize,\n visibilityRange,\n ...props\n}: MetaballsProps): React.ReactElement => {\n const uniforms: MetaballsUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_ballSize: ballSize ?? defaultPreset.params.ballSize,\n u_visibilityRange: visibilityRange ?? defaultPreset.params.visibilityRange,\n };\n }, [scale, color1, color2, color3, ballSize, visibilityRange]);\n\n return <ShaderMount {...props} fragmentShader={metaballsFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, wavesFragmentShader, type WavesUniforms } from '@paper-design/shaders';\n\nexport type WavesParams = {\n scale?: number;\n rotation?: number;\n color?: string;\n shape?: number;\n frequency?: number;\n amplitude?: number;\n spacing?: number;\n dutyCycle?: number;\n softness?: number;\n};\n\nexport type WavesProps = Omit<ShaderMountProps, 'fragmentShader'> & WavesParams;\n\ntype WavesPreset = { name: string; params: Required<WavesParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WavesPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n color: 'hsla(204, 47%, 45%, 1)',\n shape: 1,\n frequency: 0.5,\n amplitude: 0.5,\n spacing: 0.75,\n dutyCycle: 0.2,\n softness: 0,\n },\n};\n\nexport const spikesPreset: WavesPreset = {\n name: 'Spikes',\n params: {\n scale: 2.3,\n rotation: 0,\n color: 'hsla(290, 52%, 15%, 1)',\n shape: 0,\n frequency: 0.5,\n amplitude: 0.9,\n spacing: 0.37,\n dutyCycle: 0.93,\n softness: 0.15,\n },\n style: {\n background: 'hsla(65, 100%, 95%, 1)',\n },\n};\n\nexport const groovyPreset: WavesPreset = {\n name: 'Groovy',\n params: {\n scale: 0.5,\n rotation: 1,\n color: 'hsla(20, 100%, 71%, 1)',\n shape: 2.37,\n frequency: 0.2,\n amplitude: 0.67,\n spacing: 1.17,\n dutyCycle: 0.57,\n softness: 0,\n },\n style: {\n background: 'hsla(60, 100%, 97%, 1)',\n },\n};\n\nexport const tangledUpPreset: WavesPreset = {\n name: 'Tangled up',\n params: {\n scale: 3.04,\n rotation: 1,\n color: 'hsla(85.5, 35.7%, 78%, 1)',\n shape: 3,\n frequency: 0.44,\n amplitude: 0.57,\n spacing: 1.05,\n dutyCycle: 0.97,\n softness: 0,\n },\n style: {\n background: 'hsla(198.7, 66.7%, 14.1%, 1)',\n },\n};\n\nexport const zigZagPreset: WavesPreset = {\n name: 'Zig zag',\n params: {\n scale: 2.7,\n rotation: 1,\n color: 'hsla(0, 0%, 90%, 1)',\n shape: 0,\n frequency: 0.6,\n amplitude: 0.8,\n spacing: 0.5,\n dutyCycle: 1,\n softness: 0.5,\n },\n style: {\n background: 'hsla(0, 0%, 0%, 1)',\n },\n};\n\nexport const waveRidePreset: WavesPreset = {\n name: 'Ride the wave',\n params: {\n scale: 0.84,\n rotation: 0,\n color: 'hsla(0, 0%, 12%, 1)',\n shape: 2.23,\n frequency: 0.1,\n amplitude: 0.6,\n spacing: 0.41,\n dutyCycle: 0.99,\n softness: 0,\n },\n style: {\n background: 'hsla(65, 100%, 95%, 1)',\n },\n};\n\nexport const wavesPresets: WavesPreset[] = [\n defaultPreset,\n spikesPreset,\n groovyPreset,\n tangledUpPreset,\n zigZagPreset,\n waveRidePreset,\n];\n\nexport const Waves = ({\n scale,\n rotation,\n color,\n shape,\n frequency,\n amplitude,\n spacing,\n dutyCycle,\n softness,\n ...props\n}: WavesProps): React.ReactElement => {\n const uniforms: WavesUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_rotation: rotation ?? defaultPreset.params.rotation,\n u_color: getShaderColorFromString(color, defaultPreset.params.color),\n u_shape: shape ?? defaultPreset.params.shape,\n u_frequency: frequency ?? defaultPreset.params.frequency,\n u_amplitude: amplitude ?? defaultPreset.params.amplitude,\n u_spacing: spacing ?? defaultPreset.params.spacing,\n u_dutyCycle: dutyCycle ?? defaultPreset.params.dutyCycle,\n u_softness: softness ?? defaultPreset.params.softness,\n };\n }, [scale, rotation, color, shape, frequency, amplitude, spacing, dutyCycle, softness]);\n\n return <ShaderMount {...props} fragmentShader={wavesFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, perlinNoiseFragmentShader, type PerlinNoiseUniforms } from '@paper-design/shaders';\n\nexport type PerlinNoiseParams = {\n scale?: number;\n color?: string;\n proportion?: number;\n softness?: number;\n octaveCount?: number;\n persistence?: number;\n lacunarity?: number;\n} & GlobalParams;\n\nexport type PerlinNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & PerlinNoiseParams;\n\ntype PerlinNoisePreset = { name: string; params: Required<PerlinNoiseParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: PerlinNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n color: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.1,\n octaveCount: 2,\n persistence: 1,\n lacunarity: 1.5,\n },\n};\n\nexport const nintendoWaterPreset: PerlinNoisePreset = {\n name: 'Nintendo Water',\n params: {\n scale: 0.2,\n speed: 0.4,\n frame: 0,\n color: 'hsla(200, 66%, 90%, 1)',\n proportion: 0.42,\n softness: 0,\n octaveCount: 2,\n persistence: 0.55,\n lacunarity: 1.8,\n },\n style: {\n background: 'hsla(220, 66%, 50%, 1)',\n },\n};\n\nexport const colonyPreset: PerlinNoisePreset = {\n name: 'Colony',\n params: {\n scale: 0.15,\n speed: 0,\n frame: 0,\n color: 'hsla(230, 80%, 20%, 1)',\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n proportion: 0.65,\n softness: 0.35,\n },\n style: {\n background: 'hsla(56, 86%, 81%, 1)',\n },\n};\n\nexport const phosphenesPreset: PerlinNoisePreset = {\n name: 'Phosphenes',\n params: {\n scale: 0.03,\n speed: 0.15,\n frame: 0,\n color: 'hsla(150, 50%, 60%, 1)',\n proportion: 0.45,\n softness: 0.45,\n octaveCount: 6,\n persistence: 0.3,\n lacunarity: 3,\n },\n style: {\n background: 'hsla(350, 80%, 70%, 1)',\n },\n};\n\nexport const mossPreset: PerlinNoisePreset = {\n name: 'Moss',\n params: {\n scale: 0.15,\n speed: 0.02,\n frame: 0,\n color: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.35,\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n },\n style: {\n background: 'hsla(137, 100%, 51%, 1)',\n },\n};\n\nexport const wormsPreset: PerlinNoisePreset = {\n name: 'Worms',\n params: {\n scale: 2,\n speed: 0,\n frame: 0,\n color: 'hsla(0, 0%, 35%, 1)',\n proportion: 0.5,\n softness: 0,\n octaveCount: 1,\n persistence: 1,\n lacunarity: 1.5,\n },\n style: {\n background: 'hsla(0, 100%, 100%, 1)',\n },\n};\n\nexport const perlinNoisePresets: PerlinNoisePreset[] = [\n defaultPreset,\n nintendoWaterPreset,\n colonyPreset,\n phosphenesPreset,\n mossPreset,\n wormsPreset,\n];\n\nexport const PerlinNoise = ({\n scale,\n color,\n proportion,\n softness,\n octaveCount,\n persistence,\n lacunarity,\n ...props\n}: PerlinNoiseProps): React.ReactElement => {\n const uniforms: PerlinNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color: getShaderColorFromString(color, defaultPreset.params.color),\n u_proportion: proportion ?? defaultPreset.params.proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_octaveCount: octaveCount ?? defaultPreset.params.octaveCount,\n u_persistence: persistence ?? defaultPreset.params.persistence,\n u_lacunarity: lacunarity ?? defaultPreset.params.lacunarity,\n };\n }, [scale, color, proportion, softness, octaveCount, persistence, lacunarity]);\n\n return <ShaderMount {...props} fragmentShader={perlinNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, voronoiFragmentShader, type VoronoiUniforms } from '@paper-design/shaders';\n\nexport type VoronoiParams = {\n scale?: number;\n colorCell1?: string;\n colorCell2?: string;\n colorCell3?: string;\n colorMid?: string;\n colorGradient?: number;\n distance?: number;\n edgesSize?: number;\n edgesSoftness?: number;\n middleSize?: number;\n middleSoftness?: number;\n} & GlobalParams;\n\nexport type VoronoiProps = Omit<ShaderMountProps, 'fragmentShader'> & VoronoiParams;\n\ntype VoronoiPreset = { name: string; params: Required<VoronoiParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: VoronoiPreset = {\n name: 'Default',\n params: {\n scale: 1.5,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(15, 80%, 50%, 1)',\n colorCell2: 'hsla(180, 80%, 50%, 1)',\n colorCell3: 'hsla(200, 80%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0.5,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const classicPreset: VoronoiPreset = {\n name: 'Classic',\n params: {\n scale: 3,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 100%, 0%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.45,\n edgesSize: 0.02,\n edgesSoftness: 0.07,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const giraffePreset: VoronoiPreset = {\n name: 'Giraffe',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(32, 100%, 18%, 1)',\n colorCell2: 'hsla(42, 93%, 35%, 1)',\n colorCell3: 'hsla(32, 100%, 18%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.2,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const eyesPreset: VoronoiPreset = {\n name: 'Eyes',\n params: {\n scale: 1.6,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(79, 84%, 60%, 1)',\n colorCell2: 'hsla(207, 53%, 41%, 1)',\n colorCell3: 'hsla(207, 80%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.62,\n edgesSoftness: 0.01,\n middleSize: 0.1,\n middleSoftness: 0,\n },\n};\n\nexport const bubblesPreset: VoronoiPreset = {\n name: 'Bubbles',\n params: {\n scale: 2,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 50%, 1)',\n colorCell2: 'hsla(169, 100%, 66%, 1)',\n colorCell3: 'hsla(50, 100%, 66%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.5,\n edgesSize: 0.81,\n edgesSoftness: 0.0,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const cellsPreset: VoronoiPreset = {\n name: 'Cells',\n params: {\n scale: 2,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(0, 0%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 0%, 100%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.38,\n edgesSize: 0.1,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const glowPreset: VoronoiPreset = {\n name: 'Glow',\n params: {\n scale: 1.2,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(40, 100%, 50%, 1)',\n colorCell2: 'hsla(311, 100%, 59%, 1)',\n colorCell3: 'hsla(180, 100%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 100%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0.7,\n middleSoftness: 1,\n },\n};\n\nexport const tilesPreset: VoronoiPreset = {\n name: 'Tiles',\n params: {\n scale: 1.3,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(80, 50%, 50%, 1)',\n colorCell2: 'hsla(0, 50%, 100%, 1)',\n colorCell3: 'hsla(200, 50%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0,\n distance: 0.05,\n edgesSize: 0.25,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const voronoiPresets: VoronoiPreset[] = [\n defaultPreset,\n classicPreset,\n giraffePreset,\n eyesPreset,\n bubblesPreset,\n cellsPreset,\n glowPreset,\n tilesPreset,\n];\n\nexport const Voronoi = ({\n scale,\n colorCell1,\n colorCell2,\n colorCell3,\n colorMid,\n colorGradient,\n distance,\n edgesSize,\n edgesSoftness,\n middleSize,\n middleSoftness,\n ...props\n}: VoronoiProps): React.ReactElement => {\n const uniforms: VoronoiUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorCell1: getShaderColorFromString(colorCell1, defaultPreset.params.colorCell1),\n u_colorCell2: getShaderColorFromString(colorCell2, defaultPreset.params.colorCell2),\n u_colorCell3: getShaderColorFromString(colorCell3, defaultPreset.params.colorCell3),\n u_colorMid: getShaderColorFromString(colorMid, defaultPreset.params.colorMid),\n u_colorGradient: colorGradient ?? defaultPreset.params.colorGradient,\n u_distance: distance ?? defaultPreset.params.distance,\n u_edgesSize: edgesSize ?? defaultPreset.params.edgesSize,\n u_edgesSoftness: edgesSoftness ?? defaultPreset.params.edgesSoftness,\n u_middleSize: middleSize ?? defaultPreset.params.middleSize,\n u_middleSoftness: middleSoftness ?? defaultPreset.params.middleSoftness,\n };\n }, [\n scale,\n colorCell1,\n colorCell3,\n colorCell2,\n colorMid,\n colorGradient,\n distance,\n edgesSize,\n edgesSoftness,\n middleSize,\n middleSoftness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={voronoiFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n warpFragmentShader,\n type WarpUniforms,\n type PatternShape,\n PatternShapes,\n} from '@paper-design/shaders';\n\nexport type WarpParams = {\n scale?: number;\n rotation?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n proportion?: number;\n softness?: number;\n distortion?: number;\n swirl?: number;\n swirlIterations?: number;\n shapeScale?: number;\n shape?: PatternShape;\n} & GlobalParams;\n\nexport type WarpProps = Omit<ShaderMountProps, 'fragmentShader'> & WarpParams;\n\ntype WarpPreset = { name: string; params: Required<WarpParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WarpPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n speed: 0.1,\n frame: 0,\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(203, 80%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.35,\n softness: 1,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetCauldron: WarpPreset = {\n name: 'Cauldron Pot',\n params: {\n scale: 1.1,\n rotation: 1.62,\n speed: 1,\n frame: 0,\n color1: 'hsla(100, 51%, 75%, 1)',\n color2: 'hsla(220, 39%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.64,\n softness: 0.95,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetSilk: WarpPreset = {\n name: 'Silk',\n params: {\n scale: 0.26,\n rotation: 0,\n speed: 0.5,\n frame: 0,\n color1: 'hsla(0, 9%, 7%, 1)',\n color2: 'hsla(8, 13%, 34%, 1)',\n color3: 'hsla(5, 8%, 71%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.3,\n swirl: 0.6,\n swirlIterations: 11,\n shapeScale: 0.05,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetPassion: WarpPreset = {\n name: 'Passion',\n params: {\n scale: 0.25,\n rotation: 1.35,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(0, 44.7%, 14.9%, 1)',\n color2: 'hsla(353.4, 34%, 42.2%, 1)',\n color3: 'hsla(29, 100%, 76.1%, 1)',\n proportion: 0.5,\n softness: 1,\n distortion: 0.09,\n swirl: 0.9,\n swirlIterations: 6,\n shapeScale: 0.25,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetPhantom: WarpPreset = {\n name: 'Phantom',\n params: {\n scale: 0.68,\n rotation: 1.8,\n speed: 1.25,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.45,\n softness: 1,\n distortion: 0.16,\n swirl: 0.3,\n swirlIterations: 7,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetAbyss: WarpPreset = {\n name: 'The Abyss',\n params: {\n scale: 0.1,\n rotation: 2,\n speed: 0.06,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.09,\n swirl: 0.48,\n swirlIterations: 4,\n shapeScale: 0.1,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetInk: WarpPreset = {\n name: 'Live Ink',\n params: {\n scale: 0.7,\n rotation: 1.5,\n speed: 0.25,\n frame: 0,\n color1: 'hsla(210, 11.1%, 7.1%, 1)',\n color2: 'hsla(165, 9%, 65.1%, 1)',\n color3: 'hsla(84, 100%, 97.1%, 1)',\n proportion: 0.35,\n softness: 0,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.26,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetIceberg: WarpPreset = {\n name: 'Iceberg',\n params: {\n scale: 1.1,\n rotation: 2,\n speed: 0.05,\n frame: 0,\n color1: 'hsla(0, 0%, 100%, 1)',\n color2: 'hsla(220, 38.7%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.3,\n softness: 1,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetNectar: WarpPreset = {\n name: 'Nectar',\n params: {\n scale: 0.24,\n rotation: 0,\n speed: 0.42,\n frame: 0,\n color1: 'hsla(37.5, 22.2%, 7.1%, 1)',\n color2: 'hsla(38.5, 59.1%, 63.1%, 1)',\n color3: 'hsla(37.6, 30%, 95.2%, 1)',\n proportion: 0.24,\n softness: 1,\n distortion: 0.21,\n swirl: 0.57,\n swirlIterations: 10,\n shapeScale: 0.32,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetFilteredLight: WarpPreset = {\n name: 'Filtered Light',\n params: {\n scale: 2,\n rotation: 0.44,\n speed: 0.32,\n frame: 0,\n color1: 'hsla(60.2, 7.8%, 8.3%, 1)',\n color2: 'hsla(64.4, 27.8%, 81%, 1)',\n color3: 'hsla(60, 100%, 93.9%, 1)',\n proportion: 0.25,\n softness: 1,\n distortion: 0.06,\n swirl: 0,\n swirlIterations: 0,\n shapeScale: 0,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetKelp: WarpPreset = {\n name: 'Kelp',\n params: {\n scale: 0.38,\n rotation: 0.6,\n speed: 2,\n frame: 0,\n color1: 'hsla(79.3, 100%, 78%, 1)',\n color2: 'hsla(112, 10.5%, 28%, 1)',\n color3: 'hsla(203.3, 50%, 7.1%, 1)',\n proportion: 1,\n softness: 0,\n distortion: 0,\n swirl: 0.15,\n swirlIterations: 0,\n shapeScale: 0.74,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const warpPresets: WarpPreset[] = [\n defaultPreset,\n presetAbyss,\n presetCauldron,\n presetFilteredLight,\n presetIceberg,\n presetInk,\n presetKelp,\n presetNectar,\n presetPassion,\n presetPhantom,\n presetSilk,\n];\n\nexport const Warp = ({\n scale,\n rotation,\n color1,\n color2,\n color3,\n proportion,\n softness,\n distortion,\n swirl,\n swirlIterations,\n shapeScale,\n shape,\n ...props\n}: WarpProps): React.ReactElement => {\n const uniforms: WarpUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_rotation: rotation ?? defaultPreset.params.rotation,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color2),\n u_proportion: proportion ?? defaultPreset.params.proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_distortion: distortion ?? defaultPreset.params.distortion,\n u_swirl: swirl ?? defaultPreset.params.swirl,\n u_swirlIterations: swirlIterations ?? defaultPreset.params.swirlIterations,\n u_shapeScale: shapeScale ?? defaultPreset.params.shapeScale,\n u_shape: shape ?? defaultPreset.params.shape,\n };\n }, [\n scale,\n rotation,\n color1,\n color2,\n color3,\n proportion,\n softness,\n distortion,\n swirl,\n swirlIterations,\n shapeScale,\n shape,\n ]);\n\n return <ShaderMount {...props} fragmentShader={warpFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, godRaysFragmentShader, type GodRaysUniforms } from '@paper-design/shaders';\n\nexport type GodRaysParams = {\n colorBack?: string;\n color1?: string;\n color2?: string;\n color3?: string;\n offsetX?: number;\n offsetY?: number;\n frequency?: number;\n spotty?: number;\n midIntensity?: number;\n midSize?: number;\n density?: number;\n blending?: number;\n} & GlobalParams;\n\nexport type GodRaysProps = Omit<ShaderMountProps, 'fragmentShader'> & GodRaysParams;\n\ntype GodRaysPreset = { name: string; params: Required<GodRaysParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: GodRaysPreset = {\n name: 'Default',\n params: {\n colorBack: 'hsla(215, 100%, 11%, 1)',\n color1: 'hsla(45, 100%, 70%, 1)',\n color2: 'hsla(10, 100%, 80%, 1)',\n color3: 'hsla(178, 100%, 83%, 1)',\n offsetX: -0.6,\n offsetY: -0.6,\n frequency: 6,\n spotty: 0.28,\n midIntensity: 0.97,\n midSize: 2,\n density: 0.3,\n blending: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const auroraPreset: GodRaysPreset = {\n name: 'Aurora',\n params: {\n colorBack: 'hsla(0, 0%, 25%, 1)',\n color1: 'hsla(239, 100%, 70%, 1)',\n color2: 'hsla(150, 100%, 70%, 1)',\n color3: 'hsla(200, 100%, 70%, 1)',\n offsetX: 0,\n offsetY: 1,\n frequency: 2.4,\n spotty: 0.9,\n midIntensity: 0.8,\n midSize: 2.1,\n density: 0.5,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n};\n\nexport const warpPreset: GodRaysPreset = {\n name: 'Warp',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsla(317, 100%, 50%, 1)',\n color2: 'hsla(25, 100%, 50%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n offsetX: 0,\n offsetY: 0,\n frequency: 1.2,\n spotty: 0.15,\n midIntensity: 0,\n midSize: 0,\n density: 0.79,\n blending: 0.4,\n speed: 2,\n frame: 0,\n },\n};\n\nexport const linearPreset: GodRaysPreset = {\n name: 'Linear',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsl(0 0% 100% / 12%)',\n color2: 'hsl(0 0% 100% / 24%)',\n color3: 'hsl(0 0% 100% / 16%)',\n offsetX: 0.2,\n offsetY: -0.7,\n frequency: 1.2,\n spotty: 0.25,\n midSize: 1.1,\n midIntensity: 0.75,\n density: 0.79,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n};\n\nexport const etherPreset: GodRaysPreset = {\n name: 'Ether',\n params: {\n colorBack: 'hsl(226.7 50% 7.1% / 100%)',\n color1: 'hsl(215 100% 53.9% / 65.1%)',\n color2: 'hsl(214.4 85.9% 86.1% / 74.9%)',\n color3: 'hsl(225 31.4% 20% / 100%)',\n offsetX: -0.6,\n offsetY: 0,\n frequency: 0.3,\n spotty: 0.77,\n midSize: 1.1,\n midIntensity: 0.5,\n density: 0.6,\n blending: 0.6,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const godRaysPresets: GodRaysPreset[] = [defaultPreset, auroraPreset, warpPreset, linearPreset, etherPreset];\n\nexport const GodRays = ({\n colorBack,\n color1,\n color2,\n color3,\n offsetX,\n offsetY,\n frequency,\n spotty,\n midIntensity,\n midSize,\n density,\n blending,\n ...props\n}: GodRaysProps): React.ReactElement => {\n const uniforms: GodRaysUniforms = useMemo(() => {\n return {\n u_colorBack: getShaderColorFromString(colorBack, defaultPreset.params.colorBack),\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_offsetX: offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: offsetY ?? defaultPreset.params.offsetY,\n u_frequency: frequency ?? defaultPreset.params.frequency,\n u_spotty: spotty ?? defaultPreset.params.spotty,\n u_midIntensity: midIntensity ?? defaultPreset.params.midIntensity,\n u_midSize: midSize ?? defaultPreset.params.midSize,\n u_density: density ?? defaultPreset.params.density,\n u_blending: blending ?? defaultPreset.params.blending,\n };\n }, [\n colorBack,\n color1,\n color2,\n color3,\n offsetX,\n offsetY,\n frequency,\n spotty,\n midIntensity,\n midSize,\n density,\n blending,\n ]);\n\n return <ShaderMount {...props} fragmentShader={godRaysFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, spiralFragmentShader, type SpiralUniforms } from '@paper-design/shaders';\n\nexport type SpiralParams = {\n color1?: string;\n color2?: string;\n scale?: number;\n offsetX?: number;\n offsetY?: number;\n spiralDensity?: number;\n spiralDistortion?: number;\n strokeWidth?: number;\n strokeTaper?: number;\n strokeCap?: number;\n noiseFreq?: number;\n noisePower?: number;\n softness?: number;\n} & GlobalParams;\n\nexport type SpiralProps = Omit<ShaderMountProps, 'fragmentShader'> & SpiralParams;\n\ntype SpiralPreset = { name: string; params: Required<SpiralParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: SpiralPreset = {\n name: 'Default',\n params: {\n color1: 'hsla(0, 0%, 98%, 1)',\n color2: 'hsla(0, 0%, 50%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.01,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const noisyPreset: SpiralPreset = {\n name: 'Noisy',\n params: {\n color1: 'hsla(87, 77%, 53%, 1)',\n color2: 'hsla(109, 70%, 31%, 1)',\n scale: 1.3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.5,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0.5,\n noiseFreq: 0.1,\n noisePower: 1,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const dropletPreset: SpiralPreset = {\n name: 'Droplet',\n params: {\n color1: 'hsla(320, 50%, 50%, 1)',\n color2: 'hsla(190, 50%, 95%, 1)',\n scale: 0.65,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.05,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const sandPreset: SpiralPreset = {\n name: 'Sand',\n params: {\n color1: 'hsla(45, 25%, 50%, 1)',\n color2: 'hsla(0, 0%, 87%, 1)',\n scale: 3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.15,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 30,\n noisePower: 1,\n softness: 0.2,\n speed: 0,\n frame: 0,\n },\n};\n\nexport const swirlPreset: SpiralPreset = {\n name: 'Swirl',\n params: {\n color1: 'hsla(160, 50%, 80%, 1)',\n color2: 'hsla(220, 50%, 20%, 1)',\n scale: 4,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.8,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.5,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const hookPreset: SpiralPreset = {\n name: 'Hook',\n params: {\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(200, 50%, 70%, 1)',\n scale: 0.8,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0.5,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.02,\n speed: 3,\n frame: 0,\n },\n};\n\nexport const vinylPreset: SpiralPreset = {\n name: 'Vinyl',\n params: {\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(320, 5%, 75%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0.3,\n strokeWidth: 0.95,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.11,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const spiralPresets: SpiralPreset[] = [\n defaultPreset,\n noisyPreset,\n dropletPreset,\n swirlPreset,\n sandPreset,\n hookPreset,\n vinylPreset,\n];\n\nexport const Spiral = ({\n color1,\n color2,\n scale,\n offsetX,\n offsetY,\n spiralDensity,\n spiralDistortion,\n strokeWidth,\n strokeTaper,\n strokeCap,\n noiseFreq,\n noisePower,\n softness,\n ...props\n}: SpiralProps): React.ReactElement => {\n const uniforms: SpiralUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_scale: scale ?? defaultPreset.params.scale,\n u_offsetX: offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: offsetY ?? defaultPreset.params.offsetY,\n u_spiralDensity: spiralDensity ?? defaultPreset.params.spiralDensity,\n u_spiralDistortion: spiralDistortion ?? defaultPreset.params.spiralDistortion,\n u_strokeWidth: strokeWidth ?? defaultPreset.params.strokeWidth,\n u_strokeTaper: strokeTaper ?? defaultPreset.params.strokeTaper,\n u_strokeCap: strokeCap ?? defaultPreset.params.strokeCap,\n u_noiseFreq: noiseFreq ?? defaultPreset.params.noiseFreq,\n u_noisePower: noisePower ?? defaultPreset.params.noisePower,\n u_softness: softness ?? defaultPreset.params.softness,\n };\n }, [\n color1,\n color2,\n scale,\n offsetX,\n offsetY,\n spiralDensity,\n spiralDistortion,\n strokeWidth,\n strokeTaper,\n strokeCap,\n noiseFreq,\n noisePower,\n softness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={spiralFragmentShader} uniforms={uniforms} />;\n};\n"],
5
- "mappings": "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",
6
- "names": ["useEffect", "useRef", "forwardRef", "ShaderMountVanilla", "React", "useMergeRefs", "refs", "cleanupRef", "refEffect", "instance", "cleanups", "ref", "refCallback", "refCleanup", "value", "jsx", "processUniforms", "uniforms", "processedUniforms", "imageLoadPromises", "isValidUrl", "url", "isExternalUrl", "key", "value", "imagePromise", "resolve", "reject", "img", "ShaderMount", "forwardRef", "externalShaderMountRef", "fragmentShader", "webGlContextAttributes", "speed", "frame", "divProps", "forwardedRef", "divRef", "useRef", "shaderMountRef", "useEffect", "ShaderMountVanilla", "useMergeRefs", "useMemo", "getShaderColorFromString", "meshGradientFragmentShader", "jsx", "defaultPreset", "beachPreset", "fadedPreset", "meshGradientPresets", "MeshGradient", "color1", "color2", "color3", "color4", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "smokeRingFragmentShader", "jsx", "defaultPreset", "cloudPreset", "firePreset", "electricPreset", "poisonPreset", "smokeRingPresets", "SmokeRing", "scale", "colorInner", "colorOuter", "noiseScale", "thickness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "neuroNoiseFragmentShader", "jsx", "defaultPreset", "marblePreset", "neuroNoisePresets", "NeuroNoise", "scale", "colorFront", "colorBack", "brightness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "dotOrbitFragmentShader", "jsx", "defaultPreset", "dotOrbitPresets", "DotOrbit", "scale", "color1", "color2", "color3", "color4", "dotSize", "dotSizeRange", "spreading", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "dotGridFragmentShader", "getShaderColorFromString", "DotGridShapes", "jsx", "defaultPreset", "macrodataPreset", "trianglesPreset", "bubblesPreset", "treeLinePreset", "diamondsPreset", "wallpaperPreset", "matrixPreset", "waveformPreset", "dotGridPresets", "DotGrid", "colorFill", "colorStroke", "dotSize", "gridSpacingX", "gridSpacingY", "strokeWidth", "sizeRange", "opacityRange", "shape", "props", "uniforms", "useMemo", "ShaderMount", "DotGridShapes", "useMemo", "getShaderColorFromString", "steppedSimplexNoiseFragmentShader", "jsx", "defaultPreset", "magmaPreset", "bloodCellPreset", "firstContactPreset", "steppedSimplexNoisePresets", "SteppedSimplexNoise", "scale", "color1", "color2", "color3", "color4", "color5", "stepsNumber", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "metaballsFragmentShader", "jsx", "defaultPreset", "metaballsPresets", "Metaballs", "scale", "color1", "color2", "color3", "ballSize", "visibilityRange", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "wavesFragmentShader", "jsx", "defaultPreset", "spikesPreset", "groovyPreset", "tangledUpPreset", "zigZagPreset", "waveRidePreset", "wavesPresets", "Waves", "scale", "rotation", "color", "shape", "frequency", "amplitude", "spacing", "dutyCycle", "softness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "perlinNoiseFragmentShader", "jsx", "defaultPreset", "nintendoWaterPreset", "colonyPreset", "phosphenesPreset", "mossPreset", "wormsPreset", "perlinNoisePresets", "PerlinNoise", "scale", "color", "proportion", "softness", "octaveCount", "persistence", "lacunarity", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "voronoiFragmentShader", "jsx", "defaultPreset", "classicPreset", "giraffePreset", "eyesPreset", "bubblesPreset", "cellsPreset", "glowPreset", "tilesPreset", "voronoiPresets", "Voronoi", "scale", "colorCell1", "colorCell2", "colorCell3", "colorMid", "colorGradient", "distance", "edgesSize", "edgesSoftness", "middleSize", "middleSoftness", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "warpFragmentShader", "PatternShapes", "jsx", "defaultPreset", "presetCauldron", "presetSilk", "presetPassion", "presetPhantom", "presetAbyss", "presetInk", "presetIceberg", "presetNectar", "presetFilteredLight", "presetKelp", "warpPresets", "Warp", "scale", "rotation", "color1", "color2", "color3", "proportion", "softness", "distortion", "swirl", "swirlIterations", "shapeScale", "shape", "props", "uniforms", "useMemo", "ShaderMount", "PatternShapes", "useMemo", "getShaderColorFromString", "godRaysFragmentShader", "jsx", "defaultPreset", "auroraPreset", "warpPreset", "linearPreset", "etherPreset", "godRaysPresets", "GodRays", "colorBack", "color1", "color2", "color3", "offsetX", "offsetY", "frequency", "spotty", "midIntensity", "midSize", "density", "blending", "props", "uniforms", "useMemo", "ShaderMount", "useMemo", "getShaderColorFromString", "spiralFragmentShader", "jsx", "defaultPreset", "noisyPreset", "dropletPreset", "sandPreset", "swirlPreset", "hookPreset", "vinylPreset", "spiralPresets", "Spiral", "color1", "color2", "scale", "offsetX", "offsetY", "spiralDensity", "spiralDistortion", "strokeWidth", "strokeTaper", "strokeCap", "noiseFreq", "noisePower", "softness", "props", "uniforms", "useMemo", "ShaderMount", "getShaderColorFromString"]
4
+ "sourcesContent": ["import React, { useEffect, useRef, forwardRef, useState } from 'react';\nimport { ShaderMount as ShaderMountVanilla, type ShaderMountUniforms } from '@paper-design/shaders';\nimport { useMergeRefs } from './use-merge-refs';\n\n/** The React ShaderMount can also accept strings as uniform values, which will assumed to be URLs and loaded as images */\nexport type ShaderMountUniformsReact = { [key: string]: ShaderMountUniforms[keyof ShaderMountUniforms] | string };\n\nexport interface ShaderMountProps extends React.ComponentProps<'div'> {\n shaderMountRef?: React.RefObject<ShaderMountVanilla | null>;\n fragmentShader: string;\n uniforms?: ShaderMountUniformsReact;\n webGlContextAttributes?: WebGLContextAttributes;\n speed?: number;\n frame?: number;\n}\n\n/** Params that every shader can set as part of their controls */\nexport type GlobalParams = Pick<ShaderMountProps, 'speed' | 'frame'>;\n\n/** Parse the provided uniforms, turning URL strings into loaded images */\nconst processUniforms = (uniforms: ShaderMountUniformsReact): Promise<ShaderMountUniforms> => {\n const processedUniforms: ShaderMountUniforms = {};\n const imageLoadPromises: Promise<void>[] = [];\n\n const isValidUrl = (url: string): boolean => {\n try {\n // Handle absolute paths\n if (url.startsWith('/')) return true;\n // Check if it's a valid URL\n new URL(url);\n return true;\n } catch {\n return false;\n }\n };\n\n const isExternalUrl = (url: string): boolean => {\n try {\n if (url.startsWith('/')) return false;\n const urlObject = new URL(url, window.location.origin);\n return urlObject.origin !== window.location.origin;\n } catch {\n return false;\n }\n };\n\n Object.entries(uniforms).forEach(([key, value]) => {\n if (typeof value === 'string') {\n // Make sure the provided string is a valid URL or just skip trying to set this uniform entirely\n if (!isValidUrl(value)) {\n console.warn(`Uniform \"${key}\" has invalid URL \"${value}\". Skipping image loading.`);\n return;\n }\n\n const imagePromise = new Promise<void>((resolve, reject) => {\n const img = new Image();\n if (isExternalUrl(value)) {\n img.crossOrigin = 'anonymous';\n }\n img.onload = () => {\n processedUniforms[key] = img;\n resolve();\n };\n img.onerror = () => {\n console.error(`Could not set uniforms. Failed to load image at ${value}`);\n reject();\n };\n img.src = value;\n });\n imageLoadPromises.push(imagePromise);\n } else {\n processedUniforms[key] = value;\n }\n });\n\n return Promise.all(imageLoadPromises).then(() => processedUniforms);\n};\n\n/**\n * A React component that mounts a shader and updates its uniforms as the component's props change\n * If you pass a string as a uniform value, it will be assumed to be a URL and attempted to be loaded as an image\n */\nexport const ShaderMount: React.FC<ShaderMountProps> = forwardRef<HTMLDivElement, ShaderMountProps>(\n function ShaderMountImpl(\n {\n shaderMountRef: externalShaderMountRef,\n fragmentShader,\n uniforms = {},\n webGlContextAttributes,\n speed = 1,\n frame = 0,\n ...divProps\n },\n forwardedRef\n ) {\n const [isInitialized, setIsInitialized] = useState(false);\n const divRef = useRef<HTMLDivElement>(null);\n const shaderMountRef: React.RefObject<ShaderMountVanilla | null> = useRef<ShaderMountVanilla>(null);\n\n // Initialize the ShaderMountVanilla\n useEffect(() => {\n const initShader = async () => {\n const processedUniforms = await processUniforms(uniforms);\n if (divRef.current && !shaderMountRef.current) {\n shaderMountRef.current = new ShaderMountVanilla(\n divRef.current,\n fragmentShader,\n processedUniforms,\n webGlContextAttributes,\n speed,\n frame\n );\n\n if (externalShaderMountRef) {\n externalShaderMountRef.current = shaderMountRef.current;\n }\n\n setIsInitialized(true);\n }\n };\n\n initShader();\n\n return () => {\n shaderMountRef.current?.dispose();\n shaderMountRef.current = null;\n };\n }, [fragmentShader, webGlContextAttributes]);\n\n // Uniforms\n useEffect(() => {\n const updateUniforms = async () => {\n const processedUniforms = await processUniforms(uniforms);\n shaderMountRef.current?.setUniforms(processedUniforms);\n };\n\n updateUniforms();\n }, [uniforms, isInitialized]);\n\n // Speed\n useEffect(() => {\n shaderMountRef.current?.setSpeed(speed);\n }, [speed, isInitialized]);\n\n // Frame\n useEffect(() => {\n shaderMountRef.current?.setFrame(frame);\n }, [frame, isInitialized]);\n\n return <div ref={useMergeRefs([divRef, forwardedRef])} {...divProps} />;\n }\n);\n\nShaderMount.displayName = 'ShaderMount';\n", "import * as React from 'react';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nexport function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.Ref<Instance> {\n const cleanupRef = React.useRef<void | (() => void)>(undefined);\n\n const refEffect = React.useCallback((instance: Instance | null) => {\n const cleanups = refs.map((ref) => {\n if (ref == null) {\n return;\n }\n\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup: void | (() => void) = refCallback(instance);\n return typeof refCleanup === 'function'\n ? refCleanup\n : () => {\n refCallback(null);\n };\n }\n\n (ref as React.MutableRefObject<Instance | null>).current = instance;\n return () => {\n (ref as React.MutableRefObject<Instance | null>).current = null;\n };\n });\n\n return () => {\n cleanups.forEach((refCleanup) => refCleanup?.());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n\n return React.useMemo(() => {\n if (refs.every((ref) => ref == null)) {\n return null;\n }\n\n return (value) => {\n if (cleanupRef.current) {\n cleanupRef.current();\n (cleanupRef as React.MutableRefObject<void | (() => void)>).current = undefined;\n }\n\n if (value != null) {\n (cleanupRef as React.MutableRefObject<void | (() => void)>).current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, meshGradientFragmentShader, type MeshGradientUniforms } from '@paper-design/shaders';\n\nexport type MeshGradientParams = {\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n} & GlobalParams;\n\nexport type MeshGradientProps = Omit<ShaderMountProps, 'fragmentShader'> & MeshGradientParams;\n\ntype MeshGradientPreset = { name: string; params: Required<MeshGradientParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MeshGradientPreset = {\n name: 'Default',\n params: {\n speed: 0.15,\n frame: 0,\n color1: 'hsla(259, 29%, 73%, 1)',\n color2: 'hsla(263, 57%, 39%, 1)',\n color3: 'hsla(48, 73%, 84%, 1)',\n color4: 'hsla(295, 32%, 70%, 1)',\n },\n};\n\nexport const beachPreset: MeshGradientPreset = {\n name: 'Beach',\n params: {\n speed: 0.1,\n frame: 0,\n color1: 'hsla(186, 81%, 83%, 1)',\n color2: 'hsla(198, 55%, 68%, 1)',\n color3: 'hsla(53, 67%, 88%, 1)',\n color4: 'hsla(45, 93%, 73%, 1)',\n },\n};\n\nexport const fadedPreset: MeshGradientPreset = {\n name: 'Faded',\n params: {\n speed: -0.3,\n frame: 0,\n color1: 'hsla(186, 41%, 90%, 1)',\n color2: 'hsla(208, 71%, 85%, 1)',\n color3: 'hsla(183, 51%, 92%, 1)',\n color4: 'hsla(201, 72%, 90%, 1)',\n },\n};\n\nexport const meshGradientPresets: MeshGradientPreset[] = [defaultPreset, beachPreset, fadedPreset];\n\nexport const MeshGradient = ({ color1, color2, color3, color4, ...props }: MeshGradientProps): React.ReactElement => {\n const uniforms: MeshGradientUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n };\n }, [color1, color2, color3, color4]);\n\n return <ShaderMount {...props} fragmentShader={meshGradientFragmentShader} uniforms={uniforms} />;\n};\n", "// ----- ShaderMount ----- //\nexport { ShaderMount } from './shader-mount';\n\n// ----- Fragment shaders ----- //\n\n// Mesh gradient\nexport { MeshGradient, meshGradientPresets } from './shaders/mesh-gradient';\nexport { type MeshGradientProps } from './shaders/mesh-gradient';\nexport { type MeshGradientParams } from './shaders/mesh-gradient';\nexport { type MeshGradientUniforms } from '@paper-design/shaders';\n\n// Smoke ring\nexport { SmokeRing, smokeRingPresets } from './shaders/smoke-ring';\nexport { type SmokeRingProps } from './shaders/smoke-ring';\nexport { type SmokeRingParams } from './shaders/smoke-ring';\nexport { type SmokeRingUniforms } from '@paper-design/shaders';\n\n// Neuro noise\nexport { NeuroNoise, neuroNoisePresets } from './shaders/neuro-noise';\nexport { type NeuroNoiseProps } from './shaders/neuro-noise';\nexport { type NeuroNoiseParams } from './shaders/neuro-noise';\nexport { type NeuroNoiseUniforms } from '@paper-design/shaders';\n\n// Animated dot pattern: orbit type of animation\nexport { DotOrbit, dotOrbitPresets } from './shaders/dot-orbit';\nexport { type DotOrbitProps } from './shaders/dot-orbit';\nexport { type DotOrbitParams } from './shaders/dot-orbit';\nexport { type DotOrbitUniforms } from '@paper-design/shaders';\n\n// Dot Grid\nexport { DotGrid, dotGridPresets } from './shaders/dot-grid';\nexport { type DotGridProps } from './shaders/dot-grid';\nexport { type DotGridParams } from './shaders/dot-grid';\nexport { type DotGridUniforms, DotGridShapes, type DotGridShape } from '@paper-design/shaders';\n\n// Stepped simplex noise\nexport { SteppedSimplexNoise, steppedSimplexNoisePresets } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseProps } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseParams } from './shaders/stepped-simplex-noise';\nexport { type SteppedSimplexNoiseUniforms } from '@paper-design/shaders';\n\n// Metaballs\nexport { Metaballs, metaballsPresets } from './shaders/metaballs';\nexport { type MetaballsProps } from './shaders/metaballs';\nexport { type MetaballsParams } from './shaders/metaballs';\nexport { type MetaballsUniforms } from '@paper-design/shaders';\n\n// Waves\nexport { Waves, wavesPresets } from './shaders/waves';\nexport { type WavesProps } from './shaders/waves';\nexport { type WavesParams } from './shaders/waves';\nexport { type WavesUniforms } from '@paper-design/shaders';\n\n// Perlin noise\nexport { PerlinNoise, perlinNoisePresets } from './shaders/perlin-noise';\nexport { type PerlinNoiseProps } from './shaders/perlin-noise';\nexport { type PerlinNoiseParams } from './shaders/perlin-noise';\nexport { type PerlinNoiseUniforms } from '@paper-design/shaders';\n\n// Voronoi diagram\nexport { Voronoi, voronoiPresets } from './shaders/voronoi';\nexport { type VoronoiProps } from './shaders/voronoi';\nexport { type VoronoiParams } from './shaders/voronoi';\nexport { type VoronoiUniforms } from '@paper-design/shaders';\n\n// Warping distortion\nexport { Warp, warpPresets } from './shaders/warp';\nexport { type WarpProps } from './shaders/warp';\nexport { type WarpParams } from './shaders/warp';\nexport { type WarpUniforms, PatternShapes, type PatternShape } from '@paper-design/shaders';\n\n// God Rays effect\nexport { GodRays, godRaysPresets } from './shaders/god-rays';\nexport { type GodRaysProps } from './shaders/god-rays';\nexport { type GodRaysParams } from './shaders/god-rays';\nexport { type GodRaysUniforms } from '@paper-design/shaders';\n\n// Single-colored spiral shape\nexport { Spiral, spiralPresets } from './shaders/spiral';\nexport { type SpiralProps } from './shaders/spiral';\nexport { type SpiralParams } from './shaders/spiral';\nexport { type SpiralUniforms } from '@paper-design/shaders';\n\n// ----- Uniform conversion utils ----- //\nexport { getShaderColorFromString } from '@paper-design/shaders';\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, smokeRingFragmentShader, type SmokeRingUniforms } from '@paper-design/shaders';\n\nexport type SmokeRingParams = {\n colorInner?: string;\n colorOuter?: string;\n scale?: number;\n noiseScale?: number;\n thickness?: number;\n} & GlobalParams;\n\nexport type SmokeRingProps = Omit<ShaderMountProps, 'fragmentShader'> & SmokeRingParams;\n\ntype SmokeRingPreset = { name: string; params: Required<SmokeRingParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SmokeRingPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(38, 4%, 38%, 1)',\n noiseScale: 1,\n thickness: 0.5,\n },\n};\n\nexport const cloudPreset: SmokeRingPreset = {\n name: 'Cloud',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorInner: 'hsla(0, 0%, 100%, 1)',\n colorOuter: 'hsla(0, 0%, 100%, 1)',\n noiseScale: 1.8,\n thickness: 0.7,\n },\n style: {\n background: 'hsla(218, 100%, 62%, 1)',\n },\n};\n\nexport const firePreset: SmokeRingPreset = {\n name: 'Fire',\n params: {\n scale: 1,\n speed: 4,\n frame: 0,\n colorInner: 'hsla(40, 100%, 50%, 1)',\n colorOuter: 'hsla(0, 100%, 50%, 1)',\n noiseScale: 1.4,\n thickness: 0.35,\n },\n style: {\n background: 'hsla(20, 100%, 5%, 1)',\n },\n};\n\nexport const electricPreset: SmokeRingPreset = {\n name: 'Electric',\n params: {\n scale: 1,\n speed: -2.5,\n frame: 0,\n colorInner: 'hsla(47, 100%, 64%, 1)',\n colorOuter: 'hsla(47, 100%, 64%, 1)',\n noiseScale: 1.8,\n thickness: 0.1,\n },\n style: {\n background: 'hsla(47, 50%, 7%, 1)',\n },\n};\n\nexport const poisonPreset: SmokeRingPreset = {\n name: 'Poison',\n params: {\n scale: 1,\n speed: 3,\n frame: 0,\n colorInner: 'hsla(120, 100%, 3%, 1)',\n colorOuter: 'hsla(120, 100%, 66%, 1)',\n noiseScale: 5,\n thickness: 0.6,\n },\n style: {\n background: 'hsla(120, 100%, 3%, 1)',\n },\n};\n\nexport const smokeRingPresets: SmokeRingPreset[] = [\n defaultPreset,\n cloudPreset,\n firePreset,\n electricPreset,\n poisonPreset,\n];\n\nexport const SmokeRing = ({\n scale,\n colorInner,\n colorOuter,\n noiseScale,\n thickness,\n ...props\n}: SmokeRingProps): React.ReactElement => {\n const uniforms: SmokeRingUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorInner: getShaderColorFromString(colorInner, defaultPreset.params.colorInner),\n u_colorOuter: getShaderColorFromString(colorOuter, defaultPreset.params.colorOuter),\n u_noiseScale: noiseScale ?? defaultPreset.params.noiseScale,\n u_thickness: thickness ?? defaultPreset.params.thickness,\n };\n }, [scale, colorInner, colorOuter, noiseScale, thickness]);\n\n return <ShaderMount {...props} fragmentShader={smokeRingFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, neuroNoiseFragmentShader, type NeuroNoiseUniforms } from '@paper-design/shaders';\n\nexport type NeuroNoiseParams = {\n scale?: number;\n colorFront?: string;\n colorBack?: string;\n brightness?: number;\n} & GlobalParams;\n\nexport type NeuroNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & NeuroNoiseParams;\n\ntype NeuroNoisePreset = { name: string; params: Required<NeuroNoiseParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: NeuroNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 1,\n frame: 0,\n colorFront: 'hsla(261, 100%, 82%, 1)',\n colorBack: 'hsla(0, 0%, 0%, 1)',\n brightness: 1.3,\n },\n};\n\nconst marblePreset: NeuroNoisePreset = {\n name: 'Marble',\n params: {\n scale: 0.4,\n speed: 0,\n frame: 0,\n colorFront: 'hsla(230, 24%, 15%, 1)',\n colorBack: 'hsla(0, 0%, 97%, 1)',\n brightness: 1.1,\n },\n};\n\nexport const neuroNoisePresets: NeuroNoisePreset[] = [defaultPreset, marblePreset] as const;\n\nexport const NeuroNoise = ({\n scale,\n colorFront,\n colorBack,\n brightness,\n ...props\n}: NeuroNoiseProps): React.ReactElement => {\n const uniforms: NeuroNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorFront: getShaderColorFromString(colorFront, defaultPreset.params.colorFront),\n u_colorBack: getShaderColorFromString(colorBack, defaultPreset.params.colorBack),\n u_brightness: brightness ?? defaultPreset.params.brightness,\n };\n }, [scale, colorFront, colorBack, brightness]);\n\n return <ShaderMount {...props} fragmentShader={neuroNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, dotOrbitFragmentShader, type DotOrbitUniforms } from '@paper-design/shaders';\n\nexport type DotOrbitParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n dotSize?: number;\n dotSizeRange?: number;\n spreading?: number;\n} & GlobalParams;\n\nexport type DotOrbitProps = Omit<ShaderMountProps, 'fragmentShader'> & DotOrbitParams;\n\ntype DotOrbitPreset = { name: string; params: Required<DotOrbitParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: DotOrbitPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 2,\n frame: 0,\n color1: 'hsla(358, 66%, 49%, 1)',\n color2: 'hsla(145, 30%, 33%, 1)',\n color3: 'hsla(39, 88%, 52%, 1)',\n color4: 'hsla(274, 30%, 35%, 1)',\n dotSize: 0.7,\n dotSizeRange: 0.4,\n spreading: 1,\n },\n};\n\nexport const dotOrbitPresets: DotOrbitPreset[] = [defaultPreset];\n\nexport const DotOrbit = ({\n scale,\n color1,\n color2,\n color3,\n color4,\n dotSize,\n dotSizeRange,\n spreading,\n ...props\n}: DotOrbitProps): React.ReactElement => {\n const uniforms: DotOrbitUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n u_dotSize: dotSize ?? defaultPreset.params.dotSize,\n u_dotSizeRange: dotSizeRange ?? defaultPreset.params.dotSizeRange,\n u_spreading: spreading ?? defaultPreset.params.spreading,\n };\n }, [scale, color1, color2, color3, color4, dotSize, dotSizeRange, spreading]);\n\n return <ShaderMount {...props} fragmentShader={dotOrbitFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport {\n dotGridFragmentShader,\n getShaderColorFromString,\n type DotGridUniforms,\n type DotGridShape,\n DotGridShapes,\n} from '@paper-design/shaders';\n\nexport type DotGridParams = {\n colorFill?: string;\n colorStroke?: string;\n dotSize?: number;\n gridSpacingX?: number;\n gridSpacingY?: number;\n strokeWidth?: number;\n sizeRange?: number;\n opacityRange?: number;\n shape?: DotGridShape;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport type DotGridProps = Omit<ShaderMountProps, 'fragmentShader'> & DotGridParams;\n\ntype DotGridPreset = { name: string; params: Required<DotGridParams>; style?: React.CSSProperties };\n\nexport const defaultPreset: DotGridPreset = {\n name: 'Default',\n params: {\n colorFill: 'hsla(0, 0%, 0%, 1)',\n colorStroke: 'hsla(40, 100%, 50%, 1)',\n dotSize: 2,\n gridSpacingX: 50,\n gridSpacingY: 50,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Circle,\n },\n};\n\nexport const macrodataPreset: DotGridPreset = {\n name: 'Macrodata',\n params: {\n colorFill: 'hsla(218, 100%, 67%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 3,\n gridSpacingX: 25,\n gridSpacingY: 25,\n strokeWidth: 0,\n sizeRange: 0.25,\n opacityRange: 0.9,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(211, 37%, 13%, 1)',\n },\n};\n\nconst trianglesPreset: DotGridPreset = {\n name: 'Triangles',\n params: {\n colorFill: 'hsla(0, 0%, 100%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, .5)',\n dotSize: 5,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Triangle,\n },\n style: {\n background: 'hsla(0, 0%, 100%, 1)',\n },\n};\n\nconst bubblesPreset: DotGridPreset = {\n name: 'Bubbles',\n params: {\n colorFill: 'hsla(100, 30%, 100%, 1)',\n colorStroke: 'hsla(0, 100%, 0%, 1)',\n dotSize: 28,\n gridSpacingX: 60,\n gridSpacingY: 60,\n strokeWidth: 12,\n sizeRange: 0.7,\n opacityRange: 1.3,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(234, 100%, 31%, .5)',\n },\n};\n\nconst treeLinePreset: DotGridPreset = {\n name: 'Tree line',\n params: {\n colorFill: 'hsla(150, 80%, 10%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 8,\n gridSpacingX: 20,\n gridSpacingY: 90,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0.6,\n shape: DotGridShapes.Circle,\n },\n style: {\n background: 'hsla(100, 100%, 36%, .05)',\n },\n};\n\nconst diamondsPreset: DotGridPreset = {\n name: 'Diamonds',\n params: {\n colorFill: 'hsla(0, 100%, 50%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 1)',\n dotSize: 15,\n gridSpacingX: 30,\n gridSpacingY: 30,\n strokeWidth: 0,\n sizeRange: 0,\n opacityRange: 2,\n shape: DotGridShapes.Diamond,\n },\n style: {\n background: 'hsla(0, 0%, 0%, 0)',\n },\n};\n\nconst wallpaperPreset: DotGridPreset = {\n name: 'Wallpaper',\n params: {\n colorFill: 'hsla(0, 0%, 0%, 0)',\n colorStroke: 'hsla(36, 48%, 58%, 1)',\n dotSize: 9,\n gridSpacingX: 32,\n gridSpacingY: 32,\n strokeWidth: 1,\n sizeRange: 0,\n opacityRange: 0,\n shape: DotGridShapes.Diamond,\n },\n style: {\n background: 'hsla(154, 33%, 19%, 1)',\n },\n};\n\nconst matrixPreset: DotGridPreset = {\n name: 'Enter the Matrix',\n params: {\n colorFill: 'hsla(182, 100%, 64%, 1)',\n colorStroke: 'hsla(0, 100%, 100%, 0)',\n dotSize: 2,\n gridSpacingX: 10,\n gridSpacingY: 10,\n strokeWidth: 0.5,\n sizeRange: 0.25,\n opacityRange: 1,\n shape: DotGridShapes.Triangle,\n },\n style: {\n background: 'hsla(0, 100%, 0%, 1)',\n },\n};\n\nconst waveformPreset: DotGridPreset = {\n name: 'Waveform',\n params: {\n colorFill: 'hsla(227, 93%, 38%, 1)',\n colorStroke: 'hsla(0, 0%, 0%, 0)',\n dotSize: 100,\n gridSpacingX: 2,\n gridSpacingY: 215,\n strokeWidth: 0,\n sizeRange: 1,\n opacityRange: 0,\n shape: DotGridShapes.Square,\n },\n style: {\n background: 'hsla(0, 100%, 100%, 1)',\n },\n};\n\nexport const dotGridPresets: DotGridPreset[] = [\n defaultPreset,\n macrodataPreset,\n trianglesPreset,\n bubblesPreset,\n treeLinePreset,\n diamondsPreset,\n wallpaperPreset,\n matrixPreset,\n waveformPreset,\n];\n\nexport const DotGrid = ({\n colorFill,\n colorStroke,\n dotSize,\n gridSpacingX,\n gridSpacingY,\n strokeWidth,\n sizeRange,\n opacityRange,\n shape,\n ...props\n}: DotGridProps): React.ReactElement => {\n const uniforms: DotGridUniforms = useMemo(() => {\n return {\n u_colorFill: getShaderColorFromString(colorFill, defaultPreset.params.colorStroke),\n u_colorStroke: getShaderColorFromString(colorStroke, defaultPreset.params.colorStroke),\n u_dotSize: dotSize ?? defaultPreset.params.dotSize,\n u_gridSpacingX: gridSpacingX ?? defaultPreset.params.gridSpacingX,\n u_gridSpacingY: gridSpacingY ?? defaultPreset.params.gridSpacingY,\n u_strokeWidth: strokeWidth ?? defaultPreset.params.strokeWidth,\n u_sizeRange: sizeRange ?? defaultPreset.params.sizeRange,\n u_opacityRange: opacityRange ?? defaultPreset.params.opacityRange,\n u_shape: shape ?? defaultPreset.params.shape,\n };\n }, [colorFill, colorStroke, dotSize, gridSpacingX, gridSpacingY, strokeWidth, sizeRange, opacityRange, shape]);\n\n return <ShaderMount {...props} fragmentShader={dotGridFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n steppedSimplexNoiseFragmentShader,\n type SteppedSimplexNoiseUniforms,\n} from '@paper-design/shaders';\n\nexport type SteppedSimplexNoiseParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n color4?: string;\n color5?: string;\n stepsNumber?: number;\n} & GlobalParams;\n\nexport type SteppedSimplexNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & SteppedSimplexNoiseParams;\n\ntype SteppedSimplexNoisePreset = {\n name: string;\n params: Required<SteppedSimplexNoiseParams>;\n style?: React.CSSProperties;\n};\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: SteppedSimplexNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.15,\n frame: 0,\n color1: 'hsla(208, 25%, 45%, 1)',\n color2: 'hsla(94, 38%, 59%, 1)',\n color3: 'hsla(359, 94%, 62%, 1)',\n color4: 'hsla(42, 93%, 64%, 1)',\n color5: 'hsla(0, 0%, 100%, 1)',\n stepsNumber: 13,\n },\n};\n\nconst magmaPreset: SteppedSimplexNoisePreset = {\n name: 'Magma',\n params: {\n scale: 0.3,\n speed: 0.2,\n frame: 0,\n color1: 'hsla(0, 100%, 36%, 1)',\n color2: 'hsla(0, 95%, 44%, 1)',\n color3: 'hsla(20, 100%, 49%, 1)',\n color4: 'hsla(45, 100%, 45%, 1)',\n color5: 'hsla(31, 100%, 94%, 1)',\n stepsNumber: 8,\n },\n};\n\nconst bloodCellPreset: SteppedSimplexNoisePreset = {\n name: 'Blood cell',\n params: {\n scale: 1.2,\n speed: 0.22,\n frame: 0,\n color1: 'hsla(302, 43%, 13%, 1)',\n color2: 'hsla(325, 93%, 17%, 1)',\n color3: 'hsla(338, 80%, 25%, 1)',\n color4: 'hsla(338, 80%, 25%, 1)',\n color5: 'hsla(2, 85%, 72%, 1)',\n stepsNumber: 29,\n },\n};\n\nconst firstContactPreset: SteppedSimplexNoisePreset = {\n name: 'First contact',\n params: {\n scale: 1.2,\n speed: -0.1,\n frame: 0,\n color1: 'hsla(300, 43%, 82%, 1)',\n color2: 'hsla(266, 70%, 9%, 1)',\n color3: 'hsla(289, 36%, 26%, 1)',\n color4: 'hsla(0, 41%, 78%, 1)',\n color5: 'hsla(0, 100%, 96%, 1)',\n stepsNumber: 40,\n },\n};\n\nexport const steppedSimplexNoisePresets: SteppedSimplexNoisePreset[] = [\n defaultPreset,\n magmaPreset,\n bloodCellPreset,\n firstContactPreset,\n];\n\nexport const SteppedSimplexNoise = ({\n scale,\n color1,\n color2,\n color3,\n color4,\n color5,\n stepsNumber,\n ...props\n}: SteppedSimplexNoiseProps): React.ReactElement => {\n const uniforms: SteppedSimplexNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_color4: getShaderColorFromString(color4, defaultPreset.params.color4),\n u_color5: getShaderColorFromString(color5, defaultPreset.params.color5),\n u_steps_number: stepsNumber ?? defaultPreset.params.stepsNumber,\n };\n }, [scale, color1, color2, color3, color4, color5, stepsNumber]);\n\n return <ShaderMount {...props} fragmentShader={steppedSimplexNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, metaballsFragmentShader, type MetaballsUniforms } from '@paper-design/shaders';\n\nexport type MetaballsParams = {\n scale?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n ballSize?: number;\n visibilityRange?: number;\n} & GlobalParams;\n\nexport type MetaballsProps = Omit<ShaderMountProps, 'fragmentShader'> & MetaballsParams;\n\ntype MetaballsPreset = { name: string; params: Required<MetaballsParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: MetaballsPreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n color1: 'hsla(350, 90%, 55%, 1)',\n color2: 'hsla(350, 80%, 60%, 1)',\n color3: 'hsla(20, 85%, 70%, 1)',\n ballSize: 1,\n visibilityRange: 0.4,\n },\n};\n\nexport const metaballsPresets: MetaballsPreset[] = [defaultPreset];\n\nexport const Metaballs = ({\n scale,\n color1,\n color2,\n color3,\n ballSize,\n visibilityRange,\n ...props\n}: MetaballsProps): React.ReactElement => {\n const uniforms: MetaballsUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_ballSize: ballSize ?? defaultPreset.params.ballSize,\n u_visibilityRange: visibilityRange ?? defaultPreset.params.visibilityRange,\n };\n }, [scale, color1, color2, color3, ballSize, visibilityRange]);\n\n return <ShaderMount {...props} fragmentShader={metaballsFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, wavesFragmentShader, type WavesUniforms } from '@paper-design/shaders';\n\nexport type WavesParams = {\n scale?: number;\n rotation?: number;\n color?: string;\n shape?: number;\n frequency?: number;\n amplitude?: number;\n spacing?: number;\n dutyCycle?: number;\n softness?: number;\n};\n\nexport type WavesProps = Omit<ShaderMountProps, 'fragmentShader'> & WavesParams;\n\ntype WavesPreset = { name: string; params: Required<WavesParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WavesPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n color: 'hsla(204, 47%, 45%, 1)',\n shape: 1,\n frequency: 0.5,\n amplitude: 0.5,\n spacing: 0.75,\n dutyCycle: 0.2,\n softness: 0,\n },\n};\n\nexport const spikesPreset: WavesPreset = {\n name: 'Spikes',\n params: {\n scale: 2.3,\n rotation: 0,\n color: 'hsla(290, 52%, 15%, 1)',\n shape: 0,\n frequency: 0.5,\n amplitude: 0.9,\n spacing: 0.37,\n dutyCycle: 0.93,\n softness: 0.15,\n },\n style: {\n background: 'hsla(65, 100%, 95%, 1)',\n },\n};\n\nexport const groovyPreset: WavesPreset = {\n name: 'Groovy',\n params: {\n scale: 0.5,\n rotation: 1,\n color: 'hsla(20, 100%, 71%, 1)',\n shape: 2.37,\n frequency: 0.2,\n amplitude: 0.67,\n spacing: 1.17,\n dutyCycle: 0.57,\n softness: 0,\n },\n style: {\n background: 'hsla(60, 100%, 97%, 1)',\n },\n};\n\nexport const tangledUpPreset: WavesPreset = {\n name: 'Tangled up',\n params: {\n scale: 3.04,\n rotation: 1,\n color: 'hsla(85.5, 35.7%, 78%, 1)',\n shape: 3,\n frequency: 0.44,\n amplitude: 0.57,\n spacing: 1.05,\n dutyCycle: 0.97,\n softness: 0,\n },\n style: {\n background: 'hsla(198.7, 66.7%, 14.1%, 1)',\n },\n};\n\nexport const zigZagPreset: WavesPreset = {\n name: 'Zig zag',\n params: {\n scale: 2.7,\n rotation: 1,\n color: 'hsla(0, 0%, 90%, 1)',\n shape: 0,\n frequency: 0.6,\n amplitude: 0.8,\n spacing: 0.5,\n dutyCycle: 1,\n softness: 0.5,\n },\n style: {\n background: 'hsla(0, 0%, 0%, 1)',\n },\n};\n\nexport const waveRidePreset: WavesPreset = {\n name: 'Ride the wave',\n params: {\n scale: 0.84,\n rotation: 0,\n color: 'hsla(0, 0%, 12%, 1)',\n shape: 2.23,\n frequency: 0.1,\n amplitude: 0.6,\n spacing: 0.41,\n dutyCycle: 0.99,\n softness: 0,\n },\n style: {\n background: 'hsla(65, 100%, 95%, 1)',\n },\n};\n\nexport const wavesPresets: WavesPreset[] = [\n defaultPreset,\n spikesPreset,\n groovyPreset,\n tangledUpPreset,\n zigZagPreset,\n waveRidePreset,\n];\n\nexport const Waves = ({\n scale,\n rotation,\n color,\n shape,\n frequency,\n amplitude,\n spacing,\n dutyCycle,\n softness,\n ...props\n}: WavesProps): React.ReactElement => {\n const uniforms: WavesUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_rotation: rotation ?? defaultPreset.params.rotation,\n u_color: getShaderColorFromString(color, defaultPreset.params.color),\n u_shape: shape ?? defaultPreset.params.shape,\n u_frequency: frequency ?? defaultPreset.params.frequency,\n u_amplitude: amplitude ?? defaultPreset.params.amplitude,\n u_spacing: spacing ?? defaultPreset.params.spacing,\n u_dutyCycle: dutyCycle ?? defaultPreset.params.dutyCycle,\n u_softness: softness ?? defaultPreset.params.softness,\n };\n }, [scale, rotation, color, shape, frequency, amplitude, spacing, dutyCycle, softness]);\n\n return <ShaderMount {...props} fragmentShader={wavesFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, perlinNoiseFragmentShader, type PerlinNoiseUniforms } from '@paper-design/shaders';\n\nexport type PerlinNoiseParams = {\n scale?: number;\n color?: string;\n proportion?: number;\n softness?: number;\n octaveCount?: number;\n persistence?: number;\n lacunarity?: number;\n} & GlobalParams;\n\nexport type PerlinNoiseProps = Omit<ShaderMountProps, 'fragmentShader'> & PerlinNoiseParams;\n\ntype PerlinNoisePreset = { name: string; params: Required<PerlinNoiseParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: PerlinNoisePreset = {\n name: 'Default',\n params: {\n scale: 1,\n speed: 0.5,\n frame: 0,\n color: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.1,\n octaveCount: 2,\n persistence: 1,\n lacunarity: 1.5,\n },\n};\n\nexport const nintendoWaterPreset: PerlinNoisePreset = {\n name: 'Nintendo Water',\n params: {\n scale: 0.2,\n speed: 0.4,\n frame: 0,\n color: 'hsla(200, 66%, 90%, 1)',\n proportion: 0.42,\n softness: 0,\n octaveCount: 2,\n persistence: 0.55,\n lacunarity: 1.8,\n },\n style: {\n background: 'hsla(220, 66%, 50%, 1)',\n },\n};\n\nexport const colonyPreset: PerlinNoisePreset = {\n name: 'Colony',\n params: {\n scale: 0.15,\n speed: 0,\n frame: 0,\n color: 'hsla(230, 80%, 20%, 1)',\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n proportion: 0.65,\n softness: 0.35,\n },\n style: {\n background: 'hsla(56, 86%, 81%, 1)',\n },\n};\n\nexport const phosphenesPreset: PerlinNoisePreset = {\n name: 'Phosphenes',\n params: {\n scale: 0.03,\n speed: 0.15,\n frame: 0,\n color: 'hsla(150, 50%, 60%, 1)',\n proportion: 0.45,\n softness: 0.45,\n octaveCount: 6,\n persistence: 0.3,\n lacunarity: 3,\n },\n style: {\n background: 'hsla(350, 80%, 70%, 1)',\n },\n};\n\nexport const mossPreset: PerlinNoisePreset = {\n name: 'Moss',\n params: {\n scale: 0.15,\n speed: 0.02,\n frame: 0,\n color: 'hsla(0, 0%, 15%, 1)',\n proportion: 0.65,\n softness: 0.35,\n octaveCount: 6,\n persistence: 1,\n lacunarity: 2.55,\n },\n style: {\n background: 'hsla(137, 100%, 51%, 1)',\n },\n};\n\nexport const wormsPreset: PerlinNoisePreset = {\n name: 'Worms',\n params: {\n scale: 2,\n speed: 0,\n frame: 0,\n color: 'hsla(0, 0%, 35%, 1)',\n proportion: 0.5,\n softness: 0,\n octaveCount: 1,\n persistence: 1,\n lacunarity: 1.5,\n },\n style: {\n background: 'hsla(0, 100%, 100%, 1)',\n },\n};\n\nexport const perlinNoisePresets: PerlinNoisePreset[] = [\n defaultPreset,\n nintendoWaterPreset,\n colonyPreset,\n phosphenesPreset,\n mossPreset,\n wormsPreset,\n];\n\nexport const PerlinNoise = ({\n scale,\n color,\n proportion,\n softness,\n octaveCount,\n persistence,\n lacunarity,\n ...props\n}: PerlinNoiseProps): React.ReactElement => {\n const uniforms: PerlinNoiseUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_color: getShaderColorFromString(color, defaultPreset.params.color),\n u_proportion: proportion ?? defaultPreset.params.proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_octaveCount: octaveCount ?? defaultPreset.params.octaveCount,\n u_persistence: persistence ?? defaultPreset.params.persistence,\n u_lacunarity: lacunarity ?? defaultPreset.params.lacunarity,\n };\n }, [scale, color, proportion, softness, octaveCount, persistence, lacunarity]);\n\n return <ShaderMount {...props} fragmentShader={perlinNoiseFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, voronoiFragmentShader, type VoronoiUniforms } from '@paper-design/shaders';\n\nexport type VoronoiParams = {\n scale?: number;\n colorCell1?: string;\n colorCell2?: string;\n colorCell3?: string;\n colorMid?: string;\n colorGradient?: number;\n distance?: number;\n edgesSize?: number;\n edgesSoftness?: number;\n middleSize?: number;\n middleSoftness?: number;\n} & GlobalParams;\n\nexport type VoronoiProps = Omit<ShaderMountProps, 'fragmentShader'> & VoronoiParams;\n\ntype VoronoiPreset = { name: string; params: Required<VoronoiParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: VoronoiPreset = {\n name: 'Default',\n params: {\n scale: 1.5,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(15, 80%, 50%, 1)',\n colorCell2: 'hsla(180, 80%, 50%, 1)',\n colorCell3: 'hsla(200, 80%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0.5,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const classicPreset: VoronoiPreset = {\n name: 'Classic',\n params: {\n scale: 3,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 100%, 0%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.45,\n edgesSize: 0.02,\n edgesSoftness: 0.07,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const giraffePreset: VoronoiPreset = {\n name: 'Giraffe',\n params: {\n scale: 1,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(32, 100%, 18%, 1)',\n colorCell2: 'hsla(42, 93%, 35%, 1)',\n colorCell3: 'hsla(32, 100%, 18%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.2,\n edgesSoftness: 0.01,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const eyesPreset: VoronoiPreset = {\n name: 'Eyes',\n params: {\n scale: 1.6,\n speed: 0.6,\n frame: 0,\n colorCell1: 'hsla(79, 84%, 60%, 1)',\n colorCell2: 'hsla(207, 53%, 41%, 1)',\n colorCell3: 'hsla(207, 80%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.62,\n edgesSoftness: 0.01,\n middleSize: 0.1,\n middleSoftness: 0,\n },\n};\n\nexport const bubblesPreset: VoronoiPreset = {\n name: 'Bubbles',\n params: {\n scale: 2,\n speed: 0.5,\n frame: 0,\n colorCell1: 'hsla(0, 100%, 50%, 1)',\n colorCell2: 'hsla(169, 100%, 66%, 1)',\n colorCell3: 'hsla(50, 100%, 66%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.5,\n edgesSize: 0.81,\n edgesSoftness: 0.0,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const cellsPreset: VoronoiPreset = {\n name: 'Cells',\n params: {\n scale: 2,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(0, 0%, 100%, 1)',\n colorCell2: 'hsla(0, 0%, 100%, 1)',\n colorCell3: 'hsla(0, 0%, 100%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 1,\n distance: 0.38,\n edgesSize: 0.1,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const glowPreset: VoronoiPreset = {\n name: 'Glow',\n params: {\n scale: 1.2,\n speed: 0.8,\n frame: 0,\n colorCell1: 'hsla(40, 100%, 50%, 1)',\n colorCell2: 'hsla(311, 100%, 59%, 1)',\n colorCell3: 'hsla(180, 100%, 65%, 1)',\n colorMid: 'hsla(0, 0%, 100%, 1)',\n colorGradient: 1,\n distance: 0.25,\n edgesSize: 0.15,\n edgesSoftness: 0.01,\n middleSize: 0.7,\n middleSoftness: 1,\n },\n};\n\nexport const tilesPreset: VoronoiPreset = {\n name: 'Tiles',\n params: {\n scale: 1.3,\n speed: 1,\n frame: 0,\n colorCell1: 'hsla(80, 50%, 50%, 1)',\n colorCell2: 'hsla(0, 50%, 100%, 1)',\n colorCell3: 'hsla(200, 50%, 50%, 1)',\n colorMid: 'hsla(0, 0%, 0%, 1)',\n colorGradient: 0,\n distance: 0.05,\n edgesSize: 0.25,\n edgesSoftness: 0.02,\n middleSize: 0,\n middleSoftness: 0,\n },\n};\n\nexport const voronoiPresets: VoronoiPreset[] = [\n defaultPreset,\n classicPreset,\n giraffePreset,\n eyesPreset,\n bubblesPreset,\n cellsPreset,\n glowPreset,\n tilesPreset,\n];\n\nexport const Voronoi = ({\n scale,\n colorCell1,\n colorCell2,\n colorCell3,\n colorMid,\n colorGradient,\n distance,\n edgesSize,\n edgesSoftness,\n middleSize,\n middleSoftness,\n ...props\n}: VoronoiProps): React.ReactElement => {\n const uniforms: VoronoiUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_colorCell1: getShaderColorFromString(colorCell1, defaultPreset.params.colorCell1),\n u_colorCell2: getShaderColorFromString(colorCell2, defaultPreset.params.colorCell2),\n u_colorCell3: getShaderColorFromString(colorCell3, defaultPreset.params.colorCell3),\n u_colorMid: getShaderColorFromString(colorMid, defaultPreset.params.colorMid),\n u_colorGradient: colorGradient ?? defaultPreset.params.colorGradient,\n u_distance: distance ?? defaultPreset.params.distance,\n u_edgesSize: edgesSize ?? defaultPreset.params.edgesSize,\n u_edgesSoftness: edgesSoftness ?? defaultPreset.params.edgesSoftness,\n u_middleSize: middleSize ?? defaultPreset.params.middleSize,\n u_middleSoftness: middleSoftness ?? defaultPreset.params.middleSoftness,\n };\n }, [\n scale,\n colorCell1,\n colorCell3,\n colorCell2,\n colorMid,\n colorGradient,\n distance,\n edgesSize,\n edgesSoftness,\n middleSize,\n middleSoftness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={voronoiFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport {\n getShaderColorFromString,\n warpFragmentShader,\n type WarpUniforms,\n type PatternShape,\n PatternShapes,\n} from '@paper-design/shaders';\n\nexport type WarpParams = {\n scale?: number;\n rotation?: number;\n color1?: string;\n color2?: string;\n color3?: string;\n proportion?: number;\n softness?: number;\n distortion?: number;\n swirl?: number;\n swirlIterations?: number;\n shapeScale?: number;\n shape?: PatternShape;\n} & GlobalParams;\n\nexport type WarpProps = Omit<ShaderMountProps, 'fragmentShader'> & WarpParams;\n\ntype WarpPreset = { name: string; params: Required<WarpParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\n\nexport const defaultPreset: WarpPreset = {\n name: 'Default',\n params: {\n scale: 1,\n rotation: 0,\n speed: 0.1,\n frame: 0,\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(203, 80%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.35,\n softness: 1,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetCauldron: WarpPreset = {\n name: 'Cauldron Pot',\n params: {\n scale: 1.1,\n rotation: 1.62,\n speed: 1,\n frame: 0,\n color1: 'hsla(100, 51%, 75%, 1)',\n color2: 'hsla(220, 39%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.64,\n softness: 0.95,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetSilk: WarpPreset = {\n name: 'Silk',\n params: {\n scale: 0.26,\n rotation: 0,\n speed: 0.5,\n frame: 0,\n color1: 'hsla(0, 9%, 7%, 1)',\n color2: 'hsla(8, 13%, 34%, 1)',\n color3: 'hsla(5, 8%, 71%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.3,\n swirl: 0.6,\n swirlIterations: 11,\n shapeScale: 0.05,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetPassion: WarpPreset = {\n name: 'Passion',\n params: {\n scale: 0.25,\n rotation: 1.35,\n speed: 0.3,\n frame: 0,\n color1: 'hsla(0, 44.7%, 14.9%, 1)',\n color2: 'hsla(353.4, 34%, 42.2%, 1)',\n color3: 'hsla(29, 100%, 76.1%, 1)',\n proportion: 0.5,\n softness: 1,\n distortion: 0.09,\n swirl: 0.9,\n swirlIterations: 6,\n shapeScale: 0.25,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetPhantom: WarpPreset = {\n name: 'Phantom',\n params: {\n scale: 0.68,\n rotation: 1.8,\n speed: 1.25,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0.45,\n softness: 1,\n distortion: 0.16,\n swirl: 0.3,\n swirlIterations: 7,\n shapeScale: 0.1,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetAbyss: WarpPreset = {\n name: 'The Abyss',\n params: {\n scale: 0.1,\n rotation: 2,\n speed: 0.06,\n frame: 0,\n color1: 'hsla(242.2, 44.3%, 12%, 1)',\n color2: 'hsla(236.1, 80.4%, 70%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n proportion: 0,\n softness: 1,\n distortion: 0.09,\n swirl: 0.48,\n swirlIterations: 4,\n shapeScale: 0.1,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetInk: WarpPreset = {\n name: 'Live Ink',\n params: {\n scale: 0.7,\n rotation: 1.5,\n speed: 0.25,\n frame: 0,\n color1: 'hsla(210, 11.1%, 7.1%, 1)',\n color2: 'hsla(165, 9%, 65.1%, 1)',\n color3: 'hsla(84, 100%, 97.1%, 1)',\n proportion: 0.35,\n softness: 0,\n distortion: 0.25,\n swirl: 0.8,\n swirlIterations: 10,\n shapeScale: 0.26,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetIceberg: WarpPreset = {\n name: 'Iceberg',\n params: {\n scale: 1.1,\n rotation: 2,\n speed: 0.05,\n frame: 0,\n color1: 'hsla(0, 0%, 100%, 1)',\n color2: 'hsla(220, 38.7%, 32%, 1)',\n color3: 'hsla(129.2, 41.9%, 6.1%, 1)',\n proportion: 0.3,\n softness: 1,\n distortion: 0.2,\n swirl: 0.86,\n swirlIterations: 7,\n shapeScale: 0,\n shape: PatternShapes.Checks,\n },\n};\n\nexport const presetNectar: WarpPreset = {\n name: 'Nectar',\n params: {\n scale: 0.24,\n rotation: 0,\n speed: 0.42,\n frame: 0,\n color1: 'hsla(37.5, 22.2%, 7.1%, 1)',\n color2: 'hsla(38.5, 59.1%, 63.1%, 1)',\n color3: 'hsla(37.6, 30%, 95.2%, 1)',\n proportion: 0.24,\n softness: 1,\n distortion: 0.21,\n swirl: 0.57,\n swirlIterations: 10,\n shapeScale: 0.32,\n shape: PatternShapes.Edge,\n },\n};\n\nexport const presetFilteredLight: WarpPreset = {\n name: 'Filtered Light',\n params: {\n scale: 2,\n rotation: 0.44,\n speed: 0.32,\n frame: 0,\n color1: 'hsla(60.2, 7.8%, 8.3%, 1)',\n color2: 'hsla(64.4, 27.8%, 81%, 1)',\n color3: 'hsla(60, 100%, 93.9%, 1)',\n proportion: 0.25,\n softness: 1,\n distortion: 0.06,\n swirl: 0,\n swirlIterations: 0,\n shapeScale: 0,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const presetKelp: WarpPreset = {\n name: 'Kelp',\n params: {\n scale: 0.38,\n rotation: 0.6,\n speed: 2,\n frame: 0,\n color1: 'hsla(79.3, 100%, 78%, 1)',\n color2: 'hsla(112, 10.5%, 28%, 1)',\n color3: 'hsla(203.3, 50%, 7.1%, 1)',\n proportion: 1,\n softness: 0,\n distortion: 0,\n swirl: 0.15,\n swirlIterations: 0,\n shapeScale: 0.74,\n shape: PatternShapes.Stripes,\n },\n};\n\nexport const warpPresets: WarpPreset[] = [\n defaultPreset,\n presetAbyss,\n presetCauldron,\n presetFilteredLight,\n presetIceberg,\n presetInk,\n presetKelp,\n presetNectar,\n presetPassion,\n presetPhantom,\n presetSilk,\n];\n\nexport const Warp = ({\n scale,\n rotation,\n color1,\n color2,\n color3,\n proportion,\n softness,\n distortion,\n swirl,\n swirlIterations,\n shapeScale,\n shape,\n ...props\n}: WarpProps): React.ReactElement => {\n const uniforms: WarpUniforms = useMemo(() => {\n return {\n u_scale: scale ?? defaultPreset.params.scale,\n u_rotation: rotation ?? defaultPreset.params.rotation,\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color2),\n u_proportion: proportion ?? defaultPreset.params.proportion,\n u_softness: softness ?? defaultPreset.params.softness,\n u_distortion: distortion ?? defaultPreset.params.distortion,\n u_swirl: swirl ?? defaultPreset.params.swirl,\n u_swirlIterations: swirlIterations ?? defaultPreset.params.swirlIterations,\n u_shapeScale: shapeScale ?? defaultPreset.params.shapeScale,\n u_shape: shape ?? defaultPreset.params.shape,\n };\n }, [\n scale,\n rotation,\n color1,\n color2,\n color3,\n proportion,\n softness,\n distortion,\n swirl,\n swirlIterations,\n shapeScale,\n shape,\n ]);\n\n return <ShaderMount {...props} fragmentShader={warpFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, godRaysFragmentShader, type GodRaysUniforms } from '@paper-design/shaders';\n\nexport type GodRaysParams = {\n colorBack?: string;\n color1?: string;\n color2?: string;\n color3?: string;\n offsetX?: number;\n offsetY?: number;\n frequency?: number;\n spotty?: number;\n midIntensity?: number;\n midSize?: number;\n density?: number;\n blending?: number;\n} & GlobalParams;\n\nexport type GodRaysProps = Omit<ShaderMountProps, 'fragmentShader'> & GodRaysParams;\n\ntype GodRaysPreset = { name: string; params: Required<GodRaysParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: GodRaysPreset = {\n name: 'Default',\n params: {\n colorBack: 'hsla(215, 100%, 11%, 1)',\n color1: 'hsla(45, 100%, 70%, 1)',\n color2: 'hsla(10, 100%, 80%, 1)',\n color3: 'hsla(178, 100%, 83%, 1)',\n offsetX: -0.6,\n offsetY: -0.6,\n frequency: 6,\n spotty: 0.28,\n midIntensity: 0.97,\n midSize: 2,\n density: 0.3,\n blending: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const auroraPreset: GodRaysPreset = {\n name: 'Aurora',\n params: {\n colorBack: 'hsla(0, 0%, 25%, 1)',\n color1: 'hsla(239, 100%, 70%, 1)',\n color2: 'hsla(150, 100%, 70%, 1)',\n color3: 'hsla(200, 100%, 70%, 1)',\n offsetX: 0,\n offsetY: 1,\n frequency: 2.4,\n spotty: 0.9,\n midIntensity: 0.8,\n midSize: 2.1,\n density: 0.5,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n};\n\nexport const warpPreset: GodRaysPreset = {\n name: 'Warp',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsla(317, 100%, 50%, 1)',\n color2: 'hsla(25, 100%, 50%, 1)',\n color3: 'hsla(0, 0%, 100%, 1)',\n offsetX: 0,\n offsetY: 0,\n frequency: 1.2,\n spotty: 0.15,\n midIntensity: 0,\n midSize: 0,\n density: 0.79,\n blending: 0.4,\n speed: 2,\n frame: 0,\n },\n};\n\nexport const linearPreset: GodRaysPreset = {\n name: 'Linear',\n params: {\n colorBack: 'hsla(0, 0%, 0%, 1)',\n color1: 'hsl(0 0% 100% / 12%)',\n color2: 'hsl(0 0% 100% / 24%)',\n color3: 'hsl(0 0% 100% / 16%)',\n offsetX: 0.2,\n offsetY: -0.7,\n frequency: 1.2,\n spotty: 0.25,\n midSize: 1.1,\n midIntensity: 0.75,\n density: 0.79,\n blending: 1,\n speed: 0.5,\n frame: 0,\n },\n};\n\nexport const etherPreset: GodRaysPreset = {\n name: 'Ether',\n params: {\n colorBack: 'hsl(226.7 50% 7.1% / 100%)',\n color1: 'hsl(215 100% 53.9% / 65.1%)',\n color2: 'hsl(214.4 85.9% 86.1% / 74.9%)',\n color3: 'hsl(225 31.4% 20% / 100%)',\n offsetX: -0.6,\n offsetY: 0,\n frequency: 0.3,\n spotty: 0.77,\n midSize: 1.1,\n midIntensity: 0.5,\n density: 0.6,\n blending: 0.6,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const godRaysPresets: GodRaysPreset[] = [defaultPreset, auroraPreset, warpPreset, linearPreset, etherPreset];\n\nexport const GodRays = ({\n colorBack,\n color1,\n color2,\n color3,\n offsetX,\n offsetY,\n frequency,\n spotty,\n midIntensity,\n midSize,\n density,\n blending,\n ...props\n}: GodRaysProps): React.ReactElement => {\n const uniforms: GodRaysUniforms = useMemo(() => {\n return {\n u_colorBack: getShaderColorFromString(colorBack, defaultPreset.params.colorBack),\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_color3: getShaderColorFromString(color3, defaultPreset.params.color3),\n u_offsetX: offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: offsetY ?? defaultPreset.params.offsetY,\n u_frequency: frequency ?? defaultPreset.params.frequency,\n u_spotty: spotty ?? defaultPreset.params.spotty,\n u_midIntensity: midIntensity ?? defaultPreset.params.midIntensity,\n u_midSize: midSize ?? defaultPreset.params.midSize,\n u_density: density ?? defaultPreset.params.density,\n u_blending: blending ?? defaultPreset.params.blending,\n };\n }, [\n colorBack,\n color1,\n color2,\n color3,\n offsetX,\n offsetY,\n frequency,\n spotty,\n midIntensity,\n midSize,\n density,\n blending,\n ]);\n\n return <ShaderMount {...props} fragmentShader={godRaysFragmentShader} uniforms={uniforms} />;\n};\n", "import { useMemo } from 'react';\nimport { ShaderMount, type GlobalParams, type ShaderMountProps } from '../shader-mount';\nimport { getShaderColorFromString, spiralFragmentShader, type SpiralUniforms } from '@paper-design/shaders';\n\nexport type SpiralParams = {\n color1?: string;\n color2?: string;\n scale?: number;\n offsetX?: number;\n offsetY?: number;\n spiralDensity?: number;\n spiralDistortion?: number;\n strokeWidth?: number;\n strokeTaper?: number;\n strokeCap?: number;\n noiseFreq?: number;\n noisePower?: number;\n softness?: number;\n} & GlobalParams;\n\nexport type SpiralProps = Omit<ShaderMountProps, 'fragmentShader'> & SpiralParams;\n\ntype SpiralPreset = { name: string; params: Required<SpiralParams>; style?: React.CSSProperties };\n\n// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highmidIntensity bug)\n\nexport const defaultPreset: SpiralPreset = {\n name: 'Default',\n params: {\n color1: 'hsla(0, 0%, 98%, 1)',\n color2: 'hsla(0, 0%, 50%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.01,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const noisyPreset: SpiralPreset = {\n name: 'Noisy',\n params: {\n color1: 'hsla(87, 77%, 53%, 1)',\n color2: 'hsla(109, 70%, 31%, 1)',\n scale: 1.3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.5,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0.5,\n noiseFreq: 0.1,\n noisePower: 1,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const dropletPreset: SpiralPreset = {\n name: 'Droplet',\n params: {\n color1: 'hsla(320, 50%, 50%, 1)',\n color2: 'hsla(190, 50%, 95%, 1)',\n scale: 0.65,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.05,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const sandPreset: SpiralPreset = {\n name: 'Sand',\n params: {\n color1: 'hsla(45, 25%, 50%, 1)',\n color2: 'hsla(0, 0%, 87%, 1)',\n scale: 3,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.15,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 30,\n noisePower: 1,\n softness: 0.2,\n speed: 0,\n frame: 0,\n },\n};\n\nexport const swirlPreset: SpiralPreset = {\n name: 'Swirl',\n params: {\n color1: 'hsla(160, 50%, 80%, 1)',\n color2: 'hsla(220, 50%, 20%, 1)',\n scale: 4,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0.8,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.5,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const hookPreset: SpiralPreset = {\n name: 'Hook',\n params: {\n color1: 'hsla(0, 0%, 0%, 1)',\n color2: 'hsla(200, 50%, 70%, 1)',\n scale: 0.8,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0,\n strokeWidth: 0.5,\n strokeTaper: 0.5,\n strokeCap: 0,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.02,\n speed: 3,\n frame: 0,\n },\n};\n\nexport const vinylPreset: SpiralPreset = {\n name: 'Vinyl',\n params: {\n color1: 'hsla(0, 0%, 15%, 1)',\n color2: 'hsla(320, 5%, 75%, 1)',\n scale: 1,\n offsetX: 0,\n offsetY: 0,\n spiralDensity: 0,\n spiralDistortion: 0.3,\n strokeWidth: 0.95,\n strokeTaper: 0,\n strokeCap: 1,\n noiseFreq: 0,\n noisePower: 0,\n softness: 0.11,\n speed: 1,\n frame: 0,\n },\n};\n\nexport const spiralPresets: SpiralPreset[] = [\n defaultPreset,\n noisyPreset,\n dropletPreset,\n swirlPreset,\n sandPreset,\n hookPreset,\n vinylPreset,\n];\n\nexport const Spiral = ({\n color1,\n color2,\n scale,\n offsetX,\n offsetY,\n spiralDensity,\n spiralDistortion,\n strokeWidth,\n strokeTaper,\n strokeCap,\n noiseFreq,\n noisePower,\n softness,\n ...props\n}: SpiralProps): React.ReactElement => {\n const uniforms: SpiralUniforms = useMemo(() => {\n return {\n u_color1: getShaderColorFromString(color1, defaultPreset.params.color1),\n u_color2: getShaderColorFromString(color2, defaultPreset.params.color2),\n u_scale: scale ?? defaultPreset.params.scale,\n u_offsetX: offsetX ?? defaultPreset.params.offsetX,\n u_offsetY: offsetY ?? defaultPreset.params.offsetY,\n u_spiralDensity: spiralDensity ?? defaultPreset.params.spiralDensity,\n u_spiralDistortion: spiralDistortion ?? defaultPreset.params.spiralDistortion,\n u_strokeWidth: strokeWidth ?? defaultPreset.params.strokeWidth,\n u_strokeTaper: strokeTaper ?? defaultPreset.params.strokeTaper,\n u_strokeCap: strokeCap ?? defaultPreset.params.strokeCap,\n u_noiseFreq: noiseFreq ?? defaultPreset.params.noiseFreq,\n u_noisePower: noisePower ?? defaultPreset.params.noisePower,\n u_softness: softness ?? defaultPreset.params.softness,\n };\n }, [\n color1,\n color2,\n scale,\n offsetX,\n offsetY,\n spiralDensity,\n spiralDistortion,\n strokeWidth,\n strokeTaper,\n strokeCap,\n noiseFreq,\n noisePower,\n softness,\n ]);\n\n return <ShaderMount {...props} fragmentShader={spiralFragmentShader} uniforms={uniforms} />;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useRef", "useRef", "useMemo", "jsx", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "DotGridShapes", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "bubblesPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "PatternShapes", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "useMemo", "getShaderColorFromString", "jsx", "defaultPreset", "useMemo", "getShaderColorFromString"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paper-design/shaders-react",
3
- "version": "0.0.28",
3
+ "version": "0.0.29",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -23,7 +23,7 @@
23
23
  "type-check": "tsc --project tsconfig.json"
24
24
  },
25
25
  "dependencies": {
26
- "@paper-design/shaders": "0.0.25",
26
+ "@paper-design/shaders": "0.0.26",
27
27
  "react": ">=18"
28
28
  },
29
29
  "devDependencies": {