vevet 4.2.0 → 4.3.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.
Files changed (191) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/Vevet/events/createOnPageLoad/index.js +2 -2
  3. package/lib/cjs/Vevet/events/createOnPageLoad/index.js.map +1 -1
  4. package/lib/cjs/Vevet/events/createViewport/index.js +2 -2
  5. package/lib/cjs/Vevet/events/createViewport/index.js.map +1 -1
  6. package/lib/cjs/Vevet/events/createViewport/viewportCssVarsScript.js +5 -0
  7. package/lib/cjs/Vevet/events/createViewport/viewportCssVarsScript.js.map +1 -0
  8. package/lib/cjs/Vevet/exported.js +3 -0
  9. package/lib/cjs/Vevet/exported.js.map +1 -1
  10. package/lib/cjs/base/Module/index.js +6 -10
  11. package/lib/cjs/base/Module/index.js.map +1 -1
  12. package/lib/cjs/components/CustomCursor/index.js +19 -14
  13. package/lib/cjs/components/CustomCursor/index.js.map +1 -1
  14. package/lib/cjs/components/CustomScroll/Elements.js +11 -22
  15. package/lib/cjs/components/CustomScroll/Elements.js.map +1 -1
  16. package/lib/cjs/components/CustomScroll/index.js +2 -2
  17. package/lib/cjs/components/CustomScroll/index.js.map +1 -1
  18. package/lib/cjs/components/CustomScrollKeyboardPlugin/index.js +2 -2
  19. package/lib/cjs/components/CustomScrollKeyboardPlugin/index.js.map +1 -1
  20. package/lib/cjs/components/DraggerBase/index.js +11 -8
  21. package/lib/cjs/components/DraggerBase/index.js.map +1 -1
  22. package/lib/cjs/components/DraggerMove/index.js +3 -3
  23. package/lib/cjs/components/DraggerMove/index.js.map +1 -1
  24. package/lib/cjs/components/Marquee/index.js +2 -2
  25. package/lib/cjs/components/Marquee/index.js.map +1 -1
  26. package/lib/cjs/components/Preloader/index.js +2 -2
  27. package/lib/cjs/components/Preloader/index.js.map +1 -1
  28. package/lib/cjs/components/ProgressPreloader/index.js +4 -4
  29. package/lib/cjs/components/ProgressPreloader/index.js.map +1 -1
  30. package/lib/cjs/components/ScrollBar/Bar/index.js +4 -4
  31. package/lib/cjs/components/ScrollBar/Bar/index.js.map +1 -1
  32. package/lib/cjs/components/ScrollBar/index.js +2 -2
  33. package/lib/cjs/components/ScrollBar/index.js.map +1 -1
  34. package/lib/cjs/components/SectionScrollProgress/index.js +3 -3
  35. package/lib/cjs/components/SectionScrollProgress/index.js.map +1 -1
  36. package/lib/cjs/components/SplitText/index.js +2 -2
  37. package/lib/cjs/components/SplitText/index.js.map +1 -1
  38. package/lib/cjs/components/SplitText/utils/wrapLines.js +2 -2
  39. package/lib/cjs/components/SplitText/utils/wrapLines.js.map +1 -1
  40. package/lib/cjs/utils/dom/addEventListener.js +32 -0
  41. package/lib/cjs/utils/dom/addEventListener.js.map +1 -0
  42. package/lib/cjs/utils/dom/childOf.js +17 -0
  43. package/lib/cjs/utils/dom/childOf.js.map +1 -0
  44. package/lib/cjs/utils/dom/isElement.js +8 -0
  45. package/lib/cjs/utils/dom/isElement.js.map +1 -0
  46. package/lib/cjs/utils/dom/isWindow.js +8 -0
  47. package/lib/cjs/utils/dom/isWindow.js.map +1 -0
  48. package/lib/cjs/utils/dom/selectAll.js +26 -0
  49. package/lib/cjs/utils/dom/selectAll.js.map +1 -0
  50. package/lib/cjs/utils/dom/selectOne.js +23 -0
  51. package/lib/cjs/utils/dom/selectOne.js.map +1 -0
  52. package/lib/cjs/utils/scroll/isPageScrolling.js +3 -3
  53. package/lib/cjs/utils/scroll/isPageScrolling.js.map +1 -1
  54. package/lib/cjs/utils/scroll/onScroll.js +15 -8
  55. package/lib/cjs/utils/scroll/onScroll.js.map +1 -1
  56. package/lib/cjs/utils/scroll/scrollToElement.js +2 -2
  57. package/lib/cjs/utils/scroll/scrollToElement.js.map +1 -1
  58. package/lib/cjs/version.js +1 -1
  59. package/lib/esm/Vevet/events/createOnPageLoad/index.js +1 -1
  60. package/lib/esm/Vevet/events/createOnPageLoad/index.js.map +1 -1
  61. package/lib/esm/Vevet/events/createViewport/index.js +1 -1
  62. package/lib/esm/Vevet/events/createViewport/index.js.map +1 -1
  63. package/lib/esm/Vevet/events/createViewport/viewportCssVarsScript.js +18 -0
  64. package/lib/esm/Vevet/events/createViewport/viewportCssVarsScript.js.map +1 -0
  65. package/lib/esm/Vevet/exported.js +2 -1
  66. package/lib/esm/Vevet/exported.js.map +1 -1
  67. package/lib/esm/base/Module/index.js +6 -9
  68. package/lib/esm/base/Module/index.js.map +1 -1
  69. package/lib/esm/components/CustomCursor/index.js +16 -11
  70. package/lib/esm/components/CustomCursor/index.js.map +1 -1
  71. package/lib/esm/components/CustomScroll/Elements.js +9 -20
  72. package/lib/esm/components/CustomScroll/Elements.js.map +1 -1
  73. package/lib/esm/components/CustomScroll/index.js +1 -1
  74. package/lib/esm/components/CustomScroll/index.js.map +1 -1
  75. package/lib/esm/components/CustomScrollKeyboardPlugin/index.js +1 -1
  76. package/lib/esm/components/CustomScrollKeyboardPlugin/index.js.map +1 -1
  77. package/lib/esm/components/DraggerBase/index.js +5 -2
  78. package/lib/esm/components/DraggerBase/index.js.map +1 -1
  79. package/lib/esm/components/DraggerMove/index.js +1 -1
  80. package/lib/esm/components/DraggerMove/index.js.map +1 -1
  81. package/lib/esm/components/Marquee/index.js +1 -1
  82. package/lib/esm/components/Marquee/index.js.map +1 -1
  83. package/lib/esm/components/Preloader/index.js +1 -1
  84. package/lib/esm/components/Preloader/index.js.map +1 -1
  85. package/lib/esm/components/ProgressPreloader/index.js +1 -1
  86. package/lib/esm/components/ProgressPreloader/index.js.map +1 -1
  87. package/lib/esm/components/ScrollBar/Bar/index.js +2 -2
  88. package/lib/esm/components/ScrollBar/Bar/index.js.map +1 -1
  89. package/lib/esm/components/ScrollBar/index.js +1 -1
  90. package/lib/esm/components/ScrollBar/index.js.map +1 -1
  91. package/lib/esm/components/SectionScrollProgress/index.js +1 -1
  92. package/lib/esm/components/SectionScrollProgress/index.js.map +1 -1
  93. package/lib/esm/components/SplitText/index.js +1 -1
  94. package/lib/esm/components/SplitText/index.js.map +1 -1
  95. package/lib/esm/components/SplitText/utils/wrapLines.js +1 -1
  96. package/lib/esm/components/SplitText/utils/wrapLines.js.map +1 -1
  97. package/lib/esm/utils/dom/addEventListener.js +28 -0
  98. package/lib/esm/utils/dom/addEventListener.js.map +1 -0
  99. package/lib/esm/utils/dom/childOf.js +13 -0
  100. package/lib/esm/utils/dom/childOf.js.map +1 -0
  101. package/lib/esm/utils/dom/isElement.js +4 -0
  102. package/lib/esm/utils/dom/isElement.js.map +1 -0
  103. package/lib/esm/utils/dom/isWindow.js +4 -0
  104. package/lib/esm/utils/dom/isWindow.js.map +1 -0
  105. package/lib/esm/utils/dom/selectAll.js +22 -0
  106. package/lib/esm/utils/dom/selectAll.js.map +1 -0
  107. package/lib/esm/utils/dom/selectOne.js +19 -0
  108. package/lib/esm/utils/dom/selectOne.js.map +1 -0
  109. package/lib/esm/utils/scroll/isPageScrolling.js +2 -2
  110. package/lib/esm/utils/scroll/isPageScrolling.js.map +1 -1
  111. package/lib/esm/utils/scroll/onScroll.js +14 -7
  112. package/lib/esm/utils/scroll/onScroll.js.map +1 -1
  113. package/lib/esm/utils/scroll/scrollToElement.js +1 -1
  114. package/lib/esm/utils/scroll/scrollToElement.js.map +1 -1
  115. package/lib/esm/version.js +1 -1
  116. package/lib/types/Vevet/events/createOnPageLoad/index.d.ts.map +1 -1
  117. package/lib/types/Vevet/events/createViewport/index.d.ts.map +1 -1
  118. package/lib/types/Vevet/events/createViewport/viewportCssVarsScript.d.ts +2 -0
  119. package/lib/types/Vevet/events/createViewport/viewportCssVarsScript.d.ts.map +1 -0
  120. package/lib/types/Vevet/exported.d.ts +2 -0
  121. package/lib/types/Vevet/exported.d.ts.map +1 -1
  122. package/lib/types/base/Module/index.d.ts +2 -3
  123. package/lib/types/base/Module/index.d.ts.map +1 -1
  124. package/lib/types/components/CustomCursor/index.d.ts +1 -1
  125. package/lib/types/components/CustomCursor/index.d.ts.map +1 -1
  126. package/lib/types/components/CustomScroll/Elements.d.ts +2 -3
  127. package/lib/types/components/CustomScroll/Elements.d.ts.map +1 -1
  128. package/lib/types/components/CustomScroll/index.d.ts.map +1 -1
  129. package/lib/types/components/CustomScrollKeyboardPlugin/index.d.ts.map +1 -1
  130. package/lib/types/components/DraggerBase/index.d.ts +2 -3
  131. package/lib/types/components/DraggerBase/index.d.ts.map +1 -1
  132. package/lib/types/components/DraggerDirection/index.d.ts +1 -4
  133. package/lib/types/components/DraggerDirection/index.d.ts.map +1 -1
  134. package/lib/types/components/Marquee/index.d.ts.map +1 -1
  135. package/lib/types/components/Preloader/index.d.ts.map +1 -1
  136. package/lib/types/components/ProgressPreloader/index.d.ts.map +1 -1
  137. package/lib/types/components/ScrollBar/Bar/index.d.ts.map +1 -1
  138. package/lib/types/components/ScrollBar/index.d.ts +1 -1
  139. package/lib/types/components/ScrollBar/index.d.ts.map +1 -1
  140. package/lib/types/components/SectionScrollProgress/index.d.ts +1 -1
  141. package/lib/types/components/SectionScrollProgress/index.d.ts.map +1 -1
  142. package/lib/types/components/SplitText/index.d.ts.map +1 -1
  143. package/lib/types/utils/dom/addEventListener.d.ts +22 -0
  144. package/lib/types/utils/dom/addEventListener.d.ts.map +1 -0
  145. package/lib/types/utils/dom/childOf.d.ts +2 -0
  146. package/lib/types/utils/dom/childOf.d.ts.map +1 -0
  147. package/lib/types/utils/dom/isElement.d.ts +2 -0
  148. package/lib/types/utils/dom/isElement.d.ts.map +1 -0
  149. package/lib/types/utils/dom/isWindow.d.ts +2 -0
  150. package/lib/types/utils/dom/isWindow.d.ts.map +1 -0
  151. package/lib/types/utils/dom/selectAll.d.ts +5 -0
  152. package/lib/types/utils/dom/selectAll.d.ts.map +1 -0
  153. package/lib/types/utils/dom/selectOne.d.ts +3 -0
  154. package/lib/types/utils/dom/selectOne.d.ts.map +1 -0
  155. package/lib/types/utils/scroll/isPageScrolling.d.ts.map +1 -1
  156. package/lib/types/utils/scroll/onScroll.d.ts +16 -0
  157. package/lib/types/utils/scroll/onScroll.d.ts.map +1 -1
  158. package/lib/types/utils/scroll/scrollToElement.d.ts.map +1 -1
  159. package/lib/types/version.d.ts +1 -1
  160. package/package.json +2 -3
  161. package/src/Vevet/events/createOnPageLoad/index.ts +1 -1
  162. package/src/Vevet/events/createViewport/index.ts +1 -1
  163. package/src/Vevet/events/createViewport/stories/index.tsx +2 -0
  164. package/src/Vevet/events/createViewport/viewportCssVarsScript.ts +17 -0
  165. package/src/Vevet/exported.ts +3 -0
  166. package/src/base/Module/index.ts +11 -26
  167. package/src/components/CustomCursor/index.ts +18 -13
  168. package/src/components/CustomScroll/Elements.ts +8 -27
  169. package/src/components/CustomScroll/index.ts +1 -1
  170. package/src/components/CustomScrollKeyboardPlugin/index.ts +1 -1
  171. package/src/components/DraggerBase/index.ts +6 -9
  172. package/src/components/DraggerMove/index.ts +1 -1
  173. package/src/components/Marquee/index.ts +1 -1
  174. package/src/components/Preloader/index.ts +1 -1
  175. package/src/components/ProgressPreloader/index.ts +1 -1
  176. package/src/components/ScrollBar/Bar/index.ts +3 -3
  177. package/src/components/ScrollBar/index.ts +1 -1
  178. package/src/components/SectionScrollProgress/index.ts +1 -1
  179. package/src/components/SplitText/index.ts +1 -1
  180. package/src/components/SplitText/stories/index.tsx +1 -1
  181. package/src/components/SplitText/utils/wrapLines.ts +1 -1
  182. package/src/utils/dom/addEventListener.ts +37 -0
  183. package/src/utils/dom/childOf.ts +15 -0
  184. package/src/utils/dom/isElement.ts +3 -0
  185. package/src/utils/dom/isWindow.ts +3 -0
  186. package/src/utils/dom/selectAll.ts +42 -0
  187. package/src/utils/dom/selectOne.ts +31 -0
  188. package/src/utils/scroll/isPageScrolling.ts +3 -4
  189. package/src/utils/scroll/onScroll.ts +35 -19
  190. package/src/utils/scroll/scrollToElement.ts +1 -1
  191. package/src/version.ts +1 -1
