@paper-design/shaders-react 0.0.36 → 0.0.38
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/color-props-are-equal.d.ts +6 -0
- package/dist/color-props-are-equal.js +34 -0
- package/dist/color-props-are-equal.js.map +7 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +7 -0
- package/dist/shader-mount.d.ts +26 -0
- package/dist/shader-mount.js +126 -0
- package/dist/shader-mount.js.map +7 -0
- package/dist/shaders/color-panels.d.ts +9 -0
- package/dist/shaders/color-panels.js +101 -0
- package/dist/shaders/color-panels.js.map +7 -0
- package/dist/shaders/dithering.d.ts +15 -0
- package/dist/shaders/dithering.js +170 -0
- package/dist/shaders/dithering.js.map +7 -0
- package/dist/shaders/dot-grid.d.ts +10 -0
- package/dist/shaders/dot-grid.js +230 -0
- package/dist/shaders/dot-grid.js.map +7 -0
- package/dist/shaders/dot-orbit.d.ts +9 -0
- package/dist/shaders/dot-orbit.js +80 -0
- package/dist/shaders/dot-orbit.js.map +7 -0
- package/dist/shaders/god-rays.d.ts +13 -0
- package/dist/shaders/god-rays.js +167 -0
- package/dist/shaders/god-rays.js.map +7 -0
- package/dist/shaders/grain-gradient.d.ts +16 -0
- package/dist/shaders/grain-gradient.js +208 -0
- package/dist/shaders/grain-gradient.js.map +7 -0
- package/dist/shaders/liquid-metal.d.ts +12 -0
- package/dist/shaders/liquid-metal.js +156 -0
- package/dist/shaders/liquid-metal.js.map +7 -0
- package/dist/shaders/mesh-gradient.d.ts +11 -0
- package/dist/shaders/mesh-gradient.js +104 -0
- package/dist/shaders/mesh-gradient.js.map +7 -0
- package/dist/shaders/metaballs.d.ts +9 -0
- package/dist/shaders/metaballs.js +75 -0
- package/dist/shaders/metaballs.js.map +7 -0
- package/dist/shaders/neuro-noise.d.ts +9 -0
- package/dist/shaders/neuro-noise.js +76 -0
- package/dist/shaders/neuro-noise.js.map +7 -0
- package/dist/shaders/perlin-noise.d.ts +14 -0
- package/dist/shaders/perlin-noise.js +183 -0
- package/dist/shaders/perlin-noise.js.map +7 -0
- package/dist/shaders/pulsing-border.d.ts +11 -0
- package/dist/shaders/pulsing-border.js +153 -0
- package/dist/shaders/pulsing-border.js.map +7 -0
- package/dist/shaders/simplex-noise.d.ts +9 -0
- package/dist/shaders/simplex-noise.js +80 -0
- package/dist/shaders/simplex-noise.js.map +7 -0
- package/dist/shaders/smoke-ring.d.ts +12 -0
- package/dist/shaders/smoke-ring.js +134 -0
- package/dist/shaders/smoke-ring.js.map +7 -0
- package/dist/shaders/spiral.d.ts +15 -0
- package/dist/shaders/spiral.js +218 -0
- package/dist/shaders/spiral.js.map +7 -0
- package/dist/shaders/swirl.d.ts +12 -0
- package/dist/shaders/swirl.js +136 -0
- package/dist/shaders/swirl.js.map +7 -0
- package/dist/shaders/voronoi.d.ts +10 -0
- package/dist/shaders/voronoi.js +102 -0
- package/dist/shaders/voronoi.js.map +7 -0
- package/dist/shaders/warp.d.ts +19 -0
- package/dist/shaders/warp.js +294 -0
- package/dist/shaders/warp.js.map +7 -0
- package/dist/shaders/waves.d.ts +14 -0
- package/dist/shaders/waves.js +178 -0
- package/dist/shaders/waves.js.map +7 -0
- package/dist/use-merge-refs.d.ts +6 -0
- package/dist/use-merge-refs.js +48 -0
- package/dist/use-merge-refs.js.map +7 -0
- package/package.json +3 -3
|
@@ -0,0 +1,14 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,178 @@
|
|
|
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
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
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>;
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paper-design/shaders-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.38",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"type-check": "tsc --project tsconfig.json"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@paper-design/shaders": "0.0.
|
|
27
|
+
"@paper-design/shaders": "0.0.34"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/react": "19.1.0"
|
|
@@ -38,4 +38,4 @@
|
|
|
38
38
|
"optional": true
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
}
|
|
41
|
+
}
|