Rewrite maintenance page renderer

This commit is contained in:
gtoriadotnet 2021-12-16 23:15:37 -05:00
parent 5dfd173d22
commit 5ada4eeb97
3 changed files with 307 additions and 35 deletions

266
web/package-lock.json generated
View File

@ -1174,6 +1174,16 @@
"to-fast-properties": "^2.0.0"
}
},
"@chevrotain/types": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-9.1.0.tgz",
"integrity": "sha512-3hbCD1CThkv9gnaSIPq0GUXwKni68e0ph6jIHwCvcWiQ4JB2xi8bFxBain0RF04qHUWuDjgnZLj4rLgimuGO+g=="
},
"@chevrotain/utils": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-9.1.0.tgz",
"integrity": "sha512-llLJZ8OAlZrjGlBvamm6Zdo/HmGAcCLq5gx7cSwUX8No+n/8ip+oaC4x33IdZIif8+Rh5dQUIZXmfbSghiOmNQ=="
},
"@discoveryjs/json-ext": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
@ -1242,6 +1252,78 @@
"@babel/runtime": "^7.6.2"
}
},
"@react-spring/animated": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.3.1.tgz",
"integrity": "sha512-23YaERZ++BwZ8F8PxPFqrpOwp/JZun1Pj6aHZtPAU42j5LycBRasT9XMw7Eyr7zNFhT+rl3R3wFfd4WX6Ax+UA==",
"requires": {
"@react-spring/shared": "~9.3.0",
"@react-spring/types": "~9.3.0"
}
},
"@react-spring/core": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.3.1.tgz",
"integrity": "sha512-8rmfmEHLHGtF1CUiXRn64YJqsXNxv2cGX8oNnBnsuoE33c48Zc34t2VIMB4R9q5zwIUCvDBGfiEenA8ZAPxqOQ==",
"requires": {
"@react-spring/animated": "~9.3.0",
"@react-spring/shared": "~9.3.0",
"@react-spring/types": "~9.3.0"
}
},
"@react-spring/rafz": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.3.1.tgz",
"integrity": "sha512-fEBMCarGVl+/2kdO+g6Zig4F+3ymwmcGN8S71gb1c7Cbbxb87kviPz8EhshfIHoiLeJPGlqwcuGbxNmZbBamvA=="
},
"@react-spring/shared": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.3.1.tgz",
"integrity": "sha512-jhPpxzURGo6Nty90ex1lkxmZae7w/VAbnGmb/nXcYoZwSoNR+W2aAd00iXsh2ZGz6MgoJOsc495JeG3uC7Am8A==",
"requires": {
"@react-spring/rafz": "~9.3.0",
"@react-spring/types": "~9.3.0"
}
},
"@react-spring/three": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.3.1.tgz",
"integrity": "sha512-40iRIX2DrY+a81hIliOog6TMg/ZAtHGeZr95r0vKAsl+iX1g9Hs8XCS4wTeQIUgydZpbpShk/JL6mkcstEfBdw==",
"requires": {
"@react-spring/animated": "~9.3.0",
"@react-spring/core": "~9.3.0",
"@react-spring/shared": "~9.3.0",
"@react-spring/types": "~9.3.0"
}
},
"@react-spring/types": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.3.1.tgz",
"integrity": "sha512-W/YMJMX35XgGGzX0gKORBTwnvQ+1loDOFN3XlZkW5fgpEY+7VkRUpPyqPWXQr3n6lHrsLmHIGdpznqZi54ACTQ=="
},
"@react-three/drei": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-8.3.0.tgz",
"integrity": "sha512-UFdWXUHCmucH2AGOIg/1/f46XF7TL7spIIiyqWId9Mp4Gz84BZkIQrHGU5vcMd7Ktmo3RWRTCTsR5MFOGK/qCw==",
"requires": {
"@babel/runtime": "^7.11.2",
"@react-spring/three": "^9.3.1",
"@use-gesture/react": "^10.2.0",
"detect-gpu": "^3.1.28",
"glsl-noise": "^0.0.0",
"lodash.omit": "^4.5.0",
"lodash.pick": "^4.4.0",
"react-composer": "^5.0.2",
"react-merge-refs": "^1.1.0",
"stats.js": "^0.17.0",
"three-mesh-bvh": "^0.5.2",
"three-stdlib": "^2.6.1",
"troika-three-text": "^0.44.0",
"use-asset": "^1.0.4",
"utility-types": "^3.10.0",
"zustand": "^3.5.13"
}
},
"@react-three/fiber": {
"version": "7.0.24",
"resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-7.0.24.tgz",
@ -1536,6 +1618,19 @@
"resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI="
},
"@use-gesture/core": {
"version": "10.2.4",
"resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.4.tgz",
"integrity": "sha512-fk1LjCBj43BKb8NE05qkdtPOR0ngA7PwgvEqfFap/h+s7QHi+JTv4/mtDQ4wI9zzem+Ry5EKrHS/cVdBehI4wA=="
},
"@use-gesture/react": {
"version": "10.2.4",
"resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.2.4.tgz",
"integrity": "sha512-CbqyRj+qNbRBOGmS8OWtaOa29fxEr7bKTYHvPuMQ1wsgQDh2/DqQxbp7cFxAg6WZ8oZjppDj/EkWnw22WpIIWQ==",
"requires": {
"@use-gesture/core": "10.2.4"
}
},
"@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
@ -1682,6 +1777,11 @@
"@xtuc/long": "4.2.2"
}
},
"@webgpu/glslang": {
"version": "0.0.15",
"resolved": "https://registry.npmjs.org/@webgpu/glslang/-/glslang-0.0.15.tgz",
"integrity": "sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q=="
},
"@webpack-cli/configtest": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz",
@ -1703,6 +1803,11 @@
"integrity": "sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==",
"dev": true
},
"@webxr-input-profiles/motion-controllers": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@webxr-input-profiles/motion-controllers/-/motion-controllers-1.0.0.tgz",
"integrity": "sha512-Ppxde+G1/QZbU8ShCQg+eq5VtlcL/FPkerF1dkDOLlIml0LJD1tFqnCZYR0SrHzYleIQ2siRnOx7xbFLaCpExQ=="
},
"@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@ -2130,6 +2235,14 @@
"integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
"dev": true
},
"bidi-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.2.tgz",
"integrity": "sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw==",
"requires": {
"require-from-string": "^2.0.2"
}
},
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@ -2491,6 +2604,16 @@
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
"dev": true
},
"chevrotain": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-9.1.0.tgz",
"integrity": "sha512-A86/55so63HCfu0dgGg3j9u8uuuBOrSqly1OhBZxRu2x6sAKILLzfVjbGMw45kgier6lz45EzcjjWtTRgoT84Q==",
"requires": {
"@chevrotain/types": "^9.1.0",
"@chevrotain/utils": "^9.1.0",
"regexp-to-ast": "0.5.0"
}
},
"chokidar": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
@ -3273,6 +3396,14 @@
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
"dev": true
},
"detect-gpu": {
"version": "3.1.30",
"resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-3.1.30.tgz",
"integrity": "sha512-WUOk8imHH56AWVt6iHry69qbNEFsPjtS6qsinurfxeI3bVYQZzFk8zECTaodLxfeRad7QspDjjkJWkp5vBo8WA==",
"requires": {
"webgl-constants": "^1.1.1"
}
},
"detect-node": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
@ -3414,6 +3545,11 @@
"integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
"dev": true
},
"draco3d": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.0.tgz",
"integrity": "sha512-8ESjH7o5xju1nfSvcS2A9vIbwSRQ3yYY0Yv7SFhNszsq4FlN4LGZuxNc3YfAPcg0AddaK0dE5AES3w1JoGeViA=="
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -3716,6 +3852,11 @@
"websocket-driver": ">=0.5.1"
}
},
"fflate": {
"version": "0.6.10",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
"integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg=="
},
"figures": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@ -4002,6 +4143,11 @@
"slash": "^3.0.0"
}
},
"glsl-noise": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz",
"integrity": "sha1-NndF86MzgsDu7Ey1S36Zz8HXZws="
},
"graceful-fs": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
@ -4814,6 +4960,11 @@
"integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==",
"dev": true
},
"ktx-parse": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ktx-parse/-/ktx-parse-0.2.1.tgz",
"integrity": "sha512-I+2mYJ6nQdWGmOlE3m9d9idKfhn2MCw04zaVpgtzyuc19uQ8OwRmmYLf/TP5ueVFfYmHbdpM8mPmId2X5PBLEw=="
},
"laravel-mix": {
"version": "6.0.29",
"resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.29.tgz",
@ -5064,6 +5215,16 @@
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
"dev": true
},
"lodash.omit": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
"integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
},
"lodash.pick": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
"integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
},
"lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@ -5327,6 +5488,11 @@
"minimist": "^1.2.5"
}
},
"mmd-parser": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mmd-parser/-/mmd-parser-1.0.4.tgz",
"integrity": "sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@ -5568,6 +5734,15 @@
"is-wsl": "^2.2.0"
}
},
"opentype.js": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz",
"integrity": "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==",
"requires": {
"string.prototype.codepointat": "^0.2.1",
"tiny-inflate": "^1.0.3"
}
},
"os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
@ -6346,6 +6521,11 @@
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ=="
},
"potpack": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
"integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="
},
"pretty-time": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
@ -6540,6 +6720,14 @@
"warning": "^4.0.3"
}
},
"react-composer": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/react-composer/-/react-composer-5.0.2.tgz",
"integrity": "sha512-6E2UNjUF0e7KRY+/faU2Hv7D9zagXnYdTfSSCGdYfuds6mRnVpN19vrbHXShaQzJNVXL4VOUb8qq6DvClDIG1g==",
"requires": {
"prop-types": "^15.6.0"
}
},
"react-dom": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
@ -6738,6 +6926,11 @@
"integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
"dev": true
},
"regexp-to-ast": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz",
"integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw=="
},
"regexp.prototype.flags": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
@ -6803,6 +6996,11 @@
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@ -7318,6 +7516,11 @@
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
"dev": true
},
"stats.js": {
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz",
"integrity": "sha1-scPcRtlEmLV4t/05hbgaznExzH0="
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@ -7372,6 +7575,11 @@
"strip-ansi": "^6.0.0"
}
},
"string.prototype.codepointat": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz",
"integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg=="
},
"string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@ -7572,6 +7780,29 @@
"resolved": "https://registry.npmjs.org/three/-/three-0.135.0.tgz",
"integrity": "sha512-kuEpuuxRzLv0MDsXai9huCxOSQPZ4vje6y0gn80SRmQvgz6/+rI0NAvCRAw56zYaWKMGMfqKWsxF9Qa2Z9xymQ=="
},
"three-mesh-bvh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.5.2.tgz",
"integrity": "sha512-DAKWujkp8xpSBqGiIsZbZC1utxAbYBg0SShQk9LdOG/xWWl1/OLK76eXDGfov47trl3L7PUTHi0hhRvZdVro1Q=="
},
"three-stdlib": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.6.1.tgz",
"integrity": "sha512-6GulvDfTnJ8KmJmhwrKnLWAepRysb+9mH6fiDGQnZVai9O1Pg/Gr8pYKOX3+GD9VVxyGqhsEbApcsRmRJaIsCQ==",
"requires": {
"@babel/runtime": "^7.14.6",
"@webgpu/glslang": "^0.0.15",
"@webxr-input-profiles/motion-controllers": "^1.0.0",
"chevrotain": "^9.0.2",
"draco3d": "^1.4.1",
"fflate": "^0.6.9",
"ktx-parse": "^0.2.1",
"mmd-parser": "^1.0.4",
"opentype.js": "^1.3.3",
"potpack": "^1.0.1",
"zstddec": "^0.0.2"
}
},
"thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@ -7593,6 +7824,11 @@
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
"dev": true
},
"tiny-inflate": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
},
"tiny-invariant": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
@ -7631,6 +7867,26 @@
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
"dev": true
},
"troika-three-text": {
"version": "0.44.0",
"resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.44.0.tgz",
"integrity": "sha512-YwqXczjXQ4yq2a2ufO9icOIjeJutE/ODS8PHmmt/WAzVFqoiqeemclp/Ewiqm0+sdI1KnWRm6lj8df/zmhU3Og==",
"requires": {
"bidi-js": "^1.0.2",
"troika-three-utils": "^0.44.0",
"troika-worker-utils": "^0.44.0"
}
},
"troika-three-utils": {
"version": "0.44.0",
"resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.44.0.tgz",
"integrity": "sha512-gaEpqrlWnkrVU5UgUx+YZTC8NrhsA2Tt6zEIbn3WNuom7pLtrgjuHpAM72gif7DoYdOWEyFco3Zb6rpJh9Fodg=="
},
"troika-worker-utils": {
"version": "0.44.0",
"resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.44.0.tgz",
"integrity": "sha512-/ETcH1rUoO9hVBL6Ifea2WOoGPw90ncrk8b8SJKTLtzcQvEWRIZ4eUxlVCtU93fLechCV+DWPs1y8+Bjh1WaJg=="
},
"tslib": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
@ -7868,6 +8124,11 @@
"minimalistic-assert": "^1.0.0"
}
},
"webgl-constants": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz",
"integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg=="
},
"webpack": {
"version": "5.52.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.52.0.tgz",
@ -8223,6 +8484,11 @@
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true
},
"zstddec": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.0.2.tgz",
"integrity": "sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA=="
},
"zustand": {
"version": "3.6.7",
"resolved": "https://registry.npmjs.org/zustand/-/zustand-3.6.7.tgz",

View File

@ -29,6 +29,7 @@
"webpack-subresource-integrity": "^5.0.0"
},
"dependencies": {
"@react-three/drei": "^8.3.0",
"@react-three/fiber": "^7.0.24",
"@steveeeie/react-page-transition": "^1.2.1",
"laravel-mix-react-css-modules": "^2.0.0",

View File

@ -4,44 +4,17 @@
import React, { useRef } from 'react';
import { Canvas, useFrame } from '@react-three/fiber';
import { Instances, Instance, PerspectiveCamera } from '@react-three/drei'
import SetTitle from "../Helpers/Title.js";
const randomVector = (r) => [r / 2 - Math.random() * r, r / 2 - Math.random() * r, r / 2 - Math.random() * r];
const randomEuler = () => [Math.random() * Math.PI, Math.random() * Math.PI, Math.random() * Math.PI];
const randomData = Array.from({ length: 500 }, (r = 100) => ({ random: Math.random(), position: randomVector(r), rotation: randomEuler() }));
let Buttons = [];
let ButtonsAlreadyTemplated = false;
function Box(props) {
const ref = useRef();
const distanceFromCamera = Math.random() * 30
const rotX = (Math.random() * 200 - 100)/300
const rotZ = (Math.random() * 200 - 100)/300
useFrame((state, delta) => {
ref.current.position.y -= 0.6 * delta
ref.current.rotation.x += rotX * delta
ref.current.rotation.z += rotZ * delta
if(ref.current.position.y < -30)
{
ref.current.position.y = 30;
}
});
return (
<mesh
{...props}
ref={ref}
scale={1}
position={[(Math.random() * 120) - 60, (Math.random() * 60) - 30, -distanceFromCamera]}
rotation={[Math.random() * 360, Math.random() * 360, Math.random() * 360]}>
<boxGeometry args={[1, 0.3, 0.5]} />
<meshStandardMaterial color={'grey'} />
</mesh>
)
}
function MakeButtons()
{
if(!ButtonsAlreadyTemplated)
@ -60,6 +33,31 @@ function DoButton(position)
console.log(position);
}
function Box({ random, ...props }){
const ref = useRef()
useFrame((state) => {
const t = state.clock.getElapsedTime() + random * 10000
ref.current.rotation.set(Math.cos(t / 4) / 2, Math.sin(t / 4) / 2, Math.cos(t / 1.5) / 2)
ref.current.position.y = Math.sin(t / 1.5) / 2
});
return (
<group {...props}>
<Instance ref={ref} />
</group>
)
}
function Camera({ ...props }){
const ref = useRef()
useFrame((state) => {
const t = state.clock.getElapsedTime() / 70
ref.current.rotation.set(t, 0, t)
});
return (
<PerspectiveCamera ref={ref} {...props} />
)
}
class Maintenance extends React.Component {
componentDidMount()
@ -76,9 +74,16 @@ class Maintenance extends React.Component {
<Canvas>
<ambientLight />
<pointLight position={[10, 10, 10]} />
{
[...Array(100)].map((e, i) => (<Box key={i}/>))
}
<Instances range={500}>
<boxGeometry args={[1, 0.3, 0.5]} />
<meshStandardMaterial color={'grey'} />
{
randomData.map((props, i) => (
<Box key={i} {...props} />
))
}
</Instances>
<Camera makeDefault />
</Canvas>
</div>
<div className="text-center mt-auto container">