@kms-ngx-ui/presentational 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +24 -0
  2. package/bundles/kms-ngx-ui-presentational.umd.js +2441 -0
  3. package/bundles/kms-ngx-ui-presentational.umd.js.map +1 -0
  4. package/bundles/kms-ngx-ui-presentational.umd.min.js +38 -0
  5. package/bundles/kms-ngx-ui-presentational.umd.min.js.map +1 -0
  6. package/esm2015/kms-ngx-ui-presentational.js +37 -0
  7. package/esm2015/lib/kms-ngx-ui-presentational.component.js +18 -0
  8. package/esm2015/lib/kms-ngx-ui-presentational.module.js +98 -0
  9. package/esm2015/lib/kms-ngx-ui-presentational.service.js +13 -0
  10. package/esm2015/lib/models/address.model.js +6 -0
  11. package/esm2015/lib/models/iconSize.enum.js +17 -0
  12. package/esm2015/lib/models/index.js +5 -0
  13. package/esm2015/lib/models/is-value.function.js +17 -0
  14. package/esm2015/lib/models/salutation.enum.js +8 -0
  15. package/esm2015/lib/models/types/attached-file-dto.model.js +6 -0
  16. package/esm2015/lib/models/types/nullable.type.js +5 -0
  17. package/esm2015/lib/parent-components/actions.component.js +48 -0
  18. package/esm2015/lib/parent-components/form-control.component.js +73 -0
  19. package/esm2015/lib/parent-components/form.component.js +77 -0
  20. package/esm2015/lib/pipes/custom-pipes.module.js +45 -0
  21. package/esm2015/lib/pipes/decode-uri.pipe.js +15 -0
  22. package/esm2015/lib/pipes/encode-uri.pipe.js +15 -0
  23. package/esm2015/lib/pipes/integer-currency.pipe.js +29 -0
  24. package/esm2015/lib/pipes/safe-html.pipe.js +22 -0
  25. package/esm2015/lib/pipes/safe-style.pipe.js +22 -0
  26. package/esm2015/lib/pipes/safe-url.pipe.js +22 -0
  27. package/esm2015/lib/pipes/to-number.pipe.js +19 -0
  28. package/esm2015/lib/pipes/trim.pipe.js +16 -0
  29. package/esm2015/lib/pipes/typeof.pipe.js +12 -0
  30. package/esm2015/lib/services/viewport.service.js +213 -0
  31. package/esm2015/lib/ui/back-to-top/back-to-top.component.js +46 -0
  32. package/esm2015/lib/ui/button-with-confirm-dialog/button-response-types.enum.js +6 -0
  33. package/esm2015/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.js +56 -0
  34. package/esm2015/lib/ui/button-with-confirm-dialog/dialog-data.model.js +2 -0
  35. package/esm2015/lib/ui/checkbox/checkbox.component.js +63 -0
  36. package/esm2015/lib/ui/color-input/color-input.component.js +63 -0
  37. package/esm2015/lib/ui/enum-radiogroup/enum-radiogroup.component.js +46 -0
  38. package/esm2015/lib/ui/file-input/file-input.component.js +215 -0
  39. package/esm2015/lib/ui/flyout/flyout.component.js +84 -0
  40. package/esm2015/lib/ui/generic-dialog/generic-dialog.component.js +54 -0
  41. package/esm2015/lib/ui/icon/icon.component.js +47 -0
  42. package/esm2015/lib/ui/icon/iconSize.enum.js +17 -0
  43. package/esm2015/lib/ui/kms-accordion-item/kms-accordion-item.component.js +36 -0
  44. package/esm2015/lib/ui/loader/loader.component.js +21 -0
  45. package/esm2015/lib/ui/map/map.component.js +137 -0
  46. package/esm2015/lib/ui/radiobutton/radiobutton.component.js +66 -0
  47. package/esm2015/lib/ui/salutation-dropdown/salutation-dropdown.component.js +49 -0
  48. package/esm2015/lib/ui/salutation-radiogroup/salutation-radiogroup.component.js +44 -0
  49. package/esm2015/lib/ui/time-input/time-input.component.js +80 -0
  50. package/esm2015/lib/ui/tooltip/tooltip.component.js +17 -0
  51. package/esm2015/lib/ui/tooltip-icon/tooltip-icon.component.js +29 -0
  52. package/esm2015/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.js +74 -0
  53. package/esm2015/public-api.js +12 -0
  54. package/fesm2015/kms-ngx-ui-presentational.js +1962 -0
  55. package/fesm2015/kms-ngx-ui-presentational.js.map +1 -0
  56. package/kms-ngx-ui-presentational.d.ts +37 -0
  57. package/kms-ngx-ui-presentational.metadata.json +1 -0
  58. package/lib/kms-ngx-ui-presentational.component.d.ts +5 -0
  59. package/lib/kms-ngx-ui-presentational.module.d.ts +2 -0
  60. package/lib/kms-ngx-ui-presentational.service.d.ts +3 -0
  61. package/lib/models/address.model.d.ts +14 -0
  62. package/lib/models/iconSize.enum.d.ts +15 -0
  63. package/lib/models/index.d.ts +4 -0
  64. package/lib/models/is-value.function.d.ts +9 -0
  65. package/lib/models/salutation.enum.d.ts +5 -0
  66. package/lib/models/types/attached-file-dto.model.d.ts +11 -0
  67. package/lib/models/types/nullable.type.d.ts +4 -0
  68. package/lib/parent-components/actions.component.d.ts +28 -0
  69. package/lib/parent-components/form-control.component.d.ts +24 -0
  70. package/lib/parent-components/form.component.d.ts +31 -0
  71. package/lib/pipes/custom-pipes.module.d.ts +5 -0
  72. package/lib/pipes/decode-uri.pipe.d.ts +7 -0
  73. package/lib/pipes/encode-uri.pipe.d.ts +7 -0
  74. package/lib/pipes/integer-currency.pipe.d.ts +10 -0
  75. package/lib/pipes/safe-html.pipe.d.ts +10 -0
  76. package/lib/pipes/safe-style.pipe.d.ts +10 -0
  77. package/lib/pipes/safe-url.pipe.d.ts +10 -0
  78. package/lib/pipes/to-number.pipe.d.ts +7 -0
  79. package/lib/pipes/trim.pipe.d.ts +7 -0
  80. package/lib/pipes/typeof.pipe.d.ts +4 -0
  81. package/lib/services/viewport.service.d.ts +74 -0
  82. package/lib/ui/back-to-top/back-to-top.component.d.ts +10 -0
  83. package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +4 -0
  84. package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +16 -0
  85. package/lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts +9 -0
  86. package/lib/ui/checkbox/checkbox.component.d.ts +28 -0
  87. package/lib/ui/color-input/color-input.component.d.ts +15 -0
  88. package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +14 -0
  89. package/lib/ui/file-input/file-input.component.d.ts +86 -0
  90. package/lib/ui/flyout/flyout.component.d.ts +32 -0
  91. package/lib/ui/generic-dialog/generic-dialog.component.d.ts +23 -0
  92. package/lib/ui/icon/icon.component.d.ts +39 -0
  93. package/lib/ui/icon/iconSize.enum.d.ts +15 -0
  94. package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +18 -0
  95. package/lib/ui/loader/loader.component.d.ts +6 -0
  96. package/lib/ui/map/map.component.d.ts +70 -0
  97. package/lib/ui/radiobutton/radiobutton.component.d.ts +23 -0
  98. package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +14 -0
  99. package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +12 -0
  100. package/lib/ui/time-input/time-input.component.d.ts +19 -0
  101. package/lib/ui/tooltip/tooltip.component.d.ts +3 -0
  102. package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +10 -0
  103. package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +24 -0
  104. package/package.json +25 -0
  105. package/public-api.d.ts +6 -0
  106. package/src/lib/ui/back-to-top/back-to-top.component.scss +47 -0
  107. package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.scss +0 -0
  108. package/src/lib/ui/checkbox/checkbox.component.scss +57 -0
  109. package/src/lib/ui/color-input/color-input.component.scss +38 -0
  110. package/src/lib/ui/file-input/file-input.component.scss +0 -0
  111. package/src/lib/ui/flyout/flyout.component.scss +34 -0
  112. package/src/lib/ui/generic-dialog/generic-dialog.component.scss +59 -0
  113. package/src/lib/ui/icon/icon.component.scss +149 -0
  114. package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +95 -0
  115. package/src/lib/ui/loader/loader.component.scss +0 -0
  116. package/src/lib/ui/map/map.component.scss +0 -0
  117. package/src/lib/ui/radiobutton/radiobutton.component.scss +30 -0
  118. package/src/lib/ui/time-input/time-input.component.scss +10 -0
  119. package/src/lib/ui/tooltip/tooltip.component.scss +27 -0
  120. package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +2 -0
  121. package/src/styles/mixins.scss +9 -0
  122. package/src/styles/styles.scss +30 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * @copyright KMS GmbH