@@ -0,0 +1,17 @@
1
+ export const viewportCssVarsScript = `var updateVevetViewport = function update() {
2
+ if (window.vevetApp) {
3
+ return;
4
+ }
5
+
6
+ var w = window.innerWidth;
7
+ var h = window.innerHeight;
8
+ var sh = document.documentElement.clientHeight;
9
+
10
+ document.documentElement.style.setProperty('--vw', w / 100 + "px");
11
+ document.documentElement.style.setProperty('--vh', h / 100 + "px");
12
+ document.documentElement.style.setProperty('--svh', sh / 100 + "px");
13
+ };
14
+
15
+ window.addEventListener('resize', updateVevetViewport);
16
+
17
+ updateVevetViewport();`;
@@ -5,6 +5,9 @@ import {
5
5
  IViewportCallbackTypes,
6
6
  IViewport,
7
7
  } from './events/createViewport/types';
8
+ import { viewportCssVarsScript } from './events/createViewport/viewportCssVarsScript';
9
+
10
+ export { viewportCssVarsScript };
8
11
 
9
12
  export type {
10
13
  IVevetProps,
@@ -1,15 +1,10 @@
1
- import {
2
- addEventListener,
3
- IAddEventListener,
4
- IAddEventListenerOptions,
5
- ListenerElement,
6
- } from 'vevet-dom';
7
1
  import { NModule } from './types';
8
2
  import { MutableProps, NMutableProps } from '../MutableProps';
9
3
  import { Callbacks, NCallbacks } from '../Callbacks';
10
4
  import { TRequiredModuleProp } from '@/types/utility';
11
5
  import { getApp } from '@/utils/internal/getApp';
12
6
  import { createViewport } from '@/src/Vevet/events/createViewport';
7
+ import { addEventListener } from '@/utils/dom/addEventListener';
13
8
 
14
9
  export type { NModule };
15
10
 
@@ -86,7 +81,7 @@ export class Module<
86
81
  }
