simpo-component-library 3.6.559 → 3.6.560

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,131 +7,90 @@ export class AnimationDirective {
7
7
  this.el = el;
8
8
  this.renderer = renderer;
9
9
  this.eventService = eventService;
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
- };
10
+ // Listen for external changes and re-apply animation
19
11
  this.eventServiceSubscription = this.eventService.animationChangeChecks.subscribe((res) => {
20
- if (this.el.nativeElement.id === res.id) {
21
- this.animationData = res.data;
12
+ if (this.el.nativeElement.id === res?.id) {
13
+ this.animationData = res?.data;
22
14
  this.applyAnimation();
23
15
  }
24
16
  });
25
17
  }
26
- ngOnDestroy() {
27
- if (this.observer) {
28
- this.observer.disconnect();
29
- }
30
- if (this.eventServiceSubscription) {
31
- this.eventServiceSubscription.unsubscribe();
32
- }
33
- }
34
18
  ngOnInit() {
35
19
  this.createObserver();
36
- // this.applyAnimation();
37
20
  }
38
- ngOnChanges() {
39
- // this.applyAnimation();
21
+ ngOnChanges(_changes) {
22
+ this.applyAnimation();
23
+ }
24
+ ngOnDestroy() {
25
+ if (this.observer)
26
+ this.observer.disconnect();
27
+ if (this.eventServiceSubscription)
28
+ this.eventServiceSubscription.unsubscribe();
40
29
  }
41
30
  createObserver() {
31
+ if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
32
+ this.applyAnimation();
33
+ return;
34
+ }
42
35
  const options = {
43
- root: null, // Use the viewport as the container
44
- threshold: 0.1 // Percentage of element visibility required to trigger the callback
36
+ root: null,
37
+ threshold: 0.1,
45
38
  };
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);
39
+ this.observer = new IntersectionObserver((entries) => {
40
+ entries.forEach((entry) => {
41
+ if (entry.isIntersecting &&
42
+ !this.el.nativeElement.classList.contains('visible')) {
43
+ this.el.nativeElement.classList.add('visible');
44
+ this.applyAnimation();
45
+ this.observer?.unobserve(this.el.nativeElement);
46
+ }
47
+ });
48
+ }, options);
49
+ this.observer.observe(this.el.nativeElement);
50
+ }
51
+ applyAnimation() {
52
+ const name = this.getAnimationName();
53
+ const duration = this.getAnimationSpeed(this.animationData?.speed);
54
+ this.renderer.setStyle(this.el.nativeElement, 'position', 'relative');
55
+ this.restartAnimation(name, duration);
56
+ }
57
+ restartAnimation(name, durationSec) {
58
+ const el = this.el.nativeElement;
59
+ el.style.animation = 'none';
60
+ el.offsetHeight;
61
+ if (!name || name === 'none') {
62
+ el.style.removeProperty('animation');
63
+ el.style.removeProperty('animation-name');
64
+ el.style.removeProperty('animation-duration');
65
+ return;
63
66
  }
67
+ const dur = durationSec ?? '0.8s';
68
+ el.style.animation = `${name} ${dur} ease both`;
64
69
  }
65
70
  getAnimationName() {
66
- if (this.animationData?.type) {
67
- if (this.animationData?.type == 'left') {
71
+ switch (this.animationData?.type) {
72
+ case 'left':
68
73
  return 'animateleft';
69
- }
70
- if (this.animationData?.type == 'right') {
74
+ case 'right':
71
75
  return 'animateright';
72
- }
73
- if (this.animationData?.type == 'top') {
76
+ case 'top':
74
77
  return 'animatetop';
75
- }
76
- if (this.animationData?.type == 'bottom') {
78
+ case 'bottom':
77
79
  return 'animatebottom';
78
- }
79
- if (this.animationData?.type == 'fadeIn') {
80
+ case 'fadeIn':
80
81
  return 'opac';
81
- }
82
- if (this.animationData?.type == 'zoom') {
82
+ case 'zoom':
83
83
  return 'animatezoom';
84
- }
85
- if (this.animationData?.type === 'none') {
84
+ case 'none':
86
85
  return 'none';
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));
86
+ default:
87
+ return ''; // no animation
125
88
  }
126
89
  }
