bx-865-apps #1

Merged
ksenia_mikhailova merged 140 commits from bx-865-apps into main 2024-06-27 15:03:27 +03:00
45 changed files with 1923 additions and 15 deletions
Showing only changes of commit 0b4de485ea - Show all commits

View File

@ -7,9 +7,11 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
copy: typeof import('./src/components/Floorplan copy.vue')['default']
'[id]': typeof import('./src/components/Promo/[id].vue')['default']
copy: typeof import('./src/components/Promo/main copy.vue')['default']
Floorplan: typeof import('./src/components/Floorplan/index.vue')['default']
FloorplanItem: typeof import('./src/components/Floorplan/FloorplanItem.vue')['default']
Gallery: typeof import('./src/components/Promo/gallery.vue')['default']
Game: typeof import('./src/components/Game.vue')['default']
Home: typeof import('./src/components/Home.vue')['default']
IMdiFile: typeof import('~icons/mdi/file')['default']
@ -17,12 +19,17 @@ declare module 'vue' {
IMdiHexagonIpOutline: typeof import('~icons/mdi/hexagon-ip-outline')['default']
IMdiHexagonOutline: typeof import('~icons/mdi/hexagon-outline')['default']
IMdiHome: typeof import('~icons/mdi/home')['default']
IMdiMonitorScreenshot: typeof import('~icons/mdi/monitor-screenshot')['default']
IMdiShop: typeof import('~icons/mdi/shop')['default']
IMdiVideo3d: typeof import('~icons/mdi/video3d')['default']
Item: typeof import('./src/components/Floorplan/item.vue')['default']
Main: typeof import('./src/components/Promo/main.vue')['default']
Projects: typeof import('./src/components/Projects.vue')['default']
Promo: typeof import('./src/components/Promo/index.vue')['default']
PromoItem: typeof import('./src/components/Promo/promoItem.vue')['default']
RandomIcon: typeof import('./src/components/RandomIcon.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Sub: typeof import('./src/components/Promo/sub.vue')['default']
}
}