87
82
 
88
83
  /** Holds the list of event listeners added to the module */
89
- private _listeners: IAddEventListener[];
84
+ private _listeners: (() => void)[];
90
85
 
91
86
  /** Stores actions that need to be executed when the module is destroyed */
92
87
  private _destroyableActions: (() => void)[];
@@ -258,34 +253,24 @@ export class Module<
258
253
  /**
259
254
  * Adds a DOM event listener that will be automatically removed when the module is destroyed.
260
255
  *
261
- * @param el - The target element for the event listener.
256
+ * @param element - The target element for the event listener.
262
257
  * @param target - The event type to listen for (e.g., 'click', 'resize').
263
258
  * @param callback - The callback function to execute when the event is triggered.
264
259
  * @param options - Additional options for the event listener.
265
260
  */
266
261
  public addEventListener<
267
- El extends ListenerElement,
268
262
  Target extends keyof HTMLElementEventMap,
269
- Callback extends (evt: HTMLElementEventMap[Target]) => void,
263
+ Listener extends (event: DocumentEventMap[Target]) => void,
270
264
  >(
271
- el: El,
265
+ element: Document | Element | Window,
272
266
  target: Target,
273
- callback: Callback,
274
- options?: IAddEventListenerOptions,
275
- ): IAddEventListener {
276
- const listener = addEventListener(el, target, callback, options);
267
+ callback: Listener,
268
+ options?: boolean | AddEventListenerOptions,
269
+ ) {
270
+ const listener = addEventListener(element, target, callback, options);
277
271
  this._listeners.push(listener);
278
272
 
279
- return {
280
- ...listener,
281
- remove: () => {
282
- this._listeners = this._listeners.filter(
283
- (item) => item.id !== listener.id,
284
- );
285
-
286
- return listener.remove();
287
- },
288
- };
273
+ return listener;
289
274
  }