127
90
  getAnimationSpeed(speed) {
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;
91
+ if (!speed)
92
+ return null;
93
+ return animation.speed?.[speed] ?? null;
135
94
  }
136
95
  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 }); }
137
96
  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 }); }
@@ -146,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
146
105
  type: Input,
147
106
  args: ['simpoAnimation']
148
107
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFRNUMsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUNVLEVBQWMsRUFDZCxRQUFtQixFQUNuQixZQUE0QjtRQUY1QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFKdEMsbUJBQWMsR0FBRyxTQUFTLENBQUE7UUErSTFCLG1CQUFjLEdBQVE7WUFDcEIsSUFBSSxFQUFHLGFBQWE7WUFDcEIsS0FBSyxFQUFHLGNBQWM7WUFDdEIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsR0FBRyxFQUFHLFlBQVk7WUFDbEIsSUFBSSxFQUFHLGFBQWE7WUFDcEIsTUFBTSxFQUFHLE1BQU07U0FDaEIsQ0FBQTtRQWhKQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQy9FLENBQUMsR0FBTyxFQUFFLEVBQUU7WUFDVixJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxJQUFJ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QztRQUNsSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQXFCO1FBQ3JDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUNuQixLQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7WUFDMUMsSUFBRyxHQUFHLEtBQUssS0FBSyxFQUFDLENBQUM7Z0JBQ2pCLFVBQVUsR0FBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzsrR0FsSlUsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO21JQUUwQixhQUFhO3NCQUFyQyxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBhbmltYXRpb24gfSBmcm9tICcuLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25Nb2RlbCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFOSU1BVElPTl9TUEVFRCB9IGZyb20gJy4uL3N0eWxlcy90eXBlcyc7XHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NpbXBvQW5pbWF0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnc2ltcG9BbmltYXRpb24nKSBhbmltYXRpb25EYXRhPzogQW5pbWF0aW9uTW9kZWw7XHJcbiAgZXZlbnRTZXJ2aWNlU3Vic2NyaXB0aW9uIDogYW55O1xyXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICBhbmltYXRpb25TcGVlZCA9IGFuaW1hdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5ldmVudFNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLmV2ZW50U2VydmljZS5hbmltYXRpb25DaGFuZ2VDaGVja3Muc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOmFueSkgPT4ge1xyXG4gICAgICAgIGlmKHRoaXMuZWwubmF0aXZlRWxlbWVudC5pZCA9PT0gcmVzLmlkKXtcclxuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmV2ZW50U2VydmljZVN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVPYnNlcnZlcigpO1xyXG4gICAgLy8gdGhpcy5hcHBseUFuaW1hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU9ic2VydmVyKCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIHJvb3Q6IG51bGwsIC8vIFVzZSB0aGUgdmlld3BvcnQgYXMgdGhlIGNvbnRhaW5lclxyXG4gICAgICB0aHJlc2hvbGQ6IDAuMSAvLyBQZXJjZW50YWdlIG9mIGVsZW1lbnQgdmlzaWJpbGl0eSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoZSBjYWxsYmFja1xyXG4gICAgfTtcclxuICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93KSB7XHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbnRyeS5pc0ludGVyc2VjdGluZyAmJlxyXG4gICAgICAgICAgICAhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5pbmNsdWRlcygndmlzaWJsZScpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcclxuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1uYW1lJywgdGhpcy5nZXRBbmltYXRpb25OYW1lKCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8uc3BlZWQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBzcGVlZCA9IGFuaW1hdGlvbi5zcGVlZFt0aGlzLmFuaW1hdGlvbkRhdGE/LnNwZWVkXTtcclxuICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIHRoaXMuZ2V0QW5pbWF0aW9uU3BlZWQodGhpcy5hbmltYXRpb25EYXRhLnNwZWVkKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCBvcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldEFuaW1hdGlvbk5hbWUoKSB7XHJcbiAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy50eXBlKSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy50eXBlID09ICdsZWZ0Jykge1xyXG4gICAgICAgIHJldHVybiAnYW5pbWF0ZWxlZnQnXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSA9PSAncmlnaHQnKSB7XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRlcmlnaHQnXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSA9PSAndG9wJykge1xyXG4gICAgICAgIHJldHVybiAnYW5pbWF0ZXRvcCdcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy50eXBlID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRlYm90dG9tJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkRhdGE/LnR5cGUgPT0gJ2ZhZGVJbicpIHtcclxuICAgICAgICByZXR1cm4gJ29wYWMnXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSA9PSAnem9vbScpIHtcclxuICAgICAgICByZXR1cm4gJ2FuaW1hdGV6b29tJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkRhdGE/LnR5cGUgPT09ICdub25lJykge1xyXG4gICAgICAgIHJldHVybiAnbm9uZSdcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmFtZTogYW55O1xyXG5cclxuICBwcml2YXRlIGFwcGx5QW5pbWF0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRGF0YT8udHlwZSkge1xyXG4gICAgICBjb25zdCBhbmltID0gYW5pbWF0aW9uLnR5cGVbdGhpcy5hbmltYXRpb25EYXRhPy50eXBlXTtcclxuICAgICAgLy8gdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsYW5pbSk7XHJcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCBhbmltKTtcclxuICAgICAgaWYodGhpcy5hbmltYXRpb25EYXRhLnR5cGUgPT0gJ2xlZnQnKXtcclxuICAgICAgICB0aGlzLm5hbWUgPSAnYW5pbWF0ZWxlZnQnXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5hbmltYXRpb25EYXRhLnR5cGUgPT0gJ3JpZ2h0Jyl7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJ2FuaW1hdGVyaWdodCdcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmFuaW1hdGlvbkRhdGEudHlwZSA9PSAndG9wJyl7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJ2FuaW1hdGV0b3AnXHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5hbmltYXRpb25EYXRhLnR5cGUgPT0gJ2JvdHRvbScpe1xyXG4gICAgICAgIHRoaXMubmFtZSA9ICdhbmltYXRlYm90dG9tJ1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuYW5pbWF0aW9uRGF0YS50eXBlID09ICdmYWRlSW4nKXtcclxuICAgICAgICB0aGlzLm5hbWUgPSAnb3BhYydcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmFuaW1hdGlvbkRhdGEudHlwZSA9PSAnem9vbScpe1xyXG4gICAgICAgIHRoaXMubmFtZSA9ICdhbmltYXRlem9vbSdcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmFuaW1hdGlvbkRhdGEudHlwZSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1uYW1lJywgdGhpcy5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hbmltYXRpb25EYXRhPy5zcGVlZCkge1xyXG4gICAgICBjb25zdCBzcGVlZCA9IGFuaW1hdGlvbi5zcGVlZFt0aGlzLmFuaW1hdGlvbkRhdGE/LnNwZWVkXTtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJ2FuaW1hdGlvbi1uYW1lJywgdGhpcy5uYW1lKTtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCdhbmltYXRpb24tZHVyYXRpb24nLCB0aGlzLmdldEFuaW1hdGlvblNwZWVkKHRoaXMuYW5pbWF0aW9uRGF0YS5zcGVlZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QW5pbWF0aW9uU3BlZWQoc3BlZWQ6QU5JTUFUSU9OX1NQRUVEKXtcclxuICAgIGxldCBzcGVlZEluU2VjID0gJydcclxuICAgIGZvcihsZXQga2V5IG9mIE9iamVjdC5rZXlzKGFuaW1hdGlvbi5zcGVlZCkpe1xyXG4gICAgICAgaWYoa2V5ID09PSBzcGVlZCl7XHJcbiAgICAgICAgc3BlZWRJblNlYyA9ICBhbmltYXRpb24uc3BlZWRba2V5XTtcclxuICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzcGVlZEluU2VjO1xyXG4gIH1cclxuXHJcbiAgYW5pbWF0aW9uVHlwZXMgOiBhbnkgPXtcclxuICAgIGxlZnQgOiBcImFuaW1hdGVsZWZ0XCIsXHJcbiAgICByaWdodCA6IFwiYW5pbWF0ZXJpZ2h0XCIsXHJcbiAgICBib3R0b20gOlwiYW5pbWF0ZWJvdHRvbVwiLFxyXG4gICAgdG9wIDogXCJhbmltYXRldG9wXCIsXHJcbiAgICB6b29tIDogXCJhbmltYXRlem9vbVwiLFxyXG4gICAgZmFkZUluIDogXCJvcGFjXCJcclxuICB9XHJcbn0iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBTU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFTNUMsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUNVLEVBQTJCLEVBQzNCLFFBQW1CLEVBQ25CLFlBQTJCO1FBRjNCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFFbkMscURBQXFEO1FBQ3JELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FDL0UsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDO2dCQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUF1QjtRQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyx3QkFBd0I7WUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakYsQ0FBQztJQUdPLGNBQWM7UUFDcEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLHNCQUFzQixJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQTZCO1lBQ3hDLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLEdBQUc7U0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN4QixJQUNFLEtBQUssQ0FBQyxjQUFjO29CQUNwQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3BELENBQUM7b0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFWixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsV0FBMEI7UUFDL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFFakMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFFaEIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDN0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxQyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsV0FBVyxJQUFJLE1BQU0sQ0FBQztRQUNsQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQztJQUNsRCxDQUFDO0lBQ08sZ0JBQWdCO1FBQ3RCLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxhQUFhLENBQUM7WUFDdkIsS0FBSyxPQUFPO2dCQUNWLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssS0FBSztnQkFDUixPQUFPLFlBQVksQ0FBQztZQUN0QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxlQUFlLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssTUFBTTtnQkFDVCxPQUFPLGFBQWEsQ0FBQztZQUN2QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsT0FBTyxFQUFFLENBQUMsQ0FBQyxlQUFlO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBdUI7UUFDL0MsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDMUMsQ0FBQzsrR0E5R1Usa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO21JQUUwQixhQUFhO3NCQUFyQyxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFuaW1hdGlvbiB9IGZyb20gJy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbk1vZGVsIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQU5JTUFUSU9OX1NQRUVEIH0gZnJvbSAnLi4vc3R5bGVzL3R5cGVzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NpbXBvQW5pbWF0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnc2ltcG9BbmltYXRpb24nKSBhbmltYXRpb25EYXRhPzogQW5pbWF0aW9uTW9kZWw7XHJcblxyXG4gIHByaXZhdGUgb2JzZXJ2ZXI/OiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuICBwcml2YXRlIGV2ZW50U2VydmljZVN1YnNjcmlwdGlvbjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2VcclxuICApIHtcclxuICAgIC8vIExpc3RlbiBmb3IgZXh0ZXJuYWwgY2hhbmdlcyBhbmQgcmUtYXBwbHkgYW5pbWF0aW9uXHJcbiAgICB0aGlzLmV2ZW50U2VydmljZVN1YnNjcmlwdGlvbiA9IHRoaXMuZXZlbnRTZXJ2aWNlLmFuaW1hdGlvbkNoYW5nZUNoZWNrcy5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaWQgPT09IHJlcz8uaWQpIHtcclxuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRGF0YSA9IHJlcz8uZGF0YTtcclxuICAgICAgICAgIHRoaXMuYXBwbHlBbmltYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlT2JzZXJ2ZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9ic2VydmVyKSB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgIGlmICh0aGlzLmV2ZW50U2VydmljZVN1YnNjcmlwdGlvbikgdGhpcy5ldmVudFNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU9ic2VydmVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICEoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRpb24oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcclxuICAgICAgcm9vdDogbnVsbCxcclxuICAgICAgdGhyZXNob2xkOiAwLjEsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGVudHJ5LmlzSW50ZXJzZWN0aW5nICYmXHJcbiAgICAgICAgICAhdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndmlzaWJsZScpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpO1xyXG4gICAgICAgICAgdGhpcy5hcHBseUFuaW1hdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5vYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0sIG9wdGlvbnMpO1xyXG5cclxuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUFuaW1hdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldEFuaW1hdGlvbk5hbWUoKTtcclxuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5nZXRBbmltYXRpb25TcGVlZCh0aGlzLmFuaW1hdGlvbkRhdGE/LnNwZWVkKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcclxuICAgIHRoaXMucmVzdGFydEFuaW1hdGlvbihuYW1lLCBkdXJhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc3RhcnRBbmltYXRpb24obmFtZTogc3RyaW5nLCBkdXJhdGlvblNlYzogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgZWwuc3R5bGUuYW5pbWF0aW9uID0gJ25vbmUnO1xyXG4gICAgZWwub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgIGlmICghbmFtZSB8fCBuYW1lID09PSAnbm9uZScpIHtcclxuICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbicpO1xyXG4gICAgICBlbC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYW5pbWF0aW9uLW5hbWUnKTtcclxuICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2FuaW1hdGlvbi1kdXJhdGlvbicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZHVyID0gZHVyYXRpb25TZWMgPz8gJzAuOHMnO1xyXG4gICAgZWwuc3R5bGUuYW5pbWF0aW9uID0gYCR7bmFtZX0gJHtkdXJ9IGVhc2UgYm90aGA7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0QW5pbWF0aW9uTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aGlzLmFuaW1hdGlvbkRhdGE/LnR5cGUpIHtcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRlbGVmdCc7XHJcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICByZXR1cm4gJ2FuaW1hdGVyaWdodCc7XHJcbiAgICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgICAgcmV0dXJuICdhbmltYXRldG9wJztcclxuICAgICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgICByZXR1cm4gJ2FuaW1hdGVib3R0b20nO1xyXG4gICAgICBjYXNlICdmYWRlSW4nOlxyXG4gICAgICAgIHJldHVybiAnb3BhYyc7XHJcbiAgICAgIGNhc2UgJ3pvb20nOlxyXG4gICAgICAgIHJldHVybiAnYW5pbWF0ZXpvb20nO1xyXG4gICAgICBjYXNlICdub25lJzpcclxuICAgICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJzsgLy8gbm8gYW5pbWF0aW9uXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFuaW1hdGlvblNwZWVkKHNwZWVkPzogQU5JTUFUSU9OX1NQRUVEKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIXNwZWVkKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBhbmltYXRpb24uc3BlZWQ/LltzcGVlZF0gPz8gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
@@ -4255,131 +4255,90 @@ class AnimationDirective {
4255
4255
  this.el = el;
4256
4256
  this.renderer = renderer;
4257
4257
  this.eventService = eventService;
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
- };
4258
+ // Listen for external changes and re-apply animation
4267
4259
  this.eventServiceSubscription = this.eventService.animationChangeChecks.subscribe((res) => {
4268
- if (this.el.nativeElement.id === res.id) {
4269
- this.animationData = res.data;
4260
+ if (this.el.nativeElement.id === res?.id) {
4261
+ this.animationData = res?.data;
4270
4262
  this.applyAnimation();
4271
4263
  }
4272
4264
  });
4273
4265
  }
