diff --git a/.gitignore b/.gitignore index 8718c4b83e2..710a445e3c2 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,7 @@ src/app/lib/config/services/*.test.js .env yarn-error.log .yarn/* -!.yarn/cache +.yarn/cache !.yarn/patches !.yarn/plugins !.yarn/releases diff --git a/package.json b/package.json index b10990f5f15..9f958610819 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,9 @@ "@loadable/server": "5.16.7", "@optimizely/optimizely-sdk": "5.4.1", "@optimizely/react-sdk": "3.3.1", + "@react-three/drei": "10.7.7", + "@react-three/fiber": "9.6.0", + "@types/three": "0.184.0", "aws-embedded-metrics": "4.2.0", "compression": "1.8.1", "core-js": "3.46.0", @@ -133,6 +136,7 @@ "react-lazyload": "3.2.1", "react-router-config": "5.1.1", "react-router-dom": "5.3.4", + "three": "0.184.0", "undici": "7.24.0", "url-parse": "1.5.10", "uuid": "13.0.0", diff --git a/public/3d/Models/test_globe.glb b/public/3d/Models/test_globe.glb new file mode 100644 index 00000000000..de7984a3ee2 Binary files /dev/null and b/public/3d/Models/test_globe.glb differ diff --git a/src/app/components/3d/3dComponents/Globe/index.styles.ts b/src/app/components/3d/3dComponents/Globe/index.styles.ts new file mode 100644 index 00000000000..2933f2a1031 --- /dev/null +++ b/src/app/components/3d/3dComponents/Globe/index.styles.ts @@ -0,0 +1,14 @@ +import { css } from '@emotion/react'; + +export default { + GlobeScene: () => + css({ + width: 500, + height: 500, + }), + canvasContainer: () => + css({ + width: '100%', + height: '100%', + }), +}; diff --git a/src/app/components/3d/3dComponents/Globe/index.tsx b/src/app/components/3d/3dComponents/Globe/index.tsx new file mode 100644 index 00000000000..f67e2cc0c82 --- /dev/null +++ b/src/app/components/3d/3dComponents/Globe/index.tsx @@ -0,0 +1,10 @@ +import Scene3D from './scene3D'; +import styles from './index.styles'; + +const Globe = () => ( +
+ +
+); + +export default Globe; diff --git a/src/app/components/3d/3dComponents/Globe/scene3D.jsx b/src/app/components/3d/3dComponents/Globe/scene3D.jsx new file mode 100644 index 00000000000..ca8af10afd0 --- /dev/null +++ b/src/app/components/3d/3dComponents/Globe/scene3D.jsx @@ -0,0 +1,18 @@ +// import { jsx } from '@emotion/react'; +// import { Suspense } from 'react'; +import { Canvas } from '@react-three/fiber'; +import { OrbitControls } from '@react-three/drei'; +import { Globe } from '#app/components/3d/3dModels/Globe'; +import styles from './index.styles'; + +/* eslint-disable react/no-unknown-property */ +const Scene3D = () => ( +
+ + + + +
+); + +export default Scene3D; diff --git a/src/app/components/3d/3dModels/Globe.jsx b/src/app/components/3d/3dModels/Globe.jsx new file mode 100644 index 00000000000..4279dab2e26 --- /dev/null +++ b/src/app/components/3d/3dModels/Globe.jsx @@ -0,0 +1,73 @@ +/* +Auto-generated by: https://github.com/pmndrs/gltfjsx +*/ + +/* eslint-disable react/no-unknown-property */ + +import { useGLTF } from '@react-three/drei'; + +import { getEnvConfig } from '#app/lib/utilities/getEnvConfig'; + +const { + SIMORGH_PUBLIC_STATIC_ASSETS_ORIGIN, + SIMORGH_PUBLIC_STATIC_ASSETS_PATH, +} = getEnvConfig(); + +const MESH_COLORS = [ + '#e6194b', + '#3cb44b', + '#ffe119', + '#4363d8', + '#f58231', + '#911eb4', + '#42d4f4', + '#f032e6', + '#bfef45', + '#fabed4', +]; + +export function Globe(props) { + const { nodes } = useGLTF( + `${SIMORGH_PUBLIC_STATIC_ASSETS_ORIGIN}${SIMORGH_PUBLIC_STATIC_ASSETS_PATH}3d/Models/test_globe.glb`, + ); + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} + +useGLTF.preload( + `${SIMORGH_PUBLIC_STATIC_ASSETS_ORIGIN}${SIMORGH_PUBLIC_STATIC_ASSETS_PATH}3d/Models/test_globe.glb`, +); + +export default Globe; diff --git a/ws-nextjs-app/pages/ws/languages.page.tsx b/ws-nextjs-app/pages/ws/languages.page.tsx index f2b37e62cbc..52d99a6c083 100644 --- a/ws-nextjs-app/pages/ws/languages.page.tsx +++ b/ws-nextjs-app/pages/ws/languages.page.tsx @@ -5,9 +5,13 @@ import PageDataParams from '#app/models/types/pageDataParams'; import { INTERNAL_SERVER_ERROR, OK } from '#app/lib/statusCodes.const'; import nodeLogger from '#lib/logger.node'; import { ROUTING_INFORMATION } from '#app/lib/logger.const'; + import getPageData from '../../utilities/pageRequests/getPageData'; const HomePage = dynamic(() => import('#pages/HomePage/HomePage')); +const Globe = dynamic(() => import('#app/components/3d/3dComponents/Globe'), { + ssr: false, +}); const logger = nodeLogger(__filename); @@ -62,4 +66,11 @@ export const getServerSideProps: GetServerSideProps = async context => { }; }; -export default HomePage; +const LanguagesPage = props => ( + <> + + + +); + +export default LanguagesPage; diff --git a/yarn.lock b/yarn.lock index 2c22c3552a9..25dee8f0381 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2283,7 +2283,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:7.29.2": +"@babel/runtime@npm:7.29.2, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.26.0": version: 7.29.2 resolution: "@babel/runtime@npm:7.29.2" checksum: 10/f55ba4052aa0255055b34371a145fbe69c29b37b49eaea14805b095bfb4153701486416e89392fd27ec8abafa53868be86e960b9f8f959fff91f2c8ac2a14b02 @@ -2761,6 +2761,13 @@ __metadata: languageName: node linkType: hard +"@dimforge/rapier3d-compat@npm:~0.12.0": + version: 0.12.0 + resolution: "@dimforge/rapier3d-compat@npm:0.12.0" + checksum: 10/56cd538b59d534d2ed91de3eb7efd804af5defe146f65294e8ce81982a4bd6c27d61c1014c15a77bb5f5eff0de7a12fbc9b16bf895a2ec56ea5496fd80c78e26 + languageName: node + linkType: hard + "@discoveryjs/json-ext@npm:^0.6.3": version: 0.6.3 resolution: "@discoveryjs/json-ext@npm:0.6.3" @@ -4327,6 +4334,24 @@ __metadata: languageName: node linkType: hard +"@mediapipe/tasks-vision@npm:0.10.17": + version: 0.10.17 + resolution: "@mediapipe/tasks-vision@npm:0.10.17" + checksum: 10/53e7ef0b165a5dc7b52a236d9bc7b92dbc23a9b3365d840313cfd2ddc38889522d04d5b624952ff7dd261896e894b32e3b0297c0ac01ce2279313fa9e3a927d5 + languageName: node + linkType: hard + +"@monogrid/gainmap-js@npm:^3.0.6": + version: 3.4.0 + resolution: "@monogrid/gainmap-js@npm:3.4.0" + dependencies: + promise-worker-transferable: "npm:^1.0.4" + peerDependencies: + three: ">= 0.159.0" + checksum: 10/89b4bda069f517616df2813fb6a8f9bd4a3e7c252e5bbb9c930d764de79de03b8ffa5dd20d334159475c951acb3d0575f3d7302c19bb5764f6d591afe87a77f6 + languageName: node + linkType: hard + "@napi-rs/wasm-runtime@npm:^0.2.11": version: 0.2.11 resolution: "@napi-rs/wasm-runtime@npm:0.2.11" @@ -5131,6 +5156,83 @@ __metadata: languageName: node linkType: hard +"@react-three/drei@npm:10.7.7": + version: 10.7.7 + resolution: "@react-three/drei@npm:10.7.7" + dependencies: + "@babel/runtime": "npm:^7.26.0" + "@mediapipe/tasks-vision": "npm:0.10.17" + "@monogrid/gainmap-js": "npm:^3.0.6" + "@use-gesture/react": "npm:^10.3.1" + camera-controls: "npm:^3.1.0" + cross-env: "npm:^7.0.3" + detect-gpu: "npm:^5.0.56" + glsl-noise: "npm:^0.0.0" + hls.js: "npm:^1.5.17" + maath: "npm:^0.10.8" + meshline: "npm:^3.3.1" + stats-gl: "npm:^2.2.8" + stats.js: "npm:^0.17.0" + suspend-react: "npm:^0.1.3" + three-mesh-bvh: "npm:^0.8.3" + three-stdlib: "npm:^2.35.6" + troika-three-text: "npm:^0.52.4" + tunnel-rat: "npm:^0.1.2" + use-sync-external-store: "npm:^1.4.0" + utility-types: "npm:^3.11.0" + zustand: "npm:^5.0.1" + peerDependencies: + "@react-three/fiber": ^9.0.0 + react: ^19 + react-dom: ^19 + three: ">=0.159" + peerDependenciesMeta: + react-dom: + optional: true + checksum: 10/92fdfeaef334e38b81affe66482c5c3936e8f1fe9c257310653f13f27750f9ace09b34c1c4c0976e3b5f93889669d1d436d7bc668e98f9b5a2940206c1bf7e49 + languageName: node + linkType: hard + +"@react-three/fiber@npm:9.6.0": + version: 9.6.0 + resolution: "@react-three/fiber@npm:9.6.0" + dependencies: + "@babel/runtime": "npm:^7.17.8" + "@types/webxr": "npm:*" + base64-js: "npm:^1.5.1" + buffer: "npm:^6.0.3" + its-fine: "npm:^2.0.0" + react-use-measure: "npm:^2.1.7" + scheduler: "npm:^0.27.0" + suspend-react: "npm:^0.1.3" + use-sync-external-store: "npm:^1.4.0" + zustand: "npm:^5.0.3" + peerDependencies: + expo: ">=43.0" + expo-asset: ">=8.4" + expo-file-system: ">=11.0" + expo-gl: ">=11.0" + react: ">=19 <19.3" + react-dom: ">=19 <19.3" + react-native: ">=0.78" + three: ">=0.156" + peerDependenciesMeta: + expo: + optional: true + expo-asset: + optional: true + expo-file-system: + optional: true + expo-gl: + optional: true + react-dom: + optional: true + react-native: + optional: true + checksum: 10/e407de57734cf357143aa43901ac1c02aae19c8b93039d6f33906fcb5ae502fe67f91d324d4d176a0b0c60b1e1d3eda4631f1f2921c9cb9df8426fbd9008d467 + languageName: node + linkType: hard + "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -5794,6 +5896,13 @@ __metadata: languageName: node linkType: hard +"@tweenjs/tween.js@npm:~23.1.3": + version: 23.1.3 + resolution: "@tweenjs/tween.js@npm:23.1.3" + checksum: 10/10ecaf311c975162459bd016ef7eb1f3118a257050c4886de9737dee823fc829100a0887f3fc298f7a5577140eac054f9609b823eb0748ca7b653ec85ffba75e + languageName: node + linkType: hard + "@tybys/wasm-util@npm:^0.9.0": version: 0.9.0 resolution: "@tybys/wasm-util@npm:0.9.0" @@ -5930,6 +6039,13 @@ __metadata: languageName: node linkType: hard +"@types/draco3d@npm:^1.4.0": + version: 1.4.10 + resolution: "@types/draco3d@npm:1.4.10" + checksum: 10/1068a2c97a53439161a4e86a057101b3c4834e5ae261ccbda74a892ccce2858e2576b8d969118542f489bbee0db6d6ab3b7c463a38f20506a0443315919b99c7 + languageName: node + linkType: hard + "@types/eslint-scope@npm:^3.7.7": version: 3.7.7 resolution: "@types/eslint-scope@npm:3.7.7" @@ -6158,6 +6274,13 @@ __metadata: languageName: node linkType: hard +"@types/offscreencanvas@npm:^2019.6.4": + version: 2019.7.3 + resolution: "@types/offscreencanvas@npm:2019.7.3" + checksum: 10/53a394a65ae08eddff6e0a2a8db72abecc94f41fc8fee166e8900075d3c1ca32540ddf5b4836c37357d53a0253a03fea4d781b2db543e3f08bc1cdc2dc0fefb5 + languageName: node + linkType: hard + "@types/parse-json@npm:^4.0.0": version: 4.0.2 resolution: "@types/parse-json@npm:4.0.2" @@ -6246,6 +6369,15 @@ __metadata: languageName: node linkType: hard +"@types/react-reconciler@npm:^0.28.9": + version: 0.28.9 + resolution: "@types/react-reconciler@npm:0.28.9" + peerDependencies: + "@types/react": "*" + checksum: 10/2450e3df6169fb887591f2a949ca8f08439ac76c756124feeee7370f1a79b5060ba8e5f612302dc70169433e043da7f617dd7ea3b14a3c2bb39559d66b7a0986 + languageName: node + linkType: hard + "@types/react-router-dom@npm:5.3.3": version: 5.3.3 resolution: "@types/react-router-dom@npm:5.3.3" @@ -6392,6 +6524,13 @@ __metadata: languageName: node linkType: hard +"@types/stats.js@npm:*": + version: 0.17.4 + resolution: "@types/stats.js@npm:0.17.4" + checksum: 10/6f1a20e09da0c0b371b3c095b2787a91a9397944679aa506a0886160faf0ad185b911a34b4ec325f146810c5be969f085e81264e2dbe39fd57eb8ff98347b5f4 + languageName: node + linkType: hard + "@types/tedious@npm:^4.0.14": version: 4.0.14 resolution: "@types/tedious@npm:4.0.14" @@ -6410,6 +6549,20 @@ __metadata: languageName: node linkType: hard +"@types/three@npm:*, @types/three@npm:0.184.0": + version: 0.184.0 + resolution: "@types/three@npm:0.184.0" + dependencies: + "@dimforge/rapier3d-compat": "npm:~0.12.0" + "@tweenjs/tween.js": "npm:~23.1.3" + "@types/stats.js": "npm:*" + "@types/webxr": "npm:>=0.5.17" + fflate: "npm:~0.8.2" + meshoptimizer: "npm:~1.1.1" + checksum: 10/2a5ec10901f567cd1f4db2eaf86495bf912a9d8e570086210c3f5d79b117599d708e81e98df9e9c6de7b0ee66018b90b1be6e1d89eda05387c0df3d1de537714 + languageName: node + linkType: hard + "@types/tmp@npm:^0.2.3": version: 0.2.6 resolution: "@types/tmp@npm:0.2.6" @@ -6438,6 +6591,13 @@ __metadata: languageName: node linkType: hard +"@types/webxr@npm:*, @types/webxr@npm:>=0.5.17, @types/webxr@npm:^0.5.2": + version: 0.5.24 + resolution: "@types/webxr@npm:0.5.24" + checksum: 10/780afba558f73588922c2e71a6dcffd29d132179c5ddf290e9e5fe43a8a5eedd34dc7395209c19c06aa7a916cd2230a9d6f3f3afb2c7a9f6c820dc1f775f266a + languageName: node + linkType: hard + "@types/whatwg-mimetype@npm:^3.0.2": version: 3.0.2 resolution: "@types/whatwg-mimetype@npm:3.0.2" @@ -6834,6 +6994,24 @@ __metadata: languageName: node linkType: hard +"@use-gesture/core@npm:10.3.1": + version: 10.3.1 + resolution: "@use-gesture/core@npm:10.3.1" + checksum: 10/66c5bda4cf75927e0d1f9cb1b1a0a06d9812f918dfd634b768b6011385ce7b295ca89e0b016f4fe7a6d97d571726653b75c4271fd7f635bb8c159bf7886ce21c + languageName: node + linkType: hard + +"@use-gesture/react@npm:^10.3.1": + version: 10.3.1 + resolution: "@use-gesture/react@npm:10.3.1" + dependencies: + "@use-gesture/core": "npm:10.3.1" + peerDependencies: + react: ">= 16.8.0" + checksum: 10/2c01c1b73bbdeecb9d51370f9117418953accad6789818e1b50f505dcba9e38685612b3fcb25a5dfcbf3a10ae561506378f5ab7586c773c4485ef86107d53898 + languageName: node + linkType: hard + "@vitest/expect@npm:3.2.4": version: 3.2.4 resolution: "@vitest/expect@npm:3.2.4" @@ -8054,7 +8232,7 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.3.1": +"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 @@ -8111,7 +8289,7 @@ __metadata: languageName: node linkType: hard -"bidi-js@npm:^1.0.3": +"bidi-js@npm:^1.0.2, bidi-js@npm:^1.0.3": version: 1.0.3 resolution: "bidi-js@npm:1.0.3" dependencies: @@ -8300,6 +8478,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10/b6bc68237ebf29bdacae48ce60e5e28fc53ae886301f2ad9496618efac49427ed79096750033e7eab1897a4f26ae374ace49106a5758f38fb70c78c9fda2c3b1 + languageName: node + linkType: hard + "bundle-name@npm:^4.1.0": version: 4.1.0 resolution: "bundle-name@npm:4.1.0" @@ -8420,6 +8608,15 @@ __metadata: languageName: node linkType: hard +"camera-controls@npm:^3.1.0": + version: 3.1.2 + resolution: "camera-controls@npm:3.1.2" + peerDependencies: + three: ">=0.126.1" + checksum: 10/66b4f1c714cacd3f3d246d318b8f38d0a89bb24612590f265cc717fa43df6bc93a79e98fa5e2b6e124c4e560c4f733d3949b4a665d757a4932acf501ef4ce9e0 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001579": version: 1.0.30001707 resolution: "caniuse-lite@npm:1.0.30001707" @@ -9173,6 +9370,18 @@ __metadata: languageName: node linkType: hard +"cross-env@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: "npm:^7.0.1" + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 10/e99911f0d31c20e990fd92d6fd001f4b01668a303221227cc5cb42ed155f086351b1b3bd2699b200e527ab13011b032801f8ce638e6f09f854bdf744095e604c + languageName: node + linkType: hard + "cross-fetch@npm:^3.0.4, cross-fetch@npm:^3.1.5": version: 3.2.0 resolution: "cross-fetch@npm:3.2.0" @@ -9182,7 +9391,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -9742,6 +9951,15 @@ __metadata: languageName: node linkType: hard +"detect-gpu@npm:^5.0.56": + version: 5.0.70 + resolution: "detect-gpu@npm:5.0.70" + dependencies: + webgl-constants: "npm:^1.1.1" + checksum: 10/21a17fdd7e493621fe97d89605a2982c74773b5d281d266ca51d6faed47f4b1a17a798c9a2f26bb40c80d1515298e60097ce724aeb50947814b1d1048aa4f9ac + languageName: node + linkType: hard + "detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -9969,6 +10187,13 @@ __metadata: languageName: node linkType: hard +"draco3d@npm:^1.4.1": + version: 1.5.7 + resolution: "draco3d@npm:1.5.7" + checksum: 10/9d066f3fcf6c35f9e21205b2d89d87a38010a51115d365c8696bc7dad41f53eb9c1ec98b41ce9324853d1c686c403ac23e9f68742cf281f6f1cba4bcbfa86e09 + languageName: node + linkType: hard + "dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": version: 1.0.1 resolution: "dunder-proto@npm:1.0.1" @@ -11271,6 +11496,20 @@ __metadata: languageName: node linkType: hard +"fflate@npm:^0.6.9": + version: 0.6.10 + resolution: "fflate@npm:0.6.10" + checksum: 10/9f2fd7224bccdb28102adc7c55c262b584571426eb9e0b91b13088884f45700232b51e034e300b74abf64e5449596d5c37d0a802673e25edb17c6742e4a4a0bd + languageName: node + linkType: hard + +"fflate@npm:~0.8.2": + version: 0.8.2 + resolution: "fflate@npm:0.8.2" + checksum: 10/2bd26ba6d235d428de793c6a0cd1aaa96a06269ebd4e21b46c8fd1bd136abc631acf27e188d47c3936db090bf3e1ede11d15ce9eae9bffdc4bfe1b9dc66ca9cb + languageName: node + linkType: hard + "figures@npm:^3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -11855,6 +12094,13 @@ __metadata: languageName: node linkType: hard +"glsl-noise@npm:^0.0.0": + version: 0.0.0 + resolution: "glsl-noise@npm:0.0.0" + checksum: 10/4bf683e4559c3db92dc35db69d4a27c79bf1bb1bcaeda9d9699453bd2eb01c9a4f79d01976615e3083f854c30a5720f127f3db994d4a14ff1c5525f6a34c1317 + languageName: node + linkType: hard + "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" @@ -12019,6 +12265,13 @@ __metadata: languageName: node linkType: hard +"hls.js@npm:^1.5.17": + version: 1.6.16 + resolution: "hls.js@npm:1.6.16" + checksum: 10/478a4c29a4246dff0f1209b2808f1e2e6651ef584df51fab23f6bbcb582e464f17552b9b76f3043dd98b8ae388961e5174a10c1f3dd55ec2ba7587c6bb3bd7f3 + languageName: node + linkType: hard + "hoist-non-react-statics@npm:^3.1.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" @@ -12341,7 +12594,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 @@ -12369,6 +12622,13 @@ __metadata: languageName: node linkType: hard +"immediate@npm:~3.0.5": + version: 3.0.6 + resolution: "immediate@npm:3.0.6" + checksum: 10/f9b3486477555997657f70318cc8d3416159f208bec4cca3ff3442fd266bc23f50f0c9bd8547e1371a6b5e82b821ec9a7044a4f7b944798b25aa3cc6d5e63e62 + languageName: node + linkType: hard + "import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.1 resolution: "import-fresh@npm:3.3.1" @@ -12785,6 +13045,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^2.1.0": + version: 2.2.2 + resolution: "is-promise@npm:2.2.2" + checksum: 10/18bf7d1c59953e0ad82a1ed963fb3dc0d135c8f299a14f89a17af312fc918373136e56028e8831700e1933519630cc2fd4179a777030330fde20d34e96f40c78 + languageName: node + linkType: hard + "is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" @@ -13030,6 +13297,17 @@ __metadata: languageName: node linkType: hard +"its-fine@npm:^2.0.0": + version: 2.0.0 + resolution: "its-fine@npm:2.0.0" + dependencies: + "@types/react-reconciler": "npm:^0.28.9" + peerDependencies: + react: ^19.0.0 + checksum: 10/26a6005615e31a8c5cec64ea66d4357bfa274616ed3e8224dd118e14c3f16aaa5a6c9454ae92a7bde687a4af80b5cfe7681f7ecc44edc3e64ee603a16550c8ea + languageName: node + linkType: hard + "jackspeak@npm:^3.1.2": version: 3.4.3 resolution: "jackspeak@npm:3.4.3" @@ -14155,6 +14433,15 @@ __metadata: languageName: node linkType: hard +"lie@npm:^3.0.2": + version: 3.3.0 + resolution: "lie@npm:3.3.0" + dependencies: + immediate: "npm:~3.0.5" + checksum: 10/f335ce67fe221af496185d7ce39c8321304adb701e122942c495f4f72dcee8803f9315ee572f5f8e8b08b9e8d7195da91b9fad776e8864746ba8b5e910adf76e + languageName: node + linkType: hard + "lighthouse-logger@npm:^2.0.1, lighthouse-logger@npm:^2.0.2": version: 2.0.2 resolution: "lighthouse-logger@npm:2.0.2" @@ -14444,6 +14731,16 @@ __metadata: languageName: node linkType: hard +"maath@npm:^0.10.8": + version: 0.10.8 + resolution: "maath@npm:0.10.8" + peerDependencies: + "@types/three": ">=0.134.0" + three: ">=0.134.0" + checksum: 10/912810d21e7bc8135623125df73d6a8280e215f1719f66cba660e4f2641fe4f0d214f1ee7734416d567654ae9da8c97cd8cdaf99befda4a03b18eff841a3448e + languageName: node + linkType: hard + "magic-string@npm:^0.30.17": version: 0.30.17 resolution: "magic-string@npm:0.30.17" @@ -14620,6 +14917,22 @@ __metadata: languageName: node linkType: hard +"meshline@npm:^3.3.1": + version: 3.3.1 + resolution: "meshline@npm:3.3.1" + peerDependencies: + three: ">=0.137" + checksum: 10/8851f4993aeb56e0290d6834edbe6810606f55b62862482cd906f64925d11d8545b58b7e3b0e88e3d9fe0d62759d1c58d68a6148cb43e4a549fcc7a3eef5c24f + languageName: node + linkType: hard + +"meshoptimizer@npm:~1.1.1": + version: 1.1.1 + resolution: "meshoptimizer@npm:1.1.1" + checksum: 10/0e05f06059ee2389f45d6245c310cce3a0c5fe57cef7014a925c66e19e9a4a41360250bd39f242c1381eaa821a7089d8da371792147f4bf35b5d95fe3e3d504e + languageName: node + linkType: hard + "methods@npm:^1.1.2, methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -16020,6 +16333,13 @@ __metadata: languageName: node linkType: hard +"potpack@npm:^1.0.1": + version: 1.0.2 + resolution: "potpack@npm:1.0.2" + checksum: 10/9dfdbbce012ce80842249abcdd89e20222eb8ae96beba8d578b7e41e78feefc7e33b5c72d46fb8dd3a1e382cb4da9c34574764d88aa8849ab36f542fd2088b42 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -16151,6 +16471,16 @@ __metadata: languageName: node linkType: hard +"promise-worker-transferable@npm:^1.0.4": + version: 1.0.4 + resolution: "promise-worker-transferable@npm:1.0.4" + dependencies: + is-promise: "npm:^2.1.0" + lie: "npm:^3.0.2" + checksum: 10/a54414fb3d17c9c2c3e120052f86b308787b10716f47ee2ff91f7e1a864b25320a740c9a9df32e9fe331510dbf83a782b7bb8499ba60fed13f84f5ce2e8dfe91 + languageName: node + linkType: hard + "promise@npm:8.3.0": version: 8.3.0 resolution: "promise@npm:8.3.0" @@ -16544,6 +16874,19 @@ __metadata: languageName: node linkType: hard +"react-use-measure@npm:^2.1.7": + version: 2.1.7 + resolution: "react-use-measure@npm:2.1.7" + peerDependencies: + react: ">=16.13" + react-dom: ">=16.13" + peerDependenciesMeta: + react-dom: + optional: true + checksum: 10/d3cbd359b97728654904a7b3b42c2bcac95596702d482bd497362869eeb040f0e585eb7073cfe76a6055783215581f5db5d2be3ba5b78668f0dd0be5b3330e67 + languageName: node + linkType: hard + "react@npm:19.2.4": version: 19.2.4 resolution: "react@npm:19.2.4" @@ -17659,6 +18002,8 @@ __metadata: "@loadable/webpack-plugin": "npm:5.15.2" "@optimizely/optimizely-sdk": "npm:5.4.1" "@optimizely/react-sdk": "npm:3.3.1" + "@react-three/drei": "npm:10.7.7" + "@react-three/fiber": "npm:9.6.0" "@storybook/addon-a11y": "npm:10.3.5" "@storybook/addon-docs": "npm:10.3.5" "@storybook/builder-webpack5": "npm:10.3.5" @@ -17680,6 +18025,7 @@ __metadata: "@types/react-lazyload": "npm:^3.2.0" "@types/react-router-dom": "npm:5.3.3" "@types/testing-library__react": "npm:10.2.0" + "@types/three": "npm:0.184.0" "@types/url-parse": "npm:^1.4.8" "@typescript-eslint/eslint-plugin": "npm:5.62.0" "@typescript-eslint/parser": "npm:8.58.0" @@ -17759,6 +18105,7 @@ __metadata: strip-ansi: "npm:7.1.2" supertest: "npm:7.2.2" terser-webpack-plugin: "npm:5.3.14" + three: "npm:0.184.0" timemachine: "npm:0.3.2" ts-jest: "npm:29.4.9" ts-loader: "npm:9.5.4" @@ -18028,6 +18375,26 @@ __metadata: languageName: node linkType: hard +"stats-gl@npm:^2.2.8": + version: 2.4.2 + resolution: "stats-gl@npm:2.4.2" + dependencies: + "@types/three": "npm:*" + three: "npm:^0.170.0" + peerDependencies: + "@types/three": "*" + three: "*" + checksum: 10/33aa959e7beffb77669fdc2c957f3c16ec035edc4723a90d2dba7d7e4d159c298aec4ea911a70abaa57e48f0f8b70da541b6b5e7ab5aacea11552391d079aab8 + languageName: node + linkType: hard + +"stats.js@npm:^0.17.0": + version: 0.17.0 + resolution: "stats.js@npm:0.17.0" + checksum: 10/c1be2253d57244cd45fcd61ff9d32599b36e3a15bb8b0e6d284dfc0997bc52fdf33266c112cc964689e903ba9c63d4b9eb06bdfa59066b5065e23d152deb749a + languageName: node + linkType: hard + "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" @@ -18429,6 +18796,15 @@ __metadata: languageName: node linkType: hard +"suspend-react@npm:^0.1.3": + version: 0.1.3 + resolution: "suspend-react@npm:0.1.3" + peerDependencies: + react: ">=17.0" + checksum: 10/45a8bde7fb4192d8fe5504ebbad4206381d4312257a873179278f8ec8b713e58a30053fa03fd52f4281ee2ad3eb96608fc70d6189d28f6c5f9c563d67ca22903 + languageName: node + linkType: hard + "swc-loader@npm:0.2.7": version: 0.2.7 resolution: "swc-loader@npm:0.2.7" @@ -18689,6 +19065,45 @@ __metadata: languageName: node linkType: hard +"three-mesh-bvh@npm:^0.8.3": + version: 0.8.3 + resolution: "three-mesh-bvh@npm:0.8.3" + peerDependencies: + three: ">= 0.159.0" + checksum: 10/834d5ceac3c0c4e22ab74e8125eae647d6394785dffb2958f90eefe112738d8f79cba99b027b9de782c2eaec9b81c97a1500e7c92897f74d24534687c0fd6730 + languageName: node + linkType: hard + +"three-stdlib@npm:^2.35.6": + version: 2.36.1 + resolution: "three-stdlib@npm:2.36.1" + dependencies: + "@types/draco3d": "npm:^1.4.0" + "@types/offscreencanvas": "npm:^2019.6.4" + "@types/webxr": "npm:^0.5.2" + draco3d: "npm:^1.4.1" + fflate: "npm:^0.6.9" + potpack: "npm:^1.0.1" + peerDependencies: + three: ">=0.128.0" + checksum: 10/0bb5de1a24d5ec32de533e21b697bd9bd5bfbac4282557fe8bb36442e67c40e82476fb8799410733a2fa6108c9f2a5e5233a22d13272ebb2e81339987c5a16cc + languageName: node + linkType: hard + +"three@npm:0.184.0": + version: 0.184.0 + resolution: "three@npm:0.184.0" + checksum: 10/a79a18747a064d94b01c56205d9c381b1e935e8d14389b484ee38c4d330c85e5e797b97efdfd3e139451997bc88e4984f37b8e151c6dce57eccaf2086777b6e2 + languageName: node + linkType: hard + +"three@npm:^0.170.0": + version: 0.170.0 + resolution: "three@npm:0.170.0" + checksum: 10/ce523a35b17b47526df7d21323afeac3482ef69a67d9304ed2d71877c079debfb1e77249af8a55ab376b48ee8265488da1bb0912200c170a6874f574f19f63c9 + languageName: node + linkType: hard + "throttleit@npm:^1.0.0": version: 1.0.1 resolution: "throttleit@npm:1.0.1" @@ -18925,6 +19340,36 @@ __metadata: languageName: node linkType: hard +"troika-three-text@npm:^0.52.4": + version: 0.52.4 + resolution: "troika-three-text@npm:0.52.4" + dependencies: + bidi-js: "npm:^1.0.2" + troika-three-utils: "npm:^0.52.4" + troika-worker-utils: "npm:^0.52.0" + webgl-sdf-generator: "npm:1.1.1" + peerDependencies: + three: ">=0.125.0" + checksum: 10/bbc0aaaed657b30240b69034543ac71451590e0b7403ae9eadc6b0891b791434185e687c6db545c23433fea0bfe93d67def3e1d120ba73dae74fe08aea95e8ca + languageName: node + linkType: hard + +"troika-three-utils@npm:^0.52.4": + version: 0.52.4 + resolution: "troika-three-utils@npm:0.52.4" + peerDependencies: + three: ">=0.125.0" + checksum: 10/cd2382b50584fdbec86c6ab9ac771c777cc937b9f23f40cb3f2fa3f401ba438ffea822171f84fddc7d6537798e4fc1cc8c2f5fe81b04b3e1e6e7bb6c2f228f5c + languageName: node + linkType: hard + +"troika-worker-utils@npm:^0.52.0": + version: 0.52.0 + resolution: "troika-worker-utils@npm:0.52.0" + checksum: 10/7b58418a201611f0e350534c6ab6c4fcc0121d6ed3fdaf74b04b8d873e87341122e4f344d48c144d37cce73263d9948db9a7ab61141d90eed3652ebada4b56e4 + languageName: node + linkType: hard + "ts-api-utils@npm:^2.5.0": version: 2.5.0 resolution: "ts-api-utils@npm:2.5.0" @@ -19108,6 +19553,15 @@ __metadata: languageName: node linkType: hard +"tunnel-rat@npm:^0.1.2": + version: 0.1.2 + resolution: "tunnel-rat@npm:0.1.2" + dependencies: + zustand: "npm:^4.3.2" + checksum: 10/b0a3e06d0cb1f70e24d0da55f87127c155577b10ed65ed58a4801901c5c1df74d9185c407f724eb9c80b624f783c635d8d68f1f7b78574f574718de12e1d1871 + languageName: node + linkType: hard + "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -19519,7 +19973,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.5.0": +"use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.5.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" peerDependencies: @@ -19542,6 +19996,13 @@ __metadata: languageName: node linkType: hard +"utility-types@npm:^3.11.0": + version: 3.11.0 + resolution: "utility-types@npm:3.11.0" + checksum: 10/a3c51463fc807ed04ccc8b5d0fa6e31f3dcd7a4cbd30ab4bc6d760ce5319dd493d95bf04244693daf316f97e9ab2a37741edfed8748ad38572a595398ad0fdaf + languageName: node + linkType: hard + "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" @@ -19750,6 +20211,20 @@ __metadata: languageName: node linkType: hard +"webgl-constants@npm:^1.1.1": + version: 1.1.1 + resolution: "webgl-constants@npm:1.1.1" + checksum: 10/f744c8e6215f59679820cfd9f08f478a2d8c79b884c07966d3cf50d6c7506fce65ec0523105bec5ee67f4a4cdc6264928251d3db8fd85d2723a82d75f50e88b8 + languageName: node + linkType: hard + +"webgl-sdf-generator@npm:1.1.1": + version: 1.1.1 + resolution: "webgl-sdf-generator@npm:1.1.1" + checksum: 10/fde51f1fdc027563fbbbcfd5a224a9565ef8a02e1e84e4b7d2e2b648ef8dbd47808cd5b22192be1a9d6d2323c5f80a8a27d368b269ab0bddd4ecab414bf0baf1 + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -20544,3 +21019,44 @@ __metadata: checksum: 10/f0c963ec40cd96858451d1690404d603d36507c1fc9682f2dae59ab38b578687d542708a7fdbf645f77926f78c9ed558f57c3d3aa226c285f798df0c4da16995 languageName: node linkType: hard + +"zustand@npm:^4.3.2": + version: 4.5.7 + resolution: "zustand@npm:4.5.7" + dependencies: + use-sync-external-store: "npm:^1.2.2" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0.6" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10/21c47ea1c9bb0363b714a7e371a91b9afaeabc5c9c2f522803a0fb412605b1e037c4f975a7377529de8f2857e60d1f4586e7ade18444168ecc492e38779e605d + languageName: node + linkType: hard + +"zustand@npm:^5.0.1, zustand@npm:^5.0.3": + version: 5.0.12 + resolution: "zustand@npm:5.0.12" + peerDependencies: + "@types/react": ">=18.0.0" + immer: ">=9.0.6" + react: ">=18.0.0" + use-sync-external-store: ">=1.2.0" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + checksum: 10/b84c85fc4133ec5ee05c11d0f2f3dff0f7537d9d0f1d3475a8e5a92f42ee1ba6d38039e09baf510075eb738e3d55018a635b3fa7db07c94e8d5717104abab9e5 + languageName: node + linkType: hard