vevet 2.0.1-dev.15 → 2.0.1-dev.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Ctx2DPrerender.d.ts","sourceRoot":"","sources":["../../../../src/ts/components/canvas/Ctx2DPrerender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIxC,yBAAiB,eAAe,CAAC;IAE7B;;OAEG;IACH,UAAiB,UAAW,SAAQ,MAAM,CAAC,UAAU;QACjD;;WAEG;QACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC;KACtD;IAED;;OAEG;IACH,UAAiB,cAAe,SAAQ,MAAM,CAAC,cAAc;QACzD;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB;IAED;;OAEG;IACH,UAAiB,cAAe,SAAQ,MAAM,CAAC,cAAc;QACzD,WAAW,EAAE,KAAK,CAAA;KACrB;CAEJ;AAID;;GAEG;AACH,qBAAa,cAAc,CACvB,UAAU,SAAS,eAAe,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,EAC1E,cAAc,SAAS,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,EACtF,cAAc,SAAS,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,CACxF,SAAQ,KAAK,CACX,UAAU,EACV,cAAc,EACd,cAAc,CACjB;IACG,SAAS,CAAC,eAAe,CACrB,CAAC,SAAS,kBAAkB,CAAC,UAAU,GAAG,cAAc,CAAC,KACvD,CAAC;IAQP;;OAEG;IACI,MAAM;IAKb,SAAS,CAAC,UAAU;CA4CvB"}
1
+ {"version":3,"file":"Ctx2DPrerender.d.ts","sourceRoot":"","sources":["../../../../src/ts/components/canvas/Ctx2DPrerender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIxC,yBAAiB,eAAe,CAAC;IAE7B;;OAEG;IACH,UAAiB,UAAW,SAAQ,MAAM,CAAC,UAAU;QACjD;;WAEG;QACH,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC;KACtD;IAED;;OAEG;IACH,UAAiB,cAAe,SAAQ,MAAM,CAAC,cAAc;QACzD;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB;IAED;;OAEG;IACH,UAAiB,cAAe,SAAQ,MAAM,CAAC,cAAc;QACzD,WAAW,EAAE,KAAK,CAAA;KACrB;CAEJ;AAID;;GAEG;AACH,qBAAa,cAAc,CACvB,UAAU,SAAS,eAAe,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,EAC1E,cAAc,SAAS,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,EACtF,cAAc,SAAS,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,CACxF,SAAQ,KAAK,CACX,UAAU,EACV,cAAc,EACd,cAAc,CACjB;IACG,SAAS,CAAC,eAAe,CACrB,CAAC,SAAS,kBAAkB,CAAC,UAAU,GAAG,cAAc,CAAC,KACvD,CAAC;IAQP;;OAEG;IACI,MAAM;IAKb,SAAS,CAAC,UAAU;CA2CvB"}
@@ -1,4 +1,3 @@
1
- import { SelectorAll } from 'vevet-dom';
2
1
  import { ScrollEventsBase, NScrollEventsBase } from './ScrollEventsBase';
3
2
  import { IRemovable } from '../../../utils/types/general';
4
3
  import { RequiredModuleProp } from '../../../utils/types/utility';
@@ -8,10 +7,17 @@ export declare namespace NScrollView {
8
7
  */
9
8
  interface StaticProp extends NScrollEventsBase.StaticProp {
10
9
  /**
11
- * Elements to seek
12
- * @default '.v-scroll-view__el'
10
+ * If enabled, scrolling events will be created.
11
+ * You can use "false" to create just an instance of the ScrollView
12
+ * and later enable animations.
13
+ * @default true
14
+ */
15
+ enabled?: boolean;
16
+ /**
17
+ * View elements.
18
+ * @default []
13
19
  */
14
- elements?: SelectorAll;
20
+ elements?: Element[];
15
21
  /**
16
22
  * The moment at which the element is considered to be in the viewport.
17
23
  * The value is calculated from top to bottom or from left to right.
@@ -79,6 +85,11 @@ export declare class ScrollView<StaticProp extends NScrollView.StaticProp = NScr
79
85
  * If first start
80
86
  */
81
87
  protected _firstStart: boolean;
88
+ protected _elements: NScrollView.El[];
89
+ /**
90
+ * Elements to seek
91
+ */
92
+ get elements(): NScrollView.El[];
82
93
  constructor(initialProp?: (StaticProp & ChangeableProp), init?: boolean);
83
94
  init(): void;
84
95
  protected _setEvents(): void;
@@ -95,15 +106,6 @@ export declare class ScrollView<StaticProp extends NScrollView.StaticProp = NScr
95
106
  * Remove View events: scroll or intersection
96
107
  */
97
108
  protected _removeViewEvents(): void;
98
- protected _elements: NScrollView.El[];
99
- /**
100
- * Element to seek
101
- */
102
- get elements(): NScrollView.El[];
103
- /**
104
- * Update elements
105
- */
106
- updateElements(): void;
107
109
  /**
108
110
  * Event on IntersectionObserver
109
111
  */
@@ -132,6 +134,18 @@ export declare class ScrollView<StaticProp extends NScrollView.StaticProp = NScr
132
134
  * Remove elements that are mo more in need
133
135
  */
134
136
  protected _processUnusedElements(): void;
137
+ /**
138
+ * Add a view element
139
+ */
140
+ addElement(element: Element): void;
141
+ /**
142
+ * Remove a view element
143
+ */
144
+ removeElement(element: Element): void;
145
+ /**
146
+ * Remove all view elements
147
+ */
148
+ removeElements(): void;
135
149
  /**
136
150
  * Destroy the module
137
151
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../../../src/ts/components/scroll/scrollable/ScrollView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../../../src/ts/components/scroll/scrollable/ScrollView.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Bar.d.ts","sourceRoot":"","sources":["../../../../../src/ts/components/scroll/scrollbar/Bar.ts"],"names":[],"mappings":";AAAA,OAAO,EAAmC,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,UAAU,IAAI;IACV,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,uBAAuB,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,CAAC,OAAO,OAAO,GAAG;IAmEhB,SAAS,CAAC,KAAK,EAAE,IAAI;IAjEzB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,IAAI,KAAK,gBAER;IACD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,IAAI,KAAK,gBAER;IAGD,IAAI,MAAM,WAET;IACD,IAAI,GAAG,YAEN;IACD,IAAI,GAAG,YAEN;IAGD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAE9B,IAAI,aAAa,yOAGhB;IAED,IAAI,UAAU,WAKb;IAED,IAAI,WAAW,WAEd;IACD,IAAI,YAAY,WAEf;IAGD,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,kBAAkB,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACf,CAAA;IAGD,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAC1C,SAAS,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;IACpC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAIjC,IAAI,IAAI,SAEP;gBAGa,KAAK,EAAE,IAAI;IA+CzB,IAAI,YAAY;;;MAkBf;IAID;;OAEG;IACH,SAAS,CAAC,UAAU;IA8BpB;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAC7B,IAAI,EAAE,OAAO;IAUjB;;OAEG;IACH,SAAS,CAAC,YAAY,CAClB,IAAI,EAAE,OAAO;IAKjB;;OAEG;IACH,SAAS,CAAC,aAAa,CAAE,IAAI,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACtB;IAoCD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CACtB,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;IA6B7C;;OAEG;IACH,SAAS,CAAC,YAAY;IAgBtB;;OAEG;IACI,MAAM;IA0CN,OAAO;CAejB"}
1
+ {"version":3,"file":"Bar.d.ts","sourceRoot":"","sources":["../../../../../src/ts/components/scroll/scrollbar/Bar.ts"],"names":[],"mappings":";AAAA,OAAO,EAAmC,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,UAAU,IAAI;IACV,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,uBAAuB,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,CAAC,OAAO,OAAO,GAAG;IAmEhB,SAAS,CAAC,KAAK,EAAE,IAAI;IAjEzB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,IAAI,KAAK,gBAER;IACD,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,IAAI,KAAK,gBAER;IAGD,IAAI,MAAM,WAET;IACD,IAAI,GAAG,YAEN;IACD,IAAI,GAAG,YAEN;IAGD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAE9B,IAAI,aAAa,yOAGhB;IAED,IAAI,UAAU,WAKb;IAED,IAAI,WAAW,WAEd;IACD,IAAI,YAAY,WAEf;IAGD,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,kBAAkB,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACf,CAAA;IAGD,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAC1C,SAAS,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC;IACpC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;IAIjC,IAAI,IAAI,SAEP;gBAGa,KAAK,EAAE,IAAI;IA+CzB,IAAI,YAAY;;;MAkBf;IAID;;OAEG;IACH,SAAS,CAAC,UAAU;IAiCpB;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAC7B,IAAI,EAAE,OAAO;IAUjB;;OAEG;IACH,SAAS,CAAC,YAAY,CAClB,IAAI,EAAE,OAAO;IAKjB;;OAEG;IACH,SAAS,CAAC,aAAa,CAAE,IAAI,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACtB;IAoCD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CACtB,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;IA6B7C;;OAEG;IACH,SAAS,CAAC,YAAY;IAgBtB;;OAEG;IACI,MAAM;IA0CN,OAAO;CAejB"}
@@ -1,3 +1,4 @@
1
+ import { NViewport } from '../../app/events/Viewport';
1
2
  import { Component, NComponent } from '../../base/Component';
2
3
  import { RequiredModuleProp } from '../../utils/types/utility';
3
4
  export declare namespace NSplitText {
@@ -20,6 +21,11 @@ export declare namespace NSplitText {
20
21
  * @default false
21
22
  */
22
23
  appendLines?: boolean;
24
+ /**
25
+ * Viewport resize event target
26
+ * @default ''
27
+ */
28
+ viewportTarget?: keyof NViewport.CallbacksTypes;
23
29
  }
24
30
  /**
25
31
  * Changeable properties
@@ -1 +1 @@
1
- {"version":3,"file":"SplitText.d.ts","sourceRoot":"","sources":["../../../../src/ts/components/text/SplitText.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,yBAAiB,UAAU,CAAC;IAExB;;OAEG;IACH,UAAiB,UAAW,SAAQ,UAAU,CAAC,UAAU;QACrD;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7B;;;WAGG;QACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB;;;WAGG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;IAED;;OAEG;IACH,UAAiB,cAAe,SAAQ,UAAU,CAAC,cAAc;KAAI;IAErE;;OAEG;IACH,UAAiB,cAAe,SAAQ,UAAU,CAAC,cAAc;QAC7D,OAAO,EAAE,KAAK,CAAC;KAClB;IAED,UAAiB,IAAI;QACjB,EAAE,EAAE,WAAW,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,UAAiB,IAAI;QACjB,EAAE,EAAE,WAAW,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,EAAE,CAAC,EAAE,aAAa,CAAC;QACnB,UAAU,CAAC,EAAE,IAAI,CAAC;QAClB,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;KAChC;IAED,UAAiB,MAAM;QACnB,EAAE,EAAE,WAAW,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;KACzB;CAEJ;AAID;;GAEG;AACH,qBAAa,SAAS,CAClB,UAAU,SAAS,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,EAChE,cAAc,SAAS,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,EAC5E,cAAc,SAAS,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAC9E,SAAQ,SAAS,CACf,UAAU,EACV,cAAc,EACd,cAAc,CACjB;IACG,SAAS,CAAC,eAAe,CACrB,CAAC,SAAS,kBAAkB,CAAC,UAAU,GAAG,cAAc,CAAC,KACvD,CAAC;IASP,IAAI,MAAM,WAET;IAGD;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;IAInC;;OAEG;IACH,IAAI,SAAS,gBAEZ;IACD,SAAS,CAAC,UAAU,EAAG,WAAW,CAAC;IAEnC,IAAI,OAAO,wBAEV;IACD,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IAExC,IAAI,KAAK,sBAER;IACD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IAEpC,IAAI,KAAK,sBAER;IACD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;gBAKhC,WAAW,CAAC,EAAE,CAAC,UAAU,GAAG,cAAc,CAAC,EAC3C,IAAI,UAAO;IAkCf,SAAS,CAAC,UAAU;IAcpB;;OAEG;IACI,SAAS;IAmBhB;;OAEG;IACH,SAAS,CAAC,eAAe;IA+CzB;;OAEG;IACH,SAAS,CAAC,YAAY;IAYtB;;OAEG;IACH,SAAS,CAAC,YAAY;IActB;;OAEG;IACH,SAAS,CAAC,iBAAiB;IAkC3B;;OAEG;IACH,SAAS,CAAC,eAAe;IA8DzB;;OAEG;IACH,SAAS,CAAC,YAAY;IAYtB;;OAEG;IACH,SAAS,CAAC,QAAQ;CASrB"}
1
+ {"version":3,"file":"SplitText.d.ts","sourceRoot":"","sources":["../../../../src/ts/components/text/SplitText.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
- import { SmoothScroll } from '../../components/scroll/smooth-scroll/SmoothScroll';
2
1
  import { IRemovable } from '../types/general';
2
+ import { SmoothScroll } from '../../components/scroll/smooth-scroll/SmoothScroll';
3
+ declare type Container = string | Element | SmoothScroll | Window;
4
+ interface ArgData {
5
+ scrollTop: number;
6
+ scrollLeft: number;
7
+ }
3
8
  interface Props {
4
- passive?: boolean;
9
+ container: Container;
10
+ callback: (data: ArgData) => void;
11
+ isPassive?: boolean;
5
12
  }
6
13
  /**
7
14
  * Add OnScroll event
8
15
  */
9
- export default function onScroll(selector: string | Element | SmoothScroll | Window, callback: (arg: {
10
- scrollTop: number;
11
- scrollLeft: number;
12
- }) => void, props?: Props): IRemovable;
16
+ export default function onScroll({ container, callback, isPassive, }: Props): IRemovable;
13
17
  export {};
14
18
  //# sourceMappingURL=onScroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"onScroll.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/listeners/onScroll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,UAAU,KAAK;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC5B,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,EAClD,QAAQ,EAAE,CAAC,GAAG,EAAE;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAA;CACrB,KAAK,IAAI,EACV,KAAK,CAAC,EAAE,KAAK,GACd,UAAU,CA+CZ"}
1
+ {"version":3,"file":"onScroll.d.ts","sourceRoot":"","sources":["../../../../src/ts/utils/listeners/onScroll.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAGlF,aAAK,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CAAC;AAE1D,UAAU,OAAO;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAeD,UAAU,KAAK;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAID;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAE,EAC9B,SAAS,EACT,QAAQ,EACR,SAAiB,GACpB,EAAE,KAAK,GAAG,UAAU,CAsFpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vevet",
3
- "version": "2.0.1-dev.15",
3
+ "version": "2.0.1-dev.19",
4
4
  "description": "VEVET - A JavaScript library",
5
5
  "browserslist": [
6
6
  "since 2015"
@@ -104,9 +104,8 @@ export class Ctx2DPrerender <
104
104
  // render the media
105
105
  this._ctx.drawImage(
106
106
  source,
107
- 0, 0,
108
- size.sourceWidth, size.sourceHeight,
109
- size.x, size.y, size.width, size.height,
107
+ size.x, size.y,
108
+ size.width, size.height,
110
109
  );
111
110
  // launch callbacks on prerender
112
111
  this.callbacks.tbt('prerender', false);
@@ -1,4 +1,3 @@
1
- import { selectAll, SelectorAll } from 'vevet-dom';
2
1
  import { ScrollEventsBase, NScrollEventsBase } from './ScrollEventsBase';
3
2
  import { IRemovable } from '../../../utils/types/general';
4
3
  import { RequiredModuleProp } from '../../../utils/types/utility';
@@ -16,10 +15,17 @@ export namespace NScrollView {
16
15
  */
17
16
  export interface StaticProp extends NScrollEventsBase.StaticProp {
18
17
  /**
19
- * Elements to seek
20
- * @default '.v-scroll-view__el'
18
+ * If enabled, scrolling events will be created.
19
+ * You can use "false" to create just an instance of the ScrollView
20
+ * and later enable animations.
21
+ * @default true
22
+ */
23
+ enabled?: boolean;
24
+ /**
25
+ * View elements.
26
+ * @default []
21
27
  */
22
- elements?: SelectorAll;
28
+ elements?: Element[];
23
29
  /**
24
30
  * The moment at which the element is considered to be in the viewport.
25
31
  * The value is calculated from top to bottom or from left to right.
@@ -96,8 +102,9 @@ export class ScrollView <
96
102
  > (): T {
97
103
  return {
98
104
  ...super._getDefaultProp(),
105
+ enabled: true,
99
106
  container: window,
100
- elements: `.${this.prefix}__el`,
107
+ elements: [],
101
108
  threshold: 0.9,
102
109
  states: 'in',
103
110
  classToToggle: 'viewed',
@@ -122,6 +129,14 @@ export class ScrollView <
122
129
  */
123
130
  protected _firstStart: boolean;
124
131
 
132
+ protected _elements: NScrollView.El[];
133
+ /**
134
+ * Elements to seek
135
+ */
136
+ get elements () {
137
+ return this._elements;
138
+ }
139
+
125
140
 
126
141
 
127
142
  constructor (
@@ -133,9 +148,7 @@ export class ScrollView <
133
148
  this._scrollEvent = undefined;
134
149
  this._intersectionObserver = undefined;
135
150
  this._firstStart = true;
136
-
137
- // get view elements
138
- this.updateElements();
151
+ this._elements = [...this.prop.elements];
139
152
 
140
153
  // initialize the class
141
154
  if (init) {
@@ -145,7 +158,6 @@ export class ScrollView <
145
158
 
146
159
  public init () {
147
160
  super.init();
148
- this.seekBounding();
149
161
  }
150
162
 
151
163
  // Set Module Events
@@ -159,9 +171,7 @@ export class ScrollView <
159
171
 
160
172
  protected _onPropMutate () {
161
173
  super._onPropMutate();
162
- this._removeViewEvents();
163
- this.updateElements();
164
- this._setViewEvents();
174
+ this.resize();
165
175
  }
166
176
 
167
177
  /**
@@ -169,7 +179,10 @@ export class ScrollView <
169
179
  */
170
180
  public resize () {
171
181
  this._removeViewEvents();
172
- this._setViewEvents();
182
+ if (this.prop.enabled) {
183
+ this._setViewEvents();
184
+ this.seekBounding();
185
+ }
173
186
  }
174
187
 
175
188
  /**
@@ -194,14 +207,15 @@ export class ScrollView <
194
207
  },
195
208
  );
196
209
  // add elements
197
- if (this.elements) {
198
- this.elements.forEach((el) => {
199
- this._intersectionObserver?.observe(el);
200
- });
201
- }
210
+ this.elements.forEach((el) => {
211
+ this._intersectionObserver?.observe(el);
212
+ });
202
213
  } else {
203
214
  // set scroll bounding events
204
- this._scrollEvent = onScroll(this.prop.container, this._handleScroll.bind(this));
215
+ this._scrollEvent = onScroll({
216
+ container: this.prop.container,
217
+ callback: this._handleScroll.bind(this),
218
+ });
205
219
  }
206
220
  }
207
221
 
@@ -221,46 +235,6 @@ export class ScrollView <
221
235
  }
222
236
  }
223
237
 
224
-
225
-
226
- protected _elements!: NScrollView.El[];
227
- /**
228
- * Element to seek
229
- */
230
- get elements () {
231
- return this._elements;
232
- }
233
-
234
- /**
235
- * Update elements
236
- */
237
- public updateElements () {
238
- // check if elements exist
239
- if (typeof this.elements === 'undefined') {
240
- this._elements = [];
241
- }
242
- // unobserve old elements
243
- this.elements.forEach((el) => {
244
- if (this._intersectionObserver) {
245
- this._intersectionObserver.unobserve(el);
246
- }
247
- });
248
- // update elements
249
- this._elements = Array.from(
250
- selectAll(this.prop.elements as any, this.domParent || undefined),
251
- ).filter(
252
- (el) => !el.classList.contains(this.prop.classToToggle),
253
- );
254
- // add them to the observer
255
- this._elements.forEach((el) => {
256
- if (this._intersectionObserver) {
257
- this._intersectionObserver.observe(el);
258
- }
259
- });
260
- }
261
-
262
-
263
-
264
238
  /**
265
239
  * Event on IntersectionObserver
266
240
  */
@@ -371,8 +345,6 @@ export class ScrollView <
371
345
  };
372
346
  }
373
347
 
374
-
375
-
376
348
  /**
377
349
  * Event that is triggered when an element appears or disappears
378
350
  */
@@ -393,9 +365,11 @@ export class ScrollView <
393
365
  el.scrollViewIn = inViewport;
394
366
 
395
367
  // toggle classes
396
- timeoutCallback(() => {
397
- el.classList.toggle(this.prop.classToToggle, inViewport);
398
- }, delay);
368
+ if (this.prop.classToToggle) {
369
+ timeoutCallback(() => {
370
+ el.classList.toggle(this.prop.classToToggle, inViewport);
371
+ }, delay);
372
+ }
399
373
 
400
374
  // process callbacks
401
375
  if (inViewport && (states === 'in' || states === 'inout')) {
@@ -427,6 +401,43 @@ export class ScrollView <
427
401
  }
428
402
 
429
403
 
404
+ /**
405
+ * Add a view element
406
+ */
407
+ public addElement (
408
+ element: Element,
409
+ ) {
410
+ this._elements.push(element);
411
+ if (this._intersectionObserver) {
412
+ this._intersectionObserver.observe(element);
413
+ }
414
+ }
415
+
416
+ /**
417
+ * Remove a view element
418
+ */
419
+ public removeElement (
420
+ element: Element,
421
+ ) {
422
+ this._elements = this._elements.filter((el) => el !== element);
423
+ if (this._intersectionObserver) {
424
+ this._intersectionObserver.unobserve(element);
425
+ }
426
+ }
427
+
428
+ /**
429
+ * Remove all view elements
430
+ */
431
+ public removeElements () {
432
+ this._elements.forEach((el) => {
433
+ if (this._intersectionObserver) {
434
+ this._intersectionObserver.unobserve(el);
435
+ }
436
+ });
437
+ this._elements = [];
438
+ }
439
+
440
+
430
441
 
431
442
  /**
432
443
  * Destroy the module
@@ -163,8 +163,11 @@ export default class Bar {
163
163
  this._listeners.push(addEventListener(this.outer, 'mouseleave', this._handleHover.bind(this, false)));
164
164
 
165
165
  // set scroll events
166
- this._scrollEvent = onScroll(this.prop.container, (data) => {
167
- this._handleScroll(data);
166
+ this._scrollEvent = onScroll({
167
+ container: this.prop.container,
168
+ callback: (data) => {
169
+ this._handleScroll(data);
170
+ },
168
171
  });
169
172
 
170
173
  // set dragger
@@ -1,4 +1,5 @@
1
1
  import { createElement, selectOne } from 'vevet-dom';
2
+ import { NViewport } from '../../app/events/Viewport';
2
3
  import { Component, NComponent } from '../../base/Component';
3
4
  import { RequiredModuleProp } from '../../utils/types/utility';
4
5
 
@@ -25,6 +26,11 @@ export namespace NSplitText {
25
26
  * @default false
26
27
  */
27
28
  appendLines?: boolean;
29
+ /**
30
+ * Viewport resize event target
31
+ * @default ''
32
+ */
33
+ viewportTarget?: keyof NViewport.CallbacksTypes;
28
34
  }
29
35
 
30
36
  /**
@@ -84,6 +90,7 @@ export class SplitText <
84
90
  container: `#${this.prefix}`,
85
91
  appendLetters: true,
86
92
  appendLines: false,
93
+ viewportTarget: '',
87
94
  };
88
95
  }
89
96
 
@@ -174,7 +181,7 @@ export class SplitText <
174
181
  // split the text
175
182
  this.splitText();
176
183
  if (this.prop.appendLines) {
177
- this.addViewportCallback('', () => {
184
+ this.addViewportCallback(this.prop.viewportTarget, () => {
178
185
  this.splitText();
179
186
  });
180
187
  }
@@ -1,67 +1,127 @@
1
- import { addEventListener, IAddEventListener, selectOne } from 'vevet-dom';
2
- import { NCallbacks } from '../..';
3
- import { SmoothScroll } from '../../components/scroll/smooth-scroll/SmoothScroll';
1
+ import { addEventListener, selectOne } from 'vevet-dom';
4
2
  import { IRemovable } from '../types/general';
3
+ import { SmoothScroll } from '../../components/scroll/smooth-scroll/SmoothScroll';
4
+ import { randID } from '../common';
5
+
6
+ type Container = string | Element | SmoothScroll | Window;
7
+
8
+ interface ArgData {
9
+ scrollTop: number;
10
+ scrollLeft: number;
11
+ }
12
+
13
+ interface Instance {
14
+ id: string;
15
+ container: Container;
16
+ callbacks: {
17
+ id: string;
18
+ callback: (
19
+ data: ArgData,
20
+ ) => void;
21
+ }[];
22
+ isPassive: boolean;
23
+ listeners: IRemovable[];
24
+ }
5
25
 
6
26
  interface Props {
7
- passive?: boolean;
27
+ container: Container;
28
+ callback: (data: ArgData) => void;
29
+ isPassive?: boolean;
8
30
  }
9
31
 
32
+ let instances: Instance[] = [];
33
+
10
34
  /**
11
35
  * Add OnScroll event
12
36
  */
13
- export default function onScroll (
14
- selector: string | Element | SmoothScroll | Window,
15
- callback: (arg: {
16
- scrollTop: number,
17
- scrollLeft: number
18
- }) => void,
19
- props?: Props,
20
- ): IRemovable {
21
- const listeners: IAddEventListener[] = [];
22
- let smoothScrollEvent: NCallbacks.AddedCallback | undefined;
37
+ export default function onScroll ({
38
+ container,
39
+ callback,
40
+ isPassive = false,
41
+ }: Props): IRemovable {
42
+ // check if listeners for this element already exist
43
+ let instance = instances.find((data) => (
44
+ data.container === container && data.isPassive === isPassive
45
+ ))!;
46
+ const callbackId = randID('scroll-event');
23
47
 
24
- if (selector instanceof SmoothScroll) {
25
- smoothScrollEvent = selector.addCallback('scroll', () => {
26
- callback({
27
- scrollTop: selector.scrollTop,
28
- scrollLeft: selector.scrollLeft,
29
- });
48
+ // if a listener exists, we just add a new callback to its stack
49
+ if (instance) {
50
+ instance.callbacks.push({
51
+ id: callbackId,
52
+ callback,
30
53
  });
31
54
  } else {
32
- let outer: Element | Window;
33
- if (typeof selector === 'string') {
34
- outer = selectOne(selector) as Element;
55
+ // otherwise we create a new instance
56
+ instance = {
57
+ id: randID('scroll-event-instance'),
58
+ container,
59
+ callbacks: [{
60
+ id: callbackId,
61
+ callback,
62
+ }],
63
+ isPassive,
64
+ listeners: [],
65
+ };
66
+ instances.push(instance);
67
+
68
+ // vars
69
+ const { listeners } = instance;
70
+
71
+ // smooth scroll events
72
+ if (container instanceof SmoothScroll) {
73
+ listeners.push(
74
+ container.addCallback('scroll', () => {
75
+ const { scrollTop, scrollLeft } = container;
76
+ for (let index = 0; index < instance.callbacks.length; index += 1) {
77
+ instance.callbacks[index].callback({
78
+ scrollTop,
79
+ scrollLeft,
80
+ });
81
+ }
82
+ }),
83
+ );
35
84
  } else {
36
- outer = selector;
37
- }
38
- if (outer) {
85
+ // dom scroll events
86
+ const isWindow = container instanceof Window;
87
+ const domContainer = selectOne(container) as any;
39
88
  listeners.push(addEventListener(
40
- outer,
89
+ domContainer,
41
90
  'scroll',
42
91
  () => {
43
- const scrollTop = outer instanceof Window
44
- ? outer.pageYOffset : outer.scrollTop;
45
- const scrollLeft = outer instanceof Window
46
- ? outer.pageXOffset : outer.scrollLeft;
47
- callback({
48
- scrollTop,
49
- scrollLeft,
50
- });
92
+ const scrollTop = isWindow
93
+ ? domContainer.pageYOffset : domContainer.scrollTop;
94
+ const scrollLeft = isWindow
95
+ ? domContainer.pageXOffset : domContainer.scrollLeft;
96
+ for (let index = 0; index < instance.callbacks.length; index += 1) {
97
+ instance.callbacks[index].callback({
98
+ scrollTop,
99
+ scrollLeft,
100
+ });
101
+ }
102
+ },
103
+ {
104
+ passive: isPassive,
51
105
  },
52
- props ? {
53
- passive: props.passive,
54
- } : undefined,
55
106
  ));
56
107
  }
57
108
  }
58
109
 
59
110
  return {
60
111
  remove: () => {
61
- listeners.forEach((listener) => {
62
- listener.remove();
112
+ const newCallbacks = instance.callbacks.filter((item) => {
113
+ if (item.id !== callbackId) {
114
+ return true;
115
+ }
116
+ return false;
63
117
  });
64
- smoothScrollEvent?.remove();
118
+ instance.callbacks = newCallbacks;
119
+ if (newCallbacks.length === 0) {
120
+ instance.listeners.forEach((listener) => {
121
+ listener.remove();
122
+ });
123
+ instances = instances.filter((item) => item.id !== instance.id);
124
+ }
65
125
  },
66
126
  };
67
127
  }