@react-three/drei 9.116.1 → 9.116.3

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.
@@ -3,88 +3,168 @@ import * as React from 'react';
3
3
  import { useFrame } from '@react-three/fiber';
4
4
  import * as THREE from 'three';
5
5
  import { Instances, Instance } from './Instances.js';
6
- import { useSpriteLoader } from './useSpriteLoader.js';
6
+ import { Billboard } from './Billboard.js';
7
+ import { useSpriteLoader, getFirstFrame } from './useSpriteLoader.js';
8
+
9
+ // Frame-related types
7
10
 
8
11
  const context = /*#__PURE__*/React.createContext(null);
9
12
  function useSpriteAnimator() {
10
13
  return React.useContext(context);
11
14
  }
15
+
16
+ // Type guard for SpriteData
17
+ function isSpriteData(data) {
18
+ return data !== null && 'meta' in data && 'frames' in data;
19
+ }
12
20
  const geometry = new THREE.PlaneGeometry(1, 1);
13
21
  const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
14
- startFrame,
22
+ startFrame = 0,
15
23
  endFrame,
16
- fps,
17
- frameName,
24
+ fps = 30,
25
+ frameName = '',
18
26
  textureDataURL,
19
27
  textureImageURL,
20
- loop,
21
- numberOfFrames,
22
- autoPlay,
28
+ loop = false,
29
+ numberOfFrames = 1,
30
+ autoPlay = true,
23
31
  animationNames,
24
32
  onStart,
25
33
  onEnd,
26
34
  onLoopEnd,
27
35
  onFrame,
28
36
  play,
29
- pause,
30
- flipX,
31
- alphaTest,
37
+ pause = false,
38
+ flipX = false,
39
+ alphaTest = 0.0,
32
40
  children,
33
- asSprite,
41
+ asSprite = false,
34
42
  offset,
35
- playBackwards,
36
- resetOnEnd,
37
- maxItems,
38
- instanceItems,
43
+ playBackwards = false,
44
+ resetOnEnd = false,
45
+ maxItems = 1,
46
+ instanceItems = [[0, 0, 0]],
39
47
  spriteDataset,
40
48
  canvasRenderingContext2DSettings,
41
49
  roundFramePosition = false,
42
50
  meshProps = {},
43
51
  ...props
44
52
  }, fref) => {
45
- var _props$scale;
46
- const ref = React.useRef();
53
+ const ref = React.useRef(new THREE.Group());
47
54
  const spriteData = React.useRef(null);
48
- const matRef = React.useRef();
49
- const spriteRef = React.useRef();
55
+ const matRef = React.useRef(null);
56
+ const spriteRef = React.useRef(null);
50
57
  const timerOffset = React.useRef(window.performance.now());
51
- const currentFrame = React.useRef(startFrame || 0);
52
- const currentFrameName = React.useRef(frameName || '');
53
- const fpsInterval = (fps !== null && fps !== void 0 ? fps : 30) > 0 ? 1000 / (fps || 30) : 0;
58
+ const currentFrame = React.useRef(startFrame);
59
+ const currentFrameName = React.useRef(frameName);
60
+ const fpsInterval = fps > 0 ? 1000 / fps : 0;
54
61
  const [spriteTexture, setSpriteTexture] = React.useState(new THREE.Texture());
55
62
  const totalFrames = React.useRef(0);
56
- const [aspect, setAspect] = React.useState([1, 1, 1]);
63
+ const [aspect, setAspect] = React.useState(new THREE.Vector3(1, 1, 1));
57
64
  const flipOffset = flipX ? -1 : 1;
58
- const [displayAsSprite, setDisplayAsSprite] = React.useState(asSprite !== null && asSprite !== void 0 ? asSprite : true);
59
65
  const pauseRef = React.useRef(pause);
60
66
  const pos = React.useRef(offset);
61
67
  const softEnd = React.useRef(false);
62
- const frameBuffer = React.useRef([]);
63
68
  const {
64
69
  spriteObj,
65
70
  loadJsonAndTexture
66
71
  } = useSpriteLoader(null, null, animationNames, numberOfFrames, undefined, canvasRenderingContext2DSettings);
67
- //
72
+ const frameNameRef = React.useRef(frameName);
73
+
74
+ // lite version for pre-loaded assets
75
+ const parseSpriteDataLite = React.useCallback((textureData, data) => {
76
+ if (data === null) {
77
+ if (numberOfFrames) {
78
+ //get size from texture
79
+
80
+ totalFrames.current = numberOfFrames;
81
+ if (playBackwards) {
82
+ currentFrame.current = numberOfFrames - 1;
83
+ }
84
+ spriteData.current = data;
85
+ }
86
+ } else {
87
+ var _spriteData$current$f, _spriteData$current;
88
+ spriteData.current = data;
89
+ if (spriteData.current && Array.isArray(spriteData.current.frames)) {
90
+ totalFrames.current = spriteData.current.frames.length;
91
+ } else if (spriteData.current && typeof spriteData.current === 'object' && frameNameRef.current) {
92
+ totalFrames.current = spriteData.current.frames[frameNameRef.current].length;
93
+ } else {
94
+ totalFrames.current = 0;
95
+ }
96
+ if (playBackwards) {
97
+ currentFrame.current = totalFrames.current - 1;
98
+ }
99
+ const {
100
+ w,
101
+ h
102
+ } = getFirstFrame((_spriteData$current$f = (_spriteData$current = spriteData.current) == null ? void 0 : _spriteData$current.frames) !== null && _spriteData$current$f !== void 0 ? _spriteData$current$f : [], frameNameRef.current).sourceSize;
103
+ const aspect = calculateAspectRatio(w, h);
104
+ setAspect(aspect);
105
+ if (matRef.current) {
106
+ matRef.current.map = textureData;
107
+ }
108
+ }
109
+ setSpriteTexture(textureData);
110
+ }, [numberOfFrames, playBackwards]);
68
111
 
69
- function reset() {}
112
+ // modify the sprite material after json is parsed and state updated
113
+ const modifySpritePosition = React.useCallback(() => {
114
+ if (!spriteData.current) return;
115
+ const {
116
+ meta: {
117
+ size: metaInfo
118
+ },
119
+ frames
120
+ } = spriteData.current;
121
+ const {
122
+ w: frameW,
123
+ h: frameH
124
+ } = Array.isArray(frames) ? frames[0].sourceSize : frameName ? frames[frameName] ? frames[frameName][0].sourceSize : {
125
+ w: 0,
126
+ h: 0
127
+ } : {
128
+ w: 0,
129
+ h: 0
130
+ };
131
+ if (matRef.current && matRef.current.map) {
132
+ matRef.current.map.wrapS = matRef.current.map.wrapT = THREE.RepeatWrapping;
133
+ matRef.current.map.center.set(0, 0);
134
+ matRef.current.map.repeat.set(1 * flipOffset / (metaInfo.w / frameW), 1 / (metaInfo.h / frameH));
135
+ }
136
+ //const framesH = (metaInfo.w - 1) / frameW
137
+ const framesV = (metaInfo.h - 1) / frameH;
138
+ const frameOffsetY = 1 / framesV;
139
+ if (matRef.current && matRef.current.map) {
140
+ matRef.current.map.offset.x = 0.0; //-matRef.current.map.repeat.x
141
+ matRef.current.map.offset.y = 1 - frameOffsetY;
142
+ }
143
+ if (onStart) {
144
+ onStart({
145
+ currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
146
+ currentFrame: currentFrame.current
147
+ });
148
+ }
149
+ }, [flipOffset, frameName, onStart]);
70
150
  const state = React.useMemo(() => ({
71
151
  current: pos.current,
72
152
  offset: pos.current,
73
153
  imageUrl: textureImageURL,
74
- reset: reset,
75
154
  hasEnded: false,
76
155
  ref: fref
77
- }), [textureImageURL, spriteDataset]);
156
+ }), [textureImageURL, fref]);
78
157
  React.useImperativeHandle(fref, () => ref.current, []);
