@canvas3/nuxt 0.1.0 → 0.1.3
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/module.json +1 -1
- package/dist/runtime/utils/canvas3/helpers.d.ts +2 -0
- package/dist/runtime/utils/canvas3/helpers.js +21 -0
- package/dist/runtime/utils/canvas3/scroll.js +7 -6
- package/dist/runtime/utils/exports.d.ts +6 -2
- package/dist/runtime/utils/exports.js +10 -6
- package/package.json +1 -1
package/dist/module.json
CHANGED
|
@@ -12,3 +12,5 @@ export declare function setScrollActiveElements(elNode: HTMLElement, meshIds: st
|
|
|
12
12
|
export declare function elementNearViewport(bounds: DOMRect, margin?: number): boolean;
|
|
13
13
|
export declare const lerp: (a: number, b: number, n: number) => number;
|
|
14
14
|
export declare function getShaderMaterial(mesh: Mesh): ShaderMaterial;
|
|
15
|
+
export declare function hasTransformTranslate(el: HTMLElement): boolean;
|
|
16
|
+
export declare function setElTransformTranslate(el: HTMLElement, x?: number, y?: number, z?: number): void;
|
|
@@ -94,3 +94,24 @@ export const lerp = (a, b, n) => (1 - n) * a + n * b;
|
|
|
94
94
|
export function getShaderMaterial(mesh) {
|
|
95
95
|
return mesh.material;
|
|
96
96
|
}
|
|
97
|
+
const TRANSLATE_REGEX = /translate3d\([^)]*\)|translateX\([^)]*\)|translateY\([^)]*\)|translate\([^)]*\)/;
|
|
98
|
+
export function hasTransformTranslate(el) {
|
|
99
|
+
const current = el.style.transform || "";
|
|
100
|
+
return TRANSLATE_REGEX.test(current);
|
|
101
|
+
}
|
|
102
|
+
export function setElTransformTranslate(el, x = 0, y = 0, z = 0) {
|
|
103
|
+
const current = el.style.transform || "";
|
|
104
|
+
const newTranslate = `translate3d(${x}px,${y}px,${z}px)`;
|
|
105
|
+
if (!current || current === "none") {
|
|
106
|
+
el.style.transform = newTranslate;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (hasTransformTranslate(el)) {
|
|
110
|
+
el.style.transform = current.replace(
|
|
111
|
+
TRANSLATE_REGEX,
|
|
112
|
+
newTranslate
|
|
113
|
+
);
|
|
114
|
+
} else {
|
|
115
|
+
el.style.transform = `${current} ${newTranslate}`.trim();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
elementNearViewport,
|
|
3
3
|
lerp,
|
|
4
|
+
setElTransformTranslate,
|
|
4
5
|
setScrollActiveElements
|
|
5
6
|
} from "./helpers.js";
|
|
6
7
|
export default class Scroll {
|
|
@@ -51,7 +52,7 @@ export default class Scroll {
|
|
|
51
52
|
item.bounds = item.elNode.getBoundingClientRect();
|
|
52
53
|
item.containerBottom = item.containerEl.getBoundingClientRect().bottom;
|
|
53
54
|
} else {
|
|
54
|
-
item.elNode
|
|
55
|
+
setElTransformTranslate(item.elNode, 0, 0);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
}
|
|
@@ -119,9 +120,9 @@ export default class Scroll {
|
|
|
119
120
|
const fixToOriginPx = window.innerHeight * fixToOrigin;
|
|
120
121
|
if (item.childEl && bounds.top < itemMargin + fixToOriginPx && containerBounds.bottom > itemMargin + fixToOriginPx + item.childElBounds.height) {
|
|
121
122
|
const fixedPositionPx = itemMargin - bounds.top + fixToOriginPx;
|
|
122
|
-
item.childEl
|
|
123
|
+
setElTransformTranslate(item.childEl, 0, fixedPositionPx);
|
|
123
124
|
} else if (item.childEl && bounds.top > itemMargin + fixToOriginPx && item.childEl.style.transform !== `translate3d(0px, 0px, 0px)`) {
|
|
124
|
-
item.childEl
|
|
125
|
+
setElTransformTranslate(item.childEl, 0, 0);
|
|
125
126
|
}
|
|
126
127
|
} else {
|
|
127
128
|
const speedTrack = elementNearViewport(
|
|
@@ -131,18 +132,18 @@ export default class Scroll {
|
|
|
131
132
|
);
|
|
132
133
|
if (speedTrack) {
|
|
133
134
|
const speed = (window.innerHeight - bounds.top) * item.options.scrollSpeed.value;
|
|
134
|
-
item.elNode
|
|
135
|
+
setElTransformTranslate(item.elNode, 0, speed);
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
} else {
|
|
138
139
|
item.elNode.style.transition = `linear translate3d 0.3s`;
|
|
139
|
-
item.elNode
|
|
140
|
+
setElTransformTranslate(item.elNode, 0, 0);
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
setScrollPosition() {
|
|
144
145
|
if (Math.round(this.scrollToRender) !== Math.round(this.current) || this.scrollToRender < 10) {
|
|
145
|
-
this.DOM.scrollable
|
|
146
|
+
setElTransformTranslate(this.DOM.scrollable, 0, -1 * this.scrollToRender);
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
149
|
scrollRenderToFluid(scrollTo) {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import type { Mesh } from 'three';
|
|
2
|
+
import { getShaderMaterial } from '#canvas3-nuxt/utils/canvas3/helpers';
|
|
2
3
|
export declare const Canvas3: {
|
|
4
|
+
addMeshToScene: (mesh: Mesh) => void;
|
|
5
|
+
getMeshFromSceneByName: (meshName: string) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
|
|
3
6
|
addAnimationToRender: (callBackName: string, callBackFunction: import("../types/types.js").AnimationCallback) => void;
|
|
7
|
+
addImageAsMesh: (imgHtmlEl: HTMLImageElement, shaderName: string | null, meshId: string, meshUniforms: import("../types/types.js").MeshMaterialUniform, activateMeshUniforms: import("../types/types.js").MeshMaterialUniform) => Promise<void>;
|
|
8
|
+
getShaderMaterial: typeof getShaderMaterial;
|
|
9
|
+
removeMesh: (imgHtmlEl: HTMLImageElement, shaderName: string | null, meshId: string, meshUniforms: import("../types/types.js").MeshMaterialUniform, activateMeshUniforms: import("../types/types.js").MeshMaterialUniform) => Promise<void>;
|
|
4
10
|
resizeOnChange: () => void;
|
|
5
11
|
scrollToElBySelector: (elQuerySelector: string, delay?: number) => void;
|
|
6
12
|
setMeshPositionsUpdate: (state: boolean) => void;
|
|
7
13
|
scrollToTop: (delay?: number) => void;
|
|
8
|
-
addMeshToScene: (mesh: Mesh) => void;
|
|
9
|
-
getMeshFromSceneByName: (meshName: string) => import("three").Object3D<import("three").Object3DEventMap> | undefined;
|
|
10
14
|
};
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { Canvas3 as mainClass } from "#canvas3-nuxt/utils/canvas3/canvas3";
|
|
2
|
+
import { getShaderMaterial } from "#canvas3-nuxt/utils/canvas3/helpers";
|
|
2
3
|
export const Canvas3 = {
|
|
3
|
-
addAnimationToRender: mainClass.addAnimationToRender.bind(mainClass),
|
|
4
|
-
resizeOnChange: mainClass.resizeOnChange.bind(mainClass),
|
|
5
|
-
scrollToElBySelector: mainClass.scrollToElBySelector.bind(mainClass),
|
|
6
|
-
setMeshPositionsUpdate: mainClass.setMeshPositionsUpdate.bind(mainClass),
|
|
7
|
-
scrollToTop: mainClass.scrollToTop.bind(mainClass),
|
|
8
4
|
addMeshToScene: (mesh) => {
|
|
9
5
|
mainClass.scene.add(mesh);
|
|
10
6
|
},
|
|
11
7
|
getMeshFromSceneByName: (meshName) => {
|
|
12
8
|
return mainClass.scene.getObjectByName(meshName);
|
|
13
|
-
}
|
|
9
|
+
},
|
|
10
|
+
addAnimationToRender: mainClass.addAnimationToRender.bind(mainClass),
|
|
11
|
+
addImageAsMesh: mainClass.addImageAsMesh.bind(mainClass),
|
|
12
|
+
getShaderMaterial,
|
|
13
|
+
removeMesh: mainClass.addImageAsMesh.bind(mainClass),
|
|
14
|
+
resizeOnChange: mainClass.resizeOnChange.bind(mainClass),
|
|
15
|
+
scrollToElBySelector: mainClass.scrollToElBySelector.bind(mainClass),
|
|
16
|
+
setMeshPositionsUpdate: mainClass.setMeshPositionsUpdate.bind(mainClass),
|
|
17
|
+
scrollToTop: mainClass.scrollToTop.bind(mainClass)
|
|
14
18
|
};
|