@kms-ngx-ui/presentational 0.0.24 → 14.0.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/README.md +28 -28
- package/{esm2015/kms-ngx-ui-presentational.js → esm2020/kms-ngx-ui-presentational.mjs} +4 -4
- package/esm2020/lib/directives/directives.module.mjs +40 -0
- package/{esm2015/lib/directives/mousewheel.directive.js → esm2020/lib/directives/mousewheel.directive.mjs} +56 -56
- package/{esm2015/lib/directives/sum-of-height.directive.js → esm2020/lib/directives/sum-of-height.directive.mjs} +74 -74
- package/{esm2015/lib/directives/swipe.directive.js → esm2020/lib/directives/swipe.directive.mjs} +183 -183
- package/esm2020/lib/directives/swipe.model.mjs +5 -0
- package/{esm2015/lib/directives/tooltip.directive.js → esm2020/lib/directives/tooltip.directive.mjs} +144 -144
- package/esm2020/lib/kms-ngx-ui-presentational.component.mjs +22 -0
- package/{esm2015/lib/kms-ngx-ui-presentational.module.js → esm2020/lib/kms-ngx-ui-presentational.module.mjs} +215 -217
- package/{esm2015/lib/kms-ngx-ui-presentational.service.js → esm2020/lib/kms-ngx-ui-presentational.service.mjs} +14 -14
- package/esm2020/lib/models/address.model.mjs +6 -0
- package/{esm2015/lib/models/iconSize.enum.js → esm2020/lib/models/iconSize.enum.mjs} +17 -17
- package/{esm2015/lib/models/image-snippet.model.js → esm2020/lib/models/image-snippet.model.mjs} +18 -18
- package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +5 -5
- package/{esm2015/lib/models/is-value.function.js → esm2020/lib/models/is-value.function.mjs} +17 -17
- package/{esm2015/lib/models/salutation.enum.js → esm2020/lib/models/salutation.enum.mjs} +8 -8
- package/{esm2015/lib/models/types/attached-file-dto.model.js → esm2020/lib/models/types/attached-file-dto.model.mjs} +6 -6
- package/{esm2015/lib/models/types/nullable.type.js → esm2020/lib/models/types/nullable.type.mjs} +5 -5
- package/{esm2015/lib/parent-components/actions.component.js → esm2020/lib/parent-components/actions.component.mjs} +56 -56
- package/esm2020/lib/parent-components/form-control.component.mjs +75 -0
- package/esm2020/lib/parent-components/form.component.mjs +78 -0
- package/{esm2015/lib/pipes/custom-pipes.module.js → esm2020/lib/pipes/custom-pipes.module.mjs} +71 -71
- package/esm2020/lib/pipes/decode-uri.pipe.mjs +19 -0
- package/esm2020/lib/pipes/encode-uri.pipe.mjs +19 -0
- package/{esm2015/lib/pipes/integer-currency.pipe.js → esm2020/lib/pipes/integer-currency.pipe.mjs} +27 -27
- package/{esm2015/lib/pipes/safe-html.pipe.js → esm2020/lib/pipes/safe-html.pipe.mjs} +23 -23
- package/{esm2015/lib/pipes/safe-resource-url.pipe.js → esm2020/lib/pipes/safe-resource-url.pipe.mjs} +23 -23
- package/{esm2015/lib/pipes/safe-style.pipe.js → esm2020/lib/pipes/safe-style.pipe.mjs} +23 -23
- package/{esm2015/lib/pipes/safe-url.pipe.js → esm2020/lib/pipes/safe-url.pipe.mjs} +23 -23
- package/{esm2015/lib/pipes/to-number.pipe.js → esm2020/lib/pipes/to-number.pipe.mjs} +23 -23
- package/{esm2015/lib/pipes/trim.pipe.js → esm2020/lib/pipes/trim.pipe.mjs} +20 -20
- package/{esm2015/lib/pipes/typeof.pipe.js → esm2020/lib/pipes/typeof.pipe.mjs} +16 -16
- package/esm2020/lib/services/viewport.service.mjs +216 -0
- package/esm2020/lib/ui/back-to-top/back-to-top.component.mjs +49 -0
- package/{esm2015/lib/ui/button-with-confirm-dialog/button-response-types.enum.js → esm2020/lib/ui/button-with-confirm-dialog/button-response-types.enum.mjs} +6 -6
- package/esm2020/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.mjs +58 -0
- package/{esm2015/lib/ui/button-with-confirm-dialog/dialog-data.model.js → esm2020/lib/ui/button-with-confirm-dialog/dialog-data.model.mjs} +2 -2
- package/esm2020/lib/ui/checkbox/checkbox.component.mjs +71 -0
- package/esm2020/lib/ui/color-input/color-input.component.mjs +76 -0
- package/esm2020/lib/ui/dropdown-from-data/dropdown-from-data.component.mjs +165 -0
- package/esm2020/lib/ui/enum-radiogroup/enum-radiogroup.component.mjs +53 -0
- package/esm2020/lib/ui/file-input/file-input.component.mjs +232 -0
- package/esm2020/lib/ui/flyout/flyout.component.mjs +119 -0
- package/esm2020/lib/ui/generic-dialog/generic-dialog.component.mjs +54 -0
- package/esm2020/lib/ui/icon/icon.component.mjs +48 -0
- package/esm2020/lib/ui/icon/iconSize.enum.mjs +17 -0
- package/esm2020/lib/ui/image-slider/image-slider.component.mjs +189 -0
- package/esm2020/lib/ui/kms-accordion-item/kms-accordion-item.component.mjs +40 -0
- package/esm2020/lib/ui/loader/loader.component.mjs +21 -0
- package/esm2020/lib/ui/map/map.component.mjs +116 -0
- package/esm2020/lib/ui/radiobutton/radiobutton.component.mjs +73 -0
- package/esm2020/lib/ui/salutation-dropdown/salutation-dropdown.component.mjs +55 -0
- package/esm2020/lib/ui/salutation-radiogroup/salutation-radiogroup.component.mjs +49 -0
- package/esm2020/lib/ui/time-input/time-input.component.mjs +83 -0
- package/esm2020/lib/ui/tooltip/tooltip.component.mjs +16 -0
- package/esm2020/lib/ui/tooltip-icon/tooltip-icon.component.mjs +35 -0
- package/esm2020/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.mjs +82 -0
- package/esm2020/public-api.mjs +49 -0
- package/fesm2015/kms-ngx-ui-presentational.mjs +3013 -0
- package/fesm2015/kms-ngx-ui-presentational.mjs.map +1 -0
- package/{fesm2015/kms-ngx-ui-presentational.js → fesm2020/kms-ngx-ui-presentational.mjs} +2894 -3108
- package/fesm2020/kms-ngx-ui-presentational.mjs.map +1 -0
- package/{kms-ngx-ui-presentational.d.ts → index.d.ts} +5 -5
- package/lib/directives/directives.module.d.ts +11 -13
- package/lib/directives/mousewheel.directive.d.ts +15 -15
- package/lib/directives/sum-of-height.directive.d.ts +31 -31
- package/lib/directives/swipe.directive.d.ts +45 -45
- package/lib/directives/swipe.model.d.ts +49 -49
- package/lib/directives/tooltip.directive.d.ts +29 -29
- package/lib/kms-ngx-ui-presentational.component.d.ts +8 -8
- package/lib/kms-ngx-ui-presentational.module.d.ts +47 -47
- package/lib/kms-ngx-ui-presentational.service.d.ts +6 -6
- package/lib/models/address.model.d.ts +14 -14
- package/lib/models/iconSize.enum.d.ts +15 -15
- package/lib/models/image-snippet.model.d.ts +15 -15
- package/lib/models/index.d.ts +4 -4
- package/lib/models/is-value.function.d.ts +9 -9
- package/lib/models/salutation.enum.d.ts +5 -5
- package/lib/models/types/attached-file-dto.model.d.ts +11 -11
- package/lib/models/types/nullable.type.d.ts +4 -4
- package/lib/parent-components/actions.component.d.ts +31 -31
- package/lib/parent-components/form-control.component.d.ts +27 -27
- package/lib/parent-components/form.component.d.ts +34 -40
- package/lib/pipes/custom-pipes.module.d.ts +17 -17
- package/lib/pipes/decode-uri.pipe.d.ts +10 -10
- package/lib/pipes/encode-uri.pipe.d.ts +10 -10
- package/lib/pipes/integer-currency.pipe.d.ts +13 -13
- package/lib/pipes/safe-html.pipe.d.ts +13 -13
- package/lib/pipes/safe-resource-url.pipe.d.ts +13 -13
- package/lib/pipes/safe-style.pipe.d.ts +13 -13
- package/lib/pipes/safe-url.pipe.d.ts +13 -13
- package/lib/pipes/to-number.pipe.d.ts +10 -10
- package/lib/pipes/trim.pipe.d.ts +10 -10
- package/lib/pipes/typeof.pipe.d.ts +7 -7
- package/lib/services/viewport.service.d.ts +74 -83
- package/lib/ui/back-to-top/back-to-top.component.d.ts +10 -10
- package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +4 -4
- package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +19 -19
- package/lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts +9 -9
- package/lib/ui/checkbox/checkbox.component.d.ts +31 -31
- package/lib/ui/color-input/color-input.component.d.ts +19 -19
- package/lib/ui/dropdown-from-data/dropdown-from-data.component.d.ts +55 -55
- package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +17 -17
- package/lib/ui/file-input/file-input.component.d.ts +89 -89
- package/lib/ui/flyout/flyout.component.d.ts +32 -32
- package/lib/ui/generic-dialog/generic-dialog.component.d.ts +26 -26
- package/lib/ui/icon/icon.component.d.ts +42 -48
- package/lib/ui/icon/iconSize.enum.d.ts +15 -25
- package/lib/ui/image-slider/image-slider.component.d.ts +62 -62
- package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +22 -22
- package/lib/ui/loader/loader.component.d.ts +9 -9
- package/lib/ui/map/map.component.d.ts +70 -69
- package/lib/ui/radiobutton/radiobutton.component.d.ts +26 -27
- package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +17 -17
- package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +15 -15
- package/lib/ui/time-input/time-input.component.d.ts +22 -22
- package/lib/ui/tooltip/tooltip.component.d.ts +6 -6
- package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +13 -13
- package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +27 -27
- package/package.json +27 -14
- package/public-api.d.ts +45 -46
- package/src/lib/ui/back-to-top/back-to-top.component.scss +46 -45
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.scss +2 -2
- package/src/lib/ui/checkbox/checkbox.component.scss +48 -48
- package/src/lib/ui/color-input/color-input.component.scss +38 -38
- package/src/lib/ui/file-input/file-input.component.scss +2 -2
- package/src/lib/ui/flyout/flyout.component.scss +34 -34
- package/src/lib/ui/generic-dialog/generic-dialog.component.scss +59 -59
- package/src/lib/ui/icon/icon.component.scss +148 -114
- package/src/lib/ui/image-slider/image-slider.component.scss +219 -219
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +95 -95
- package/src/lib/ui/radiobutton/radiobutton.component.scss +31 -31
- package/src/lib/ui/time-input/time-input.component.scss +10 -10
- package/src/lib/ui/tooltip/tooltip.component.scss +26 -26
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +2 -2
- package/src/styles/mixins.scss +8 -8
- package/src/styles/styles.scss +30 -31
- package/bundles/kms-ngx-ui-presentational.umd.js +0 -3751
- package/bundles/kms-ngx-ui-presentational.umd.js.map +0 -1
- package/esm2015/lib/directives/directives.module.js +0 -45
- package/esm2015/lib/directives/size.directive.js +0 -21
- package/esm2015/lib/directives/swipe.model.js +0 -5
- package/esm2015/lib/kms-ngx-ui-presentational.component.js +0 -26
- package/esm2015/lib/models/address.model.js +0 -6
- package/esm2015/lib/parent-components/colorable.component.js +0 -35
- package/esm2015/lib/parent-components/form-control.component.js +0 -76
- package/esm2015/lib/parent-components/form.component.js +0 -99
- package/esm2015/lib/pipes/decode-uri.pipe.js +0 -19
- package/esm2015/lib/pipes/encode-uri.pipe.js +0 -19
- package/esm2015/lib/services/viewport.service.js +0 -242
- package/esm2015/lib/ui/back-to-top/back-to-top.component.js +0 -52
- package/esm2015/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.js +0 -62
- package/esm2015/lib/ui/checkbox/checkbox.component.js +0 -76
- package/esm2015/lib/ui/color-input/color-input.component.js +0 -81
- package/esm2015/lib/ui/dropdown-from-data/dropdown-from-data.component.js +0 -169
- package/esm2015/lib/ui/enum-radiogroup/enum-radiogroup.component.js +0 -57
- package/esm2015/lib/ui/file-input/file-input.component.js +0 -237
- package/esm2015/lib/ui/flyout/flyout.component.js +0 -125
- package/esm2015/lib/ui/generic-dialog/generic-dialog.component.js +0 -58
- package/esm2015/lib/ui/icon/icon.component.js +0 -55
- package/esm2015/lib/ui/icon/iconSize.enum.js +0 -28
- package/esm2015/lib/ui/image-slider/image-slider.component.js +0 -193
- package/esm2015/lib/ui/kms-accordion-item/kms-accordion-item.component.js +0 -44
- package/esm2015/lib/ui/loader/loader.component.js +0 -25
- package/esm2015/lib/ui/map/map.component.js +0 -120
- package/esm2015/lib/ui/radiobutton/radiobutton.component.js +0 -82
- package/esm2015/lib/ui/salutation-dropdown/salutation-dropdown.component.js +0 -59
- package/esm2015/lib/ui/salutation-radiogroup/salutation-radiogroup.component.js +0 -53
- package/esm2015/lib/ui/time-input/time-input.component.js +0 -88
- package/esm2015/lib/ui/tooltip/tooltip.component.js +0 -20
- package/esm2015/lib/ui/tooltip-icon/tooltip-icon.component.js +0 -40
- package/esm2015/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.js +0 -86
- package/esm2015/public-api.js +0 -50
- package/fesm2015/kms-ngx-ui-presentational.js.map +0 -1
- package/lib/directives/size.directive.d.ts +0 -10
- package/lib/parent-components/colorable.component.d.ts +0 -10
- package/src/styles/animations.scss +0 -47
package/{esm2015/lib/directives/swipe.directive.js → esm2020/lib/directives/swipe.directive.mjs}
RENAMED
|
@@ -1,183 +1,183 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @copyright FLYACTS GmbH 2019
|
|
3
|
-
*/
|
|
4
|
-
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class SwipeDirective {
|
|
7
|
-
constructor() {
|
|
8
|
-
/**
|
|
9
|
-
* Output Event that is emitted during swipe process (mouse move or touch move event).
|
|
10
|
-
* Can be used for calculation purposes.
|
|
11
|
-
*/
|
|
12
|
-
this.moveEvent = new EventEmitter();
|
|
13
|
-
/**
|
|
14
|
-
* Output Event that is emitted when swipe process end (mouse up or touch end event).
|
|
15
|
-
* Can be used for calculation purposes.
|
|
16
|
-
*/
|
|
17
|
-
this.releaseEvent = new EventEmitter();
|
|
18
|
-
this._startPosition = -1;
|
|
19
|
-
this._lastPosX = 0;
|
|
20
|
-
this._thresholdWasReached = false;
|
|
21
|
-
this._timeStart = 0;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Needed config that defines swipe behaviour.
|
|
25
|
-
* @param options SwipeOptions
|
|
26
|
-
*/
|
|
27
|
-
set config(options) {
|
|
28
|
-
if (options) {
|
|
29
|
-
this._swipeOptions = options;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
onMouseDown(event) {
|
|
33
|
-
this.calculateStartPosition(event);
|
|
34
|
-
}
|
|
35
|
-
onMove(event) {
|
|
36
|
-
this.move(event);
|
|
37
|
-
}
|
|
38
|
-
onRelease(event) {
|
|
39
|
-
this.release(event);
|
|
40
|
-
this.reset();
|
|
41
|
-
}
|
|
42
|
-
// ** PRIVATE ** //
|
|
43
|
-
/**
|
|
44
|
-
* Function checks if the current moving delta is inside the defined threshold.
|
|
45
|
-
* Sets the flag to true if the threshold was reached once.
|
|
46
|
-
*/
|
|
47
|
-
checkThreshold(moveEvent) {
|
|
48
|
-
const percentage = this._swipeOptions && this._swipeOptions.swipeThresholdType === '%';
|
|
49
|
-
if (!percentage && this._swipeOptions && moveEvent.swipeDistanceTotal < this._swipeOptions.swipeThreshold) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
else if (percentage &&
|
|
53
|
-
this._swipeOptions &&
|
|
54
|
-
moveEvent.swipeDistancePercentage < this._swipeOptions.swipeThreshold / 100) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
this._thresholdWasReached = true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
calculateStartPosition(event) {
|
|
62
|
-
// detect if touch or click
|
|
63
|
-
this._isMobile = event.type === 'touchstart';
|
|
64
|
-
// save start position
|
|
65
|
-
if (this._swipeOptions && this._swipeOptions.swipeLocalPosition) {
|
|
66
|
-
if (this._isMobile) {
|
|
67
|
-
const touch = event.touches[0];
|
|
68
|
-
this._startPosition = this._swipeOptions.swipeLocalPosition ? touch.clientX : touch.pageX;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
this._startPosition = this._swipeOptions.swipeLocalPosition ? event.offsetX : event.pageX;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
this._lastPosX = this._startPosition;
|
|
75
|
-
this._timeStart = event.timeStamp;
|
|
76
|
-
this._thresholdWasReached = false;
|
|
77
|
-
}
|
|
78
|
-
move(event) {
|
|
79
|
-
// failsafe
|
|
80
|
-
if (typeof event === 'undefined') {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
let posX = 0;
|
|
84
|
-
if (this._swipeOptions) {
|
|
85
|
-
if (this._isMobile && event.type === 'touchmove') {
|
|
86
|
-
const touch = event.touches[0];
|
|
87
|
-
posX = this._swipeOptions.swipeLocalPosition ? touch.clientX : touch.pageX;
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
posX = this._swipeOptions.swipeLocalPosition ? event.offsetX : event.pageX;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const offsetPerFrame = posX - this._lastPosX;
|
|
94
|
-
const swipeDistanceTotal = Math.abs(posX - this._startPosition);
|
|
95
|
-
const swipeDistancePercentage = Math.abs(swipeDistanceTotal / event.target.clientWidth);
|
|
96
|
-
const timeDuration = Math.abs(event.timeStamp - this._timeStart);
|
|
97
|
-
let direction;
|
|
98
|
-
let speed = 1 - swipeDistanceTotal / timeDuration;
|
|
99
|
-
speed = Math.max(0.1, speed);
|
|
100
|
-
if (posX - this._startPosition > 0) {
|
|
101
|
-
direction = 1; // a.k.a LTR
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
direction = -1; // a.k.a RTL
|
|
105
|
-
}
|
|
106
|
-
this._moveEventData = {
|
|
107
|
-
position: posX,
|
|
108
|
-
offsetPerFrame: offsetPerFrame,
|
|
109
|
-
swipeDistanceTotal: swipeDistanceTotal,
|
|
110
|
-
swipeDistancePercentage: swipeDistancePercentage,
|
|
111
|
-
direction: direction,
|
|
112
|
-
speed: speed,
|
|
113
|
-
thresholdWasReached: this._thresholdWasReached,
|
|
114
|
-
};
|
|
115
|
-
this.checkThreshold(this._moveEventData);
|
|
116
|
-
// update move delta
|
|
117
|
-
this._lastPosX = posX;
|
|
118
|
-
// inform
|
|
119
|
-
this.moveEvent.emit(this._moveEventData);
|
|
120
|
-
}
|
|
121
|
-
release(event) {
|
|
122
|
-
// case: just a click/touch
|
|
123
|
-
if (!this._moveEventData) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
const releaseEventData = {
|
|
127
|
-
thresholdWasReached: this._thresholdWasReached,
|
|
128
|
-
direction: this._moveEventData.direction,
|
|
129
|
-
speed: this._moveEventData.speed,
|
|
130
|
-
easingType: this.getEasingCurve(this._moveEventData.speed),
|
|
131
|
-
target: event.currentTarget,
|
|
132
|
-
};
|
|
133
|
-
// inform
|
|
134
|
-
this.releaseEvent.emit(releaseEventData);
|
|
135
|
-
}
|
|
136
|
-
getEasingCurve(speed) {
|
|
137
|
-
return speed > 0.5 ? 'ease-in' : 'ease-out';
|
|
138
|
-
}
|
|
139
|
-
reset() {
|
|
140
|
-
this._startPosition = -1;
|
|
141
|
-
this._thresholdWasReached = false;
|
|
142
|
-
if (this._moveEventData) {
|
|
143
|
-
this._moveEventData = undefined;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
SwipeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
148
|
-
SwipeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
150
|
-
type: Directive,
|
|
151
|
-
args: [{
|
|
152
|
-
selector: '[swipeDirective]',
|
|
153
|
-
}]
|
|
154
|
-
}], propDecorators: { moveEvent: [{
|
|
155
|
-
type: Output
|
|
156
|
-
}], releaseEvent: [{
|
|
157
|
-
type: Output
|
|
158
|
-
}], config: [{
|
|
159
|
-
type: Input,
|
|
160
|
-
args: ['swipeDirective']
|
|
161
|
-
}], onMouseDown: [{
|
|
162
|
-
type: HostListener,
|
|
163
|
-
args: ['mousedown', ['$event']]
|
|
164
|
-
}, {
|
|
165
|
-
type: HostListener,
|
|
166
|
-
args: ['touchstart', ['$event']]
|
|
167
|
-
}], onMove: [{
|
|
168
|
-
type: HostListener,
|
|
169
|
-
args: ['mousemove', ['$event']]
|
|
170
|
-
}, {
|
|
171
|
-
type: HostListener,
|
|
172
|
-
args: ['touchmove', ['$event']]
|
|
173
|
-
}], onRelease: [{
|
|
174
|
-
type: HostListener,
|
|
175
|
-
args: ['mouseup', ['$event']]
|
|
176
|
-
}, {
|
|
177
|
-
type: HostListener,
|
|
178
|
-
args: ['mouseleave', ['$event']]
|
|
179
|
-
}, {
|
|
180
|
-
type: HostListener,
|
|
181
|
-
args: ['touchend', ['$event']]
|
|
182
|
-
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL2RpcmVjdGl2ZXMvc3dpcGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3JGLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBSUk7OztXQUdHO1FBQ2MsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRWhFOzs7V0FHRztRQUNjLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFLOUQsbUJBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWQseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBSTdCLGVBQVUsR0FBRyxDQUFDLENBQUM7S0E2SjFCO0lBM0pHOzs7T0FHRztJQUNILElBQ0ksTUFBTSxDQUFDLE9BQXFCO1FBQzVCLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBSUQsV0FBVyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFJRCxNQUFNLENBQUMsS0FBVTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUtELFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtQkFBbUI7SUFFbkI7OztPQUdHO0lBQ0ssY0FBYyxDQUFDLFNBQXlCO1FBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsS0FBSyxHQUFHLENBQUM7UUFFdkYsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRTtZQUN2RyxPQUFPO1NBQ1Y7YUFBTSxJQUNILFVBQVU7WUFDVixJQUFJLENBQUMsYUFBYTtZQUNsQixTQUFTLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUM3RTtZQUNFLE9BQU87U0FDVjthQUFNO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFXO1FBQ3RDLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDO1FBRTdDLHNCQUFzQjtRQUV0QixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRTtZQUM3RCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hCLE1BQU0sS0FBSyxHQUFVLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUM3RjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDN0Y7U0FDSjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRU8sSUFBSSxDQUFDLEtBQVU7UUFDbkIsV0FBVztRQUNYLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUViLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7Z0JBQzlDLE1BQU0sS0FBSyxHQUFVLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQzlFO2lCQUFNO2dCQUNILElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQzlFO1NBQ0o7UUFFRCxNQUFNLGNBQWMsR0FBVyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyRCxNQUFNLGtCQUFrQixHQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RSxNQUFNLHVCQUF1QixHQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRyxNQUFNLFlBQVksR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpFLElBQUksU0FBaUIsQ0FBQztRQUN0QixJQUFJLEtBQUssR0FBVyxDQUFDLEdBQUcsa0JBQWtCLEdBQUcsWUFBWSxDQUFDO1FBQzFELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU3QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRTtZQUNoQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWTtTQUM5QjthQUFNO1lBQ0gsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWTtTQUMvQjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDbEIsUUFBUSxFQUFFLElBQUk7WUFDZCxjQUFjLEVBQUUsY0FBYztZQUM5QixrQkFBa0IsRUFBRSxrQkFBa0I7WUFDdEMsdUJBQXVCLEVBQUUsdUJBQXVCO1lBQ2hELFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEtBQUssRUFBRSxLQUFLO1lBQ1osbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtTQUNqRCxDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFekMsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLFNBQVM7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFVO1FBQ3RCLDJCQUEyQjtRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxNQUFNLGdCQUFnQixHQUFzQjtZQUN4QyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVM7WUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztZQUMxRCxNQUFNLEVBQUUsS0FBSyxDQUFDLGFBQWE7U0FDOUIsQ0FBQztRQUVGLFNBQVM7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBYTtRQUNoQyxPQUFPLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7SUFFTyxLQUFLO1FBQ1QsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztTQUNuQztJQUNMLENBQUM7OzRHQXBMUSxjQUFjO2dHQUFkLGNBQWM7NEZBQWQsY0FBYztrQkFIMUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjs4QkFNb0IsU0FBUztzQkFBekIsTUFBTTtnQkFNVSxZQUFZO3NCQUE1QixNQUFNO2dCQW9CSCxNQUFNO3NCQURULEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVN2QixXQUFXO3NCQUZWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBT3RDLE1BQU07c0JBRkwsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNwQyxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRckMsU0FBUztzQkFIUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ2xDLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogQGNvcHlyaWdodCBGTFlBQ1RTIEdtYkggMjAxOVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFN3aXBlTW92ZUV2ZW50LCBTd2lwZU9wdGlvbnMsIFN3aXBlUmVsZWFzZUV2ZW50IH0gZnJvbSAnLi9zd2lwZS5tb2RlbCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3N3aXBlRGlyZWN0aXZlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTd2lwZURpcmVjdGl2ZSB7XHJcbiAgICAvKipcclxuICAgICAqIE91dHB1dCBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgZHVyaW5nIHN3aXBlIHByb2Nlc3MgKG1vdXNlIG1vdmUgb3IgdG91Y2ggbW92ZSBldmVudCkuXHJcbiAgICAgKiBDYW4gYmUgdXNlZCBmb3IgY2FsY3VsYXRpb24gcHVycG9zZXMuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgbW92ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxTd2lwZU1vdmVFdmVudD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE91dHB1dCBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiBzd2lwZSBwcm9jZXNzIGVuZCAobW91c2UgdXAgb3IgdG91Y2ggZW5kIGV2ZW50KS5cclxuICAgICAqIENhbiBiZSB1c2VkIGZvciBjYWxjdWxhdGlvbiBwdXJwb3Nlcy5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWxlYXNlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFN3aXBlUmVsZWFzZUV2ZW50PigpO1xyXG5cclxuICAgIHByaXZhdGUgX3N3aXBlT3B0aW9uczogU3dpcGVPcHRpb25zIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByaXZhdGUgX21vdmVFdmVudERhdGE6IFN3aXBlTW92ZUV2ZW50IHwgdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSBfc3RhcnRQb3NpdGlvbiA9IC0xO1xyXG5cclxuICAgIHByaXZhdGUgX2xhc3RQb3NYID0gMDtcclxuXHJcbiAgICBwcml2YXRlIF90aHJlc2hvbGRXYXNSZWFjaGVkID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfaXNNb2JpbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgcHJpdmF0ZSBfdGltZVN0YXJ0ID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5lZWRlZCBjb25maWcgdGhhdCBkZWZpbmVzIHN3aXBlIGJlaGF2aW91ci5cclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFN3aXBlT3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ3N3aXBlRGlyZWN0aXZlJylcclxuICAgIHNldCBjb25maWcob3B0aW9uczogU3dpcGVPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3dpcGVPcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxyXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU3RhcnRQb3NpdGlvbihldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNobW92ZScsIFsnJGV2ZW50J10pXHJcbiAgICBvbk1vdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMubW92ZShldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcclxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJywgWyckZXZlbnQnXSlcclxuICAgIG9uUmVsZWFzZShldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5yZWxlYXNlKGV2ZW50KTtcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKiogUFJJVkFURSAqKiAvL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjdXJyZW50IG1vdmluZyBkZWx0YSBpcyBpbnNpZGUgdGhlIGRlZmluZWQgdGhyZXNob2xkLlxyXG4gICAgICogU2V0cyB0aGUgZmxhZyB0byB0cnVlIGlmIHRoZSB0aHJlc2hvbGQgd2FzIHJlYWNoZWQgb25jZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjaGVja1RocmVzaG9sZChtb3ZlRXZlbnQ6IFN3aXBlTW92ZUV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgcGVyY2VudGFnZSA9IHRoaXMuX3N3aXBlT3B0aW9ucyAmJiB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVUaHJlc2hvbGRUeXBlID09PSAnJSc7XHJcblxyXG4gICAgICAgIGlmICghcGVyY2VudGFnZSAmJiB0aGlzLl9zd2lwZU9wdGlvbnMgJiYgbW92ZUV2ZW50LnN3aXBlRGlzdGFuY2VUb3RhbCA8IHRoaXMuX3N3aXBlT3B0aW9ucy5zd2lwZVRocmVzaG9sZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgcGVyY2VudGFnZSAmJlxyXG4gICAgICAgICAgICB0aGlzLl9zd2lwZU9wdGlvbnMgJiZcclxuICAgICAgICAgICAgbW92ZUV2ZW50LnN3aXBlRGlzdGFuY2VQZXJjZW50YWdlIDwgdGhpcy5fc3dpcGVPcHRpb25zLnN3aXBlVGhyZXNob2xkIC8gMTAwXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl90aHJlc2hvbGRXYXNSZWFjaGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVTdGFydFBvc2l0aW9uKGV2ZW50PzogYW55KSB7XHJcbiAgICAgICAgLy8gZGV0ZWN0IGlmIHRvdWNoIG9yIGNsaWNrXHJcbiAgICAgICAgdGhpcy5faXNNb2JpbGUgPSBldmVudC50eXBlID09PSAndG91Y2hzdGFydCc7XHJcblxyXG4gICAgICAgIC8vIHNhdmUgc3RhcnQgcG9zaXRpb25cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3N3aXBlT3B0aW9ucyAmJiB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVMb2NhbFBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc01vYmlsZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2g6IFRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0UG9zaXRpb24gPSB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVMb2NhbFBvc2l0aW9uID8gdG91Y2guY2xpZW50WCA6IHRvdWNoLnBhZ2VYO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRQb3NpdGlvbiA9IHRoaXMuX3N3aXBlT3B0aW9ucy5zd2lwZUxvY2FsUG9zaXRpb24gPyBldmVudC5vZmZzZXRYIDogZXZlbnQucGFnZVg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2xhc3RQb3NYID0gdGhpcy5fc3RhcnRQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLl90aW1lU3RhcnQgPSBldmVudC50aW1lU3RhbXA7XHJcbiAgICAgICAgdGhpcy5fdGhyZXNob2xkV2FzUmVhY2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbW92ZShldmVudDogYW55KSB7XHJcbiAgICAgICAgLy8gZmFpbHNhZmVcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcG9zWCA9IDA7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zd2lwZU9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzTW9iaWxlICYmIGV2ZW50LnR5cGUgPT09ICd0b3VjaG1vdmUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaDogVG91Y2ggPSBldmVudC50b3VjaGVzWzBdO1xyXG4gICAgICAgICAgICAgICAgcG9zWCA9IHRoaXMuX3N3aXBlT3B0aW9ucy5zd2lwZUxvY2FsUG9zaXRpb24gPyB0b3VjaC5jbGllbnRYIDogdG91Y2gucGFnZVg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwb3NYID0gdGhpcy5fc3dpcGVPcHRpb25zLnN3aXBlTG9jYWxQb3NpdGlvbiA/IGV2ZW50Lm9mZnNldFggOiBldmVudC5wYWdlWDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0UGVyRnJhbWU6IG51bWJlciA9IHBvc1ggLSB0aGlzLl9sYXN0UG9zWDtcclxuICAgICAgICBjb25zdCBzd2lwZURpc3RhbmNlVG90YWw6IG51bWJlciA9IE1hdGguYWJzKHBvc1ggLSB0aGlzLl9zdGFydFBvc2l0aW9uKTtcclxuICAgICAgICBjb25zdCBzd2lwZURpc3RhbmNlUGVyY2VudGFnZTogbnVtYmVyID0gTWF0aC5hYnMoc3dpcGVEaXN0YW5jZVRvdGFsIC8gZXZlbnQudGFyZ2V0LmNsaWVudFdpZHRoKTtcclxuICAgICAgICBjb25zdCB0aW1lRHVyYXRpb246IG51bWJlciA9IE1hdGguYWJzKGV2ZW50LnRpbWVTdGFtcCAtIHRoaXMuX3RpbWVTdGFydCk7XHJcblxyXG4gICAgICAgIGxldCBkaXJlY3Rpb246IG51bWJlcjtcclxuICAgICAgICBsZXQgc3BlZWQ6IG51bWJlciA9IDEgLSBzd2lwZURpc3RhbmNlVG90YWwgLyB0aW1lRHVyYXRpb247XHJcbiAgICAgICAgc3BlZWQgPSBNYXRoLm1heCgwLjEsIHNwZWVkKTtcclxuXHJcbiAgICAgICAgaWYgKHBvc1ggLSB0aGlzLl9zdGFydFBvc2l0aW9uID4gMCkge1xyXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAxOyAvLyBhLmsuYSBMVFJcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAtMTsgLy8gYS5rLmEgUlRMXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9tb3ZlRXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcG9zWCxcclxuICAgICAgICAgICAgb2Zmc2V0UGVyRnJhbWU6IG9mZnNldFBlckZyYW1lLFxyXG4gICAgICAgICAgICBzd2lwZURpc3RhbmNlVG90YWw6IHN3aXBlRGlzdGFuY2VUb3RhbCxcclxuICAgICAgICAgICAgc3dpcGVEaXN0YW5jZVBlcmNlbnRhZ2U6IHN3aXBlRGlzdGFuY2VQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcclxuICAgICAgICAgICAgc3BlZWQ6IHNwZWVkLFxyXG4gICAgICAgICAgICB0aHJlc2hvbGRXYXNSZWFjaGVkOiB0aGlzLl90aHJlc2hvbGRXYXNSZWFjaGVkLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tUaHJlc2hvbGQodGhpcy5fbW92ZUV2ZW50RGF0YSk7XHJcblxyXG4gICAgICAgIC8vIHVwZGF0ZSBtb3ZlIGRlbHRhXHJcbiAgICAgICAgdGhpcy5fbGFzdFBvc1ggPSBwb3NYO1xyXG5cclxuICAgICAgICAvLyBpbmZvcm1cclxuICAgICAgICB0aGlzLm1vdmVFdmVudC5lbWl0KHRoaXMuX21vdmVFdmVudERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVsZWFzZShldmVudDogYW55KSB7XHJcbiAgICAgICAgLy8gY2FzZToganVzdCBhIGNsaWNrL3RvdWNoXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fbW92ZUV2ZW50RGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZWxlYXNlRXZlbnREYXRhOiBTd2lwZVJlbGVhc2VFdmVudCA9IHtcclxuICAgICAgICAgICAgdGhyZXNob2xkV2FzUmVhY2hlZDogdGhpcy5fdGhyZXNob2xkV2FzUmVhY2hlZCxcclxuICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLl9tb3ZlRXZlbnREYXRhLmRpcmVjdGlvbixcclxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuX21vdmVFdmVudERhdGEuc3BlZWQsXHJcbiAgICAgICAgICAgIGVhc2luZ1R5cGU6IHRoaXMuZ2V0RWFzaW5nQ3VydmUodGhpcy5fbW92ZUV2ZW50RGF0YS5zcGVlZCksXHJcbiAgICAgICAgICAgIHRhcmdldDogZXZlbnQuY3VycmVudFRhcmdldCxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBpbmZvcm1cclxuICAgICAgICB0aGlzLnJlbGVhc2VFdmVudC5lbWl0KHJlbGVhc2VFdmVudERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RWFzaW5nQ3VydmUoc3BlZWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHNwZWVkID4gMC41ID8gJ2Vhc2UtaW4nIDogJ2Vhc2Utb3V0JztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0UG9zaXRpb24gPSAtMTtcclxuICAgICAgICB0aGlzLl90aHJlc2hvbGRXYXNSZWFjaGVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9tb3ZlRXZlbnREYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vdmVFdmVudERhdGEgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
/*!
|
|
2
|
+
* @copyright FLYACTS GmbH 2019
|
|
3
|
+
*/
|
|
4
|
+
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class SwipeDirective {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Output Event that is emitted during swipe process (mouse move or touch move event).
|
|
10
|
+
* Can be used for calculation purposes.
|
|
11
|
+
*/
|
|
12
|
+
this.moveEvent = new EventEmitter();
|
|
13
|
+
/**
|
|
14
|
+
* Output Event that is emitted when swipe process end (mouse up or touch end event).
|
|
15
|
+
* Can be used for calculation purposes.
|
|
16
|
+
*/
|
|
17
|
+
this.releaseEvent = new EventEmitter();
|
|
18
|
+
this._startPosition = -1;
|
|
19
|
+
this._lastPosX = 0;
|
|
20
|
+
this._thresholdWasReached = false;
|
|
21
|
+
this._timeStart = 0;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Needed config that defines swipe behaviour.
|
|
25
|
+
* @param options SwipeOptions
|
|
26
|
+
*/
|
|
27
|
+
set config(options) {
|
|
28
|
+
if (options) {
|
|
29
|
+
this._swipeOptions = options;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
onMouseDown(event) {
|
|
33
|
+
this.calculateStartPosition(event);
|
|
34
|
+
}
|
|
35
|
+
onMove(event) {
|
|
36
|
+
this.move(event);
|
|
37
|
+
}
|
|
38
|
+
onRelease(event) {
|
|
39
|
+
this.release(event);
|
|
40
|
+
this.reset();
|
|
41
|
+
}
|
|
42
|
+
// ** PRIVATE ** //
|
|
43
|
+
/**
|
|
44
|
+
* Function checks if the current moving delta is inside the defined threshold.
|
|
45
|
+
* Sets the flag to true if the threshold was reached once.
|
|
46
|
+
*/
|
|
47
|
+
checkThreshold(moveEvent) {
|
|
48
|
+
const percentage = this._swipeOptions && this._swipeOptions.swipeThresholdType === '%';
|
|
49
|
+
if (!percentage && this._swipeOptions && moveEvent.swipeDistanceTotal < this._swipeOptions.swipeThreshold) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
else if (percentage &&
|
|
53
|
+
this._swipeOptions &&
|
|
54
|
+
moveEvent.swipeDistancePercentage < this._swipeOptions.swipeThreshold / 100) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this._thresholdWasReached = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
calculateStartPosition(event) {
|
|
62
|
+
// detect if touch or click
|
|
63
|
+
this._isMobile = event.type === 'touchstart';
|
|
64
|
+
// save start position
|
|
65
|
+
if (this._swipeOptions && this._swipeOptions.swipeLocalPosition) {
|
|
66
|
+
if (this._isMobile) {
|
|
67
|
+
const touch = event.touches[0];
|
|
68
|
+
this._startPosition = this._swipeOptions.swipeLocalPosition ? touch.clientX : touch.pageX;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this._startPosition = this._swipeOptions.swipeLocalPosition ? event.offsetX : event.pageX;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
this._lastPosX = this._startPosition;
|
|
75
|
+
this._timeStart = event.timeStamp;
|
|
76
|
+
this._thresholdWasReached = false;
|
|
77
|
+
}
|
|
78
|
+
move(event) {
|
|
79
|
+
// failsafe
|
|
80
|
+
if (typeof event === 'undefined') {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
let posX = 0;
|
|
84
|
+
if (this._swipeOptions) {
|
|
85
|
+
if (this._isMobile && event.type === 'touchmove') {
|
|
86
|
+
const touch = event.touches[0];
|
|
87
|
+
posX = this._swipeOptions.swipeLocalPosition ? touch.clientX : touch.pageX;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
posX = this._swipeOptions.swipeLocalPosition ? event.offsetX : event.pageX;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const offsetPerFrame = posX - this._lastPosX;
|
|
94
|
+
const swipeDistanceTotal = Math.abs(posX - this._startPosition);
|
|
95
|
+
const swipeDistancePercentage = Math.abs(swipeDistanceTotal / event.target.clientWidth);
|
|
96
|
+
const timeDuration = Math.abs(event.timeStamp - this._timeStart);
|
|
97
|
+
let direction;
|
|
98
|
+
let speed = 1 - swipeDistanceTotal / timeDuration;
|
|
99
|
+
speed = Math.max(0.1, speed);
|
|
100
|
+
if (posX - this._startPosition > 0) {
|
|
101
|
+
direction = 1; // a.k.a LTR
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
direction = -1; // a.k.a RTL
|
|
105
|
+
}
|
|
106
|
+
this._moveEventData = {
|
|
107
|
+
position: posX,
|
|
108
|
+
offsetPerFrame: offsetPerFrame,
|
|
109
|
+
swipeDistanceTotal: swipeDistanceTotal,
|
|
110
|
+
swipeDistancePercentage: swipeDistancePercentage,
|
|
111
|
+
direction: direction,
|
|
112
|
+
speed: speed,
|
|
113
|
+
thresholdWasReached: this._thresholdWasReached,
|
|
114
|
+
};
|
|
115
|
+
this.checkThreshold(this._moveEventData);
|
|
116
|
+
// update move delta
|
|
117
|
+
this._lastPosX = posX;
|
|
118
|
+
// inform
|
|
119
|
+
this.moveEvent.emit(this._moveEventData);
|
|
120
|
+
}
|
|
121
|
+
release(event) {
|
|
122
|
+
// case: just a click/touch
|
|
123
|
+
if (!this._moveEventData) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const releaseEventData = {
|
|
127
|
+
thresholdWasReached: this._thresholdWasReached,
|
|
128
|
+
direction: this._moveEventData.direction,
|
|
129
|
+
speed: this._moveEventData.speed,
|
|
130
|
+
easingType: this.getEasingCurve(this._moveEventData.speed),
|
|
131
|
+
target: event.currentTarget,
|
|
132
|
+
};
|
|
133
|
+
// inform
|
|
134
|
+
this.releaseEvent.emit(releaseEventData);
|
|
135
|
+
}
|
|
136
|
+
getEasingCurve(speed) {
|
|
137
|
+
return speed > 0.5 ? 'ease-in' : 'ease-out';
|
|
138
|
+
}
|
|
139
|
+
reset() {
|
|
140
|
+
this._startPosition = -1;
|
|
141
|
+
this._thresholdWasReached = false;
|
|
142
|
+
if (this._moveEventData) {
|
|
143
|
+
this._moveEventData = undefined;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
SwipeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SwipeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
148
|
+
SwipeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SwipeDirective, selector: "[swipeDirective]", inputs: { config: ["swipeDirective", "config"] }, outputs: { moveEvent: "moveEvent", releaseEvent: "releaseEvent" }, host: { listeners: { "mousedown": "onMouseDown($event)", "touchstart": "onMouseDown($event)", "mousemove": "onMove($event)", "touchmove": "onMove($event)", "mouseup": "onRelease($event)", "mouseleave": "onRelease($event)", "touchend": "onRelease($event)" } }, ngImport: i0 });
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SwipeDirective, decorators: [{
|
|
150
|
+
type: Directive,
|
|
151
|
+
args: [{
|
|
152
|
+
selector: '[swipeDirective]',
|
|
153
|
+
}]
|
|
154
|
+
}], propDecorators: { moveEvent: [{
|
|
155
|
+
type: Output
|
|
156
|
+
}], releaseEvent: [{
|
|
157
|
+
type: Output
|
|
158
|
+
}], config: [{
|
|
159
|
+
type: Input,
|
|
160
|
+
args: ['swipeDirective']
|
|
161
|
+
}], onMouseDown: [{
|
|
162
|
+
type: HostListener,
|
|
163
|
+
args: ['mousedown', ['$event']]
|
|
164
|
+
}, {
|
|
165
|
+
type: HostListener,
|
|
166
|
+
args: ['touchstart', ['$event']]
|
|
167
|
+
}], onMove: [{
|
|
168
|
+
type: HostListener,
|
|
169
|
+
args: ['mousemove', ['$event']]
|
|
170
|
+
}, {
|
|
171
|
+
type: HostListener,
|
|
172
|
+
args: ['touchmove', ['$event']]
|
|
173
|
+
}], onRelease: [{
|
|
174
|
+
type: HostListener,
|
|
175
|
+
args: ['mouseup', ['$event']]
|
|
176
|
+
}, {
|
|
177
|
+
type: HostListener,
|
|
178
|
+
args: ['mouseleave', ['$event']]
|
|
179
|
+
}, {
|
|
180
|
+
type: HostListener,
|
|
181
|
+
args: ['touchend', ['$event']]
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL2RpcmVjdGl2ZXMvc3dpcGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3JGLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBSUk7OztXQUdHO1FBQ2MsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRWhFOzs7V0FHRztRQUNjLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFLOUQsbUJBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVwQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWQseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBSTdCLGVBQVUsR0FBRyxDQUFDLENBQUM7S0E2SjFCO0lBM0pHOzs7T0FHRztJQUNILElBQ0ksTUFBTSxDQUFDLE9BQXFCO1FBQzVCLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBSUQsV0FBVyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFJRCxNQUFNLENBQUMsS0FBVTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUtELFNBQVMsQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtQkFBbUI7SUFFbkI7OztP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RSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ2xDLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBjb3B5cmlnaHQgRkxZQUNUUyBHbWJIIDIwMTlcbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN3aXBlTW92ZUV2ZW50LCBTd2lwZU9wdGlvbnMsIFN3aXBlUmVsZWFzZUV2ZW50IH0gZnJvbSAnLi9zd2lwZS5tb2RlbCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3N3aXBlRGlyZWN0aXZlXScsXG59KVxuZXhwb3J0IGNsYXNzIFN3aXBlRGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiBPdXRwdXQgRXZlbnQgdGhhdCBpcyBlbWl0dGVkIGR1cmluZyBzd2lwZSBwcm9jZXNzIChtb3VzZSBtb3ZlIG9yIHRvdWNoIG1vdmUgZXZlbnQpLlxuICAgICAqIENhbiBiZSB1c2VkIGZvciBjYWxjdWxhdGlvbiBwdXJwb3Nlcy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIG1vdmVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U3dpcGVNb3ZlRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBPdXRwdXQgRXZlbnQgdGhhdCBpcyBlbWl0dGVkIHdoZW4gc3dpcGUgcHJvY2VzcyBlbmQgKG1vdXNlIHVwIG9yIHRvdWNoIGVuZCBldmVudCkuXG4gICAgICogQ2FuIGJlIHVzZWQgZm9yIGNhbGN1bGF0aW9uIHB1cnBvc2VzLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVsZWFzZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxTd2lwZVJlbGVhc2VFdmVudD4oKTtcblxuICAgIHByaXZhdGUgX3N3aXBlT3B0aW9uczogU3dpcGVPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBfbW92ZUV2ZW50RGF0YTogU3dpcGVNb3ZlRXZlbnQgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBfc3RhcnRQb3NpdGlvbiA9IC0xO1xuXG4gICAgcHJpdmF0ZSBfbGFzdFBvc1ggPSAwO1xuXG4gICAgcHJpdmF0ZSBfdGhyZXNob2xkV2FzUmVhY2hlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfaXNNb2JpbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIF90aW1lU3RhcnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTmVlZGVkIGNvbmZpZyB0aGF0IGRlZmluZXMgc3dpcGUgYmVoYXZpb3VyLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFN3aXBlT3B0aW9uc1xuICAgICAqL1xuICAgIEBJbnB1dCgnc3dpcGVEaXJlY3RpdmUnKVxuICAgIHNldCBjb25maWcob3B0aW9uczogU3dpcGVPcHRpb25zKSB7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLl9zd2lwZU9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlRG93bihldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU3RhcnRQb3NpdGlvbihldmVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICAgIG9uTW92ZShldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMubW92ZShldmVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnLCBbJyRldmVudCddKVxuICAgIG9uUmVsZWFzZShldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMucmVsZWFzZShldmVudCk7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvLyAqKiBQUklWQVRFICoqIC8vXG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiBjaGVja3MgaWYgdGhlIGN1cnJlbnQgbW92aW5nIGRlbHRhIGlzIGluc2lkZSB0aGUgZGVmaW5lZCB0aHJlc2hvbGQuXG4gICAgICogU2V0cyB0aGUgZmxhZyB0byB0cnVlIGlmIHRoZSB0aHJlc2hvbGQgd2FzIHJlYWNoZWQgb25jZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNoZWNrVGhyZXNob2xkKG1vdmVFdmVudDogU3dpcGVNb3ZlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGVyY2VudGFnZSA9IHRoaXMuX3N3aXBlT3B0aW9ucyAmJiB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVUaHJlc2hvbGRUeXBlID09PSAnJSc7XG5cbiAgICAgICAgaWYgKCFwZXJjZW50YWdlICYmIHRoaXMuX3N3aXBlT3B0aW9ucyAmJiBtb3ZlRXZlbnQuc3dpcGVEaXN0YW5jZVRvdGFsIDwgdGhpcy5fc3dpcGVPcHRpb25zLnN3aXBlVGhyZXNob2xkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBwZXJjZW50YWdlICYmXG4gICAgICAgICAgICB0aGlzLl9zd2lwZU9wdGlvbnMgJiZcbiAgICAgICAgICAgIG1vdmVFdmVudC5zd2lwZURpc3RhbmNlUGVyY2VudGFnZSA8IHRoaXMuX3N3aXBlT3B0aW9ucy5zd2lwZVRocmVzaG9sZCAvIDEwMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RocmVzaG9sZFdhc1JlYWNoZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVTdGFydFBvc2l0aW9uKGV2ZW50PzogYW55KSB7XG4gICAgICAgIC8vIGRldGVjdCBpZiB0b3VjaCBvciBjbGlja1xuICAgICAgICB0aGlzLl9pc01vYmlsZSA9IGV2ZW50LnR5cGUgPT09ICd0b3VjaHN0YXJ0JztcblxuICAgICAgICAvLyBzYXZlIHN0YXJ0IHBvc2l0aW9uXG5cbiAgICAgICAgaWYgKHRoaXMuX3N3aXBlT3B0aW9ucyAmJiB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVMb2NhbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNNb2JpbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaDogVG91Y2ggPSBldmVudC50b3VjaGVzWzBdO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0UG9zaXRpb24gPSB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVMb2NhbFBvc2l0aW9uID8gdG91Y2guY2xpZW50WCA6IHRvdWNoLnBhZ2VYO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFBvc2l0aW9uID0gdGhpcy5fc3dpcGVPcHRpb25zLnN3aXBlTG9jYWxQb3NpdGlvbiA/IGV2ZW50Lm9mZnNldFggOiBldmVudC5wYWdlWDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RQb3NYID0gdGhpcy5fc3RhcnRQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fdGltZVN0YXJ0ID0gZXZlbnQudGltZVN0YW1wO1xuICAgICAgICB0aGlzLl90aHJlc2hvbGRXYXNSZWFjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gZmFpbHNhZmVcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwb3NYID0gMDtcblxuICAgICAgICBpZiAodGhpcy5fc3dpcGVPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNNb2JpbGUgJiYgZXZlbnQudHlwZSA9PT0gJ3RvdWNobW92ZScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaDogVG91Y2ggPSBldmVudC50b3VjaGVzWzBdO1xuICAgICAgICAgICAgICAgIHBvc1ggPSB0aGlzLl9zd2lwZU9wdGlvbnMuc3dpcGVMb2NhbFBvc2l0aW9uID8gdG91Y2guY2xpZW50WCA6IHRvdWNoLnBhZ2VYO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3NYID0gdGhpcy5fc3dpcGVPcHRpb25zLnN3aXBlTG9jYWxQb3NpdGlvbiA/IGV2ZW50Lm9mZnNldFggOiBldmVudC5wYWdlWDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9mZnNldFBlckZyYW1lOiBudW1iZXIgPSBwb3NYIC0gdGhpcy5fbGFzdFBvc1g7XG4gICAgICAgIGNvbnN0IHN3aXBlRGlzdGFuY2VUb3RhbDogbnVtYmVyID0gTWF0aC5hYnMocG9zWCAtIHRoaXMuX3N0YXJ0UG9zaXRpb24pO1xuICAgICAgICBjb25zdCBzd2lwZURpc3RhbmNlUGVyY2VudGFnZTogbnVtYmVyID0gTWF0aC5hYnMoc3dpcGVEaXN0YW5jZVRvdGFsIC8gZXZlbnQudGFyZ2V0LmNsaWVudFdpZHRoKTtcbiAgICAgICAgY29uc3QgdGltZUR1cmF0aW9uOiBudW1iZXIgPSBNYXRoLmFicyhldmVudC50aW1lU3RhbXAgLSB0aGlzLl90aW1lU3RhcnQpO1xuXG4gICAgICAgIGxldCBkaXJlY3Rpb246IG51bWJlcjtcbiAgICAgICAgbGV0IHNwZWVkOiBudW1iZXIgPSAxIC0gc3dpcGVEaXN0YW5jZVRvdGFsIC8gdGltZUR1cmF0aW9uO1xuICAgICAgICBzcGVlZCA9IE1hdGgubWF4KDAuMSwgc3BlZWQpO1xuXG4gICAgICAgIGlmIChwb3NYIC0gdGhpcy5fc3RhcnRQb3NpdGlvbiA+IDApIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IDE7IC8vIGEuay5hIExUUlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gLTE7IC8vIGEuay5hIFJUTFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW92ZUV2ZW50RGF0YSA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwb3NYLFxuICAgICAgICAgICAgb2Zmc2V0UGVyRnJhbWU6IG9mZnNldFBlckZyYW1lLFxuICAgICAgICAgICAgc3dpcGVEaXN0YW5jZVRvdGFsOiBzd2lwZURpc3RhbmNlVG90YWwsXG4gICAgICAgICAgICBzd2lwZURpc3RhbmNlUGVyY2VudGFnZTogc3dpcGVEaXN0YW5jZVBlcmNlbnRhZ2UsXG4gICAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgICAgICAgIHNwZWVkOiBzcGVlZCxcbiAgICAgICAgICAgIHRocmVzaG9sZFdhc1JlYWNoZWQ6IHRoaXMuX3RocmVzaG9sZFdhc1JlYWNoZWQsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5jaGVja1RocmVzaG9sZCh0aGlzLl9tb3ZlRXZlbnREYXRhKTtcblxuICAgICAgICAvLyB1cGRhdGUgbW92ZSBkZWx0YVxuICAgICAgICB0aGlzLl9sYXN0UG9zWCA9IHBvc1g7XG5cbiAgICAgICAgLy8gaW5mb3JtXG4gICAgICAgIHRoaXMubW92ZUV2ZW50LmVtaXQodGhpcy5fbW92ZUV2ZW50RGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWxlYXNlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gY2FzZToganVzdCBhIGNsaWNrL3RvdWNoXG5cbiAgICAgICAgaWYgKCF0aGlzLl9tb3ZlRXZlbnREYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWxlYXNlRXZlbnREYXRhOiBTd2lwZVJlbGVhc2VFdmVudCA9IHtcbiAgICAgICAgICAgIHRocmVzaG9sZFdhc1JlYWNoZWQ6IHRoaXMuX3RocmVzaG9sZFdhc1JlYWNoZWQsXG4gICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuX21vdmVFdmVudERhdGEuZGlyZWN0aW9uLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuX21vdmVFdmVudERhdGEuc3BlZWQsXG4gICAgICAgICAgICBlYXNpbmdUeXBlOiB0aGlzLmdldEVhc2luZ0N1cnZlKHRoaXMuX21vdmVFdmVudERhdGEuc3BlZWQpLFxuICAgICAgICAgICAgdGFyZ2V0OiBldmVudC5jdXJyZW50VGFyZ2V0LFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGluZm9ybVxuICAgICAgICB0aGlzLnJlbGVhc2VFdmVudC5lbWl0KHJlbGVhc2VFdmVudERhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RWFzaW5nQ3VydmUoc3BlZWQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzcGVlZCA+IDAuNSA/ICdlYXNlLWluJyA6ICdlYXNlLW91dCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldCgpIHtcbiAgICAgICAgdGhpcy5fc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLl90aHJlc2hvbGRXYXNSZWFjaGVkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX21vdmVFdmVudERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX21vdmVFdmVudERhdGEgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @copyright FLYACTS GmbH 2019
|
|
3
|
+
*/
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvZGlyZWN0aXZlcy9zd2lwZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGNvcHlyaWdodCBGTFlBQ1RTIEdtYkggMjAxOVxuICovXG5cbi8qKlxuICogSW5wdXQgYmVoYXZpb3VyIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2lwZU9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFZhbHVlIGZvciB0aGUgc3dpcGVUaHJlc2hvbGRUeXBlLlxuICAgICAqIEV4YW1wbGU6IDUwMHB4IG9yIDEwJSAoZGVwZW5kcyBvbiBzd2lwZVRocmVzaG9sZFR5cGUpXG4gICAgICovXG4gICAgc3dpcGVUaHJlc2hvbGQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEFsbG93ZWQgdmFsdWVzOiAnJScgb3IgJ3B4J1xuICAgICAqIERlZmluZXMgdG9nZXRoZXIgd2l0aCB0aGUgdmFsdWUgb2Ygc3dpcGVUaHJlc2hvbGQgdGhlIHdheSBob3cgdGhlIHRocmVzaG9sZCBpcyBjYWxjdWxhdGVkOlxuICAgICAqIElmIGEgY2VydGFpbiBhbW91bnQgb2YgcGl4ZWxzIG9yIGEgcGVyY2VudGFnZSBvZiB0aGUgcGFyZW50IGNvbnRhaW5lciB3YXMgcGFzc2VkLlxuICAgICAqIFB1cnBvc2U6XG4gICAgICogVGhyZXNob2xkIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBpZiBzdGguIHNob3VsZCBoYXBwZW4gd2hlbiB0aGUgdXNlciBvdmVyIHN3aXBlcyB0aGUgZ2l2ZW4gdmFsdWVzLFxuICAgICAqIGZvciBpbnN0YW5jZSBza2lwIHRvIG5leHQgc2xpZGUuXG4gICAgICovXG4gICAgc3dpcGVUaHJlc2hvbGRUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBub3RlOiBEZWZpbmVzIGlmIHRoZSBsb2NhbCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCBzaG91bGQgYmUgdXNlZCBmb3IgY2FsY3VsYXRpb24gb3IgdGhlIGdsb2JhbC5cbiAgICAgKiBGb3IgYSBzbGlkZXIgdGhlIGdsb2JhbCBpcyBuZWVkZWQuXG4gICAgICovXG4gICAgc3dpcGVMb2NhbFBvc2l0aW9uOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN3aXBlIG1vdmUgZXZlbnQgaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2lwZU1vdmVFdmVudCB7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICBvZmZzZXRQZXJGcmFtZTogbnVtYmVyO1xuICAgIHN3aXBlRGlzdGFuY2VUb3RhbDogbnVtYmVyO1xuICAgIHN3aXBlRGlzdGFuY2VQZXJjZW50YWdlOiBudW1iZXI7XG4gICAgZGlyZWN0aW9uOiBudW1iZXI7XG4gICAgc3BlZWQ6IG51bWJlcjtcbiAgICB0aHJlc2hvbGRXYXNSZWFjaGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN3aXBlIHJlbGVhc2UgZXZlbnQgaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2lwZVJlbGVhc2VFdmVudCB7XG4gICAgdGhyZXNob2xkV2FzUmVhY2hlZDogYm9vbGVhbjtcbiAgICBkaXJlY3Rpb246IG51bWJlcjtcbiAgICBzcGVlZDogbnVtYmVyO1xuICAgIGVhc2luZ1R5cGU6IHN0cmluZztcbiAgICBcbiAgICB0YXJnZXQ6IGFueTtcbn1cbiJdfQ==
|