79
158
  React.useLayoutEffect(() => {
80
159
  pos.current = offset;
81
160
  }, [offset]);
82
161
  const calculateAspectRatio = (width, height) => {
162
+ var _spriteRef$current;
163
+ const ret = new THREE.Vector3();
83
164
  const aspectRatio = height / width;
84
- if (spriteRef.current) {
85
- spriteRef.current.scale.set(1, aspectRatio, 1);
86
- }
87
- return [1, aspectRatio, 1];
165
+ ret.set(1, aspectRatio, 1);
166
+ (_spriteRef$current = spriteRef.current) == null || _spriteRef$current.scale.copy(ret);
167
+ return ret;
88
168
  };
89
169
 
90
170
  // initial loads
@@ -97,29 +177,27 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
97
177
  loadJsonAndTexture(textureImageURL, textureDataURL);
98
178
  }
99
179
  }
100
- }, [spriteDataset]);
180
+ }, [loadJsonAndTexture, spriteDataset, textureDataURL, textureImageURL, parseSpriteDataLite]);
101
181
  React.useEffect(() => {
102
182
  if (spriteObj) {
103
183
  var _spriteObj$spriteText;
104
184
  parseSpriteDataLite(spriteObj == null || (_spriteObj$spriteText = spriteObj.spriteTexture) == null ? void 0 : _spriteObj$spriteText.clone(), spriteObj == null ? void 0 : spriteObj.spriteData);
105
185
  }
106
- }, [spriteObj]);
107
- React.useEffect(() => {
108
- setDisplayAsSprite(asSprite !== null && asSprite !== void 0 ? asSprite : true);
109
- }, [asSprite]);
186
+ }, [spriteObj, parseSpriteDataLite]);
110
187
 
111
188
  // support backwards play
112
189
  React.useEffect(() => {
113
190
  state.hasEnded = false;
114
191
  if (spriteData.current && playBackwards === true) {
115
- currentFrame.current = spriteData.current.frames.length - 1;
192
+ var _ref;
193
+ currentFrame.current = ((_ref = spriteData.current.frames.length) !== null && _ref !== void 0 ? _ref : 0) - 1;
116
194
  } else {
117
195
  currentFrame.current = 0;
118
196
  }
119
- }, [playBackwards]);
197
+ }, [playBackwards, state]);
120
198
  React.useLayoutEffect(() => {
121
199
  modifySpritePosition();
122
- }, [spriteTexture, flipX]);
200
+ }, [spriteTexture, flipX, modifySpritePosition]);
123
201
  React.useEffect(() => {
124
202
  if (autoPlay) {
125
203
  pauseRef.current = false;
@@ -138,113 +216,16 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
138
216
  const {
139
217
  w,
140
218
  h
141
- } = getFirstItem(spriteData.current.frames).sourceSize;
219
+ } = getFirstFrame(spriteData.current.frames, frameName).sourceSize;
142
220
  const _aspect = calculateAspectRatio(w, h);
143
221
  setAspect(_aspect);
144
222
  }
145
223
  }
146
- }, [frameName, fpsInterval]);
147
-
148
- // lite version for pre-loaded assets
149
- const parseSpriteDataLite = (textureData, frameData = null) => {
150
- if (frameData === null) {
151
- if (numberOfFrames) {
152
- //get size from texture
153
- const width = textureData.image.width;
154
- const height = textureData.image.height;
155
- totalFrames.current = numberOfFrames;
156
- if (playBackwards) {
157
- currentFrame.current = numberOfFrames - 1;
158
- }
159
- spriteData.current = {
160
- frames: [],
161
- meta: {
162
- version: '1.0',
163
- size: {
164
- w: width,
165
- h: height
166
- },
167
- scale: '1'
168
- }
169
- };
170
- spriteData.current.frames = frameData;
171
- }
172
- } else {
173
- spriteData.current = frameData;
174
- totalFrames.current = spriteData.current.frames.length;
175
- if (playBackwards) {
176
- currentFrame.current = totalFrames.current - 1;
177
- }
178
- const {
179
- w,
180
- h
181
- } = getFirstItem(spriteData.current.frames).sourceSize;
182
- const aspect = calculateAspectRatio(w, h);
183
- setAspect(aspect);
184
- if (matRef.current) {
185
- matRef.current.map = textureData;
186
- }
187
- }
188
-
189
- // buffer for instanced
190
- if (instanceItems) {
191
- for (var i = 0; i < instanceItems.length; i++) {
192
- const keys = Object.keys(spriteData.current.frames);
193
- const randomKey = keys[Math.floor(Math.random() * keys.length)];
194
- frameBuffer.current.push({
195
- key: i,
196
- frames: spriteData.current.frames,
197
- selectedFrame: randomKey,
198
- offset: {
199
- x: 0,
200
- y: 0
201
- }
202
- });
203
- }
204
- }
205
- setSpriteTexture(textureData);
206
- };
207
-
208
- // modify the sprite material after json is parsed and state updated
209
- const modifySpritePosition = () => {
210
- if (!spriteData.current) return;
211
- const {
212
- meta: {
213
- size: metaInfo
214
- },
215
- frames
216
- } = spriteData.current;
217
- const {
218
- w: frameW,
219
- h: frameH
220
- } = Array.isArray(frames) ? frames[0].sourceSize : frameName ? frames[frameName] ? frames[frameName][0].sourceSize : {
221
- w: 0,
222
- h: 0
223
- } : {
224
- w: 0,
225
- h: 0
226
- };
227
- matRef.current.map.wrapS = matRef.current.map.wrapT = THREE.RepeatWrapping;
228
- matRef.current.map.center.set(0, 0);
229
- matRef.current.map.repeat.set(1 * flipOffset / (metaInfo.w / frameW), 1 / (metaInfo.h / frameH));
230
-
231
- //const framesH = (metaInfo.w - 1) / frameW
232
- const framesV = (metaInfo.h - 1) / frameH;
233
- const frameOffsetY = 1 / framesV;
234
- matRef.current.map.offset.x = 0.0; //-matRef.current.map.repeat.x
235
- matRef.current.map.offset.y = 1 - frameOffsetY;
236
- if (onStart) {
237
- onStart({
238
- currentFrameName: frameName,
239
- currentFrame: currentFrame.current
240
- });
241
- }
242
- };
224
+ }, [frameName, fpsInterval, state, endFrame, startFrame]);
243
225
 
244
226
  // run the animation on each frame
