@react-three/drei 9.96.4 → 9.97.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 (183) hide show
  1. package/README.md +82 -9
  2. package/core/AccumulativeShadows.cjs.js +1 -1
  3. package/core/AdaptiveDpr.cjs.js +1 -1
  4. package/core/AdaptiveEvents.cjs.js +1 -1
  5. package/core/ArcballControls.cjs.js +1 -1
  6. package/core/AsciiRenderer.cjs.js +1 -1
  7. package/core/BBAnchor.cjs.js +1 -1
  8. package/core/Backdrop.cjs.js +1 -1
  9. package/core/BakeShadows.cjs.js +1 -1
  10. package/core/Billboard.cjs.js +1 -1
  11. package/core/Bounds.cjs.js +1 -1
  12. package/core/CameraControls.cjs.js +1 -1
  13. package/core/CameraControls.d.ts +2 -2
  14. package/core/CameraShake.cjs.js +1 -1
  15. package/core/CatmullRomLine.cjs.js +1 -1
  16. package/core/Caustics.cjs.js +1 -1
  17. package/core/Center.cjs.js +1 -1
  18. package/core/Clone.cjs.js +1 -1
  19. package/core/Cloud.cjs.js +1 -1
  20. package/core/ComputedAttribute.cjs.js +1 -1
  21. package/core/ContactShadows.cjs.js +1 -1
  22. package/core/CubeCamera.cjs.js +1 -1
  23. package/core/CubicBezierLine.cjs.js +1 -1
  24. package/core/CurveModifier.cjs.js +1 -1
  25. package/core/Decal.cjs.js +1 -1
  26. package/core/Detailed.cjs.js +1 -1
  27. package/core/DeviceOrientationControls.cjs.js +1 -1
  28. package/core/Edges.cjs.js +1 -1
  29. package/core/Effects.cjs.js +1 -1
  30. package/core/Environment.cjs.js +1 -1
  31. package/core/Example.cjs.js +1 -1
  32. package/core/FirstPersonControls.cjs.js +1 -1
  33. package/core/Fisheye.cjs.js +1 -1
  34. package/core/Float.cjs.js +1 -1
  35. package/core/FlyControls.cjs.js +1 -1
  36. package/core/GizmoHelper.cjs.js +1 -1
  37. package/core/GizmoViewcube.cjs.js +1 -1
  38. package/core/GizmoViewport.cjs.js +1 -1
  39. package/core/Gltf.cjs.js +1 -1
  40. package/core/GradientTexture.cjs.js +1 -1
  41. package/core/Grid.cjs.js +1 -1
  42. package/core/Hud.cjs.js +1 -1
  43. package/core/Image.cjs.js +1 -1
  44. package/core/Instances.cjs.js +1 -1
  45. package/core/Lightformer.cjs.js +1 -1
  46. package/core/Line.cjs.js +1 -1
  47. package/core/MapControls.cjs.js +1 -1
  48. package/core/MarchingCubes.cjs.js +1 -1
  49. package/core/Mask.cjs.js +1 -1
  50. package/core/MeshDiscardMaterial.cjs.js +1 -1
  51. package/core/MeshDistortMaterial.cjs.js +1 -1
  52. package/core/MeshPortalMaterial.cjs.js +1 -1
  53. package/core/MeshReflectorMaterial.cjs.js +1 -1
  54. package/core/MeshRefractionMaterial.cjs.js +1 -1
  55. package/core/MeshTransmissionMaterial.cjs.js +1 -1
  56. package/core/MeshTransmissionMaterial.d.ts +2 -2
  57. package/core/MeshWobbleMaterial.cjs.js +1 -1
  58. package/core/MotionPathControls.cjs.js +1 -1
  59. package/core/OrbitControls.cjs.js +1 -1
  60. package/core/OrthographicCamera.cjs.js +1 -1
  61. package/core/Outlines.cjs.js +1 -1
  62. package/core/PerformanceMonitor.cjs.js +1 -1
  63. package/core/PerspectiveCamera.cjs.js +1 -1
  64. package/core/PointMaterial.cjs.js +1 -1
  65. package/core/PointerLockControls.cjs.js +1 -1
  66. package/core/Points.cjs.js +1 -1
  67. package/core/PositionalAudio.cjs.js +1 -1
  68. package/core/Preload.cjs.js +1 -1
  69. package/core/QuadraticBezierLine.cjs.js +1 -1
  70. package/core/Reflector.cjs.js +1 -1
  71. package/core/RenderCubeTexture.cjs.js +1 -1
  72. package/core/RenderTexture.cjs.js +1 -1
  73. package/core/Resize.cjs.js +1 -1
  74. package/core/RoundedBox.cjs.js +1 -1
  75. package/core/Sampler.cjs.js +1 -1
  76. package/core/ScreenQuad.cjs.js +1 -1
  77. package/core/ScreenSizer.cjs.js +1 -0
  78. package/core/ScreenSizer.d.ts +7 -0
  79. package/core/ScreenSizer.js +39 -0
  80. package/core/ScreenSpace.cjs.js +1 -1
  81. package/core/Segments.cjs.js +1 -1
  82. package/core/Shadow.cjs.js +1 -1
  83. package/core/ShadowAlpha.cjs.js +1 -1
  84. package/core/ShadowAlpha.js +0 -1
  85. package/core/Sky.cjs.js +1 -1
  86. package/core/Sparkles.cjs.js +1 -1
  87. package/core/Splat.cjs.js +1 -1
  88. package/core/SpotLight.cjs.js +1 -1
  89. package/core/SpriteAnimator.cjs.js +1 -1
  90. package/core/SpriteAnimator.d.ts +2 -1
  91. package/core/SpriteAnimator.js +34 -123
  92. package/core/Stage.cjs.js +1 -1
  93. package/core/Stars.cjs.js +1 -1
  94. package/core/Stats.cjs.js +1 -1
  95. package/core/StatsGl.cjs.js +1 -1
  96. package/core/Svg.cjs.js +1 -1
  97. package/core/Text.cjs.js +1 -1
  98. package/core/Text3D.cjs.js +1 -1
  99. package/core/TrackballControls.cjs.js +1 -1
  100. package/core/Trail.cjs.js +1 -1
  101. package/core/TransformControls.cjs.js +1 -1
  102. package/core/Wireframe.cjs.js +1 -1
  103. package/core/calculateScaleFactor.cjs.js +1 -0
  104. package/core/calculateScaleFactor.d.ts +3 -0
  105. package/core/calculateScaleFactor.js +31 -0
  106. package/core/index.cjs.js +1 -1
  107. package/core/index.d.ts +3 -0
  108. package/core/index.js +153 -0
  109. package/core/meshBounds.cjs.js +1 -1
  110. package/core/shaderMaterial.cjs.js +1 -1
  111. package/core/shapes.cjs.js +1 -1
  112. package/core/softShadows.cjs.js +1 -1
  113. package/core/softShadows.js +0 -1
  114. package/core/useAnimations.cjs.js +1 -1
  115. package/core/useAspect.cjs.js +1 -1
  116. package/core/useBVH.cjs.js +1 -1
  117. package/core/useBoxProjectedEnv.cjs.js +1 -1
  118. package/core/useCamera.cjs.js +1 -1
  119. package/core/useContextBridge.cjs.js +1 -1
  120. package/core/useCubeCamera.cjs.js +1 -1
  121. package/core/useCubeTexture.cjs.js +1 -1
  122. package/core/useDepthBuffer.cjs.js +1 -1
  123. package/core/useDetectGPU.cjs.js +1 -1
  124. package/core/useEnvironment.cjs.js +1 -1
  125. package/core/useFBO.cjs.js +1 -1
  126. package/core/useFBX.cjs.js +1 -1
  127. package/core/useFont.cjs.js +1 -1
  128. package/core/useGLTF.cjs.js +1 -1
  129. package/core/useHelper.cjs.js +1 -1
  130. package/core/useIntersect.cjs.js +1 -1
  131. package/core/useKTX2.cjs.js +1 -1
  132. package/core/useMatcapTexture.cjs.js +1 -1
  133. package/core/useNormalTexture.cjs.js +1 -1
  134. package/core/useProgress.cjs.js +1 -1
  135. package/core/useSpriteLoader.cjs.js +1 -0
  136. package/core/useSpriteLoader.d.ts +9 -0
  137. package/core/useSpriteLoader.js +215 -0
  138. package/core/useTexture.cjs.js +1 -1
  139. package/core/useTrailTexture.cjs.js +1 -1
  140. package/core/useVideoTexture.cjs.js +1 -1
  141. package/helpers/constants.cjs.js +1 -1
  142. package/helpers/deprecated.cjs.js +1 -1
  143. package/helpers/environment-assets.cjs.js +1 -1
  144. package/helpers/glsl/DefaultSpotlightShadowShadows.glsl.js +3 -1
  145. package/helpers/glsl/distort.vert.glsl.js +3 -1
  146. package/helpers/ts-utils.js +1 -0
  147. package/helpers/useEffectfulState.cjs.js +1 -1
  148. package/index.cjs.js +1 -1
  149. package/index.js +4 -2
  150. package/materials/BlurPass.cjs.js +1 -1
  151. package/materials/ConvolutionMaterial.cjs.js +1 -1
  152. package/materials/DiscardMaterial.cjs.js +1 -1
  153. package/materials/MeshReflectorMaterial.cjs.js +1 -1
  154. package/materials/MeshRefractionMaterial.cjs.js +1 -1
  155. package/materials/MeshRefractionMaterial.js +0 -2
  156. package/materials/SpotLightMaterial.cjs.js +1 -1
  157. package/materials/WireframeMaterial.cjs.js +1 -1
  158. package/native/index.cjs.js +1 -1
  159. package/native/index.js +153 -0
  160. package/package.json +1 -1
  161. package/react-three-drei-0.0.0-semantic-release.tgz +0 -0
  162. package/web/CycleRaycast.cjs.js +1 -1
  163. package/web/FaceControls.cjs.js +1 -1
  164. package/web/FaceLandmarker.cjs.js +1 -1
  165. package/web/Facemesh.cjs.js +1 -1
  166. package/web/Html.cjs.js +1 -1
  167. package/web/KeyboardControls.cjs.js +1 -1
  168. package/web/Loader.cjs.js +1 -1
  169. package/web/PresentationControls.cjs.js +1 -1
  170. package/web/ScrollControls.cjs.js +1 -1
  171. package/web/Select.cjs.js +1 -1
  172. package/web/View.cjs.js +1 -2
  173. package/web/View.js +0 -1
  174. package/web/index.cjs.js +1 -1
  175. package/web/index.js +176 -0
  176. package/web/pivotControls/AxisArrow.cjs.js +1 -1
  177. package/web/pivotControls/AxisRotator.cjs.js +1 -1
  178. package/web/pivotControls/PlaneSlider.cjs.js +1 -1
  179. package/web/pivotControls/context.cjs.js +1 -1
  180. package/web/pivotControls/index.cjs.js +1 -1
  181. package/web/pivotControls/index.d.ts +2 -4
  182. package/web/pivotControls/index.js +5 -31
  183. package/web/useCursor.cjs.js +1 -1