4274
- ngOnDestroy() {
4275
- if (this.observer) {
4276
- this.observer.disconnect();
4277
- }
4278
- if (this.eventServiceSubscription) {
4279
- this.eventServiceSubscription.unsubscribe();
4280
- }
4281
- }
4282
4266
  ngOnInit() {
4283
4267
  this.createObserver();
4284
- // this.applyAnimation();
4285
4268
  }
4286
- ngOnChanges() {
4287
- // this.applyAnimation();
4269
+ ngOnChanges(_changes) {
4270
+ this.applyAnimation();
4271
+ }
4272
+ ngOnDestroy() {
4273
+ if (this.observer)
4274
+ this.observer.disconnect();
4275
+ if (this.eventServiceSubscription)
4276
+ this.eventServiceSubscription.unsubscribe();
4288
4277
  }
4289
4278
  createObserver() {
4279
+ if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
4280
+ this.applyAnimation();
4281
+ return;
4282
+ }
4290
4283
  const options = {
4291
- root: null, // Use the viewport as the container
4292
- threshold: 0.1 // Percentage of element visibility required to trigger the callback
4284
+ root: null,
4285
+ threshold: 0.1,
4293
4286
  };
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);
4287
+ this.observer = new IntersectionObserver((entries) => {
4288
+ entries.forEach((entry) => {
4289
+ if (entry.isIntersecting &&
4290
+ !this.el.nativeElement.classList.contains('visible')) {
4291
+ this.el.nativeElement.classList.add('visible');
4292
+ this.applyAnimation();
4293
+ this.observer?.unobserve(this.el.nativeElement);
4294
+ }
4295
+ });
4296
+ }, options);
4297
+ this.observer.observe(this.el.nativeElement);
4298
+ }
4299
+ applyAnimation() {
4300
+ const name = this.getAnimationName();
4301
+ const duration = this.getAnimationSpeed(this.animationData?.speed);
4302
+ this.renderer.setStyle(this.el.nativeElement, 'position', 'relative');
4303
+ this.restartAnimation(name, duration);
4304
+ }
4305
+ restartAnimation(name, durationSec) {
4306
+ const el = this.el.nativeElement;
4307
+ el.style.animation = 'none';
4308
+ el.offsetHeight;
4309
+ if (!name || name === 'none') {
4310
+ el.style.removeProperty('animation');
4311
+ el.style.removeProperty('animation-name');
4312
+ el.style.removeProperty('animation-duration');
4313
+ return;
4311
4314
  }
4315
+ const dur = durationSec ?? '0.8s';
4316
+ el.style.animation = `${name} ${dur} ease both`;
4312
4317
  }
