angular-movement 0.1.0 → 0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-movement",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Angular animation directives — presets, custom keyframes, spring physics, scroll & parallax.",
6
6
  "keywords": [
@@ -1,15 +1,22 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, OnDestroy, OnInit, EnvironmentProviders } from '@angular/core';
3
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' | 'shake' | 'swing' | 'wobble' | 'rubber-band' | 'heart-beat' | 'tada' | 'jello' | 'light-speed' | 'roll-in' | 'none';
5
- type MoveValuePair = readonly number[];
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' | 'shake' | 'swing' | 'wobble' | 'rubber-band' | 'heart-beat' | 'tada' | 'jello' | 'light-speed' | 'roll-in' | 'icon-draw' | 'icon-pulse' | 'icon-bounce' | 'none';
5
+ type MoveValue = number | string;
6
+ type MoveValuePair = readonly MoveValue[];
6
7
  interface MoveSpring {
7
8
  stiffness?: number;
8
9
  damping?: number;
9
10
  mass?: number;
10
11
  velocity?: number;
11
12
  }
12
- interface MoveKeyframes {
13
+ interface MovePropertyTransition {
14
+ duration?: number;
15
+ easing?: string;
16
+ delay?: number;
17
+ }
18
+ type MoveTransitionConfig = MovePropertyTransition & Record<string, MovePropertyTransition | MoveValue | undefined>;
19
+ interface MoveKeyframeProperties {
13
20
  opacity?: MoveValuePair;
14
21
  x?: MoveValuePair;
15
22
  y?: MoveValuePair;
@@ -20,13 +27,21 @@ interface MoveKeyframes {
20
27
  rotateX?: MoveValuePair;
21
28
  rotateY?: MoveValuePair;
22
29
  blur?: MoveValuePair;
23
- [key: string]: MoveValuePair | undefined;
24
- }
25
- type MoveVariant = MoveKeyframes & {
30
+ pathLength?: MoveValuePair;
31
+ pathOffset?: MoveValuePair;
32
+ pathSpacing?: MoveValuePair;
33
+ strokeDashoffset?: MoveValuePair;
34
+ strokeDasharray?: MoveValuePair;
35
+ fillOpacity?: MoveValuePair;
36
+ strokeOpacity?: MoveValuePair;
37
+ }
38
+ type MoveKeyframes = MoveKeyframeProperties & Record<string, MoveValuePair | undefined>;
39
+ type MoveVariant = MoveKeyframeProperties & {
26
40
  spring?: MoveSpring;
27
41
  duration?: number;
28
42
  easing?: string;
29
43
  delay?: number;
44
+ transition?: MoveTransitionConfig;
30
45
  };
31
46
  interface MovePresetDefinition {
32
47
  enter: MoveKeyframes;
@@ -44,7 +59,14 @@ interface MoveKeyframeState {
44
59
  rotateX?: number;
45
60
  rotateY?: number;
46
61
  blur?: number;
47
- [key: string]: number | undefined;
62
+ pathLength?: number;
63
+ pathOffset?: number;
64
+ pathSpacing?: number;
65
+ strokeDashoffset?: number;
66
+ strokeDasharray?: string;
67
+ fillOpacity?: number;
68
+ strokeOpacity?: number;
69
+ [key: string]: number | string | undefined;
48
70
  }
49
71
  interface MoveAnimationConfig {
50
72
  initial?: MoveKeyframeState;
@@ -126,11 +148,13 @@ declare class MoveLeaveDirective implements OnDestroy, OnInit, MovePresenceChild
126
148
  declare class MoveHoverDirective implements OnDestroy {
127
149
  #private;
128
150
  readonly moveWhileHover: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
129
- readonly moveDuration: _angular_core.InputSignal<number | undefined>;
151
+ readonly moveDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
130
152
  readonly moveEasing: _angular_core.InputSignal<string | undefined>;
131
- readonly moveDelay: _angular_core.InputSignal<number | undefined>;
153
+ readonly moveDelay: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
132
154
  readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
133
155
  readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
156
+ readonly moveReverseDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
157
+ readonly moveReverseEasing: _angular_core.InputSignal<string | undefined>;
134
158
  onMouseEnter(): void;
135
159
  onMouseLeave(): void;
136
160
  onTouchStart(event: TouchEvent): void;
@@ -138,23 +162,25 @@ declare class MoveHoverDirective implements OnDestroy {
138
162
  private play;
139
163
  ngOnDestroy(): void;
140
164
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveHoverDirective, never>;
141
- 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>;
165
+ 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; }; "moveReverseDuration": { "alias": "moveReverseDuration"; "required": false; "isSignal": true; }; "moveReverseEasing": { "alias": "moveReverseEasing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
142
166
  }
143
167
 
144
168
  declare class MoveTapDirective implements OnDestroy {
145
169
  #private;
146
170
  readonly moveWhileTap: _angular_core.InputSignal<MovePreset | MoveKeyframes>;
147
- readonly moveDuration: _angular_core.InputSignal<number | undefined>;
171
+ readonly moveDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
148
172
  readonly moveEasing: _angular_core.InputSignal<string | undefined>;
149
- readonly moveDelay: _angular_core.InputSignal<number | undefined>;
173
+ readonly moveDelay: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
150
174
  readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
151
175
  readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
176
+ readonly moveReverseDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
177
+ readonly moveReverseEasing: _angular_core.InputSignal<string | undefined>;
152
178
  onPointerDown(): void;
153
179
  onPointerUp(): void;
154
180
  private play;
155
181
  ngOnDestroy(): void;
156
182
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveTapDirective, never>;
157
- 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>;
183
+ 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; }; "moveReverseDuration": { "alias": "moveReverseDuration"; "required": false; "isSignal": true; }; "moveReverseEasing": { "alias": "moveReverseEasing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
158
184
  }
159
185
 
160
186
  interface MoveVariantsProvider {
@@ -376,11 +402,35 @@ declare class MoveTargetDirective implements OnDestroy {
376
402
  readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
377
403
  readonly moveReverseDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
378
404
  readonly moveReverseEasing: _angular_core.InputSignal<string | undefined>;
405
+ readonly moveTransition: _angular_core.InputSignal<MoveTransitionConfig | undefined>;
379
406
  ngOnDestroy(): void;
380
407
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveTargetDirective, never>;
381
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveTargetDirective, "[moveTarget]", never, { "moveTarget": { "alias": "moveTarget"; "required": true; "isSignal": true; }; "moveFrames": { "alias": "moveFrames"; "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; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveReverseDuration": { "alias": "moveReverseDuration"; "required": false; "isSignal": true; }; "moveReverseEasing": { "alias": "moveReverseEasing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
408
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveTargetDirective, "[moveTarget]", never, { "moveTarget": { "alias": "moveTarget"; "required": true; "isSignal": true; }; "moveFrames": { "alias": "moveFrames"; "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; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveReverseDuration": { "alias": "moveReverseDuration"; "required": false; "isSignal": true; }; "moveReverseEasing": { "alias": "moveReverseEasing"; "required": false; "isSignal": true; }; "moveTransition": { "alias": "moveTransition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
382
409
  }
383
410
 
411
+ declare class MoveTriggerDirective implements OnDestroy {
412
+ #private;
413
+ readonly moveTrigger: _angular_core.InputSignal<boolean>;
414
+ readonly moveFrames: _angular_core.InputSignal<MoveKeyframes>;
415
+ readonly moveResetFrames: _angular_core.InputSignal<MoveKeyframes | undefined>;
416
+ readonly moveResetState: _angular_core.InputSignal<"initial" | "final" | "clear">;
417
+ readonly moveDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
418
+ readonly moveEasing: _angular_core.InputSignal<string | undefined>;
419
+ readonly moveDelay: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
420
+ readonly moveSpring: _angular_core.InputSignal<MoveSpring | undefined>;
421
+ readonly moveDisabled: _angular_core.InputSignal<boolean | undefined>;
422
+ readonly moveReverseDuration: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
423
+ readonly moveReverseEasing: _angular_core.InputSignal<string | undefined>;
424
+ play(frames?: MoveKeyframes): Promise<void>;
425
+ reset(): void;
426
+ set(state: MoveKeyframeState): void;
427
+ ngOnDestroy(): void;
428
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoveTriggerDirective, never>;
429
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MoveTriggerDirective, "[moveTrigger]", ["moveTrigger"], { "moveTrigger": { "alias": "moveTrigger"; "required": true; "isSignal": true; }; "moveFrames": { "alias": "moveFrames"; "required": true; "isSignal": true; }; "moveResetFrames": { "alias": "moveResetFrames"; "required": false; "isSignal": true; }; "moveResetState": { "alias": "moveResetState"; "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; }; "moveSpring": { "alias": "moveSpring"; "required": false; "isSignal": true; }; "moveDisabled": { "alias": "moveDisabled"; "required": false; "isSignal": true; }; "moveReverseDuration": { "alias": "moveReverseDuration"; "required": false; "isSignal": true; }; "moveReverseEasing": { "alias": "moveReverseEasing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
430
+ }
431
+
432
+ declare function clearComposedStyle(el: Element, extraKeys?: readonly string[]): void;
433
+
384
434
  interface MovementConfig {
385
435
  duration: number;
386
436
  easing: string;
@@ -488,10 +538,11 @@ interface PlayAnimationOptions {
488
538
  disabled?: boolean;
489
539
  iterations?: number;
490
540
  onDone?: () => void;
541
+ transition?: MoveTransitionConfig;
491
542
  }
492
543
  declare class AnimationEngine {
493
544
  #private;
494
- play(host: Element, frames: MoveKeyframes, options?: PlayAnimationOptions): AnimationControls | null;
545
+ play(host: Element, rawFrames: MoveKeyframes, options?: PlayAnimationOptions): AnimationControls | null;
495
546
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationEngine, never>;
496
547
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AnimationEngine>;
497
548
  }
@@ -515,7 +566,7 @@ declare class SpringPlayer implements AnimationControls {
515
566
  declare class WaapiPlayer implements AnimationControls {
516
567
  #private;
517
568
  readonly finished: Promise<void>;
518
- constructor(host: Element, frames: MoveKeyframes, config: MovementConfig, onDone?: () => void);
569
+ constructor(host: Element, frames: MoveKeyframes | Keyframe[], config: MovementConfig, onDone?: () => void);
519
570
  play(): void;
520
571
  pause(): void;
521
572
  cancel(): void;
@@ -523,12 +574,47 @@ declare class WaapiPlayer implements AnimationControls {
523
574
  set currentTime(time: number);
524
575
  }
525
576
 
577
+ interface ResolvedTransition {
578
+ keyframes: Keyframe[];
579
+ duration: number;
580
+ easing: string;
581
+ delay: number;
582
+ }
583
+ declare function composeTransitionKeyframes(frames: MoveKeyframes, transition: MoveTransitionConfig, baseConfig: MovementConfig): ResolvedTransition | null;
584
+
526
585
  declare const MOVE_PRESETS: Record<MovePreset, MovePresetDefinition>;
527
586
 
587
+ /**
588
+ * Returns keyframes for a path-drawing animation.
589
+ * Ideal for SVG `<path>`, `<circle>`, `<line>`, etc.
590
+ *
591
+ * @example
592
+ * ```html
593
+ * <path [moveTarget]="animate()" [moveFrames]="movePathDraw({ opacity: [0, 1] })" moveDuration="700" />
594
+ * ```
595
+ */
596
+ declare function movePathDraw(overrides?: Partial<MoveKeyframes>): MoveKeyframes;
597
+ /**
598
+ * Returns keyframes for a subtle pulse animation on an icon.
599
+ */
600
+ declare function moveIconPulse(overrides?: Partial<MoveKeyframes>): MoveKeyframes;
601
+ /**
602
+ * Returns keyframes for a subtle bounce animation on an icon.
603
+ */
604
+ declare function moveIconBounce(overrides?: Partial<MoveKeyframes>): MoveKeyframes;
605
+ /**
606
+ * Returns keyframes for a subtle shake animation on an icon.
607
+ */
608
+ declare function moveIconShake(overrides?: Partial<MoveKeyframes>): MoveKeyframes;
609
+ /**
610
+ * Returns keyframes for a subtle rotate animation on an icon.
611
+ */
612
+ declare function moveIconRotate(overrides?: Partial<MoveKeyframes>): MoveKeyframes;
613
+
528
614
  type MovementConfigInput = Partial<MovementConfig>;
529
615
  declare function provideMovement(config?: MovementConfigInput): EnvironmentProviders;
530
616
 
531
- 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, typeof MoveLoopDirective, typeof MoveTargetDirective];
617
+ 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, typeof MoveLoopDirective, typeof MoveTargetDirective, typeof MoveTriggerDirective];
532
618
 
533
- 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, MoveLoopDirective, MoveParallaxDirective, MovePresenceDirective, MoveScrollDirective, MoveSmoothScrollDirective, MoveStaggerDirective, MoveTapDirective, MoveTargetDirective, MoveTextDirective, MoveVariantsDirective, SmoothScrollService, SpringPlayer, WaapiPlayer, applyInitialStyles, clearInitialStyles, isValidScrollOffset, prefersReducedMotion, provideMovement, resolveMoveFrames, resolveMovementConfig, reverseFrames, validateDragElastic, validateSpring };
534
- export type { AnimationControls, MoveAnimationConfig, MoveDirectiveInput, MoveDragConstraints, MoveInputOverrides, MoveKeyframeState, MoveKeyframes, MovePhase, MovePresenceChild, MovePresenceProvider, MovePreset, MovePresetDefinition, MoveSpring, MoveStaggerDirection, MoveStaggerProvider, MoveValuePair, MoveVariant, MoveVariantsProvider, MovementConfig, MovementConfigInput, PlayAnimationOptions };
619
+ 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, MoveLoopDirective, MoveParallaxDirective, MovePresenceDirective, MoveScrollDirective, MoveSmoothScrollDirective, MoveStaggerDirective, MoveTapDirective, MoveTargetDirective, MoveTextDirective, MoveTriggerDirective, MoveVariantsDirective, SmoothScrollService, SpringPlayer, WaapiPlayer, applyInitialStyles, clearComposedStyle, clearInitialStyles, composeTransitionKeyframes, isValidScrollOffset, moveIconBounce, moveIconPulse, moveIconRotate, moveIconShake, movePathDraw, prefersReducedMotion, provideMovement, resolveMoveFrames, resolveMovementConfig, reverseFrames, validateDragElastic, validateSpring };
620
+ export type { AnimationControls, MoveAnimationConfig, MoveDirectiveInput, MoveDragConstraints, MoveInputOverrides, MoveKeyframeProperties, MoveKeyframeState, MoveKeyframes, MovePhase, MovePresenceChild, MovePresenceProvider, MovePreset, MovePresetDefinition, MovePropertyTransition, MoveSpring, MoveStaggerDirection, MoveStaggerProvider, MoveTransitionConfig, MoveValue, MoveValuePair, MoveVariant, MoveVariantsProvider, MovementConfig, MovementConfigInput, PlayAnimationOptions, ResolvedTransition };