@react-three/drei 7.25.4 → 7.27.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.
Files changed (59) hide show
  1. package/README.md +1661 -0
  2. package/core/ArcballControls.d.ts +1 -1
  3. package/core/Backdrop.js +3 -1
  4. package/core/BakeShadows.cjs.js +1 -1
  5. package/core/BakeShadows.js +3 -3
  6. package/core/Bounds.cjs.js +1 -1
  7. package/core/Bounds.js +2 -2
  8. package/core/DeviceOrientationControls.d.ts +1 -1
  9. package/core/Instances.cjs.js +1 -1
  10. package/core/Instances.js +1 -1
  11. package/core/Line.d.ts +1 -1
  12. package/core/MapControls.d.ts +1 -1
  13. package/core/MeshDistortMaterial.d.ts +1 -1
  14. package/core/MeshReflectorMaterial.cjs.js +1 -0
  15. package/core/MeshReflectorMaterial.d.ts +25 -0
  16. package/core/MeshReflectorMaterial.js +180 -0
  17. package/core/MeshWobbleMaterial.d.ts +1 -1
  18. package/core/OrbitControls.d.ts +1 -1
  19. package/core/PositionalAudio.d.ts +1 -1
  20. package/core/QuadraticBezierLine.js +5 -1
  21. package/core/Reflector.cjs.js +1 -1
  22. package/core/Reflector.d.ts +4 -5
  23. package/core/Reflector.js +34 -49
  24. package/core/SpotLight.d.ts +1 -1
  25. package/core/Text.d.ts +1 -1
  26. package/core/TrackballControls.d.ts +1 -1
  27. package/core/TransformControls.d.ts +1 -1
  28. package/core/index.cjs.js +1 -1
  29. package/core/index.d.ts +1 -0
  30. package/core/index.js +4 -1
  31. package/core/useDetectGPU.cjs.js +1 -1
  32. package/core/useDetectGPU.d.ts +1 -1
  33. package/core/useDetectGPU.js +1 -5
  34. package/index.cjs.js +1 -1
  35. package/index.js +2 -1
  36. package/materials/BlurPass.cjs.js +1 -0
  37. package/materials/BlurPass.d.ts +23 -0
  38. package/materials/BlurPass.js +75 -0
  39. package/materials/ConvolutionMaterial.cjs.js +1 -0
  40. package/materials/ConvolutionMaterial.d.ts +7 -0
  41. package/materials/ConvolutionMaterial.js +97 -0
  42. package/materials/MeshReflectorMaterial.cjs.js +1 -1
  43. package/materials/MeshReflectorMaterial.d.ts +10 -66
  44. package/materials/MeshReflectorMaterial.js +65 -313
  45. package/native/index.cjs.js +1 -1
  46. package/native/index.d.ts +0 -1
  47. package/native/index.js +4 -1
  48. package/package.json +3 -1
  49. package/web/PresentationControls.cjs.js +1 -0
  50. package/web/PresentationControls.d.ts +14 -0
  51. package/web/PresentationControls.js +73 -0
  52. package/web/ScrollControls.cjs.js +1 -1
  53. package/web/ScrollControls.js +1 -1
  54. package/web/index.cjs.js +1 -1
  55. package/web/index.d.ts +1 -1
  56. package/web/index.js +7 -1
  57. package/materials/index.cjs.js +0 -1
  58. package/materials/index.d.ts +0 -1
  59. package/materials/index.js +0 -2
@@ -15,57 +15,15 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
15
15
  this._tDiffuse = {
16
16
  value: null
17
17
  };
