simpo-component-library 3.6.558 → 3.6.559

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.
@@ -7,95 +7,131 @@ export class AnimationDirective {
7
7
  this.el = el;
8
8
  this.renderer = renderer;
9
9
  this.eventService = eventService;
10
- // External animation updates
11
- this.eventServiceSubscription =
12
- this.eventService.animationChangeChecks.subscribe((res) => {
13
- if (this.el.nativeElement.id === res?.id) {
14
- this.animationData = res?.data;
15
- this.applyAnimation(true);
16
- }
17
- });
10
+ this.animationSpeed = animation;
11
+ this.animationTypes = {
12
+ left: "animateleft",
13
+ right: "animateright",
14
+ bottom: "animatebottom",
15
+ top: "animatetop",
16
+ zoom: "animatezoom",
17
+ fadeIn: "opac"
18
+ };
19
+ this.eventServiceSubscription = this.eventService.animationChangeChecks.subscribe((res) => {
20
+ if (this.el.nativeElement.id === res.id) {
21
+ this.animationData = res.data;
22
+ this.applyAnimation();
23
+ }
24
+ });
25
+ }
26
+ ngOnDestroy() {
27
+ if (this.observer) {
28
+ this.observer.disconnect();
29
+ }
30
+ if (this.eventServiceSubscription) {
31
+ this.eventServiceSubscription.unsubscribe();
32
+ }
18
33
  }
19
- /* ------------------ LIFECYCLE ------------------ */
20
34
  ngOnInit() {
21
35
  this.createObserver();
36
+ // this.applyAnimation();
22
37
  }