290
275
 
291
276
  /**
@@ -341,7 +326,7 @@ export class Module<
341
326
  this._mutableProps.destroy();
342
327
 
343
328
  this._destroyableActions.forEach((action) => action());
344
- this._listeners.forEach((listener) => listener.remove());
329
+ this._listeners.forEach((listener) => listener());
345
330
 
346
331
  this._classNamesToRemove.forEach(({ element, className }) =>
347
332
  element.classList.remove(className),
@@ -1,9 +1,10 @@
1
- import { addEventListener, createElement, selectOne } from 'vevet-dom';
2
1
  import { AnimationFrame } from '../AnimationFrame';
3
2
  import { NCustomCursor } from './types';
4
3
  import { Component as ComponentClass } from '@/base/Component';
5
4
  import { lerp } from '@/utils/math';
6
5
  import { getApp } from '@/utils/internal/getApp';
6
+ import { selectOne } from '@/utils/dom/selectOne';
7
+ import { addEventListener } from '@/utils/dom/addEventListener';
7
8
 
8
9
  export type { NCustomCursor };
9
10
 
@@ -215,20 +216,24 @@ export class CustomCursor<
215
216
  domContainer.classList.add(this.className('-container'));
216
217
 
217
218
  // Create outer element
218
- this._outerElement = createElement('div', {
219
- class: this.className(
220
- '',
219
+ const outer = document.createElement('div');
220
+ this._outerElement = outer;
221
+ domContainer.append(outer);
222
+ outer.classList.add(this.className(''));
223
+ outer.classList.add(
224
+ this.className(
221
225
  container instanceof Window ? '-in-window' : '-in-element',
222
- '-disabled',
223
226
  ),
224
- parent: domContainer,
225
- });
227
+ );
228
+ outer.classList.add(this.className('-disabled'));
226
229
 
227
230
  // Create inner element
228
- this._innerElement = createElement('div', {
229
- class: this.className('__inner', '-disabled'),
230
- parent: this._outerElement,
231
- });
231
+ const inner = document.createElement('div');
232
+ this._innerElement = inner;
233
+ outer.append(inner);
234
+ inner.classList.add(this.className('__inner'));
235
+ inner.classList.add(this.className('-disabled'));
236
+ outer.append(inner);
232
237
 
233
238
  // Call events
234
239
  this.callbacks.tbt('create', {
@@ -372,8 +377,8 @@ export class CustomCursor<
372
377
  this.hoveredElement = undefined;
373
378
  }
374
379
 
375
- mouseEnter.remove();
376
- mouseLeave.remove();
380
+ mouseEnter();
381
+ mouseLeave();
377
382
 
378
383
  if (timeout) {
379
384
  clearTimeout(timeout);
@@ -1,5 +1,6 @@
1
- import { createElement, selectAll, selectOne } from 'vevet-dom';
1
+ import { selectOne } from '@/utils/dom/selectOne';
2
2
  import { NCustomScroll } from './types';
3
+ import { selectAll } from '@/utils/dom/selectAll';
3
4
 
4
5
  type TPickedProps = 'elements' | 'hasWillChange' | 'translatePrecision';
5
6
 
@@ -16,8 +17,6 @@ export class Elements {
16
17
  return this._wrapper;
17
18
  }
18
19
 
19
- private _wrapperExists!: boolean;
20
-
21
20
  private _elements!: NCustomScroll.IElement[];
22
21
 
23
22
  get elements() {
@@ -29,30 +28,21 @@ export class Elements {
29
28
  }
30
29
 
31
30
  constructor(private _props: IProps) {
32
- this._createWrapper();
31
+ this._getWrapper();
33
32
  this._createElements();
34
33
  }
35
34
 
36
- /** Create scrollable wrapper */
37
- private _createWrapper() {
35
+ /** Get scrollable wrapper */
36
+ private _getWrapper() {
38
37
  const { wrapperClassName, container } = this.props;
39
38
 
40
39
  const existingWrapper = selectOne(`.${wrapperClassName}`, container);
41
40
 
42
- if (existingWrapper instanceof HTMLElement) {
41
+ if (!(existingWrapper instanceof HTMLElement)) {
42
+ throw new Error(`No wrapper found: .${wrapperClassName}`);
43
+ } else {
43
44
  this._wrapper = existingWrapper;
44
- this._wrapperExists = true;
45
-
46
- return;
47
45
  }
48
-
49
- this._wrapper = createElement('div', {
50
- class: wrapperClassName,
51
- parent: container,
52
- children: Array.from(container.children),
53
- });
54
-
55
- this._wrapperExists = false;
56
46
  }
57
47
 
58
48
  /** Create scrollable elements */
@@ -128,15 +118,6 @@ export class Elements {
128
118
  }
129
119
 
130
120
  public destroy() {
131
- // remove wrapper
132
- if (!this._wrapperExists) {
133
- while (this.wrapper.firstChild) {
134
- this.props.container.appendChild(this.wrapper.firstChild);
135
- }
136
-
137
- this._wrapper.remove();
138
- }
139
-
140
121
  // reset styles
141
122
  this._elements.forEach((element) => {
142
123
  // eslint-disable-next-line no-param-reassign
@@ -1,4 +1,3 @@
1
- import { selectOne } from 'vevet-dom';
2
1
  import { Component as ComponentClass } from '@/base/Component';
3
2
  import { NCustomScroll } from './types';
4
3
  import { IScrollLike } from '@/types/general';
@@ -8,6 +7,7 @@ import { Elements } from './Elements';
8
7
  import { AnimationFrame } from './AnimatonFrame';
9
8
  import { onResize } from '@/utils/listeners/onResize';
10
9
  import { getApp } from '@/utils/internal/getApp';
10
+ import { selectOne } from '@/utils/dom/selectOne';
11
11
 
12
12
  export type { NCustomScroll };
13
13
 
@@ -1,8 +1,8 @@
1
- import { childOf } from 'vevet-dom';
2
1
  import { Plugin } from '@/base/Plugin';
3
2
  import { NCustomScrollKeyboardPlugin } from './types';
4
3
  import type { CustomScroll as CustomScrollInstance } from '../CustomScroll';
5
4
  import { getApp } from '@/utils/internal/getApp';
5
+ import { childOf } from '@/utils/dom/childOf';
6
6
 
7
7
  export type { NCustomScrollKeyboardPlugin };
8
8
 
@@ -1,12 +1,9 @@
1
- import {
2
- IAddEventListener,
3
- addEventListener,
4
- isElement,
5
- isWindow,
6
- selectOne,
7
- } from 'vevet-dom';
1
+ import { addEventListener } from '@/utils/dom/addEventListener';
8
2
  import { NDraggerBase } from './types';
9
3
  import { Component as ComponentClass } from '@/base/Component';
4
+ import { isElement } from '@/utils/dom/isElement';
5
+ import { isWindow } from '@/utils/dom/isWindow';
6
+ import { selectOne } from '@/utils/dom/selectOne';
10
7
  import { getApp } from '@/utils/internal/getApp';
11
8
 
12
9
  export type { NDraggerBase };
@@ -52,7 +49,7 @@ export abstract class DraggerBase<
52
49
  /**
53
50
  * Stores runtime event listeners added during dragging.
54
51
  */
55
- protected _runtimeListeners: IAddEventListener[];
52
+ protected _runtimeListeners: (() => void)[];
56
53
 
57
54
  /**
58
55
  * Indicates whether dragging is currently happening.
@@ -230,7 +227,7 @@ export abstract class DraggerBase<
230
227
  * Removes runtime events after the drag operation ends or is canceled.
231
228
  */
232
229
  protected _removeRuntimeEvents() {
233
- this._runtimeListeners.forEach((listener) => listener.remove());
230
+ this._runtimeListeners.forEach((listener) => listener());
234
231
 
235
232
  this._runtimeListeners = [];
236
233
  }
@@ -1,4 +1,4 @@
1
- import { addEventListener } from 'vevet-dom';
1
+ import { addEventListener } from '@/utils/dom/addEventListener';
2
2
  import { DraggerBase, NDraggerBase } from '../DraggerBase';
3
3
  import { NDraggerMove } from './types';
4
4
 
@@ -1,10 +1,10 @@
1
- import { selectOne } from 'vevet-dom';
2
1
  import { NMarquee } from './types';
3
2
  import { Component as ComponentClass } from '@/base/Component';
4
3
  import { AnimationFrame } from '../AnimationFrame';
5
4
  import { getApp } from '@/utils/internal/getApp';
6
5
  import { wrap } from '@/utils/math';
7
6
  import { onResize } from '@/utils/listeners';
7
+ import { selectOne } from '@/utils/dom/selectOne';
8
8
 
9
9
  export type { NMarquee };
10
10
 
@@ -1,9 +1,9 @@
1
- import { selectOne } from 'vevet-dom';
2
1
  import { PCancelable } from '@/utils/common/PCancelable';
3
2
  import { NPreloader } from './types';
4
3
  import { Component as ComponentClass } from '@/base/Component';
5
4
  import { normalizedTimeoutCallback } from '@/utils/common';
6
5
  import { getApp } from '@/utils/internal/getApp';
6
+ import { selectOne } from '@/utils/dom/selectOne';
7
7
 
8
8
  export type { NPreloader };
9
9
 
@@ -1,4 +1,3 @@
1
- import { selectAll } from 'vevet-dom';
2
1
  import { PCancelable } from '@/utils/common/PCancelable';
3
2
  import { AnimationFrame } from '../AnimationFrame';
4
3
  import { Preloader } from '../Preloader';
@@ -9,6 +8,7 @@ import { preloadImage } from './utils/preloadImage';
9
8
  import { preloadVideo } from './utils/preloadVideo';
10
9
  import { preloadCustomElement } from './utils/preloadCustomElement';
11
10
  import { getApp } from '@/utils/internal/getApp';
11
+ import { selectAll } from '@/utils/dom/selectAll';
12
12
 
13
13
  export type { NProgressPreloader };
14
14
 
@@ -1,10 +1,10 @@
1
- import { IAddEventListener, addEventListener } from 'vevet-dom';
2
1
  import { IBarProps } from './types';
3
2
  import { IRemovable } from '@/types/general';
4
3
  import { DraggerMove, NDraggerMove } from '@/components/DraggerMove';
5
4
  import { IOnScrollCallbackParameter, onScroll } from '@/utils/scroll/onScroll';
6
5
  import { clamp } from '@/utils/math';
7
6
  import { getScrollValues } from '@/utils/scroll';
7
+ import { addEventListener } from '@/utils/dom/addEventListener';
8
8
 
9
9
  /**
10
10
  * Represents a custom scroll bar with a draggable thumb.
@@ -49,7 +49,7 @@ export class Bar {
49
49
  private _coordsAtDragStart = { scrollLeft: 0, scrollTop: 0 };
50
50
 
51
51
  /** Stores the list of event listeners */
52
- private _listeners: IAddEventListener[] = [];
52
+ private _listeners: (() => void)[] = [];
53
53
 
54
54
  /** The scroll event handler */
55
55
  private _scrollEvent?: IRemovable;
@@ -184,7 +184,7 @@ export class Bar {
184
184
  * Removes all the event listeners for the scroll bar.
185
185
  */
186
186
  private _removeEvents() {
187
- this._listeners?.forEach((listener) => listener.remove());
187
+ this._listeners?.forEach((listener) => listener());
188
188
  this._scrollEvent?.remove();
189
189
  this._dragger?.destroy();
190
190
  }
@@ -1,4 +1,3 @@
1
- import { selectOne } from 'vevet-dom';
2
1
  import type { CustomScroll } from '../CustomScroll';
3
2
  import { Bar } from './Bar';
4
3
  import { NScrollBar } from './types';
@@ -6,6 +5,7 @@ import { Component as ComponentClass } from '@/base/Component';
6
5
  import { IBarProps } from './Bar/types';
7
6
  import { onResize } from '@/utils/listeners/onResize';
8
7
  import { getApp } from '@/utils/internal/getApp';
8
+ import { selectOne } from '@/utils/dom/selectOne';
9
9
 
10
10
  export type { NScrollBar };
11
11
 
@@ -1,4 +1,3 @@
1
- import { selectOne } from 'vevet-dom';
2
1
  import type { CustomScroll } from '../CustomScroll';
3
2
  import { NScrollSectionProgress } from './types';
4
3
  import { Component as ComponentClass } from '@/base/Component';
@@ -6,6 +5,7 @@ import { clampScope } from '@/utils/math';
6
5
  import { IGetScrollValues, getScrollValues, onScroll } from '@/utils/scroll';
7
6
  import { onResize } from '@/utils/listeners/onResize';
8
7
  import { getApp } from '@/utils/internal/getApp';
8
+ import { selectOne } from '@/utils/dom/selectOne';
9
9
 
10
10
  export type { NScrollSectionProgress };
11
11
 
@@ -1,10 +1,10 @@
1
- import { selectOne } from 'vevet-dom';
2
1
  import { Component as ComponentClass } from '@/base/Component';
3
2
  import { NSplitText } from './types';
4
3
  import { onResize } from '@/utils/listeners/onResize';
5
4
  import { splitBase } from './utils/splitBase';
6
5
  import { wrapLines } from './utils/wrapLines';
7
6
  import { getApp } from '@/utils/internal/getApp';
7
+ import { selectOne } from '@/utils/dom/selectOne';
8
8
 
9
9
  export type { NSplitText };
10
10
 
@@ -29,7 +29,7 @@ export const Component: FC<IProps> = ({ text, hasLetters, hasLines }) => {
29
29
 
30
30
  return (
31
31
  <>
32
- <h1>Vevet</h1>
32
+ <h1>Vevet Split Text</h1>
33
33
 
34
34
  <div ref={ref} style={style} dangerouslySetInnerHTML={{ __html: text }} />
35
35
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-param-reassign */
2
- import { childOf } from 'vevet-dom';
2
+ import { childOf } from '@/utils/dom/childOf';
3
3
  import { NSplitText } from '../types';
4
4
 
5
5
  interface IProps {
@@ -0,0 +1,37 @@
1
+ /**
2
+ * A utility function to add an event listener to a specified element.
3
+ *
4
+ * This function adds an event listener for the specified event type and
5
+ * returns a function that can be called to remove the event listener.
6
+ *
7
+ * @param element - The target element to which the event listener will be attached.
8
+ * @param target - The name of the event to listen for (e.g., 'click', 'scroll').
9
+ * @param listener - The callback function to execute when the event occurs.
10
+ * @param options - Optional parameters for the event listener.
11
+ *
12
+ * @example
13
+ * const button = document.getElementById('myButton');
14
+ * const removeClickListener = addEventListener(button, 'click', (event) => {
15
+ * console.log('Button clicked!');
16
+ * });
17
+ *
18
+ * // To remove the event listener later
19
+ * removeClickListener();
20
+ */
21
+ export function addEventListener<
22
+ Target extends keyof HTMLElementEventMap,
23
+ Listener extends (event: DocumentEventMap[Target]) => void,
24
+ >(
25
+ element: Document | Element | Window,
26
+ target: Target,
27
+ listener: Listener,
28
+ options?: boolean | AddEventListenerOptions,
29
+ ) {
30
+ element.addEventListener(target, listener as any, options);
31
+
32
+ const remove = () => {
33
+ element.removeEventListener(target, listener as any, options);
34
+ };
35
+
36
+ return remove;
37
+ }
@@ -0,0 +1,15 @@
1
+ function childOfCheck(el: Element, parent: Element): boolean {
2
+ if (el === parent) {
3
+ return true;
4
+ }
5
+
6
+ if (el !== null) {
7
+ return childOfCheck(el.parentNode as Element, parent);
8
+ }
9
+
10
+ return false;
11
+ }
12
+
13
+ export function childOf(element: Element, parent: Element) {
14
+ return childOfCheck(element, parent);
15
+ }
@@ -0,0 +1,3 @@
1
+ export function isElement(element: any): element is Element {
2
+ return element instanceof Element;
3
+ }
@@ -0,0 +1,3 @@
1
+ export function isWindow(element: any): element is Window {
2
+ return element instanceof Window;
3
+ }
@@ -0,0 +1,42 @@
1
+ import { isElement } from './isElement';
2
+ import { selectOne } from './selectOne';
3
+
4
+ export type TSelectAll = string | NodeList | Element | Element[];
5
+
6
+ type TNodeListByTagName<T extends keyof HTMLElementTagNameMap> = NodeListOf<
7
+ HTMLElementTagNameMap[T]
8
+ >;
9
+
10
+ export function selectAll<T extends TSelectAll | keyof HTMLElementTagNameMap>(
11
+ selector: T,
12
+ parent?: Element | string,
13
+ ): T extends Element[]
14
+ ? Element[]
15
+ : T extends Element
16
+ ? Element[]
17
+ : T extends keyof HTMLElementTagNameMap
18
+ ? TNodeListByTagName<T>
19
+ : NodeListOf<Element> {
20
+ if (selector instanceof NodeList) {
21
+ return selector as any;
22
+ }
23
+
24
+ if (isElement(selector)) {
25
+ return [selector] as any;
26
+ }
27
+
28
+ if (Array.isArray(selector)) {
29
+ return selector as any;
30
+ }
31
+
32
+ // if string
33
+ if (typeof parent !== 'undefined') {
34
+ const parenElement = selectOne(parent);
35
+
36
+ if (parenElement) {
37
+ return parenElement.querySelectorAll(selector) as any;
38
+ }
39
+ }
40
+
41
+ return document.querySelectorAll(selector) as any;
42
+ }
@@ -0,0 +1,31 @@
1
+ import { isElement } from './isElement';
2
+ import { isWindow } from './isWindow';
3
+
4
+ export type TSelectOne = string | Element | Window;
5
+
6
+ export function selectOne<T extends TSelectOne | keyof HTMLElementTagNameMap>(
7
+ selector: T,
8
+ parent?: Element | string,
9
+ ): T extends Window
10
+ ? Window
11
+ : T extends keyof HTMLElementTagNameMap
12
+ ? HTMLElementTagNameMap[T]
13
+ : HTMLElement | Element | null {
14
+ if (isWindow(selector)) {
15
+ return selector as any;
16
+ }
17
+
18
+ if (isElement(selector)) {
19
+ return selector as any;
20
+ }
21
+
22
+ // if string
23
+ if (typeof parent !== 'undefined') {
24
+ const parenEl = selectOne(parent);
25
+ if (parenEl) {
26
+ return parenEl.querySelector(selector as string) as any;
27
+ }
28
+ }
29
+
30
+ return document.querySelector(selector as string) as any;
31
+ }
@@ -1,11 +1,10 @@
1
- import { addEventListener } from 'vevet-dom';
2
- import { IRemovable } from '@/types/general';
3
1
  import { uid } from '../common';
2
+ import { addEventListener } from '../dom/addEventListener';
4
3
 
5
4
  let ids: string[] = [];
6
5
 
7
6
  let timeout: NodeJS.Timeout | null = null;
8
- let listener: IRemovable | undefined;
7
+ let listener: (() => void) | undefined;
9
8
 
10
9
  let isScrolling = false;
11
10
 
@@ -34,7 +33,7 @@ function createListener() {
34
33
  */
35
34
  function destroyListener() {
36
35
  if (ids.length === 0) {
37
- listener?.remove();
36
+ listener?.();
38
37
  listener = undefined;
39
38
  }
40
39
  }