3
+ */
4
+ import { isPlatformBrowser } from '@angular/common';
5
+ import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
6
+ import { Subject } from 'rxjs';
7
+ /**
8
+ * Service to get viewport
9
+ */
10
+ export class ViewportService {
11
+ constructor(platformId) {
12
+ this.platformId = platformId;
13
+ this.viewports = [
14
+ {
15
+ name: 'xs',
16
+ low: 420,
17
+ high: 990,
18
+ },
19
+ {
20
+ name: 's',
21
+ low: 991,
22
+ high: 1024,
23
+ },
24
+ {
25
+ name: 'm',
26
+ low: 1025,
27
+ high: 1200,
28
+ },
29
+ {
30
+ name: 'l',
31
+ low: 12001,
32
+ high: 1400,
33
+ },
34
+ {
35
+ name: 'xl',
36
+ low: 1401,
37
+ high: 1600,
38
+ },
39
+ {
40
+ name: 'xxl',
41
+ low: 1601,
42
+ high: 1920,
43
+ },
44
+ {
45
+ name: 'xxxl',
46
+ low: 1921,
47
+ high: 99999,
48
+ },
49
+ ];
50
+ this.viewportChangedSubscriber = new Subject();
51
+ this.viewportResizedSubscriber = new Subject();
52
+ if (isPlatformBrowser(this.platformId)) {
53
+ window.addEventListener('resize', this.documentSizeChanged.bind(this), { passive: true });
54
+ }
55
+ }
56
+ /**
57
+ * Get window height
58
+ */
59
+ getDocumentHeight() {
60
+ return isPlatformBrowser(this.platformId) ? document.body.clientHeight : 1200;
61
+ }
62
+ /**
63
+ * Get window width
64
+ */
65
+ getDocumentWidth() {
66
+ return isPlatformBrowser(this.platformId) ? document.body.clientWidth : 1200;
67
+ }
68
+ /**
69
+ * Get window height
70
+ */
71
+ getWindowHeight() {
72
+ return isPlatformBrowser(this.platformId) ? window.innerHeight : 1200;
73
+ }
74
+ /**
75
+ * Get window width
76
+ */
77
+ getWindowWidth() {
78
+ return isPlatformBrowser(this.platformId) ? window.innerWidth : 1200;
79
+ }
80
+ /**
81
+ * Returns the current viewport MQ as string
82
+ * @returns string
83
+ */
84
+ getCurrentViewPort() {
85
+ if (!this.currentViewport) {
86
+ const currentWidth = isPlatformBrowser(this.platformId) ? document.body.clientWidth : 1200;
87
+ this.currentViewport = this.convertWidthToMediaQuery(currentWidth);
88
+ }
89
+ return this.currentViewport;
90
+ }
91
+ /**
92
+ * Provides mq´s as string
93
+ */
94
+ getViewportChangedObserver() {
95
+ return this.viewportChangedSubscriber.asObservable();
96
+ }
97
+ /**
98
+ * Provides the current window width as number
99
+ */
100
+ getViewportResizedObserver() {
101
+ return this.viewportResizedSubscriber.asObservable();
102
+ }
103
+ scrollToElementId(el, alignCenter = false) {
104
+ if (isPlatformBrowser(this.platformId)) {
105
+ this.scrollToElement(document.querySelector('#' + el), alignCenter);
106
+ }
107
+ }
108
+ /**
109
+ * Helper function that scrolls to the given markup element.
110
+ * @param el - nativeElement from markup
111
+ * @param alignCenter - defines if the element needs to be centered on window
112
+ */
113
+ scrollToElement(el, alignCenter = false) {
114
+ if (isPlatformBrowser(this.platformId)) {
115
+ let extraScrollTop = 0;
116
+ if (alignCenter) {
117
+ extraScrollTop = (window.innerHeight - el.clientHeight) / 2;
118
+ }
119
+ /*
120
+ const elementPos: DOMRect = el.getBoundingClientRect();
121
+ const scrollTopPosition = elementPos.x - extraScrollTop;
122
+ */
123
+ //let offsetLeft = 0;
124
+ let offsetTop = 0;
125
+ let elTemp = el;
126
+ while (elTemp) {
127
+ //offsetLeft += elTemp.offsetLeft;
128
+ offsetTop += elTemp.offsetTop;
129
+ elTemp = elTemp.parentElement ? elTemp.parentElement : null;
130
+ }
131
+ window.scrollTo({ left: 0, top: offsetTop - extraScrollTop, behavior: 'smooth' });
132
+ }
133
+ }
134
+ /**
135
+ * Scroll to the top position
136
+ * @param top - top position value
137
+ */
138
+ scrollTop(top) {
139
+ if (isPlatformBrowser(this.platformId)) {
140
+ window.scrollTo({ left: 0, top: top, behavior: 'smooth' });
141
+ }
142
+ }
143
+ ngOnDestroy() {
144
+ if (isPlatformBrowser(this.platformId)) {
145
+ window.removeEventListener('resize', this.documentSizeChanged);
146
+ }
147
+ }
148
+ /**
149
+ * If viewport changed
150
+ * @event
151
+ */
152
+ documentSizeChanged(event) {
153
+ const currentWindowWidth = event.target.innerWidth;
154
+ // inform who´s interested
155
+ this.viewportResizedSubscriber.next(currentWindowWidth);
156
+ if (currentWindowWidth > 0) {
157
+ for (const mqs of this.viewports) {
158
+ if (currentWindowWidth > mqs.high) {
159
+ continue;
160
+ }
161
+ else if ((currentWindowWidth >= mqs.low || currentWindowWidth <= mqs.high) &&
162
+ this.currentViewport !== mqs.name) {
163
+ this.currentViewport = mqs.name;
164
+ // inform who´s interested
165
+ this.viewportChangedSubscriber.next(mqs.name);
166
+ break;
167
+ }
168
+ else if (this.currentViewport === mqs.name) {
169
+ break;
170
+ }
171
+ else {
172
+ console.error('ERROR');
173
+ }
174
+ }
175
+ }
176
+ }
177
+ /**
178
+ * Get the Media Query for the given width
179
+ * @param width Width to get the according MQ for
180
+ */
181
+ convertWidthToMediaQuery(width) {
182
+ let currentViewport = '';
183
+ for (const mqs of this.viewports) {
184
+ if (width <= mqs.high && width >= mqs.low) {
185
+ currentViewport = mqs.name;
186
+ break;
187
+ }
188
+ }
189
+ return currentViewport;
190
+ }
191
+ isPortrait() {
192
+ if (isPlatformBrowser(this.platformId))
193
+ return window.innerHeight > window.innerWidth;
194
+ else
195
+ return;
196
+ }
197
+ isLandscape() {
198
+ if (isPlatformBrowser(this.platformId)) {
199
+ const isLandscape = window.orientation === 90 || window.orientation === -90;
200
+ return isLandscape;
201
+ }
202
+ else {
203
+ return;
204
+ }
205
+ }
206
+ }
207
+ ViewportService.decorators = [
208
+ { type: Injectable }
209
+ ];
210
+ ViewportService.ctorParameters = () => [
211
+ { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
212
+ ];
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQTJDeEIsWUFBeUMsVUFBa0I7UUFBbEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQTFDM0MsY0FBUyxHQUFHO1lBQ3hCO2dCQUNJLElBQUksRUFBRSxJQUFJO2dCQUNWLEdBQUcsRUFBRSxHQUFHO2dCQUNSLElBQUksRUFBRSxHQUFHO2FBQ1o7WUFDRDtnQkFDSSxJQUFJLEVBQUUsR0FBRztnQkFDVCxHQUFHLEVBQUUsR0FBRztnQkFDUixJQUFJLEVBQUUsSUFBSTthQUNiO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxHQUFHO2dCQUNULEdBQUcsRUFBRSxLQUFLO2dCQUNWLElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxJQUFJLEVBQUUsSUFBSTtnQkFDVixHQUFHLEVBQUUsSUFBSTtnQkFDVCxJQUFJLEVBQUUsSUFBSTthQUNiO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxNQUFN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LFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUUsT0FBTyxXQUFXLENBQUM7U0FDdEI7YUFBTTtZQUNILE9BQU87U0FDVjtJQUNMLENBQUM7OztZQTdOSixVQUFVOzs7WUE0QzhDLE1BQU0sdUJBQTlDLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbi8vIG5lZWRlZCBmb3Igc2Nyb2xsVG9FbGVtZW50IGZ1bmN0aW9uYWxpdHlcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcblxuZGVjbGFyZSBjb25zdCBkb2N1bWVudDogYW55O1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gZ2V0IHZpZXdwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4cycsXG4gICAgICAgICAgICBsb3c6IDQyMCxcbiAgICAgICAgICAgIGhpZ2g6IDk5MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3MnLFxuICAgICAgICAgICAgbG93OiA5OTEsXG4gICAgICAgICAgICBoaWdoOiAxMDI0LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbScsXG4gICAgICAgICAgICBsb3c6IDEwMjUsXG4gICAgICAgICAgICBoaWdoOiAxMjAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbCcsXG4gICAgICAgICAgICBsb3c6IDEyMDAxLFxuICAgICAgICAgICAgaGlnaDogMTQwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3hsJyxcbiAgICAgICAgICAgIGxvdzogMTQwMSxcbiAgICAgICAgICAgIGhpZ2g6IDE2MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4eGwnLFxuICAgICAgICAgICAgbG93OiAxNjAxLFxuICAgICAgICAgICAgaGlnaDogMTkyMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3h4eGwnLFxuICAgICAgICAgICAgbG93OiAxOTIxLFxuICAgICAgICAgICAgaGlnaDogOTk5OTksXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIHByaXZhdGUgdmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlcjogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgdmlld3BvcnRSZXNpemVkU3Vic2NyaWJlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIHByaXZhdGUgY3VycmVudFZpZXdwb3J0ITogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50U2l6ZUNoYW5nZWQuYmluZCh0aGlzKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyBoZWlnaHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RG9jdW1lbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyBoZWlnaHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2luZG93SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gd2luZG93LmlubmVySGVpZ2h0IDogMTIwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgd2luZG93IHdpZHRoXG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gd2luZG93LmlubmVyV2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgZ2V0Q3VycmVudFZpZXdQb3J0KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aDogbnVtYmVyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSB0aGlzLmNvbnZlcnRXaWR0aFRvTWVkaWFRdWVyeShjdXJyZW50V2lkdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIG1xwrRzIGFzIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRWaWV3cG9ydENoYW5nZWRPYnNlcnZlcigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3cG9ydENoYW5nZWRTdWJzY3JpYmVyLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBjdXJyZW50IHdpbmRvdyB3aWR0aCBhcyBudW1iZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRSZXNpemVkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRSZXNpemVkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2Nyb2xsVG9FbGVtZW50SWQoZWw6IHN0cmluZywgYWxpZ25DZW50ZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignIycgKyBlbCksIGFsaWduQ2VudGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IHNjcm9sbHMgdG8gdGhlIGdpdmVuIG1hcmt1cCBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBlbCAtIG5hdGl2ZUVsZW1lbnQgZnJvbSBtYXJrdXBcbiAgICAgKiBAcGFyYW0gYWxpZ25DZW50ZXIgLSBkZWZpbmVzIGlmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGNlbnRlcmVkIG9uIHdpbmRvd1xuICAgICAqL1xuXG4gICAgcHVibGljIHNjcm9sbFRvRWxlbWVudChlbDogSFRNTEVsZW1lbnQsIGFsaWduQ2VudGVyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGxldCBleHRyYVNjcm9sbFRvcCA9IDA7XG5cbiAgICAgICAgICAgIGlmIChhbGlnbkNlbnRlcikge1xuICAgICAgICAgICAgICAgIGV4dHJhU2Nyb2xsVG9wID0gKHdpbmRvdy5pbm5lckhlaWdodCAtIGVsLmNsaWVudEhlaWdodCkgLyAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvczogRE9NUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsVG9wUG9zaXRpb24gPSBlbGVtZW50UG9zLnggLSBleHRyYVNjcm9sbFRvcDtcbiAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC8vbGV0IG9mZnNldExlZnQgPSAwO1xuICAgICAgICAgICAgbGV0IG9mZnNldFRvcCA9IDA7XG5cbiAgICAgICAgICAgIGxldCBlbFRlbXA6IE51bGxBYmxlPEhUTUxFbGVtZW50PiA9IGVsO1xuXG4gICAgICAgICAgICB3aGlsZSAoZWxUZW1wKSB7XG4gICAgICAgICAgICAgICAgLy9vZmZzZXRMZWZ0ICs9IGVsVGVtcC5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBlbFRlbXAub2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgIGVsVGVtcCA9IGVsVGVtcC5wYXJlbnRFbGVtZW50ID8gZWxUZW1wLnBhcmVudEVsZW1lbnQgOiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IG9mZnNldFRvcCAtIGV4dHJhU2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwgdG8gdGhlIHRvcCBwb3NpdGlvblxuICAgICAqIEBwYXJhbSB0b3AgLSB0b3AgcG9zaXRpb24gdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsVG9wKHRvcDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IHRvcCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFNpemVDaGFuZ2VkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHZpZXdwb3J0IGNoYW5nZWRcbiAgICAgKiBAZXZlbnRcbiAgICAgKi9cblxuICAgIHByaXZhdGUgZG9jdW1lbnRTaXplQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3dXaWR0aDogbnVtYmVyID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgIC8vIGluZm9ybSB3aG/CtHMgaW50ZXJlc3RlZFxuICAgICAgICB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIubmV4dChjdXJyZW50V2luZG93V2lkdGgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50V2luZG93V2lkdGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1xcyBvZiB0aGlzLnZpZXdwb3J0cykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50V2luZG93V2lkdGggPiBtcXMuaGlnaCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoY3VycmVudFdpbmRvd1dpZHRoID49IG1xcy5sb3cgfHwgY3VycmVudFdpbmRvd1dpZHRoIDw9IG1xcy5oaWdoKSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3cG9ydCAhPT0gbXFzLm5hbWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSBtcXMubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5mb3JtIHdob8K0cyBpbnRlcmVzdGVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5uZXh0KG1xcy5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRWaWV3cG9ydCA9PT0gbXFzLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRVJST1InKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIE1lZGlhIFF1ZXJ5IGZvciB0aGUgZ2l2ZW4gd2lkdGhcbiAgICAgKiBAcGFyYW0gd2lkdGggV2lkdGggdG8gZ2V0IHRoZSBhY2NvcmRpbmcgTVEgZm9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0V2lkdGhUb01lZGlhUXVlcnkod2lkdGg6IG51bWJlcikge1xuICAgICAgICBsZXQgY3VycmVudFZpZXdwb3J0ID0gJyc7XG5cbiAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy52aWV3cG9ydHMpIHtcbiAgICAgICAgICAgIGlmICh3aWR0aCA8PSBtcXMuaGlnaCAmJiB3aWR0aCA+PSBtcXMubG93KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZpZXdwb3J0ID0gbXFzLm5hbWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIGlzUG9ydHJhaXQoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0ID4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGVsc2UgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzTGFuZHNjYXBlKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMYW5kc2NhcGUgPSB3aW5kb3cub3JpZW50YXRpb24gPT09IDkwIHx8IHdpbmRvdy5vcmllbnRhdGlvbiA9PT0gLTkwO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGFuZHNjYXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @copyright KMS GmbH
3
+ */
4
+ import { Component, HostListener, Inject, PLATFORM_ID } from '@angular/core';
5
+ import { isPlatformBrowser } from '@angular/common';
6
+ export class BackToTopComponent {
7
+ constructor(platformId) {
8
+ this.platformId = platformId;
9
+ }
10
+ onWindowScroll() {
11
+ if (isPlatformBrowser(this.platformId)) {
12
+ if (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop > 100) {
13
+ this.windowScrolled = true;
14
+ }
15
+ else if ((this.windowScrolled && window.pageYOffset) ||
16
+ document.documentElement.scrollTop ||
17
+ document.body.scrollTop < 10) {
18
+ this.windowScrolled = false;
19
+ }
20
+ }
21
+ }
22
+ scrollToTop() {
23
+ if (isPlatformBrowser(this.platformId)) {
24
+ (function smoothscroll() {
25
+ const currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
26
+ if (currentScroll > 0) {
27
+ window.requestAnimationFrame(smoothscroll);
28
+ window.scrollTo(0, currentScroll - currentScroll / 8);
29
+ }
30
+ })();
31
+ }
32
+ }
33
+ }
34
+ BackToTopComponent.decorators = [
35
+ { type: Component, args: [{
36
+ selector: 'kms-back-to-top',
37
+ template: "<div class=\"scrollToTop\"\n [ngClass]=\"{'show': windowScrolled}\"\n (click)=\"scrollToTop()\">\n <div class=\"scrollToTop-inner\">\n <kms-icon icon=\"floating_button_clear\" iconClass=\"color-white\"></kms-icon>\n </div>\n</div>"
38
+ },] }
39
+ ];
40
+ BackToTopComponent.ctorParameters = () => [
41
+ { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
42
+ ];
43
+ BackToTopComponent.propDecorators = {
44
+ onWindowScroll: [{ type: HostListener, args: ['window:scroll', [],] }]
45
+ };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay10by10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2JhY2stdG8tdG9wL2JhY2stdG8tdG9wLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUczQixZQUF3QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO0lBQUcsQ0FBQztJQUc5RCxjQUFjO1FBQ1YsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDM0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDOUI7aUJBQU0sSUFDSCxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTO2dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQzlCO2dCQUNFLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1NBQ0o7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLENBQUMsU0FBUyxZQUFZO2dCQUNsQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDcEYsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixNQUFNLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSO0lBQ0wsQ0FBQzs7O1lBbENKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixpUkFBMkM7YUFDOUM7OztZQUl1RCxNQUFNLHVCQUE3QyxNQUFNLFNBQUMsV0FBVzs7OzZCQUU5QixZQUFZLFNBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgS01TIEdtYkhcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1iYWNrLXRvLXRvcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhY2stdG8tdG9wLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQmFja1RvVG9wQ29tcG9uZW50IHtcbiAgICB3aW5kb3dTY3JvbGxlZD86IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwdWJsaWMgcGxhdGZvcm1JZDogT2JqZWN0KSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICAgIG9uV2luZG93U2Nyb2xsKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID4gMTAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dTY3JvbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICh0aGlzLndpbmRvd1Njcm9sbGVkICYmIHdpbmRvdy5wYWdlWU9mZnNldCkgfHxcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPCAxMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dTY3JvbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAoZnVuY3Rpb24gc21vb3Roc2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHNtb290aHNjcm9sbCk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBjdXJyZW50U2Nyb2xsIC0gY3VycmVudFNjcm9sbCAvIDgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export var ButtonResponseType;
2
+ (function (ButtonResponseType) {
3
+ ButtonResponseType["primary"] = "primary";
4
+ ButtonResponseType["secondary"] = "secondary";
5
+ })(ButtonResponseType || (ButtonResponseType = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQix5Q0FBbUIsQ0FBQTtJQUNuQiw2Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblJlc3BvbnNlVHlwZXtcbiAgICBwcmltYXJ5ID0gJ3ByaW1hcnknLFxuICAgIHNlY29uZGFyeSA9ICdzZWNvbmRhcnknXG59Il19
@@ -0,0 +1,56 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { SubSink } from 'subsink';
4
+ import { GenericDialogComponent } from '../generic-dialog/generic-dialog.component';
5
+ import { ButtonResponseType } from './button-response-types.enum';
6
+ export class ButtonWithConfirmDialogComponent {
7
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
8
+ constructor(dialog) {
9
+ this.dialog = dialog;
10
+ // Outputs when dialogue was closed. Returns true, if yes was clicked, false otherwise
11
+ this.onConfirmClosed = new EventEmitter();
12
+ this.subs = new SubSink();
13
+ }
14
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
15
+ ngOnInit() { }
16
+ start() {
17
+ const data = {
18
+ title: this.confirmTitle,
19
+ buttons: {
20
+ primary: this.confirmTextYes,
21
+ secondary: this.confirmTextNo,
22
+ }
23
+ };
24
+ const dialogRef = this.dialog.open(GenericDialogComponent, {
25
+ data: data,
26
+ });
27
+ this.subs.sink = dialogRef.afterClosed().subscribe(result => {
28
+ if (result === ButtonResponseType.primary) {
29
+ this.onConfirmClosed.emit(true);
30
+ }
31
+ else {
32
+ this.onConfirmClosed.emit(false);
33
+ }
34
+ dialogRef.close();
35
+ });
36
+ }
37
+ }
38
+ ButtonWithConfirmDialogComponent.decorators = [
39
+ { type: Component, args: [{
40
+ selector: 'kms-button-with-confirm-dialog',
41
+ template: "<button\n type=\"button\"\n (click)=\"start()\"\n mat-stroked-button\n [disabled]=\"disabled\"\n>\n {{ buttonText }}\n</button>\n",
42
+ styles: [""]
43
+ },] }
44
+ ];
45
+ ButtonWithConfirmDialogComponent.ctorParameters = () => [
46
+ { type: MatDialog }
47
+ ];
48
+ ButtonWithConfirmDialogComponent.propDecorators = {
49
+ disabled: [{ type: Input }],
50
+ buttonText: [{ type: Input }],
51
+ confirmTitle: [{ type: Input }],
52
+ confirmTextYes: [{ type: Input }],
53
+ confirmTextNo: [{ type: Input }],
54
+ onConfirmClosed: [{ type: Output }]
55
+ };
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUWxFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFZekMsZ0VBQWdFO0lBQ2hFLFlBQ1csTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVA1QixzRkFBc0Y7UUFDNUUsb0JBQWUsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5RCxTQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUsxQixDQUFDO0lBRUosZ0VBQWdFO0lBQ2hFLFFBQVEsS0FBSSxDQUFDO0lBRWIsS0FBSztRQUNELE1BQU0sSUFBSSxHQUFlO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN4QixPQUFPLEVBQUM7Z0JBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDaEM7U0FDSixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDdkQsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hELElBQUksTUFBTSxLQUFLLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7aUJBQUk7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7WUFDRCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUE3Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7Z0JBQzFDLDRKQUEwRDs7YUFFN0Q7OztZQVhRLFNBQVM7Ozt1QkFhYixLQUFLO3lCQUNMLEtBQUs7MkJBQ0wsS0FBSzs2QkFDTCxLQUFLOzRCQUNMLEtBQUs7OEJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJTaW5rIH0gZnJvbSAnc3Vic2luayc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VuZXJpYy1kaWFsb2cvZ2VuZXJpYy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvblJlc3BvbnNlVHlwZSB9IGZyb20gJy4vYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRGlhbG9nRGF0YSB9IGZyb20gJy4vZGlhbG9nLWRhdGEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1idXR0b24td2l0aC1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9idXR0b24td2l0aC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25XaXRoQ29uZmlybURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IE51bGxBYmxlPGJvb2xlYW4+O1xuICAgIEBJbnB1dCgpIGJ1dHRvblRleHQ6IE51bGxBYmxlPHN0cmluZz47XG4gICAgQElucHV0KCkgY29uZmlybVRpdGxlOiBOdWxsQWJsZTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNvbmZpcm1UZXh0WWVzOiBOdWxsQWJsZTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNvbmZpcm1UZXh0Tm86IE51bGxBYmxlPHN0cmluZz47XG5cbiAgICAvLyBPdXRwdXRzIHdoZW4gZGlhbG9ndWUgd2FzIGNsb3NlZC4gUmV0dXJucyB0cnVlLCBpZiB5ZXMgd2FzIGNsaWNrZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgIEBPdXRwdXQoKSBvbkNvbmZpcm1DbG9zZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgc3VicyA9IG5ldyBTdWJTaW5rKCk7XG4gICAgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIHN0YXJ0KCl7XG4gICAgICAgIGNvbnN0IGRhdGE6IERpYWxvZ0RhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5jb25maXJtVGl0bGUsXG4gICAgICAgICAgICBidXR0b25zOntcbiAgICAgICAgICAgICAgICBwcmltYXJ5OiB0aGlzLmNvbmZpcm1UZXh0WWVzLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogdGhpcy5jb25maXJtVGV4dE5vLFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEdlbmVyaWNEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3Vicy5zaW5rID0gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBCdXR0b25SZXNwb25zZVR5cGUucHJpbWFyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db25maXJtQ2xvc2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29uZmlybUNsb3NlZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvZGlhbG9nLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGF0YSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGJ1dHRvbnM/OiBEaWFsb2dEYXRhQnV0dG9uc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGFCdXR0b25zIHtcbiAgICBwcmltYXJ5OiBzdHJpbmcsXG4gICAgc2Vjb25kYXJ5OiBzdHJpbmcsXG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ /*!
2
+ * @copyright FLYACTS GmbH 2019
3
+ */
4
+ import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
5
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { ActionsParentComponent } from '../../parent-components/actions.component';
7
+ export class CheckboxComponent extends ActionsParentComponent {
8
+ constructor() {
9
+ super();
10
+ /**
11
+ * Internal description name. All checkboxes with the same name belong to the same group.
12
+ * User can select none, one or all checkboxes with the same name.
13
+ */
14
+ this.name = '';
15
+ this.select = new EventEmitter();
16
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
17
+ this.onChange = () => { };
18
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
19
+ this.onTouch = () => { };
20
+ }
21
+ selectAction(id) {
22
+ this.select.emit(id);
23
+ this.checked = !this.checked;
24
+ }
25
+ get value() {
26
+ return this.checked;
27
+ }
28
+ set value(value) {
29
+ this.checked = value;
30
+ this.onChange(value);
31
+ this.onTouch(value);
32
+ }
33
+ writeValue(value) {
34
+ this.value = value;
35
+ }
36
+ registerOnChange(fn) {
37
+ this.onChange = fn;
38
+ }
39
+ registerOnTouched(fn) {
40
+ this.onTouch = fn;
41
+ }
42
+ }
43
+ CheckboxComponent.decorators = [
44
+ { type: Component, args: [{
45
+ selector: 'kms-checkbox',
46
+ template: "<!-- <label class=\"wrapper ui-copy-text\"\n [ngClass]=\"{'disabled' : disabled}\">{{label}}\n <input type=\"checkbox\" \n [checked]=\"checked\"\n [value]=\"value\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n (change)=\"selectAction($event)\">\n\n</label> -->\n<mat-checkbox class=\"example-margin\" [disabled]=\"disabled\" [name]=\"name\" [(ngModel)]=\"checked\"></mat-checkbox>\n<span *ngIf=\"infoText && infoText.length > 0\" \n class=\"\"\n [ngClass]=\"{'disabled' : disabled}\">{{infoText}}\n</span>",
47
+ providers: [
48
+ {
49
+ provide: NG_VALUE_ACCESSOR,
50
+ useExisting: forwardRef(() => CheckboxComponent),
51
+ multi: true,
52
+ },
53
+ ],
54
+ styles: [".test{color:#0000cd}"]
55
+ },] }
56
+ ];
57
+ CheckboxComponent.ctorParameters = () => [];
58
+ CheckboxComponent.propDecorators = {
59
+ infoText: [{ type: Input }],
60
+ name: [{ type: Input }],
61
+ select: [{ type: Output }]
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQWVuRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsc0JBQXNCO0lBb0J6RDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBYlo7OztXQUdHO1FBQ00sU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVULFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBVXRDLGdFQUFnRTtRQUNoRSxhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXpCLGdFQUFnRTtRQUNoRSxZQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBTnhCLENBQUM7SUFQRyxZQUFZLENBQUMsRUFBVTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBWUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFjO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7O1lBOURKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsMmtCQUF3QztnQkFFeEMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0JBQ2hELEtBQUssRUFBRSxJQUFJO3FCQUNkO2lCQUNKOzthQUNKOzs7O3VCQU9JLEtBQUs7bUJBTUwsS0FBSztxQkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAY29weXJpZ2h0IEZMWUFDVFMgR21iSCAyMDE5XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bGxBYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuaW1wb3J0IHsgQWN0aW9uc1BhcmVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2FjdGlvbnMuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1jaGVja2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgQWN0aW9uc1BhcmVudENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuXG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBkZXNjcmlwdGlvbiB0ZXh0IHRoYXQgd2lsbCBiZSBzaG93biBiZWxvdyB0aGUgY2hlY2tib3guXG4gICAgICovXG4gICAgQElucHV0KCkgaW5mb1RleHQ6IE51bGxBYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBkZXNjcmlwdGlvbiBuYW1lLiBBbGwgY2hlY2tib3hlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYmVsb25nIHRvIHRoZSBzYW1lIGdyb3VwLlxuICAgICAqIFVzZXIgY2FuIHNlbGVjdCBub25lLCBvbmUgb3IgYWxsIGNoZWNrYm94ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIG5hbWUgPSAnJztcblxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHNlbGVjdEFjdGlvbihpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoaWQpO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgICBnZXQgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKHZhbHVlKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { Component, forwardRef, Input, Renderer2 } from '@angular/core';
2
+ import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { FormControlParentComponent } from './../../parent-components/form-control.component';
4
+ export class ColorInputComponent extends FormControlParentComponent {
5
+ constructor(formBuilder, renderer) {
6
+ super(formBuilder, renderer);
7
+ this.formBuilder = formBuilder;
8
+ this.renderer = renderer;
9
+ this.label = '';
10
+ this.tooltipText = '';
11
+ this.placeholder = '';
12
+ }
13
+ ngOnInit() {
14
+ this.form = this.formBuilder.group({
15
+ color: '',
16
+ });
17
+ this.formInitialized = true;
18
+ this.form.valueChanges.subscribe((value) => {
19
+ this.internalValue = value.color;
20
+ this.onChange(value.color);
21
+ });
22
+ super.ngOnInit();
23
+ }
24
+ validate(_) {
25
+ // TODO fix to validate complete form
26
+ this.valid = this.matchesHex(this.form.value) ? null : false;
27
+ return this.valid && {
28
+ invalid: !this.valid
29
+ };
30
+ }
31
+ matchesHex(match) {
32
+ if (match) {
33
+ const ret = match.match(/^#[0-9a-f]{6}$/i);
34
+ this.valid = ret && ret.length > 0;
35
+ return ret;
36
+ }
37
+ return false;
38
+ }
39
+ }
40
+ ColorInputComponent.decorators = [
41
+ { type: Component, args: [{
42
+ selector: 'kms-color-input',
43
+ template: "\n<form [formGroup]=\"form\" *ngIf=\"formInitialized\">\n <div>\n <mat-form-field class=\"colorInput\">\n <kms-tooltip-icon [tooltipText]=\"tooltipText\" *ngIf=\"tooltipText\"></kms-tooltip-icon>\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" [value]=\"value\" matInput formControlName=\"color\" [placeholder]=\"placeholder\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n <input type=\"color\" [value]=\"value && matchesHex(value) ? value : '#ffffff'\" formControlName=\"color\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n </mat-form-field>\n </div>\n</form>",
44
+ providers: [
45
+ {
46
+ provide: NG_VALUE_ACCESSOR,
47
+ useExisting: forwardRef(() => ColorInputComponent),
48
+ multi: true,
49
+ },
50
+ ],
51
+ styles: [".colorInput{position:relative}.colorInput input[type=color]{display:block;position:absolute;width:20px;height:20px;left:0;bottom:10px;padding:0;margin:0;border:1px solid transparent}.colorInput input.my-inValid[type=color]{border:1px dotted red}.colorInput input[type=text]{padding-left:30px}.colorInput input.my-inValid[type=text]{color:red}.colorInput kms-tooltip-icon{position:absolute;right:0;top:-10px}.colorInput .mat-form-field-label{padding-left:30px}.colorInput .mat-form-field-can-float.mat-focused .mat-form-label{padding-left:0}"]
52
+ },] }
53
+ ];
54
+ ColorInputComponent.ctorParameters = () => [
55
+ { type: FormBuilder },
56
+ { type: Renderer2 }
57
+ ];
58
+ ColorInputComponent.propDecorators = {
59
+ label: [{ type: Input }],
60
+ tooltipText: [{ type: Input }],
61
+ placeholder: [{ type: Input }]
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2NvbG9yLWlucHV0L2NvbG9yLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsV0FBVyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFjOUYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLDBCQUEwQjtJQU8vRCxZQUFtQixXQUF3QixFQUFTLFFBQW1CO1FBQ25FLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFMOUQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0lBSzFCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLENBQWM7UUFDbkIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUk7WUFDakIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUNyQixJQUFHLEtBQUssRUFBQztZQUNMLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztZQUNqQyxPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7O1lBcERKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQix5cEJBQTJDO2dCQUUzQyxTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDbEQsS0FBSyxFQUFFLElBQUk7cUJBQ2Q7aUJBQ0o7O2FBQ0o7OztZQWQ4QixXQUFXO1lBREssU0FBUzs7O29CQWtCbkQsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudCB9IGZyb20gJy4vLi4vLi4vcGFyZW50LWNvbXBvbmVudHMvZm9ybS1jb250cm9sLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna21zLWNvbG9yLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbG9yLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29sb3JJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xvcklucHV0Q29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgQElucHV0KCkgdG9vbHRpcFRleHQgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIHZhbGlkOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKGZvcm1CdWlsZGVyLCByZW5kZXJlcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgY29sb3I6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gdmFsdWUuY29sb3I7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmNvbG9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZShfOiBGb3JtQ29udHJvbCkge1xuICAgICAgICAvLyBUT0RPIGZpeCB0byB2YWxpZGF0ZSBjb21wbGV0ZSBmb3JtXG4gICAgICAgIHRoaXMudmFsaWQgPSB0aGlzLm1hdGNoZXNIZXgodGhpcy5mb3JtLnZhbHVlKSA/IG51bGwgOiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWQgJiYge1xuICAgICAgICAgICAgaW52YWxpZDogIXRoaXMudmFsaWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXRjaGVzSGV4KG1hdGNoPzogc3RyaW5nKXtcbiAgICAgICAgaWYobWF0Y2gpe1xuICAgICAgICAgICAgY29uc3QgcmV0ID0gbWF0Y2gubWF0Y2goL14jWzAtOWEtZl17Nn0kL2kpO1xuICAgICAgICAgICAgdGhpcy52YWxpZCA9IHJldCAmJiByZXQubGVuZ3RoPjA7XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { Component, forwardRef, Input, Renderer2 } from '@angular/core';
2
+ import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { FormControlParentComponent } from './../../parent-components/form-control.component';
4
+ export class EnumRadiogroupComponent extends FormControlParentComponent {
5
+ constructor(formBuilder, renderer) {
6
+ super(formBuilder, renderer);
7
+ this.formBuilder = formBuilder;
8
+ this.renderer = renderer;
9
+ this.translationPrefix = '';
10
+ }
11
+ ngOnInit() {
12
+ this.optionValues = Object.keys(this.optionsEnum).filter(x => !(parseInt(x) >= 0));
13
+ this.form = this.formBuilder.group({
14
+ enumData: [],
15
+ });
16
+ this.formInitialized = true;
17
+ this.form.valueChanges.subscribe((value) => {
18
+ this.internalValue = value.enumData;
19
+ this.onChange(value.enumData);
20
+ });
21
+ super.ngOnInit();
22
+ }
23
+ }
24
+ EnumRadiogroupComponent.decorators = [
25
+ { type: Component, args: [{
26
+ selector: 'kms-enum-radiogroup',
27
+ template: "<form [formGroup]=\"form\">\n <div>{{ header }}</div>\n <mat-radio-group [formControl]=\"form.controls['enumData']\" [disabled]=\"disabled\" #child>\n <mat-radio-button [value]=\"choice\" [checked]=\"value === choice\" *ngFor=\"let choice of optionValues\">{{ translationPrefix + '.' + choice | translate }}</mat-radio-button>\n </mat-radio-group>\n</form>",
28
+ providers: [
29
+ {
30
+ provide: NG_VALUE_ACCESSOR,
31
+ useExisting: forwardRef(() => EnumRadiogroupComponent),
32
+ multi: true,
33
+ },
34
+ ]
35
+ },] }
36
+ ];
37
+ EnumRadiogroupComponent.ctorParameters = () => [
38
+ { type: FormBuilder },
39
+ { type: Renderer2 }
40
+ ];
41
+ EnumRadiogroupComponent.propDecorators = {
42
+ header: [{ type: Input }],
43
+ optionsEnum: [{ type: Input }],
44
+ translationPrefix: [{ type: Input }]
45
+ };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9lbnVtLXJhZGlvZ3JvdXAvZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFhOUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDBCQUEwQjtJQU9uRSxZQUFtQixXQUF3QixFQUFTLFFBQW1CO1FBQ25FLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFKOUQsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO0lBTWhDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixRQUFRLEVBQUUsRUFBRTtTQUNmLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7WUFuQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLGdZQUErQztnQkFDL0MsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3RELEtBQUssRUFBRSxJQUFJO3FCQUNkO2lCQUNKO2FBQ0o7OztZQWY4QixXQUFXO1lBREssU0FBUzs7O3FCQWtCbkQsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bGxBYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1lbnVtLXJhZGlvZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbnVtLXJhZGlvZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVudW1SYWRpb2dyb3VwQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVudW1SYWRpb2dyb3VwQ29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBASW5wdXQoKSBoZWFkZXI6IE51bGxBYmxlPFN0cmluZz47XG4gICAgQElucHV0KCkgb3B0aW9uc0VudW06IGFueTtcbiAgICBASW5wdXQoKSB0cmFuc2xhdGlvblByZWZpeCA9ICcnO1xuXG4gICAgcHVibGljIG9wdGlvblZhbHVlczogYW55O1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKGZvcm1CdWlsZGVyLCByZW5kZXJlcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKXtcbiAgICAgICAgdGhpcy5vcHRpb25WYWx1ZXMgPSBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnNFbnVtKS5maWx0ZXIoeCA9PiAhKHBhcnNlSW50KHgpID49IDApKTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBlbnVtRGF0YTogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm1Jbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZS5lbnVtRGF0YTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUuZW51bURhdGEpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cbn1cbiJdfQ==