18
- this._u_mipmap_0 = {
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.u_mipmap_0 = this._u_mipmap_0;
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 , normalColor.g * 2.0 - 1.0 ) );
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
- #ifdef USE_ROUGHNESSMAP
240
- vec4 reflectorTexelRoughness = texture2D( roughnessMap, vUv );
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 = texture2D(tDepth, proj_vUv);
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 + depthToBlurRatioBias));
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
- vec4 baseColor = texture2D(tDiffuse, proj_vUv);
258
- vec4 mixedColor;
259
-
260
- float _lod = (1.0 - pow(1.0 - lod, 4.0)) * 8.0;
261
- if (_lod < 1.) {
262
- vec4 one = textureBicubic(u_mipmap_7, proj_vUv, u_mipmap_res_7);
263
- vec4 two = textureBicubic(u_mipmap_6, proj_vUv, u_mipmap_res_6);
264
- mixedColor = mix(one, two, _lod);
265
- } else if (_lod < 2.) {
266
- vec4 one = textureBicubic(u_mipmap_6, proj_vUv, u_mipmap_res_6);
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
- mixedColor.rgb *= depthFactor;
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(texture2D(tDiffuse, proj_vUv));
166
+ diffuseColor = sRGBToLinear(vec4(vec3(blurFactor), 1.0));
303
167
  }
304
168
  if (debug == 3) {
305
- diffuseColor = sRGBToLinear(texture2D(distortionMap, vUv));
169
+ diffuseColor = sRGBToLinear(texture2DProj(tDiffuse, new_vUv));
306
170
  }
