Browse Source

chore: deps update and vueuse deprecated fixes

alvarosabu 2 năm trước cách đây
mục cha
commit
6cd180d12e

+ 18 - 18
package.json

@@ -58,46 +58,46 @@
   },
   "dependencies": {
     "@alvarosabu/utils": "^2.3.0",
-    "@vueuse/core": "^9.13.0"
+    "@vueuse/core": "^10.1.2"
   },
   "devDependencies": {
     "@alvarosabu/prettier-config": "^1.3.0",
     "@huntersofbook/plausible-vue": "^1.0.0",
     "@release-it/conventional-changelog": "^5.1.1",
     "@stackblitz/sdk": "^1.9.0",
-    "@tresjs/cientos": "2.0.0-beta.4",
+    "@tresjs/cientos": "2.0.0-beta.6",
     "@tresjs/core": "2.0.0-beta.11",
-    "@types/three": "latest",
-    "@typescript-eslint/eslint-plugin": "^5.58.0",
-    "@typescript-eslint/parser": "^5.58.0",
-    "@vitejs/plugin-vue": "^4.1.0",
+    "@types/three": "^0.151.0",
+    "@typescript-eslint/eslint-plugin": "^5.59.2",
+    "@typescript-eslint/parser": "^5.59.2",
+    "@vitejs/plugin-vue": "^4.2.1",
     "@vitest/coverage-c8": "^0.30.1",
-    "@vitest/ui": "^0.30.0",
+    "@vitest/ui": "^0.30.1",
     "@vue/test-utils": "^2.3.2",
-    "eslint": "^8.38.0",
+    "eslint": "^8.39.0",
     "eslint-config-prettier": "^8.8.0",
     "eslint-plugin-vue": "^9.11.0",
     "gsap": "^3.11.5",
-    "happy-dom": "^9.6.1",
-    "jsdom": "^21.1.1",
-    "kolorist": "^1.7.0",
+    "happy-dom": "^9.10.7",
+    "jsdom": "^22.0.0",
+    "kolorist": "^1.8.0",
     "pathe": "^1.1.0",
-    "prettier": "^2.8.7",
-    "release-it": "^15.10.1",
+    "prettier": "^2.8.8",
+    "release-it": "^15.10.3",
     "rollup-plugin-analyzer": "^4.0.0",
     "rollup-plugin-copy": "^3.4.0",
     "rollup-plugin-visualizer": "^5.9.0",
-    "three": "^0.151.0",
-    "unocss": "^0.51.4",
+    "three": "^0.152.2",
+    "unocss": "^0.51.8",
     "unplugin": "^1.3.1",
     "unplugin-vue-components": "^0.24.1",
-    "vite": "^4.2.1",
+    "vite": "^4.3.4",
     "vite-plugin-banner": "^0.7.0",
     "vite-plugin-dts": "2.3.0",
-    "vite-plugin-inspect": "^0.7.22",
+    "vite-plugin-inspect": "^0.7.24",
     "vite-plugin-require-transform": "^1.0.12",
     "vite-svg-loader": "^4.0.0",
-    "vitepress": "1.0.0-alpha.65",
+    "vitepress": "1.0.0-alpha.75",
     "vitest": "^0.30.1",
     "vue-demi": "^0.14.0"
   }

+ 6 - 6
playground/package.json

@@ -9,19 +9,19 @@
     "preview": "vite preview"
   },
   "dependencies": {
-    "three": "^0.151.0",
+    "three": "^0.152.2",
     "vue": "^3.2.47",
     "vue-router": "^4.1.6"
   },
   "devDependencies": {
-    "@tresjs/cientos": "2.0.0-beta.4",
-    "@vitejs/plugin-vue": "^4.1.0",
+    "@tresjs/cientos": "2.0.0-beta.6",
+    "@vitejs/plugin-vue": "^4.2.1",
     "typescript": "^5.0.4",
-    "unocss": "^0.51.4",
+    "unocss": "^0.51.8",
     "unplugin-auto-import": "^0.15.3",
     "unplugin-vue-components": "^0.24.1",
-    "vite": "^4.2.1",
+    "vite": "^4.3.4",
     "vite-plugin-glsl": "^1.1.2",
-    "vue-tsc": "^1.2.0"
+    "vue-tsc": "^1.6.3"
   }
 }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 314 - 209
