angular-movement 0.0.1

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.
@@ -0,0 +1,455 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, OnDestroy, OnInit, EnvironmentProviders } from '@angular/core';
3
+
4
+ type MovePreset = 'fade-up' | 'fade-down' | 'fade-left' | 'fade-right' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right' | 'zoom-in' | 'zoom-out' | 'flip-x' | 'flip-y' | 'bounce-in' | 'blur-in' | 'spin' | 'pulse' | 'none';
5
+ type MoveValuePair = readonly number[];
6
+ interface MoveSpring {
7
+ stiffness?: number;
8
+ damping?: number;
9
+ mass?: number;
10
+ velocity?: number;
11
+ }
12
+ interface MoveKeyframes {
13
+ opacity?: MoveValuePair;
14
+ x?: MoveValuePair;
15
+ y?: MoveValuePair;
16
+ scale?: MoveValuePair;
17
+ scaleX?: MoveValuePair;
18
+ scaleY?: MoveValuePair;
19
+ rotate?: MoveValuePair;
20
+ rotateX?: MoveValuePair;
21
+ rotateY?: MoveValuePair;
22
+ blur?: MoveValuePair;
23
+ }
24
+ type MoveVariant = MoveKeyframes & {
25
+ spring?: MoveSpring;
26
+ duration?: number;
27
+ easing?: string;
28
+ delay?: number;
29
+ };
30
+ interface MovePresetDefinition {
31
+ enter: MoveKeyframes;
32
+ leave: MoveKeyframes;
33
+ }
34
+ interface MoveKeyframeState {
35
+ opacity?: number;
36
+ x?: number;
37
+ y?: number;
38
+ scale?: number;
39
+ scaleX?: number;
40
+ scaleY?: number;
41
+ rotate?: number;
42
+ rotateX?: number;
43
+ rotateY?: number;
44
+ blur?: number;
45
+ }
46
+ interface MoveAnimationConfig {
47
+ initial?: MoveKeyframeState;
48
+ animate?: MoveKeyframeState;
49
+ exit?: MoveKeyframeState;
50
+ duration?: number;
51
+ easing?: string;
52
+ delay?: number;
53
+ spring?: MoveSpring;
54
+ }
55
+
56
+ interface MovePresenceChild {
57
+ playLeave(): Promise<void> | void;
58
+ }
59
+ interface MovePresenceProvider {
60
+ register(child: MovePresenceChild): void;
61
+ unregister(child: MovePresenceChild): void;
62
+ }
63
+ declare const MOVE_PRESENCE_PARENT: InjectionToken<MovePresenceProvider>;
64
+
65
+ declare class MoveAnimateDirective implements OnDestroy, OnInit, MovePresenceChild {
66
+ #private;
67
+ readonly move: _angular_core.InputSignal<MovePreset | MoveKeyframes | undefined>;
68
+ readonly moveAnimate: _angular_core.InputSignal<MovePreset | MoveKeyframes | undefined>;
69
+ readonly moveAnimateLeave: _angular_core.InputSignal<MovePreset | MoveKeyframes | undefined>;
70
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
71
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
72
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
73
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
74
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
75
+ ngOnInit(): void;
76
+ ngOnDestroy(): void;
77
+ playLeave(): Promise<void>;
78
+ private resolveEnterInput;
79
+ private resolveLeaveInput;
80
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveAnimateDirective, never>;
81
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveAnimateDirective, "[move],[moveAnimate]", never, { "move": { "alias": "move"; "required": false; "isSignal": true; }; "moveAnimate": { "alias": "moveAnimate"; "required": false; "isSignal": true; }; "moveAnimateLeave": { "alias": "moveAnimateLeave"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
82
+ }
83
+
84
+ declare class MoveAnimationDirective implements OnInit, OnDestroy, MovePresenceChild {
85
+ #private;
86
+ readonly moveAnimation: _angular_core.InputSignal<MoveAnimationConfig>;
87
+ ngOnInit(): void;
88
+ ngOnDestroy(): void;
89
+ playLeave(): Promise<void>;
90
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveAnimationDirective, never>;
91
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveAnimationDirective, "[moveAnimation]", never, { "moveAnimation": { "alias": "moveAnimation"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
92
+ }
93
+
94
+ declare class MoveEnterDirective implements OnDestroy, OnInit {
95
+ #private;
96
+ readonly moveEnter: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
97
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
98
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
99
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
100
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
101
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
102
+ ngOnInit(): void;
103
+ ngOnDestroy(): void;
104
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveEnterDirective, never>;
105
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveEnterDirective, "[moveEnter]", never, { "moveEnter": { "alias": "moveEnter"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
106
+ }
107
+
108
+ declare class MoveLeaveDirective implements OnDestroy, OnInit, MovePresenceChild {
109
+ #private;
110
+ readonly moveLeave: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
111
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
112
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
113
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
114
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
115
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
116
+ ngOnInit(): void;
117
+ ngOnDestroy(): void;
118
+ playLeave(): Promise<void>;
119
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveLeaveDirective, never>;
120
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveLeaveDirective, "[moveLeave]", never, { "moveLeave": { "alias": "moveLeave"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
121
+ }
122
+
123
+ declare class MoveHoverDirective implements OnDestroy {
124
+ #private;
125
+ readonly moveWhileHover: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
126
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
127
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
128
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
129
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
130
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
131
+ onMouseEnter(): void;
132
+ onMouseLeave(): void;
133
+ onTouchStart(event: TouchEvent): void;
134
+ onTouchEnd(): void;
135
+ private play;
136
+ ngOnDestroy(): void;
137
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveHoverDirective, never>;
138
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveHoverDirective, "[moveWhileHover]", never, { "moveWhileHover": { "alias": "moveWhileHover"; "required": true; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
139
+ }
140
+
141
+ declare class MoveTapDirective implements OnDestroy {
142
+ #private;
143
+ readonly moveWhileTap: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
144
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
145
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
146
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
147
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
148
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
149
+ onPointerDown(): void;
150
+ onPointerUp(): void;
151
+ private play;
152
+ ngOnDestroy(): void;
153
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveTapDirective, never>;
154
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveTapDirective, "[moveWhileTap]", never, { "moveWhileTap": { "alias": "moveWhileTap"; "required": true; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
155
+ }
156
+
157
+ interface MoveVariantsProvider {
158
+ activeVariant: () => string | undefined;
159
+ }
160
+ declare const MOVE_VARIANTS_PARENT: InjectionToken<MoveVariantsProvider>;
161
+ declare class MoveVariantsDirective implements MoveVariantsProvider, OnDestroy {
162
+ #private;
163
+ readonly moveVariants: _angular_core.InputSignal<Record<string, MoveVariant>>;
164
+ readonly moveAnimate: _angular_core.InputSignal<string | undefined>;
165
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
166
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
167
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
168
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
169
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
170
+ readonly activeVariant: _angular_core.Signal<string | undefined>;
171
+ constructor();
172
+ ngOnDestroy(): void;
173
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveVariantsDirective, never>;
174
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveVariantsDirective, "[moveVariants]", never, { "moveVariants": { "alias": "moveVariants"; "required": true; "isSignal": true; }; "moveAnimate": { "alias": "moveAnimate"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
175
+ }
176
+
177
+ interface MoveStaggerProvider {
178
+ register(el: HTMLElement): void;
179
+ unregister(el: HTMLElement): void;
180
+ getDelay(el: HTMLElement): number;
181
+ }
182
+ declare const MOVE_STAGGER_PARENT: InjectionToken<MoveStaggerProvider>;
183
+
184
+ type MoveStaggerDirection = 'first' | 'last' | 'center';
185
+ declare class MoveStaggerDirective implements MoveStaggerProvider {
186
+ #private;
187
+ readonly moveStagger: _angular_core.InputSignal<number | MoveSpring>;
188
+ readonly moveStaggerDirection: _angular_core.InputSignal<MoveStaggerDirection>;
189
+ register(el: HTMLElement): void;
190
+ unregister(el: HTMLElement): void;
191
+ getDelay(el: HTMLElement): number;
192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveStaggerDirective, never>;
193
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveStaggerDirective, "[moveStagger]", never, { "moveStagger": { "alias": "moveStagger"; "required": true; "isSignal": true; }; "moveStaggerDirection": { "alias": "moveStaggerDirection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
194
+ }
195
+
196
+ declare class MoveLayoutDirective implements OnDestroy {
197
+ #private;
198
+ readonly moveLayout: _angular_core.InputSignal<boolean | "">;
199
+ readonly moveLayoutId: _angular_core.InputSignal<string | undefined>;
200
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
201
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
202
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
203
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
204
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
205
+ constructor();
206
+ private playFlip;
207
+ ngOnDestroy(): void;
208
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveLayoutDirective, never>;
209
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveLayoutDirective, "[moveLayout]", never, { "moveLayout": { "alias": "moveLayout"; "required": false; "isSignal": true; }; "moveLayoutId": { "alias": "moveLayoutId"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
210
+ }
211
+
212
+ declare class MoveScrollDirective implements OnInit, OnDestroy {
213
+ #private;
214
+ readonly moveScroll: _angular_core.InputSignal<MoveKeyframes | undefined>;
215
+ readonly moveScrollOffset: _angular_core.InputSignal<[string, string]>;
216
+ /** Optional CSS selector for a custom scrollable container. Defaults to window scroll. */
217
+ readonly moveScrollContainer: _angular_core.InputSignal<string | null>;
218
+ readonly progress: _angular_core.WritableSignal<number>;
219
+ constructor();
220
+ ngOnInit(): void;
221
+ ngOnDestroy(): void;
222
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveScrollDirective, never>;
223
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveScrollDirective, "[moveScroll]", ["moveScroll"], { "moveScroll": { "alias": "moveScroll"; "required": false; "isSignal": true; }; "moveScrollOffset": { "alias": "moveScrollOffset"; "required": false; "isSignal": true; }; "moveScrollContainer": { "alias": "moveScrollContainer"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
224
+ }
225
+
226
+ declare class MovePresenceDirective implements MovePresenceProvider {
227
+ #private;
228
+ readonly movePresence: _angular_core.InputSignal<unknown>;
229
+ constructor();
230
+ register(child: MovePresenceChild): void;
231
+ unregister(child: MovePresenceChild): void;
232
+ private removeView;
233
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MovePresenceDirective, never>;
234
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MovePresenceDirective, "[movePresence]", never, { "movePresence": { "alias": "movePresence"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
235
+ }
236
+
237
+ type MoveDragConstraints = {
238
+ top?: number;
239
+ right?: number;
240
+ bottom?: number;
241
+ left?: number;
242
+ } | HTMLElement;
243
+ declare class MoveDragDirective implements OnDestroy {
244
+ #private;
245
+ readonly moveDrag: _angular_core.InputSignal<boolean | "">;
246
+ readonly moveDragConstraints: _angular_core.InputSignal<MoveDragConstraints | undefined>;
247
+ readonly moveDragElastic: _angular_core.InputSignal<number>;
248
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
249
+ onPointerDown(e: PointerEvent): void;
250
+ onPointerMove(e: PointerEvent): void;
251
+ onPointerUp(e: PointerEvent): void;
252
+ private resolveBounds;
253
+ private applyTransform;
254
+ private snapBackIfNeeded;
255
+ ngOnDestroy(): void;
256
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveDragDirective, never>;
257
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveDragDirective, "[moveDrag]", never, { "moveDrag": { "alias": "moveDrag"; "required": false; "isSignal": true; }; "moveDragConstraints": { "alias": "moveDragConstraints"; "required": false; "isSignal": true; }; "moveDragElastic": { "alias": "moveDragElastic"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
258
+ }
259
+
260
+ declare class MoveInViewDirective implements OnDestroy, OnInit {
261
+ #private;
262
+ readonly moveInView: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
263
+ readonly moveInViewMargin: _angular_core.InputSignal<string>;
264
+ readonly moveInViewOnce: _angular_core.InputSignal<boolean>;
265
+ /** CSS selector for the IntersectionObserver root (for inner scrollable containers). */
266
+ readonly moveInViewRoot: _angular_core.InputSignal<string | null>;
267
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
268
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
269
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
270
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
271
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
272
+ ngOnInit(): void;
273
+ ngOnDestroy(): void;
274
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveInViewDirective, never>;
275
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveInViewDirective, "[moveInView]", never, { "moveInView": { "alias": "moveInView"; "required": false; "isSignal": true; }; "moveInViewMargin": { "alias": "moveInViewMargin"; "required": false; "isSignal": true; }; "moveInViewOnce": { "alias": "moveInViewOnce"; "required": false; "isSignal": true; }; "moveInViewRoot": { "alias": "moveInViewRoot"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
276
+ }
277
+
278
+ declare class MoveTextDirective implements OnDestroy, OnInit {
279
+ #private;
280
+ readonly moveText: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
281
+ readonly moveTextSplit: _angular_core.InputSignal<"chars" | "words">;
282
+ readonly moveTextStagger: _angular_core.InputSignal<number>;
283
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
284
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
285
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
286
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
287
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
288
+ ngOnInit(): void;
289
+ ngOnDestroy(): void;
290
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveTextDirective, never>;
291
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveTextDirective, "[moveText]", never, { "moveText": { "alias": "moveText"; "required": false; "isSignal": true; }; "moveTextSplit": { "alias": "moveTextSplit"; "required": false; "isSignal": true; }; "moveTextStagger": { "alias": "moveTextStagger"; "required": false; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
292
+ }
293
+
294
+ /**
295
+ * Directive that enables smooth scrolling on a specific scrollable container.
296
+ *
297
+ * Supports both mouse wheel (desktop) and touch scroll (mobile) with
298
+ * momentum-based inertia after finger lift, similar to Lenis.
299
+ *
300
+ * ⚠️ SmoothScrollService is a root singleton. Do NOT use this directive
301
+ * on multiple elements simultaneously — use it once on the page root or
302
+ * inject the service directly where needed.
303
+ *
304
+ * Usage:
305
+ * <div moveSmoothScroll [moveSmoothScrollLerp]="0.08" style="overflow-y: auto; height: 100vh">
306
+ * ...content...
307
+ * </div>
308
+ *
309
+ * Or use the service directly (e.g. on documentElement):
310
+ * constructor() {
311
+ * inject(SmoothScrollService).init({ lerp: 0.1 });
312
+ * }
313
+ */
314
+ declare class MoveSmoothScrollDirective implements OnInit, OnDestroy {
315
+ #private;
316
+ /** Lerp factor passed to SmoothScrollService. Lower = smoother. Range: 0–1. */
317
+ readonly moveSmoothScrollLerp: _angular_core.InputSignal<number>;
318
+ ngOnInit(): void;
319
+ ngOnDestroy(): void;
320
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveSmoothScrollDirective, never>;
321
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveSmoothScrollDirective, "[moveSmoothScroll]", never, { "moveSmoothScrollLerp": { "alias": "moveSmoothScrollLerp"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
322
+ }
323
+
324
+ declare class MoveFocusDirective implements OnDestroy {
325
+ #private;
326
+ readonly moveWhileFocus: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
327
+ readonly moveDuration: _angular_core.InputSignal<number | undefined>;
328
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
329
+ readonly moveDelay: _angular_core.InputSignal<number | undefined>;
330
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
331
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
332
+ onFocus(): void;
333
+ onBlur(): void;
334
+ private play;
335
+ ngOnDestroy(): void;
336
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveFocusDirective, never>;
337
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveFocusDirective, "[moveWhileFocus]", never, { "moveWhileFocus": { "alias": "moveWhileFocus"; "required": true; "isSignal": true; }; "moveDuration": { "alias": "moveDuration"; "required": false; "isSignal": true; }; "moveEasing": { "alias": "moveEasing"; "required": false; "isSignal": true; }; "moveDelay": { "alias": "moveDelay"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
338
+ }
339
+
340
+ declare class MoveParallaxDirective implements OnInit, OnDestroy {
341
+ #private;
342
+ readonly moveParallax: _angular_core.InputSignal<number>;
343
+ readonly moveParallaxAxis: _angular_core.InputSignal<"x" | "y">;
344
+ constructor();
345
+ ngOnInit(): void;
346
+ ngOnDestroy(): void;
347
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveParallaxDirective, never>;
348
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveParallaxDirective, "[moveParallax]", ["moveParallax"], { "moveParallax": { "alias": "moveParallax"; "required": false; "isSignal": true; }; "moveParallaxAxis": { "alias": "moveParallaxAxis"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
349
+ }
350
+
351
+ /**
352
+ * SmoothScrollService — Lenis-inspired smooth scroll for Angular.
353
+ *
354
+ * Desktop: intercepts wheel events → lerp interpolation → synthetic scrollTop.
355
+ * Mobile: listens to native touch scroll → lerp interpolation → synthetic scrollTop.
356
+ * Native scroll is prevented during touch to avoid the vibration conflict.
357
+ *
358
+ * The `scrollY` signal is updated on every RAF tick and can be consumed by
359
+ * `MoveScrollDirective` (or any other consumer) to react to smooth scroll position
360
+ * without relying on the native `scroll` event (which is NOT fired during smooth scroll).
361
+ *
362
+ * Usage (in app root or a layout service):
363
+ *
364
+ * constructor() {
365
+ * inject(SmoothScrollService).init();
366
+ * }
367
+ */
368
+ declare class SmoothScrollService implements OnDestroy {
369
+ #private;
370
+ /**
371
+ * Reactive scroll position (in pixels) updated on every RAF tick.
372
+ * Use this signal instead of listening to `window.scroll` when smooth scroll is active,
373
+ * since native scroll events are NOT fired during lerp-based scrolling.
374
+ */
375
+ readonly scrollY: _angular_core.WritableSignal<number>;
376
+ /** Whether the service is currently active (i.e. `init()` has been called). */
377
+ get isActive(): boolean;
378
+ init(options?: {
379
+ lerp?: number;
380
+ element?: HTMLElement;
381
+ }): void;
382
+ destroy(): void;
383
+ /** Scroll programmatically to a Y position */
384
+ scrollTo(y: number, instant?: boolean): void;
385
+ ngOnDestroy(): void;
386
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmoothScrollService, never>;
387
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SmoothScrollService>;
388
+ }
389
+
390
+ interface AnimationControls {
391
+ play(): void;
392
+ pause(): void;
393
+ cancel(): void;
394
+ currentTime: number;
395
+ readonly finished: Promise<void>;
396
+ }
397
+
398
+ interface MovementConfig {
399
+ duration: number;
400
+ easing: string;
401
+ delay: number;
402
+ disabled: boolean;
403
+ }
404
+ declare const MOVEMENT_DEFAULTS: MovementConfig;
405
+ declare const MOVEMENT_CONFIG: InjectionToken<MovementConfig>;
406
+
407
+ interface PlayAnimationOptions {
408
+ config?: MovementConfig;
409
+ spring?: MoveSpring;
410
+ delay?: number;
411
+ disabled?: boolean;
412
+ onDone?: () => void;
413
+ }
414
+ declare class AnimationEngine {
415
+ #private;
416
+ play(host: HTMLElement, frames: MoveKeyframes, options?: PlayAnimationOptions): AnimationControls | null;
417
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationEngine, never>;
418
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AnimationEngine>;
419
+ }
420
+
421
+ declare class SpringPlayer implements AnimationControls {
422
+ #private;
423
+ private readonly host;
424
+ private readonly frames;
425
+ private readonly delay;
426
+ private readonly onDone?;
427
+ readonly finished: Promise<void>;
428
+ constructor(host: HTMLElement, frames: MoveKeyframes, userConfig: MoveSpring, delay: number, onDone?: (() => void) | undefined);
429
+ play(): void;
430
+ pause(): void;
431
+ cancel(): void;
432
+ get currentTime(): number;
433
+ set currentTime(time: number);
434
+ }
435
+
436
+ declare class WaapiPlayer implements AnimationControls {
437
+ #private;
438
+ readonly finished: Promise<void>;
439
+ constructor(host: HTMLElement, frames: MoveKeyframes, config: MovementConfig, onDone?: () => void);
440
+ play(): void;
441
+ pause(): void;
442
+ cancel(): void;
443
+ get currentTime(): number;
444
+ set currentTime(time: number);
445
+ }
446
+
447
+ declare const MOVE_PRESETS: Record<MovePreset, MovePresetDefinition>;
448
+
449
+ type MovementConfigInput = Partial<MovementConfig>;
450
+ declare function provideMovement(config?: MovementConfigInput): EnvironmentProviders;
451
+
452
+ declare const MOVEMENT_DIRECTIVES: readonly [typeof MoveEnterDirective, typeof MoveLeaveDirective, typeof MoveAnimateDirective, typeof MoveHoverDirective, typeof MoveTapDirective, typeof MoveVariantsDirective, typeof MoveStaggerDirective, typeof MoveLayoutDirective, typeof MoveScrollDirective, typeof MovePresenceDirective, typeof MoveDragDirective, typeof MoveInViewDirective, typeof MoveTextDirective, typeof MoveSmoothScrollDirective, typeof MoveFocusDirective, typeof MoveParallaxDirective, typeof MoveAnimationDirective];
453
+
454
+ export { AnimationEngine, MOVEMENT_CONFIG, MOVEMENT_DEFAULTS, MOVEMENT_DIRECTIVES, MOVE_PRESENCE_PARENT, MOVE_PRESETS, MOVE_STAGGER_PARENT, MOVE_VARIANTS_PARENT, MoveAnimateDirective, MoveAnimationDirective, MoveDragDirective, MoveEnterDirective, MoveFocusDirective, MoveHoverDirective, MoveInViewDirective, MoveLayoutDirective, MoveLeaveDirective, MoveParallaxDirective, MovePresenceDirective, MoveScrollDirective, MoveSmoothScrollDirective, MoveStaggerDirective, MoveTapDirective, MoveTextDirective, MoveVariantsDirective, SmoothScrollService, SpringPlayer, WaapiPlayer, provideMovement };
455
+ export type { AnimationControls, MoveAnimationConfig, MoveDragConstraints, MoveKeyframeState, MoveKeyframes, MovePresenceChild, MovePresenceProvider, MovePreset, MovePresetDefinition, MoveSpring, MoveStaggerDirection, MoveStaggerProvider, MoveValuePair, MoveVariant, MoveVariantsProvider, MovementConfig, MovementConfigInput, PlayAnimationOptions };