This commit is contained in:
commit f1aa78ebe1
8 changed files with 119 additions and 241 deletions

View File

@ -1,5 +1,8 @@
FROM ci.svs-tech.pro/library/node:21 # FROM ci.svs-tech.pro/library/node:21
FROM debian:bookworm-slim
RUN apt update
RUN apt -y install nodejs npm
RUN apt -y install libpng-dev libimagequant-dev
RUN mkdir -p /src RUN mkdir -p /src
COPY package.json src/package.json COPY package.json src/package.json

View File

@ -206,3 +206,13 @@ button {
.fallback { .fallback {
@apply absolute bg-neutral-600 top-0 left-0 w-full h-full z-20 flex justify-center items-center text-black font-mono @apply absolute bg-neutral-600 top-0 left-0 w-full h-full z-20 flex justify-center items-center text-black font-mono
} }
.canvas-icons {
@apply absolute text-3xl top-0 left-0 flex flex-col;
a {
@apply cursor-pointer;
&.disabled {
@apply cursor-not-allowed opacity-50 pointer-events-none;
}
}
}

View File

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { FrontSide, RepeatWrapping } from 'three'; import { FrontSide, RepeatWrapping, Vector2 } from 'three';
import { TresCanvas, useTexture } from '@tresjs/core' import { TresCanvas, useTexture } from '@tresjs/core'
import { OrbitControls, useGLTF } from '@tresjs/cientos' import { OrbitControls, useGLTF } from '@tresjs/cientos'
@ -29,13 +29,17 @@ const groundMaterial = ref({
roughness: 0.7, roughness: 0.7,
metalness: 0, metalness: 0,
side: FrontSide, side: FrontSide,
precision: 'lowp',
}) })
const loadAll = async () => { const loadAll = async () => {
const { scene: light } = await useGLTF('/models_light/zabor_so_svetom.glb') const { scene: light } = await useGLTF('/models_light/zabor_so_svetom.glb')
pointLight.value = light.children[2] pointLight.value = light.children[2]
pointLight.value.color = '#f0dea9' pointLight.value.color = '#f0dea9'
pointLight.value.power = pointLight.value.intensity
pointLight.value.intensity = 0
pointLight.value.shadow.camera.near = 50 pointLight.value.shadow.camera.near = 50
pointLight.value.shadow.bias = -0.002 pointLight.value.shadow.bias = -0.002
pointLight.value.shadow.bias = -0.002
const pbrTexture = await useTexture({ const pbrTexture = await useTexture({
map: '/texture/Grass004_2K-PNG/Grass004_2K-PNG_Color.png', map: '/texture/Grass004_2K-PNG/Grass004_2K-PNG_Color.png',
@ -102,8 +106,7 @@ watch([section_count, extra_section], () => {
</TresMesh> </TresMesh>
<template v-if="pointLight"> <template v-if="pointLight">
<TresPointLight v-bind="pointLight" <TresPointLight v-bind="pointLight" cast-shadow />
:position="Object.values(pointLight.position).map((el: any) => el * 7)" cast-shadow />
</template> </template>
<TresAmbientLight color="rgb(191,231,255)" :intensity="5" /> <TresAmbientLight color="rgb(191,231,255)" :intensity="5" />

View File

@ -1,9 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { TresCanvas } from '@tresjs/core' import { TresCanvas } from '@tresjs/core'
import { OrbitControls, Environment, Html } from '@tresjs/cientos' import { OrbitControls } from '@tresjs/cientos'
import { Vector3 } from 'three';
const camera = ref()
const controls = ref()
const controlsState = reactive({ const controlsState = reactive({
minDistance: 1, minDistance: 2,
maxDistance: 10, maxDistance: 10,
enablePan: false, enablePan: false,
// enableZoom: false, // enableZoom: false,
@ -40,6 +43,14 @@ const loadAll = async () => {
secondary_light.value.shadow.bias = -0.01 secondary_light.value.shadow.bias = -0.01
// secondary_light.value.intensity = 50 // secondary_light.value.intensity = 50
} }
const changeDistance = (v = 1) => {
if (camera.value && controls.value) {
const distance = camera.value.position.distanceTo(new Vector3(0, 0, 0));
const r = distance + v
camera.value.position.normalize().multiplyScalar(r)
}
}
onMounted(() => { onMounted(() => {
loadAll() loadAll()
}) })
@ -53,8 +64,8 @@ onMounted(() => {
</div> </div>
</template> </template>
<TresCanvas height="600"> <TresCanvas height="600">
<TresPerspectiveCamera :position="[-7, 2, 4]" /> <TresPerspectiveCamera :position="[-7, 2, 4]" ref="camera" />
<OrbitControls v-bind="controlsState" make-default /> <OrbitControls v-bind="controlsState" ref="controls" make-default />
<Suspense> <Suspense>
<ModelDiagram /> <ModelDiagram />
</Suspense> </Suspense>
@ -68,10 +79,20 @@ onMounted(() => {
<TresAmbientLight :intensity="2" /> <TresAmbientLight :intensity="2" />
</TresCanvas> </TresCanvas>
</ClientOnly> </ClientOnly>
<span class="cursor-pointer absolute text-3xl top-0 left-0" @click="toggleExpState"> <div class="canvas-icons">
<href name="#mdi:checkbox-outline" v-if="explosion_state" /> <a href="#" @click="toggleExpState">
<href name="#mdi:square-outline" v-else /> <Icon name="mdi:checkbox-outline" v-if="explosion_state" />
</span> <Icon name="mdi:square-outline" v-else />
</a>
<a href="#" @click="changeDistance(-0.5)"
:class="[{ 'disabled': camera ? (camera.position.distanceTo(new Vector3(0, 0, 0)) <= controlsState.minDistance) : null }]">
<Icon name="mdi:plus-circle-outline" />
</a>
<a href="#" @click="changeDistance(0.5)"
:class="[{ 'disabled': camera ? (camera.position.distanceTo(new Vector3(0, 0, 0)) >= (controlsState.maxDistance)) : null }]">
<Icon name="mdi:minus-circle-outline" />
</a>
</div>
</div> </div>
</template> </template>

View File

@ -38,13 +38,14 @@ set_material(lamelle.value, getColorHexFromRal(lamelle_color.value));
const { seek, seekAll } = useSeek() const { seek, seekAll } = useSeek()
watch(lamelle_color, () => { watch(lamelle_color, () => {
set_material(lamelle.value, getColorHexFromRal(lamelle_color.value))
const items = seekAll(scene.value, 'name', "lamelles") const items = seekAll(scene.value, 'name', "lamelles")
items.forEach(element => { items.forEach(element => {
set_material(element, getColorHexFromRal(lamelle_color.value)) set_material(element, getColorHexFromRal(lamelle_color.value))
}); });
set_material(lamelle.value, getColorHexFromRal(lamelle_color.value));
}) })
watch(pillar_color, () => { watch(pillar_color, () => {
[top, fence, fastening].map((el: any) => { set_material(el.value, getColorHexFromRal(pillar_color.value)) })
const items = [ const items = [
...seekAll(scene.value, 'name', "pillar_one"), ...seekAll(scene.value, 'name', "pillar_one"),
...seekAll(scene.value, 'name', "pillar_two"), ...seekAll(scene.value, 'name', "pillar_two"),
@ -54,8 +55,7 @@ watch(pillar_color, () => {
] ]
items.forEach(element => { items.forEach(element => {
set_material(element, getColorHexFromRal(pillar_color.value)) set_material(element, getColorHexFromRal(pillar_color.value))
}); })
[top, fence, fastening].map((el: any) => { set_material(el.value, getColorHexFromRal(pillar_color.value)) })
}) })
watch([section_count, extra_section], () => { watch([section_count, extra_section], () => {
const base = seek(scene.value, 'name', 'base') const base = seek(scene.value, 'name', 'base')
@ -81,7 +81,7 @@ onMounted(async () => {
scene.value.environment = newEnvMap scene.value.environment = newEnvMap
scene.value.background = exrBackground scene.value.background = exrBackground
scene.value.backgroundRotation = new Euler(0, 5, 0) scene.value.backgroundRotation = new Euler(0, 5, 0)
scene.value.backgroundMapping = EquirectangularReflectionMapping // scene.value.background.mapping = EquirectangularReflectionMapping
result.renderTarget.texture.dispose(); result.renderTarget.texture.dispose();
}) })

View File

@ -43,7 +43,6 @@ export default defineNuxtConfig({
}, },
}, },
ssr: true, ssr: true,
devtools: { enabled: true },
modules: [ modules: [
'@nuxtjs/tailwindcss', '@nuxtjs/tailwindcss',
"@nuxt/image", "@nuxt/image",
@ -55,7 +54,7 @@ export default defineNuxtConfig({
], ],
runtimeConfig: { runtimeConfig: {
public: { public: {
apiBase: '/api', apiBase: 'https://mns.kustarshina.ru',
baseUrl: '', baseUrl: '',
}, },
}, },
@ -63,15 +62,11 @@ export default defineNuxtConfig({
'/index.html': { redirect: '/' }, '/index.html': { redirect: '/' },
'/index.php': { redirect: '/' }, '/index.php': { redirect: '/' },
}, },
nitro: { // nitro: {
compressPublicAssets: { // prerender: {
brotli: true, // crawlLinks: true
gzip: true // },
}, // },
prerender: {
crawlLinks: true
},
},
vite: { vite: {
assetsInclude: ['**/*.glb', '**/*.gltf'], assetsInclude: ['**/*.glb', '**/*.gltf'],
build: { build: {

257
package-lock.json generated
View File

@ -15,15 +15,13 @@
"@tresjs/cientos": "^3.9.0", "@tresjs/cientos": "^3.9.0",
"@tresjs/core": "^4.0.2", "@tresjs/core": "^4.0.2",
"@tresjs/nuxt": "^2.1.2", "@tresjs/nuxt": "^2.1.2",
"@types/marked": "^6.0.0",
"draco3d": "^1.5.7",
"imagemin": "^9.0.0", "imagemin": "^9.0.0",
"imagemin-pngquant": "^10.0.0", "imagemin-pngquant": "^10.0.0",
"marked": "^12.0.2", "marked": "^12.0.2",
"nuxt": "^3.11.2", "nuxt": "^3.11.2",
"nuxt-anchorscroll": "^1.0.3", "nuxt-anchorscroll": "^1.0.3",
"nuxt-icon": "^0.6.10",
"nuxt-svgo": "^4.0.1", "nuxt-svgo": "^4.0.1",
"ral-hex-converter": "^1.0.1",
"sass": "^1.77.4", "sass": "^1.77.4",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.3",
"three": "^0.165.0", "three": "^0.165.0",
@ -31,8 +29,7 @@
"vue-router": "^4.3.2" "vue-router": "^4.3.2"
}, },
"devDependencies": { "devDependencies": {
"@types/imagemin": "^9.0.0", "@types/imagemin": "^9.0.0"
"nuxt-icon": "^0.6.10"
} }
}, },
"node_modules/@alloc/quick-lru": { "node_modules/@alloc/quick-lru": {
@ -1651,41 +1648,6 @@
"node": "^16.14.0 || >=18.0.0" "node": "^16.14.0 || >=18.0.0"
} }
}, },
"node_modules/@npmcli/package-json/node_modules/glob": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
"integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@npmcli/package-json/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@npmcli/promise-spawn": { "node_modules/@npmcli/promise-spawn": {
"version": "7.0.2", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz",
@ -2707,6 +2669,25 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
}, },
"node_modules/@rollup/plugin-commonjs/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@rollup/plugin-inject": { "node_modules/@rollup/plugin-inject": {
"version": "5.0.5", "version": "5.0.5",
"resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
@ -4007,15 +3988,6 @@
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"peer": true "peer": true
}, },
"node_modules/@types/marked": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@types/marked/-/marked-6.0.0.tgz",
"integrity": "sha512-jmjpa4BwUsmhxcfsgUit/7A9KbrC48Q0q8KvnY107ogcjGgTFDlIL3RpihNpx2Mu1hM4mdFQjoVc4O6JoGKHsA==",
"deprecated": "This is a stub types definition. marked provides its own type definitions, so you do not need this installed.",
"dependencies": {
"marked": "*"
}
},
"node_modules/@types/minimist": { "node_modules/@types/minimist": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
@ -6009,27 +5981,6 @@
"node": ">= 14" "node": ">= 14"
} }
}, },
"node_modules/archiver-utils/node_modules/glob": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
"integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/archiver-utils/node_modules/is-stream": { "node_modules/archiver-utils/node_modules/is-stream": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@ -6041,20 +5992,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/archiver-utils/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/are-we-there-yet": { "node_modules/are-we-there-yet": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
@ -7102,27 +7039,6 @@
"node": "^16.14.0 || >=18.0.0" "node": "^16.14.0 || >=18.0.0"
} }
}, },
"node_modules/cacache/node_modules/glob": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
"integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/cacache/node_modules/lru-cache": { "node_modules/cacache/node_modules/lru-cache": {
"version": "10.2.2", "version": "10.2.2",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
@ -7131,20 +7047,6 @@
"node": "14 || >=16.14" "node": "14 || >=16.14"
} }
}, },
"node_modules/cacache/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/cache-content-type": { "node_modules/cache-content-type": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz",
@ -9354,19 +9256,22 @@
"optional": true "optional": true
}, },
"node_modules/glob": { "node_modules/glob": {
"version": "8.1.0", "version": "10.4.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"dependencies": { "dependencies": {
"fs.realpath": "^1.0.0", "foreground-child": "^3.1.0",
"inflight": "^1.0.4", "jackspeak": "^3.1.2",
"inherits": "2", "minimatch": "^9.0.4",
"minimatch": "^5.0.1", "minipass": "^7.1.2",
"once": "^1.3.0" "package-json-from-dist": "^1.0.0",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
}, },
"engines": { "engines": {
"node": ">=12" "node": ">=16 || 14 >=14.18"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
@ -9389,6 +9294,20 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"peer": true "peer": true
}, },
"node_modules/glob/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/global-directory": { "node_modules/global-directory": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz",
@ -11773,27 +11692,6 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0" "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
} }
}, },
"node_modules/node-gyp/node_modules/glob": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
"integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/node-gyp/node_modules/isexe": { "node_modules/node-gyp/node_modules/isexe": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
@ -11802,20 +11700,6 @@
"node": ">=16" "node": ">=16"
} }
}, },
"node_modules/node-gyp/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/node-gyp/node_modules/nopt": { "node_modules/node-gyp/node_modules/nopt": {
"version": "7.2.1", "version": "7.2.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
@ -12598,6 +12482,11 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/package-json-from-dist": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
"integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw=="
},
"node_modules/pacote": { "node_modules/pacote": {
"version": "18.0.6", "version": "18.0.6",
"resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz",
@ -13755,11 +13644,6 @@
"resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
"integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="
}, },
"node_modules/ral-hex-converter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ral-hex-converter/-/ral-hex-converter-1.0.1.tgz",
"integrity": "sha512-A0C1KzDyUzKRgLLVBmjFmPKnkkq7VvgL6MszNxkPuH6AlFfr6zdEYdWvDWw4tChWql7OAcOOgUvF8wVueopTFg=="
},
"node_modules/randombytes": { "node_modules/randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@ -15278,41 +15162,6 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/sucrase/node_modules/glob": {
"version": "10.4.1",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz",
"integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==",
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^3.1.2",
"minimatch": "^9.0.4",
"minipass": "^7.1.2",
"path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/sucrase/node_modules/minimatch": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/super-regex": { "node_modules/super-regex": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz",

View File

@ -18,23 +18,20 @@
"@tresjs/cientos": "^3.9.0", "@tresjs/cientos": "^3.9.0",
"@tresjs/core": "^4.0.2", "@tresjs/core": "^4.0.2",
"@tresjs/nuxt": "^2.1.2", "@tresjs/nuxt": "^2.1.2",
"@types/marked": "^6.0.0",
"draco3d": "^1.5.7",
"imagemin": "^9.0.0", "imagemin": "^9.0.0",
"imagemin-pngquant": "^10.0.0", "imagemin-pngquant": "^10.0.0",
"marked": "^12.0.2", "marked": "^12.0.2",
"nuxt": "^3.11.2", "nuxt": "^3.11.2",
"nuxt-anchorscroll": "^1.0.3", "nuxt-anchorscroll": "^1.0.3",
"nuxt-icon": "^0.6.10",
"nuxt-svgo": "^4.0.1", "nuxt-svgo": "^4.0.1",
"ral-hex-converter": "^1.0.1",
"sass": "^1.77.4", "sass": "^1.77.4",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.3",
"three": "^0.165.0", "three": "^0.165.0",
"vue": "^3.4.27", "vue": "^3.4.27",
"vue-router": "^4.3.2", "vue-router": "^4.3.2"
"@types/imagemin": "^9.0.0",
"nuxt-icon": "^0.6.10"
}, },
"devDependencies": { "devDependencies": {
"@types/imagemin": "^9.0.0"
} }
} }