@@ -0,0 +1,215 @@
1
+ import * as THREE from 'three';
2
+ import { TextureLoader } from 'three';
3
+ import { useThree, useLoader } from '@react-three/fiber';
4
+ import * as React from 'react';
5
+ import { useState, useEffect } from 'react';
6
+
7
+ // utils
8
+ const getFirstItem = param => {
9
+ if (Array.isArray(param)) {
10
+ return param[0];
11
+ } else if (typeof param === 'object' && param !== null) {
12
+ const keys = Object.keys(param);
13
+ return param[keys[0]][0];
14
+ } else {
15
+ return {
16
+ w: 0,
17
+ h: 0
18
+ };
19
+ }
20
+ };
21
+ const calculateAspectRatio = (width, height, factor, v) => {
22
+ const adaptedHeight = height * (v.aspect > width / height ? v.width / width : v.height / height);
23
+ const adaptedWidth = width * (v.aspect > width / height ? v.width / width : v.height / height);
24
+ const scaleX = adaptedWidth * factor;
25
+ const scaleY = adaptedHeight * factor;
26
+ const currentMaxScale = 1;
27
+ // Calculate the maximum scale based on the aspect ratio and max scale limit
28
+ let finalMaxScaleW = Math.min(currentMaxScale, scaleX);
29
+ let finalMaxScaleH = Math.min(currentMaxScale, scaleY);
30
+
31
+ // Ensure that scaleX and scaleY do not exceed the max scale while maintaining aspect ratio
32
+ if (scaleX > currentMaxScale) {
33
+ finalMaxScaleW = currentMaxScale;
34
+ finalMaxScaleH = scaleY / scaleX * currentMaxScale;
35
+ }
36
+ return new THREE.Vector3(finalMaxScaleW, finalMaxScaleH, 1);
37
+ };
38
+ function useSpriteLoader(input, json, animationNames, numberOfFrames, onLoad) {
39
+ const v = useThree(state => state.viewport);
40
+ const gl = useThree(state => state.gl);
41
+ const spriteDataRef = React.useRef(null);
42
+ const totalFrames = React.useRef(0);
43
+ const aspectFactor = 0.1;
44
+ const [spriteData, setSpriteData] = useState(null);
45
+ const [spriteTexture, setSpriteTexture] = React.useState(new THREE.Texture());
46
+ const textureLoader = new THREE.TextureLoader();
47
+ const [spriteObj, setSpriteObj] = useState(null);
48
+ React.useLayoutEffect(() => {
49
+ if (json && input) {
50
+ loadJsonAndTextureAndExecuteCallback(json, input, parseSpriteData);
51
+ } else if (input) {
52
+ // only load the texture, this is an image sprite only
53
+ loadStandaloneSprite();
54
+ }
55
+ return () => {
56
+ if (input) {
57
+ useLoader.clear(TextureLoader, input);
58
+ }
59
+ };
60
+ }, []);
61
+ function loadJsonAndTexture(textureUrl, jsonUrl) {
62
+ if (jsonUrl && textureUrl) {
63
+ loadJsonAndTextureAndExecuteCallback(jsonUrl, textureUrl, parseSpriteData);
64
+ } else {
65
+ loadStandaloneSprite(textureUrl);
66
+ }
67
+ }
68
+ function loadStandaloneSprite(textureUrl) {
69
+ if (textureUrl || input) {
70
+ new Promise(resolve => {
71
+ textureLoader.load(textureUrl !== null && textureUrl !== void 0 ? textureUrl : input, resolve);
72
+ }).then(texture => {
73
+ parseSpriteData(null, texture);
74
+ });
75
+ }
76
+ }
77
+
78
+ /**
79
+ *
80
+ */
81
+ function loadJsonAndTextureAndExecuteCallback(jsonUrl, textureUrl, callback) {
82
+ const jsonPromise = fetch(jsonUrl).then(response => response.json());
83
+ const texturePromise = new Promise(resolve => {
84
+ textureLoader.load(textureUrl, resolve);
85
+ });
86
+ Promise.all([jsonPromise, texturePromise]).then(response => {
87
+ callback(response[0], response[1]);
88
+ });
89
+ }
90
+ const parseSpriteData = (json, _spriteTexture) => {
91
+ let aspect = new THREE.Vector3(1, 1, 1);
92
+ // sprite only case
93
+ if (json === null) {
94
+ if (_spriteTexture && numberOfFrames) {
95
+ //get size from texture
96
+ const width = _spriteTexture.image.width;
97
+ const height = _spriteTexture.image.height;
98
+ const frameWidth = width / numberOfFrames;
99
+ const frameHeight = height;
100
+ totalFrames.current = numberOfFrames;
101
+ spriteDataRef.current = {
102
+ frames: [],
103
+ meta: {
104
+ version: '1.0',
105
+ size: {
106
+ w: width,
107
+ h: height
108
+ },
109
+ scale: '1'
110
+ }
111
+ };
112
+ if (parseInt(frameWidth.toString(), 10) === frameWidth) {
113
+ // if it fits
114
+ for (let i = 0; i < numberOfFrames; i++) {
115
+ spriteDataRef.current.frames.push({
116
+ frame: {
117
+ x: i * frameWidth,
118
+ y: 0,
119
+ w: frameWidth,
120
+ h: frameHeight
121
+ },
122
+ rotated: false,
123
+ trimmed: false,
124
+ spriteSourceSize: {
125
+ x: 0,
126
+ y: 0,
127
+ w: frameWidth,
128
+ h: frameHeight
129
+ },
130
+ sourceSize: {
131
+ w: frameWidth,
132
+ h: height
133
+ }
134
+ });
135
+ }
136
+ }
137
+ aspect = calculateAspectRatio(frameWidth, frameHeight, aspectFactor, v);
138
+ }
139
+ } else if (_spriteTexture) {
140
+ spriteDataRef.current = json;
141
+ spriteDataRef.current.frames = Array.isArray(json.frames) ? json.frames : parseFrames();
142
+ totalFrames.current = Array.isArray(json.frames) ? json.frames.length : Object.keys(json.frames).length;
143
+ const {
144
+ w,
145
+ h
146
+ } = getFirstItem(json.frames).sourceSize;
147
+ aspect = calculateAspectRatio(w, h, aspectFactor, v);
148
+ }
149
+ setSpriteData(spriteDataRef.current);
150
+ _spriteTexture.encoding = THREE.sRGBEncoding;
151
+ setSpriteTexture(_spriteTexture);
152
+ setSpriteObj({
153
+ spriteTexture: _spriteTexture,
154
+ spriteData: spriteDataRef.current,
155
+ aspect: aspect
156
+ });
157
+ };
158
+
159
+ // for frame based JSON Hash sprite data
160
+ const parseFrames = () => {
161
+ const sprites = {};
162
+ const data = spriteDataRef.current;
163
+ const delimiters = animationNames;
164
+ if (delimiters) {
165
+ for (let i = 0; i < delimiters.length; i++) {
166
+ sprites[delimiters[i]] = [];
167
+ for (const innerKey in data['frames']) {
168
+ const value = data['frames'][innerKey];
169
+ const frameData = value['frame'];
170
+ const x = frameData['x'];
171
+ const y = frameData['y'];
172
+ const width = frameData['w'];
173
+ const height = frameData['h'];
174
+ const sourceWidth = value['sourceSize']['w'];
175
+ const sourceHeight = value['sourceSize']['h'];
176
+ if (typeof innerKey === 'string' && innerKey.toLowerCase().indexOf(delimiters[i].toLowerCase()) !== -1) {
177
+ sprites[delimiters[i]].push({
178
+ x: x,
179
+ y: y,
180
+ w: width,
181
+ h: height,
182
+ frame: frameData,
183
+ sourceSize: {
184
+ w: sourceWidth,
185
+ h: sourceHeight
186
+ }
187
+ });
188
+ }
189
+ }
190
+ }
191
+ }
192
+ return sprites;
193
+ };
194
+ React.useLayoutEffect(() => {
195
+ onLoad == null || onLoad(spriteTexture, spriteData);
196
+ }, [spriteTexture, spriteData]);
197
+
198
+ // https://github.com/mrdoob/three.js/issues/22696
199
+ // Upload the texture to the GPU immediately instead of waiting for the first render
200
+ // NOTE: only available for WebGLRenderer
201
+ useEffect(() => {
202
+ if ('initTexture' in gl) {
203
+ const array = Array.isArray(spriteTexture) ? spriteTexture : [spriteTexture];
204
+ array.forEach(gl.initTexture);
205
+ }
206
+ }, [gl, spriteTexture]);
207
+ return {
208
+ spriteObj,
209
+ loadJsonAndTexture
210
+ };
211
+ }
212
+ useSpriteLoader.preload = url => useLoader.preload(TextureLoader, url);
213
+ useSpriteLoader.clear = input => useLoader.clear(TextureLoader, input);
214
+
215
+ export { calculateAspectRatio, getFirstItem, useSpriteLoader };
@@ -1 +1 @@
1
- "use strict";var e=require("three"),r=require("@react-three/fiber"),t=require("react");const u=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function a(a,o){const s=r.useThree((e=>e.gl)),c=r.useLoader(e.TextureLoader,u(a)?Object.values(a):a);if(t.useLayoutEffect((()=>{null==o||o(c)}),[o]),t.useEffect((()=>{if("initTexture"in s){(Array.isArray(c)?c:[c]).forEach(s.initTexture)}}),[s,c]),u(a)){const e={};let r=0;for(const t in a)e[t]=c[r++];return e}return c}a.preload=t=>r.useLoader.preload(e.TextureLoader,t),a.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.IsObject=u,exports.useTexture=a;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");const u=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function o(o,a){const s=r.useThree((e=>e.gl)),c=r.useLoader(e.TextureLoader,u(o)?Object.values(o):o);if(t.useLayoutEffect((()=>{null==a||a(c)}),[a]),t.useEffect((()=>{if("initTexture"in s){(Array.isArray(c)?c:[c]).forEach(s.initTexture)}}),[s,c]),u(o)){const e={};let r=0;for(const t in o)e[t]=c[r++];return e}return c}o.preload=t=>r.useLoader.preload(e.TextureLoader,t),o.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.IsObject=u,exports.useTexture=o;
@@ -1 +1 @@
1
- "use strict";var t=require("react"),i=require("@react-three/fiber"),e=require("three");const s=t=>Math.sqrt(1-Math.pow(t-1,2));class a{constructor({size:t=256,maxAge:i=750,radius:e=.3,intensity:a=.2,interpolate:h=0,smoothing:r=0,minForce:c=.3,blend:n="screen",ease:o=s}={}){this.size=t,this.maxAge=i,this.radius=e,this.intensity=a,this.ease=o,this.interpolate=h,this.smoothing=r,this.minForce=c,this.blend=n,this.trail=[],this.force=0,this.initTexture()}initTexture(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=this.size,this.ctx=this.canvas.getContext("2d"),this.ctx.fillStyle="black",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height),this.texture=new e.Texture(this.canvas),this.canvas.id="touchTexture",this.canvas.style.width=this.canvas.style.height=`${this.canvas.width}px`}update(t){this.clear(),this.trail.forEach(((i,e)=>{i.age+=1e3*t,i.age>this.maxAge&&this.trail.splice(e,1)})),this.trail.length||(this.force=0),this.trail.forEach((t=>{this.drawTouch(t)})),this.texture.needsUpdate=!0}clear(){this.ctx.globalCompositeOperation="source-over",this.ctx.fillStyle="black",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}addTouch(t){const i=this.trail[this.trail.length-1];if(i){const e=i.x-t.x,s=i.y-t.y,a=e*e+s*s,h=Math.max(this.minForce,Math.min(1e4*a,1));if(this.force=function(t,i,e=.9){return i*e+t*(1-e)}(h,this.force,this.smoothing),this.interpolate){const t=Math.ceil(a/Math.pow(.5*this.radius/this.interpolate,2));if(t>1)for(let a=1;a<t;a++)this.trail.push({x:i.x-e/t*a,y:i.y-s/t*a,age:0,force:h})}}this.trail.push({x:t.x,y:t.y,age:0,force:this.force})}drawTouch(t){const i={x:t.x*this.size,y:(1-t.y)*this.size};let e=1;e=t.age<.3*this.maxAge?this.ease(t.age/(.3*this.maxAge)):this.ease(1-(t.age-.3*this.maxAge)/(.7*this.maxAge)),e*=t.force,this.ctx.globalCompositeOperation=this.blend;const s=this.size*this.radius*e,a=this.ctx.createRadialGradient(i.x,i.y,Math.max(0,.25*s),i.x,i.y,Math.max(0,s));a.addColorStop(0,`rgba(255, 255, 255, ${this.intensity})`),a.addColorStop(1,"rgba(0, 0, 0, 0.0)"),this.ctx.beginPath(),this.ctx.fillStyle=a,this.ctx.arc(i.x,i.y,Math.max(0,s),0,2*Math.PI),this.ctx.fill()}}exports.useTrailTexture=function(e={}){const{size:s,maxAge:h,radius:r,intensity:c,interpolate:n,smoothing:o,minForce:l,blend:x,ease:u}=e,d=t.useMemo((()=>new a(e)),[s,h,r,c,n,o,l,x,u]);i.useFrame(((t,i)=>{d.update(i)}));const g=t.useCallback((t=>d.addTouch(t.uv)),[d]);return[d.texture,g]};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("@react-three/fiber"),i=require("three");const s=t=>Math.sqrt(1-Math.pow(t-1,2));class a{constructor({size:t=256,maxAge:e=750,radius:i=.3,intensity:a=.2,interpolate:h=0,smoothing:r=0,minForce:c=.3,blend:n="screen",ease:o=s}={}){this.size=t,this.maxAge=e,this.radius=i,this.intensity=a,this.ease=o,this.interpolate=h,this.smoothing=r,this.minForce=c,this.blend=n,this.trail=[],this.force=0,this.initTexture()}initTexture(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=this.size,this.ctx=this.canvas.getContext("2d"),this.ctx.fillStyle="black",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height),this.texture=new i.Texture(this.canvas),this.canvas.id="touchTexture",this.canvas.style.width=this.canvas.style.height=`${this.canvas.width}px`}update(t){this.clear(),this.trail.forEach(((e,i)=>{e.age+=1e3*t,e.age>this.maxAge&&this.trail.splice(i,1)})),this.trail.length||(this.force=0),this.trail.forEach((t=>{this.drawTouch(t)})),this.texture.needsUpdate=!0}clear(){this.ctx.globalCompositeOperation="source-over",this.ctx.fillStyle="black",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}addTouch(t){const e=this.trail[this.trail.length-1];if(e){const i=e.x-t.x,s=e.y-t.y,a=i*i+s*s,h=Math.max(this.minForce,Math.min(1e4*a,1));if(this.force=function(t,e,i=.9){return e*i+t*(1-i)}(h,this.force,this.smoothing),this.interpolate){const t=Math.ceil(a/Math.pow(.5*this.radius/this.interpolate,2));if(t>1)for(let a=1;a<t;a++)this.trail.push({x:e.x-i/t*a,y:e.y-s/t*a,age:0,force:h})}}this.trail.push({x:t.x,y:t.y,age:0,force:this.force})}drawTouch(t){const e={x:t.x*this.size,y:(1-t.y)*this.size};let i=1;i=t.age<.3*this.maxAge?this.ease(t.age/(.3*this.maxAge)):this.ease(1-(t.age-.3*this.maxAge)/(.7*this.maxAge)),i*=t.force,this.ctx.globalCompositeOperation=this.blend;const s=this.size*this.radius*i,a=this.ctx.createRadialGradient(e.x,e.y,Math.max(0,.25*s),e.x,e.y,Math.max(0,s));a.addColorStop(0,`rgba(255, 255, 255, ${this.intensity})`),a.addColorStop(1,"rgba(0, 0, 0, 0.0)"),this.ctx.beginPath(),this.ctx.fillStyle=a,this.ctx.arc(e.x,e.y,Math.max(0,s),0,2*Math.PI),this.ctx.fill()}}exports.useTrailTexture=function(i={}){const{size:s,maxAge:h,radius:r,intensity:c,interpolate:n,smoothing:o,minForce:l,blend:x,ease:u}=i,d=t.useMemo((()=>new a(i)),[s,h,r,c,n,o,l,x,u]);e.useFrame(((t,e)=>{d.update(e)}));const g=t.useCallback((t=>d.addTouch(t.uv)),[d]);return[d.texture,g]};
@@ -1 +1 @@
1
- "use strict";var e=require("three"),r=require("react"),t=require("@react-three/fiber"),n=require("suspend-react");function o(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=o(e);exports.useVideoTexture=function(e,o){const{unsuspend:i,start:s,crossOrigin:c,muted:a,loop:d,...p}={unsuspend:"loadedmetadata",crossOrigin:"Anonymous",muted:!0,loop:!0,start:!0,playsInline:!0,...o},l=t.useThree((e=>e.gl)),f=n.suspend((()=>new Promise(((r,t)=>{const n=Object.assign(document.createElement("video"),{src:"string"==typeof e&&e||void 0,srcObject:e instanceof MediaStream&&e||void 0,crossOrigin:c,loop:d,muted:a,...p}),o=new u.VideoTexture(n);"colorSpace"in o?o.colorSpace=l.outputColorSpace:o.encoding=l.outputEncoding,n.addEventListener(i,(()=>r(o)))}))),[e]);return r.useEffect((()=>{if(s)return f.image.play(),()=>f.image.pause()}),[f,s]),f};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber"),n=require("suspend-react");function o(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=o(e);exports.useVideoTexture=function(e,o){const{unsuspend:s,start:i,crossOrigin:c,muted:a,loop:d,...p}={unsuspend:"loadedmetadata",crossOrigin:"Anonymous",muted:!0,loop:!0,start:!0,playsInline:!0,...o},l=t.useThree((e=>e.gl)),f=n.suspend((()=>new Promise(((r,t)=>{const n=Object.assign(document.createElement("video"),{src:"string"==typeof e&&e||void 0,srcObject:e instanceof MediaStream&&e||void 0,crossOrigin:c,loop:d,muted:a,...p}),o=new u.VideoTexture(n);"colorSpace"in o?o.colorSpace=l.outputColorSpace:o.encoding=l.outputEncoding,n.addEventListener(s,(()=>r(o)))}))),[e]);return r.useEffect((()=>{if(i)return f.image.play(),()=>f.image.pause()}),[f,i]),f};
@@ -1 +1 @@
1
- "use strict";var e=require("three");const r=(()=>parseInt(e.REVISION.replace(/\D+/g,"")))();exports.version=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");const r=(()=>parseInt(e.REVISION.replace(/\D+/g,"")))();exports.version=r;
@@ -1 +1 @@
1
- "use strict";exports.setUpdateRange=(e,a)=>{"updateRanges"in e?e.updateRanges[0]=a:e.updateRange=a};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.setUpdateRange=(e,t)=>{"updateRanges"in e?e.updateRanges[0]=t:e.updateRange=t};
@@ -1 +1 @@
1
- "use strict";exports.presetsObj={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.presetsObj={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"};
@@ -1 +1,3 @@
1
- "use strict";module.exports="#define GLSLIFY 1\nvarying vec2 vUv;uniform sampler2D uShadowMap;uniform float uTime;void main(){vec3 color=texture2D(uShadowMap,vUv).xyz;gl_FragColor=vec4(color,1.);}";
1
+ var SpotlightShadowShader = "#define GLSLIFY 1\nvarying vec2 vUv;uniform sampler2D uShadowMap;uniform float uTime;void main(){vec3 color=texture2D(uShadowMap,vUv).xyz;gl_FragColor=vec4(color,1.);}"; // eslint-disable-line
2
+
3
+ export { SpotlightShadowShader as default };
@@ -1 +1,3 @@
1
- "use strict";module.exports="#define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}";
1
+ var distort = "#define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}"; // eslint-disable-line
2
+
3
+ export { distort as default };
@@ -0,0 +1 @@
1
+
@@ -1 +1 @@
1
- "use strict";function e(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var t=e(require("react"));function r(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}exports.useEffectfulState=function(e,n=[],u){const[c,f]=t.useState();return t.useLayoutEffect((()=>{const t=e();return f(t),r(u,t),()=>r(u,null)}),n),c};
1
+ "use strict";function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var u=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,u.get?u:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("react"));function r(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}exports.useEffectfulState=function(e,u=[],n){const[c,f]=t.useState();return t.useLayoutEffect((()=>{const t=e();return f(t),r(n,t),()=>r(n,null)}),u),c};