4313
4318
  getAnimationName() {
4314
- if (this.animationData?.type) {
4315
- if (this.animationData?.type == 'left') {
4319
+ switch (this.animationData?.type) {
4320
+ case 'left':
4316
4321
  return 'animateleft';
4317
- }
4318
- if (this.animationData?.type == 'right') {
4322
+ case 'right':
4319
4323
  return 'animateright';
4320
- }
4321
- if (this.animationData?.type == 'top') {
4324
+ case 'top':
4322
4325
  return 'animatetop';
4323
- }
4324
- if (this.animationData?.type == 'bottom') {
4326
+ case 'bottom':
4325
4327
  return 'animatebottom';
4326
- }
4327
- if (this.animationData?.type == 'fadeIn') {
4328
+ case 'fadeIn':
4328
4329
  return 'opac';
4329
- }
4330
- if (this.animationData?.type == 'zoom') {
4330
+ case 'zoom':
4331
4331
  return 'animatezoom';
4332
- }
4333
- if (this.animationData?.type === 'none') {
4332
+ case 'none':
4334
4333
  return 'none';
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));
4334
+ default:
4335
+ return ''; // no animation
4373
4336
  }
4374
4337
  }
4375
4338
  getAnimationSpeed(speed) {
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;
4339
+ if (!speed)
4340
+ return null;
4341
+ return animation.speed?.[speed] ?? null;
4383
4342
  }
4384
4343
  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 }); }
4385
4344
  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 }); }