307
171
  if (debug == 4) {
308
- diffuseColor = sRGBToLinear(vec4(vec3(lod), 1.0));
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 u_mipmap_0() {
338
- return this._u_mipmap_0.value;
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 u_mipmap_5(v) {
382
- this._u_mipmap_5.value = v;
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
  }
@@ -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"),p=require("../core/OrthographicCamera.cjs.js"),j=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"),pe=require("../core/Environment.cjs.js"),je=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/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/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=p.OrthographicCamera,exports.PerspectiveCamera=j.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=pe.Environment,exports.Sky=je.Sky,exports.calcPosFromAngles=je.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.MeshReflectorMaterial=Me.MeshReflectorMaterial;
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"),f=require("../core/GizmoHelper.cjs.js"),b=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"),R=require("../core/useFBO.cjs.js"),y=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/MeshReflectorMaterial.cjs.js"),K=require("../core/PointMaterial.cjs.js"),_=require("../core/shaderMaterial.cjs.js"),J=require("../core/softShadows.cjs.js"),Y=require("../core/shapes.cjs.js"),Z=require("../core/RoundedBox.cjs.js"),$=require("../core/ScreenQuad.cjs.js"),ee=require("../core/Center.cjs.js"),re=require("../core/Bounds.cjs.js"),se=require("../core/CameraShake.cjs.js"),oe=require("../core/Float.cjs.js"),te=require("../core/Stage.cjs.js"),ie=require("../core/Backdrop.cjs.js"),ce=require("../core/Shadow.cjs.js"),ue=require("../core/ContactShadows.cjs.js"),ae=require("../core/Reflector.cjs.js"),je=require("../core/SpotLight.cjs.js"),pe=require("../core/Environment.cjs.js"),ne=require("../core/Sky.cjs.js"),le=require("../core/Stars.cjs.js"),xe=require("../core/Cloud.cjs.js"),qe=require("../core/useMatcapTexture.cjs.js"),de=require("../core/useNormalTexture.cjs.js"),he=require("../core/Points.cjs.js"),Ce=require("../core/Instances.cjs.js"),me=require("../core/Segments.cjs.js"),Be=require("../core/Detailed.cjs.js"),Se=require("../core/Preload.cjs.js"),fe=require("../core/BakeShadows.cjs.js"),be=require("../core/meshBounds.cjs.js"),Pe=require("../core/AdaptiveDpr.cjs.js"),Me=require("../core/AdaptiveEvents.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("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.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=f.GizmoHelper,exports.useGizmoContext=f.useGizmoContext,exports.GizmoViewcube=b.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=R.useFBO,exports.useIntersect=y.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.MeshReflectorMaterial=X.MeshReflectorMaterial,exports.PointMaterial=K.PointMaterial,exports.PointMaterialImpl=K.PointMaterialImpl,exports.shaderMaterial=_.shaderMaterial,exports.softShadows=J.softShadows,exports.Box=Y.Box,exports.Circle=Y.Circle,exports.Cone=Y.Cone,exports.Cylinder=Y.Cylinder,exports.Dodecahedron=Y.Dodecahedron,exports.Extrude=Y.Extrude,exports.Icosahedron=Y.Icosahedron,exports.Lathe=Y.Lathe,exports.Octahedron=Y.Octahedron,exports.Parametric=Y.Parametric,exports.Plane=Y.Plane,exports.Polyhedron=Y.Polyhedron,exports.Ring=Y.Ring,exports.Sphere=Y.Sphere,exports.Tetrahedron=Y.Tetrahedron,exports.Torus=Y.Torus,exports.TorusKnot=Y.TorusKnot,exports.Tube=Y.Tube,exports.RoundedBox=Z.RoundedBox,exports.ScreenQuad=$.ScreenQuad,exports.Center=ee.Center,exports.Bounds=re.Bounds,exports.useBounds=re.useBounds,exports.CameraShake=se.CameraShake,exports.Float=oe.Float,exports.Stage=te.Stage,exports.Backdrop=ie.Backdrop,exports.Shadow=ce.Shadow,exports.ContactShadows=ue.ContactShadows,exports.Reflector=ae.Reflector,exports.SpotLight=je.SpotLight,exports.Environment=pe.Environment,exports.Sky=ne.Sky,exports.calcPosFromAngles=ne.calcPosFromAngles,exports.Stars=le.Stars,exports.Cloud=xe.Cloud,exports.useMatcapTexture=qe.useMatcapTexture,exports.useNormalTexture=de.useNormalTexture,exports.Point=he.Point,exports.Points=he.Points,exports.PointsBuffer=he.PointsBuffer,exports.Instance=Ce.Instance,exports.Instances=Ce.Instances,exports.Merged=Ce.Merged,exports.Segment=me.Segment,exports.Segments=me.Segments,exports.Detailed=Be.Detailed,exports.Preload=Se.Preload,exports.BakeShadows=fe.BakeShadows,exports.meshBounds=be.meshBounds,exports.AdaptiveDpr=Pe.AdaptiveDpr,exports.AdaptiveEvents=Me.AdaptiveEvents;
package/native/index.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export * from '../core';
2
- export * from '../materials';
package/native/index.js CHANGED
@@ -45,6 +45,7 @@ export { useEdgeSplit } from '../core/useEdgeSplit.js';
45
45
  export { CurveModifier } from '../core/CurveModifier.js';
46
46
  export { MeshDistortMaterial } from '../core/MeshDistortMaterial.js';
47
47
  export { MeshWobbleMaterial } from '../core/MeshWobbleMaterial.js';
48
+ export { MeshReflectorMaterial } from '../core/MeshReflectorMaterial.js';
48
49
  export { PointMaterial, PointMaterialImpl } from '../core/PointMaterial.js';
49
50
  export { shaderMaterial } from '../core/shaderMaterial.js';
50
51
  export { softShadows } from '../core/softShadows.js';
@@ -76,7 +77,6 @@ export { BakeShadows } from '../core/BakeShadows.js';
76
77
  export { meshBounds } from '../core/meshBounds.js';
77
78
  export { AdaptiveDpr } from '../core/AdaptiveDpr.js';
78
79
  export { AdaptiveEvents } from '../core/AdaptiveEvents.js';
79
- export { MeshReflectorMaterial } from '../materials/MeshReflectorMaterial.js';
80
80
  import '@babel/runtime/helpers/esm/extends';
81
81
  import 'react';
82
82
  import '@react-three/fiber';
@@ -92,6 +92,9 @@ import '../helpers/useEffectfulState.js';
92
92
  import 'detect-gpu';
93
93
  import 'use-asset';
94
94
  import 'three-mesh-bvh';
95
+ import '../materials/BlurPass.js';
96
+ import '../materials/ConvolutionMaterial.js';
97
+ import '../materials/MeshReflectorMaterial.js';
95
98
  import '../helpers/environment-assets.js';
96
99
  import '../materials/SpotLightMaterial.js';
97
100
  import '../assets/cloud.base64.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/drei",
3
- "version": "7.25.4",
3
+ "version": "7.27.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",
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),o=require("@react-three/fiber"),n=require("@react-spring/three"),a=require("@use-gesture/react");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=i(e),c=s(t);exports.PresentationControls=function({snap:e,global:t,children:i,speed:s=1,rotation:l=[0,0,0],zoom:f=1,polar:d=[0,Math.PI/2],azimuth:b=[-1/0,1/0],config:g={mass:1,tension:170,friction:26}}){const{size:m,gl:p}=o.useThree(),h=c.useMemo((()=>[l[0]+d[0],l[0]+d[1]]),[l[0],d[0],d[1]]),y=c.useMemo((()=>[l[1]+b[0],l[1]+b[1]]),[l[1],b[0],b[1]]),M=c.useMemo((()=>[r.MathUtils.clamp(l[0],...h),r.MathUtils.clamp(l[1],...y),l[2]]),[l[0],l[1],l[2],h,y]),[j,v]=n.useSpring((()=>({scale:1,rotation:M,config:g})));c.useEffect((()=>{v.start({scale:1,rotation:M,config:g})}),[M]),c.useEffect((()=>{t&&(document.body.style.cursor="grab")}),[t]);const O=a.useGesture({onHover:({last:e})=>{t||(document.body.style.cursor=e?"auto":"grab")},onDrag:({down:t,delta:[o,n],memo:[a,i]=j.rotation.animation.to||M})=>{document.body.style.cursor=t?"grabbing":"grab",o=r.MathUtils.clamp(i+o/m.width*Math.PI*s,...y),n=r.MathUtils.clamp(a+n/m.height*Math.PI*s,...h);const u=e&&!t&&"boolean"!=typeof e?e:g;return v.start({scale:t&&n>h[1]/2?f:1,rotation:e&&!t?M:[n,o,0],config:e=>"scale"===e?{...u,friction:3*u.friction}:u}),[n,o]}},{target:t&&p.domElement});return c.createElement(n.a.group,u.default({},null==O?void 0:O(),j),i)};
@@ -0,0 +1,14 @@
1
+ import * as React from '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 * as React from 'react';
3
+ import { MathUtils } from 'three';
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 = React.useMemo(() => [rotation[0] + polar[0], rotation[0] + polar[1]], [rotation[0], polar[0], polar[1]]);
28
+ const rAzimuth = React.useMemo(() => [rotation[1] + azimuth[0], rotation[1] + azimuth[1]], [rotation[1], azimuth[0], azimuth[1]]);
29
+ const rInitial = React.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
+ React.useEffect(() => void api.start({
36
+ scale: 1,
37
+ rotation: rInitial,
38
+ config
39
+ }), [rInitial]);
40
+ React.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 };
@@ -1 +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-dom"),s=require("@react-three/fiber"),n=require("react-merge-refs");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var f=l(e),c=i(t),a=i(r),u=i(o),d=l(n);const p=a.createContext(null);function h(){return a.useContext(p)}const m=a.forwardRef((({children:e},t)=>{const r=a.useRef(null),o=h(),{width:n,height:l}=s.useThree((e=>e.viewport));return s.useFrame((()=>{r.current.position.x=o.horizontal?-n*(o.pages-1)*o.offset:0,r.current.position.y=o.horizontal?0:l*(o.pages-1)*o.offset})),a.createElement("group",{ref:d.default([t,r])},e)})),v=a.forwardRef((({children:e,style:t,...r},o)=>{const n=h(),l=a.useRef(null),{width:i,height:c}=s.useThree((e=>e.size)),m=a.useContext(s.context);return s.useFrame((()=>{n.delta>n.eps&&(l.current.style.transform=`translate3d(${n.horizontal?-i*(n.pages-1)*n.offset:0}px,${n.horizontal?0:c*(n.pages-1)*-n.offset}px,0)`)})),u.render(a.createElement("div",f.default({ref:d.default([o,l]),style:{...t,position:"absolute",top:0,left:0,willChange:"transform"}},r),a.createElement(p.Provider,{value:n},a.createElement(s.context.Provider,{value:m},e))),n.fixed),null})),y=a.forwardRef((({html:e,...t},r)=>{const o=e?v:m;return a.createElement(o,f.default({ref:r},t))}));exports.Scroll=y,exports.ScrollControls=function({eps:e=1e-5,enabled:t=!0,infinite:r,horizontal:o,pages:n=1,distance:l=1,damping:i=4,style:f={},children:u}){const{gl:d,size:h,invalidate:m,events:v,raycaster:y}=s.useThree(),[g]=a.useState((()=>document.createElement("div"))),[w]=a.useState((()=>document.createElement("div"))),[x]=a.useState((()=>document.createElement("div"))),E=d.domElement.parentNode,b=a.useRef(0),L=a.useMemo((()=>({el:g,eps:e,fill:w,fixed:x,horizontal:o,damping:i,offset:0,delta:0,scroll:b,pages:n,range(e,t,r=0){const o=e-r,s=o+t+2*r;return this.offset<o?0:this.offset>s?1:(this.offset-o)/(s-o)},curve(e,t,r=0){return Math.sin(this.range(e,t,r)*Math.PI)},visible(e,t,r=0){const o=e-r,s=o+t+2*r;return this.offset>=o&&this.offset<=s}})),[e,i,o,n]);a.useEffect((()=>{g.style.position="absolute",g.style.width="100%",g.style.height="100%",g.style[o?"overflowX":"overflowY"]="auto",g.style[o?"overflowY":"overflowX"]="hidden",g.style.top="0px",g.style.left="0px";for(const e in f)g.style[e]=f[e];x.style.position="sticky",x.style.top="0px",x.style.left="0px",x.style.width="100%",x.style.height="100%",x.style.overflow="hidden",g.appendChild(x),w.style.height=o?"100%":n*l*100+"%",w.style.width=o?n*l*100+"%":"100%",w.style.pointerEvents="none",g.appendChild(w),E.appendChild(g),g[o?"scrollLeft":"scrollTop"]=1;const e="boolean"!=typeof v.connected?v.connected:d.domElement;requestAnimationFrame((()=>null==v.connect?void 0:v.connect(g)));const t=y.computeOffsets;return y.computeOffsets=({clientX:e,clientY:t})=>({offsetX:e-E.offsetLeft,offsetY:t-E.offsetTop}),()=>{E.removeChild(g),y.computeOffsets=t,null==v.connect||v.connect(e)}}),[n,l,o,g,w,x,E]),a.useEffect((()=>{const e=h[o?"width":"height"],s=g[o?"scrollWidth":"scrollHeight"],n=s-e;let l=0,i=!0,f=!0;const c=e=>{if(t&&!f&&(m(),l=g[o?"scrollLeft":"scrollTop"],b.current=l/n,r)){if(!i)if(l>=n){const e=1-L.offset;g[o?"scrollLeft":"scrollTop"]=1,b.current=L.offset=-e,i=!0}else if(l<=0){const e=1+L.offset;g[o?"scrollLeft":"scrollTop"]=s,b.current=L.offset=e,i=!0}i&&setTimeout((()=>i=!1),40)}};g.addEventListener("scroll",c,{passive:!0}),requestAnimationFrame((()=>f=!1));const a=e=>g.scrollLeft+=e.deltaY/2;return o&&g.addEventListener("wheel",a,{passive:!0}),()=>{g.removeEventListener("scroll",c),o&&g.removeEventListener("wheel",a)}}),[g,h,r,L,m,o]);let O=0;return s.useFrame(((t,r)=>{L.offset=c.MathUtils.damp(O=L.offset,b.current,i,r),L.delta=c.MathUtils.damp(L.delta,Math.abs(O-L.offset),i,r),L.delta>e&&m()})),a.createElement(p.Provider,{value:L},u)},exports.useScroll=h;
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-dom"),s=require("@react-three/fiber"),n=require("react-merge-refs");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var f=l(e),c=i(t),a=i(r),u=i(o),d=l(n);const p=a.createContext(null);function h(){return a.useContext(p)}const m=a.forwardRef((({children:e},t)=>{const r=a.useRef(null),o=h(),{width:n,height:l}=s.useThree((e=>e.viewport));return s.useFrame((()=>{r.current.position.x=o.horizontal?-n*(o.pages-1)*o.offset:0,r.current.position.y=o.horizontal?0:l*(o.pages-1)*o.offset})),a.createElement("group",{ref:d.default([t,r])},e)})),v=a.forwardRef((({children:e,style:t,...r},o)=>{const n=h(),l=a.useRef(null),{width:i,height:c}=s.useThree((e=>e.size)),m=a.useContext(s.context);return s.useFrame((()=>{n.delta>n.eps&&(l.current.style.transform=`translate3d(${n.horizontal?-i*(n.pages-1)*n.offset:0}px,${n.horizontal?0:c*(n.pages-1)*-n.offset}px,0)`)})),u.render(a.createElement("div",f.default({ref:d.default([o,l]),style:{...t,position:"absolute",top:0,left:0,willChange:"transform"}},r),a.createElement(p.Provider,{value:n},a.createElement(s.context.Provider,{value:m},e))),n.fixed),null})),y=a.forwardRef((({html:e,...t},r)=>{const o=e?v:m;return a.createElement(o,f.default({ref:r},t))}));exports.Scroll=y,exports.ScrollControls=function({eps:e=1e-5,enabled:t=!0,infinite:r,horizontal:o,pages:n=1,distance:l=1,damping:i=4,style:f={},children:u}){const{gl:d,size:h,invalidate:m,events:v,raycaster:y}=s.useThree(),[g]=a.useState((()=>document.createElement("div"))),[w]=a.useState((()=>document.createElement("div"))),[x]=a.useState((()=>document.createElement("div"))),E=d.domElement.parentNode,b=a.useRef(0),L=a.useMemo((()=>({el:g,eps:e,fill:w,fixed:x,horizontal:o,damping:i,offset:0,delta:0,scroll:b,pages:n,range(e,t,r=0){const o=e-r,s=o+t+2*r;return this.offset<o?0:this.offset>s?1:(this.offset-o)/(s-o)},curve(e,t,r=0){return Math.sin(this.range(e,t,r)*Math.PI)},visible(e,t,r=0){const o=e-r,s=o+t+2*r;return this.offset>=o&&this.offset<=s}})),[e,i,o,n]);a.useEffect((()=>{g.style.position="absolute",g.style.width="100%",g.style.height="100%",g.style[o?"overflowX":"overflowY"]="auto",g.style[o?"overflowY":"overflowX"]="hidden",g.style.top="0px",g.style.left="0px";for(const e in f)g.style[e]=f[e];x.style.position="sticky",x.style.top="0px",x.style.left="0px",x.style.width="100%",x.style.height="100%",x.style.overflow="hidden",g.appendChild(x),w.style.height=o?"100%":n*l*100+"%",w.style.width=o?n*l*100+"%":"100%",w.style.pointerEvents="none",g.appendChild(w),E.appendChild(g),g[o?"scrollLeft":"scrollTop"]=1;const e="boolean"!=typeof v.connected?v.connected:d.domElement;requestAnimationFrame((()=>null==v.connect?void 0:v.connect(g)));const t=y.computeOffsets;return y.computeOffsets=({clientX:e,clientY:t})=>({offsetX:e-E.offsetLeft,offsetY:t-E.offsetTop}),()=>{E.removeChild(g),y.computeOffsets=t,null==v.connect||v.connect(e)}}),[n,l,o,g,w,x,E]),a.useEffect((()=>{const e=h[o?"width":"height"],s=g[o?"scrollWidth":"scrollHeight"],n=s-e;let l=0,i=!0,f=!0;const c=()=>{if(t&&!f&&(m(),l=g[o?"scrollLeft":"scrollTop"],b.current=l/n,r)){if(!i)if(l>=n){const e=1-L.offset;g[o?"scrollLeft":"scrollTop"]=1,b.current=L.offset=-e,i=!0}else if(l<=0){const e=1+L.offset;g[o?"scrollLeft":"scrollTop"]=s,b.current=L.offset=e,i=!0}i&&setTimeout((()=>i=!1),40)}};g.addEventListener("scroll",c,{passive:!0}),requestAnimationFrame((()=>f=!1));const a=e=>g.scrollLeft+=e.deltaY/2;return o&&g.addEventListener("wheel",a,{passive:!0}),()=>{g.removeEventListener("scroll",c),o&&g.removeEventListener("wheel",a)}}),[g,h,r,L,m,o]);let O=0;return s.useFrame(((t,r)=>{L.offset=c.MathUtils.damp(O=L.offset,b.current,i,r),L.delta=c.MathUtils.damp(L.delta,Math.abs(O-L.offset),i,r),L.delta>e&&m()})),a.createElement(p.Provider,{value:L},u)},exports.useScroll=h;