@paper-design/shaders-react 0.0.35 → 0.0.36

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 (70) hide show
  1. package/package.json +3 -3
  2. package/dist/color-props-are-equal.d.ts +0 -6
  3. package/dist/color-props-are-equal.js +0 -34
  4. package/dist/color-props-are-equal.js.map +0 -7
  5. package/dist/index.d.ts +0 -62
  6. package/dist/index.js +0 -94
  7. package/dist/index.js.map +0 -7
  8. package/dist/shader-mount.d.ts +0 -26
  9. package/dist/shader-mount.js +0 -126
  10. package/dist/shader-mount.js.map +0 -7
  11. package/dist/shaders/color-panels.d.ts +0 -9
  12. package/dist/shaders/color-panels.js +0 -101
  13. package/dist/shaders/color-panels.js.map +0 -7
  14. package/dist/shaders/dithering.d.ts +0 -15
  15. package/dist/shaders/dithering.js +0 -170
  16. package/dist/shaders/dithering.js.map +0 -7
  17. package/dist/shaders/dot-grid.d.ts +0 -10
  18. package/dist/shaders/dot-grid.js +0 -230
  19. package/dist/shaders/dot-grid.js.map +0 -7
  20. package/dist/shaders/dot-orbit.d.ts +0 -9
  21. package/dist/shaders/dot-orbit.js +0 -80
  22. package/dist/shaders/dot-orbit.js.map +0 -7
  23. package/dist/shaders/god-rays.d.ts +0 -13
  24. package/dist/shaders/god-rays.js +0 -167
  25. package/dist/shaders/god-rays.js.map +0 -7
  26. package/dist/shaders/grain-gradient.d.ts +0 -16
  27. package/dist/shaders/grain-gradient.js +0 -208
  28. package/dist/shaders/grain-gradient.js.map +0 -7
  29. package/dist/shaders/liquid-metal.d.ts +0 -12
  30. package/dist/shaders/liquid-metal.js +0 -156
  31. package/dist/shaders/liquid-metal.js.map +0 -7
  32. package/dist/shaders/mesh-gradient.d.ts +0 -11
  33. package/dist/shaders/mesh-gradient.js +0 -104
  34. package/dist/shaders/mesh-gradient.js.map +0 -7
  35. package/dist/shaders/metaballs.d.ts +0 -9
  36. package/dist/shaders/metaballs.js +0 -75
  37. package/dist/shaders/metaballs.js.map +0 -7
  38. package/dist/shaders/neuro-noise.d.ts +0 -9
  39. package/dist/shaders/neuro-noise.js +0 -76
  40. package/dist/shaders/neuro-noise.js.map +0 -7
  41. package/dist/shaders/perlin-noise.d.ts +0 -14
  42. package/dist/shaders/perlin-noise.js +0 -183
  43. package/dist/shaders/perlin-noise.js.map +0 -7
  44. package/dist/shaders/pulsing-border.d.ts +0 -11
  45. package/dist/shaders/pulsing-border.js +0 -153
  46. package/dist/shaders/pulsing-border.js.map +0 -7
  47. package/dist/shaders/simplex-noise.d.ts +0 -9
  48. package/dist/shaders/simplex-noise.js +0 -80
  49. package/dist/shaders/simplex-noise.js.map +0 -7
  50. package/dist/shaders/smoke-ring.d.ts +0 -12
  51. package/dist/shaders/smoke-ring.js +0 -134
  52. package/dist/shaders/smoke-ring.js.map +0 -7
  53. package/dist/shaders/spiral.d.ts +0 -15
  54. package/dist/shaders/spiral.js +0 -218
  55. package/dist/shaders/spiral.js.map +0 -7
  56. package/dist/shaders/swirl.d.ts +0 -12
  57. package/dist/shaders/swirl.js +0 -136
  58. package/dist/shaders/swirl.js.map +0 -7
  59. package/dist/shaders/voronoi.d.ts +0 -10
  60. package/dist/shaders/voronoi.js +0 -102
  61. package/dist/shaders/voronoi.js.map +0 -7
  62. package/dist/shaders/warp.d.ts +0 -19
  63. package/dist/shaders/warp.js +0 -294
  64. package/dist/shaders/warp.js.map +0 -7
  65. package/dist/shaders/waves.d.ts +0 -14
  66. package/dist/shaders/waves.js +0 -178
  67. package/dist/shaders/waves.js.map +0 -7
  68. package/dist/use-merge-refs.d.ts +0 -6
  69. package/dist/use-merge-refs.js +0 -48
  70. package/dist/use-merge-refs.js.map +0 -7
