@canvas3/nuxt 0.0.9 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "canvas-nuxt-layout",
3
3
  "configKey": "canvas3Layout",
4
- "version": "0.0.9",
4
+ "version": "0.1.2",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.0"
@@ -1,3 +1,2 @@
1
1
  import type { Directive } from 'vue';
2
- export type AttrsType = Record<string, number | string>;
3
2
  export declare const vSetDataAttribute: Directive;
@@ -1,10 +1,10 @@
1
- import type { DirectiveBinding, ObjectDirective } from 'vue'
2
- import type { Canvas3ImageBinding, scrollActionBindOptionType } from '#canvas3-nuxt/types/types'
1
+ import type { ObjectDirective } from 'vue'
2
+ import type { AttrsType, Canvas3ImageBinding, scrollActionBindOptionType } from '#canvas3-nuxt/types/types'
3
3
 
4
4
  interface Canvas3Directives {
5
5
  vCanvas3Image: ObjectDirective<HTMLImageElement, Canvas3ImageBinding>
6
6
  vActionOnScroll: ObjectDirective<HTMLElement, scrollActionBindOptionType>
7
- vSetDataAttributes: ObjectDirective<HTMLElement, DirectiveBinding>
7
+ vSetDataAttributes: ObjectDirective<HTMLElement, AttrsType>
8
8
  }
9
9
 
10
10
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
@@ -113,4 +113,5 @@ export type Canvas3ImageBindType = {
113
113
  uniforms?: MeshMaterialUniform | undefined;
114
114
  activateMeshUniforms?: MeshMaterialUniform;
115
115
  };
116
+ export type AttrsType = Record<string, number | string>;
116
117
  export {};
@@ -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.style.transform = `translate3d(0,0px,0)`;
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.style.transform = `translate3d(0,${fixedPositionPx}px,0)`;
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.style.transform = `translate3d(0px, 0px, 0px)`;
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.style.transform = `translate3d(0,${speed}px,0)`;
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.style.transform = `translate3d(0,0,0)`;
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.style.transform = `translate3d(0,${-1 * this.scrollToRender}px,0)`;
146
+ setElTransformTranslate(this.DOM.scrollable, 0, -1 * this.scrollToRender);
146
147
  }
147
148
  }
148
149
  scrollRenderToFluid(scrollTo) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canvas3/nuxt",
3
- "version": "0.0.9",
3
+ "version": "0.1.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },