@paper-design/shaders-react 0.0.0-canary.390a3d9

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.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/color-props-are-equal.d.ts +6 -0
  4. package/dist/color-props-are-equal.js +34 -0
  5. package/dist/color-props-are-equal.js.map +7 -0
  6. package/dist/index.d.ts +86 -0
  7. package/dist/index.js +129 -0
  8. package/dist/index.js.map +7 -0
  9. package/dist/shader-mount.d.ts +38 -0
  10. package/dist/shader-mount.js +149 -0
  11. package/dist/shader-mount.js.map +7 -0
  12. package/dist/shaders/color-panels.d.ts +12 -0
  13. package/dist/shaders/color-panels.js +173 -0
  14. package/dist/shaders/color-panels.js.map +7 -0
  15. package/dist/shaders/dithering.d.ts +16 -0
  16. package/dist/shaders/dithering.js +158 -0
  17. package/dist/shaders/dithering.js.map +7 -0
  18. package/dist/shaders/dot-grid.d.ts +9 -0
  19. package/dist/shaders/dot-grid.js +139 -0
  20. package/dist/shaders/dot-grid.js.map +7 -0
  21. package/dist/shaders/dot-orbit.d.ts +12 -0
  22. package/dist/shaders/dot-orbit.js +130 -0
  23. package/dist/shaders/dot-orbit.js.map +7 -0
  24. package/dist/shaders/fluted-glass.d.ts +14 -0
  25. package/dist/shaders/fluted-glass.js +183 -0
  26. package/dist/shaders/fluted-glass.js.map +7 -0
  27. package/dist/shaders/god-rays.d.ts +12 -0
  28. package/dist/shaders/god-rays.js +150 -0
  29. package/dist/shaders/god-rays.js.map +7 -0
  30. package/dist/shaders/grain-gradient.d.ts +14 -0
  31. package/dist/shaders/grain-gradient.js +177 -0
  32. package/dist/shaders/grain-gradient.js.map +7 -0
  33. package/dist/shaders/heatmap.d.ts +14 -0
  34. package/dist/shaders/heatmap.js +161 -0
  35. package/dist/shaders/heatmap.js.map +7 -0
  36. package/dist/shaders/image-dithering.d.ts +14 -0
  37. package/dist/shaders/image-dithering.js +145 -0
  38. package/dist/shaders/image-dithering.js.map +7 -0
  39. package/dist/shaders/image-halftone-dots.d.ts +12 -0
  40. package/dist/shaders/image-halftone-dots.js +171 -0
  41. package/dist/shaders/image-halftone-dots.js.map +7 -0
  42. package/dist/shaders/liquid-metal.d.ts +16 -0
  43. package/dist/shaders/liquid-metal.js +201 -0
  44. package/dist/shaders/liquid-metal.js.map +7 -0
  45. package/dist/shaders/mesh-gradient.d.ts +12 -0
  46. package/dist/shaders/mesh-gradient.js +129 -0
  47. package/dist/shaders/mesh-gradient.js.map +7 -0
  48. package/dist/shaders/metaballs.d.ts +12 -0
  49. package/dist/shaders/metaballs.js +121 -0
  50. package/dist/shaders/metaballs.js.map +7 -0
  51. package/dist/shaders/neuro-noise.d.ts +12 -0
  52. package/dist/shaders/neuro-noise.js +126 -0
  53. package/dist/shaders/neuro-noise.js.map +7 -0
  54. package/dist/shaders/paper-texture.d.ts +20 -0
  55. package/dist/shaders/paper-texture.js +198 -0
  56. package/dist/shaders/paper-texture.js.map +7 -0
  57. package/dist/shaders/perlin-noise.d.ts +12 -0
  58. package/dist/shaders/perlin-noise.js +142 -0
  59. package/dist/shaders/perlin-noise.js.map +7 -0
  60. package/dist/shaders/pulsing-border.d.ts +12 -0
  61. package/dist/shaders/pulsing-border.js +216 -0
  62. package/dist/shaders/pulsing-border.js.map +7 -0
  63. package/dist/shaders/simplex-noise.d.ts +12 -0
  64. package/dist/shaders/simplex-noise.js +125 -0
  65. package/dist/shaders/simplex-noise.js.map +7 -0
  66. package/dist/shaders/smoke-ring.d.ts +12 -0
  67. package/dist/shaders/smoke-ring.js +137 -0
  68. package/dist/shaders/smoke-ring.js.map +7 -0
  69. package/dist/shaders/spiral.d.ts +12 -0
  70. package/dist/shaders/spiral.js +151 -0
  71. package/dist/shaders/spiral.js.map +7 -0
  72. package/dist/shaders/static-mesh-gradient.d.ts +12 -0
  73. package/dist/shaders/static-mesh-gradient.js +158 -0
  74. package/dist/shaders/static-mesh-gradient.js.map +7 -0
  75. package/dist/shaders/static-radial-gradient.d.ts +12 -0
  76. package/dist/shaders/static-radial-gradient.js +178 -0
  77. package/dist/shaders/static-radial-gradient.js.map +7 -0
  78. package/dist/shaders/swirl.d.ts +12 -0
  79. package/dist/shaders/swirl.js +146 -0
  80. package/dist/shaders/swirl.js.map +7 -0
  81. package/dist/shaders/voronoi.d.ts +12 -0
  82. package/dist/shaders/voronoi.js +137 -0
  83. package/dist/shaders/voronoi.js.map +7 -0
  84. package/dist/shaders/warp.d.ts +14 -0
  85. package/dist/shaders/warp.js +194 -0
  86. package/dist/shaders/warp.js.map +7 -0
  87. package/dist/shaders/water.d.ts +14 -0
  88. package/dist/shaders/water.js +148 -0
  89. package/dist/shaders/water.js.map +7 -0
  90. package/dist/shaders/waves.d.ts +12 -0
  91. package/dist/shaders/waves.js +136 -0
  92. package/dist/shaders/waves.js.map +7 -0
  93. package/dist/suspend.d.ts +8 -0
  94. package/dist/suspend.js +43 -0
  95. package/dist/suspend.js.map +7 -0
  96. package/dist/transparent-pixel.d.ts +1 -0
  97. package/dist/transparent-pixel.js +10 -0
  98. package/dist/transparent-pixel.js.map +7 -0
  99. package/dist/use-merge-refs.d.ts +6 -0
  100. package/dist/use-merge-refs.js +48 -0
  101. package/dist/use-merge-refs.js.map +7 -0
  102. package/package.json +41 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Lost Coast Labs, Inc. (Paper Design)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # @paper-design/shaders-react