245
227
  const runAnimation = () => {
246
- //if (!frameName) return
247
-
228
+ if (!isSpriteData(spriteData.current)) return;
248
229
  const {
249
230
  meta: {
250
231
  size: metaInfo
@@ -254,7 +235,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
254
235
  const {
255
236
  w: frameW,
256
237
  h: frameH
257
- } = getFirstItem(frames).sourceSize;
238
+ } = getFirstFrame(frames, frameName).sourceSize;
258
239
  const spriteFrames = Array.isArray(frames) ? frames : frameName ? frames[frameName] : [];
259
240
  const _endFrame = endFrame || spriteFrames.length - 1;
260
241
  var _offset = offset === undefined ? state.current : offset;
@@ -278,15 +259,15 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
278
259
  }
279
260
  if (loop) {
280
261
  onLoopEnd == null || onLoopEnd({
281
- currentFrameName: frameName,
262
+ currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
282
263
  currentFrame: currentFrame.current
283
264
  });
284
265
  } else {
285
266
  onEnd == null || onEnd({
286
- currentFrameName: frameName,
267
+ currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
287
268
  currentFrame: currentFrame.current
288
269
  });
289
- state.hasEnded = resetOnEnd ? false : true;
270
+ state.hasEnded = !resetOnEnd;
290
271
  if (resetOnEnd) {
291
272
  pauseRef.current = true;
292
273
  //calculateFinalPosition(frameW, frameH, metaInfo, spriteFrames)
@@ -295,7 +276,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
295
276
  if (!loop) return;
296
277
  } else if (onStartCondition) {
297
278
  onStart == null || onStart({
298
- currentFrameName: frameName,
279
+ currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
299
280
  currentFrame: currentFrame.current
300
281
  });
301
282
  }
@@ -304,7 +285,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
304
285
  if (_offset !== undefined && manualProgressEndCondition) {
305
286
  if (softEnd.current === false) {
306
287
  onEnd == null || onEnd({
307
- currentFrameName: frameName,
288
+ currentFrameName: frameName !== null && frameName !== void 0 ? frameName : '',
308
289
  currentFrame: currentFrame.current
309
290
  });
310
291
  softEnd.current = true;
@@ -343,10 +324,12 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
343
324
  } = spriteFrames[targetFrame];
344
325
  const frameOffsetX = 1 / framesH;
345
326
  const frameOffsetY = 1 / framesV;
346
- finalValX = flipOffset > 0 ? frameOffsetX * (frameX / originalSizeX) : frameOffsetX * (frameX / originalSizeX) - matRef.current.map.repeat.x;
347
- finalValY = Math.abs(1 - frameOffsetY) - frameOffsetY * (frameY / originalSizeY);
348
- matRef.current.map.offset.x = finalValX;
349
- matRef.current.map.offset.y = finalValY;
327
+ if (matRef.current && matRef.current.map) {
328
+ finalValX = flipOffset > 0 ? frameOffsetX * (frameX / originalSizeX) : frameOffsetX * (frameX / originalSizeX) - matRef.current.map.repeat.x;
329
+ finalValY = Math.abs(1 - frameOffsetY) - frameOffsetY * (frameY / originalSizeY);
330
+ matRef.current.map.offset.x = finalValX;
331
+ matRef.current.map.offset.y = finalValY;
332
+ }
350
333
 
351
334
  // if manual update is active
352
335
  if (_offset !== undefined && _offset !== null) {
@@ -371,8 +354,8 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
371
354
 
372
355
  // *** Warning! It runs on every frame! ***
373
356
  useFrame((_state, _delta) => {
374
- var _spriteData$current, _matRef$current;
375
- if (!((_spriteData$current = spriteData.current) != null && _spriteData$current.frames) || !((_matRef$current = matRef.current) != null && _matRef$current.map)) {
357
+ var _spriteData$current2, _matRef$current;
358
+ if (!((_spriteData$current2 = spriteData.current) != null && _spriteData$current2.frames) || !((_matRef$current = matRef.current) != null && _matRef$current.map)) {
376
359
  return;
377
360
  }
378
361
  if (pauseRef.current) {
@@ -380,64 +363,35 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
380
363
  }
381
364
  if (!state.hasEnded && (autoPlay || play)) {
382
365
  runAnimation();
383
- onFrame && onFrame({
366
+ onFrame == null || onFrame({
384
367
  currentFrameName: currentFrameName.current,
385
368
  currentFrame: currentFrame.current
386
369
  });
387
370
  }
388
371
  });
389
-
390
- // utils
391
- const getFirstItem = param => {
392
- if (Array.isArray(param)) {
393
- return param[0];
394
- } else if (typeof param === 'object' && param !== null) {
395
- const keys = Object.keys(param);
396
- return frameName ? param[frameName][0] : param[keys[0]][0];
397
- } else {
398
- return {
399
- w: 0,
400
- h: 0
401
- };
402
- }
403
- };
404
- function multiplyScale(initialScale, newScale) {
405
- let _newScale = [];
406
-
407
- // If newScale is a single number, convert it to a Vector3
408
- if (typeof newScale === 'number') {
409
- _newScale = [newScale, newScale, newScale];
410
- } else if (Array.isArray(newScale)) {
411
- // If newScale is an array, convert it to a Vector3
412
- _newScale = newScale;
413
- } else if (newScale instanceof THREE.Vector3) {
414
- _newScale = [newScale.x, newScale.y, newScale.z];
415
- }
416
-
417
- // Multiply the scale values element-wise
418
- const result = initialScale.map((value, index) => value * _newScale[index]);
419
- // Convert the result to an array of numbers
420
- return result;
372
+ function multiplyScale(initialScale = new THREE.Vector3(1, 1, 1), newScale = 1) {
373
+ if (typeof newScale === 'number') return initialScale.multiplyScalar(newScale);
374
+ if (Array.isArray(newScale)) return initialScale.multiply(new THREE.Vector3(...newScale));
375
+ if (newScale instanceof THREE.Vector3) return initialScale.multiply(newScale);
421
376
  }
422
377
  return /*#__PURE__*/React.createElement("group", _extends({}, props, {
423
378
  ref: ref,
424
- scale: multiplyScale(aspect !== null && aspect !== void 0 ? aspect : [1, 1, 1], (_props$scale = props.scale) !== null && _props$scale !== void 0 ? _props$scale : 1.0)
379
+ scale: multiplyScale(aspect, props.scale)
425
380
  }), /*#__PURE__*/React.createElement(context.Provider, {
426
381
  value: state
427
- }, /*#__PURE__*/React.createElement(React.Suspense, {
428
- fallback: null
429
- }, displayAsSprite && /*#__PURE__*/React.createElement("sprite", _extends({
382
+ }, asSprite && /*#__PURE__*/React.createElement(Billboard, null, /*#__PURE__*/React.createElement("mesh", _extends({
430
383
  ref: spriteRef,
431
384
  scale: 1.0,
432
385
  geometry: geometry
433
- }, meshProps), /*#__PURE__*/React.createElement("spriteMaterial", {
386
+ }, meshProps), /*#__PURE__*/React.createElement("meshBasicMaterial", {
434
387
  premultipliedAlpha: false,
435
388
  toneMapped: false,
389
+ side: THREE.DoubleSide,
436
390
  ref: matRef,
437
391
  map: spriteTexture,
438
392
  transparent: true,
439
393
  alphaTest: alphaTest !== null && alphaTest !== void 0 ? alphaTest : 0.0
440
- })), !displayAsSprite && /*#__PURE__*/React.createElement(Instances, _extends({
394
+ }))), !asSprite && /*#__PURE__*/React.createElement(Instances, _extends({
441
395
  geometry: geometry,
442
396
  limit: maxItems !== null && maxItems !== void 0 ? maxItems : 1
443
397
  }, meshProps), /*#__PURE__*/React.createElement("meshBasicMaterial", {
@@ -453,7 +407,7 @@ const SpriteAnimator = /* @__PURE__ */React.forwardRef(({
453
407
  ref: (instanceItems == null ? void 0 : instanceItems.length) === 1 ? spriteRef : null,
454
408
  position: item,
455
409
  scale: 1.0
456
- }, meshProps))))), children));
410
+ }, meshProps)))), children));
457
411
  });
458
412
 
459
413
  export { SpriteAnimator, useSpriteAnimator };
package/core/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./ScreenSizer.cjs.js"),t=require("./QuadraticBezierLine.cjs.js"),o=require("./CubicBezierLine.cjs.js"),i=require("./CatmullRomLine.cjs.js"),a=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),c=require("./Text.cjs.js"),p=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),x=require("./Image.cjs.js"),l=require("./Edges.cjs.js"),d=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),h=require("./ComputedAttribute.cjs.js"),C=require("./Clone.cjs.js"),M=require("./MarchingCubes.cjs.js"),S=require("./Decal.cjs.js"),T=require("./Svg.cjs.js"),b=require("./Gltf.cjs.js"),P=require("./AsciiRenderer.cjs.js"),f=require("./Splat.cjs.js"),g=require("./OrthographicCamera.cjs.js"),B=require("./PerspectiveCamera.cjs.js"),v=require("./CubeCamera.cjs.js"),A=require("./DeviceOrientationControls.cjs.js"),F=require("./FlyControls.cjs.js"),L=require("./MapControls.cjs.js"),R=require("./OrbitControls.cjs.js"),G=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),E=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),I=require("./FirstPersonControls.cjs.js"),w=require("./CameraControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),y=require("./GizmoViewcube.cjs.js"),H=require("./GizmoViewport.cjs.js"),V=require("./Grid.cjs.js"),W=require("./CubeTexture.cjs.js"),K=require("./Fbx.cjs.js"),Q=require("./Ktx2.cjs.js"),N=require("./Progress.cjs.js"),U=require("./Texture.cjs.js"),X=require("./VideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./useSpriteLoader.cjs.js"),Y=require("./Helper.cjs.js"),Z=require("./Stats.cjs.js"),$=require("./StatsGl.cjs.js"),ee=require("./useDepthBuffer.cjs.js"),re=require("./useAspect.cjs.js"),se=require("./useCamera.cjs.js"),te=require("./DetectGPU.cjs.js"),oe=require("./Bvh.cjs.js"),ie=require("./useContextBridge.cjs.js"),ae=require("./useAnimations.cjs.js"),ue=require("./Fbo.cjs.js"),ce=require("./useIntersect.cjs.js"),pe=require("./useBoxProjectedEnv.cjs.js"),ne=require("./BBAnchor.cjs.js"),je=require("./TrailTexture.cjs.js"),xe=require("./Example.cjs.js"),le=require("./SpriteAnimator.cjs.js"),de=require("./CurveModifier.cjs.js"),qe=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),he=require("./MeshReflectorMaterial.cjs.js"),Ce=require("./MeshRefractionMaterial.cjs.js"),Me=require("./MeshTransmissionMaterial.cjs.js"),Se=require("./MeshDiscardMaterial.cjs.js"),Te=require("./MultiMaterial.cjs.js"),be=require("./PointMaterial.cjs.js"),Pe=require("./shaderMaterial.cjs.js"),fe=require("./softShadows.cjs.js"),ge=require("./shapes.cjs.js"),Be=require("./RoundedBox.cjs.js"),ve=require("./ScreenQuad.cjs.js"),Ae=require("./Center.cjs.js"),Fe=require("./Resize.cjs.js"),Le=require("./Bounds.cjs.js"),Re=require("./CameraShake.cjs.js"),Ge=require("./Float.cjs.js"),De=require("./Stage.cjs.js"),Ee=require("./Backdrop.cjs.js"),ke=require("./Shadow.cjs.js"),Ie=require("./Caustics.cjs.js"),we=require("./ContactShadows.cjs.js"),ze=require("./AccumulativeShadows.cjs.js"),Oe=require("./Reflector.cjs.js"),ye=require("./SpotLight.cjs.js"),He=require("./Environment.cjs.js"),Ve=require("./Lightformer.cjs.js"),We=require("./Sky.cjs.js"),Ke=require("./Stars.cjs.js"),Qe=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),Xe=require("./MatcapTexture.cjs.js"),_e=require("./NormalTexture.cjs.js"),Je=require("./Wireframe.cjs.js"),Ye=require("./ShadowAlpha.cjs.js"),Ze=require("./Points.cjs.js"),$e=require("./Instances.cjs.js"),er=require("./Segments.cjs.js"),rr=require("./Detailed.cjs.js"),sr=require("./Preload.cjs.js"),tr=require("./BakeShadows.cjs.js"),or=require("./meshBounds.cjs.js"),ir=require("./AdaptiveDpr.cjs.js"),ar=require("./AdaptiveEvents.cjs.js"),ur=require("./PerformanceMonitor.cjs.js"),cr=require("./RenderTexture.cjs.js"),pr=require("./RenderCubeTexture.cjs.js"),nr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),xr=require("./Fisheye.cjs.js"),lr=require("./MeshPortalMaterial.cjs.js"),dr=require("./calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("hls.js"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=t.QuadraticBezierLine,exports.CubicBezierLine=o.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=a.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=c.Text,exports.Text3D=p.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=x.Image,exports.Edges=l.Edges,exports.Outlines=d.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=M.MarchingCube,exports.MarchingCubes=M.MarchingCubes,exports.MarchingPlane=M.MarchingPlane,exports.Decal=S.Decal,exports.Svg=T.Svg,exports.Gltf=b.Gltf,exports.useGLTF=b.useGLTF,exports.AsciiRenderer=P.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=g.OrthographicCamera,exports.PerspectiveCamera=B.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.useCubeCamera=v.useCubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=F.FlyControls,exports.MapControls=L.MapControls,exports.OrbitControls=R.OrbitControls,exports.TrackballControls=G.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=I.FirstPersonControls,exports.CameraControls=w.CameraControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.CubeTexture=W.CubeTexture,exports.useCubeTexture=W.useCubeTexture,exports.Fbx=K.Fbx,exports.useFBX=K.useFBX,exports.Ktx2=Q.Ktx2,exports.useKTX2=Q.useKTX2,exports.Progress=N.Progress,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.Texture=U.Texture,exports.useTexture=U.useTexture,exports.VideoTexture=X.VideoTexture,exports.useVideoTexture=X.useVideoTexture,exports.useFont=_.useFont,exports.calculateAspectRatio=J.calculateAspectRatio,exports.checkIfFrameIsEmpty=J.checkIfFrameIsEmpty,exports.getFirstItem=J.getFirstItem,exports.useSpriteLoader=J.useSpriteLoader,exports.Helper=Y.Helper,exports.useHelper=Y.useHelper,exports.Stats=Z.Stats,exports.StatsGl=$.StatsGl,exports.useDepthBuffer=ee.useDepthBuffer,exports.useAspect=re.useAspect,exports.useCamera=se.useCamera,exports.DetectGPU=te.DetectGPU,exports.useDetectGPU=te.useDetectGPU,exports.Bvh=oe.Bvh,exports.useBVH=oe.useBVH,exports.useContextBridge=ie.useContextBridge,exports.useAnimations=ae.useAnimations,exports.Fbo=ue.Fbo,exports.useFBO=ue.useFBO,exports.useIntersect=ce.useIntersect,exports.useBoxProjectedEnv=pe.useBoxProjectedEnv,exports.BBAnchor=ne.BBAnchor,exports.TrailTexture=je.TrailTexture,exports.useTrailTexture=je.useTrailTexture,exports.Example=xe.Example,exports.SpriteAnimator=le.SpriteAnimator,exports.useSpriteAnimator=le.useSpriteAnimator,exports.CurveModifier=de.CurveModifier,exports.MeshDistortMaterial=qe.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=he.MeshReflectorMaterial,exports.MeshRefractionMaterial=Ce.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Me.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Se.MeshDiscardMaterial,exports.MultiMaterial=Te.MultiMaterial,exports.PointMaterial=be.PointMaterial,exports.PointMaterialImpl=be.PointMaterialImpl,exports.shaderMaterial=Pe.shaderMaterial,exports.SoftShadows=fe.SoftShadows,exports.Box=ge.Box,exports.Capsule=ge.Capsule,exports.Circle=ge.Circle,exports.Cone=ge.Cone,exports.Cylinder=ge.Cylinder,exports.Dodecahedron=ge.Dodecahedron,exports.Extrude=ge.Extrude,exports.Icosahedron=ge.Icosahedron,exports.Lathe=ge.Lathe,exports.Octahedron=ge.Octahedron,exports.Plane=ge.Plane,exports.Polyhedron=ge.Polyhedron,exports.Ring=ge.Ring,exports.Shape=ge.Shape,exports.Sphere=ge.Sphere,exports.Tetrahedron=ge.Tetrahedron,exports.Torus=ge.Torus,exports.TorusKnot=ge.TorusKnot,exports.Tube=ge.Tube,exports.RoundedBox=Be.RoundedBox,exports.ScreenQuad=ve.ScreenQuad,exports.Center=Ae.Center,exports.Resize=Fe.Resize,exports.Bounds=Le.Bounds,exports.useBounds=Le.useBounds,exports.CameraShake=Re.CameraShake,exports.Float=Ge.Float,exports.Stage=De.Stage,exports.Backdrop=Ee.Backdrop,exports.Shadow=ke.Shadow,exports.Caustics=Ie.Caustics,exports.ContactShadows=we.ContactShadows,exports.AccumulativeShadows=ze.AccumulativeShadows,exports.RandomizedLight=ze.RandomizedLight,exports.accumulativeContext=ze.accumulativeContext,exports.Reflector=Oe.Reflector,exports.SpotLight=ye.SpotLight,exports.SpotLightShadow=ye.SpotLightShadow,exports.Environment=He.Environment,exports.EnvironmentCube=He.EnvironmentCube,exports.EnvironmentMap=He.EnvironmentMap,exports.EnvironmentPortal=He.EnvironmentPortal,exports.Lightformer=Ve.Lightformer,exports.Sky=We.Sky,exports.calcPosFromAngles=We.calcPosFromAngles,exports.Stars=Ke.Stars,exports.Cloud=Qe.Cloud,exports.CloudInstance=Qe.CloudInstance,exports.Clouds=Qe.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.MatcapTexture=Xe.MatcapTexture,exports.useMatcapTexture=Xe.useMatcapTexture,exports.NormalTexture=_e.NormalTexture,exports.useNormalTexture=_e.useNormalTexture,exports.Wireframe=Je.Wireframe,exports.ShadowAlpha=Ye.ShadowAlpha,exports.Point=Ze.Point,exports.Points=Ze.Points,exports.PointsBuffer=Ze.PointsBuffer,exports.PositionPoint=Ze.PositionPoint,exports.Instance=$e.Instance,exports.InstancedAttribute=$e.InstancedAttribute,exports.Instances=$e.Instances,exports.Merged=$e.Merged,exports.PositionMesh=$e.PositionMesh,exports.createInstances=$e.createInstances,exports.Segment=er.Segment,exports.SegmentObject=er.SegmentObject,exports.Segments=er.Segments,exports.Detailed=rr.Detailed,exports.Preload=sr.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=or.meshBounds,exports.AdaptiveDpr=ir.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=cr.RenderTexture,exports.RenderCubeTexture=pr.RenderCubeTexture,exports.Mask=nr.Mask,exports.useMask=nr.useMask,exports.Hud=jr.Hud,exports.Fisheye=xr.Fisheye,exports.MeshPortalMaterial=lr.MeshPortalMaterial,exports.calculateScaleFactor=dr.calculateScaleFactor;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./ScreenSpace.cjs.js"),s=require("./ScreenSizer.cjs.js"),t=require("./QuadraticBezierLine.cjs.js"),o=require("./CubicBezierLine.cjs.js"),i=require("./CatmullRomLine.cjs.js"),a=require("./Line.cjs.js"),u=require("./PositionalAudio.cjs.js"),c=require("./Text.cjs.js"),n=require("./Text3D.cjs.js"),p=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),x=require("./Image.cjs.js"),l=require("./Edges.cjs.js"),d=require("./Outlines.cjs.js"),q=require("./Trail.cjs.js"),m=require("./Sampler.cjs.js"),h=require("./ComputedAttribute.cjs.js"),C=require("./Clone.cjs.js"),M=require("./MarchingCubes.cjs.js"),S=require("./Decal.cjs.js"),T=require("./Svg.cjs.js"),b=require("./Gltf.cjs.js"),P=require("./AsciiRenderer.cjs.js"),f=require("./Splat.cjs.js"),g=require("./OrthographicCamera.cjs.js"),B=require("./PerspectiveCamera.cjs.js"),v=require("./CubeCamera.cjs.js"),A=require("./DeviceOrientationControls.cjs.js"),F=require("./FlyControls.cjs.js"),L=require("./MapControls.cjs.js"),G=require("./OrbitControls.cjs.js"),R=require("./TrackballControls.cjs.js"),D=require("./ArcballControls.cjs.js"),E=require("./TransformControls.cjs.js"),k=require("./PointerLockControls.cjs.js"),I=require("./FirstPersonControls.cjs.js"),w=require("./CameraControls.cjs.js"),z=require("./MotionPathControls.cjs.js"),O=require("./GizmoHelper.cjs.js"),y=require("./GizmoViewcube.cjs.js"),H=require("./GizmoViewport.cjs.js"),V=require("./Grid.cjs.js"),W=require("./CubeTexture.cjs.js"),K=require("./Fbx.cjs.js"),Q=require("./Ktx2.cjs.js"),N=require("./Progress.cjs.js"),U=require("./Texture.cjs.js"),X=require("./VideoTexture.cjs.js"),_=require("./useFont.cjs.js"),J=require("./useSpriteLoader.cjs.js"),Y=require("./Helper.cjs.js"),Z=require("./Stats.cjs.js"),$=require("./StatsGl.cjs.js"),ee=require("./useDepthBuffer.cjs.js"),re=require("./useAspect.cjs.js"),se=require("./useCamera.cjs.js"),te=require("./DetectGPU.cjs.js"),oe=require("./Bvh.cjs.js"),ie=require("./useContextBridge.cjs.js"),ae=require("./useAnimations.cjs.js"),ue=require("./Fbo.cjs.js"),ce=require("./useIntersect.cjs.js"),ne=require("./useBoxProjectedEnv.cjs.js"),pe=require("./BBAnchor.cjs.js"),je=require("./TrailTexture.cjs.js"),xe=require("./Example.cjs.js"),le=require("./SpriteAnimator.cjs.js"),de=require("./CurveModifier.cjs.js"),qe=require("./MeshDistortMaterial.cjs.js"),me=require("./MeshWobbleMaterial.cjs.js"),he=require("./MeshReflectorMaterial.cjs.js"),Ce=require("./MeshRefractionMaterial.cjs.js"),Me=require("./MeshTransmissionMaterial.cjs.js"),Se=require("./MeshDiscardMaterial.cjs.js"),Te=require("./MultiMaterial.cjs.js"),be=require("./PointMaterial.cjs.js"),Pe=require("./shaderMaterial.cjs.js"),fe=require("./softShadows.cjs.js"),ge=require("./shapes.cjs.js"),Be=require("./RoundedBox.cjs.js"),ve=require("./ScreenQuad.cjs.js"),Ae=require("./Center.cjs.js"),Fe=require("./Resize.cjs.js"),Le=require("./Bounds.cjs.js"),Ge=require("./CameraShake.cjs.js"),Re=require("./Float.cjs.js"),De=require("./Stage.cjs.js"),Ee=require("./Backdrop.cjs.js"),ke=require("./Shadow.cjs.js"),Ie=require("./Caustics.cjs.js"),we=require("./ContactShadows.cjs.js"),ze=require("./AccumulativeShadows.cjs.js"),Oe=require("./Reflector.cjs.js"),ye=require("./SpotLight.cjs.js"),He=require("./Environment.cjs.js"),Ve=require("./Lightformer.cjs.js"),We=require("./Sky.cjs.js"),Ke=require("./Stars.cjs.js"),Qe=require("./Cloud.cjs.js"),Ne=require("./Sparkles.cjs.js"),Ue=require("./useEnvironment.cjs.js"),Xe=require("./MatcapTexture.cjs.js"),_e=require("./NormalTexture.cjs.js"),Je=require("./Wireframe.cjs.js"),Ye=require("./ShadowAlpha.cjs.js"),Ze=require("./Points.cjs.js"),$e=require("./Instances.cjs.js"),er=require("./Segments.cjs.js"),rr=require("./Detailed.cjs.js"),sr=require("./Preload.cjs.js"),tr=require("./BakeShadows.cjs.js"),or=require("./meshBounds.cjs.js"),ir=require("./AdaptiveDpr.cjs.js"),ar=require("./AdaptiveEvents.cjs.js"),ur=require("./PerformanceMonitor.cjs.js"),cr=require("./RenderTexture.cjs.js"),nr=require("./RenderCubeTexture.cjs.js"),pr=require("./Mask.cjs.js"),jr=require("./Hud.cjs.js"),xr=require("./Fisheye.cjs.js"),lr=require("./MeshPortalMaterial.cjs.js"),dr=require("./calculateScaleFactor.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("three"),require("@react-three/fiber"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("../helpers/constants.cjs.js"),require("meshline"),require("camera-controls"),require("maath"),require("zustand"),require("hls.js"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("stats-gl"),require("detect-gpu"),require("three-mesh-bvh"),require("react-composer"),require("../helpers/deprecated.cjs.js"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/MeshRefractionMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("uuid"),require("../materials/WireframeMaterial.cjs.js"),exports.Billboard=e.Billboard,exports.ScreenSpace=r.ScreenSpace,exports.ScreenSizer=s.ScreenSizer,exports.QuadraticBezierLine=t.QuadraticBezierLine,exports.CubicBezierLine=o.CubicBezierLine,exports.CatmullRomLine=i.CatmullRomLine,exports.Line=a.Line,exports.PositionalAudio=u.PositionalAudio,exports.Text=c.Text,exports.Text3D=n.Text3D,exports.Effects=p.Effects,exports.isWebGL2Available=p.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.GradientType=j.GradientType,exports.Image=x.Image,exports.Edges=l.Edges,exports.Outlines=d.Outlines,exports.Trail=q.Trail,exports.useTrail=q.useTrail,exports.Sampler=m.Sampler,exports.useSurfaceSampler=m.useSurfaceSampler,exports.ComputedAttribute=h.ComputedAttribute,exports.Clone=C.Clone,exports.MarchingCube=M.MarchingCube,exports.MarchingCubes=M.MarchingCubes,exports.MarchingPlane=M.MarchingPlane,exports.Decal=S.Decal,exports.Svg=T.Svg,exports.Gltf=b.Gltf,exports.useGLTF=b.useGLTF,exports.AsciiRenderer=P.AsciiRenderer,exports.Splat=f.Splat,exports.OrthographicCamera=g.OrthographicCamera,exports.PerspectiveCamera=B.PerspectiveCamera,exports.CubeCamera=v.CubeCamera,exports.useCubeCamera=v.useCubeCamera,exports.DeviceOrientationControls=A.DeviceOrientationControls,exports.FlyControls=F.FlyControls,exports.MapControls=L.MapControls,exports.OrbitControls=G.OrbitControls,exports.TrackballControls=R.TrackballControls,exports.ArcballControls=D.ArcballControls,exports.TransformControls=E.TransformControls,exports.PointerLockControls=k.PointerLockControls,exports.FirstPersonControls=I.FirstPersonControls,exports.CameraControls=w.CameraControls,exports.MotionPathControls=z.MotionPathControls,exports.useMotion=z.useMotion,exports.GizmoHelper=O.GizmoHelper,exports.useGizmoContext=O.useGizmoContext,exports.GizmoViewcube=y.GizmoViewcube,exports.GizmoViewport=H.GizmoViewport,exports.Grid=V.Grid,exports.CubeTexture=W.CubeTexture,exports.useCubeTexture=W.useCubeTexture,exports.Fbx=K.Fbx,exports.useFBX=K.useFBX,exports.Ktx2=Q.Ktx2,exports.useKTX2=Q.useKTX2,exports.Progress=N.Progress,exports.useProgress=N.useProgress,exports.IsObject=U.IsObject,exports.Texture=U.Texture,exports.useTexture=U.useTexture,exports.VideoTexture=X.VideoTexture,exports.useVideoTexture=X.useVideoTexture,exports.useFont=_.useFont,exports.checkIfFrameIsEmpty=J.checkIfFrameIsEmpty,exports.getFirstFrame=J.getFirstFrame,exports.useSpriteLoader=J.useSpriteLoader,exports.Helper=Y.Helper,exports.useHelper=Y.useHelper,exports.Stats=Z.Stats,exports.StatsGl=$.StatsGl,exports.useDepthBuffer=ee.useDepthBuffer,exports.useAspect=re.useAspect,exports.useCamera=se.useCamera,exports.DetectGPU=te.DetectGPU,exports.useDetectGPU=te.useDetectGPU,exports.Bvh=oe.Bvh,exports.useBVH=oe.useBVH,exports.useContextBridge=ie.useContextBridge,exports.useAnimations=ae.useAnimations,exports.Fbo=ue.Fbo,exports.useFBO=ue.useFBO,exports.useIntersect=ce.useIntersect,exports.useBoxProjectedEnv=ne.useBoxProjectedEnv,exports.BBAnchor=pe.BBAnchor,exports.TrailTexture=je.TrailTexture,exports.useTrailTexture=je.useTrailTexture,exports.Example=xe.Example,exports.SpriteAnimator=le.SpriteAnimator,exports.useSpriteAnimator=le.useSpriteAnimator,exports.CurveModifier=de.CurveModifier,exports.MeshDistortMaterial=qe.MeshDistortMaterial,exports.MeshWobbleMaterial=me.MeshWobbleMaterial,exports.MeshReflectorMaterial=he.MeshReflectorMaterial,exports.MeshRefractionMaterial=Ce.MeshRefractionMaterial,exports.MeshTransmissionMaterial=Me.MeshTransmissionMaterial,exports.MeshDiscardMaterial=Se.MeshDiscardMaterial,exports.MultiMaterial=Te.MultiMaterial,exports.PointMaterial=be.PointMaterial,exports.PointMaterialImpl=be.PointMaterialImpl,exports.shaderMaterial=Pe.shaderMaterial,exports.SoftShadows=fe.SoftShadows,exports.Box=ge.Box,exports.Capsule=ge.Capsule,exports.Circle=ge.Circle,exports.Cone=ge.Cone,exports.Cylinder=ge.Cylinder,exports.Dodecahedron=ge.Dodecahedron,exports.Extrude=ge.Extrude,exports.Icosahedron=ge.Icosahedron,exports.Lathe=ge.Lathe,exports.Octahedron=ge.Octahedron,exports.Plane=ge.Plane,exports.Polyhedron=ge.Polyhedron,exports.Ring=ge.Ring,exports.Shape=ge.Shape,exports.Sphere=ge.Sphere,exports.Tetrahedron=ge.Tetrahedron,exports.Torus=ge.Torus,exports.TorusKnot=ge.TorusKnot,exports.Tube=ge.Tube,exports.RoundedBox=Be.RoundedBox,exports.ScreenQuad=ve.ScreenQuad,exports.Center=Ae.Center,exports.Resize=Fe.Resize,exports.Bounds=Le.Bounds,exports.useBounds=Le.useBounds,exports.CameraShake=Ge.CameraShake,exports.Float=Re.Float,exports.Stage=De.Stage,exports.Backdrop=Ee.Backdrop,exports.Shadow=ke.Shadow,exports.Caustics=Ie.Caustics,exports.ContactShadows=we.ContactShadows,exports.AccumulativeShadows=ze.AccumulativeShadows,exports.RandomizedLight=ze.RandomizedLight,exports.accumulativeContext=ze.accumulativeContext,exports.Reflector=Oe.Reflector,exports.SpotLight=ye.SpotLight,exports.SpotLightShadow=ye.SpotLightShadow,exports.Environment=He.Environment,exports.EnvironmentCube=He.EnvironmentCube,exports.EnvironmentMap=He.EnvironmentMap,exports.EnvironmentPortal=He.EnvironmentPortal,exports.Lightformer=Ve.Lightformer,exports.Sky=We.Sky,exports.calcPosFromAngles=We.calcPosFromAngles,exports.Stars=Ke.Stars,exports.Cloud=Qe.Cloud,exports.CloudInstance=Qe.CloudInstance,exports.Clouds=Qe.Clouds,exports.Sparkles=Ne.Sparkles,exports.useEnvironment=Ue.useEnvironment,exports.MatcapTexture=Xe.MatcapTexture,exports.useMatcapTexture=Xe.useMatcapTexture,exports.NormalTexture=_e.NormalTexture,exports.useNormalTexture=_e.useNormalTexture,exports.Wireframe=Je.Wireframe,exports.ShadowAlpha=Ye.ShadowAlpha,exports.Point=Ze.Point,exports.Points=Ze.Points,exports.PointsBuffer=Ze.PointsBuffer,exports.PositionPoint=Ze.PositionPoint,exports.Instance=$e.Instance,exports.InstancedAttribute=$e.InstancedAttribute,exports.Instances=$e.Instances,exports.Merged=$e.Merged,exports.PositionMesh=$e.PositionMesh,exports.createInstances=$e.createInstances,exports.Segment=er.Segment,exports.SegmentObject=er.SegmentObject,exports.Segments=er.Segments,exports.Detailed=rr.Detailed,exports.Preload=sr.Preload,exports.BakeShadows=tr.BakeShadows,exports.meshBounds=or.meshBounds,exports.AdaptiveDpr=ir.AdaptiveDpr,exports.AdaptiveEvents=ar.AdaptiveEvents,exports.PerformanceMonitor=ur.PerformanceMonitor,exports.usePerformanceMonitor=ur.usePerformanceMonitor,exports.RenderTexture=cr.RenderTexture,exports.RenderCubeTexture=nr.RenderCubeTexture,exports.Mask=pr.Mask,exports.useMask=pr.useMask,exports.Hud=jr.Hud,exports.Fisheye=xr.Fisheye,exports.MeshPortalMaterial=lr.MeshPortalMaterial,exports.calculateScaleFactor=dr.calculateScaleFactor;
package/core/index.js CHANGED
@@ -48,7 +48,7 @@ export { Progress, useProgress } from './Progress.js';
48
48
  export { IsObject, Texture, useTexture } from './Texture.js';
49
49
  export { VideoTexture, useVideoTexture } from './VideoTexture.js';
50
50
  export { useFont } from './useFont.js';
51
- export { calculateAspectRatio, checkIfFrameIsEmpty, getFirstItem, useSpriteLoader } from './useSpriteLoader.js';
51
+ export { checkIfFrameIsEmpty, getFirstFrame, useSpriteLoader } from './useSpriteLoader.js';
52
52
  export { Helper, useHelper } from './Helper.js';
53
53
  export { Stats } from './Stats.js';
54
54
  export { StatsGl } from './StatsGl.js';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("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 o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var a=o(e),n=o(t);const s=e=>{if(Array.isArray(e))return e[0];if("object"==typeof e&&null!==e){return e[Object.keys(e)[0]][0]}return{w:0,h:0}},i=e=>{for(let r=3;r<e.length;r+=4)if(0!==e[r])return!1;return!0},u=(e,r,t,o)=>{const n=r*(o.aspect>e/r?o.width/e:o.height/r),s=e*(o.aspect>e/r?o.width/e:o.height/r)*t,i=n*t;let u=Math.min(1,s),c=Math.min(1,i);return s>1&&(u=1,c=i/s*1),new a.Vector3(u,c,1)};function c(o,c,f,l,m,h){const d=r.useThree((e=>e.viewport)),w=n.useRef(null),p=n.useRef(0),[g,y]=t.useState(null),[x,S]=n.useState(new a.Texture),b=new a.TextureLoader,[v,L]=t.useState(null);function j(e){if(!e&&!o)throw new Error("Either textureUrl or input must be provided");const r=null!=e?e:o;if(!r)throw new Error("A valid texture URL must be provided");new Promise((e=>{b.load(r,e)})).then((e=>{z(null,e)}))}function O(e,r,t){const o=fetch(e).then((e=>e.json())),a=new Promise((e=>{b.load(r,e)}));Promise.all([o,a]).then((e=>{t(e[0],e[1])}))}n.useLayoutEffect((()=>(c&&o?O(c,o,z):o&&j(),()=>{o&&r.useLoader.clear(e.TextureLoader,o)})),[]);const z=(e,r)=>{let t=new a.Vector3(1,1,1);if(null===e){if(r&&l){const e=r.image.width,o=r.image.height;p.current=l;const{rows:a,columns:n,frameWidth:s,frameHeight:i,emptyFrames:c}=A(r,l);w.current={frames:[],meta:{version:"1.0",size:{w:e,h:o},rows:a,columns:n,frameWidth:s,frameHeight:i,scale:"1"}};for(let e=0;e<a;e++)for(let r=0;r<n;r++){(null!=c?c:[]).some((t=>t.row===e&&t.col===r))||w.current.frames.push({frame:{x:r*s,y:e*i,w:s,h:i},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:s,h:i},sourceSize:{w:s,h:i}})}t=u(s,i,.1,d)}w.current.frames=M(w.current.frames)}else if(r){w.current=e,w.current.frames=E(),p.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length;const{w:r,h:o}=s(e.frames).sourceSize;t=u(r,o,.1,d)}y(w.current),"encoding"in r?r.encoding=3001:r.colorSpace=a.SRGBColorSpace,S(r),L({spriteTexture:r,spriteData:w.current,aspect:t})},A=(e,r)=>{if(e.image){const t=document.createElement("canvas"),o=t.getContext("2d",h);if(!o)throw new Error("Failed to get 2d context");t.width=e.image.width,t.height=e.image.height,o.drawImage(e.image,0,0);const a=e.image.width,n=e.image.height,s=Math.round(Math.sqrt(r*(a/n))),u=Math.round(r/s),c=a/s,f=n/u,l=[];for(let e=0;e<u;e++)for(let t=0;t<s;t++){if(e*s+t>=r){l.push({row:e,col:t});continue}const a=o.getImageData(t*c,e*f,c,f).data;i(a)&&l.push({row:e,col:t})}return{rows:u,columns:s,frameWidth:c,frameHeight:f,emptyFrames:l}}return{rows:0,columns:0,frameWidth:0,frameHeight:0,emptyFrames:[]}},E=()=>{const e={},r=w.current,t=f;if(t&&Array.isArray(r.frames)){for(let o=0;o<t.length;o++){e[t[o]]=[];for(const a of r.frames){const r=a.frame,n=r.x,s=r.y,i=r.w,u=r.h,c=a.sourceSize.w,f=a.sourceSize.h;"string"==typeof a.filename&&-1!==a.filename.toLowerCase().indexOf(t[o].toLowerCase())&&e[t[o]].push({x:n,y:s,w:i,h:u,frame:r,sourceSize:{w:c,h:f}})}}for(const r in e)e[r].frame=M(e[r]);return e}if(t&&"object"==typeof r.frames){for(let o=0;o<t.length;o++){e[t[o]]=[];for(const a in r.frames){const n=r.frames[a],s=n.frame,i=s.x,u=s.y,c=s.w,f=s.h,l=n.sourceSize.w,m=n.sourceSize.h;"string"==typeof a&&-1!==a.toLowerCase().indexOf(t[o].toLowerCase())&&e[t[o]].push({x:i,y:u,w:c,h:f,frame:s,sourceSize:{w:l,h:m}})}}for(const r in e)e[r].frame=M(e[r]);return e}{let e=[];for(const t in r.frames)e.push(r.frames[t]);return e=M(e),e}},M=e=>{let r=null;for(const t of e){const{w:e,h:o}=t.frame,a=e*o;(!r||a>r.area)&&(r={...t.frame,area:a})}for(const a of e){var t;const{w:e,h:n}=a.frame,s=e*n;var o;if(s===(null==(t=r)?void 0:t.area))a.scaleRatio=1;else a.scaleRatio=Math.sqrt(s/(null==(o=r)?void 0:o.area))}return e};return n.useLayoutEffect((()=>{null==m||m(x,g)}),[x,g]),{spriteObj:v,loadJsonAndTexture:function(e,r){r&&e?O(r,e,z):j(e)}}}c.preload=t=>r.useLoader.preload(e.TextureLoader,t),c.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.calculateAspectRatio=u,exports.checkIfFrameIsEmpty=i,exports.getFirstItem=s,exports.useSpriteLoader=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");function a(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=a(e),s=a(t);const o=(e,r)=>{if(Array.isArray(e))return e[0];return e[null!=r?r:Object.keys(e)[0]][0]},u=e=>{for(let r=3;r<e.length;r+=4)if(0!==e[r])return!1;return!0};function c(a,c,i,f,l,m){const h=s.useRef(r.useThree((e=>e.viewport))),d=s.useRef(null),w=s.useRef(0),p=s.useRef(a),y=s.useRef(c),g=s.useRef(i),[b,x]=t.useState(null),[A,S]=s.useState(new n.Texture),L=s.useMemo((()=>new n.TextureLoader),[]),[C,O]=t.useState(null),j=s.useCallback(((e,r,t)=>{const a=r*(h.current.aspect>e/r?h.current.width/e:h.current.height/r),s=e*(h.current.aspect>e/r?h.current.width/e:h.current.height/r)*t,o=a*t;let u=Math.min(1,s),c=Math.min(1,o);return s>1&&(u=1,c=o/s*1),new n.Vector3(u,c,1)}),[]),k=s.useCallback(((e,r)=>{if(e.image){const t=document.createElement("canvas"),a=t.getContext("2d",m);if(!a)throw new Error("Failed to get 2d context");t.width=e.image.width,t.height=e.image.height,a.drawImage(e.image,0,0);const n=e.image.width,s=e.image.height,o=Math.round(Math.sqrt(r*(n/s))),c=Math.round(r/o),i=n/o,f=s/c,l=[];for(let e=0;e<c;e++)for(let t=0;t<o;t++){if(e*o+t>=r){l.push({row:e,col:t});continue}const n=a.getImageData(t*i,e*f,i,f).data;u(n)&&l.push({row:e,col:t})}return{rows:c,columns:o,frameWidth:i,frameHeight:f,emptyFrames:l}}return{rows:0,columns:0,frameWidth:0,frameHeight:0,emptyFrames:[]}}),[m]),v=s.useCallback((e=>{const r=e=>{let r=null;for(const t of e){const{w:e,h:a}=t.frame,n=e*a;(!r||n>r.area)&&(r={w:e,h:a,area:n})}return e.map((e=>{const{w:t,h:a}=e.frame,n=t*a,s=r?n===r.area?1:Math.sqrt(n/r.area):1;return{...e,scaleRatio:s}}))};if(Array.isArray(e))return r(e);{const t={};for(const a in e)t[a]=r(e[a]);return t}}),[]),z=s.useCallback((()=>{const e={},r=d.current,t=g.current;if(r){if(t&&Array.isArray(r.frames)){for(let a=0;a<t.length;a++){e[t[a]]=[];for(const n of r.frames){const r=n.frame,s=n.sourceSize.w,o=n.sourceSize.h;"string"==typeof n.filename&&-1!==n.filename.toLowerCase().indexOf(t[a].toLowerCase())&&e[t[a]].push({...n,frame:r,sourceSize:{w:s,h:o}})}}for(const r in e){const t=v(e[r]);Array.isArray(t)&&(e[r]=t)}return e}if(t&&"object"==typeof r.frames){for(let a=0;a<t.length;a++){e[t[a]]=[];for(const n in r.frames){const s=r.frames[n],o=s.frame,u=s.sourceSize.w,c=s.sourceSize.h;"string"==typeof n&&-1!==n.toLowerCase().indexOf(t[a].toLowerCase())&&e[t[a]].push({...s,frame:o,sourceSize:{w:u,h:c}})}}for(const r in e){const t=v(e[r]);Array.isArray(t)&&(e[r]=t)}return e}{let e=[];return null!=r&&r.frames&&(e=Array.isArray(r.frames)?r.frames.map((e=>({...e,x:e.frame.x,y:e.frame.y,w:e.frame.w,h:e.frame.h}))):Object.values(r.frames).flat().map((e=>({...e,x:e.frame.x,y:e.frame.y,w:e.frame.w,h:e.frame.h})))),v(e)}}return[]}),[v,d]),R=s.useCallback(((e,r)=>{let t=new n.Vector3(1,1,1);if(null===e){if(r&&f){const e=r.image.width,a=r.image.height;w.current=f;const{rows:n,columns:s,frameWidth:o,frameHeight:u,emptyFrames:c}=k(r,f),i={frames:[],meta:{version:"1.0",size:{w:e,h:a},rows:n,columns:s,frameWidth:o,frameHeight:u,scale:"1"}};for(let e=0;e<n;e++)for(let r=0;r<s;r++){(null!=c?c:[]).some((t=>t.row===e&&t.col===r))||Array.isArray(i.frames)&&i.frames.push({frame:{x:r*o,y:e*u,w:o,h:u},scaleRatio:1,rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:o,h:u},sourceSize:{w:o,h:u}})}t=j(o,u,.1),d.current=i}d.current&&d.current.frames&&(d.current.frames=v(d.current.frames))}else if(r){d.current=e,d.current.frames=z(),w.current=Array.isArray(e.frames)?e.frames.length:Object.keys(e.frames).length;const{w:r,h:a}=o(e.frames).sourceSize;t=j(r,a,.1)}x(d.current),"encoding"in r?r.encoding=3001:"colorSpace"in r&&(r.colorSpace=n.SRGBColorSpace),S(r),O({spriteTexture:r,spriteData:d.current,aspect:t})}),[k,f,z,j,v]),E=s.useCallback(((e,r,t)=>{const a=fetch(e).then((e=>e.json())),n=new Promise((e=>{L.load(r,e)}));Promise.all([a,n]).then((e=>{t(e[0],e[1])}))}),[L]),M=s.useCallback((e=>{if(!e&&!p.current)throw new Error("Either textureUrl or input must be provided");const r=null!=e?e:p.current;if(!r)throw new Error("A valid texture URL must be provided");L.load(r,(e=>R(null,e)))}),[L,R]),T=s.useCallback(((e,r)=>{r&&e?E(r,e,R):M(e)}),[E,M,R]);return s.useLayoutEffect((()=>{y.current&&p.current?E(y.current,p.current,R):p.current&&M();const t=p.current;return()=>{t&&r.useLoader.clear(e.TextureLoader,t)}}),[E,M,R]),s.useLayoutEffect((()=>{null==l||l(A,null!=b?b:null)}),[A,b,l]),{spriteObj:C,loadJsonAndTexture:T}}c.preload=t=>r.useLoader.preload(e.TextureLoader,t),c.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.checkIfFrameIsEmpty=u,exports.getFirstFrame=o,exports.useSpriteLoader=c;