1141
front/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -10,18 +10,25 @@
},
"dependencies": {
"@fireworks-js/vue": "^2.10.7",
"@tresjs/cientos": "^3.9.0",
"@tresjs/core": "^3.9.0",
"@vueuse/components": "^10.9.0",
"@vueuse/core": "^10.9.0",
"d3": "^7.9.0",
"pathfinding": "^0.4.18",
"pinia": "^2.1.7",
"reset-css": "^5.0.2",
"three": "^0.164.1",
"vite-svg-loader": "^5.1.0",
"vue": "^3.4.21",
"vue-3d-model": "^2.0.0-alpha.4",
"vue-router": "^4.3.2"
},
"devDependencies": {
"@iconify-json/mdi": "^1.1.66",
"@types/d3": "^7.4.3",
"@types/pathfinding": "^0.0.9",
"@types/three": "^0.164.1",
"@vitejs/plugin-vue": "^5.0.4",
"@vue/compiler-sfc": "^3.2.31",
"sass": "^1.75.0",

View File

@ -8,8 +8,9 @@ import { RouterLink } from 'vue-router';
<div class="nav">
<RouterLink to="/projects"><i-mdi-shop /></RouterLink>
<RouterLink to="/game"><i-mdi-hexagon-outline /></RouterLink>
<RouterLink to="/promo"><i-mdi-monitor-screenshot /></RouterLink>
<span style="flex-grow:1"></span>
<RouterLink to="/" style="align-self: flex-end;"><i-mdi-home /></RouterLink>
<RouterLink to="/"><i-mdi-home /></RouterLink>
</div>
<RouterView />
</template>

View File

@ -21,7 +21,9 @@
box-shadow: 0 0 4px rgba(#000, 0.5);
z-index: 100;
}
body {
padding-left: 2.5rem;
}
a[href] {

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

@ -0,0 +1,167 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1656.000000pt" height="1773.000000pt" viewBox="0 0 1656.000000 1773.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1773.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M8965 17604 c-11 -3 -56 -12 -100 -20 -181 -35 -356 -107 -525 -219
-169 -112 -223 -170 -707 -760 -72 -88 -267 -324 -433 -525 -336 -406 -779
-943 -970 -1175 -69 -84 -186 -225 -260 -315 -74 -89 -148 -179 -165 -200 -16
-21 -78 -96 -137 -166 -134 -163 -377 -457 -568 -689 -81 -99 -260 -315 -397
-481 -136 -165 -300 -363 -363 -440 -134 -163 -287 -349 -495 -600 -83 -99
-188 -227 -235 -284 -47 -57 -145 -176 -218 -264 -73 -89 -159 -192 -191 -231
-126 -153 -451 -547 -552 -670 -59 -71 -165 -200 -236 -285 -70 -86 -189 -229
-263 -320 -74 -90 -204 -247 -288 -349 -85 -102 -202 -244 -261 -316 -186
-226 -491 -595 -611 -740 -63 -77 -156 -189 -205 -249 -222 -269 -260 -315
-314 -381 -177 -217 -276 -427 -325 -694 -24 -127 -22 -395 5 -524 62 -304
186 -536 403 -753 192 -192 425 -326 666 -382 25 -6 70 -17 100 -24 87 -21
444 -17 545 5 192 43 386 125 536 228 169 116 212 163 739 804 69 84 186 225
260 315 74 90 191 231 260 315 170 207 446 542 631 765 84 102 203 245 263
319 61 74 169 204 240 290 71 86 206 251 301 366 95 116 235 284 310 375 233
282 549 664 844 1024 107 130 200 236 206 236 8 0 14 -47 18 -157 4 -87 11
-241 17 -343 5 -102 17 -309 25 -460 15 -267 25 -444 45 -830 5 -102 14 -268
20 -370 5 -102 14 -273 20 -380 5 -107 17 -316 25 -465 16 -281 28 -515 46
-920 25 -562 26 -579 44 -630 40 -113 118 -202 221 -249 139 -65 169 -83 209
-128 76 -85 115 -192 130 -363 4 -46 1 -96 -9 -147 -28 -145 -73 -212 -185
-277 -195 -115 -281 -214 -362 -421 -16 -43 -17 -179 -1 -285 7 -44 23 -165
37 -270 14 -104 30 -221 35 -260 5 -38 14 -108 20 -155 6 -47 15 -116 20 -155
10 -72 52 -387 70 -530 30 -231 73 -378 176 -603 13 -29 24 -54 24 -56 0 -2
21 -48 46 -102 25 -55 52 -112 59 -129 7 -16 34 -73 58 -125 24 -52 53 -115
65 -140 134 -294 573 -1170 586 -1169 6 0 37 53 68 117 169 345 365 756 441
922 14 30 44 96 67 145 173 372 328 739 356 844 22 85 41 186 54 291 6 52 15
129 20 170 6 41 21 170 35 285 24 198 33 276 55 455 5 41 14 116 20 165 6 50
22 178 35 285 22 178 23 201 11 261 -40 186 -167 350 -353 454 -99 56 -139 93
-172 159 -51 104 -64 239 -36 396 18 106 64 200 125 260 46 45 55 51 185 111
89 41 161 113 204 202 36 75 43 127 61 422 6 99 15 252 21 340 42 687 47 778
84 1510 9 176 20 329 24 339 7 19 82 40 346 97 88 19 128 28 210 48 104 25
480 111 525 121 19 4 107 24 195 45 159 37 184 43 280 64 28 6 97 22 155 36
58 14 125 30 150 35 25 5 124 28 220 50 281 66 482 112 520 120 19 4 107 24
195 45 164 38 194 45 280 64 28 6 118 26 200 46 83 19 229 53 325 75 96 22
243 56 325 75 83 20 173 40 200 46 96 21 121 27 235 54 63 15 135 32 160 37
25 6 61 13 80 18 56 12 437 100 525 121 44 11 98 23 120 28 22 5 112 25 200
46 88 21 180 42 205 47 92 20 119 26 275 63 88 21 176 41 195 45 123 28 285
85 368 132 17 10 49 27 69 39 249 141 491 442 587 729 54 165 66 246 66 465 0
159 -4 217 -19 285 -80 358 -282 653 -586 855 -118 78 -185 111 -330 164 -224
81 -526 92 -797 27 -78 -19 -222 -52 -308 -72 -36 -8 -83 -19 -105 -24 -22 -5
-83 -19 -135 -31 -52 -12 -160 -37 -240 -55 -174 -41 -200 -48 -310 -73 -47
-10 -137 -31 -200 -45 -63 -15 -133 -31 -155 -36 -22 -5 -78 -18 -125 -29
-174 -41 -267 -63 -330 -77 -91 -21 -149 -34 -195 -45 -181 -42 -454 -105
-565 -130 -74 -17 -182 -42 -240 -56 -368 -85 -715 -166 -750 -173 -68 -15
-221 -50 -480 -111 -47 -11 -103 -24 -125 -29 -22 -5 -80 -19 -130 -30 -87
-20 -177 -41 -260 -60 -22 -5 -78 -18 -125 -29 -317 -74 -449 -105 -480 -111
-19 -4 -107 -24 -195 -45 -88 -21 -176 -41 -195 -45 -19 -4 -165 -38 -325 -75
-159 -37 -306 -71 -325 -75 -49 -11 -204 -46 -345 -79 -66 -16 -183 -43 -260
-61 -77 -18 -187 -43 -245 -56 -128 -30 -166 -39 -250 -58 -63 -14 -156 -36
-330 -77 -47 -11 -103 -24 -125 -29 -22 -5 -64 -15 -92 -21 -29 -7 -55 -10
-59 -7 -3 4 6 19 19 35 24 27 139 166 327 394 47 57 130 158 185 224 55 67
181 220 280 340 99 120 245 298 325 394 80 97 196 237 257 311 61 74 180 219
265 321 84 102 214 260 288 350 74 90 191 231 260 314 69 83 195 236 280 340
85 104 193 235 240 291 47 55 132 159 190 229 98 120 175 213 470 570 200 242
252 308 296 375 353 548 301 1254 -130 1750 -199 228 -482 394 -796 465 -73
17 -435 31 -485 19z m470 -506 c187 -68 325 -156 440 -280 77 -83 128 -165
186 -298 49 -115 69 -219 69 -365 -1 -137 -18 -239 -59 -336 -62 -149 -118
-232 -321 -474 -32 -39 -285 -345 -478 -579 -226 -275 -299 -363 -442 -535
-85 -102 -164 -198 -175 -212 -11 -15 -47 -59 -80 -99 -33 -39 -76 -91 -95
-115 -19 -23 -118 -142 -220 -265 -102 -122 -198 -240 -215 -261 -16 -21 -100
-122 -185 -225 -85 -103 -190 -230 -233 -283 -43 -53 -105 -127 -138 -166 -73
-87 -283 -342 -454 -550 -71 -87 -166 -201 -210 -254 -44 -53 -92 -110 -105
-127 -14 -18 -97 -118 -184 -224 -208 -251 -286 -357 -286 -386 0 -18 -18 -37
-72 -78 -40 -29 -94 -80 -119 -112 -26 -32 -97 -120 -158 -194 -62 -74 -157
-189 -211 -255 -54 -66 -159 -192 -232 -281 -73 -88 -169 -205 -213 -259 -44
-54 -98 -119 -120 -145 -22 -26 -65 -77 -95 -114 -30 -38 -104 -127 -164 -200
-60 -72 -133 -160 -162 -196 -30 -36 -93 -113 -141 -171 -208 -251 -364 -440
-440 -534 -46 -55 -107 -129 -137 -165 -30 -36 -99 -119 -153 -185 -55 -66
-144 -174 -198 -240 -55 -65 -111 -134 -125 -151 -14 -17 -52 -64 -85 -104
-33 -39 -76 -91 -95 -115 -19 -23 -116 -140 -215 -260 -99 -120 -196 -237
-215 -261 -19 -23 -62 -75 -95 -114 -33 -40 -73 -90 -90 -110 -185 -231 -401
-483 -477 -556 -102 -96 -218 -165 -368 -217 -145 -51 -433 -53 -575 -5 -81
27 -260 122 -315 166 -63 51 -143 133 -189 195 -50 67 -123 211 -155 309 -24
71 -26 89 -26 266 0 217 8 257 87 419 54 112 98 173 273 384 234 281 324 391
355 430 33 42 239 291 405 490 58 70 130 157 160 194 30 37 114 138 185 224
72 87 189 229 260 316 72 87 168 204 215 260 47 56 110 133 141 171 32 38 106
128 165 200 60 73 134 162 164 199 30 38 73 89 95 115 22 26 87 104 145 175
58 71 154 187 213 259 59 72 153 185 207 251 54 66 148 179 207 251 59 72 155
188 213 259 58 71 123 149 145 175 22 26 103 123 179 216 208 252 278 337 479
580 100 121 241 292 312 379 72 86 189 228 260 315 72 86 189 228 260 315 72
87 168 204 215 260 47 56 144 173 215 260 191 233 289 351 353 429 31 38 73
88 92 111 19 23 60 73 91 111 32 38 107 130 168 204 62 74 157 189 211 255 54
66 159 192 232 281 73 88 169 205 213 259 44 54 100 122 125 151 25 28 68 80
95 114 47 59 274 334 450 545 44 53 93 113 108 133 57 75 208 231 269 277 65
49 160 100 251 136 113 45 143 49 347 46 181 -3 200 -5 265 -29z m5801 -4819
c63 -12 143 -42 239 -91 181 -92 313 -230 403 -418 71 -147 72 -153 72 -379 0
-194 -1 -207 -26 -275 -14 -39 -49 -116 -77 -170 -44 -84 -68 -116 -152 -200
-108 -109 -169 -149 -327 -212 -83 -33 -213 -70 -333 -96 -76 -15 -110 -23
-235 -53 -133 -31 -473 -109 -675 -154 -77 -18 -178 -41 -225 -52 -47 -11
-103 -24 -125 -29 -22 -5 -80 -19 -130 -30 -98 -23 -162 -38 -300 -69 -49 -12
-178 -41 -285 -66 -107 -25 -256 -59 -330 -76 -74 -17 -182 -42 -240 -55 -58
-14 -123 -29 -145 -34 -80 -18 -173 -40 -285 -66 -63 -15 -131 -30 -150 -34
-100 -22 -420 -95 -525 -120 -66 -15 -183 -43 -260 -60 -121 -28 -235 -54
-390 -90 -22 -5 -80 -19 -130 -30 -49 -11 -157 -36 -240 -55 -82 -20 -170 -40
-195 -46 -40 -8 -102 -23 -370 -85 -85 -20 -146 -33 -195 -44 -43 -10 -119
-27 -260 -60 -49 -11 -110 -25 -135 -31 -25 -6 -61 -14 -80 -19 -19 -5 -55
-14 -80 -20 -113 -28 -254 -177 -279 -295 -7 -33 -17 -73 -23 -90 -10 -32 -19
-166 -43 -625 -23 -461 -35 -663 -45 -825 -5 -82 -14 -229 -20 -325 -6 -96
-15 -240 -20 -320 -5 -80 -12 -195 -16 -256 l-6 -111 -52 -23 c-56 -25 -170
-104 -230 -159 -48 -45 -151 -182 -182 -242 -12 -25 -35 -93 -49 -150 -14 -57
-30 -120 -35 -139 -34 -138 -37 -295 -7 -410 8 -30 22 -91 32 -135 27 -119 89
-234 184 -339 34 -37 153 -125 216 -160 62 -35 100 -70 118 -110 13 -27 12
-52 -8 -211 -13 -99 -28 -223 -34 -275 -7 -52 -16 -129 -21 -170 -5 -41 -14
-115 -20 -165 -6 -49 -15 -124 -20 -165 -6 -41 -21 -167 -35 -280 -13 -113
-30 -248 -36 -300 -6 -52 -18 -115 -26 -139 -14 -44 -86 -224 -122 -305 -10
-22 -35 -79 -56 -126 -21 -47 -46 -104 -56 -127 -11 -23 -19 -44 -19 -46 0 -3
-24 -56 -54 -118 -30 -63 -79 -168 -110 -234 -30 -66 -61 -121 -68 -123 -7 -1
-26 25 -42 60 -16 35 -58 124 -94 198 -168 352 -351 768 -371 845 -6 22 -22
130 -36 240 -14 110 -30 229 -35 265 -5 36 -14 103 -20 150 -6 47 -15 117 -20
155 -5 39 -14 108 -20 155 -6 47 -15 114 -20 150 -5 36 -16 119 -25 185 -8 66
-19 149 -25 185 -24 166 -23 172 8 216 17 23 51 53 78 69 134 78 217 149 286
242 85 115 100 147 138 306 46 198 52 245 39 350 -14 126 -83 399 -114 456
-62 112 -153 219 -240 283 -90 65 -148 100 -196 117 -25 9 -29 15 -29 50 0 22
-4 118 -10 213 -5 95 -14 288 -20 428 -6 140 -15 329 -20 420 -11 185 -26 465
-40 735 -11 205 -24 456 -60 1120 -5 105 -16 312 -25 460 -27 494 -38 699 -39
769 l-1 70 155 37 c85 21 178 43 205 49 79 17 122 27 255 59 69 16 159 37 200
46 41 9 111 25 155 35 44 10 109 26 145 34 96 22 239 56 285 66 22 5 81 19
130 30 50 11 158 36 240 55 83 20 170 40 195 46 40 8 102 23 370 85 36 8 85
19 110 25 25 6 61 14 80 19 19 4 107 25 195 45 88 20 198 45 245 56 47 11 103
24 125 29 22 5 110 26 195 46 85 20 193 45 240 55 130 30 237 55 385 89 50 11
110 25 135 31 67 15 109 25 275 64 83 19 191 44 240 56 248 56 459 105 560
129 44 10 123 28 175 40 52 12 142 33 200 46 58 14 124 29 148 34 23 6 61 14
85 20 44 10 292 67 437 101 47 11 103 24 125 29 48 11 139 32 260 60 50 11
108 25 130 30 22 5 78 18 125 29 206 48 395 92 525 121 77 18 203 47 280 65
160 37 229 52 300 64 73 13 302 13 371 0z"/>
<path d="M11238 2796 c-42 -15 -48 -20 -430 -339 -329 -275 -333 -279 -333
-402 0 -76 2 -83 35 -130 49 -68 113 -100 200 -100 43 1 77 7 100 19 31 17
346 275 603 494 117 100 141 139 141 232 0 47 -6 77 -22 106 -55 107 -184 159
-294 120z"/>
<path d="M4330 2746 c-112 -57 -160 -196 -106 -312 24 -51 50 -76 221 -214 38
-30 85 -69 104 -86 140 -120 383 -310 416 -325 165 -76 364 85 326 263 -7 28
-21 67 -32 85 -26 41 -667 568 -724 594 -58 27 -148 25 -205 -5z"/>
<path d="M9833 1752 c-17 -9 -188 -147 -379 -307 -191 -159 -390 -326 -444
-370 -399 -329 -405 -336 -405 -455 0 -80 20 -125 80 -178 80 -70 211 -76 295
-14 19 15 172 141 340 281 168 140 400 333 515 430 116 96 229 193 253 215 81
76 106 157 77 249 -35 112 -113 167 -232 167 -44 -1 -79 -7 -100 -18z"/>
<path d="M12755 1754 c-52 -13 -674 -270 -702 -290 -94 -70 -107 -206 -27
-294 35 -39 103 -70 153 -70 21 0 277 98 456 174 17 7 71 30 120 51 146 61
149 62 176 92 88 93 75 237 -26 304 -40 27 -111 42 -150 33z"/>
<path d="M5585 1729 c-154 -77 -183 -272 -57 -391 20 -19 233 -195 472 -390
239 -195 470 -383 513 -419 43 -35 105 -83 138 -107 59 -41 62 -42 143 -42 74
0 87 3 129 29 115 74 146 222 68 333 -29 42 -1145 959 -1203 989 -51 26 -149
25 -203 -2z"/>
<path d="M2936 1696 c-106 -39 -160 -135 -134 -240 22 -87 55 -110 303 -210
121 -48 229 -91 240 -96 186 -76 228 -90 272 -90 68 0 130 34 168 90 56 85 33
212 -48 267 -18 12 -147 67 -287 123 -140 56 -264 105 -275 110 -11 4 -43 17
-71 29 -71 29 -122 34 -168 17z"/>
<path d="M11370 1271 c-22 -7 -524 -211 -605 -246 -16 -7 -82 -34 -145 -60
-63 -26 -133 -55 -155 -65 -22 -9 -89 -36 -148 -60 -128 -52 -169 -86 -193
-164 -15 -46 -15 -61 -5 -99 25 -87 112 -157 194 -157 35 0 140 37 277 97 75
33 106 46 455 188 572 233 540 215 571 322 14 48 14 58 0 107 -31 105 -144
168 -246 137z"/>
<path d="M4304 1233 c-32 -6 -105 -72 -120 -110 -34 -79 -7 -187 58 -237 18
-13 137 -65 263 -115 127 -50 241 -96 255 -102 34 -16 28 -13 369 -148 380
-151 411 -155 504 -52 81 89 53 245 -53 301 -19 10 -138 60 -265 110 -126 50
-239 95 -250 100 -11 5 -162 65 -335 134 -319 127 -346 135 -426 119z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

View File

@ -0,0 +1,79 @@
<script setup lang="ts">
import * as d3 from "d3";
import { onMounted } from "vue";
const componentFiles = import.meta.glob('../../assets/promo/bg_*.jpg', { eager: true })
const componentFilesEntries = Object.entries(componentFiles);
onMounted(() => {
const width = 1920
const height = 1080
const radius = 10
const svg = d3.select('#gallery').append("svg")
.attr("viewBox", [0, 0, width, height])
.attr("stroke-width", 2);
var defs = svg.append('svg:defs');
componentFilesEntries.forEach((element: any, i) => {
const src = element[1].default
defs.append("svg:pattern")
.attr("id", `img${i}`).attr("width", 1920).attr("height", 1080).attr("patternUnits", "userSpaceOnUse").attr("preserveAspectRatio", "none")
.append("svg:image").attr("xlink:href", src).attr("width", 1920).attr("height", 1080).attr("x", 0).attr("y", 0);
});
const circles = d3.range(20).map(() => ({
x: Math.random() * (width - radius * 2) + radius,
y: Math.random() * (height - radius * 2) + radius,
}));
if (document.querySelector('.pin')) {
const rect = (document.querySelector('.pin') as HTMLElement).getBoundingClientRect()
circles[circles.length - 1] = { x: rect.x + rect.width, y: rect.y + rect.height }
circles[circles.length - 2] = { x: rect.x, y: rect.y }
}
let voronoi = d3.Delaunay
.from(circles, d => d.x, d => d.y)
.voronoi([0, 0, width, height]);
const circle = svg.append("g")
.selectAll("circle")
.data(circles)
.join("circle")
.attr("cx", d => d.x)
.attr("cy", d => d.y)
.attr("r", 0)
.attr("fill", 'none');
const mesh = svg.append("path")
.attr("fill", "none")
.attr("stroke", "#ccc")
.attr("stroke-width", 0)
.attr("d", voronoi.render());
const cell = svg.append("g")
.attr("fill", "none")
.attr("pointer-events", "all")
.selectAll("path")
.data(circles)
.join("path")
.attr("d", (d, i) => voronoi.renderCell(i))
.attr('fill', (d, i) => `url(#img${i})`)
.call(d3.drag()
.on("start", (event, d) => circle.filter(p => p === d).raise().attr("stroke", "black"))
.on("drag", (event, d) => (d.x = event.x, d.y = event.y))
.on("end", (event, d) => circle.filter(p => p === d).attr("stroke", null))
.on("start.update drag.update end.update", update))
function update() {
voronoi = d3.Delaunay.from(circles, d => d.x, d => d.y).voronoi([0, 0, width, height]);
circle.attr("cx", d => d.x).attr("cy", d => d.y);
cell.attr("d", (d, i) => voronoi.renderCell(i));
mesh.attr("d", voronoi.render());
}
})
</script>
<template>
<div id="gallery"></div>
</template>

View File

@ -0,0 +1,54 @@
<script setup lang="ts">
import { useRouter } from "vue-router";
import KLogo from "../../assets/promo/logo.svg";
import Gallery from "./gallery.vue";
const router = useRouter()
const startColor = `hsl(${(Math.random() * 360).toFixed()}, 100%, 50%)`
const endColor = `hsl(${(Math.random() * 360).toFixed()}, 100%, 50%)`
</script>
<template>
<div class="main">
<div class="pin" @click="router.push('/promo/main')">
<KLogo />
</div>
<Gallery />
</div>
</template>
<style scoped lang="scss">
* {
--logo-start-color: v-bind(startColor);
--logo-end-color: v-bind(endColor);
}
.main {
width: 100vw;
height: 100vh;
background-image: url(../../assets/promo/map.png);
background-position: 50% 100%;
background-repeat: no-repeat;
}
.pin {
border-radius: 0.25rem;
background-image: linear-gradient(var(--logo-start-color), var(--logo-end-color));
position: absolute;
bottom: 300px;
left: calc(50% - 80px);
color: white;
svg {
max-width: 100%;
max-height: 100%;
color: #fff;
fill: currentColor;
}
width: 2rem;
height: 2rem;
padding: 0.25rem;
}
</style>

View File

@ -0,0 +1,12 @@
<template>
<div class="container">
Это внутренняя страница
<RouterLink to="/promo/main">Назад</RouterLink>
</div>
</template>
<style scoped>
.container {
font-size: 2rem;
}
</style>

View File

@ -0,0 +1,26 @@
<script setup lang="ts">
import { useRouter } from 'vue-router';
import { FBXModel, MapControls } from '@tresjs/cientos'
import { TresCanvas } from '@tresjs/core';
import model from '../../assets/promo/models/sea_fbx/source/Stronghold.fbx'
const router = useRouter()
</script>
<template>
<TresCanvas window-size>
<TresPerspectiveCamera :position="[200, 400, 800]" />
<MapControls :max-distance="900" :min-distance="300" :max-polar-angle="(Math.PI / 2) - 0.2" />
<Suspense>
<FBXModel :path="model" />
<template #fallback>
Идет загрузка модели
</template>
</Suspense>
<TresMesh ref="boxRef" :scale="1" :position-x="200" :position-y="200" @click="router.push('/promo/main/item/1')">
<TresBoxGeometry :args="[100, 100, 100]" />
<TresMeshNormalMaterial />
</TresMesh>
<TresDirectionalLight :position="[-4, 4, 4]" :intensity="10" cast-shadow />
<TresAmbientLight :intensity="5" />
</TresCanvas>
</template>

View File

@ -10,6 +10,9 @@ import Projects from './components/Projects.vue'
import Game from './components/Game.vue'
import Floorplan from './components/Floorplan/index.vue'
import FloorplanItem from './components/Floorplan/item.vue'
import Promo from './components/Promo/index.vue'
import PromoMain from './components/Promo/main.vue'
import PromoItem from './components/Promo/item.vue'
const routes = [
{ path: '/', component: Home },
@ -17,9 +20,9 @@ const routes = [
{ path: '/game', component: Game },
{ path: '/floorplan', component: Floorplan },
{ path: '/floorplan/:id', component: FloorplanItem },
{ path: '/promo', component: Floorplan },
{ path: '/promo/:page', component: FloorplanItem },
{ path: '/promo/:page/:id', component: FloorplanItem },
{ path: '/promo', component: Promo },
{ path: '/promo/:page', component: PromoMain },
{ path: '/promo/:page/item/:name', component: PromoItem },
]
const router = createRouter({

View File

@ -3,16 +3,22 @@ import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import IconsResolver from 'unplugin-icons/resolver'
import Icons from 'unplugin-icons/vite'
import svgLoader from 'vite-svg-loader';
import { templateCompilerOptions } from '@tresjs/core'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
vue({
...templateCompilerOptions
}),
Components({
resolvers: [
IconsResolver(),
],
}),
Icons()
Icons(),
svgLoader(),
],
assetsInclude: ['**/*.fbx'],
})

408
package-lock.json generated Normal file
View File

@ -0,0 +1,408 @@
{
"name": "interactive-table",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"@tresjs/core": "^3.9.0",
"three": "^0.164.1"
},
"devDependencies": {
"@types/three": "^0.164.1"
}
},
"node_modules/@alvarosabu/utils": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/@alvarosabu/utils/-/utils-3.2.0.tgz",
"integrity": "sha512-aoGWRfaQjOo9TUwrBA6W0zwTHktgrXy69GIFNILT4gHsqscw6+X8P6uoSlZVQFr887SPm8x3aDin5EBVq8y4pw=="
},
"node_modules/@babel/parser": {
"version": "7.24.6",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz",
"integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==",
"peer": true,
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"peer": true
},
"node_modules/@tresjs/core": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/@tresjs/core/-/core-3.9.0.tgz",
"integrity": "sha512-6el70oXSduTvSA3XCI8/rQV2GzcgCLceZKA443CTU/MBPmRDULJ12q/UYl18Ij4CJ68rTqgVi0Da+WNMrs784A==",
"dependencies": {
"@alvarosabu/utils": "^3.1.1",
"@vue/devtools-api": "^6.6.1",
"@vueuse/core": "^10.7.0"
},
"peerDependencies": {
"three": ">=0.133",
"vue": ">=3.3"
}
},
"node_modules/@tweenjs/tween.js": {
"version": "23.1.2",
"resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.2.tgz",
"integrity": "sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==",
"dev": true
},
"node_modules/@types/stats.js": {
"version": "0.17.3",
"resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz",
"integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==",
"dev": true
},
"node_modules/@types/three": {
"version": "0.164.1",
"resolved": "https://registry.npmjs.org/@types/three/-/three-0.164.1.tgz",
"integrity": "sha512-dR/trWDhyaNqJV38rl1TonlCA9DpnX7OPYDWD81bmBGn/+uEc3+zNalFxQcV4FlPTeDBhCY3SFWKvK6EJwL88g==",
"dev": true,
"dependencies": {
"@tweenjs/tween.js": "~23.1.1",
"@types/stats.js": "*",
"@types/webxr": "*",
"fflate": "~0.8.2",
"meshoptimizer": "~0.18.1"
}
},
"node_modules/@types/web-bluetooth": {
"version": "0.0.20",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
"integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="
},
"node_modules/@types/webxr": {
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.16.tgz",
"integrity": "sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==",
"dev": true
},
"node_modules/@vue/compiler-core": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
"integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
"peer": true,
"dependencies": {
"@babel/parser": "^7.24.4",
"@vue/shared": "3.4.27",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
"integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.4.27",
"@vue/shared": "3.4.27"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
"integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
"peer": true,
"dependencies": {
"@babel/parser": "^7.24.4",
"@vue/compiler-core": "3.4.27",
"@vue/compiler-dom": "3.4.27",
"@vue/compiler-ssr": "3.4.27",
"@vue/shared": "3.4.27",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.10",
"postcss": "^8.4.38",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
"integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.4.27",
"@vue/shared": "3.4.27"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
"integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
},
"node_modules/@vue/reactivity": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz",
"integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
"peer": true,
"dependencies": {
"@vue/shared": "3.4.27"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
"integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.4.27",
"@vue/shared": "3.4.27"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
"integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
"peer": true,
"dependencies": {
"@vue/runtime-core": "3.4.27",
"@vue/shared": "3.4.27",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
"integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.4.27",
"@vue/shared": "3.4.27"
},
"peerDependencies": {
"vue": "3.4.27"
}
},
"node_modules/@vue/shared": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
"integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
"peer": true
},
"node_modules/@vueuse/core": {
"version": "10.9.0",
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz",
"integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==",
"dependencies": {
"@types/web-bluetooth": "^0.0.20",
"@vueuse/metadata": "10.9.0",
"@vueuse/shared": "10.9.0",
"vue-demi": ">=0.14.7"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.14.7",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/@vueuse/metadata": {
"version": "10.9.0",
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz",
"integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==",
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared": {
"version": "10.9.0",
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz",
"integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==",
"dependencies": {
"vue-demi": ">=0.14.7"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@vueuse/shared/node_modules/vue-demi": {
"version": "0.14.7",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"peer": true
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"peer": true
},
"node_modules/fflate": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
"dev": true
},
"node_modules/magic-string": {
"version": "0.30.10",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
"integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
}
},
"node_modules/meshoptimizer": {
"version": "0.18.1",
"resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
"integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==",
"dev": true
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/picocolors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
"peer": true
},
"node_modules/postcss": {
"version": "8.4.38",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"peer": true,
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.2.0"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/source-map-js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/three": {
"version": "0.164.1",
"resolved": "https://registry.npmjs.org/three/-/three-0.164.1.tgz",
"integrity": "sha512-iC/hUBbl1vzFny7f5GtqzVXYjMJKaTPxiCxXfrvVdBi1Sf+jhd1CAkitiFwC7mIBFCo3MrDLJG97yisoaWig0w=="
},
"node_modules/vue": {
"version": "3.4.27",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz",
"integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.4.27",
"@vue/compiler-sfc": "3.4.27",
"@vue/runtime-dom": "3.4.27",
"@vue/server-renderer": "3.4.27",
"@vue/shared": "3.4.27"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
}
}
}

9
package.json Normal file
View File

@ -0,0 +1,9 @@
{
"dependencies": {
"@tresjs/core": "^3.9.0",
"three": "^0.164.1"
},
"devDependencies": {
"@types/three": "^0.164.1"
}
}