@almadar/ui 5.63.2 → 5.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avl/index.cjs +5 -2
- package/dist/avl/index.js +5 -2
- package/dist/components/game/molecules/three/index.cjs +5 -2
- package/dist/components/game/molecules/three/index.js +5 -2
- package/dist/components/index.cjs +5 -2
- package/dist/components/index.js +5 -2
- package/dist/components/marketing/organisms/HeroOrganism.d.ts +2 -2
- package/dist/components/marketing/organisms/ShowcaseOrganism.d.ts +2 -2
- package/dist/components/marketing/organisms/TeamOrganism.d.ts +2 -2
- package/dist/providers/index.cjs +5 -2
- package/dist/providers/index.js +5 -2
- package/dist/runtime/index.cjs +5 -2
- package/dist/runtime/index.js +5 -2
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -43,6 +43,7 @@ var THREE3 = require('three');
|
|
|
43
43
|
var GLTFLoader_js = require('three/examples/jsm/loaders/GLTFLoader.js');
|
|
44
44
|
var OBJLoader_js = require('three/examples/jsm/loaders/OBJLoader.js');
|
|
45
45
|
var GLTFLoader = require('three/examples/jsm/loaders/GLTFLoader');
|
|
46
|
+
var SkeletonUtils = require('three/examples/jsm/utils/SkeletonUtils');
|
|
46
47
|
var fiber = require('@react-three/fiber');
|
|
47
48
|
var drei = require('@react-three/drei');
|
|
48
49
|
var patterns = require('@almadar/patterns');
|
|
@@ -45460,7 +45461,8 @@ function ModelLoader({
|
|
|
45460
45461
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
45461
45462
|
const model = React93.useMemo(() => {
|
|
45462
45463
|
if (!loadedModel) return null;
|
|
45463
|
-
const cloned =
|
|
45464
|
+
const cloned = SkeletonUtils.clone(loadedModel);
|
|
45465
|
+
cloned.updateMatrixWorld(true);
|
|
45464
45466
|
cloned.traverse((child) => {
|
|
45465
45467
|
if (child instanceof THREE3__namespace.Mesh) {
|
|
45466
45468
|
child.castShadow = castShadow;
|
|
@@ -45475,7 +45477,8 @@ function ModelLoader({
|
|
|
45475
45477
|
const size = new THREE3__namespace.Vector3();
|
|
45476
45478
|
box.getSize(size);
|
|
45477
45479
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
45478
|
-
|
|
45480
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
45481
|
+
return 1 / maxDim;
|
|
45479
45482
|
}, [model]);
|
|
45480
45483
|
const scaleArray = React93.useMemo(() => {
|
|
45481
45484
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
package/dist/avl/index.js
CHANGED
|
@@ -43,6 +43,7 @@ import * as THREE3 from 'three';
|
|
|
43
43
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
44
44
|
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
|
|
45
45
|
import { GLTFLoader as GLTFLoader$1 } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
46
|
+
import { clone } from 'three/examples/jsm/utils/SkeletonUtils';
|
|
46
47
|
import { Canvas, useLoader, useFrame, useThree } from '@react-three/fiber';
|
|
47
48
|
import { Billboard, Grid as Grid$1, OrbitControls } from '@react-three/drei';
|
|
48
49
|
import { getPatternDefinition, getComponentForPattern as getComponentForPattern$1, isEntityAwarePattern } from '@almadar/patterns';
|
|
@@ -45413,7 +45414,8 @@ function ModelLoader({
|
|
|
45413
45414
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
45414
45415
|
const model = useMemo(() => {
|
|
45415
45416
|
if (!loadedModel) return null;
|
|
45416
|
-
const cloned =
|
|
45417
|
+
const cloned = clone(loadedModel);
|
|
45418
|
+
cloned.updateMatrixWorld(true);
|
|
45417
45419
|
cloned.traverse((child) => {
|
|
45418
45420
|
if (child instanceof THREE3.Mesh) {
|
|
45419
45421
|
child.castShadow = castShadow;
|
|
@@ -45428,7 +45430,8 @@ function ModelLoader({
|
|
|
45428
45430
|
const size = new THREE3.Vector3();
|
|
45429
45431
|
box.getSize(size);
|
|
45430
45432
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
45431
|
-
|
|
45433
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
45434
|
+
return 1 / maxDim;
|
|
45432
45435
|
}, [model]);
|
|
45433
45436
|
const scaleArray = useMemo(() => {
|
|
45434
45437
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
|
@@ -7,6 +7,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
7
7
|
var drei = require('@react-three/drei');
|
|
8
8
|
var logger = require('@almadar/logger');
|
|
9
9
|
var GLTFLoader = require('three/examples/jsm/loaders/GLTFLoader');
|
|
10
|
+
var SkeletonUtils = require('three/examples/jsm/utils/SkeletonUtils');
|
|
10
11
|
var OrbitControls_js = require('three/examples/jsm/controls/OrbitControls.js');
|
|
11
12
|
var GLTFLoader_js = require('three/examples/jsm/loaders/GLTFLoader.js');
|
|
12
13
|
var OBJLoader_js = require('three/examples/jsm/loaders/OBJLoader.js');
|
|
@@ -392,7 +393,8 @@ function ModelLoader({
|
|
|
392
393
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
393
394
|
const model = React11.useMemo(() => {
|
|
394
395
|
if (!loadedModel) return null;
|
|
395
|
-
const cloned =
|
|
396
|
+
const cloned = SkeletonUtils.clone(loadedModel);
|
|
397
|
+
cloned.updateMatrixWorld(true);
|
|
396
398
|
cloned.traverse((child) => {
|
|
397
399
|
if (child instanceof THREE6__namespace.Mesh) {
|
|
398
400
|
child.castShadow = castShadow;
|
|
@@ -407,7 +409,8 @@ function ModelLoader({
|
|
|
407
409
|
const size = new THREE6__namespace.Vector3();
|
|
408
410
|
box.getSize(size);
|
|
409
411
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
410
|
-
|
|
412
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
413
|
+
return 1 / maxDim;
|
|
411
414
|
}, [model]);
|
|
412
415
|
const scaleArray = React11.useMemo(() => {
|
|
413
416
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
|
@@ -6,6 +6,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
6
6
|
import { OrbitControls, Billboard, Grid, Stars, Sparkles, Html, RoundedBox } from '@react-three/drei';
|
|
7
7
|
import { createLogger } from '@almadar/logger';
|
|
8
8
|
import { GLTFLoader as GLTFLoader$1 } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
9
|
+
import { clone } from 'three/examples/jsm/utils/SkeletonUtils';
|
|
9
10
|
import { OrbitControls as OrbitControls$1 } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
10
11
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
11
12
|
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
|
|
@@ -368,7 +369,8 @@ function ModelLoader({
|
|
|
368
369
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
369
370
|
const model = useMemo(() => {
|
|
370
371
|
if (!loadedModel) return null;
|
|
371
|
-
const cloned =
|
|
372
|
+
const cloned = clone(loadedModel);
|
|
373
|
+
cloned.updateMatrixWorld(true);
|
|
372
374
|
cloned.traverse((child) => {
|
|
373
375
|
if (child instanceof THREE6.Mesh) {
|
|
374
376
|
child.castShadow = castShadow;
|
|
@@ -383,7 +385,8 @@ function ModelLoader({
|
|
|
383
385
|
const size = new THREE6.Vector3();
|
|
384
386
|
box.getSize(size);
|
|
385
387
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
386
|
-
|
|
388
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
389
|
+
return 1 / maxDim;
|
|
387
390
|
}, [model]);
|
|
388
391
|
const scaleArray = useMemo(() => {
|
|
389
392
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
|
@@ -45,6 +45,7 @@ var THREE3 = require('three');
|
|
|
45
45
|
var GLTFLoader_js = require('three/examples/jsm/loaders/GLTFLoader.js');
|
|
46
46
|
var OBJLoader_js = require('three/examples/jsm/loaders/OBJLoader.js');
|
|
47
47
|
var GLTFLoader = require('three/examples/jsm/loaders/GLTFLoader');
|
|
48
|
+
var SkeletonUtils = require('three/examples/jsm/utils/SkeletonUtils');
|
|
48
49
|
var fiber = require('@react-three/fiber');
|
|
49
50
|
var drei = require('@react-three/drei');
|
|
50
51
|
var patterns = require('@almadar/patterns');
|
|
@@ -44014,7 +44015,8 @@ function ModelLoader({
|
|
|
44014
44015
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
44015
44016
|
const model = React79.useMemo(() => {
|
|
44016
44017
|
if (!loadedModel) return null;
|
|
44017
|
-
const cloned =
|
|
44018
|
+
const cloned = SkeletonUtils.clone(loadedModel);
|
|
44019
|
+
cloned.updateMatrixWorld(true);
|
|
44018
44020
|
cloned.traverse((child) => {
|
|
44019
44021
|
if (child instanceof THREE3__namespace.Mesh) {
|
|
44020
44022
|
child.castShadow = castShadow;
|
|
@@ -44029,7 +44031,8 @@ function ModelLoader({
|
|
|
44029
44031
|
const size = new THREE3__namespace.Vector3();
|
|
44030
44032
|
box.getSize(size);
|
|
44031
44033
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
44032
|
-
|
|
44034
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
44035
|
+
return 1 / maxDim;
|
|
44033
44036
|
}, [model]);
|
|
44034
44037
|
const scaleArray = React79.useMemo(() => {
|
|
44035
44038
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
package/dist/components/index.js
CHANGED
|
@@ -46,6 +46,7 @@ import * as THREE3 from 'three';
|
|
|
46
46
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
47
47
|
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
|
|
48
48
|
import { GLTFLoader as GLTFLoader$1 } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
49
|
+
import { clone } from 'three/examples/jsm/utils/SkeletonUtils';
|
|
49
50
|
import { Canvas, useLoader, useFrame, useThree } from '@react-three/fiber';
|
|
50
51
|
import { Billboard, Grid as Grid$1, OrbitControls } from '@react-three/drei';
|
|
51
52
|
import { getPatternDefinition as getPatternDefinition$1, getComponentForPattern as getComponentForPattern$1 } from '@almadar/patterns';
|
|
@@ -43968,7 +43969,8 @@ function ModelLoader({
|
|
|
43968
43969
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
43969
43970
|
const model = useMemo(() => {
|
|
43970
43971
|
if (!loadedModel) return null;
|
|
43971
|
-
const cloned =
|
|
43972
|
+
const cloned = clone(loadedModel);
|
|
43973
|
+
cloned.updateMatrixWorld(true);
|
|
43972
43974
|
cloned.traverse((child) => {
|
|
43973
43975
|
if (child instanceof THREE3.Mesh) {
|
|
43974
43976
|
child.castShadow = castShadow;
|
|
@@ -43983,7 +43985,8 @@ function ModelLoader({
|
|
|
43983
43985
|
const size = new THREE3.Vector3();
|
|
43984
43986
|
box.getSize(size);
|
|
43985
43987
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
43986
|
-
|
|
43988
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
43989
|
+
return 1 / maxDim;
|
|
43987
43990
|
}, [model]);
|
|
43988
43991
|
const scaleArray = useMemo(() => {
|
|
43989
43992
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - Never listens to events
|
|
11
11
|
*/
|
|
12
12
|
import React from 'react';
|
|
13
|
-
import type { EntityWith } from '@almadar/core';
|
|
13
|
+
import type { EntityWith, AssetUrl } from '@almadar/core';
|
|
14
14
|
import type { DisplayStateProps } from '../../core/organisms/types';
|
|
15
15
|
/** A hero CTA: a plain `{ label, href }` object (FieldValue-compatible — a `type`,
|
|
16
16
|
* not `interface`, so it's assignable to the entity-row `FieldValue` index sig). */
|
|
@@ -29,7 +29,7 @@ export interface HeroRow {
|
|
|
29
29
|
secondaryAction?: HeroAction;
|
|
30
30
|
installCommand?: string;
|
|
31
31
|
image?: {
|
|
32
|
-
src?:
|
|
32
|
+
src?: AssetUrl;
|
|
33
33
|
alt?: string;
|
|
34
34
|
};
|
|
35
35
|
imagePosition?: 'below' | 'right' | 'background';
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - Never listens to events
|
|
11
11
|
*/
|
|
12
12
|
import React from 'react';
|
|
13
|
-
import type { EntityWith } from '@almadar/core';
|
|
13
|
+
import type { EntityWith, AssetUrl } from '@almadar/core';
|
|
14
14
|
import type { DisplayStateProps } from '../../core/organisms/types';
|
|
15
15
|
/** The per-showcase entity fields this organism reads (FieldValue-compatible; `image`
|
|
16
16
|
* is a plain `{ src, alt }` object, `accentColor` a string). */
|
|
@@ -18,7 +18,7 @@ export interface ShowcaseRow {
|
|
|
18
18
|
title: string;
|
|
19
19
|
description?: string;
|
|
20
20
|
image?: {
|
|
21
|
-
src?:
|
|
21
|
+
src?: AssetUrl;
|
|
22
22
|
alt?: string;
|
|
23
23
|
};
|
|
24
24
|
href?: string;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - No events (display-only)
|
|
10
10
|
*/
|
|
11
11
|
import React from 'react';
|
|
12
|
-
import type { EntityWith } from '@almadar/core';
|
|
12
|
+
import type { EntityWith, AssetUrl } from '@almadar/core';
|
|
13
13
|
import type { DisplayStateProps } from '../../core/organisms/types';
|
|
14
14
|
/** The per-member entity fields this organism reads (FieldValue-compatible;
|
|
15
15
|
* `avatar` is a string url/initials). */
|
|
@@ -18,7 +18,7 @@ export interface TeamMemberRow {
|
|
|
18
18
|
nameAr?: string;
|
|
19
19
|
role?: string;
|
|
20
20
|
bio?: string;
|
|
21
|
-
avatar?:
|
|
21
|
+
avatar?: AssetUrl;
|
|
22
22
|
}
|
|
23
23
|
export interface TeamOrganismProps extends DisplayStateProps {
|
|
24
24
|
entity?: EntityWith<TeamMemberRow> | readonly EntityWith<TeamMemberRow>[];
|
package/dist/providers/index.cjs
CHANGED
|
@@ -45,6 +45,7 @@ var THREE3 = require('three');
|
|
|
45
45
|
var GLTFLoader_js = require('three/examples/jsm/loaders/GLTFLoader.js');
|
|
46
46
|
var OBJLoader_js = require('three/examples/jsm/loaders/OBJLoader.js');
|
|
47
47
|
var GLTFLoader = require('three/examples/jsm/loaders/GLTFLoader');
|
|
48
|
+
var SkeletonUtils = require('three/examples/jsm/utils/SkeletonUtils');
|
|
48
49
|
var fiber = require('@react-three/fiber');
|
|
49
50
|
var drei = require('@react-three/drei');
|
|
50
51
|
var patterns = require('@almadar/patterns');
|
|
@@ -43261,7 +43262,8 @@ function ModelLoader({
|
|
|
43261
43262
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
43262
43263
|
const model = React85.useMemo(() => {
|
|
43263
43264
|
if (!loadedModel) return null;
|
|
43264
|
-
const cloned =
|
|
43265
|
+
const cloned = SkeletonUtils.clone(loadedModel);
|
|
43266
|
+
cloned.updateMatrixWorld(true);
|
|
43265
43267
|
cloned.traverse((child) => {
|
|
43266
43268
|
if (child instanceof THREE3__namespace.Mesh) {
|
|
43267
43269
|
child.castShadow = castShadow;
|
|
@@ -43276,7 +43278,8 @@ function ModelLoader({
|
|
|
43276
43278
|
const size = new THREE3__namespace.Vector3();
|
|
43277
43279
|
box.getSize(size);
|
|
43278
43280
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
43279
|
-
|
|
43281
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
43282
|
+
return 1 / maxDim;
|
|
43280
43283
|
}, [model]);
|
|
43281
43284
|
const scaleArray = React85.useMemo(() => {
|
|
43282
43285
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
package/dist/providers/index.js
CHANGED
|
@@ -45,6 +45,7 @@ import * as THREE3 from 'three';
|
|
|
45
45
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
46
46
|
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
|
|
47
47
|
import { GLTFLoader as GLTFLoader$1 } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
48
|
+
import { clone } from 'three/examples/jsm/utils/SkeletonUtils';
|
|
48
49
|
import { Canvas, useLoader, useFrame, useThree } from '@react-three/fiber';
|
|
49
50
|
import { Billboard, Grid as Grid$1, OrbitControls } from '@react-three/drei';
|
|
50
51
|
import { getPatternDefinition, getComponentForPattern as getComponentForPattern$1 } from '@almadar/patterns';
|
|
@@ -43214,7 +43215,8 @@ function ModelLoader({
|
|
|
43214
43215
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
43215
43216
|
const model = useMemo(() => {
|
|
43216
43217
|
if (!loadedModel) return null;
|
|
43217
|
-
const cloned =
|
|
43218
|
+
const cloned = clone(loadedModel);
|
|
43219
|
+
cloned.updateMatrixWorld(true);
|
|
43218
43220
|
cloned.traverse((child) => {
|
|
43219
43221
|
if (child instanceof THREE3.Mesh) {
|
|
43220
43222
|
child.castShadow = castShadow;
|
|
@@ -43229,7 +43231,8 @@ function ModelLoader({
|
|
|
43229
43231
|
const size = new THREE3.Vector3();
|
|
43230
43232
|
box.getSize(size);
|
|
43231
43233
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
43232
|
-
|
|
43234
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
43235
|
+
return 1 / maxDim;
|
|
43233
43236
|
}, [model]);
|
|
43234
43237
|
const scaleArray = useMemo(() => {
|
|
43235
43238
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -45,6 +45,7 @@ var THREE3 = require('three');
|
|
|
45
45
|
var GLTFLoader_js = require('three/examples/jsm/loaders/GLTFLoader.js');
|
|
46
46
|
var OBJLoader_js = require('three/examples/jsm/loaders/OBJLoader.js');
|
|
47
47
|
var GLTFLoader = require('three/examples/jsm/loaders/GLTFLoader');
|
|
48
|
+
var SkeletonUtils = require('three/examples/jsm/utils/SkeletonUtils');
|
|
48
49
|
var fiber = require('@react-three/fiber');
|
|
49
50
|
var drei = require('@react-three/drei');
|
|
50
51
|
var patterns = require('@almadar/patterns');
|
|
@@ -42959,7 +42960,8 @@ function ModelLoader({
|
|
|
42959
42960
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
42960
42961
|
const model = React84.useMemo(() => {
|
|
42961
42962
|
if (!loadedModel) return null;
|
|
42962
|
-
const cloned =
|
|
42963
|
+
const cloned = SkeletonUtils.clone(loadedModel);
|
|
42964
|
+
cloned.updateMatrixWorld(true);
|
|
42963
42965
|
cloned.traverse((child) => {
|
|
42964
42966
|
if (child instanceof THREE3__namespace.Mesh) {
|
|
42965
42967
|
child.castShadow = castShadow;
|
|
@@ -42974,7 +42976,8 @@ function ModelLoader({
|
|
|
42974
42976
|
const size = new THREE3__namespace.Vector3();
|
|
42975
42977
|
box.getSize(size);
|
|
42976
42978
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
42977
|
-
|
|
42979
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
42980
|
+
return 1 / maxDim;
|
|
42978
42981
|
}, [model]);
|
|
42979
42982
|
const scaleArray = React84.useMemo(() => {
|
|
42980
42983
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|
package/dist/runtime/index.js
CHANGED
|
@@ -45,6 +45,7 @@ import * as THREE3 from 'three';
|
|
|
45
45
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
46
46
|
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
|
|
47
47
|
import { GLTFLoader as GLTFLoader$1 } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
48
|
+
import { clone } from 'three/examples/jsm/utils/SkeletonUtils';
|
|
48
49
|
import { Canvas, useLoader, useFrame, useThree } from '@react-three/fiber';
|
|
49
50
|
import { Billboard, Grid as Grid$1, OrbitControls } from '@react-three/drei';
|
|
50
51
|
import { getPatternDefinition, getComponentForPattern as getComponentForPattern$1 } from '@almadar/patterns';
|
|
@@ -42912,7 +42913,8 @@ function ModelLoader({
|
|
|
42912
42913
|
const { model: loadedModel, isLoading, error } = useGLTFModel(url, resourceBasePath);
|
|
42913
42914
|
const model = useMemo(() => {
|
|
42914
42915
|
if (!loadedModel) return null;
|
|
42915
|
-
const cloned =
|
|
42916
|
+
const cloned = clone(loadedModel);
|
|
42917
|
+
cloned.updateMatrixWorld(true);
|
|
42916
42918
|
cloned.traverse((child) => {
|
|
42917
42919
|
if (child instanceof THREE3.Mesh) {
|
|
42918
42920
|
child.castShadow = castShadow;
|
|
@@ -42927,7 +42929,8 @@ function ModelLoader({
|
|
|
42927
42929
|
const size = new THREE3.Vector3();
|
|
42928
42930
|
box.getSize(size);
|
|
42929
42931
|
const maxDim = Math.max(size.x, size.y, size.z);
|
|
42930
|
-
|
|
42932
|
+
if (!Number.isFinite(maxDim) || maxDim < 0.05) return 1;
|
|
42933
|
+
return 1 / maxDim;
|
|
42931
42934
|
}, [model]);
|
|
42932
42935
|
const scaleArray = useMemo(() => {
|
|
42933
42936
|
const base = typeof scale === "number" ? [scale, scale, scale] : scale;
|