23
- ngOnChanges(_changes) {
24
- this.applyAnimation();
38
+ ngOnChanges() {
39
+ // this.applyAnimation();
25
40
  }
26
- ngOnDestroy() {
27
- this.observer?.disconnect();
28
- this.eventServiceSubscription?.unsubscribe();
29
- }
30
- /* ------------------ OBSERVER ------------------ */
31
41
  createObserver() {
32
- if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
33
- this.applyAnimation(true);
34
- return;
35
- }
36
- this.observer = new IntersectionObserver((entries) => {
37
- entries.forEach((entry) => {
38
- if (entry.isIntersecting) {
39
- this.applyAnimation(true);
40
- }
41
- });
42
- }, { threshold: 0.1 });
43
- this.observer.observe(this.el.nativeElement);
44
- }
45
- /* ------------------ ANIMATION CORE ------------------ */
46
- applyAnimation(force = false) {
47
- if (!this.animationData)
48
- return;
49
- const currentType = this.animationData.type;
50
- const currentSpeed = this.animationData.speed;
51
- const typeChanged = this.previousType !== currentType;
52
- const speedChanged = this.previousSpeed !== currentSpeed;
53
- this.previousType = currentType;
54
- this.previousSpeed = currentSpeed;
55
- const animationName = this.getAnimationName(currentType);
56
- const duration = this.getAnimationSpeed(currentSpeed);
57
- this.renderer.setStyle(this.el.nativeElement, 'position', 'relative');
58
- if (typeChanged || speedChanged || force) {
59
- this.restartAnimation(animationName, duration);
60
- }
61
- }
62
- restartAnimation(name, durationSec) {
63
- const el = this.el.nativeElement;
64
- // 🔁 Force animation restart
65
- el.style.animation = 'none';
66
- el.offsetHeight; // Force reflow
67
- if (!name || name === 'none') {
68
- el.style.removeProperty('animation');
69
- return;
42
+ const options = {
43
+ root: null, // Use the viewport as the container
44
+ threshold: 0.1 // Percentage of element visibility required to trigger the callback
45
+ };
46
+ if (typeof window !== 'undefined' && 'IntersectionObserver' in window) {
47
+ this.observer = new IntersectionObserver((entries) => {
48
+ entries.forEach(entry => {
49
+ if (entry.isIntersecting &&
50
+ !this.el.nativeElement.className.includes('visible')) {
51
+ this.el.nativeElement.classList.add('visible');
52
+ this.el.nativeElement.style.setProperty('position', 'relative');
53
+ this.el.nativeElement.style.setProperty('animation-name', this.getAnimationName());
54
+ if (this.animationData?.speed) {
55
+ const speed = animation.speed[this.animationData?.speed];
56
+ this.el.nativeElement.style.setProperty('animation-duration', this.getAnimationSpeed(this.animationData.speed));
57
+ }
58
+ this.observer?.unobserve(this.el.nativeElement);
59
+ }
60
+ });
61
+ }, options);
62
+ this.observer.observe(this.el.nativeElement);
70
63
  }
71
- const duration = durationSec ?? '0.8s';
72
- el.style.animation = `${name} ${duration} ease both`;
73
64
  }
74
- /* ------------------ HELPERS ------------------ */
75
- getAnimationName(type) {
76
- switch (type) {
77
- case 'left':
65
+ getAnimationName() {
66
+ if (this.animationData?.type) {
67
+ if (this.animationData?.type == 'left') {
78
68
  return 'animateleft';
79
- case 'right':
69
+ }
70
+ if (this.animationData?.type == 'right') {
80
71
  return 'animateright';
81
- case 'top':
72
+ }
73
+ if (this.animationData?.type == 'top') {
82
74
  return 'animatetop';
83
- case 'bottom':
75
+ }
76
+ if (this.animationData?.type == 'bottom') {
84
77
  return 'animatebottom';
85
- case 'fadeIn':
78
+ }
79
+ if (this.animationData?.type == 'fadeIn') {
86
80
  return 'opac';
87
- case 'zoom':
81
+ }
82
+ if (this.animationData?.type == 'zoom') {
88
83
  return 'animatezoom';
89
- case 'none':
84
+ }
85
+ if (this.animationData?.type === 'none') {
90
86
  return 'none';
91
- default:
92
- return '';
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ applyAnimation() {
92
+ if (this.animationData?.type) {
93
+ const anim = animation.type[this.animationData?.type];
94
+ // this.renderer.removeClass(this.el.nativeElement,anim);
95
+ // this.renderer.addClass(this.el.nativeElement, anim);
96
+ if (this.animationData.type == 'left') {
97
+ this.name = 'animateleft';
98
+ }
99
+ if (this.animationData.type == 'right') {
100
+ this.name = 'animateright';
101
+ }
102
+ if (this.animationData.type == 'top') {
103
+ this.name = 'animatetop';
104
+ }
105
+ if (this.animationData.type == 'bottom') {
106
+ this.name = 'animatebottom';
107
+ }
108
+ if (this.animationData.type == 'fadeIn') {
109
+ this.name = 'opac';
110
+ }
111
+ if (this.animationData.type == 'zoom') {
112
+ this.name = 'animatezoom';
113
+ }
114
+ if (this.animationData.type === 'none') {
115
+ this.name = 'none';
116
+ }
117
+ this.el.nativeElement.style.setProperty('position', 'relative');
118
+ this.el.nativeElement.style.setProperty('animation-name', this.name);
119
+ }
120
+ if (this.animationData?.speed) {
121
+ const speed = animation.speed[this.animationData?.speed];
122
+ this.el.nativeElement.style.setProperty('position', 'relative');
123
+ this.el.nativeElement.style.setProperty('animation-name', this.name);
124
+ this.el.nativeElement.style.setProperty('animation-duration', this.getAnimationSpeed(this.animationData.speed));
93
125
  }
94
126
  }
95
127
  getAnimationSpeed(speed) {
96
- if (!speed)
97
- return null;
98
- return animation.speed?.[speed] ?? null;
128
+ let speedInSec = '';
129
+ for (let key of Object.keys(animation.speed)) {
130
+ if (key === speed) {
131
+ speedInSec = animation.speed[key];
132
+ }
133
+ }
134
+ return speedInSec;
99
135
  }
100
136
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnimationDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Directive }); }
101
137
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnimationDirective, isStandalone: true, selector: "[simpoAnimation]", inputs: { animationData: ["simpoAnimation", "animationData"] }, usesOnChanges: true, ngImport: i0 }); }
@@ -110,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
110
146
  type: Input,