2
+
3
+ ## Usage
4
+
5
+ ```
6
+ import { MeshGradient, DotOrbit } from '@paper-design/shaders-react';
7
+
8
+ <MeshGradient
9
+ colors={['#5100ff', '#00ff80', '#ffcc00', '#ea00ff']}
10
+ distortion={1}
11
+ swirl={0.8}
12
+ speed={0.2}
13
+ style={{width: 200, height: 200}}
14
+ />
15
+
16
+ <DotOrbit
17
+ colors={['#d2822d', '#0c3b7e', '#b31a57', '#37a066']}
18
+ colorBack={'#000000'}
19
+ scale={0.3}
20
+ style={{width: 200, height: 200}}
21
+ />
22
+
23
+
24
+ // these settings can be configured in code or designed in Paper
25
+ ```
26
+
27
+ ## Release notes
28
+
29
+ [View changelog →](https://github.com/paper-design/shaders/blob/main/CHANGELOG.md)
@@ -0,0 +1,6 @@
1
+ interface PropsWithColors {
2
+ colors?: string[];
3
+ [key: string]: unknown;
4
+ }
5
+ export declare function colorPropsAreEqual(prevProps: PropsWithColors, nextProps: PropsWithColors): boolean;
6
+ export {};
@@ -0,0 +1,34 @@
1
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
+ * Paper Shaders *
3
+ * https://github.com/paper-design/shaders *
4
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5
+
6
+ function colorPropsAreEqual(prevProps, nextProps) {
7
+ for (const key in prevProps) {
8
+ if (key === "colors") {
9
+ const prevIsArray = Array.isArray(prevProps.colors);
10
+ const nextIsArray = Array.isArray(nextProps.colors);
11
+ if (!prevIsArray || !nextIsArray) {
12
+ if (Object.is(prevProps.colors, nextProps.colors) === false) {
13
+ return false;
14
+ }
15
+ continue;
16
+ }
17
+ if (prevProps.colors?.length !== nextProps.colors?.length) {
18
+ return false;
19
+ }
20
+ if (!prevProps.colors?.every((color, index) => color === nextProps.colors?.[index])) {
21
+ return false;
22
+ }
23
+ continue;
24
+ }
25
+ if (Object.is(prevProps[key], nextProps[key]) === false) {
26
+ return false;
27
+ }
28
+ }
29
+ return true;
30
+ }
31
+ export {
32
+ colorPropsAreEqual
33
+ };
34
+ //# sourceMappingURL=color-props-are-equal.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/color-props-are-equal.ts"],
4
+ "sourcesContent": ["interface PropsWithColors {\n colors?: string[];\n [key: string]: unknown;\n}\n\nexport function colorPropsAreEqual(prevProps: PropsWithColors, nextProps: PropsWithColors): boolean {\n for (const key in prevProps) {\n if (key === 'colors') {\n const prevIsArray = Array.isArray(prevProps.colors);\n const nextIsArray = Array.isArray(nextProps.colors);\n\n if (!prevIsArray || !nextIsArray) {\n if (Object.is(prevProps.colors, nextProps.colors) === false) {\n return false;\n }\n\n continue;\n }\n\n if (prevProps.colors?.length !== nextProps.colors?.length) {\n return false;\n }\n\n if (!prevProps.colors?.every((color, index) => color === nextProps.colors?.[index])) {\n return false;\n }\n\n continue;\n }\n\n if (Object.is(prevProps[key], nextProps[key]) === false) {\n return false;\n }\n }\n\n return true;\n}\n"],
5
+ "mappings": ";;;;;AAKO,SAAS,mBAAmB,WAA4B,WAAqC;AAClG,aAAW,OAAO,WAAW;AAC3B,QAAI,QAAQ,UAAU;AACpB,YAAM,cAAc,MAAM,QAAQ,UAAU,MAAM;AAClD,YAAM,cAAc,MAAM,QAAQ,UAAU,MAAM;AAElD,UAAI,CAAC,eAAe,CAAC,aAAa;AAChC,YAAI,OAAO,GAAG,UAAU,QAAQ,UAAU,MAAM,MAAM,OAAO;AAC3D,iBAAO;AAAA,QACT;AAEA;AAAA,MACF;AAEA,UAAI,UAAU,QAAQ,WAAW,UAAU,QAAQ,QAAQ;AACzD,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,UAAU,QAAQ,MAAM,CAAC,OAAO,UAAU,UAAU,UAAU,SAAS,KAAK,CAAC,GAAG;AACnF,eAAO;AAAA,MACT;AAEA;AAAA,IACF;AAEA,QAAI,OAAO,GAAG,UAAU,GAAG,GAAG,UAAU,GAAG,CAAC,MAAM,OAAO;AACvD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,86 @@
1
+ export { ShaderMount } from './shader-mount.js';
2
+ export type { ShaderMountProps, ShaderComponentProps } from './shader-mount.js';
3
+ export { MeshGradient, meshGradientPresets } from './shaders/mesh-gradient.js';
4
+ export type { MeshGradientProps } from './shaders/mesh-gradient.js';
5
+ export type { MeshGradientUniforms, MeshGradientParams } from '@paper-design/shaders';
6
+ export { SmokeRing, smokeRingPresets } from './shaders/smoke-ring.js';
7
+ export type { SmokeRingProps } from './shaders/smoke-ring.js';
8
+ export type { SmokeRingUniforms, SmokeRingParams } from '@paper-design/shaders';
9
+ export { NeuroNoise, neuroNoisePresets } from './shaders/neuro-noise.js';
10
+ export type { NeuroNoiseProps } from './shaders/neuro-noise.js';
11
+ export type { NeuroNoiseUniforms, NeuroNoiseParams } from '@paper-design/shaders';
12
+ export { DotOrbit, dotOrbitPresets } from './shaders/dot-orbit.js';
13
+ export type { DotOrbitProps } from './shaders/dot-orbit.js';
14
+ export type { DotOrbitUniforms, DotOrbitParams } from '@paper-design/shaders';
15
+ export { DotGrid, dotGridPresets } from './shaders/dot-grid.js';
16
+ export type { DotGridProps } from './shaders/dot-grid.js';
17
+ export type { DotGridUniforms, DotGridParams } from '@paper-design/shaders';
18
+ export { SimplexNoise, simplexNoisePresets } from './shaders/simplex-noise.js';
19
+ export type { SimplexNoiseProps } from './shaders/simplex-noise.js';
20
+ export type { SimplexNoiseUniforms, SimplexNoiseParams } from '@paper-design/shaders';
21
+ export { Metaballs, metaballsPresets } from './shaders/metaballs.js';
22
+ export type { MetaballsProps } from './shaders/metaballs.js';
23
+ export type { MetaballsUniforms, MetaballsParams } from '@paper-design/shaders';
24
+ export { Waves, wavesPresets } from './shaders/waves.js';
25
+ export type { WavesProps } from './shaders/waves.js';
26
+ export type { WavesUniforms, WavesParams } from '@paper-design/shaders';
27
+ export { PerlinNoise, perlinNoisePresets } from './shaders/perlin-noise.js';
28
+ export type { PerlinNoiseProps } from './shaders/perlin-noise.js';
29
+ export type { PerlinNoiseUniforms, PerlinNoiseParams } from '@paper-design/shaders';
30
+ export { Voronoi, voronoiPresets } from './shaders/voronoi.js';
31
+ export type { VoronoiProps } from './shaders/voronoi.js';
32
+ export type { VoronoiUniforms, VoronoiParams } from '@paper-design/shaders';
33
+ export { Warp, warpPresets } from './shaders/warp.js';
34
+ export type { WarpProps } from './shaders/warp.js';
35
+ export type { WarpUniforms, WarpParams, WarpPattern } from '@paper-design/shaders';
36
+ export { GodRays, godRaysPresets } from './shaders/god-rays.js';
37
+ export type { GodRaysProps } from './shaders/god-rays.js';
38
+ export type { GodRaysUniforms, GodRaysParams } from '@paper-design/shaders';
39
+ export { Spiral, spiralPresets } from './shaders/spiral.js';
40
+ export type { SpiralProps } from './shaders/spiral.js';
41
+ export type { SpiralUniforms, SpiralParams } from '@paper-design/shaders';
42
+ export { Swirl, swirlPresets } from './shaders/swirl.js';
43
+ export type { SwirlProps } from './shaders/swirl.js';
44
+ export type { SwirlUniforms, SwirlParams } from '@paper-design/shaders';
45
+ export { Dithering, ditheringPresets } from './shaders/dithering.js';
46
+ export type { DitheringProps } from './shaders/dithering.js';
47
+ export type { DitheringUniforms, DitheringParams } from '@paper-design/shaders';
48
+ export { GrainGradient, grainGradientPresets } from './shaders/grain-gradient.js';
49
+ export type { GrainGradientProps } from './shaders/grain-gradient.js';
50
+ export type { GrainGradientUniforms, GrainGradientParams } from '@paper-design/shaders';
51
+ export { PulsingBorder, pulsingBorderPresets } from './shaders/pulsing-border.js';
52
+ export type { PulsingBorderProps } from './shaders/pulsing-border.js';
53
+ export type { PulsingBorderUniforms, PulsingBorderParams } from '@paper-design/shaders';
54
+ export { ColorPanels, colorPanelsPresets } from './shaders/color-panels.js';
55
+ export type { ColorPanelsProps } from './shaders/color-panels.js';
56
+ export type { ColorPanelsUniforms, ColorPanelsParams } from '@paper-design/shaders';
57
+ export { StaticMeshGradient, staticMeshGradientPresets } from './shaders/static-mesh-gradient.js';
58
+ export type { StaticMeshGradientProps } from './shaders/static-mesh-gradient.js';
59
+ export type { StaticMeshGradientUniforms, StaticMeshGradientParams } from '@paper-design/shaders';
60
+ export { StaticRadialGradient, staticRadialGradientPresets } from './shaders/static-radial-gradient.js';
61
+ export type { StaticRadialGradientProps } from './shaders/static-radial-gradient.js';
62
+ export type { StaticRadialGradientUniforms, StaticRadialGradientParams } from '@paper-design/shaders';
63
+ export { PaperTexture, paperTexturePresets } from './shaders/paper-texture.js';
64
+ export type { PaperTextureProps } from './shaders/paper-texture.js';
65
+ export type { PaperTextureUniforms, PaperTextureParams } from '@paper-design/shaders';
66
+ export { FlutedGlass, flutedGlassPresets } from './shaders/fluted-glass.js';
67
+ export { type FlutedGlassProps } from './shaders/fluted-glass.js';
68
+ export { type FlutedGlassUniforms, type FlutedGlassParams } from '@paper-design/shaders';
69
+ export { Water, waterPresets } from './shaders/water.js';
70
+ export type { WaterProps } from './shaders/water.js';
71
+ export type { WaterUniforms, WaterParams } from '@paper-design/shaders';
72
+ export { ImageDithering, imageDitheringPresets } from './shaders/image-dithering.js';
73
+ export type { ImageDitheringProps } from './shaders/image-dithering.js';
74
+ export type { ImageDitheringUniforms, ImageDitheringParams } from '@paper-design/shaders';
75
+ export { Heatmap, heatmapPresets } from './shaders/heatmap.js';
76
+ export type { HeatmapProps } from './shaders/heatmap.js';
77
+ export type { HeatmapUniforms, HeatmapParams } from '@paper-design/shaders';
78
+ export { LiquidMetal, liquidMetalPresets } from './shaders/liquid-metal.js';
79
+ export type { LiquidMetalProps } from './shaders/liquid-metal.js';
80
+ export type { LiquidMetalUniforms, LiquidMetalParams } from '@paper-design/shaders';
81
+ export { ImageHalftoneDots, imageHalftoneDotsPresets } from './shaders/image-halftone-dots.js';
82
+ export type { ImageHalftoneDotsProps } from './shaders/image-halftone-dots.js';
83
+ export type { ImageHalftoneDotsUniforms, ImageHalftoneDotsParams } from '@paper-design/shaders';
84
+ export { isPaperShaderElement, getShaderColorFromString } from '@paper-design/shaders';
85
+ export type { PaperShaderElement, ShaderFit, ShaderSizingParams, ShaderSizingUniforms } from '@paper-design/shaders';
86
+ export { colorPanelsMeta, dotOrbitMeta, godRaysMeta, grainGradientMeta, meshGradientMeta, metaballsMeta, pulsingBorderMeta, simplexNoiseMeta, smokeRingMeta, swirlMeta, voronoiMeta, warpMeta, heatmapMeta, staticMeshGradientMeta, staticRadialGradientMeta, } from '@paper-design/shaders';
package/dist/index.js ADDED
@@ -0,0 +1,129 @@
1
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
+ * Paper Shaders *
3
+ * https://github.com/paper-design/shaders *
4
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5
+
6
+ "use client";
7
+ import { ShaderMount } from "./shader-mount.js";
8
+ import { MeshGradient, meshGradientPresets } from "./shaders/mesh-gradient.js";
9
+ import { SmokeRing, smokeRingPresets } from "./shaders/smoke-ring.js";
10
+ import { NeuroNoise, neuroNoisePresets } from "./shaders/neuro-noise.js";
11
+ import { DotOrbit, dotOrbitPresets } from "./shaders/dot-orbit.js";
12
+ import { DotGrid, dotGridPresets } from "./shaders/dot-grid.js";
13
+ import { SimplexNoise, simplexNoisePresets } from "./shaders/simplex-noise.js";
14
+ import { Metaballs, metaballsPresets } from "./shaders/metaballs.js";
15
+ import { Waves, wavesPresets } from "./shaders/waves.js";
16
+ import { PerlinNoise, perlinNoisePresets } from "./shaders/perlin-noise.js";
17
+ import { Voronoi, voronoiPresets } from "./shaders/voronoi.js";
18
+ import { Warp, warpPresets } from "./shaders/warp.js";
19
+ import { GodRays, godRaysPresets } from "./shaders/god-rays.js";
20
+ import { Spiral, spiralPresets } from "./shaders/spiral.js";
21
+ import { Swirl, swirlPresets } from "./shaders/swirl.js";
22
+ import { Dithering, ditheringPresets } from "./shaders/dithering.js";
23
+ import { GrainGradient, grainGradientPresets } from "./shaders/grain-gradient.js";
24
+ import { PulsingBorder, pulsingBorderPresets } from "./shaders/pulsing-border.js";
25
+ import { ColorPanels, colorPanelsPresets } from "./shaders/color-panels.js";
26
+ import { StaticMeshGradient, staticMeshGradientPresets } from "./shaders/static-mesh-gradient.js";
27
+ import { StaticRadialGradient, staticRadialGradientPresets } from "./shaders/static-radial-gradient.js";
28
+ import { PaperTexture, paperTexturePresets } from "./shaders/paper-texture.js";
29
+ import { FlutedGlass, flutedGlassPresets } from "./shaders/fluted-glass.js";
30
+ import {} from "./shaders/fluted-glass.js";
31
+ import {} from "@paper-design/shaders";
32
+ import { Water, waterPresets } from "./shaders/water.js";
33
+ import { ImageDithering, imageDitheringPresets } from "./shaders/image-dithering.js";
34
+ import { Heatmap, heatmapPresets } from "./shaders/heatmap.js";
35
+ import { LiquidMetal, liquidMetalPresets } from "./shaders/liquid-metal.js";
36
+ import { ImageHalftoneDots, imageHalftoneDotsPresets } from "./shaders/image-halftone-dots.js";
37
+ import { isPaperShaderElement, getShaderColorFromString } from "@paper-design/shaders";
38
+ import {
39
+ colorPanelsMeta,
40
+ dotOrbitMeta,
41
+ godRaysMeta,
42
+ grainGradientMeta,
43
+ meshGradientMeta,
44
+ metaballsMeta,
45
+ pulsingBorderMeta,
46
+ simplexNoiseMeta,
47
+ smokeRingMeta,
48
+ swirlMeta,
49
+ voronoiMeta,
50
+ warpMeta,
51
+ heatmapMeta,
52
+ staticMeshGradientMeta,
53
+ staticRadialGradientMeta
54
+ } from "@paper-design/shaders";
55
+ export {
56
+ ColorPanels,
57
+ Dithering,
58
+ DotGrid,
59
+ DotOrbit,
60
+ FlutedGlass,
61
+ GodRays,
62
+ GrainGradient,
63
+ Heatmap,
64
+ ImageDithering,
65
+ ImageHalftoneDots,
66
+ LiquidMetal,
67
+ MeshGradient,
68
+ Metaballs,
69
+ NeuroNoise,
70
+ PaperTexture,
71
+ PerlinNoise,
72
+ PulsingBorder,
73
+ ShaderMount,
74
+ SimplexNoise,
75
+ SmokeRing,
76
+ Spiral,
77
+ StaticMeshGradient,
78
+ StaticRadialGradient,
79
+ Swirl,
80
+ Voronoi,
81
+ Warp,
82
+ Water,
83
+ Waves,
84
+ colorPanelsMeta,
85
+ colorPanelsPresets,
86
+ ditheringPresets,
87
+ dotGridPresets,
88
+ dotOrbitMeta,
89
+ dotOrbitPresets,
90
+ flutedGlassPresets,
91
+ getShaderColorFromString,
92
+ godRaysMeta,
93
+ godRaysPresets,
94
+ grainGradientMeta,
95
+ grainGradientPresets,
96
+ heatmapMeta,
97
+ heatmapPresets,
98
+ imageDitheringPresets,
99
+ imageHalftoneDotsPresets,
100
+ isPaperShaderElement,
101
+ liquidMetalPresets,
102
+ meshGradientMeta,
103
+ meshGradientPresets,
104
+ metaballsMeta,
105
+ metaballsPresets,
106
+ neuroNoisePresets,
107
+ paperTexturePresets,
108
+ perlinNoisePresets,
109
+ pulsingBorderMeta,
110
+ pulsingBorderPresets,
111
+ simplexNoiseMeta,
112
+ simplexNoisePresets,
113
+ smokeRingMeta,
114
+ smokeRingPresets,
115
+ spiralPresets,
116
+ staticMeshGradientMeta,
117
+ staticMeshGradientPresets,
118
+ staticRadialGradientMeta,
119
+ staticRadialGradientPresets,
120
+ swirlMeta,
121
+ swirlPresets,
122
+ voronoiMeta,
123
+ voronoiPresets,
124
+ warpMeta,
125
+ warpPresets,
126
+ waterPresets,
127
+ wavesPresets
128
+ };
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["'use client';\n\nexport { ShaderMount } from './shader-mount.js';\nexport type { ShaderMountProps, ShaderComponentProps } from './shader-mount.js';\n\nexport { MeshGradient, meshGradientPresets } from './shaders/mesh-gradient.js';\nexport type { MeshGradientProps } from './shaders/mesh-gradient.js';\nexport type { MeshGradientUniforms, MeshGradientParams } from '@paper-design/shaders';\n\nexport { SmokeRing, smokeRingPresets } from './shaders/smoke-ring.js';\nexport type { SmokeRingProps } from './shaders/smoke-ring.js';\nexport type { SmokeRingUniforms, SmokeRingParams } from '@paper-design/shaders';\n\nexport { NeuroNoise, neuroNoisePresets } from './shaders/neuro-noise.js';\nexport type { NeuroNoiseProps } from './shaders/neuro-noise.js';\nexport type { NeuroNoiseUniforms, NeuroNoiseParams } from '@paper-design/shaders';\n\nexport { DotOrbit, dotOrbitPresets } from './shaders/dot-orbit.js';\nexport type { DotOrbitProps } from './shaders/dot-orbit.js';\nexport type { DotOrbitUniforms, DotOrbitParams } from '@paper-design/shaders';\n\nexport { DotGrid, dotGridPresets } from './shaders/dot-grid.js';\nexport type { DotGridProps } from './shaders/dot-grid.js';\nexport type { DotGridUniforms, DotGridParams } from '@paper-design/shaders';\n\nexport { SimplexNoise, simplexNoisePresets } from './shaders/simplex-noise.js';\nexport type { SimplexNoiseProps } from './shaders/simplex-noise.js';\nexport type { SimplexNoiseUniforms, SimplexNoiseParams } from '@paper-design/shaders';\n\nexport { Metaballs, metaballsPresets } from './shaders/metaballs.js';\nexport type { MetaballsProps } from './shaders/metaballs.js';\nexport type { MetaballsUniforms, MetaballsParams } from '@paper-design/shaders';\n\nexport { Waves, wavesPresets } from './shaders/waves.js';\nexport type { WavesProps } from './shaders/waves.js';\nexport type { WavesUniforms, WavesParams } from '@paper-design/shaders';\n\nexport { PerlinNoise, perlinNoisePresets } from './shaders/perlin-noise.js';\nexport type { PerlinNoiseProps } from './shaders/perlin-noise.js';\nexport type { PerlinNoiseUniforms, PerlinNoiseParams } from '@paper-design/shaders';\n\nexport { Voronoi, voronoiPresets } from './shaders/voronoi.js';\nexport type { VoronoiProps } from './shaders/voronoi.js';\nexport type { VoronoiUniforms, VoronoiParams } from '@paper-design/shaders';\n\nexport { Warp, warpPresets } from './shaders/warp.js';\nexport type { WarpProps } from './shaders/warp.js';\nexport type { WarpUniforms, WarpParams, WarpPattern } from '@paper-design/shaders';\n\nexport { GodRays, godRaysPresets } from './shaders/god-rays.js';\nexport type { GodRaysProps } from './shaders/god-rays.js';\nexport type { GodRaysUniforms, GodRaysParams } from '@paper-design/shaders';\n\nexport { Spiral, spiralPresets } from './shaders/spiral.js';\nexport type { SpiralProps } from './shaders/spiral.js';\nexport type { SpiralUniforms, SpiralParams } from '@paper-design/shaders';\n\nexport { Swirl, swirlPresets } from './shaders/swirl.js';\nexport type { SwirlProps } from './shaders/swirl.js';\nexport type { SwirlUniforms, SwirlParams } from '@paper-design/shaders';\n\nexport { Dithering, ditheringPresets } from './shaders/dithering.js';\nexport type { DitheringProps } from './shaders/dithering.js';\nexport type { DitheringUniforms, DitheringParams } from '@paper-design/shaders';\n\nexport { GrainGradient, grainGradientPresets } from './shaders/grain-gradient.js';\nexport type { GrainGradientProps } from './shaders/grain-gradient.js';\nexport type { GrainGradientUniforms, GrainGradientParams } from '@paper-design/shaders';\n\nexport { PulsingBorder, pulsingBorderPresets } from './shaders/pulsing-border.js';\nexport type { PulsingBorderProps } from './shaders/pulsing-border.js';\nexport type { PulsingBorderUniforms, PulsingBorderParams } from '@paper-design/shaders';\n\nexport { ColorPanels, colorPanelsPresets } from './shaders/color-panels.js';\nexport type { ColorPanelsProps } from './shaders/color-panels.js';\nexport type { ColorPanelsUniforms, ColorPanelsParams } from '@paper-design/shaders';\n\nexport { StaticMeshGradient, staticMeshGradientPresets } from './shaders/static-mesh-gradient.js';\nexport type { StaticMeshGradientProps } from './shaders/static-mesh-gradient.js';\nexport type { StaticMeshGradientUniforms, StaticMeshGradientParams } from '@paper-design/shaders';\n\nexport { StaticRadialGradient, staticRadialGradientPresets } from './shaders/static-radial-gradient.js';\nexport type { StaticRadialGradientProps } from './shaders/static-radial-gradient.js';\nexport type { StaticRadialGradientUniforms, StaticRadialGradientParams } from '@paper-design/shaders';\n\nexport { PaperTexture, paperTexturePresets } from './shaders/paper-texture.js';\nexport type { PaperTextureProps } from './shaders/paper-texture.js';\nexport type { PaperTextureUniforms, PaperTextureParams } from '@paper-design/shaders';\n\nexport { FlutedGlass, flutedGlassPresets } from './shaders/fluted-glass.js';\nexport { type FlutedGlassProps } from './shaders/fluted-glass.js';\nexport { type FlutedGlassUniforms, type FlutedGlassParams } from '@paper-design/shaders';\n\nexport { Water, waterPresets } from './shaders/water.js';\nexport type { WaterProps } from './shaders/water.js';\nexport type { WaterUniforms, WaterParams } from '@paper-design/shaders';\n\nexport { ImageDithering, imageDitheringPresets } from './shaders/image-dithering.js';\nexport type { ImageDitheringProps } from './shaders/image-dithering.js';\nexport type { ImageDitheringUniforms, ImageDitheringParams } from '@paper-design/shaders';\n\nexport { Heatmap, heatmapPresets } from './shaders/heatmap.js';\nexport type { HeatmapProps } from './shaders/heatmap.js';\nexport type { HeatmapUniforms, HeatmapParams } from '@paper-design/shaders';\n\nexport { LiquidMetal, liquidMetalPresets } from './shaders/liquid-metal.js';\nexport type { LiquidMetalProps } from './shaders/liquid-metal.js';\nexport type { LiquidMetalUniforms, LiquidMetalParams } from '@paper-design/shaders';\n\nexport { ImageHalftoneDots, imageHalftoneDotsPresets } from './shaders/image-halftone-dots.js';\nexport type { ImageHalftoneDotsProps } from './shaders/image-halftone-dots.js';\nexport type { ImageHalftoneDotsUniforms, ImageHalftoneDotsParams } from '@paper-design/shaders';\n\nexport { isPaperShaderElement, getShaderColorFromString } from '@paper-design/shaders';\nexport type { PaperShaderElement, ShaderFit, ShaderSizingParams, ShaderSizingUniforms } from '@paper-design/shaders';\n\nexport {\n colorPanelsMeta,\n dotOrbitMeta,\n godRaysMeta,\n grainGradientMeta,\n meshGradientMeta,\n metaballsMeta,\n pulsingBorderMeta,\n simplexNoiseMeta,\n smokeRingMeta,\n swirlMeta,\n voronoiMeta,\n warpMeta,\n heatmapMeta,\n staticMeshGradientMeta,\n staticRadialGradientMeta,\n} from '@paper-design/shaders';\n"],
5
+ "mappings": ";;;;;;AAEA,SAAS,mBAAmB;AAG5B,SAAS,cAAc,2BAA2B;AAIlD,SAAS,WAAW,wBAAwB;AAI5C,SAAS,YAAY,yBAAyB;AAI9C,SAAS,UAAU,uBAAuB;AAI1C,SAAS,SAAS,sBAAsB;AAIxC,SAAS,cAAc,2BAA2B;AAIlD,SAAS,WAAW,wBAAwB;AAI5C,SAAS,OAAO,oBAAoB;AAIpC,SAAS,aAAa,0BAA0B;AAIhD,SAAS,SAAS,sBAAsB;AAIxC,SAAS,MAAM,mBAAmB;AAIlC,SAAS,SAAS,sBAAsB;AAIxC,SAAS,QAAQ,qBAAqB;AAItC,SAAS,OAAO,oBAAoB;AAIpC,SAAS,WAAW,wBAAwB;AAI5C,SAAS,eAAe,4BAA4B;AAIpD,SAAS,eAAe,4BAA4B;AAIpD,SAAS,aAAa,0BAA0B;AAIhD,SAAS,oBAAoB,iCAAiC;AAI9D,SAAS,sBAAsB,mCAAmC;AAIlE,SAAS,cAAc,2BAA2B;AAIlD,SAAS,aAAa,0BAA0B;AAChD,eAAsC;AACtC,eAAiE;AAEjE,SAAS,OAAO,oBAAoB;AAIpC,SAAS,gBAAgB,6BAA6B;AAItD,SAAS,SAAS,sBAAsB;AAIxC,SAAS,aAAa,0BAA0B;AAIhD,SAAS,mBAAmB,gCAAgC;AAI5D,SAAS,sBAAsB,gCAAgC;AAG/D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
6
+ "names": []
7
+ }
@@ -0,0 +1,38 @@
1
+ import { type PaperShaderElement, type ShaderMotionParams } from '@paper-design/shaders';
2
+ /**
3
+ * React Shader Mount can also accept strings as uniform values, which will assumed to be URLs and loaded as images
4
+ *
5
+ * We accept undefined as a convenience for server rendering, when some things may be undefined
6
+ * We just skip setting the uniform if it's undefined. This allows the shader mount to still take up space during server rendering
7
+ */
8
+ interface ShaderMountUniformsReact {
9
+ [key: string]: string | boolean | number | number[] | number[][] | HTMLImageElement | undefined;
10
+ }
11
+ export interface ShaderMountProps extends Omit<React.ComponentProps<'div'>, 'color' | 'ref'>, ShaderMotionParams {
12
+ ref?: React.Ref<PaperShaderElement>;
13
+ fragmentShader: string;
14
+ uniforms: ShaderMountUniformsReact;
15
+ minPixelRatio?: number;
16
+ maxPixelCount?: number;
17
+ webGlContextAttributes?: WebGLContextAttributes;
18
+ /** Inline CSS width style */
19
+ width?: string | number;
20
+ /** Inline CSS height style */
21
+ height?: string | number;
22
+ }
23
+ export interface ShaderComponentProps extends Omit<React.ComponentProps<'div'>, 'color' | 'ref'> {
24
+ ref?: React.Ref<PaperShaderElement>;
25
+ minPixelRatio?: number;
26
+ maxPixelCount?: number;
27
+ webGlContextAttributes?: WebGLContextAttributes;
28
+ /** Inline CSS width style */
29
+ width?: string | number;
30
+ /** Inline CSS height style */
31
+ height?: string | number;
32
+ }
33
+ /**
34
+ * A React component that mounts a shader and updates its uniforms as the component's props change
35
+ * 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
36
+ */
37
+ export declare const ShaderMount: React.FC<ShaderMountProps>;
38
+ export {};
@@ -0,0 +1,149 @@
1
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
+ * Paper Shaders *
3
+ * https://github.com/paper-design/shaders *
4
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5
+
6
+ "use client";
7
+ import { useEffect, useRef, forwardRef, useState } from "react";
8
+ import {
9
+ ShaderMount as ShaderMountVanilla,
10
+ getEmptyPixel
11
+ } from "@paper-design/shaders";
12
+ import { useMergeRefs } from "./use-merge-refs.js";
13
+ import { jsx } from "react/jsx-runtime";
14
+ async function processUniforms(uniformsProp) {
15
+ const processedUniforms = {};
16
+ const imageLoadPromises = [];
17
+ const isValidUrl = (url) => {
18
+ try {
19
+ if (url.startsWith("/")) return true;
20
+ new URL(url);
21
+ return true;
22
+ } catch {
23
+ return false;
24
+ }
25
+ };
26
+ const isExternalUrl = (url) => {
27
+ try {
28
+ if (url.startsWith("/")) return false;
29
+ const urlObject = new URL(url, window.location.origin);
30
+ return urlObject.origin !== window.location.origin;
31
+ } catch {
32
+ return false;
33
+ }
34
+ };
35
+ Object.entries(uniformsProp).forEach(([key, value]) => {
36
+ if (typeof value === "string") {
37
+ if (!value) {
38
+ processedUniforms[key] = getEmptyPixel();
39
+ return;
40
+ }
41
+ if (!isValidUrl(value)) {
42
+ console.warn(`Uniform "${key}" has invalid URL "${value}". Skipping image loading.`);
43
+ return;
44
+ }
45
+ const imagePromise = new Promise((resolve, reject) => {
46
+ const img = new Image();
47
+ if (isExternalUrl(value)) {
48
+ img.crossOrigin = "anonymous";
49
+ }
50
+ img.onload = () => {
51
+ processedUniforms[key] = img;
52
+ resolve();
53
+ };
54
+ img.onerror = () => {
55
+ console.error(`Could not set uniforms. Failed to load image at ${value}`);
56
+ reject();
57
+ };
58
+ img.src = value;
59
+ });
60
+ imageLoadPromises.push(imagePromise);
61
+ } else {
62
+ processedUniforms[key] = value;
63
+ }
64
+ });
65
+ await Promise.all(imageLoadPromises);
66
+ return processedUniforms;
67
+ }
68
+ const ShaderMount = forwardRef(
69
+ function ShaderMountImpl({
70
+ fragmentShader,
71
+ uniforms: uniformsProp,
72
+ webGlContextAttributes,
73
+ speed = 0,
74
+ frame = 0,
75
+ width,
76
+ height,
77
+ minPixelRatio,
78
+ maxPixelCount,
79
+ style,
80
+ ...divProps
81
+ }, forwardedRef) {
82
+ const [isInitialized, setIsInitialized] = useState(false);
83
+ const divRef = useRef(null);
84
+ const shaderMountRef = useRef(null);
85
+ const webGlContextAttributesRef = useRef(webGlContextAttributes);
86
+ useEffect(() => {
87
+ const initShader = async () => {
88
+ const uniforms = await processUniforms(uniformsProp);
89
+ if (divRef.current && !shaderMountRef.current) {
90
+ shaderMountRef.current = new ShaderMountVanilla(
91
+ divRef.current,
92
+ fragmentShader,
93
+ uniforms,
94
+ webGlContextAttributesRef.current,
95
+ speed,
96
+ frame,
97
+ minPixelRatio,
98
+ maxPixelCount
99
+ );
100
+ setIsInitialized(true);
101
+ }
102
+ };
103
+ initShader();
104
+ return () => {
105
+ shaderMountRef.current?.dispose();
106
+ shaderMountRef.current = null;
107
+ };
108
+ }, [fragmentShader]);
109
+ useEffect(() => {
110
+ let isStale = false;
111
+ const updateUniforms = async () => {
112
+ const uniforms = await processUniforms(uniformsProp);
113
+ if (!isStale) {
114
+ shaderMountRef.current?.setUniforms(uniforms);
115
+ }
116
+ };
117
+ updateUniforms();
118
+ return () => {
119
+ isStale = true;
120
+ };
121
+ }, [uniformsProp, isInitialized]);
122
+ useEffect(() => {
123
+ shaderMountRef.current?.setSpeed(speed);
124
+ }, [speed, isInitialized]);
125
+ useEffect(() => {
126
+ shaderMountRef.current?.setMaxPixelCount(maxPixelCount);
127
+ }, [maxPixelCount, isInitialized]);
128
+ useEffect(() => {
129
+ shaderMountRef.current?.setMinPixelRatio(minPixelRatio);
130
+ }, [minPixelRatio, isInitialized]);
131
+ useEffect(() => {
132
+ shaderMountRef.current?.setFrame(frame);
133
+ }, [frame, isInitialized]);
134
+ const mergedRef = useMergeRefs([divRef, forwardedRef]);
135
+ return /* @__PURE__ */ jsx(
136
+ "div",
137
+ {
138
+ ref: mergedRef,
139
+ style: width !== void 0 || height !== void 0 ? { width, height, ...style } : style,
140
+ ...divProps
141
+ }
142
+ );
143
+ }
144
+ );
145
+ ShaderMount.displayName = "ShaderMount";
146
+ export {
147
+ ShaderMount
148
+ };
149
+ //# sourceMappingURL=shader-mount.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/shader-mount.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport { useEffect, useRef, forwardRef, useState } from 'react';\nimport {\n ShaderMount as ShaderMountVanilla,\n getEmptyPixel,\n type PaperShaderElement,\n type ShaderMotionParams,\n type ShaderMountUniforms,\n} from '@paper-design/shaders';\nimport { useMergeRefs } from './use-merge-refs.js';\n\n/**\n * React Shader Mount can also accept strings as uniform values, which will assumed to be URLs and loaded as images\n *\n * We accept undefined as a convenience for server rendering, when some things may be undefined\n * We just skip setting the uniform if it's undefined. This allows the shader mount to still take up space during server rendering\n */\ninterface ShaderMountUniformsReact {\n [key: string]: string | boolean | number | number[] | number[][] | HTMLImageElement | undefined;\n}\n\nexport interface ShaderMountProps extends Omit<React.ComponentProps<'div'>, 'color' | 'ref'>, ShaderMotionParams {\n ref?: React.Ref<PaperShaderElement>;\n fragmentShader: string;\n uniforms: ShaderMountUniformsReact;\n minPixelRatio?: number;\n maxPixelCount?: number;\n webGlContextAttributes?: WebGLContextAttributes;\n\n /** Inline CSS width style */\n width?: string | number;\n /** Inline CSS height style */\n height?: string | number;\n}\n\nexport interface ShaderComponentProps extends Omit<React.ComponentProps<'div'>, 'color' | 'ref'> {\n ref?: React.Ref<PaperShaderElement>;\n minPixelRatio?: number;\n maxPixelCount?: number;\n webGlContextAttributes?: WebGLContextAttributes;\n\n /** Inline CSS width style */\n width?: string | number;\n /** Inline CSS height style */\n height?: string | number;\n}\n\n/** Parse the provided uniforms, turning URL strings into loaded images */\nasync function processUniforms(uniformsProp: ShaderMountUniformsReact): Promise<ShaderMountUniforms> {\n const processedUniforms = {} as 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(uniformsProp).forEach(([key, value]) => {\n if (typeof value === 'string') {\n // Use a transparent pixel for empty strings\n if (!value) {\n processedUniforms[key] = getEmptyPixel();\n return;\n }\n\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 await Promise.all(imageLoadPromises);\n return 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<PaperShaderElement, ShaderMountProps>(\n function ShaderMountImpl(\n {\n fragmentShader,\n uniforms: uniformsProp,\n webGlContextAttributes,\n speed = 0,\n frame = 0,\n width,\n height,\n minPixelRatio,\n maxPixelCount,\n style,\n ...divProps\n },\n forwardedRef\n ) {\n const [isInitialized, setIsInitialized] = useState(false);\n const divRef = useRef<PaperShaderElement>(null);\n const shaderMountRef: React.RefObject<ShaderMountVanilla | null> = useRef<ShaderMountVanilla>(null);\n const webGlContextAttributesRef = useRef(webGlContextAttributes);\n\n // Initialize the ShaderMountVanilla\n useEffect(() => {\n const initShader = async () => {\n const uniforms = await processUniforms(uniformsProp);\n\n if (divRef.current && !shaderMountRef.current) {\n shaderMountRef.current = new ShaderMountVanilla(\n divRef.current,\n fragmentShader,\n uniforms,\n webGlContextAttributesRef.current,\n speed,\n frame,\n minPixelRatio,\n maxPixelCount\n );\n\n setIsInitialized(true);\n }\n };\n\n initShader();\n\n return () => {\n shaderMountRef.current?.dispose();\n shaderMountRef.current = null;\n };\n }, [fragmentShader]);\n\n // Uniforms\n useEffect(() => {\n let isStale = false;\n\n const updateUniforms = async () => {\n const uniforms = await processUniforms(uniformsProp);\n\n if (!isStale) {\n // We only use the freshest uniforms otherwise we can get into race conditions\n // if some uniforms (images!) take longer to load in subsequent effect runs.\n shaderMountRef.current?.setUniforms(uniforms);\n }\n };\n\n updateUniforms();\n\n return () => {\n isStale = true;\n };\n }, [uniformsProp, isInitialized]);\n\n // Speed\n useEffect(() => {\n shaderMountRef.current?.setSpeed(speed);\n }, [speed, isInitialized]);\n\n // Max Pixel Count\n useEffect(() => {\n shaderMountRef.current?.setMaxPixelCount(maxPixelCount);\n }, [maxPixelCount, isInitialized]);\n\n // Min Pixel Ratio\n useEffect(() => {\n shaderMountRef.current?.setMinPixelRatio(minPixelRatio);\n }, [minPixelRatio, isInitialized]);\n\n // Frame\n useEffect(() => {\n shaderMountRef.current?.setFrame(frame);\n }, [frame, isInitialized]);\n\n const mergedRef = useMergeRefs([divRef, forwardedRef]) as unknown as React.RefObject<HTMLDivElement>;\n return (\n <div\n ref={mergedRef}\n style={width !== undefined || height !== undefined ? { width, height, ...style } : style}\n {...divProps}\n />\n );\n }\n);\n\nShaderMount.displayName = 'ShaderMount';\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ import { type ShaderComponentProps } from '../shader-mount.js';
2
+ import { type ColorPanelsParams, type ShaderPreset } from '@paper-design/shaders';
3
+ export interface ColorPanelsProps extends ShaderComponentProps, ColorPanelsParams {
4
+ }
5
+ type ColorPanelsPreset = ShaderPreset<ColorPanelsParams>;
6
+ export declare const defaultPreset: ColorPanelsPreset;
7
+ export declare const glassPreset: ColorPanelsPreset;
8
+ export declare const gradientPreset: ColorPanelsPreset;
9
+ export declare const openingPreset: ColorPanelsPreset;
10
+ export declare const colorPanelsPresets: ColorPanelsPreset[];
11
+ export declare const ColorPanels: React.FC<ColorPanelsProps>;
12
+ export {};