@react-three/drei 7.25.2 → 7.26.0
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/README.md +1648 -0
- package/core/ArcballControls.d.ts +1 -1
- package/core/Backdrop.js +3 -1
- package/core/BakeShadows.cjs.js +1 -1
- package/core/BakeShadows.js +3 -3
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.js +2 -2
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +2 -20
- package/core/ContactShadows.js +4 -1
- package/core/DeviceOrientationControls.d.ts +1 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.js +1 -1
- package/core/Line.d.ts +1 -1
- package/core/MapControls.d.ts +1 -1
- package/core/MeshDistortMaterial.d.ts +1 -1
- package/core/MeshWobbleMaterial.d.ts +1 -1
- package/core/OrbitControls.d.ts +1 -1
- package/core/PositionalAudio.d.ts +1 -1
- package/core/QuadraticBezierLine.js +5 -1
- package/core/Reflector.cjs.js +1 -1
- package/core/Reflector.d.ts +1 -1
- package/core/Reflector.js +31 -49
- package/core/SpotLight.d.ts +1 -1
- package/core/Text.d.ts +1 -1
- package/core/TrackballControls.d.ts +1 -1
- package/core/TransformControls.d.ts +1 -1
- package/core/index.cjs.js +1 -1
- package/core/index.js +2 -0
- package/core/useDetectGPU.cjs.js +1 -1
- package/core/useDetectGPU.d.ts +1 -1
- package/core/useDetectGPU.js +1 -5
- package/index.cjs.js +1 -1
- package/index.js +2 -0
- package/materials/BlurPass.cjs.js +1 -0
- package/materials/BlurPass.d.ts +23 -0
- package/materials/BlurPass.js +75 -0
- package/materials/ConvolutionMaterial.cjs.js +1 -0
- package/materials/ConvolutionMaterial.d.ts +7 -0
- package/materials/ConvolutionMaterial.js +97 -0
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.d.ts +9 -65
- package/materials/MeshReflectorMaterial.js +65 -313
- package/materials/index.cjs.js +1 -1
- package/materials/index.d.ts +1 -0
- package/materials/index.js +2 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +2 -0
- package/package.json +4 -2
- package/web/PresentationControls.cjs.js +1 -0
- package/web/PresentationControls.d.ts +14 -0
- package/web/PresentationControls.js +73 -0
- package/web/ScrollControls.cjs.js +1 -1
- package/web/ScrollControls.js +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.d.ts +1 -0
- package/web/index.js +5 -0
|
@@ -15,57 +15,15 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
15
15
|
this._tDiffuse = {
|
|
16
16
|
value: null
|
|
17
17
|
};
|
|
18
|
-
this.
|
|
19
|
-
value: null
|
|
20
|
-
};
|
|
21
|
-
this._u_mipmap_1 = {
|
|
22
|
-
value: null
|
|
23
|
-
};
|
|
24
|
-
this._u_mipmap_2 = {
|
|
25
|
-
value: null
|
|
26
|
-
};
|
|
27
|
-
this._u_mipmap_3 = {
|
|
28
|
-
value: null
|
|
29
|
-
};
|
|
30
|
-
this._u_mipmap_4 = {
|
|
31
|
-
value: null
|
|
32
|
-
};
|
|
33
|
-
this._u_mipmap_5 = {
|
|
34
|
-
value: null
|
|
35
|
-
};
|
|
36
|
-
this._u_mipmap_6 = {
|
|
37
|
-
value: null
|
|
38
|
-
};
|
|
39
|
-
this._u_mipmap_7 = {
|
|
40
|
-
value: null
|
|
41
|
-
};
|
|
42
|
-
this._u_mipmap_res_0 = {
|
|
43
|
-
value: null
|
|
44
|
-
};
|
|
45
|
-
this._u_mipmap_res_1 = {
|
|
46
|
-
value: null
|
|
47
|
-
};
|
|
48
|
-
this._u_mipmap_res_2 = {
|
|
49
|
-
value: null
|
|
50
|
-
};
|
|
51
|
-
this._u_mipmap_res_3 = {
|
|
52
|
-
value: null
|
|
53
|
-
};
|
|
54
|
-
this._u_mipmap_res_4 = {
|
|
55
|
-
value: null
|
|
56
|
-
};
|
|
57
|
-
this._u_mipmap_res_5 = {
|
|
58
|
-
value: null
|
|
59
|
-
};
|
|
60
|
-
this._u_mipmap_res_6 = {
|
|
61
|
-
value: null
|
|
62
|
-
};
|
|
63
|
-
this._u_mipmap_res_7 = {
|
|
18
|
+
this._tDiffuseBlur = {
|
|
64
19
|
value: null
|
|
65
20
|
};
|
|
66
21
|
this._textureMatrix = {
|
|
67
22
|
value: null
|
|
68
23
|
};
|
|
24
|
+
this._hasBlur = {
|
|
25
|
+
value: false
|
|
26
|
+
};
|
|
69
27
|
this._mirror = {
|
|
70
28
|
value: 0.0
|
|
71
29
|
};
|
|
@@ -101,25 +59,11 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
101
59
|
}
|
|
102
60
|
|
|
103
61
|
shader.uniforms.debug = this._debug;
|
|
62
|
+
shader.uniforms.hasBlur = this._hasBlur;
|
|
104
63
|
shader.uniforms.tDiffuse = this._tDiffuse;
|
|
105
64
|
shader.uniforms.tDepth = this._tDepth;
|
|
106
65
|
shader.uniforms.distortionMap = this._distortionMap;
|
|
107
|
-
shader.uniforms.
|
|
108
|
-
shader.uniforms.u_mipmap_1 = this._u_mipmap_1;
|
|
109
|
-
shader.uniforms.u_mipmap_2 = this._u_mipmap_2;
|
|
110
|
-
shader.uniforms.u_mipmap_3 = this._u_mipmap_3;
|
|
111
|
-
shader.uniforms.u_mipmap_4 = this._u_mipmap_4;
|
|
112
|
-
shader.uniforms.u_mipmap_5 = this._u_mipmap_5;
|
|
113
|
-
shader.uniforms.u_mipmap_6 = this._u_mipmap_6;
|
|
114
|
-
shader.uniforms.u_mipmap_7 = this._u_mipmap_7;
|
|
115
|
-
shader.uniforms.u_mipmap_res_0 = this._u_mipmap_res_0;
|
|
116
|
-
shader.uniforms.u_mipmap_res_1 = this._u_mipmap_res_1;
|
|
117
|
-
shader.uniforms.u_mipmap_res_2 = this._u_mipmap_res_2;
|
|
118
|
-
shader.uniforms.u_mipmap_res_3 = this._u_mipmap_res_3;
|
|
119
|
-
shader.uniforms.u_mipmap_res_4 = this._u_mipmap_res_4;
|
|
120
|
-
shader.uniforms.u_mipmap_res_5 = this._u_mipmap_res_5;
|
|
121
|
-
shader.uniforms.u_mipmap_res_6 = this._u_mipmap_res_6;
|
|
122
|
-
shader.uniforms.u_mipmap_res_7 = this._u_mipmap_res_7;
|
|
66
|
+
shader.uniforms.tDiffuseBlur = this._tDiffuseBlur;
|
|
123
67
|
shader.uniforms.textureMatrix = this._textureMatrix;
|
|
124
68
|
shader.uniforms.mirror = this._mirror;
|
|
125
69
|
shader.uniforms.mixBlur = this._mixBlur;
|
|
@@ -139,27 +83,13 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
139
83
|
shader.fragmentShader = `
|
|
140
84
|
uniform int debug;
|
|
141
85
|
uniform sampler2D tDiffuse;
|
|
86
|
+
uniform sampler2D tDiffuseBlur;
|
|
142
87
|
uniform sampler2D tDepth;
|
|
143
88
|
uniform sampler2D distortionMap;
|
|
144
|
-
uniform sampler2D u_mipmap_0;
|
|
145
|
-
uniform sampler2D u_mipmap_1;
|
|
146
|
-
uniform sampler2D u_mipmap_2;
|
|
147
|
-
uniform sampler2D u_mipmap_3;
|
|
148
|
-
uniform sampler2D u_mipmap_4;
|
|
149
|
-
uniform sampler2D u_mipmap_5;
|
|
150
|
-
uniform sampler2D u_mipmap_6;
|
|
151
|
-
uniform sampler2D u_mipmap_7;
|
|
152
|
-
uniform vec2 u_mipmap_res_0;
|
|
153
|
-
uniform vec2 u_mipmap_res_1;
|
|
154
|
-
uniform vec2 u_mipmap_res_2;
|
|
155
|
-
uniform vec2 u_mipmap_res_3;
|
|
156
|
-
uniform vec2 u_mipmap_res_4;
|
|
157
|
-
uniform vec2 u_mipmap_res_5;
|
|
158
|
-
uniform vec2 u_mipmap_res_6;
|
|
159
|
-
uniform vec2 u_mipmap_res_7;
|
|
160
89
|
uniform float distortion;
|
|
161
90
|
uniform float cameraNear;
|
|
162
91
|
uniform float cameraFar;
|
|
92
|
+
uniform bool hasBlur;
|
|
163
93
|
uniform float mixBlur;
|
|
164
94
|
uniform float mirror;
|
|
165
95
|
uniform float mixStrength;
|
|
@@ -167,145 +97,79 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
167
97
|
uniform float maxDepthThreshold;
|
|
168
98
|
uniform float depthScale;
|
|
169
99
|
uniform float depthToBlurRatioBias;
|
|
170
|
-
varying vec4 my_vUv;
|
|
171
|
-
|
|
172
|
-
// from http://www.java-gaming.org/index.php?topic=35123.0
|
|
173
|
-
vec4 cubic( float v ) {
|
|
174
|
-
vec4 n = vec4( 1.0, 2.0, 3.0, 4.0 ) - v;
|
|
175
|
-
vec4 s = n * n * n;
|
|
176
|
-
float x = s.x;
|
|
177
|
-
float y = s.y - 4.0 * s.x;
|
|
178
|
-
float z = s.z - 4.0 * s.y + 6.0 * s.x;
|
|
179
|
-
float w = 6.0 - x - y - z;
|
|
180
|
-
return vec4( x, y, z, w ) * ( 1.0 / 6.0 );
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
vec4 textureBicubic( sampler2D sampler, vec2 texCoords, vec2 texSize ) {
|
|
184
|
-
vec2 invTexSize = 1.0 / texSize;
|
|
185
|
-
texCoords = texCoords * texSize - 0.5;
|
|
186
|
-
vec2 fxy = fract( texCoords );
|
|
187
|
-
texCoords -= fxy;
|
|
188
|
-
|
|
189
|
-
vec4 xcubic = cubic( fxy.x );
|
|
190
|
-
vec4 ycubic = cubic( fxy.y );
|
|
191
|
-
vec4 c = texCoords.xxyy + vec2 ( - 0.5, + 1.5 ).xyxy;
|
|
192
|
-
vec4 s = vec4( xcubic.xz + xcubic.yw, ycubic.xz + ycubic.yw );
|
|
193
|
-
|
|
194
|
-
vec4 offset = c + vec4( xcubic.yw, ycubic.yw ) / s;
|
|
195
|
-
offset *= invTexSize.xxyy;
|
|
196
|
-
|
|
197
|
-
vec4 sample0 = texture2D( sampler, offset.xz);
|
|
198
|
-
vec4 sample1 = texture2D( sampler, offset.yz);
|
|
199
|
-
vec4 sample2 = texture2D( sampler, offset.xw);
|
|
200
|
-
vec4 sample3 = texture2D( sampler, offset.yw);
|
|
201
|
-
|
|
202
|
-
float sx = s.x / ( s.x + s.y );
|
|
203
|
-
float sy = s.z / ( s.z + s.w );
|
|
204
|
-
|
|
205
|
-
return mix(
|
|
206
|
-
mix(
|
|
207
|
-
sample3,
|
|
208
|
-
sample2,
|
|
209
|
-
sx
|
|
210
|
-
),
|
|
211
|
-
mix(
|
|
212
|
-
sample1,
|
|
213
|
-
sample0,
|
|
214
|
-
sx
|
|
215
|
-
),
|
|
216
|
-
sy
|
|
217
|
-
);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
|
|
100
|
+
varying vec4 my_vUv;
|
|
221
101
|
${shader.fragmentShader}`;
|
|
222
102
|
shader.fragmentShader = shader.fragmentShader.replace('#include <emissivemap_fragment>', `#include <emissivemap_fragment>
|
|
223
103
|
|
|
224
|
-
float depthFactor = 1.0;
|
|
225
104
|
float distortionFactor = 0.0;
|
|
226
|
-
vec3 my_normal = vec3(0.0);
|
|
227
|
-
float reflectorRoughnessFactor = roughness;
|
|
228
|
-
vec3 coord = my_vUv.xyz / my_vUv.w;
|
|
229
|
-
|
|
230
105
|
#ifdef USE_DISTORTION
|
|
231
106
|
distortionFactor = texture2D(distortionMap, vUv).r * distortion;
|
|
232
107
|
#endif
|
|
233
108
|
|
|
109
|
+
vec4 new_vUv = my_vUv;
|
|
110
|
+
new_vUv.x += distortionFactor;
|
|
111
|
+
new_vUv.y += distortionFactor;
|
|
112
|
+
|
|
113
|
+
vec4 base = texture2DProj(tDiffuse, new_vUv);
|
|
114
|
+
vec4 blur = texture2DProj(tDiffuseBlur, new_vUv);
|
|
115
|
+
|
|
116
|
+
vec4 merge = base;
|
|
117
|
+
|
|
234
118
|
#ifdef USE_NORMALMAP
|
|
119
|
+
vec2 normal_uv = vec2(0.0);
|
|
235
120
|
vec4 normalColor = texture2D(normalMap, vUv * normalScale);
|
|
236
|
-
my_normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b
|
|
121
|
+
vec3 my_normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );
|
|
122
|
+
vec3 coord = new_vUv.xyz / new_vUv.w;
|
|
123
|
+
normal_uv = coord.xy + coord.z * my_normal.xz * 0.05;
|
|
124
|
+
vec4 base_normal = texture2D(tDiffuse, normal_uv);
|
|
125
|
+
vec4 blur_normal = texture2D(tDiffuseBlur, normal_uv);
|
|
126
|
+
merge = base_normal;
|
|
127
|
+
blur = blur_normal;
|
|
237
128
|
#endif
|
|
238
129
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
reflectorRoughnessFactor *= reflectorTexelRoughness.g;
|
|
242
|
-
#endif
|
|
243
|
-
|
|
244
|
-
vec2 proj_vUv = coord.xy + coord.z * my_normal.xz * 0.01;
|
|
245
|
-
proj_vUv.x += distortionFactor;
|
|
246
|
-
proj_vUv.y += distortionFactor;
|
|
247
|
-
|
|
248
|
-
float lod = 1.0 - min(1.0, mixBlur * reflectorRoughnessFactor);
|
|
130
|
+
float depthFactor = 0.0001;
|
|
131
|
+
float blurFactor = 0.0;
|
|
249
132
|
|
|
250
133
|
#ifdef USE_DEPTH
|
|
251
|
-
vec4 depth =
|
|
134
|
+
vec4 depth = texture2DProj(tDepth, new_vUv);
|
|
252
135
|
depthFactor = smoothstep(minDepthThreshold, maxDepthThreshold, 1.0-(depth.r * depth.a));
|
|
253
136
|
depthFactor *= depthScale;
|
|
254
|
-
depthFactor = max(0.0001, min(1.0, depthFactor
|
|
137
|
+
depthFactor = max(0.0001, min(1.0, depthFactor));
|
|
138
|
+
|
|
139
|
+
#ifdef USE_BLUR
|
|
140
|
+
blur = blur * min(1.0, depthFactor + depthToBlurRatioBias);
|
|
141
|
+
merge = merge * min(1.0, depthFactor + 0.5);;
|
|
142
|
+
#else
|
|
143
|
+
merge = merge * depthFactor;
|
|
144
|
+
#endif
|
|
145
|
+
|
|
255
146
|
#endif
|
|
256
147
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
vec4 two = textureBicubic(u_mipmap_5, proj_vUv, u_mipmap_res_5);
|
|
268
|
-
mixedColor = mix(one, two, _lod - 1.0);
|
|
269
|
-
} else if (_lod < 3.) {
|
|
270
|
-
vec4 one = textureBicubic(u_mipmap_5, proj_vUv, u_mipmap_res_5);
|
|
271
|
-
vec4 two = textureBicubic(u_mipmap_4, proj_vUv, u_mipmap_res_4);
|
|
272
|
-
mixedColor = mix(one, two, _lod - 2.0);
|
|
273
|
-
} else if (_lod < 4.) {
|
|
274
|
-
vec4 one = textureBicubic(u_mipmap_4, proj_vUv, u_mipmap_res_4);
|
|
275
|
-
vec4 two = textureBicubic(u_mipmap_3, proj_vUv, u_mipmap_res_3);
|
|
276
|
-
mixedColor = mix(one, two, _lod - 3.0);
|
|
277
|
-
} else if (_lod < 5.) {
|
|
278
|
-
vec4 one = textureBicubic(u_mipmap_3, proj_vUv, u_mipmap_res_3);
|
|
279
|
-
vec4 two = textureBicubic(u_mipmap_2, proj_vUv, u_mipmap_res_2);
|
|
280
|
-
mixedColor = mix(one, two, _lod - 4.0);
|
|
281
|
-
} else if (_lod < 6.) {
|
|
282
|
-
vec4 one = textureBicubic(u_mipmap_2, proj_vUv, u_mipmap_res_2);
|
|
283
|
-
vec4 two = textureBicubic(u_mipmap_1, proj_vUv, u_mipmap_res_1);
|
|
284
|
-
mixedColor = mix(one, two, _lod - 5.0);
|
|
285
|
-
} else if (_lod < 7.) {
|
|
286
|
-
vec4 one = textureBicubic(u_mipmap_1, proj_vUv, u_mipmap_res_1);
|
|
287
|
-
vec4 two = textureBicubic(u_mipmap_0, proj_vUv, u_mipmap_res_0);
|
|
288
|
-
mixedColor = mix(one, two, _lod - 6.0);
|
|
289
|
-
} else {
|
|
290
|
-
vec4 one = textureBicubic(u_mipmap_0, proj_vUv, u_mipmap_res_0);
|
|
291
|
-
mixedColor = mix(one, baseColor, _lod - 7.0);
|
|
292
|
-
}
|
|
148
|
+
float reflectorRoughnessFactor = roughness;
|
|
149
|
+
#ifdef USE_ROUGHNESSMAP
|
|
150
|
+
vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );
|
|
151
|
+
reflectorRoughnessFactor *= reflectorTexelRoughness.g;
|
|
152
|
+
#endif
|
|
153
|
+
|
|
154
|
+
#ifdef USE_BLUR
|
|
155
|
+
blurFactor = min(1.0, mixBlur * reflectorRoughnessFactor);
|
|
156
|
+
merge = mix(merge, blur, blurFactor);
|
|
157
|
+
#endif
|
|
293
158
|
|
|
294
|
-
|
|
295
|
-
diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + mixedColor.rgb * mixStrength);
|
|
159
|
+
diffuseColor.rgb = diffuseColor.rgb * ((1.0 - min(1.0, mirror)) + merge.rgb * mixStrength);
|
|
296
160
|
diffuseColor = sRGBToLinear(diffuseColor);
|
|
297
|
-
|
|
161
|
+
|
|
298
162
|
if (debug == 1) {
|
|
299
163
|
diffuseColor = sRGBToLinear(vec4(vec3(depthFactor), 1.0));
|
|
300
164
|
}
|
|
301
165
|
if (debug == 2) {
|
|
302
|
-
diffuseColor = sRGBToLinear(
|
|
166
|
+
diffuseColor = sRGBToLinear(vec4(vec3(blurFactor), 1.0));
|
|
303
167
|
}
|
|
304
168
|
if (debug == 3) {
|
|
305
|
-
diffuseColor = sRGBToLinear(
|
|
169
|
+
diffuseColor = sRGBToLinear(texture2DProj(tDiffuse, new_vUv));
|
|
306
170
|
}
|
|
307
171
|
if (debug == 4) {
|
|
308
|
-
diffuseColor = sRGBToLinear(
|
|
172
|
+
diffuseColor = sRGBToLinear(texture2DProj(tDiffuseBlur, new_vUv));
|
|
309
173
|
}
|
|
310
174
|
`);
|
|
311
175
|
}
|
|
@@ -334,132 +198,12 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
334
198
|
this._distortionMap.value = v;
|
|
335
199
|
}
|
|
336
200
|
|
|
337
|
-
get
|
|
338
|
-
return this.
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
set u_mipmap_0(v) {
|
|
342
|
-
this._u_mipmap_0.value = v;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
get u_mipmap_1() {
|
|
346
|
-
return this._u_mipmap_1.value;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
set u_mipmap_1(v) {
|
|
350
|
-
this._u_mipmap_1.value = v;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
get u_mipmap_2() {
|
|
354
|
-
return this._u_mipmap_2.value;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
set u_mipmap_2(v) {
|
|
358
|
-
this._u_mipmap_2.value = v;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
get u_mipmap_3() {
|
|
362
|
-
return this._u_mipmap_3.value;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
set u_mipmap_3(v) {
|
|
366
|
-
this._u_mipmap_3.value = v;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
get u_mipmap_4() {
|
|
370
|
-
return this._u_mipmap_4.value;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
set u_mipmap_4(v) {
|
|
374
|
-
this._u_mipmap_4.value = v;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
get u_mipmap_5() {
|
|
378
|
-
return this._u_mipmap_5.value;
|
|
201
|
+
get tDiffuseBlur() {
|
|
202
|
+
return this._tDiffuseBlur.value;
|
|
379
203
|
}
|
|
380
204
|
|
|
381
|
-
set
|
|
382
|
-
this.
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
get u_mipmap_6() {
|
|
386
|
-
return this._u_mipmap_6.value;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
set u_mipmap_6(v) {
|
|
390
|
-
this._u_mipmap_6.value = v;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
get u_mipmap_7() {
|
|
394
|
-
return this._u_mipmap_7.value;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
set u_mipmap_7(v) {
|
|
398
|
-
this._u_mipmap_7.value = v;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
get u_mipmap_res_0() {
|
|
402
|
-
return this._u_mipmap_res_0.value;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
set u_mipmap_res_0(v) {
|
|
406
|
-
this._u_mipmap_res_0.value = v;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
get u_mipmap_res_1() {
|
|
410
|
-
return this._u_mipmap_res_1.value;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
set u_mipmap_res_1(v) {
|
|
414
|
-
this._u_mipmap_res_1.value = v;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
get u_mipmap_res_2() {
|
|
418
|
-
return this._u_mipmap_res_2.value;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
set u_mipmap_res_2(v) {
|
|
422
|
-
this._u_mipmap_res_2.value = v;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
get u_mipmap_res_3() {
|
|
426
|
-
return this._u_mipmap_res_3.value;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
set u_mipmap_res_3(v) {
|
|
430
|
-
this._u_mipmap_res_3.value = v;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
get u_mipmap_res_4() {
|
|
434
|
-
return this._u_mipmap_res_4.value;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
set u_mipmap_res_4(v) {
|
|
438
|
-
this._u_mipmap_res_4.value = v;
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
get u_mipmap_res_5() {
|
|
442
|
-
return this._u_mipmap_res_5.value;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
set u_mipmap_res_5(v) {
|
|
446
|
-
this._u_mipmap_res_5.value = v;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
get u_mipmap_res_6() {
|
|
450
|
-
return this._u_mipmap_res_6.value;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
set u_mipmap_res_6(v) {
|
|
454
|
-
this._u_mipmap_res_6.value = v;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
get u_mipmap_res_7() {
|
|
458
|
-
return this._u_mipmap_res_7.value;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
set u_mipmap_res_7(v) {
|
|
462
|
-
this._u_mipmap_res_7.value = v;
|
|
205
|
+
set tDiffuseBlur(v) {
|
|
206
|
+
this._tDiffuseBlur.value = v;
|
|
463
207
|
}
|
|
464
208
|
|
|
465
209
|
get textureMatrix() {
|
|
@@ -470,6 +214,14 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
|
|
|
470
214
|
this._textureMatrix.value = v;
|
|
471
215
|
}
|
|
472
216
|
|
|
217
|
+
get hasBlur() {
|
|
218
|
+
return this._hasBlur.value;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
set hasBlur(v) {
|
|
222
|
+
this._hasBlur.value = v;
|
|
223
|
+
}
|
|
224
|
+
|
|
473
225
|
get mirror() {
|
|
474
226
|
return this._mirror.value;
|
|
475
227
|
}
|
package/materials/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./MeshReflectorMaterial.cjs.js");require("three"),exports.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./BlurPass.cjs.js"),r=require("./MeshReflectorMaterial.cjs.js");require("three"),require("./ConvolutionMaterial.cjs.js"),exports.BlurPass=e.BlurPass,exports.MeshReflectorMaterial=r.MeshReflectorMaterial;
|
package/materials/index.d.ts
CHANGED
package/materials/index.js
CHANGED
package/native/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/Billboard.cjs.js"),r=require("../core/QuadraticBezierLine.cjs.js"),s=require("../core/CubicBezierLine.cjs.js"),o=require("../core/Line.cjs.js"),t=require("../core/PositionalAudio.cjs.js"),i=require("../core/Text.cjs.js"),c=require("../core/Effects.cjs.js"),u=require("../core/GradientTexture.cjs.js"),a=require("../core/Image.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/Billboard.cjs.js"),r=require("../core/QuadraticBezierLine.cjs.js"),s=require("../core/CubicBezierLine.cjs.js"),o=require("../core/Line.cjs.js"),t=require("../core/PositionalAudio.cjs.js"),i=require("../core/Text.cjs.js"),c=require("../core/Effects.cjs.js"),u=require("../core/GradientTexture.cjs.js"),a=require("../core/Image.cjs.js"),j=require("../core/OrthographicCamera.cjs.js"),p=require("../core/PerspectiveCamera.cjs.js"),n=require("../core/CubeCamera.cjs.js"),l=require("../core/DeviceOrientationControls.cjs.js"),x=require("../core/FlyControls.cjs.js"),q=require("../core/MapControls.cjs.js"),d=require("../core/OrbitControls.cjs.js"),h=require("../core/TrackballControls.cjs.js"),C=require("../core/ArcballControls.cjs.js"),m=require("../core/TransformControls.cjs.js"),B=require("../core/PointerLockControls.cjs.js"),S=require("../core/FirstPersonControls.cjs.js"),b=require("../core/GizmoHelper.cjs.js"),f=require("../core/GizmoViewcube.cjs.js"),P=require("../core/GizmoViewport.cjs.js"),M=require("../core/useCubeTexture.cjs.js"),T=require("../core/useFBX.cjs.js"),g=require("../core/useGLTF.cjs.js"),v=require("../core/useProgress.cjs.js"),D=require("../core/useTexture.cjs.js"),L=require("../core/Stats.cjs.js"),A=require("../core/DepthBuffer.cjs.js"),G=require("../core/useDepthBuffer.cjs.js"),k=require("../core/useAspect.cjs.js"),F=require("../core/useCamera.cjs.js"),w=require("../core/useDetectGPU.cjs.js"),z=require("../core/useHelper.cjs.js"),I=require("../core/useBVH.cjs.js"),O=require("../core/useContextBridge.cjs.js"),E=require("../core/useAnimations.cjs.js"),y=require("../core/useFBO.cjs.js"),R=require("../core/useIntersect.cjs.js"),H=require("../core/useSimplification.cjs.js"),V=require("../core/useTessellation.cjs.js"),Q=require("../core/useEdgeSplit.cjs.js"),W=require("../core/CurveModifier.cjs.js"),N=require("../core/MeshDistortMaterial.cjs.js"),U=require("../core/MeshWobbleMaterial.cjs.js"),X=require("../core/PointMaterial.cjs.js"),K=require("../core/shaderMaterial.cjs.js"),_=require("../core/softShadows.cjs.js"),J=require("../core/shapes.cjs.js"),Y=require("../core/RoundedBox.cjs.js"),Z=require("../core/ScreenQuad.cjs.js"),$=require("../core/Center.cjs.js"),ee=require("../core/Bounds.cjs.js"),re=require("../core/CameraShake.cjs.js"),se=require("../core/Float.cjs.js"),oe=require("../core/Stage.cjs.js"),te=require("../core/Backdrop.cjs.js"),ie=require("../core/Shadow.cjs.js"),ce=require("../core/ContactShadows.cjs.js"),ue=require("../core/Reflector.cjs.js"),ae=require("../core/SpotLight.cjs.js"),je=require("../core/Environment.cjs.js"),pe=require("../core/Sky.cjs.js"),ne=require("../core/Stars.cjs.js"),le=require("../core/Cloud.cjs.js"),xe=require("../core/useMatcapTexture.cjs.js"),qe=require("../core/useNormalTexture.cjs.js"),de=require("../core/Points.cjs.js"),he=require("../core/Instances.cjs.js"),Ce=require("../core/Segments.cjs.js"),me=require("../core/Detailed.cjs.js"),Be=require("../core/Preload.cjs.js"),Se=require("../core/BakeShadows.cjs.js"),be=require("../core/meshBounds.cjs.js"),fe=require("../core/AdaptiveDpr.cjs.js"),Pe=require("../core/AdaptiveEvents.cjs.js"),Me=require("../materials/BlurPass.cjs.js"),Te=require("../materials/MeshReflectorMaterial.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("use-asset"),require("three-mesh-bvh"),require("../helpers/environment-assets.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../assets/cloud.base64.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=o.Line,exports.PositionalAudio=t.PositionalAudio,exports.Text=i.Text,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=u.GradientTexture,exports.Image=a.Image,exports.OrthographicCamera=j.OrthographicCamera,exports.PerspectiveCamera=p.PerspectiveCamera,exports.CubeCamera=n.CubeCamera,exports.DeviceOrientationControls=l.DeviceOrientationControls,exports.FlyControls=x.FlyControls,exports.MapControls=q.MapControls,exports.OrbitControls=d.OrbitControls,exports.TrackballControls=h.TrackballControls,exports.ArcballControls=C.ArcballControls,exports.TransformControls=m.TransformControls,exports.PointerLockControls=B.PointerLockControls,exports.FirstPersonControls=S.FirstPersonControls,exports.GizmoHelper=b.GizmoHelper,exports.useGizmoContext=b.useGizmoContext,exports.GizmoViewcube=f.GizmoViewcube,exports.GizmoViewport=P.GizmoViewport,exports.useCubeTexture=M.useCubeTexture,exports.useFBX=T.useFBX,exports.useGLTF=g.useGLTF,exports.useProgress=v.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.Stats=L.Stats,exports.DepthBuffer=A.DepthBuffer,exports.useDepthBuffer=G.useDepthBuffer,exports.useAspect=k.useAspect,exports.useCamera=F.useCamera,exports.useDetectGPU=w.useDetectGPU,exports.useHelper=z.useHelper,exports.useBVH=I.useBVH,exports.useContextBridge=O.useContextBridge,exports.useAnimations=E.useAnimations,exports.useFBO=y.useFBO,exports.useIntersect=R.useIntersect,exports.useSimplification=H.useSimplification,exports.useTessellation=V.useTessellation,exports.useEdgeSplit=Q.useEdgeSplit,exports.CurveModifier=W.CurveModifier,exports.MeshDistortMaterial=N.MeshDistortMaterial,exports.MeshWobbleMaterial=U.MeshWobbleMaterial,exports.PointMaterial=X.PointMaterial,exports.PointMaterialImpl=X.PointMaterialImpl,exports.shaderMaterial=K.shaderMaterial,exports.softShadows=_.softShadows,exports.Box=J.Box,exports.Circle=J.Circle,exports.Cone=J.Cone,exports.Cylinder=J.Cylinder,exports.Dodecahedron=J.Dodecahedron,exports.Extrude=J.Extrude,exports.Icosahedron=J.Icosahedron,exports.Lathe=J.Lathe,exports.Octahedron=J.Octahedron,exports.Parametric=J.Parametric,exports.Plane=J.Plane,exports.Polyhedron=J.Polyhedron,exports.Ring=J.Ring,exports.Sphere=J.Sphere,exports.Tetrahedron=J.Tetrahedron,exports.Torus=J.Torus,exports.TorusKnot=J.TorusKnot,exports.Tube=J.Tube,exports.RoundedBox=Y.RoundedBox,exports.ScreenQuad=Z.ScreenQuad,exports.Center=$.Center,exports.Bounds=ee.Bounds,exports.useBounds=ee.useBounds,exports.CameraShake=re.CameraShake,exports.Float=se.Float,exports.Stage=oe.Stage,exports.Backdrop=te.Backdrop,exports.Shadow=ie.Shadow,exports.ContactShadows=ce.ContactShadows,exports.Reflector=ue.Reflector,exports.SpotLight=ae.SpotLight,exports.Environment=je.Environment,exports.Sky=pe.Sky,exports.calcPosFromAngles=pe.calcPosFromAngles,exports.Stars=ne.Stars,exports.Cloud=le.Cloud,exports.useMatcapTexture=xe.useMatcapTexture,exports.useNormalTexture=qe.useNormalTexture,exports.Point=de.Point,exports.Points=de.Points,exports.PointsBuffer=de.PointsBuffer,exports.Instance=he.Instance,exports.Instances=he.Instances,exports.Merged=he.Merged,exports.Segment=Ce.Segment,exports.Segments=Ce.Segments,exports.Detailed=me.Detailed,exports.Preload=Be.Preload,exports.BakeShadows=Se.BakeShadows,exports.meshBounds=be.meshBounds,exports.AdaptiveDpr=fe.AdaptiveDpr,exports.AdaptiveEvents=Pe.AdaptiveEvents,exports.BlurPass=Me.BlurPass,exports.MeshReflectorMaterial=Te.MeshReflectorMaterial;
|
package/native/index.js
CHANGED
|
@@ -76,6 +76,7 @@ export { BakeShadows } from '../core/BakeShadows.js';
|
|
|
76
76
|
export { meshBounds } from '../core/meshBounds.js';
|
|
77
77
|
export { AdaptiveDpr } from '../core/AdaptiveDpr.js';
|
|
78
78
|
export { AdaptiveEvents } from '../core/AdaptiveEvents.js';
|
|
79
|
+
export { BlurPass } from '../materials/BlurPass.js';
|
|
79
80
|
export { MeshReflectorMaterial } from '../materials/MeshReflectorMaterial.js';
|
|
80
81
|
import '@babel/runtime/helpers/esm/extends';
|
|
81
82
|
import 'react';
|
|
@@ -93,6 +94,7 @@ import 'detect-gpu';
|
|
|
93
94
|
import 'use-asset';
|
|
94
95
|
import 'three-mesh-bvh';
|
|
95
96
|
import '../helpers/environment-assets.js';
|
|
97
|
+
import '../materials/ConvolutionMaterial.js';
|
|
96
98
|
import '../materials/SpotLightMaterial.js';
|
|
97
99
|
import '../assets/cloud.base64.js';
|
|
98
100
|
import '../helpers/matcap-assets.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-three/drei",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.26.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "useful add-ons for react-three-fiber",
|
|
6
6
|
"keywords": [
|
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@babel/runtime": "^7.11.2",
|
|
43
|
+
"@react-spring/three": "^9.3.1",
|
|
44
|
+
"@use-gesture/react": "^10.2.0",
|
|
43
45
|
"detect-gpu": "^3.1.28",
|
|
44
46
|
"glsl-noise": "^0.0.0",
|
|
45
47
|
"lodash.omit": "^4.5.0",
|
|
@@ -48,7 +50,7 @@
|
|
|
48
50
|
"react-merge-refs": "^1.1.0",
|
|
49
51
|
"stats.js": "^0.17.0",
|
|
50
52
|
"three-mesh-bvh": "^0.5.2",
|
|
51
|
-
"three-stdlib": "^2.6.
|
|
53
|
+
"three-stdlib": "^2.6.1",
|
|
52
54
|
"troika-three-text": "^0.44.0",
|
|
53
55
|
"use-asset": "^1.0.4",
|
|
54
56
|
"utility-types": "^3.10.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),o=require("@react-three/fiber"),a=require("@react-spring/three"),n=require("@use-gesture/react");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=s(e);exports.PresentationControls=function({snap:e,global:s,children:u,speed:c=1,rotation:l=[0,0,0],zoom:f=1,polar:m=[0,Math.PI/2],azimuth:d=[-1/0,1/0],config:g={mass:1,tension:170,friction:26}}){const{size:h,gl:p}=o.useThree(),b=r.useMemo((()=>[l[0]+m[0],l[0]+m[1]]),[l[0],m[0],m[1]]),M=r.useMemo((()=>[l[1]+d[0],l[1]+d[1]]),[l[1],d[0],d[1]]),y=r.useMemo((()=>[t.MathUtils.clamp(l[0],...b),t.MathUtils.clamp(l[1],...M),l[2]]),[l[0],l[1],l[2],b,M]),[q,v]=a.useSpring((()=>({scale:1,rotation:y,config:g})));r.useEffect((()=>{v.start({scale:1,rotation:y,config:g})}),[y]),r.useEffect((()=>{s&&(document.body.style.cursor="grab")}),[s]);const P=n.useGesture({onHover:({last:e})=>{s||(document.body.style.cursor=e?"auto":"grab")},onDrag:({down:r,delta:[o,a],memo:[n,s]=q.rotation.animation.to||y})=>{document.body.style.cursor=r?"grabbing":"grab",o=t.MathUtils.clamp(s+o/h.width*Math.PI*c,...M),a=t.MathUtils.clamp(n+a/h.height*Math.PI*c,...b);const i=e&&!r&&"boolean"!=typeof e?e:g;return v.start({scale:r&&a>b[1]/2?f:1,rotation:e&&!r?y:[a,o,0],config:e=>"scale"===e?{...i,friction:3*i.friction}:i}),[a,o]}},{target:s&&p.domElement});return React.createElement(a.a.group,i.default({},null==P?void 0:P(),q),u)};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare type Props = {
|
|
3
|
+
snap?: boolean;
|
|
4
|
+
global?: boolean;
|
|
5
|
+
speed?: number;
|
|
6
|
+
zoom?: number;
|
|
7
|
+
rotation?: [number, number, number];
|
|
8
|
+
polar?: [number, number];
|
|
9
|
+
azimuth?: [number, number];
|
|
10
|
+
config?: any;
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare function PresentationControls({ snap, global, children, speed, rotation, zoom, polar, azimuth, config, }: Props): JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import { MathUtils } from 'three';
|
|
3
|
+
import { useMemo, useEffect } from 'react';
|
|
4
|
+
import { useThree } from '@react-three/fiber';
|
|
5
|
+
import { useSpring, a } from '@react-spring/three';
|
|
6
|
+
import { useGesture } from '@use-gesture/react';
|
|
7
|
+
|
|
8
|
+
function PresentationControls({
|
|
9
|
+
snap,
|
|
10
|
+
global,
|
|
11
|
+
children,
|
|
12
|
+
speed = 1,
|
|
13
|
+
rotation = [0, 0, 0],
|
|
14
|
+
zoom = 1,
|
|
15
|
+
polar = [0, Math.PI / 2],
|
|
16
|
+
azimuth = [-Infinity, Infinity],
|
|
17
|
+
config = {
|
|
18
|
+
mass: 1,
|
|
19
|
+
tension: 170,
|
|
20
|
+
friction: 26
|
|
21
|
+
}
|
|
22
|
+
}) {
|
|
23
|
+
const {
|
|
24
|
+
size,
|
|
25
|
+
gl
|
|
26
|
+
} = useThree();
|
|
27
|
+
const rPolar = useMemo(() => [rotation[0] + polar[0], rotation[0] + polar[1]], [rotation[0], polar[0], polar[1]]);
|
|
28
|
+
const rAzimuth = useMemo(() => [rotation[1] + azimuth[0], rotation[1] + azimuth[1]], [rotation[1], azimuth[0], azimuth[1]]);
|
|
29
|
+
const rInitial = useMemo(() => [MathUtils.clamp(rotation[0], ...rPolar), MathUtils.clamp(rotation[1], ...rAzimuth), rotation[2]], [rotation[0], rotation[1], rotation[2], rPolar, rAzimuth]);
|
|
30
|
+
const [spring, api] = useSpring(() => ({
|
|
31
|
+
scale: 1,
|
|
32
|
+
rotation: rInitial,
|
|
33
|
+
config
|
|
34
|
+
}));
|
|
35
|
+
useEffect(() => void api.start({
|
|
36
|
+
scale: 1,
|
|
37
|
+
rotation: rInitial,
|
|
38
|
+
config
|
|
39
|
+
}), [rInitial]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (global) document.body.style.cursor = 'grab';
|
|
42
|
+
}, [global]);
|
|
43
|
+
const bind = useGesture({
|
|
44
|
+
onHover: ({
|
|
45
|
+
last
|
|
46
|
+
}) => {
|
|
47
|
+
if (!global) document.body.style.cursor = last ? 'auto' : 'grab';
|
|
48
|
+
},
|
|
49
|
+
onDrag: ({
|
|
50
|
+
down,
|
|
51
|
+
delta: [x, y],
|
|
52
|
+
memo: [oldY, oldX] = spring.rotation.animation.to || rInitial
|
|
53
|
+
}) => {
|
|
54
|
+
document.body.style.cursor = down ? 'grabbing' : 'grab';
|
|
55
|
+
x = MathUtils.clamp(oldX + x / size.width * Math.PI * speed, ...rAzimuth);
|
|
56
|
+
y = MathUtils.clamp(oldY + y / size.height * Math.PI * speed, ...rPolar);
|
|
57
|
+
const sConfig = snap && !down && typeof snap !== 'boolean' ? snap : config;
|
|
58
|
+
api.start({
|
|
59
|
+
scale: down && y > rPolar[1] / 2 ? zoom : 1,
|
|
60
|
+
rotation: snap && !down ? rInitial : [y, x, 0],
|
|
61
|
+
config: n => n === 'scale' ? { ...sConfig,
|
|
62
|
+
friction: sConfig.friction * 3
|
|
63
|
+
} : sConfig
|
|
64
|
+
});
|
|
65
|
+
return [y, x];
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
target: global && gl.domElement
|
|
69
|
+
});
|
|
70
|
+
return /*#__PURE__*/React.createElement(a.group, _extends({}, bind == null ? void 0 : bind(), spring), children);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { PresentationControls };
|