111
147
  args: ['simpoAnimation']
112
148
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBTU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFTNUMsTUFBTSxPQUFPLGtCQUFrQjtJQVU3QixZQUNVLEVBQTJCLEVBQzNCLFFBQW1CLEVBQ25CLFlBQTJCO1FBRjNCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFFbkMsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyx3QkFBd0I7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDN0QsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUM7b0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxREFBcUQ7SUFFckQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQXVCO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7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QUFjLENBQUM7WUFDeEIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssUUFBUTtnQkFDWCxPQUFPLGVBQWUsQ0FBQztZQUN6QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBdUI7UUFDL0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDMUMsQ0FBQzsrR0FuSVUsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO21JQUUwQixhQUFhO3NCQUFyQyxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFuaW1hdGlvbiB9IGZyb20gJy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbk1vZGVsIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQU5JTUFUSU9OX1NQRUVEIH0gZnJvbSAnLi4vc3R5bGVzL3R5cGVzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NpbXBvQW5pbWF0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnc2ltcG9BbmltYXRpb24nKSBhbmltYXRpb25EYXRhPzogQW5pbWF0aW9uTW9kZWw7XHJcblxyXG4gIHByaXZhdGUgb2JzZXJ2ZXI/OiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuICBwcml2YXRlIGV2ZW50U2VydmljZVN1YnNjcmlwdGlvbjogYW55O1xyXG5cclxuICAvLyBUcmFjayBwcmV2aW91cyBhbmltYXRpb24gc3RhdGVcclxuICBwcml2YXRlIHByZXZpb3VzVHlwZT86IHN0cmluZztcclxuICBwcml2YXRlIHByZXZpb3VzU3BlZWQ/OiBBTklNQVRJT05fU1BFRUQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRzU2VydmljZVxyXG4gICkge1xyXG4gICAgLy8gRXh0ZXJuYWwgYW5pbWF0aW9uIHVwZGF0ZXNcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlU3Vic2NyaXB0aW9uID1cclxuICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYW5pbWF0aW9uQ2hhbmdlQ2hlY2tzLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkID09PSByZXM/LmlkKSB7XHJcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbkRhdGEgPSByZXM/LmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0gTElGRUNZQ0xFIC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlT2JzZXJ2ZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tIE9CU0VSVkVSIC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuICBwcml2YXRlIGNyZWF0ZU9ic2VydmVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICEoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRpb24odHJ1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxyXG4gICAgICAoZW50cmllcykgPT4ge1xyXG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IHRocmVzaG9sZDogMC4xIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0gQU5JTUFUSU9OIENPUkUgLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG4gIHByaXZhdGUgYXBwbHlBbmltYXRpb24oZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFuaW1hdGlvbkRhdGEpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50VHlwZSA9IHRoaXMuYW5pbWF0aW9uRGF0YS50eXBlO1xyXG4gICAgY29uc3QgY3VycmVudFNwZWVkID0gdGhpcy5hbmltYXRpb25EYXRhLnNwZWVkO1xyXG5cclxuICAgIGNvbnN0IHR5cGVDaGFuZ2VkID0gdGhpcy5wcmV2aW91c1R5cGUgIT09IGN1cnJlbnRUeXBlO1xyXG4gICAgY29uc3Qgc3BlZWRDaGFuZ2VkID0gdGhpcy5wcmV2aW91c1NwZWVkICE9PSBjdXJyZW50U3BlZWQ7XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1R5cGUgPSBjdXJyZW50VHlwZTtcclxuICAgIHRoaXMucHJldmlvdXNTcGVlZCA9IGN1cnJlbnRTcGVlZDtcclxuXHJcbiAgICBjb25zdCBhbmltYXRpb25OYW1lID0gdGhpcy5nZXRBbmltYXRpb25OYW1lKGN1cnJlbnRUeXBlKTtcclxuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5nZXRBbmltYXRpb25TcGVlZChjdXJyZW50U3BlZWQpO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcclxuXHJcbiAgICBpZiAodHlwZUNoYW5nZWQgfHwgc3BlZWRDaGFuZ2VkIHx8IGZvcmNlKSB7XHJcbiAgICAgIHRoaXMucmVzdGFydEFuaW1hdGlvbihhbmltYXRpb25OYW1lLCBkdXJhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc3RhcnRBbmltYXRpb24oXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBkdXJhdGlvblNlYzogc3RyaW5nIHwgbnVsbFxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgLy8g8J+UgSBGb3JjZSBhbmltYXRpb24gcmVzdGFydFxyXG4gICAgZWwuc3R5bGUuYW5pbWF0aW9uID0gJ25vbmUnO1xyXG4gICAgZWwub2Zmc2V0SGVpZ2h0OyAvLyBGb3JjZSByZWZsb3dcclxuXHJcbiAgICBpZiAoIW5hbWUgfHwgbmFtZSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmltYXRpb24nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGR1cmF0aW9uID0gZHVyYXRpb25TZWMgPz8gJzAuOHMnO1xyXG4gICAgZWwuc3R5bGUuYW5pbWF0aW9uID0gYCR7bmFtZX0gJHtkdXJhdGlvbn0gZWFzZSBib3RoYDtcclxuICB9XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLSBIRUxQRVJTIC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuICBwcml2YXRlIGdldEFuaW1hdGlvbk5hbWUodHlwZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRlbGVmdCc7XHJcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICByZXR1cm4gJ2FuaW1hdGVyaWdodCc7XHJcbiAgICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRldG9wJztcclxuICAgICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgICByZXR1cm4gJ2FuaW1hdGVib3R0b20nO1xyXG4gICAgICBjYXNlICdmYWRlSW4nOlxyXG4gICAgICAgIHJldHVybiAnb3BhYyc7XHJcbiAgICAgIGNhc2UgJ3pvb20nOlxyXG4gICAgICAgIHJldHVybiAnYW5pbWF0ZXpvb20nO1xyXG4gICAgICBjYXNlICdub25lJzpcclxuICAgICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QW5pbWF0aW9uU3BlZWQoc3BlZWQ/OiBBTklNQVRJT05fU1BFRUQpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghc3BlZWQpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIGFuaW1hdGlvbi5zcGVlZD8uW3NwZWVkXSA/PyBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFRNUMsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixZQUE0QjtRQUY1QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFKdEMsbUJBQWMsR0FBRyxTQUFTLENBQUE7UUErSTFCLG1CQUFjLEdBQVE7WUFDcEIsSUFBSSxFQUFHLGFBQWE7WUFDcEIsS0FBSyxFQUFHLGNBQWM7WUFDdEIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsR0FBRyxFQUFHLFlBQVk7WUFDbEIsSUFBSSxFQUFHLGFBQWE7WUFDcEIsTUFBTSxFQUFHLE1BQU07U0FDaEIsQ0FBQTtRQWhKQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQy9FLENBQUMsR0FBTyxFQUFFLEVBQUU7WUFDVixJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxJQUFJ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QztRQUNsSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQXFCO1FBQ3JDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUNuQixLQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7WUFDMUMsSUFBRyxHQUFHLEtBQUssS0FBSyxFQUFDLENBQUM7Z0JBQ2pCLFVBQVUsR0FBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzsrR0FsSlUsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO21JQUUwQixhQUFhO3NCQUFyQyxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBhbmltYXRpb24gfSBmcm9tICcuLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25Nb2RlbCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFOSU1BVElPTl9TUEVFRCB9IGZyb20gJy4uL3N0eWxlcy90eXBlcyc7XHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NpbXBvQW5pbWF0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnc2ltcG9BbmltYXRpb24nKSBhbmltYXRpb25EYXRhPzogQW5pbWF0aW9uTW9kZWw7XHJcbiAgZXZlbnRTZXJ2aWNlU3Vic2NyaXB0aW9uIDogYW55O1xyXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICBhbmltYXRpb25TcGVlZCA9IGFuaW1hdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5ldmVudFNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50U2VydmljZS5hbmltYXRpb25DaGFuZ2VDaGVja3Muc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOmFueSkgPT4ge1xyXG4gICAgICAgIGlmKHRoaXMuZWwubmF0aXZlRWxlbWVudC5pZCA9PT0gcmVzLmlkKXtcclxuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmV2ZW50U2VydmljZVN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVPYnNlcnZlcigpO1xyXG4gICAgLy8gdGhpcy5hcHBseUFuaW1hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU9ic2VydmVyKCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIHJvb3Q6IG51bGwsIC8vIFVzZSB0aGUgdmlld3BvcnQgYXMgdGhlIGNvbnRhaW5lclxyXG4gICAgICB0aHJlc2hvbGQ6IDAuMSAvLyBQZXJjZW50YWdlIG9mIGVsZW1lbnQgdmlzaWJpbGl0eSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoZSBjYWxsYmFja1xyXG4gICAgfTtcclxuICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93KSB7XHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbnRyeS5pc0ludGVyc2VjdGluZyAmJlxyXG4gICAgICAgICAgICAhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5pbmNsdWRlcygndmlzaWJsZScpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1uYW1lJywgdGhpcy5nZXRBbmltYXRpb25OYW1lKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8uc3BlZWQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBzcGVlZCA9IGFuaW1hdGlvbi5zcGVlZFt0aGlzLmFuaW1hdGlvbkRhdGE/LnNwZWVkXTtcclxuICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIHRoaXMuZ2V0QW5pbWF0aW9uU3BlZWQodGhpcy5hbmltYXRpb25EYXRhLnNwZWVkKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCBvcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldEFuaW1hdGlvbk5hbWUoKSB7XHJcbiAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy50eXBlKSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy50eXBlID09ICdsZWZ0Jykge1xyXG4gICAgICAgIHJldHVybiAnYW5pbWF0ZWxlZnQnXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSA9PSAncmlnaHQnKSB7XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRlcmlnaHQnXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSA9PSAndG9wJykge1xyXG4gICAgICAgIHJldHVybiAnYW5pbWF0ZXRvcCdcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy50eXBlID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRlYm90dG9tJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkRhdGE/LnR5cGUgPT0gJ2ZhZGVJbicpIHtcclxuICAgICAgICByZXR1cm4gJ29wYWMnXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSA9PSAnem9vbScpIHtcclxuICAgICAgICByZXR1cm4gJ2FuaW1hdGV6b29tJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkRhdGE/LnR5cGUgPT09ICdub25lJykge1xyXG4gICAgICAgIHJldHVybiAnbm9uZSdcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmFtZTogYW55O1xyXG5cclxuICBwcml2YXRlIGFwcGx5QW5pbWF0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSkge1xyXG4gICAgICBjb25zdCBhbmltID0gYW5pbWF0aW9uLnR5cGVbdGhpcy5hbmltYXRpb25EYXRhPy50eXBlXTtcclxuICAgICAgLy8gdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsYW5pbSk7XHJcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCBhbmltKTtcclxuICAgICAgaWYodGhpcy5hbmltYXRpb25EYXRhLnR5cGUgPT0gJ2xlZnQnKXtcclxuICAgICAgICB0aGlzLm5hbWUgPSAnYW5pbWF0ZWxlZnQnXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5hbmltYXRpb25EYXRhLnR5cGUgPT0gJ3JpZ2h0Jyl7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJ2FuaW1hdGVyaWdodCdcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmFuaW1hdGlvbkRhdGEudHlwZSA9PSAndG9wJyl7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJ2FuaW1hdGV0b3AnXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5hbmltYXRpb25EYXRhLnR5cGUgPT0gJ2JvdHRvbScpe1xyXG4gICAgICAgIHRoaXMubmFtZSA9ICdhbmltYXRlYm90dG9tJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuYW5pbWF0aW9uRGF0YS50eXBlID09ICdmYWRlSW4nKXtcclxuICAgICAgICB0aGlzLm5hbWUgPSAnb3BhYydcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmFuaW1hdGlvbkRhdGEudHlwZSA9PSAnem9vbScpe1xyXG4gICAgICAgIHRoaXMubmFtZSA9ICdhbmltYXRlem9vbSdcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmFuaW1hdGlvbkRhdGEudHlwZSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1uYW1lJywgdGhpcy5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy5zcGVlZCkge1xyXG4gICAgICBjb25zdCBzcGVlZCA9IGFuaW1hdGlvbi5zcGVlZFt0aGlzLmFuaW1hdGlvbkRhdGE/LnNwZWVkXTtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1uYW1lJywgdGhpcy5uYW1lKTtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdhbmltYXRpb24tZHVyYXRpb24nLCB0aGlzLmdldEFuaW1hdGlvblNwZWVkKHRoaXMuYW5pbWF0aW9uRGF0YS5zcGVlZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QW5pbWF0aW9uU3BlZWQoc3BlZWQ6QU5JTUFUSU9OX1NQRUVEKXtcclxuICAgIGxldCBzcGVlZEluU2VjID0gJydcclxuICAgIGZvcihsZXQga2V5IG9mIE9iamVjdC5rZXlzKGFuaW1hdGlvbi5zcGVlZCkpe1xyXG4gICAgICAgaWYoa2V5ID09PSBzcGVlZCl7XHJcbiAgICAgICAgc3BlZWRJblNlYyA9ICBhbmltYXRpb24uc3BlZWRba2V5XTtcclxuICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzcGVlZEluU2VjO1xyXG4gIH1cclxuXHJcbiAgYW5pbWF0aW9uVHlwZXMgOiBhbnkgPXtcclxuICAgIGxlZnQgOiBcImFuaW1hdGVsZWZ0XCIsXHJcbiAgICByaWdodCA6IFwiYW5pbWF0ZXJpZ2h0XCIsXHJcbiAgICBib3R0b20gOlwiYW5pbWF0ZWJvdHRvbVwiLFxyXG4gICAgdG9wIDogXCJhbmltYXRldG9wXCIsXHJcbiAgICB6b29tIDogXCJhbmltYXRlem9vbVwiLFxyXG4gICAgZmFkZUluIDogXCJvcGFjXCJcclxuICB9XHJcbn0iXX0=
@@ -4255,95 +4255,131 @@ class AnimationDirective {
4255
4255
  this.el = el;
4256
4256
  this.renderer = renderer;
4257
4257
  this.eventService = eventService;
4258
- // External animation updates
4259
- this.eventServiceSubscription =
4260
- this.eventService.animationChangeChecks.subscribe((res) => {
4261
- if (this.el.nativeElement.id === res?.id) {
4262
- this.animationData = res?.data;
4263
- this.applyAnimation(true);
4264
- }
4265
- });
4258
+ this.animationSpeed = animation;
4259
+ this.animationTypes = {
4260
+ left: "animateleft",
4261
+ right: "animateright",
4262
+ bottom: "animatebottom",
4263
+ top: "animatetop",
4264
+ zoom: "animatezoom",
4265
+ fadeIn: "opac"
4266
+ };
4267
+ this.eventServiceSubscription = this.eventService.animationChangeChecks.subscribe((res) => {
4268
+ if (this.el.nativeElement.id === res.id) {
4269
+ this.animationData = res.data;
4270
+ this.applyAnimation();
4271
+ }
4272
+ });
4273
+ }
4274
+ ngOnDestroy() {
4275
+ if (this.observer) {
4276
+ this.observer.disconnect();
4277
+ }
4278
+ if (this.eventServiceSubscription) {
4279
+ this.eventServiceSubscription.unsubscribe();
4280
+ }
4266
4281
  }
