@tresjs/core 5.7.0 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/template-compiler-options.d.mts +1 -1
- package/dist/template-compiler-options.mjs +1 -1
- package/dist/tres.d.ts +33 -25
- package/dist/tres.js +20 -7
- package/package.json +1 -1
package/dist/tres.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v5.
|
|
3
|
+
* version: v5.8.0
|
|
4
4
|
* (c) 2026
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
|
-
import * as
|
|
8
|
+
import * as vue15 from "vue";
|
|
9
9
|
import { App, ComputedRef, DefineComponent, MaybeRef, MaybeRefOrGetter, Reactive, Ref, ShallowRef, VNode, VNodeRef } from "vue";
|
|
10
10
|
import * as THREE from "three";
|
|
11
11
|
import { BufferGeometry, Camera, Color, ColorRepresentation, ColorSpace, Event, Fog, Group, Layers, Light, Loader, LoadingManager, Material, Mesh, Object3D, Object3DEventMap, OrthographicCamera, PerspectiveCamera, Scene, ShadowMapType, ToneMapping, Vector3, WebGLRenderer } from "three";
|
|
@@ -297,12 +297,14 @@ interface UseRendererOptions {
|
|
|
297
297
|
scene: ShallowRef<TresScene>;
|
|
298
298
|
canvas: MaybeRef<HTMLCanvasElement>;
|
|
299
299
|
options: Reactive<RendererOptions>;
|
|
300
|
+
fpsLimit?: MaybeRefOrGetter<number>;
|
|
300
301
|
contextParts: Pick<TresContext, 'sizes' | 'camera'>;
|
|
301
302
|
}
|
|
302
303
|
declare function useRendererManager({
|
|
303
304
|
scene,
|
|
304
305
|
canvas,
|
|
305
306
|
options,
|
|
307
|
+
fpsLimit,
|
|
306
308
|
contextParts: {
|
|
307
309
|
sizes,
|
|
308
310
|
camera
|
|
@@ -321,11 +323,11 @@ declare function useRendererManager({
|
|
|
321
323
|
onRender: _vueuse_core0.EventHookOn<TresRenderer>;
|
|
322
324
|
onError: _vueuse_core0.EventHookOn<TresRendererError>;
|
|
323
325
|
invalidate: (amountOfFramesToInvalidate?: number) => void;
|
|
324
|
-
canBeInvalidated:
|
|
326
|
+
canBeInvalidated: vue15.ComputedRef<boolean>;
|
|
325
327
|
mode: "always" | "on-demand" | "manual" | undefined;
|
|
326
328
|
replaceRenderFunction: (fn: RenderFunction) => void;
|
|
327
|
-
isInitialized:
|
|
328
|
-
error:
|
|
329
|
+
isInitialized: vue15.Ref<boolean, boolean>;
|
|
330
|
+
error: vue15.Ref<TresRendererError | null, TresRendererError | null>;
|
|
329
331
|
};
|
|
330
332
|
type UseRendererManagerReturn = ReturnType<typeof useRendererManager>;
|
|
331
333
|
//#endregion
|
|
@@ -357,6 +359,7 @@ interface TresContext {
|
|
|
357
359
|
declare const useTresContextProvider: (args_0: {
|
|
358
360
|
scene: TresScene;
|
|
359
361
|
canvas: MaybeRef<HTMLCanvasElement>;
|
|
362
|
+
fpsLimit?: MaybeRefOrGetter<number>;
|
|
360
363
|
windowSize: MaybeRefOrGetter<boolean>;
|
|
361
364
|
rendererOptions: RendererOptions;
|
|
362
365
|
}) => TresContext;
|
|
@@ -512,7 +515,7 @@ declare function buildGraph(object: Object3D | TresObject): TresObjectMap;
|
|
|
512
515
|
//#endregion
|
|
513
516
|
//#region src/composables/useLoader/component.vue.d.ts
|
|
514
517
|
declare const __VLS_export$2: <T extends TresObjectMap>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
515
|
-
props:
|
|
518
|
+
props: vue15.PublicProps & __VLS_PrettifyLocal<{
|
|
516
519
|
/**
|
|
517
520
|
* The THREE.js loader to use
|
|
518
521
|
*/
|
|
@@ -526,8 +529,8 @@ declare const __VLS_export$2: <T extends TresObjectMap>(__VLS_props: NonNullable
|
|
|
526
529
|
*/
|
|
527
530
|
manager?: LoadingManager;
|
|
528
531
|
} & {
|
|
529
|
-
onLoaded?: ((result: T) => any) | undefined;
|
|
530
532
|
onError?: ((error: unknown) => any) | undefined;
|
|
533
|
+
onLoaded?: ((result: T) => any) | undefined;
|
|
531
534
|
}> & (typeof globalThis extends {
|
|
532
535
|
__VLS_PROPS_FALLBACK: infer P;
|
|
533
536
|
} ? P : {});
|
|
@@ -535,20 +538,20 @@ declare const __VLS_export$2: <T extends TresObjectMap>(__VLS_props: NonNullable
|
|
|
535
538
|
attrs: any;
|
|
536
539
|
slots: {
|
|
537
540
|
default?: (props: {
|
|
538
|
-
state:
|
|
541
|
+
state: vue15.UnwrapRef<T>;
|
|
539
542
|
isLoading: boolean;
|
|
540
543
|
error: unknown;
|
|
541
544
|
}) => any;
|
|
542
545
|
};
|
|
543
|
-
emit: ((evt: "
|
|
544
|
-
}>) =>
|
|
546
|
+
emit: ((evt: "error", error: unknown) => void) & ((evt: "loaded", result: T) => void);
|
|
547
|
+
}>) => vue15.VNode & {
|
|
545
548
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
546
549
|
};
|
|
547
550
|
declare const _default$2: typeof __VLS_export$2;
|
|
548
551
|
type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
|
|
549
552
|
//#endregion
|
|
550
553
|
//#region src/composables/useGraph/index.d.ts
|
|
551
|
-
declare const useGraph: (object: MaybeRef$1<TresObject | undefined>) =>
|
|
554
|
+
declare const useGraph: (object: MaybeRef$1<TresObject | undefined>) => vue15.ComputedRef<TresObjectMap | undefined>;
|
|
552
555
|
//#endregion
|
|
553
556
|
//#region src/utils/createPriorityEventHook.d.ts
|
|
554
557
|
type Callback<T> = Parameters<EventHookOff<T>>[0];
|
|
@@ -599,7 +602,7 @@ type LoopContext = RafLoopContext & TresPartialContext;
|
|
|
599
602
|
declare const useLoop: () => {
|
|
600
603
|
stop: () => void;
|
|
601
604
|
start: () => void;
|
|
602
|
-
isActive: Readonly<
|
|
605
|
+
isActive: Readonly<vue15.ShallowRef<boolean>>;
|
|
603
606
|
onBeforeRender: PriorityEventHookOn<LoopContext>;
|
|
604
607
|
onRender: PriorityEventHookOn<LoopContext>;
|
|
605
608
|
render: (fn: RenderFunction) => void;
|
|
@@ -675,6 +678,11 @@ interface ContextProps extends RendererOptions {
|
|
|
675
678
|
* @default false
|
|
676
679
|
*/
|
|
677
680
|
windowSize?: boolean;
|
|
681
|
+
/**
|
|
682
|
+
* The maximum number of frames per second to render
|
|
683
|
+
* @default undefined
|
|
684
|
+
*/
|
|
685
|
+
fpsLimit?: number;
|
|
678
686
|
/**
|
|
679
687
|
* Whether to enable the provide/inject bridge between Vue and TresJS
|
|
680
688
|
* When true, Vue's provide/inject will work across the TresJS boundary
|
|
@@ -701,10 +709,10 @@ type __VLS_Props = ContextProps & {
|
|
|
701
709
|
type __VLS_Slots$1 = {
|
|
702
710
|
default: () => any;
|
|
703
711
|
};
|
|
704
|
-
declare const __VLS_base$1:
|
|
705
|
-
context:
|
|
712
|
+
declare const __VLS_base$1: vue15.DefineComponent<__VLS_Props, {
|
|
713
|
+
context: vue15.ShallowRef<TresContext, TresContext>;
|
|
706
714
|
dispose: () => void;
|
|
707
|
-
}, {}, {}, {},
|
|
715
|
+
}, {}, {}, {}, vue15.ComponentOptionsMixin, vue15.ComponentOptionsMixin, {
|
|
708
716
|
click: (event: TresPointerEvent) => any;
|
|
709
717
|
contextmenu: (event: TresPointerEvent) => any;
|
|
710
718
|
pointermove: (event: TresPointerEvent) => any;
|
|
@@ -718,13 +726,13 @@ declare const __VLS_base$1: vue4.DefineComponent<__VLS_Props, {
|
|
|
718
726
|
pointercancel: (event: TresPointerEvent) => any;
|
|
719
727
|
lostpointercapture: (event: TresPointerEvent) => any;
|
|
720
728
|
wheel: (event: TresPointerEvent) => any;
|
|
721
|
-
error: (error: Error) => any;
|
|
722
729
|
ready: (context: TresContext) => any;
|
|
730
|
+
error: (error: Error) => any;
|
|
723
731
|
pointermissed: (event: TresPointerEvent) => any;
|
|
724
732
|
render: (context: TresContext) => any;
|
|
725
733
|
beforeLoop: (context: TresContextWithClock) => any;
|
|
726
734
|
loop: (context: TresContextWithClock) => any;
|
|
727
|
-
}, string,
|
|
735
|
+
}, string, vue15.PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
728
736
|
onClick?: ((event: TresPointerEvent) => any) | undefined;
|
|
729
737
|
onContextmenu?: ((event: TresPointerEvent) => any) | undefined;
|
|
730
738
|
onPointermove?: ((event: TresPointerEvent) => any) | undefined;
|
|
@@ -738,13 +746,13 @@ declare const __VLS_base$1: vue4.DefineComponent<__VLS_Props, {
|
|
|
738
746
|
onPointercancel?: ((event: TresPointerEvent) => any) | undefined;
|
|
739
747
|
onLostpointercapture?: ((event: TresPointerEvent) => any) | undefined;
|
|
740
748
|
onWheel?: ((event: TresPointerEvent) => any) | undefined;
|
|
741
|
-
onError?: ((error: Error) => any) | undefined;
|
|
742
749
|
onReady?: ((context: TresContext) => any) | undefined;
|
|
750
|
+
onError?: ((error: Error) => any) | undefined;
|
|
743
751
|
onPointermissed?: ((event: TresPointerEvent) => any) | undefined;
|
|
744
752
|
onRender?: ((context: TresContext) => any) | undefined;
|
|
745
753
|
onBeforeLoop?: ((context: TresContextWithClock) => any) | undefined;
|
|
746
754
|
onLoop?: ((context: TresContextWithClock) => any) | undefined;
|
|
747
|
-
}>, {}, {}, {}, {}, string,
|
|
755
|
+
}>, {}, {}, {}, {}, string, vue15.ComponentProvideOptions, false, {}, any>;
|
|
748
756
|
declare const __VLS_export$1: __VLS_WithSlots$1<typeof __VLS_base$1, __VLS_Slots$1>;
|
|
749
757
|
declare const _default$1: typeof __VLS_export$1;
|
|
750
758
|
type __VLS_WithSlots$1<T, S> = T & {
|
|
@@ -763,7 +771,7 @@ interface TresCanvasInstance {
|
|
|
763
771
|
type __VLS_Slots = {
|
|
764
772
|
default: () => any;
|
|
765
773
|
};
|
|
766
|
-
declare const __VLS_base:
|
|
774
|
+
declare const __VLS_base: vue15.DefineComponent<ContextProps, TresCanvasInstance, {}, {}, {}, vue15.ComponentOptionsMixin, vue15.ComponentOptionsMixin, {
|
|
767
775
|
click: (event: TresPointerEvent) => any;
|
|
768
776
|
contextmenu: (event: TresPointerEvent) => any;
|
|
769
777
|
pointermove: (event: TresPointerEvent) => any;
|
|
@@ -777,13 +785,13 @@ declare const __VLS_base: vue4.DefineComponent<ContextProps, TresCanvasInstance,
|
|
|
777
785
|
pointercancel: (event: TresPointerEvent) => any;
|
|
778
786
|
lostpointercapture: (event: TresPointerEvent) => any;
|
|
779
787
|
wheel: (event: TresPointerEvent) => any;
|
|
780
|
-
error: (error: Error) => any;
|
|
781
788
|
ready: (context: TresContext) => any;
|
|
789
|
+
error: (error: Error) => any;
|
|
782
790
|
pointermissed: (event: TresPointerEvent) => any;
|
|
783
791
|
render: (context: TresContext) => any;
|
|
784
792
|
beforeLoop: (context: TresContextWithClock) => any;
|
|
785
793
|
loop: (context: TresContextWithClock) => any;
|
|
786
|
-
}, string,
|
|
794
|
+
}, string, vue15.PublicProps, Readonly<ContextProps> & Readonly<{
|
|
787
795
|
onClick?: ((event: TresPointerEvent) => any) | undefined;
|
|
788
796
|
onContextmenu?: ((event: TresPointerEvent) => any) | undefined;
|
|
789
797
|
onPointermove?: ((event: TresPointerEvent) => any) | undefined;
|
|
@@ -797,14 +805,15 @@ declare const __VLS_base: vue4.DefineComponent<ContextProps, TresCanvasInstance,
|
|
|
797
805
|
onPointercancel?: ((event: TresPointerEvent) => any) | undefined;
|
|
798
806
|
onLostpointercapture?: ((event: TresPointerEvent) => any) | undefined;
|
|
799
807
|
onWheel?: ((event: TresPointerEvent) => any) | undefined;
|
|
800
|
-
onError?: ((error: Error) => any) | undefined;
|
|
801
808
|
onReady?: ((context: TresContext) => any) | undefined;
|
|
809
|
+
onError?: ((error: Error) => any) | undefined;
|
|
802
810
|
onPointermissed?: ((event: TresPointerEvent) => any) | undefined;
|
|
803
811
|
onRender?: ((context: TresContext) => any) | undefined;
|
|
804
812
|
onBeforeLoop?: ((context: TresContextWithClock) => any) | undefined;
|
|
805
813
|
onLoop?: ((context: TresContextWithClock) => any) | undefined;
|
|
806
814
|
}>, {
|
|
807
815
|
windowSize: boolean;
|
|
816
|
+
enableProvideBridge: boolean;
|
|
808
817
|
antialias: boolean;
|
|
809
818
|
stencil: boolean;
|
|
810
819
|
depth: boolean;
|
|
@@ -819,8 +828,7 @@ declare const __VLS_base: vue4.DefineComponent<ContextProps, TresCanvasInstance,
|
|
|
819
828
|
shadowMapType: THREE.ShadowMapType;
|
|
820
829
|
useLegacyLights: boolean;
|
|
821
830
|
renderMode: "always" | "on-demand" | "manual";
|
|
822
|
-
|
|
823
|
-
}, {}, {}, {}, string, vue4.ComponentProvideOptions, false, {}, any>;
|
|
831
|
+
}, {}, {}, {}, string, vue15.ComponentProvideOptions, false, {}, any>;
|
|
824
832
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
825
833
|
declare const _default: typeof __VLS_export;
|
|
826
834
|
type __VLS_WithSlots<T, S> = T & {
|
package/dist/tres.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/core
|
|
3
|
-
* version: v5.
|
|
3
|
+
* version: v5.8.0
|
|
4
4
|
* (c) 2026
|
|
5
5
|
* description: Declarative ThreeJS using Vue Components
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
@@ -14,7 +14,7 @@ import { forwardHtmlEvents, getVoidObject } from "@pmndrs/pointer-events";
|
|
|
14
14
|
import { setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
15
15
|
|
|
16
16
|
//#region package.json
|
|
17
|
-
var version = "5.
|
|
17
|
+
var version = "5.8.0";
|
|
18
18
|
|
|
19
19
|
//#endregion
|
|
20
20
|
//#region src/utils/makeMap.ts
|
|
@@ -763,7 +763,7 @@ function createTimer() {
|
|
|
763
763
|
/**
|
|
764
764
|
* @param cycleFn the function that is called before the after event hook is triggered and after the before event hook is triggered.
|
|
765
765
|
*/
|
|
766
|
-
const useCreateRafLoop = (cycleFn) => {
|
|
766
|
+
const useCreateRafLoop = (cycleFn, { fpsLimit } = {}) => {
|
|
767
767
|
const timer = createTimer();
|
|
768
768
|
const eventHooks = {
|
|
769
769
|
before: createEventHook(),
|
|
@@ -778,7 +778,10 @@ const useCreateRafLoop = (cycleFn) => {
|
|
|
778
778
|
eventHooks.before.trigger(context);
|
|
779
779
|
cycleFn();
|
|
780
780
|
eventHooks.after.trigger(context);
|
|
781
|
-
}, {
|
|
781
|
+
}, {
|
|
782
|
+
immediate: false,
|
|
783
|
+
fpsLimit
|
|
784
|
+
});
|
|
782
785
|
const start = () => {
|
|
783
786
|
timer.start();
|
|
784
787
|
resume();
|
|
@@ -808,7 +811,7 @@ var TresRendererError = class extends Error {
|
|
|
808
811
|
|
|
809
812
|
//#endregion
|
|
810
813
|
//#region src/composables/useRenderer/useRendererManager.ts
|
|
811
|
-
function useRendererManager({ scene, canvas, options, contextParts: { sizes, camera } }) {
|
|
814
|
+
function useRendererManager({ scene, canvas, options, fpsLimit, contextParts: { sizes, camera } }) {
|
|
812
815
|
const getRenderer = () => {
|
|
813
816
|
if (isFunction(options.renderer)) return options.renderer({
|
|
814
817
|
sizes,
|
|
@@ -883,7 +886,7 @@ Error details: ${rendererError.message}`, rendererError);
|
|
|
883
886
|
};
|
|
884
887
|
const loop = useCreateRafLoop(() => {
|
|
885
888
|
if (frames.value) renderFunction(notifyFrameRendered);
|
|
886
|
-
});
|
|
889
|
+
}, { fpsLimit });
|
|
887
890
|
readyEventHook.on(() => {
|
|
888
891
|
if (isInitialized.value) loop.start();
|
|
889
892
|
});
|
|
@@ -1009,7 +1012,7 @@ function useEventManager({ canvas, contextParts: { scene, camera, renderer } })
|
|
|
1009
1012
|
//#endregion
|
|
1010
1013
|
//#region src/composables/useTresContextProvider/index.ts
|
|
1011
1014
|
const INJECTION_KEY = "useTres";
|
|
1012
|
-
const [useTresContextProvider, _useTresContext] = createInjectionState(({ scene, canvas, windowSize, rendererOptions }) => {
|
|
1015
|
+
const [useTresContextProvider, _useTresContext] = createInjectionState(({ scene, canvas, fpsLimit, windowSize, rendererOptions }) => {
|
|
1013
1016
|
const localScene = shallowRef(scene);
|
|
1014
1017
|
const sizes = useSizes(windowSize, canvas);
|
|
1015
1018
|
const camera = useCameraManager({ sizes });
|
|
@@ -1017,6 +1020,7 @@ const [useTresContextProvider, _useTresContext] = createInjectionState(({ scene,
|
|
|
1017
1020
|
scene: localScene,
|
|
1018
1021
|
canvas,
|
|
1019
1022
|
options: rendererOptions,
|
|
1023
|
+
fpsLimit,
|
|
1020
1024
|
contextParts: {
|
|
1021
1025
|
sizes,
|
|
1022
1026
|
camera
|
|
@@ -1934,6 +1938,10 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
1934
1938
|
type: Boolean,
|
|
1935
1939
|
required: false
|
|
1936
1940
|
},
|
|
1941
|
+
fpsLimit: {
|
|
1942
|
+
type: Number,
|
|
1943
|
+
required: false
|
|
1944
|
+
},
|
|
1937
1945
|
enableProvideBridge: {
|
|
1938
1946
|
type: Boolean,
|
|
1939
1947
|
required: false
|
|
@@ -2109,6 +2117,7 @@ var Context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
2109
2117
|
const context = shallowRef(useTresContextProvider({
|
|
2110
2118
|
scene: scene.value,
|
|
2111
2119
|
canvas: props.canvas,
|
|
2120
|
+
fpsLimit: () => props.fpsLimit ?? Infinity,
|
|
2112
2121
|
windowSize: props.windowSize ?? false,
|
|
2113
2122
|
rendererOptions: props
|
|
2114
2123
|
}));
|
|
@@ -2202,6 +2211,10 @@ var TresCanvas_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
|
|
|
2202
2211
|
required: false,
|
|
2203
2212
|
default: void 0
|
|
2204
2213
|
},
|
|
2214
|
+
fpsLimit: {
|
|
2215
|
+
type: Number,
|
|
2216
|
+
required: false
|
|
2217
|
+
},
|
|
2205
2218
|
enableProvideBridge: {
|
|
2206
2219
|
type: Boolean,
|
|
2207
2220
|
required: false,
|
package/package.json
CHANGED