@@ -1,14 +0,0 @@
1
- import { type ShaderComponentProps } from '../shader-mount.js';
2
- import { type WavesParams, type ShaderPreset } from '@paper-design/shaders';
3
- export interface WavesProps extends ShaderComponentProps, WavesParams {
4
- }
5
- type WavesPreset = ShaderPreset<WavesParams>;
6
- export declare const defaultPreset: WavesPreset;
7
- export declare const spikesPreset: WavesPreset;
8
- export declare const groovyPreset: WavesPreset;
9
- export declare const tangledUpPreset: WavesPreset;
10
- export declare const zigZagPreset: WavesPreset;
11
- export declare const waveRidePreset: WavesPreset;
12
- export declare const wavesPresets: WavesPreset[];
13
- export declare const Waves: React.FC<WavesProps>;
14
- export {};
@@ -1,178 +0,0 @@
1
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
- * Paper Shaders *
3
- * https://github.com/paper-design/shaders *
4
- * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5
-
6
- import { memo } from "react";
7
- import { ShaderMount } from "../shader-mount.js";
8
- import { colorPropsAreEqual } from "../color-props-are-equal.js";
9
- import {
10
- defaultPatternSizing,
11
- getShaderColorFromString,
12
- wavesFragmentShader,
13
- ShaderFitOptions
14
- } from "@paper-design/shaders";
15
- import { jsx } from "react/jsx-runtime";
16
- const defaultPreset = {
17
- name: "Default",
18
- params: {
19
- ...defaultPatternSizing,
20
- scale: 1.6,
21
- rotation: 0,
22
- colorFront: "#ffffff",
23
- colorBack: "#102c70",
24
- shape: 0,
25
- frequency: 0.5,
26
- amplitude: 0.6,
27
- spacing: 0.65,
28
- proportion: 0.15,
29
- softness: 0
30
- }
31
- };
32
- const spikesPreset = {
33
- name: "Spikes",
34
- params: {
35
- ...defaultPatternSizing,
36
- scale: 1 / 2.3,
37
- rotation: 0,
38
- colorFront: "#fdffe6",
39
- colorBack: "#34123b",
40
- shape: 0,
41
- frequency: 0.5,
42
- amplitude: 0.9,
43
- spacing: 0.37,
44
- proportion: 0.93,
45
- softness: 0.15
46
- }
47
- };
48
- const groovyPreset = {
49
- name: "Groovy",
50
- params: {
51
- ...defaultPatternSizing,
52
- scale: 1 / 0.5,
53
- rotation: 1,
54
- colorFront: "#fcfcee",
55
- colorBack: "#ff896b",
56
- shape: 2.37,
57
- frequency: 0.2,
58
- amplitude: 0.67,
59
- spacing: 1.17,
60
- proportion: 0.57,
61
- softness: 0
62
- }
63
- };
64
- const tangledUpPreset = {
65
- name: "Tangled up",
66
- params: {
67
- ...defaultPatternSizing,
68
- scale: 1 / 3.04,
69
- rotation: 1,
70
- colorFront: "#133a41",
71
- colorBack: "#c2d8b6",
72
- shape: 3,
73
- frequency: 0.44,
74
- amplitude: 0.57,
75
- spacing: 1.05,
76
- proportion: 0.97,
77
- softness: 0
78
- }
79
- };
80
- const zigZagPreset = {
81
- name: "Zig zag",
82
- params: {
83
- ...defaultPatternSizing,
84
- scale: 1 / 2.7,
85
- rotation: 1,
86
- colorFront: "#000000",
87
- colorBack: "#e6e6e6",
88
- shape: 0,
89
- frequency: 0.6,
90
- amplitude: 0.8,
91
- spacing: 0.5,
92
- proportion: 1,
93
- softness: 0.5
94
- }
95
- };
96
- const waveRidePreset = {
97
- name: "Ride the wave",
98
- params: {
99
- ...defaultPatternSizing,
100
- scale: 1 / 0.84,
101
- rotation: 0,
102
- colorFront: "#fdffe6",
103
- colorBack: "#1f1f1f",
104
- shape: 2.23,
105
- frequency: 0.1,
106
- amplitude: 0.6,
107
- spacing: 0.41,
108
- proportion: 0.99,
109
- softness: 0
110
- }
111
- };
112
- const wavesPresets = [
113
- defaultPreset,
114
- spikesPreset,
115
- groovyPreset,
116
- tangledUpPreset,
117
- zigZagPreset,
118
- waveRidePreset
119
- ];
120
- const Waves = memo(function WavesImpl({
121
- // Own props
122
- colorFront = defaultPreset.params.colorFront,
123
- colorBack = defaultPreset.params.colorBack,
124
- shape = defaultPreset.params.shape,
125
- frequency = defaultPreset.params.frequency,
126
- amplitude = defaultPreset.params.amplitude,
127
- spacing = defaultPreset.params.spacing,
128
- proportion = defaultPreset.params.proportion,
129
- softness = defaultPreset.params.softness,
130
- // Sizing props
131
- fit = defaultPreset.params.fit,
132
- scale = defaultPreset.params.scale,
133
- rotation = defaultPreset.params.rotation,
134
- offsetX = defaultPreset.params.offsetX,
135
- offsetY = defaultPreset.params.offsetY,
136
- originX = defaultPreset.params.originX,
137
- originY = defaultPreset.params.originY,
138
- worldWidth = defaultPreset.params.worldWidth,
139
- worldHeight = defaultPreset.params.worldHeight,
140
- // Other props
141
- maxPixelCount = 6016 * 3384,
142
- // Higher max resolution for this shader
143
- ...props
144
- }) {
145
- const uniforms = {
146
- // Own uniforms
147
- u_colorFront: getShaderColorFromString(colorFront),
148
- u_colorBack: getShaderColorFromString(colorBack),
149
- u_shape: shape,
150
- u_frequency: frequency,
151
- u_amplitude: amplitude,
152
- u_spacing: spacing,
153
- u_proportion: proportion,
154
- u_softness: softness,
155
- // Sizing uniforms
156
- u_fit: ShaderFitOptions[fit],
157
- u_scale: scale,
158
- u_rotation: rotation,
159
- u_offsetX: offsetX,
160
- u_offsetY: offsetY,
161
- u_originX: originX,
162
- u_originY: originY,
163
- u_worldWidth: worldWidth,
164
- u_worldHeight: worldHeight
165
- };
166
- return /* @__PURE__ */ jsx(ShaderMount, { ...props, fragmentShader: wavesFragmentShader, uniforms });
167
- }, colorPropsAreEqual);
168
- export {
169
- Waves,
170
- defaultPreset,
171
- groovyPreset,
172
- spikesPreset,
173
- tangledUpPreset,
174
- waveRidePreset,
175
- wavesPresets,
176
- zigZagPreset
177
- };
178
- //# sourceMappingURL=waves.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/shaders/waves.tsx"],
4
- "sourcesContent": ["import { memo } from 'react';\nimport { ShaderMount, type ShaderComponentProps } from '../shader-mount.js';\nimport { colorPropsAreEqual } from '../color-props-are-equal.js';\nimport {\n defaultPatternSizing,\n getShaderColorFromString,\n wavesFragmentShader,\n ShaderFitOptions,\n type WavesParams,\n type WavesUniforms,\n type ShaderPreset,\n} from '@paper-design/shaders';\n\nexport interface WavesProps extends ShaderComponentProps, WavesParams {}\n\ntype WavesPreset = ShaderPreset<WavesParams>;\n\nexport const defaultPreset: WavesPreset = {\n name: 'Default',\n params: {\n ...defaultPatternSizing,\n scale: 1.6,\n rotation: 0,\n colorFront: '#ffffff',\n colorBack: '#102c70',\n shape: 0,\n frequency: 0.5,\n amplitude: 0.6,\n spacing: 0.65,\n proportion: 0.15,\n softness: 0,\n },\n};\n\nexport const spikesPreset: WavesPreset = {\n name: 'Spikes',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 2.3,\n rotation: 0,\n colorFront: '#fdffe6',\n colorBack: '#34123b',\n shape: 0,\n frequency: 0.5,\n amplitude: 0.9,\n spacing: 0.37,\n proportion: 0.93,\n softness: 0.15,\n },\n};\n\nexport const groovyPreset: WavesPreset = {\n name: 'Groovy',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 0.5,\n rotation: 1,\n colorFront: '#fcfcee',\n colorBack: '#ff896b',\n shape: 2.37,\n frequency: 0.2,\n amplitude: 0.67,\n spacing: 1.17,\n proportion: 0.57,\n softness: 0,\n },\n};\n\nexport const tangledUpPreset: WavesPreset = {\n name: 'Tangled up',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 3.04,\n rotation: 1,\n colorFront: '#133a41',\n colorBack: '#c2d8b6',\n shape: 3,\n frequency: 0.44,\n amplitude: 0.57,\n spacing: 1.05,\n proportion: 0.97,\n softness: 0,\n },\n};\n\nexport const zigZagPreset: WavesPreset = {\n name: 'Zig zag',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 2.7,\n rotation: 1,\n colorFront: '#000000',\n colorBack: '#e6e6e6',\n shape: 0,\n frequency: 0.6,\n amplitude: 0.8,\n spacing: 0.5,\n proportion: 1,\n softness: 0.5,\n },\n};\n\nexport const waveRidePreset: WavesPreset = {\n name: 'Ride the wave',\n params: {\n ...defaultPatternSizing,\n scale: 1 / 0.84,\n rotation: 0,\n colorFront: '#fdffe6',\n colorBack: '#1f1f1f',\n shape: 2.23,\n frequency: 0.1,\n amplitude: 0.6,\n spacing: 0.41,\n proportion: 0.99,\n softness: 0,\n },\n};\n\nexport const wavesPresets: WavesPreset[] = [\n defaultPreset,\n spikesPreset,\n groovyPreset,\n tangledUpPreset,\n zigZagPreset,\n waveRidePreset,\n];\n\nexport const Waves: React.FC<WavesProps> = memo(function WavesImpl({\n // Own props\n colorFront = defaultPreset.params.colorFront,\n colorBack = defaultPreset.params.colorBack,\n shape = defaultPreset.params.shape,\n frequency = defaultPreset.params.frequency,\n amplitude = defaultPreset.params.amplitude,\n spacing = defaultPreset.params.spacing,\n proportion = defaultPreset.params.proportion,\n softness = defaultPreset.params.softness,\n\n // Sizing props\n fit = defaultPreset.params.fit,\n scale = defaultPreset.params.scale,\n rotation = defaultPreset.params.rotation,\n offsetX = defaultPreset.params.offsetX,\n offsetY = defaultPreset.params.offsetY,\n originX = defaultPreset.params.originX,\n originY = defaultPreset.params.originY,\n worldWidth = defaultPreset.params.worldWidth,\n worldHeight = defaultPreset.params.worldHeight,\n\n // Other props\n maxPixelCount = 6016 * 3384, // Higher max resolution for this shader\n ...props\n}: WavesProps) {\n const uniforms = {\n // Own uniforms\n u_colorFront: getShaderColorFromString(colorFront),\n u_colorBack: getShaderColorFromString(colorBack),\n u_shape: shape,\n u_frequency: frequency,\n u_amplitude: amplitude,\n u_spacing: spacing,\n u_proportion: proportion,\n u_softness: softness,\n\n // Sizing uniforms\n u_fit: ShaderFitOptions[fit],\n u_scale: scale,\n u_rotation: rotation,\n u_offsetX: offsetX,\n u_offsetY: offsetY,\n u_originX: originX,\n u_originY: originY,\n u_worldWidth: worldWidth,\n u_worldHeight: worldHeight,\n } satisfies WavesUniforms;\n\n return <ShaderMount {...props} fragmentShader={wavesFragmentShader} uniforms={uniforms} />;\n}, colorPropsAreEqual);\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
- /**
3
- * Merges an array of refs into a single memoized callback ref or `null`.
4
- * @see https://floating-ui.com/docs/react-utils#usemergerefs
5
- */
6
- export declare function useMergeRefs<Instance>(refs: Array<React.Ref<Instance> | undefined>): null | React.Ref<Instance>;
@@ -1,48 +0,0 @@
1
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * *
2
- * Paper Shaders *
3
- * https://github.com/paper-design/shaders *
4
- * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5
-
6
- import * as React from "react";
7
- function useMergeRefs(refs) {
8
- const cleanupRef = React.useRef(void 0);
9
- const refEffect = React.useCallback((instance) => {
10
- const cleanups = refs.map((ref) => {
11
- if (ref == null) {
12
- return;
13
- }
14
- if (typeof ref === "function") {
15
- const refCallback = ref;
16
- const refCleanup = refCallback(instance);
17
- return typeof refCleanup === "function" ? refCleanup : () => {
18
- refCallback(null);
19
- };
20
- }
21
- ref.current = instance;
22
- return () => {
23
- ref.current = null;
24
- };
25
- });
26
- return () => {
27
- cleanups.forEach((refCleanup) => refCleanup?.());
28
- };
29
- }, refs);
30
- return React.useMemo(() => {
31
- if (refs.every((ref) => ref == null)) {
32
- return null;
33
- }
34
- return (value) => {
35
- if (cleanupRef.current) {
36
- cleanupRef.current();
37
- cleanupRef.current = void 0;
38
- }
39
- if (value != null) {
40
- cleanupRef.current = refEffect(value);
41
- }
42
- };
43
- }, refs);
44
- }
45
- export {
46
- useMergeRefs
47
- };
48
- //# sourceMappingURL=use-merge-refs.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/use-merge-refs.ts"],
4
- "sourcesContent": ["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.RefObject<Instance | null>).current = instance;\n return () => {\n (ref as React.RefObject<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.RefObject<void | (() => void)>).current = undefined;\n }\n\n if (value != null) {\n (cleanupRef as React.RefObject<void | (() => void)>).current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n"],
5
- "mappings": ";;;;;AAAA,YAAY,WAAW;AAMhB,SAAS,aAAuB,MAA0E;AAC/G,QAAM,aAAa,MAAM,OAA4B,MAAS;AAE9D,QAAM,YAAY,MAAM,YAAY,CAAC,aAA8B;AACjE,UAAM,WAAW,KAAK,IAAI,CAAC,QAAQ;AACjC,UAAI,OAAO,MAAM;AACf;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,YAAY;AAC7B,cAAM,cAAc;AACpB,cAAM,aAAkC,YAAY,QAAQ;AAC5D,eAAO,OAAO,eAAe,aACzB,aACA,MAAM;AACJ,sBAAY,IAAI;AAAA,QAClB;AAAA,MACN;AAEA,MAAC,IAAyC,UAAU;AACpD,aAAO,MAAM;AACX,QAAC,IAAyC,UAAU;AAAA,MACtD;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,eAAS,QAAQ,CAAC,eAAe,aAAa,CAAC;AAAA,IACjD;AAAA,EAEF,GAAG,IAAI;AAEP,SAAO,MAAM,QAAQ,MAAM;AACzB,QAAI,KAAK,MAAM,CAAC,QAAQ,OAAO,IAAI,GAAG;AACpC,aAAO;AAAA,IACT;AAEA,WAAO,CAAC,UAAU;AAChB,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ;AACnB,QAAC,WAAoD,UAAU;AAAA,MACjE;AAEA,UAAI,SAAS,MAAM;AACjB,QAAC,WAAoD,UAAU,UAAU,KAAK;AAAA,MAChF;AAAA,IACF;AAAA,EAEF,GAAG,IAAI;AACT;",
6
- "names": []
7
- }