4267
- /* ------------------ LIFECYCLE ------------------ */
4268
4282
  ngOnInit() {
4269
4283
  this.createObserver();
4284
+ // this.applyAnimation();
4270
4285
  }
4271
- ngOnChanges(_changes) {
4272
- this.applyAnimation();
4273
- }
4274
- ngOnDestroy() {
4275
- this.observer?.disconnect();
4276
- this.eventServiceSubscription?.unsubscribe();
4286
+ ngOnChanges() {
4287
+ // this.applyAnimation();
4277
4288
  }
4278
- /* ------------------ OBSERVER ------------------ */
4279
4289
  createObserver() {
4280
- if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
4281
- this.applyAnimation(true);
4282
- return;
4283
- }
4284
- this.observer = new IntersectionObserver((entries) => {
4285
- entries.forEach((entry) => {
4286
- if (entry.isIntersecting) {
4287
- this.applyAnimation(true);
4288
- }
4289
- });
4290
- }, { threshold: 0.1 });
4291
- this.observer.observe(this.el.nativeElement);
4292
- }
4293
- /* ------------------ ANIMATION CORE ------------------ */
4294
- applyAnimation(force = false) {
4295
- if (!this.animationData)
4296
- return;
4297
- const currentType = this.animationData.type;
4298
- const currentSpeed = this.animationData.speed;
4299
- const typeChanged = this.previousType !== currentType;
4300
- const speedChanged = this.previousSpeed !== currentSpeed;
4301
- this.previousType = currentType;
4302
- this.previousSpeed = currentSpeed;
4303
- const animationName = this.getAnimationName(currentType);
4304
- const duration = this.getAnimationSpeed(currentSpeed);
4305
- this.renderer.setStyle(this.el.nativeElement, 'position', 'relative');
4306
- if (typeChanged || speedChanged || force) {
4307
- this.restartAnimation(animationName, duration);
4308
- }
4309
- }
4310
- restartAnimation(name, durationSec) {
4311
- const el = this.el.nativeElement;
4312
- // 🔁 Force animation restart
4313
- el.style.animation = 'none';
4314
- el.offsetHeight; // Force reflow
4315
- if (!name || name === 'none') {
4316
- el.style.removeProperty('animation');
4317
- return;
4290
+ const options = {
4291
+ root: null, // Use the viewport as the container
4292
+ threshold: 0.1 // Percentage of element visibility required to trigger the callback
4293
+ };
4294
+ if (typeof window !== 'undefined' && 'IntersectionObserver' in window) {
4295
+ this.observer = new IntersectionObserver((entries) => {
4296
+ entries.forEach(entry => {
4297
+ if (entry.isIntersecting &&
4298
+ !this.el.nativeElement.className.includes('visible')) {
4299
+ this.el.nativeElement.classList.add('visible');
4300
+ this.el.nativeElement.style.setProperty('position', 'relative');
4301
+ this.el.nativeElement.style.setProperty('animation-name', this.getAnimationName());
4302
+ if (this.animationData?.speed) {
4303
+ const speed = animation.speed[this.animationData?.speed];
4304
+ this.el.nativeElement.style.setProperty('animation-duration', this.getAnimationSpeed(this.animationData.speed));
4305
+ }
4306
+ this.observer?.unobserve(this.el.nativeElement);
4307
+ }
4308
+ });
4309
+ }, options);
4310
+ this.observer.observe(this.el.nativeElement);
4318
4311
  }
4319
- const duration = durationSec ?? '0.8s';
4320
- el.style.animation = `${name} ${duration} ease both`;
4321
4312
  }
4322
- /* ------------------ HELPERS ------------------ */
4323
- getAnimationName(type) {
4324
- switch (type) {
4325
- case 'left':
4313
+ getAnimationName() {
4314
+ if (this.animationData?.type) {
4315
+ if (this.animationData?.type == 'left') {
4326
4316
  return 'animateleft';
4327
- case 'right':
4317
+ }
4318
+ if (this.animationData?.type == 'right') {
4328
4319
  return 'animateright';
4329
- case 'top':
4320
+ }
4321
+ if (this.animationData?.type == 'top') {
4330
4322
  return 'animatetop';
4331
- case 'bottom':
4323
+ }
4324
+ if (this.animationData?.type == 'bottom') {
4332
4325
  return 'animatebottom';
4333
- case 'fadeIn':
4326
+ }
4327
+ if (this.animationData?.type == 'fadeIn') {
4334
4328
  return 'opac';
4335
- case 'zoom':
4329
+ }
4330
+ if (this.animationData?.type == 'zoom') {
4336
4331
  return 'animatezoom';
4337
- case 'none':
4332
+ }
4333
+ if (this.animationData?.type === 'none') {
4338
4334
  return 'none';
4339
- default:
4340
- return '';
4335
+ }
4336
+ }
4337
+ return null;
4338
+ }
4339
+ applyAnimation() {
4340
+ if (this.animationData?.type) {
4341
+ const anim = animation.type[this.animationData?.type];
4342
+ // this.renderer.removeClass(this.el.nativeElement,anim);
4343
+ // this.renderer.addClass(this.el.nativeElement, anim);
4344
+ if (this.animationData.type == 'left') {
4345
+ this.name = 'animateleft';
4346
+ }
4347
+ if (this.animationData.type == 'right') {
4348
+ this.name = 'animateright';
4349
+ }
4350
+ if (this.animationData.type == 'top') {
4351
+ this.name = 'animatetop';
4352
+ }
4353
+ if (this.animationData.type == 'bottom') {
4354
+ this.name = 'animatebottom';
4355
+ }
4356
+ if (this.animationData.type == 'fadeIn') {
4357
+ this.name = 'opac';
4358
+ }
4359
+ if (this.animationData.type == 'zoom') {
4360
+ this.name = 'animatezoom';
4361
+ }
4362
+ if (this.animationData.type === 'none') {
4363
+ this.name = 'none';
4364
+ }
4365
+ this.el.nativeElement.style.setProperty('position', 'relative');
4366
+ this.el.nativeElement.style.setProperty('animation-name', this.name);
4367
+ }
4368
+ if (this.animationData?.speed) {
4369
+ const speed = animation.speed[this.animationData?.speed];
4370
+ this.el.nativeElement.style.setProperty('position', 'relative');
4371
+ this.el.nativeElement.style.setProperty('animation-name', this.name);
4372
+ this.el.nativeElement.style.setProperty('animation-duration', this.getAnimationSpeed(this.animationData.speed));
4341
4373
  }
4342
4374
  }
4343
4375
  getAnimationSpeed(speed) {
4344
- if (!speed)
4345
- return null;
4346
- return animation.speed?.[speed] ?? null;
4376
+ let speedInSec = '';
4377
+ for (let key of Object.keys(animation.speed)) {
4378
+ if (key === speed) {
4379
+ speedInSec = animation.speed[key];
4380
+ }
4381
+ }
4382
+ return speedInSec;
4347
4383
  }
4348
4384
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnimationDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: EventsService }], target: i0.ɵɵFactoryTarget.Directive }); }
4349
4385
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AnimationDirective, isStandalone: true, selector: "[simpoAnimation]", inputs: { animationData: ["simpoAnimation", "animationData"] }, usesOnChanges: true, ngImport: i0 }); }