playground/pnpm-lock.yaml


+ 5 - 1
playground/src/components/TheExperience.vue

@@ -14,6 +14,8 @@ const gl = {
   toneMapping: NoToneMapping,
 }
 
+const wireframe = ref(true)
+
 const context = ref()
 
 watchEffect(() => {
@@ -24,6 +26,8 @@ watchEffect(() => {
 </script>
 
 <template>
+  <div><button @click="wireframe = !wireframe">Click</button></div>
+  <pre>{{ wireframe }}</pre>
   <TresCanvas v-bind="gl" ref="context">
     <TresPerspectiveCamera :position="[7, 7, 7]" :look-at="[0, 4, 0]" />
     <OrbitControls />
@@ -33,7 +37,7 @@ watchEffect(() => {
     </TresMesh>
     <TresMesh :position="[0, 4, 0]" cast-shadow>
       <TresBoxGeometry :args="[1.5, 1.5, 1.5]" />
-      <TresMeshToonMaterial color="#4F4F4F" />
+      <TresMeshToonMaterial color="#4F4F4F" :wireframe="wireframe" />
     </TresMesh>
     <TheSphere />
     <TresAxesHelper :args="[1]" />

+ 1 - 1
playground/src/pages/index.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts"></script>
 <template>
   <Suspense>
-    <Cameras />
+    <TheExperience />
   </Suspense>
 </template>

+ 1 - 0
playground/vite.config.ts

@@ -5,6 +5,7 @@ import AutoImport from 'unplugin-auto-import/vite'
 import Components from 'unplugin-vue-components/vite'
 import glsl from 'vite-plugin-glsl'
 import UnoCSS from 'unocss/vite'
+import { presetIcons, presetWebFonts } from 'unocss'
 
 // https://vitejs.dev/config/
 export default defineConfig({

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 272 - 215
pnpm-lock.yaml


+ 1 - 1
src/components/TresScene.ts

@@ -70,7 +70,7 @@ export const TresScene = defineComponent<TresSceneProps>({
 
     const internal = slots && slots.default && slots.default()
 
-    if (internal?.length > 0) {
+    if (internal && internal?.length > 0) {
       isCameraAvailable.value =
         internal.some((node: TresObject) => isString(node.type) && node.type.includes('Camera')) || props.camera
       if (!isCameraAvailable.value) {

+ 34 - 35
src/composables/useRenderer/index.ts

@@ -1,8 +1,8 @@
 /* eslint-disable max-len */
 import { watch, ref, shallowRef, computed, toRefs } from 'vue'
 import {
-  MaybeComputedRef,
-  resolveUnref,
+  MaybeRefOrGetter,
+  toValue,
   unrefElement,
   useDevicePixelRatio,
   useElementSize,
@@ -31,7 +31,7 @@ export interface UseRendererOptions extends WebGLRendererParameters {
    *
    * @default false
    */
-  shadows?: MaybeComputedRef<boolean>
+  shadows?: MaybeRefOrGetter<boolean>
 
   /**
    * Set the shadow map type
@@ -40,7 +40,7 @@ export interface UseRendererOptions extends WebGLRendererParameters {
    *
    * @default PCFSoftShadowMap
    */
-  shadowMapType?: MaybeComputedRef<ShadowMapType>
+  shadowMapType?: MaybeRefOrGetter<ShadowMapType>
 
   /**
    * Whether to use physically correct lighting mode.
@@ -49,21 +49,21 @@ export interface UseRendererOptions extends WebGLRendererParameters {
    * @default false
    * @deprecated Use {@link WebGLRenderer.useLegacyLights useLegacyLights} instead.
    */
-  physicallyCorrectLights?: MaybeComputedRef<boolean>
+  physicallyCorrectLights?: MaybeRefOrGetter<boolean>
   /**
    * Whether to use legacy lighting mode.
    *
-   * @type {MaybeComputedRef<boolean>}
+   * @type {MaybeRefOrGetter<boolean>}
    * @memberof UseRendererOptions
    */
-  useLegacyLights?: MaybeComputedRef<boolean>
+  useLegacyLights?: MaybeRefOrGetter<boolean>
   /**
    * Defines the output encoding of the renderer.
    * Can be LinearEncoding, sRGBEncoding
    *
    * @default LinearEncoding
    */
-  outputEncoding?: MaybeComputedRef<TextureEncoding>
+  outputEncoding?: MaybeRefOrGetter<TextureEncoding>
 
   /**
    * Defines the tone mapping used by the renderer.
@@ -71,14 +71,14 @@ export interface UseRendererOptions extends WebGLRendererParameters {
    *
    * @default NoToneMapping
    */
-  toneMapping?: MaybeComputedRef<ToneMapping>
+  toneMapping?: MaybeRefOrGetter<ToneMapping>
 
   /**
    * Defines the tone mapping exposure used by the renderer.
    *
    * @default 1
    */
-  toneMappingExposure?: MaybeComputedRef<number>
+  toneMappingExposure?: MaybeRefOrGetter<number>
 
   /**
    * The context used by the renderer.
@@ -107,8 +107,8 @@ export interface UseRendererOptions extends WebGLRendererParameters {
    *
    * @default 0x000000
    */
-  clearColor?: MaybeComputedRef<TresColor>
-  windowSize?: MaybeComputedRef<boolean | string>
+  clearColor?: MaybeRefOrGetter<TresColor>
+  windowSize?: MaybeRefOrGetter<boolean | string>
   preset?: RendererPresetsType
 }
 
@@ -133,7 +133,6 @@ export function useRenderer(options: UseRendererOptions) {
     stencil,
     shadows = false,
     shadowMapType = PCFShadowMap,
-    physicallyCorrectLights = false,
     useLegacyLights = false,
     outputEncoding = LinearEncoding,
     toneMapping = NoToneMapping,
@@ -149,7 +148,7 @@ export function useRenderer(options: UseRendererOptions) {
   const { state, setState } = useTres()
 
   const { width, height } =
-    resolveUnref(windowSize) == true || resolveUnref(windowSize) === '' || resolveUnref(windowSize) === 'true'
+    toValue(windowSize) == true || toValue(windowSize) === '' || toValue(windowSize) === 'true'
       ? useWindowSize()
       : useElementSize(state.container)
   const { logError, logWarning } = useLogger()
@@ -157,7 +156,7 @@ export function useRenderer(options: UseRendererOptions) {
   const { pause, resume } = useRenderLoop()
   const aspectRatio = computed(() => width.value / height.value)
 
-  if (!resolveUnref(windowSize) && state.container?.value?.offsetHeight === 0) {
+  if (!toValue(windowSize) && state.container?.value?.offsetHeight === 0) {
     logWarning(`Oops... Seems like your canvas height is currently 0px, by default it takes the height of it's parent, so make sure it has some height with CSS.
 You could set windowSize=true to force the canvas to be the size of the window.`)
   }
@@ -176,7 +175,7 @@ You could set windowSize=true to force the canvas to be the size of the window.`
       return
     }
 
-    const rendererPreset = resolveUnref(preset)
+    const rendererPreset = toValue(preset)
 
     if (rendererPreset) {
       if (!(rendererPreset in rendererPresets))
@@ -186,15 +185,15 @@ You could set windowSize=true to force the canvas to be the size of the window.`
       return
     }
 
-    renderer.value.shadowMap.enabled = resolveUnref(shadows) as boolean
-    renderer.value.shadowMap.type = resolveUnref(shadowMapType) as ShadowMapType
-    renderer.value.toneMapping = (resolveUnref(toneMapping) as ToneMapping) || NoToneMapping
-    renderer.value.toneMappingExposure = resolveUnref(toneMappingExposure) as number
-    renderer.value.outputEncoding = (resolveUnref(outputEncoding) as TextureEncoding) || LinearEncoding
-    if (clearColor?.value) renderer.value.setClearColor(normalizeColor(resolveUnref(clearColor) as TresColor))
+    renderer.value.shadowMap.enabled = toValue(shadows) as boolean
+    renderer.value.shadowMap.type = toValue(shadowMapType) as ShadowMapType
+    renderer.value.toneMapping = (toValue(toneMapping) as ToneMapping) || NoToneMapping
+    renderer.value.toneMappingExposure = toValue(toneMappingExposure) as number
+    renderer.value.outputEncoding = (toValue(outputEncoding) as TextureEncoding) || LinearEncoding
+    if (clearColor?.value) renderer.value.setClearColor(normalizeColor(toValue(clearColor) as TresColor))
 
-    /*    renderer.value.physicallyCorrectLights = resolveUnref(physicallyCorrectLights) as boolean */
-    renderer.value.useLegacyLights = resolveUnref(useLegacyLights) as boolean
+    /*    renderer.value.physicallyCorrectLights = toValue(physicallyCorrectLights) as boolean */
+    renderer.value.useLegacyLights = toValue(useLegacyLights) as boolean
   }
 
   const init = () => {
@@ -206,17 +205,17 @@ You could set windowSize=true to force the canvas to be the size of the window.`
 
     renderer.value = new WebGLRenderer({
       canvas: _canvas,
-      alpha: resolveUnref(alpha),
-      antialias: resolveUnref(antialias),
-      context: resolveUnref(context),
-      depth: resolveUnref(depth),
-      failIfMajorPerformanceCaveat: resolveUnref(failIfMajorPerformanceCaveat),
-      logarithmicDepthBuffer: resolveUnref(logarithmicDepthBuffer),
-      powerPreference: resolveUnref(powerPreference),
-      precision: resolveUnref(precision),
-      stencil: resolveUnref(stencil),
-      preserveDrawingBuffer: resolveUnref(preserveDrawingBuffer),
-      premultipliedAlpha: resolveUnref(premultipliedAlpha),
+      alpha: toValue(alpha),
+      antialias: toValue(antialias),
+      context: toValue(context),
+      depth: toValue(depth),
+      failIfMajorPerformanceCaveat: toValue(failIfMajorPerformanceCaveat),
+      logarithmicDepthBuffer: toValue(logarithmicDepthBuffer),
+      powerPreference: toValue(powerPreference),
+      precision: toValue(precision),
+      stencil: toValue(stencil),
+      preserveDrawingBuffer: toValue(preserveDrawingBuffer),
+      premultipliedAlpha: toValue(premultipliedAlpha),
     })
 
     setState('renderer', renderer.value)

+ 1 - 1
src/composables/useTexture/index.ts

@@ -73,7 +73,7 @@ export async function useTexture(
 
   if (isArray(paths)) {
     const textures = await Promise.all((paths as Array<string>).map(path => loadTexture(path)))
-    if (paths.length > 1) {
+    if ((paths as Array<String>).length > 1) {
       return textures
     } else {
       return textures[0]

+ 2 - 2
src/core/nodeOps.ts

@@ -1,8 +1,8 @@
+import { RendererOptions } from 'vue'
 import { BufferAttribute, BufferGeometry, Material, Object3D } from 'three'
 import { useCamera, useLogger } from '/@/composables'
-import { RendererOptions } from 'vue'
+import { isFunction } from '@alvarosabu/utils'
 import { catalogue } from './catalogue'
-import { isFunction } from '@vueuse/core'
 import { TresInstance, TresObject } from '../types'
 import { isHTMLTag, kebabToCamel } from '../utils'
 

+ 2 - 1
src/types/index.ts

@@ -50,9 +50,10 @@ export type TresVectorProp = Vector2 | Vector3 | number[] | number
 export type TresColor = string | number | Color | number[]
 
 export interface TresEvent extends Intersection<Object3D<Event>> {
-  object: Object3D
+  object: Object3D & { events?: Record<string, any>}
   distance: number
   faceIndex?: number | undefined
   point: Vector3
   uv?: Vector2
+  events?: Record<string, any>
 }

+ 2 - 0
src/utils/index.ts

@@ -26,6 +26,8 @@ const HTML_TAGS =
 
 export const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS)
 
+export const isFunction = (val: unknown): val is Function => typeof val === 'function'
+
 export function kebabToCamel(str: string) {
   return str.replace(/-([a-z])/g, (_, c) => c.toUpperCase())
 }

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác