@kirbydesign/designsystem 6.1.2-rc.ionic → 6.2.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 (47) hide show
  1. package/README.md +7 -0
  2. package/esm2020/lib/components/button/button.component.mjs +2 -2
  3. package/esm2020/lib/components/card/card-footer/card-footer.component.mjs +2 -2
  4. package/esm2020/lib/components/dropdown/dropdown.component.mjs +10 -2
  5. package/esm2020/lib/components/fab-sheet/fab-sheet.component.mjs +13 -8
  6. package/esm2020/lib/components/form-field/input/input.component.mjs +2 -2
  7. package/esm2020/lib/components/form-field/textarea/textarea.component.mjs +2 -2
  8. package/esm2020/lib/components/icon/icon.component.mjs +1 -1
  9. package/esm2020/lib/components/icon/kirby-icon-settings.mjs +6 -1
  10. package/esm2020/lib/components/item/item.component.mjs +1 -1
  11. package/esm2020/lib/components/list/list-item/list-item.component.mjs +2 -2
  12. package/esm2020/lib/components/list/list.component.mjs +2 -2
  13. package/esm2020/lib/components/modal/footer/modal-footer.component.mjs +2 -2
  14. package/esm2020/lib/components/modal/modal-wrapper/modal-wrapper.component.mjs +6 -10
  15. package/esm2020/lib/components/modal/services/action-sheet.helper.mjs +1 -4
  16. package/esm2020/lib/components/modal/services/modal-animation-builder.service.mjs +50 -62
  17. package/esm2020/lib/components/modal/services/modal.helper.mjs +11 -12
  18. package/esm2020/lib/components/page/page.component.mjs +1 -1
  19. package/esm2020/lib/components/range/range.component.mjs +1 -1
  20. package/esm2020/lib/components/segmented-control/segmented-control.component.mjs +10 -5
  21. package/esm2020/lib/components/slide-button/slide-button.component.mjs +2 -2
  22. package/esm2020/lib/components/toggle/toggle.component.mjs +1 -1
  23. package/fesm2015/kirbydesign-designsystem.mjs +117 -115
  24. package/fesm2015/kirbydesign-designsystem.mjs.map +1 -1
  25. package/fesm2020/kirbydesign-designsystem.mjs +117 -115
  26. package/fesm2020/kirbydesign-designsystem.mjs.map +1 -1
  27. package/icons/svg/car.svg +5 -0
  28. package/icons/svg/coinstack.svg +5 -0
  29. package/icons/svg/contact.svg +5 -0
  30. package/icons/svg/recurring.svg +5 -0
  31. package/icons/svg/salary.svg +5 -0
  32. package/lib/components/dropdown/dropdown.component.d.ts +1 -0
  33. package/lib/components/fab-sheet/fab-sheet.component.d.ts +3 -2
  34. package/lib/components/modal/modal-wrapper/modal-wrapper.component.d.ts +0 -1
  35. package/lib/components/modal/services/modal-animation-builder.service.d.ts +3 -14
  36. package/lib/components/segmented-control/segmented-control.component.d.ts +5 -1
  37. package/package.json +8 -8
  38. package/scss/base/_link.scss +0 -1
  39. package/scss/interaction-state/_active.scss +0 -1
  40. package/scss/interaction-state/_focus.scss +0 -1
  41. package/scss/interaction-state/_hover.scss +0 -1
  42. package/scss/interaction-state/_index.scss +0 -1
  43. package/scss/interaction-state/_interaction-state.utilities.scss +0 -1
  44. package/scss/interaction-state/_layer.scss +0 -1
  45. package/scss/opt-out/_index.scss +0 -1
  46. package/scss/opt-out/_link.scss +0 -1
  47. package/src/lib/components/icon/README.md +0 -16
@@ -1,11 +1,13 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { createAnimation } from '@ionic/angular';
2
+ import { AnimationController } from '@ionic/angular';
3
3
  import { KirbyAnimation } from '../../../animation/kirby-animation';
4
4
  import { PlatformService } from '../../../helpers/platform.service';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "../../../helpers/platform.service";
6
+ import * as i1 from "@ionic/angular";
7
+ import * as i2 from "../../../helpers/platform.service";
7
8
  export class ModalAnimationBuilderService {
8
- constructor(platform) {
9
+ constructor(animationCtrl, platform) {
10
+ this.animationCtrl = animationCtrl;
9
11
  this.platform = platform;
10
12
  this.easingEnter = KirbyAnimation.Easing.modal.enter;
11
13
  this.easingLeave = KirbyAnimation.Easing.modal.exit;
@@ -13,51 +15,32 @@ export class ModalAnimationBuilderService {
13
15
  this.SwipeToCloseDefaults = {
14
16
  MIN_PRESENTING_SCALE: 0.93,
15
17
  };
16
- this.createEnterAnimation = () => {
17
- const backdropAnimation = createAnimation()
18
+ }
19
+ enterAnimation(currentBackdrop) {
20
+ return (baseEl, presentingEl) => {
21
+ const backdropAnimation = this.animationCtrl
22
+ .create()
23
+ .addElement(baseEl.querySelector('ion-backdrop'))
18
24
  .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
19
25
  .beforeStyles({
20
26
  'pointer-events': 'none',
21
27
  })
22
28
  .afterClearStyles(['pointer-events']);
23
- const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
24
- return { backdropAnimation, wrapperAnimation };
25
- };
26
- this.createLeaveAnimation = () => {
27
- const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);
28
- const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');
29
- return { backdropAnimation, wrapperAnimation };
30
- };
31
- /**
32
- * Gets the root context of a shadow dom element
33
- * On newer browsers this will be the shadowRoot,
34
- * but for older browser this may just be the
35
- * element itself.
36
- *
37
- * Useful for whenever you need to explicitly
38
- * do "myElement.shadowRoot!.querySelector(...)".
39
- */
40
- this.getElementRoot = (el, fallback = el) => {
41
- return el.shadowRoot || fallback;
42
- };
43
- }
44
- enterAnimation(currentBackdrop) {
45
- return (baseEl, opts) => {
46
- const { presentingEl } = opts;
47
- const root = this.getElementRoot(baseEl);
48
- const { wrapperAnimation, backdropAnimation } = this.createEnterAnimation();
49
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
50
- wrapperAnimation
51
- .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
52
- .beforeStyles({ opacity: 1 });
53
- const baseAnimation = createAnimation('entering-base')
29
+ const wrapperAnimation = this.animationCtrl
30
+ .create()
31
+ .addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow'))
32
+ .beforeStyles({ opacity: 1 })
33
+ .fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
34
+ const baseAnimation = this.animationCtrl
35
+ .create()
54
36
  .addElement(baseEl)
55
37
  .easing(this.easingEnter)
56
38
  .duration(this.duration)
57
39
  .addAnimation(wrapperAnimation);
58
40
  let currentBackdropAnimation;
59
41
  if (currentBackdrop) {
60
- currentBackdropAnimation = createAnimation()
42
+ currentBackdropAnimation = this.animationCtrl
43
+ .create()
61
44
  .addElement(currentBackdrop)
62
45
  .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
63
46
  }
@@ -65,8 +48,7 @@ export class ModalAnimationBuilderService {
65
48
  const isMobile = !this.platform.isPhabletOrBigger();
66
49
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&
67
50
  presentingEl.presentingElement !== undefined;
68
- const presentingElRoot = this.getElementRoot(presentingEl);
69
- const presentingAnimation = createAnimation().beforeStyles({
51
+ const presentingAnimation = this.animationCtrl.create().beforeStyles({
70
52
  transform: 'translateY(0)',
71
53
  'transform-origin': 'top center',
72
54
  overflow: 'hidden',
@@ -76,7 +58,7 @@ export class ModalAnimationBuilderService {
76
58
  /**
77
59
  * Fallback for browsers that does not support `max()` (ex: Firefox)
78
60
  * No need to worry about statusbar padding since engines like Gecko
79
- * are not used as the engine for standalone Cordova/Capacitor apps
61
+ * are not used as the engine for standlone Cordova/Capacitor apps
80
62
  */
81
63
  const transformOffset = !CSS.supports('width', 'max(0px, 1px)')
82
64
  ? '30px'
@@ -123,16 +105,17 @@ export class ModalAnimationBuilderService {
123
105
  .afterStyles({
124
106
  transform: finalTransform,
125
107
  })
126
- .addElement(presentingElRoot.querySelector('.modal-wrapper'))
108
+ .addElement(presentingEl.querySelector('.modal-wrapper'))
127
109
  .keyframes([
128
110
  { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
129
111
  { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },
130
112
  ]);
131
- const shadowAnimation = createAnimation()
113
+ const shadowAnimation = this.animationCtrl
114
+ .create()
132
115
  .afterStyles({
133
116
  transform: finalTransform,
134
117
  })
135
- .addElement(presentingElRoot.querySelector('.modal-shadow'))
118
+ .addElement(presentingEl.querySelector('.modal-shadow'))
136
119
  .keyframes([
137
120
  { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },
138
121
  { offset: 1, opacity: '0', transform: finalTransform },
@@ -151,22 +134,26 @@ export class ModalAnimationBuilderService {
151
134
  };
152
135
  }
153
136
  leaveAnimation(currentBackdrop) {
154
- return (baseEl, opts, duration = this.duration) => {
155
- const { presentingEl } = opts;
156
- const root = this.getElementRoot(baseEl);
157
- const { wrapperAnimation, backdropAnimation } = this.createLeaveAnimation();
158
- backdropAnimation.addElement(root.querySelector('ion-backdrop'));
159
- wrapperAnimation
160
- .addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
161
- .beforeStyles({ opacity: 1 });
162
- const baseAnimation = createAnimation('leaving-base')
137
+ return (baseEl, presentingEl) => {
138
+ const backdropAnimation = this.animationCtrl
139
+ .create()
140
+ .addElement(baseEl.querySelector('ion-backdrop'))
141
+ .fromTo('opacity', 'var(--backdrop-opacity)', 0.0);
142
+ const wrapperAnimation = this.animationCtrl
143
+ .create()
144
+ .addElement(baseEl.querySelectorAll('.modal-wrapper, .modal-shadow'))
145
+ .beforeStyles({ opacity: 1 })
146
+ .fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');
147
+ const baseAnimation = this.animationCtrl
148
+ .create()
163
149
  .addElement(baseEl)
164
150
  .easing(this.easingLeave)
165
- .duration(duration)
151
+ .duration(this.duration)
166
152
  .addAnimation(wrapperAnimation);
167
153
  let currentBackdropAnimation;
168
154
  if (currentBackdrop) {
169
- currentBackdropAnimation = createAnimation()
155
+ currentBackdropAnimation = this.animationCtrl
156
+ .create()
170
157
  .addElement(currentBackdrop)
171
158
  .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
172
159
  .afterStyles({ opacity: 'var(--backdrop-opacity)' }); //Ensures backdrop is reset to default opacity after swipe to close
@@ -175,8 +162,8 @@ export class ModalAnimationBuilderService {
175
162
  const isMobile = !this.platform.isPhabletOrBigger();
176
163
  const hasCardModal = presentingEl.tagName === 'ION-MODAL' &&
177
164
  presentingEl.presentingElement !== undefined;
178
- const presentingElRoot = this.getElementRoot(presentingEl);
179
- const presentingAnimation = createAnimation()
165
+ const presentingAnimation = this.animationCtrl
166
+ .create()
180
167
  .beforeClearStyles(['transform'])
181
168
  .afterClearStyles(['transform'])
182
169
  .onFinish((currentStep) => {
@@ -228,7 +215,7 @@ export class ModalAnimationBuilderService {
228
215
  : 1;
229
216
  const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;
230
217
  presentingAnimation
231
- .addElement(presentingElRoot.querySelector('.modal-wrapper'))
218
+ .addElement(presentingEl.querySelector('.modal-wrapper'))
232
219
  .afterStyles({
233
220
  transform: 'translate3d(0, 0, 0)',
234
221
  })
@@ -236,8 +223,9 @@ export class ModalAnimationBuilderService {
236
223
  { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },
237
224
  { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },
238
225
  ]);
239
- const shadowAnimation = createAnimation()
240
- .addElement(presentingElRoot.querySelector('.modal-shadow'))
226
+ const shadowAnimation = this.animationCtrl
227
+ .create()
228
+ .addElement(presentingEl.querySelector('.modal-shadow'))
241
229
  .afterStyles({
242
230
  transform: 'translateY(0) scale(1)',
243
231
  })
@@ -259,10 +247,10 @@ export class ModalAnimationBuilderService {
259
247
  };
260
248
  }
261
249
  }
262
- /** @nocollapse */ ModalAnimationBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ModalAnimationBuilderService, deps: [{ token: i1.PlatformService }], target: i0.ɵɵFactoryTarget.Injectable });
250
+ /** @nocollapse */ ModalAnimationBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ModalAnimationBuilderService, deps: [{ token: i1.AnimationController }, { token: i2.PlatformService }], target: i0.ɵɵFactoryTarget.Injectable });
263
251
  /** @nocollapse */ ModalAnimationBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ModalAnimationBuilderService, providedIn: 'root' });
264
252
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ModalAnimationBuilderService, decorators: [{
265
253
  type: Injectable,
266
254
  args: [{ providedIn: 'root' }]
267
- }], ctorParameters: function () { return [{ type: i1.PlatformService }]; } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYW5pbWF0aW9uLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1hbmltYXRpb24tYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFHcEUsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFvQixRQUF5QjtRQUF6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUU1QixnQkFBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNoRCxnQkFBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUMvQyxhQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDeEMseUJBQW9CLEdBQUc7WUFDdEMsb0JBQW9CLEVBQUUsSUFBSTtTQUMzQixDQUFDO1FBZ1FNLHlCQUFvQixHQUFHLEdBQUcsRUFBRTtZQUNsQyxNQUFNLGlCQUFpQixHQUFHLGVBQWUsRUFBRTtpQkFDeEMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUseUJBQXlCLENBQUM7aUJBQ2xELFlBQVksQ0FBQztnQkFDWixnQkFBZ0IsRUFBRSxNQUFNO2FBQ3pCLENBQUM7aUJBQ0QsZ0JBQWdCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFFeEMsTUFBTSxnQkFBZ0IsR0FB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O29CQUM1QixhQUFhLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7WUFFRCxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDLENBQUM7SUFDSixDQUFDOzs0SUF0UVUsNEJBQTRCO2dKQUE1Qiw0QkFBNEIsY0FEZixNQUFNOzJGQUNuQiw0QkFBNEI7a0JBRHhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uLCBBbmltYXRpb25CdWlsZGVyLCBjcmVhdGVBbmltYXRpb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBNb2RhbEFuaW1hdGlvbk9wdGlvbnMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vYW5pbWF0aW9uL2tpcmJ5LWFuaW1hdGlvbic7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL3BsYXRmb3JtLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsQW5pbWF0aW9uQnVpbGRlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UpIHt9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlYXNpbmdFbnRlciA9IEtpcmJ5QW5pbWF0aW9uLkVhc2luZy5tb2RhbC5lbnRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBlYXNpbmdMZWF2ZSA9IEtpcmJ5QW5pbWF0aW9uLkVhc2luZy5tb2RhbC5leGl0O1xuICBwcml2YXRlIHJlYWRvbmx5IGR1cmF0aW9uID0gS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORztcbiAgcHJpdmF0ZSByZWFkb25seSBTd2lwZVRvQ2xvc2VEZWZhdWx0cyA9IHtcbiAgICBNSU5fUFJFU0VOVElOR19TQ0FMRTogMC45MyxcbiAgfTtcblxuICBwdWJsaWMgZW50ZXJBbmltYXRpb24oY3VycmVudEJhY2tkcm9wPzogSFRNTElvbkJhY2tkcm9wRWxlbWVudCk6IEFuaW1hdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiAoYmFzZUVsOiBIVE1MRWxlbWVudCwgb3B0czogTW9kYWxBbmltYXRpb25PcHRpb25zKTogQW5pbWF0aW9uID0+IHtcbiAgICAgIGNvbnN0IHsgcHJlc2VudGluZ0VsIH0gPSBvcHRzO1xuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuZ2V0RWxlbWVudFJvb3QoYmFzZUVsKTtcbiAgICAgIGNvbnN0IHsgd3JhcHBlckFuaW1hdGlvbiwgYmFja2Ryb3BBbmltYXRpb24gfSA9IHRoaXMuY3JlYXRlRW50ZXJBbmltYXRpb24oKTtcblxuICAgICAgYmFja2Ryb3BBbmltYXRpb24uYWRkRWxlbWVudChyb290LnF1ZXJ5U2VsZWN0b3IoJ2lvbi1iYWNrZHJvcCcpISk7XG5cbiAgICAgIHdyYXBwZXJBbmltYXRpb25cbiAgICAgICAgLmFkZEVsZW1lbnQocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcubW9kYWwtd3JhcHBlciwgLm1vZGFsLXNoYWRvdycpISlcbiAgICAgICAgLmJlZm9yZVN0eWxlcyh7IG9wYWNpdHk6IDEgfSk7XG5cbiAgICAgIGNvbnN0IGJhc2VBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oJ2VudGVyaW5nLWJhc2UnKVxuICAgICAgICAuYWRkRWxlbWVudChiYXNlRWwpXG4gICAgICAgIC5lYXNpbmcodGhpcy5lYXNpbmdFbnRlcilcbiAgICAgICAgLmR1cmF0aW9uKHRoaXMuZHVyYXRpb24pXG4gICAgICAgIC5hZGRBbmltYXRpb24od3JhcHBlckFuaW1hdGlvbik7XG5cbiAgICAgIGxldCBjdXJyZW50QmFja2Ryb3BBbmltYXRpb246IEFuaW1hdGlvbjtcbiAgICAgIGlmIChjdXJyZW50QmFja2Ryb3ApIHtcbiAgICAgICAgY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKClcbiAgICAgICAgICAuYWRkRWxlbWVudChjdXJyZW50QmFja2Ryb3ApXG4gICAgICAgICAgLmZyb21Ubygnb3BhY2l0eScsICd2YXIoLS1iYWNrZHJvcC1vcGFjaXR5KScsIDAuMDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlc2VudGluZ0VsKSB7XG4gICAgICAgIGNvbnN0IGlzTW9iaWxlID0gIXRoaXMucGxhdGZvcm0uaXNQaGFibGV0T3JCaWdnZXIoKTtcbiAgICAgICAgY29uc3QgaGFzQ2FyZE1vZGFsID1cbiAgICAgICAgICBwcmVzZW50aW5nRWwudGFnTmFtZSA9PT0gJ0lPTi1NT0RBTCcgJiZcbiAgICAgICAgICAocHJlc2VudGluZ0VsIGFzIEhUTUxJb25Nb2RhbEVsZW1lbnQpLnByZXNlbnRpbmdFbGVtZW50ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHByZXNlbnRpbmdFbFJvb3QgPSB0aGlzLmdldEVsZW1lbnRSb290KHByZXNlbnRpbmdFbCk7XG5cbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0FuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpLmJlZm9yZVN0eWxlcyh7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiAndG9wIGNlbnRlcicsXG4gICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvZXMgbm90IHN1cHBvcnQgYG1heCgpYCAoZXg6IEZpcmVmb3gpXG4gICAgICAgICAgICogTm8gbmVlZCB0byB3b3JyeSBhYm91dCBzdGF0dXNiYXIgcGFkZGluZyBzaW5jZSBlbmdpbmVzIGxpa2UgR2Vja29cbiAgICAgICAgICAgKiBhcmUgbm90IHVzZWQgYXMgdGhlIGVuZ2luZSBmb3Igc3RhbmRhbG9uZSBDb3Jkb3ZhL0NhcGFjaXRvciBhcHBzXG4gICAgICAgICAgICovXG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtT2Zmc2V0ID0gIUNTUy5zdXBwb3J0cygnd2lkdGgnLCAnbWF4KDBweCwgMXB4KScpXG4gICAgICAgICAgICA/ICczMHB4J1xuICAgICAgICAgICAgOiAnbWF4KDMwcHgsIHZhcigtLWlvbi1zYWZlLWFyZWEtdG9wKSknO1xuICAgICAgICAgIGNvbnN0IG1vZGFsVHJhbnNmb3JtID0gaGFzQ2FyZE1vZGFsID8gJy0xMHB4JyA6IHRyYW5zZm9ybU9mZnNldDtcbiAgICAgICAgICBjb25zdCB0b1ByZXNlbnRpbmdTY2FsZSA9IHRoaXMuU3dpcGVUb0Nsb3NlRGVmYXVsdHMuTUlOX1BSRVNFTlRJTkdfU0NBTEU7XG4gICAgICAgICAgY29uc3QgZmluYWxUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke21vZGFsVHJhbnNmb3JtfSkgc2NhbGUoJHt0b1ByZXNlbnRpbmdTY2FsZX0pYDtcblxuICAgICAgICAgIHByZXNlbnRpbmdBbmltYXRpb25cbiAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmJlZm9yZUFkZFdyaXRlKCgpID0+IGJvZHlFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicsICdibGFjaycpKVxuICAgICAgICAgICAgLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsKVxuICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiAnY29udHJhc3QoMSknLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMHB4KSBzY2FsZSgxKScsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICdjb250cmFzdCgwLjg1KScsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxMHB4IDEwcHggMCAwJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24ocHJlc2VudGluZ0FuaW1hdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oYmFja2Ryb3BBbmltYXRpb24pO1xuXG4gICAgICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbikge1xuICAgICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWhhc0NhcmRNb2RhbCkge1xuICAgICAgICAgICAgd3JhcHBlckFuaW1hdGlvbi5mcm9tVG8oJ29wYWNpdHknLCAnMCcsICcxJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gaGFzQ2FyZE1vZGFsXG4gICAgICAgICAgICAgID8gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRVxuICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKC0xMHB4KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgICBwcmVzZW50aW5nQW5pbWF0aW9uXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsUm9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtd3JhcHBlcicpISlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIGZpbHRlcjogJ2NvbnRyYXN0KDEpJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScgfSxcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMSwgZmlsdGVyOiAnY29udHJhc3QoMC44NSknLCB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBjb25zdCBzaGFkb3dBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKVxuICAgICAgICAgICAgICAuYWZ0ZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbFJvb3QucXVlcnlTZWxlY3RvcignLm1vZGFsLXNoYWRvdycpISlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIG9wYWNpdHk6ICcxJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScgfSxcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMSwgb3BhY2l0eTogJzAnLCB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihbcHJlc2VudGluZ0FuaW1hdGlvbiwgc2hhZG93QW5pbWF0aW9uXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihiYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgIGlmIChjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pIHtcbiAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYXNlQW5pbWF0aW9uO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbGVhdmVBbmltYXRpb24oY3VycmVudEJhY2tkcm9wPzogSFRNTElvbkJhY2tkcm9wRWxlbWVudCk6IEFuaW1hdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiAoXG4gICAgICBiYXNlRWw6IEhUTUxFbGVtZW50LFxuICAgICAgb3B0czogTW9kYWxBbmltYXRpb25PcHRpb25zLFxuICAgICAgZHVyYXRpb24gPSB0aGlzLmR1cmF0aW9uXG4gICAgKTogQW5pbWF0aW9uID0+IHtcbiAgICAgIGNvbnN0IHsgcHJlc2VudGluZ0VsIH0gPSBvcHRzO1xuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuZ2V0RWxlbWVudFJvb3QoYmFzZUVsKTtcbiAgICAgIGNvbnN0IHsgd3JhcHBlckFuaW1hdGlvbiwgYmFja2Ryb3BBbmltYXRpb24gfSA9IHRoaXMuY3JlYXRlTGVhdmVBbmltYXRpb24oKTtcblxuICAgICAgYmFja2Ryb3BBbmltYXRpb24uYWRkRWxlbWVudChyb290LnF1ZXJ5U2VsZWN0b3IoJ2lvbi1iYWNrZHJvcCcpISk7XG5cbiAgICAgIHdyYXBwZXJBbmltYXRpb25cbiAgICAgICAgLmFkZEVsZW1lbnQocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcubW9kYWwtd3JhcHBlciwgLm1vZGFsLXNoYWRvdycpISlcbiAgICAgICAgLmJlZm9yZVN0eWxlcyh7IG9wYWNpdHk6IDEgfSk7XG5cbiAgICAgIGNvbnN0IGJhc2VBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oJ2xlYXZpbmctYmFzZScpXG4gICAgICAgIC5hZGRFbGVtZW50KGJhc2VFbClcbiAgICAgICAgLmVhc2luZyh0aGlzLmVhc2luZ0xlYXZlKVxuICAgICAgICAuZHVyYXRpb24oZHVyYXRpb24pXG4gICAgICAgIC5hZGRBbmltYXRpb24od3JhcHBlckFuaW1hdGlvbik7XG5cbiAgICAgIGxldCBjdXJyZW50QmFja2Ryb3BBbmltYXRpb246IEFuaW1hdGlvbjtcbiAgICAgIGlmIChjdXJyZW50QmFja2Ryb3ApIHtcbiAgICAgICAgY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKClcbiAgICAgICAgICAuYWRkRWxlbWVudChjdXJyZW50QmFja2Ryb3ApXG4gICAgICAgICAgLmZyb21Ubygnb3BhY2l0eScsIDAuMDEsICd2YXIoLS1iYWNrZHJvcC1vcGFjaXR5KScpXG4gICAgICAgICAgLmFmdGVyU3R5bGVzKHsgb3BhY2l0eTogJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJyB9KTsgLy9FbnN1cmVzIGJhY2tkcm9wIGlzIHJlc2V0IHRvIGRlZmF1bHQgb3BhY2l0eSBhZnRlciBzd2lwZSB0byBjbG9zZVxuICAgICAgfVxuXG4gICAgICBpZiAocHJlc2VudGluZ0VsKSB7XG4gICAgICAgIGNvbnN0IGlzTW9iaWxlID0gIXRoaXMucGxhdGZvcm0uaXNQaGFibGV0T3JCaWdnZXIoKTtcbiAgICAgICAgY29uc3QgaGFzQ2FyZE1vZGFsID1cbiAgICAgICAgICBwcmVzZW50aW5nRWwudGFnTmFtZSA9PT0gJ0lPTi1NT0RBTCcgJiZcbiAgICAgICAgICAocHJlc2VudGluZ0VsIGFzIEhUTUxJb25Nb2RhbEVsZW1lbnQpLnByZXNlbnRpbmdFbGVtZW50ICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHByZXNlbnRpbmdFbFJvb3QgPSB0aGlzLmdldEVsZW1lbnRSb290KHByZXNlbnRpbmdFbCk7XG5cbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0FuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpXG4gICAgICAgICAgLmJlZm9yZUNsZWFyU3R5bGVzKFsndHJhbnNmb3JtJ10pXG4gICAgICAgICAgLmFmdGVyQ2xlYXJTdHlsZXMoWyd0cmFuc2Zvcm0nXSlcbiAgICAgICAgICAub25GaW5pc2goKGN1cnJlbnRTdGVwKSA9PiB7XG4gICAgICAgICAgICAvLyBvbmx5IHJlc2V0IGJhY2tncm91bmQgY29sb3IgaWYgdGhpcyBpcyB0aGUgbGFzdCBjYXJkLXN0eWxlIG1vZGFsXG4gICAgICAgICAgICBpZiAoY3VycmVudFN0ZXAgIT09IDEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcmVzZW50aW5nRWwuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgJycpO1xuXG4gICAgICAgICAgICBjb25zdCBudW1Nb2RhbHMgPSBBcnJheS5mcm9tKGJvZHlFbC5xdWVyeVNlbGVjdG9yQWxsKCdpb24tbW9kYWwnKSkuZmlsdGVyKFxuICAgICAgICAgICAgICAobSkgPT4gbS5wcmVzZW50aW5nRWxlbWVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICApLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChudW1Nb2RhbHMgPD0gMSkge1xuICAgICAgICAgICAgICBib2R5RWwuc3R5bGUuc2V0UHJvcGVydHkoJ2JhY2tncm91bmQtY29sb3InLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYm9keUVsID0gZG9jdW1lbnQuYm9keTtcblxuICAgICAgICBpZiAoaXNNb2JpbGUpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1PZmZzZXQgPSAhQ1NTLnN1cHBvcnRzKCd3aWR0aCcsICdtYXgoMHB4LCAxcHgpJylcbiAgICAgICAgICAgID8gJzMwcHgnXG4gICAgICAgICAgICA6ICdtYXgoMzBweCwgdmFyKC0taW9uLXNhZmUtYXJlYS10b3ApKSc7XG4gICAgICAgICAgY29uc3QgbW9kYWxUcmFuc2Zvcm0gPSBoYXNDYXJkTW9kYWwgPyAnLTEwcHgnIDogdHJhbnNmb3JtT2Zmc2V0O1xuICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRTtcbiAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7bW9kYWxUcmFuc2Zvcm19KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgcHJlc2VudGluZ0FuaW1hdGlvbi5hZGRFbGVtZW50KHByZXNlbnRpbmdFbCkua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICBmaWx0ZXI6ICdjb250cmFzdCgwLjg1KScsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEwcHggMTBweCAwIDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICBmaWx0ZXI6ICdjb250cmFzdCgxKScsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMHB4KSBzY2FsZSgxKScsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzBweCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24ocHJlc2VudGluZ0FuaW1hdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oYmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICAgIGlmIChjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pIHtcbiAgICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFoYXNDYXJkTW9kYWwpIHtcbiAgICAgICAgICAgIHdyYXBwZXJBbmltYXRpb24uZnJvbVRvKCdvcGFjaXR5JywgJzEnLCAnMCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b1ByZXNlbnRpbmdTY2FsZSA9IGhhc0NhcmRNb2RhbFxuICAgICAgICAgICAgICA/IHRoaXMuU3dpcGVUb0Nsb3NlRGVmYXVsdHMuTUlOX1BSRVNFTlRJTkdfU0NBTEVcbiAgICAgICAgICAgICAgOiAxO1xuICAgICAgICAgICAgY29uc3QgZmluYWxUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgtMTBweCkgc2NhbGUoJHt0b1ByZXNlbnRpbmdTY2FsZX0pYDtcblxuICAgICAgICAgICAgcHJlc2VudGluZ0FuaW1hdGlvblxuICAgICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWxSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC13cmFwcGVyJykhKVxuICAgICAgICAgICAgICAuYWZ0ZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJywgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBmaWx0ZXI6ICdjb250cmFzdCgxKScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCkgc2NhbGUoMSknIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBjb25zdCBzaGFkb3dBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKVxuICAgICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWxSb290LnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1zaGFkb3cnKSEpXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5rZXlmcmFtZXMoW1xuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAwLCBvcGFjaXR5OiAnMCcsIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0gfSxcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMSwgb3BhY2l0eTogJzEnLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApIHNjYWxlKDEpJyB9LFxuICAgICAgICAgICAgICBdKTtcblxuICAgICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oW3ByZXNlbnRpbmdBbmltYXRpb24sIHNoYWRvd0FuaW1hdGlvbl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oYmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICBpZiAoY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKSB7XG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYmFzZUFuaW1hdGlvbjtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFbnRlckFuaW1hdGlvbiA9ICgpID0+IHtcbiAgICBjb25zdCBiYWNrZHJvcEFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpXG4gICAgICAuZnJvbVRvKCdvcGFjaXR5JywgMC4wMSwgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJylcbiAgICAgIC5iZWZvcmVTdHlsZXMoe1xuICAgICAgICAncG9pbnRlci1ldmVudHMnOiAnbm9uZScsXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xlYXJTdHlsZXMoWydwb2ludGVyLWV2ZW50cyddKTtcblxuICAgIGNvbnN0IHdyYXBwZXJBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKS5mcm9tVG8oXG4gICAgICAndHJhbnNmb3JtJyxcbiAgICAgICd0cmFuc2xhdGVZKDEwMHZoKScsXG4gICAgICAndHJhbnNsYXRlWSgwdmgpJ1xuICAgICk7XG5cbiAgICByZXR1cm4geyBiYWNrZHJvcEFuaW1hdGlvbiwgd3JhcHBlckFuaW1hdGlvbiB9O1xuICB9O1xuXG4gIHByaXZhdGUgY3JlYXRlTGVhdmVBbmltYXRpb24gPSAoKSA9PiB7XG4gICAgY29uc3QgYmFja2Ryb3BBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKS5mcm9tVG8oJ29wYWNpdHknLCAndmFyKC0tYmFja2Ryb3Atb3BhY2l0eSknLCAwKTtcblxuICAgIGNvbnN0IHdyYXBwZXJBbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKS5mcm9tVG8oXG4gICAgICAndHJhbnNmb3JtJyxcbiAgICAgICd0cmFuc2xhdGVZKDB2aCknLFxuICAgICAgJ3RyYW5zbGF0ZVkoMTAwdmgpJ1xuICAgICk7XG5cbiAgICByZXR1cm4geyBiYWNrZHJvcEFuaW1hdGlvbiwgd3JhcHBlckFuaW1hdGlvbiB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb290IGNvbnRleHQgb2YgYSBzaGFkb3cgZG9tIGVsZW1lbnRcbiAgICogT24gbmV3ZXIgYnJvd3NlcnMgdGhpcyB3aWxsIGJlIHRoZSBzaGFkb3dSb290LFxuICAgKiBidXQgZm9yIG9sZGVyIGJyb3dzZXIgdGhpcyBtYXkganVzdCBiZSB0aGVcbiAgICogZWxlbWVudCBpdHNlbGYuXG4gICAqXG4gICAqIFVzZWZ1bCBmb3Igd2hlbmV2ZXIgeW91IG5lZWQgdG8gZXhwbGljaXRseVxuICAgKiBkbyBcIm15RWxlbWVudC5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKC4uLilcIi5cbiAgICovXG4gIHByaXZhdGUgZ2V0RWxlbWVudFJvb3QgPSAoZWw6IEhUTUxFbGVtZW50LCBmYWxsYmFjazogSFRNTEVsZW1lbnQgPSBlbCkgPT4ge1xuICAgIHJldHVybiBlbC5zaGFkb3dSb290IHx8IGZhbGxiYWNrO1xuICB9O1xufVxuIl19
255
+ }], ctorParameters: function () { return [{ type: i1.AnimationController }, { type: i2.PlatformService }]; } });
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtYW5pbWF0aW9uLWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1hbmltYXRpb24tYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUErQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFHcEUsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUFvQixhQUFrQyxFQUFVLFFBQXlCO1FBQXJFLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBRXhFLGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQy9DLGFBQVEsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRztZQUN0QyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFQMEYsQ0FBQztJQVN0RixjQUFjLENBQUMsZUFBd0M7UUFDNUQsT0FBTyxDQUFDLE1BQW1CLEVBQUUsWUFBMEIsRUFBYSxFQUFFO1lBQ3BFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWE7aUJBQ3pDLE1BQU0sRUFBRTtpQkFDUixVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUUsQ0FBQztpQkFD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QUFDOzRCQUNULEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7NEJBQ3RELEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSx3QkFBd0IsRUFBRTt5QkFDakUsQ0FBQyxDQUFDO3dCQUVMLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO3FCQUNwRTtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDOUMsSUFBSSx3QkFBd0IsRUFBRTtvQkFDNUIsYUFBYSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2lCQUN0RDthQUNGO1lBRUQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7NElBM1FVLDRCQUE0QjtnSkFBNUIsNEJBQTRCLGNBRGYsTUFBTTsyRkFDbkIsNEJBQTRCO2tCQUR4QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGlvbiwgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi9hbmltYXRpb24va2lyYnktYW5pbWF0aW9uJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvcGxhdGZvcm0uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxBbmltYXRpb25CdWlsZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5pbWF0aW9uQ3RybDogQW5pbWF0aW9uQ29udHJvbGxlciwgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlKSB7fVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWFzaW5nRW50ZXIgPSBLaXJieUFuaW1hdGlvbi5FYXNpbmcubW9kYWwuZW50ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWFzaW5nTGVhdmUgPSBLaXJieUFuaW1hdGlvbi5FYXNpbmcubW9kYWwuZXhpdDtcbiAgcHJpdmF0ZSByZWFkb25seSBkdXJhdGlvbiA9IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uLkxPTkc7XG4gIHByaXZhdGUgcmVhZG9ubHkgU3dpcGVUb0Nsb3NlRGVmYXVsdHMgPSB7XG4gICAgTUlOX1BSRVNFTlRJTkdfU0NBTEU6IDAuOTMsXG4gIH07XG5cbiAgcHVibGljIGVudGVyQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcD86IEhUTUxJb25CYWNrZHJvcEVsZW1lbnQpOiBBbmltYXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gKGJhc2VFbDogSFRNTEVsZW1lbnQsIHByZXNlbnRpbmdFbD86IEhUTUxFbGVtZW50KTogQW5pbWF0aW9uID0+IHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wQW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb25DdHJsXG4gICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAuYWRkRWxlbWVudChiYXNlRWwucXVlcnlTZWxlY3RvcignaW9uLWJhY2tkcm9wJykhKVxuICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgMC4wMSwgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJylcbiAgICAgICAgLmJlZm9yZVN0eWxlcyh7XG4gICAgICAgICAgJ3BvaW50ZXItZXZlbnRzJzogJ25vbmUnLFxuICAgICAgICB9KVxuICAgICAgICAuYWZ0ZXJDbGVhclN0eWxlcyhbJ3BvaW50ZXItZXZlbnRzJ10pO1xuXG4gICAgICBjb25zdCB3cmFwcGVyQW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb25DdHJsXG4gICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAuYWRkRWxlbWVudChiYXNlRWwucXVlcnlTZWxlY3RvckFsbCgnLm1vZGFsLXdyYXBwZXIsIC5tb2RhbC1zaGFkb3cnKSEpXG4gICAgICAgIC5iZWZvcmVTdHlsZXMoeyBvcGFjaXR5OiAxIH0pXG4gICAgICAgIC5mcm9tVG8oJ3RyYW5zZm9ybScsICd0cmFuc2xhdGVZKDEwMHZoKScsICd0cmFuc2xhdGVZKDB2aCknKTtcblxuICAgICAgY29uc3QgYmFzZUFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uQ3RybFxuICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgLmFkZEVsZW1lbnQoYmFzZUVsKVxuICAgICAgICAuZWFzaW5nKHRoaXMuZWFzaW5nRW50ZXIpXG4gICAgICAgIC5kdXJhdGlvbih0aGlzLmR1cmF0aW9uKVxuICAgICAgICAuYWRkQW5pbWF0aW9uKHdyYXBwZXJBbmltYXRpb24pO1xuXG4gICAgICBsZXQgY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uOiBBbmltYXRpb247XG4gICAgICBpZiAoY3VycmVudEJhY2tkcm9wKSB7XG4gICAgICAgIGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uQ3RybFxuICAgICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAgIC5hZGRFbGVtZW50KGN1cnJlbnRCYWNrZHJvcClcbiAgICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJywgMC4wMSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVzZW50aW5nRWwpIHtcbiAgICAgICAgY29uc3QgaXNNb2JpbGUgPSAhdGhpcy5wbGF0Zm9ybS5pc1BoYWJsZXRPckJpZ2dlcigpO1xuICAgICAgICBjb25zdCBoYXNDYXJkTW9kYWwgPVxuICAgICAgICAgIHByZXNlbnRpbmdFbC50YWdOYW1lID09PSAnSU9OLU1PREFMJyAmJlxuICAgICAgICAgIChwcmVzZW50aW5nRWwgYXMgSFRNTElvbk1vZGFsRWxlbWVudCkucHJlc2VudGluZ0VsZW1lbnQgIT09IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBwcmVzZW50aW5nQW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb25DdHJsLmNyZWF0ZSgpLmJlZm9yZVN0eWxlcyh7XG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gICAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nOiAndG9wIGNlbnRlcicsXG4gICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvZXMgbm90IHN1cHBvcnQgYG1heCgpYCAoZXg6IEZpcmVmb3gpXG4gICAgICAgICAgICogTm8gbmVlZCB0byB3b3JyeSBhYm91dCBzdGF0dXNiYXIgcGFkZGluZyBzaW5jZSBlbmdpbmVzIGxpa2UgR2Vja29cbiAgICAgICAgICAgKiBhcmUgbm90IHVzZWQgYXMgdGhlIGVuZ2luZSBmb3Igc3RhbmRsb25lIENvcmRvdmEvQ2FwYWNpdG9yIGFwcHNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1PZmZzZXQgPSAhQ1NTLnN1cHBvcnRzKCd3aWR0aCcsICdtYXgoMHB4LCAxcHgpJylcbiAgICAgICAgICAgID8gJzMwcHgnXG4gICAgICAgICAgICA6ICdtYXgoMzBweCwgdmFyKC0taW9uLXNhZmUtYXJlYS10b3ApKSc7XG4gICAgICAgICAgY29uc3QgbW9kYWxUcmFuc2Zvcm0gPSBoYXNDYXJkTW9kYWwgPyAnLTEwcHgnIDogdHJhbnNmb3JtT2Zmc2V0O1xuICAgICAgICAgIGNvbnN0IHRvUHJlc2VudGluZ1NjYWxlID0gdGhpcy5Td2lwZVRvQ2xvc2VEZWZhdWx0cy5NSU5fUFJFU0VOVElOR19TQ0FMRTtcbiAgICAgICAgICBjb25zdCBmaW5hbFRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7bW9kYWxUcmFuc2Zvcm19KSBzY2FsZSgke3RvUHJlc2VudGluZ1NjYWxlfSlgO1xuXG4gICAgICAgICAgcHJlc2VudGluZ0FuaW1hdGlvblxuICAgICAgICAgICAgLmFmdGVyU3R5bGVzKHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYmVmb3JlQWRkV3JpdGUoKCkgPT4gYm9keUVsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLWNvbG9yJywgJ2JsYWNrJykpXG4gICAgICAgICAgICAuYWRkRWxlbWVudChwcmVzZW50aW5nRWwpXG4gICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICdjb250cmFzdCgxKScsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwcHgpIHNjYWxlKDEpJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcwcHgnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJyxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEwcHggMTBweCAwIDAnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24ocHJlc2VudGluZ0FuaW1hdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oYmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICAgIGlmIChjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pIHtcbiAgICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFoYXNDYXJkTW9kYWwpIHtcbiAgICAgICAgICAgIHdyYXBwZXJBbmltYXRpb24uZnJvbVRvKCdvcGFjaXR5JywgJzAnLCAnMScpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b1ByZXNlbnRpbmdTY2FsZSA9IGhhc0NhcmRNb2RhbFxuICAgICAgICAgICAgICA/IHRoaXMuU3dpcGVUb0Nsb3NlRGVmYXVsdHMuTUlOX1BSRVNFTlRJTkdfU0NBTEVcbiAgICAgICAgICAgICAgOiAxO1xuICAgICAgICAgICAgY29uc3QgZmluYWxUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgtMTBweCkgc2NhbGUoJHt0b1ByZXNlbnRpbmdTY2FsZX0pYDtcblxuICAgICAgICAgICAgcHJlc2VudGluZ0FuaW1hdGlvblxuICAgICAgICAgICAgICAuYWZ0ZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogZmluYWxUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtd3JhcHBlcicpISlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIGZpbHRlcjogJ2NvbnRyYXN0KDEpJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScgfSxcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMSwgZmlsdGVyOiAnY29udHJhc3QoMC44NSknLCB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBjb25zdCBzaGFkb3dBbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvbkN0cmxcbiAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgIC5hZnRlclN0eWxlcyh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsLnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1zaGFkb3cnKSEpXG4gICAgICAgICAgICAgIC5rZXlmcmFtZXMoW1xuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAwLCBvcGFjaXR5OiAnMScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCkgc2NhbGUoMSknIH0sXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDEsIG9wYWNpdHk6ICcwJywgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSB9LFxuICAgICAgICAgICAgICBdKTtcblxuICAgICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oW3ByZXNlbnRpbmdBbmltYXRpb24sIHNoYWRvd0FuaW1hdGlvbl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oYmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICBpZiAoY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKSB7XG4gICAgICAgICAgYmFzZUFuaW1hdGlvbi5hZGRBbmltYXRpb24oY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYmFzZUFuaW1hdGlvbjtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGxlYXZlQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcD86IEhUTUxJb25CYWNrZHJvcEVsZW1lbnQpOiBBbmltYXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gKGJhc2VFbDogSFRNTEVsZW1lbnQsIHByZXNlbnRpbmdFbD86IEhUTUxFbGVtZW50KTogQW5pbWF0aW9uID0+IHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wQW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb25DdHJsXG4gICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAuYWRkRWxlbWVudChiYXNlRWwucXVlcnlTZWxlY3RvcignaW9uLWJhY2tkcm9wJykhKVxuICAgICAgICAuZnJvbVRvKCdvcGFjaXR5JywgJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJywgMC4wKTtcblxuICAgICAgY29uc3Qgd3JhcHBlckFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uQ3RybFxuICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgLmFkZEVsZW1lbnQoYmFzZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2RhbC13cmFwcGVyLCAubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAuYmVmb3JlU3R5bGVzKHsgb3BhY2l0eTogMSB9KVxuICAgICAgICAuZnJvbVRvKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlWSgwdmgpJywgJ3RyYW5zbGF0ZVkoMTAwdmgpJyk7XG5cbiAgICAgIGNvbnN0IGJhc2VBbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvbkN0cmxcbiAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgIC5hZGRFbGVtZW50KGJhc2VFbClcbiAgICAgICAgLmVhc2luZyh0aGlzLmVhc2luZ0xlYXZlKVxuICAgICAgICAuZHVyYXRpb24odGhpcy5kdXJhdGlvbilcbiAgICAgICAgLmFkZEFuaW1hdGlvbih3cmFwcGVyQW5pbWF0aW9uKTtcblxuICAgICAgbGV0IGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbjogQW5pbWF0aW9uO1xuICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcCkge1xuICAgICAgICBjdXJyZW50QmFja2Ryb3BBbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvbkN0cmxcbiAgICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgICAuYWRkRWxlbWVudChjdXJyZW50QmFja2Ryb3ApXG4gICAgICAgICAgLmZyb21Ubygnb3BhY2l0eScsIDAuMDEsICd2YXIoLS1iYWNrZHJvcC1vcGFjaXR5KScpXG4gICAgICAgICAgLmFmdGVyU3R5bGVzKHsgb3BhY2l0eTogJ3ZhcigtLWJhY2tkcm9wLW9wYWNpdHkpJyB9KTsgLy9FbnN1cmVzIGJhY2tkcm9wIGlzIHJlc2V0IHRvIGRlZmF1bHQgb3BhY2l0eSBhZnRlciBzd2lwZSB0byBjbG9zZVxuICAgICAgfVxuXG4gICAgICBpZiAocHJlc2VudGluZ0VsKSB7XG4gICAgICAgIGNvbnN0IGlzTW9iaWxlID0gIXRoaXMucGxhdGZvcm0uaXNQaGFibGV0T3JCaWdnZXIoKTtcbiAgICAgICAgY29uc3QgaGFzQ2FyZE1vZGFsID1cbiAgICAgICAgICBwcmVzZW50aW5nRWwudGFnTmFtZSA9PT0gJ0lPTi1NT0RBTCcgJiZcbiAgICAgICAgICAocHJlc2VudGluZ0VsIGFzIEhUTUxJb25Nb2RhbEVsZW1lbnQpLnByZXNlbnRpbmdFbGVtZW50ICE9PSB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgcHJlc2VudGluZ0FuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uQ3RybFxuICAgICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAgIC5iZWZvcmVDbGVhclN0eWxlcyhbJ3RyYW5zZm9ybSddKVxuICAgICAgICAgIC5hZnRlckNsZWFyU3R5bGVzKFsndHJhbnNmb3JtJ10pXG4gICAgICAgICAgLm9uRmluaXNoKChjdXJyZW50U3RlcCkgPT4ge1xuICAgICAgICAgICAgLy8gb25seSByZXNldCBiYWNrZ3JvdW5kIGNvbG9yIGlmIHRoaXMgaXMgdGhlIGxhc3QgY2FyZC1zdHlsZSBtb2RhbFxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwICE9PSAxKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJlc2VudGluZ0VsLnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICcnKTtcblxuICAgICAgICAgICAgY29uc3QgbnVtTW9kYWxzID0gQXJyYXkuZnJvbShib2R5RWwucXVlcnlTZWxlY3RvckFsbCgnaW9uLW1vZGFsJykpLmZpbHRlcihcbiAgICAgICAgICAgICAgKG0pID0+IG0ucHJlc2VudGluZ0VsZW1lbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAobnVtTW9kYWxzIDw9IDEpIHtcbiAgICAgICAgICAgICAgYm9keUVsLnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kLWNvbG9yJywgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGJvZHlFbCA9IGRvY3VtZW50LmJvZHk7XG5cbiAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtT2Zmc2V0ID0gIUNTUy5zdXBwb3J0cygnd2lkdGgnLCAnbWF4KDBweCwgMXB4KScpXG4gICAgICAgICAgICA/ICczMHB4J1xuICAgICAgICAgICAgOiAnbWF4KDMwcHgsIHZhcigtLWlvbi1zYWZlLWFyZWEtdG9wKSknO1xuICAgICAgICAgIGNvbnN0IG1vZGFsVHJhbnNmb3JtID0gaGFzQ2FyZE1vZGFsID8gJy0xMHB4JyA6IHRyYW5zZm9ybU9mZnNldDtcbiAgICAgICAgICBjb25zdCB0b1ByZXNlbnRpbmdTY2FsZSA9IHRoaXMuU3dpcGVUb0Nsb3NlRGVmYXVsdHMuTUlOX1BSRVNFTlRJTkdfU0NBTEU7XG4gICAgICAgICAgY29uc3QgZmluYWxUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke21vZGFsVHJhbnNmb3JtfSkgc2NhbGUoJHt0b1ByZXNlbnRpbmdTY2FsZX0pYDtcblxuICAgICAgICAgIHByZXNlbnRpbmdBbmltYXRpb24uYWRkRWxlbWVudChwcmVzZW50aW5nRWwpLmtleWZyYW1lcyhbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgZmlsdGVyOiAnY29udHJhc3QoMC44NSknLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtLFxuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxMHB4IDEwcHggMCAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICAgICAgZmlsdGVyOiAnY29udHJhc3QoMSknLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDBweCkgc2NhbGUoMSknLFxuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcwcHgnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcblxuICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKHByZXNlbnRpbmdBbmltYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgICBpZiAoY3VycmVudEJhY2tkcm9wQW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBiYXNlQW5pbWF0aW9uLmFkZEFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3BBbmltYXRpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghaGFzQ2FyZE1vZGFsKSB7XG4gICAgICAgICAgICB3cmFwcGVyQW5pbWF0aW9uLmZyb21Ubygnb3BhY2l0eScsICcxJywgJzAnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG9QcmVzZW50aW5nU2NhbGUgPSBoYXNDYXJkTW9kYWxcbiAgICAgICAgICAgICAgPyB0aGlzLlN3aXBlVG9DbG9zZURlZmF1bHRzLk1JTl9QUkVTRU5USU5HX1NDQUxFXG4gICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsVHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoLTEwcHgpIHNjYWxlKCR7dG9QcmVzZW50aW5nU2NhbGV9KWA7XG5cbiAgICAgICAgICAgIHByZXNlbnRpbmdBbmltYXRpb25cbiAgICAgICAgICAgICAgLmFkZEVsZW1lbnQocHJlc2VudGluZ0VsLnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC13cmFwcGVyJykhKVxuICAgICAgICAgICAgICAuYWZ0ZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDAsIGZpbHRlcjogJ2NvbnRyYXN0KDAuODUpJywgdHJhbnNmb3JtOiBmaW5hbFRyYW5zZm9ybSB9LFxuICAgICAgICAgICAgICAgIHsgb2Zmc2V0OiAxLCBmaWx0ZXI6ICdjb250cmFzdCgxKScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCkgc2NhbGUoMSknIH0sXG4gICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICBjb25zdCBzaGFkb3dBbmltYXRpb24gPSB0aGlzLmFuaW1hdGlvbkN0cmxcbiAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgIC5hZGRFbGVtZW50KHByZXNlbnRpbmdFbC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtc2hhZG93JykhKVxuICAgICAgICAgICAgICAuYWZ0ZXJTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCkgc2NhbGUoMSknLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAua2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICB7IG9mZnNldDogMCwgb3BhY2l0eTogJzAnLCB0cmFuc2Zvcm06IGZpbmFsVHJhbnNmb3JtIH0sXG4gICAgICAgICAgICAgICAgeyBvZmZzZXQ6IDEsIG9wYWNpdHk6ICcxJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKSBzY2FsZSgxKScgfSxcbiAgICAgICAgICAgICAgXSk7XG5cbiAgICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKFtwcmVzZW50aW5nQW5pbWF0aW9uLCBzaGFkb3dBbmltYXRpb25dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGJhY2tkcm9wQW5pbWF0aW9uKTtcbiAgICAgICAgaWYgKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbikge1xuICAgICAgICAgIGJhc2VBbmltYXRpb24uYWRkQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcEFuaW1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJhc2VBbmltYXRpb247XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -17,6 +17,13 @@ export class ModalHelper {
17
17
  async showModalWindow(config) {
18
18
  config.flavor = config.flavor || 'modal';
19
19
  const modalPresentingElement = await this.getPresentingElement(config.flavor);
20
+ let currentBackdrop;
21
+ const topMostModal = await this.ionicModalController.getTop();
22
+ if (topMostModal) {
23
+ currentBackdrop = topMostModal.querySelector('ion-backdrop');
24
+ }
25
+ const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);
26
+ const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);
20
27
  const defaultModalSize = config.flavor === 'modal' ? 'medium' : null;
21
28
  const modalSize = config.size || defaultModalSize;
22
29
  const allow_scroll_class = 'allow-background-scroll';
@@ -27,14 +34,6 @@ export class ModalHelper {
27
34
  if (config.interactWithBackground) {
28
35
  this.windowRef.nativeWindow.document.body.classList.add(allow_scroll_class);
29
36
  }
30
- let currentBackdrop;
31
- const topMostModal = await this.ionicModalController.getTop();
32
- if (topMostModal) {
33
- currentBackdrop =
34
- topMostModal.shadowRoot.querySelector('ion-backdrop');
35
- }
36
- const enterAnimation = this.modalAnimationBuilder.enterAnimation(currentBackdrop);
37
- const leaveAnimation = this.modalAnimationBuilder.leaveAnimation(currentBackdrop);
38
37
  const ionModal = await this.ionicModalController.create({
39
38
  component: config.flavor === 'compact' ? ModalCompactWrapperComponent : ModalWrapperComponent,
40
39
  cssClass: [
@@ -42,7 +41,7 @@ export class ModalHelper {
42
41
  'kirby-modal',
43
42
  config.flavor === 'drawer' ? 'kirby-drawer' : null,
44
43
  config.flavor === 'compact' ? 'kirby-modal-compact' : null,
45
- modalSize ? 'kirby-modal-' + modalSize : null,
44
+ 'kirby-modal-' + modalSize,
46
45
  config.interactWithBackground ? 'interact-with-background' : null,
47
46
  ...customCssClasses,
48
47
  ],
@@ -52,8 +51,8 @@ export class ModalHelper {
52
51
  swipeToClose: config.flavor != 'compact',
53
52
  presentingElement: modalPresentingElement,
54
53
  keyboardClose: false,
55
- enterAnimation: enterAnimation,
56
- leaveAnimation: leaveAnimation,
54
+ enterAnimation,
55
+ leaveAnimation,
57
56
  });
58
57
  if (config.interactWithBackground) {
59
58
  ionModal.onDidDismiss().then(() => {
@@ -107,4 +106,4 @@ ModalHelper.presentingElement = undefined;
107
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ModalHelper, decorators: [{
108
107
  type: Injectable
109
108
  }], ctorParameters: function () { return [{ type: i1.ModalController }, { type: i2.ModalAnimationBuilderService }, { type: i3.WindowRef }]; } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL3NlcnZpY2VzL21vZGFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBSWpGLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQ1Usb0JBQXFDLEVBQ3JDLHFCQUFtRCxFQUNuRCxTQUFvQjtRQUZwQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWlCO1FBQ3JDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUMzQixDQUFDO0lBRUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFtQjtRQUM5QyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDO1FBQ3pDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlFLE1BQU0sZ0JBQWdCLEdBQWMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJ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O0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDekIsNkJBQXFDLEVBQ3JDLFFBQWtDO1FBRWxDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLFlBQVkscUJBQXFCLENBQUMsRUFBRTtZQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEQ7UUFDRCxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQWpIRCxzREFBc0Q7QUFDdEQsZ0RBQWdEO0FBQ2pDLDZCQUFpQixHQUFnQixTQUFVLENBQUE7MkhBSC9DLFdBQVc7K0hBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uL2FuaW1hdGlvbi9raXJieS1hbmltYXRpb24nO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvd2luZG93LXJlZic7XG5pbXBvcnQgeyBNb2RhbENvbXBhY3RXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtd3JhcHBlci9jb21wYWN0L21vZGFsLWNvbXBhY3Qtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxDb25maWcsIE1vZGFsRmxhdm9yLCBNb2RhbFNpemUgfSBmcm9tICcuLi9tb2RhbC13cmFwcGVyL2NvbmZpZy9tb2RhbC1jb25maWcnO1xuaW1wb3J0IHsgTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IE1vZGFsQW5pbWF0aW9uQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL21vZGFsLWFuaW1hdGlvbi1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4vbW9kYWwuaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2RhbEhlbHBlciB7XG4gIC8vIFRPRE86IE1ha2UgcHJlc2VudGluZ0VsZW1lbnQgYW4gaW5zdGFuY2UgZmllbGQgd2hlblxuICAvLyBmb3JSb290KCkvc2luZ2xldG9uIHNlcnZpY2VzIGhhcyBiZWVuIHNvbHZlZDpcbiAgcHJpdmF0ZSBzdGF0aWMgcHJlc2VudGluZ0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW9uaWNNb2RhbENvbnRyb2xsZXI6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcml2YXRlIG1vZGFsQW5pbWF0aW9uQnVpbGRlcjogTW9kYWxBbmltYXRpb25CdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgc2hvd01vZGFsV2luZG93KGNvbmZpZzogTW9kYWxDb25maWcpOiBQcm9taXNlPE92ZXJsYXk+IHtcbiAgICBjb25maWcuZmxhdm9yID0gY29uZmlnLmZsYXZvciB8fCAnbW9kYWwnO1xuICAgIGNvbnN0IG1vZGFsUHJlc2VudGluZ0VsZW1lbnQgPSBhd2FpdCB0aGlzLmdldFByZXNlbnRpbmdFbGVtZW50KGNvbmZpZy5mbGF2b3IpO1xuXG4gICAgY29uc3QgZGVmYXVsdE1vZGFsU2l6ZTogTW9kYWxTaXplID0gY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyA/ICdtZWRpdW0nIDogbnVsbDtcbiAgICBjb25zdCBtb2RhbFNpemUgPSBjb25maWcuc2l6ZSB8fCBkZWZhdWx0TW9kYWxTaXplO1xuICAgIGNvbnN0IGFsbG93X3Njcm9sbF9jbGFzcyA9ICdhbGxvdy1iYWNrZ3JvdW5kLXNjcm9sbCc7XG5cbiAgICBsZXQgY3VzdG9tQ3NzQ2xhc3NlcyA9IFtdO1xuICAgIGlmIChjb25maWcuY3NzQ2xhc3MpIHtcbiAgICAgIGN1c3RvbUNzc0NsYXNzZXMgPSBBcnJheS5pc0FycmF5KGNvbmZpZy5jc3NDbGFzcykgPyBjb25maWcuY3NzQ2xhc3MgOiBbY29uZmlnLmNzc0NsYXNzXTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmQpIHtcbiAgICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoYWxsb3dfc2Nyb2xsX2NsYXNzKTtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudEJhY2tkcm9wOiBIVE1MSW9uQmFja2Ryb3BFbGVtZW50O1xuICAgIGNvbnN0IHRvcE1vc3RNb2RhbCA9IGF3YWl0IHRoaXMuaW9uaWNNb2RhbENvbnRyb2xsZXIuZ2V0VG9wKCk7XG4gICAgaWYgKHRvcE1vc3RNb2RhbCkge1xuICAgICAgY3VycmVudEJhY2tkcm9wID1cbiAgICAgICAgdG9wTW9zdE1vZGFsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcjxIVE1MSW9uQmFja2Ryb3BFbGVtZW50PignaW9uLWJhY2tkcm9wJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZW50ZXJBbmltYXRpb24gPSB0aGlzLm1vZGFsQW5pbWF0aW9uQnVpbGRlci5lbnRlckFuaW1hdGlvbihjdXJyZW50QmFja2Ryb3ApO1xuICAgIGNvbnN0IGxlYXZlQW5pbWF0aW9uID0gdGhpcy5tb2RhbEFuaW1hdGlvbkJ1aWxkZXIubGVhdmVBbmltYXRpb24oY3VycmVudEJhY2tkcm9wKTtcblxuICAgIGNvbnN0IGlvbk1vZGFsID0gYXdhaXQgdGhpcy5pb25pY01vZGFsQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBjb25maWcuZmxhdm9yID09PSAnY29tcGFjdCcgPyBNb2RhbENvbXBhY3RXcmFwcGVyQ29tcG9uZW50IDogTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgY3NzQ2xhc3M6IFtcbiAgICAgICAgJ2tpcmJ5LW92ZXJsYXknLFxuICAgICAgICAna2lyYnktbW9kYWwnLFxuICAgICAgICBjb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyA/ICdraXJieS1kcmF3ZXInIDogbnVsbCxcbiAgICAgICAgY29uZmlnLmZsYXZvciA9PT0gJ2NvbXBhY3QnID8gJ2tpcmJ5LW1vZGFsLWNvbXBhY3QnIDogbnVsbCxcbiAgICAgICAgbW9kYWxTaXplID8gJ2tpcmJ5LW1vZGFsLScgKyBtb2RhbFNpemUgOiBudWxsLFxuICAgICAgICBjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCA/ICdpbnRlcmFjdC13aXRoLWJhY2tncm91bmQnIDogbnVsbCxcbiAgICAgICAgLi4uY3VzdG9tQ3NzQ2xhc3NlcyxcbiAgICAgIF0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IGNvbmZpZy5mbGF2b3IgPT09ICdjb21wYWN0JyB8fCBjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgIHNob3dCYWNrZHJvcDogIWNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kLFxuICAgICAgY29tcG9uZW50UHJvcHM6IHsgY29uZmlnOiBjb25maWcgfSxcbiAgICAgIHN3aXBlVG9DbG9zZTogY29uZmlnLmZsYXZvciAhPSAnY29tcGFjdCcsXG4gICAgICBwcmVzZW50aW5nRWxlbWVudDogbW9kYWxQcmVzZW50aW5nRWxlbWVudCxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IGZhbHNlLFxuICAgICAgZW50ZXJBbmltYXRpb246IGVudGVyQW5pbWF0aW9uLFxuICAgICAgbGVhdmVBbmltYXRpb246IGxlYXZlQW5pbWF0aW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBpb25Nb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXdhaXQgaW9uTW9kYWwucHJlc2VudCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc21pc3M6IGlvbk1vZGFsLmRpc21pc3MuYmluZChpb25Nb2RhbCksXG4gICAgICBvbldpbGxEaXNtaXNzOiBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCksXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJQcmVzZW50aW5nRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIE1vZGFsSGVscGVyLnByZXNlbnRpbmdFbGVtZW50ID0gZWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UHJlc2VudGluZ0VsZW1lbnQoZmxhdm9yPzogTW9kYWxGbGF2b3IpIHtcbiAgICBsZXQgbW9kYWxQcmVzZW50aW5nRWxlbWVudDogSFRNTEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFmbGF2b3IgfHwgZmxhdm9yID09PSAnbW9kYWwnKSB7XG4gICAgICBjb25zdCB0b3BNb3N0TW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgICAgaWYgKCF0b3BNb3N0TW9kYWwpIHtcbiAgICAgICAgbW9kYWxQcmVzZW50aW5nRWxlbWVudCA9IE1vZGFsSGVscGVyLnByZXNlbnRpbmdFbGVtZW50O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgIXRvcE1vc3RNb2RhbC5jbGFzc0xpc3QuY29udGFpbnMoJ2tpcmJ5LWRyYXdlcicpICYmXG4gICAgICAgICF0b3BNb3N0TW9kYWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdraXJieS1tb2RhbC1jb21wYWN0JylcbiAgICAgICkge1xuICAgICAgICBtb2RhbFByZXNlbnRpbmdFbGVtZW50ID0gdG9wTW9zdE1vZGFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW9kYWxQcmVzZW50aW5nRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzY3JvbGxUb1RvcChcbiAgICBub01vZGFsUmVnaXN0ZXJlZEVycm9yTWVzc2FnZTogc3RyaW5nLFxuICAgIGR1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb25cbiAgKSB7XG4gICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgIGlmICghbW9kYWwgfHwgIShtb2RhbC5jb21wb25lbnQgaW5zdGFuY2VvZiBNb2RhbFdyYXBwZXJDb21wb25lbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Nb2RhbFJlZ2lzdGVyZWRFcnJvck1lc3NhZ2UpO1xuICAgIH1cbiAgICBtb2RhbC5jb21wb25lbnQuc2Nyb2xsVG9Ub3AoZHVyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNjcm9sbFRvQm90dG9tKFxuICAgIG5vTW9kYWxSZWdpc3RlcmVkRXJyb3JNZXNzYWdlOiBzdHJpbmcsXG4gICAgZHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvblxuICApIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMuaW9uaWNNb2RhbENvbnRyb2xsZXIuZ2V0VG9wKCk7XG4gICAgaWYgKCFtb2RhbCB8fCAhKG1vZGFsLmNvbXBvbmVudCBpbnN0YW5jZW9mIE1vZGFsV3JhcHBlckNvbXBvbmVudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihub01vZGFsUmVnaXN0ZXJlZEVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIG1vZGFsLmNvbXBvbmVudC5zY3JvbGxUb0JvdHRvbShkdXJhdGlvbik7XG4gIH1cbn1cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL3NlcnZpY2VzL21vZGFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBSWpGLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQ1Usb0JBQXFDLEVBQ3JDLHFCQUFtRCxFQUNuRCxTQUFvQjtRQUZwQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWlCO1FBQ3JDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDbkQsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUMzQixDQUFDO0lBRUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFtQjtRQUM5QyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDO1FBQ3pDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlFLElBQUksZUFBdUMsQ0FBQztRQUM1QyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5RCxJQUFJLFlBQVksRUFBRTtZQUNoQixlQUFlLEdBQUcsWUFB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QUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsWUFBWSxxQkFBcUIsQ0FBQyxFQUFFO1lBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUNoRDtRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7O0FBaEhELHNEQUFzRDtBQUN0RCxnREFBZ0Q7QUFDakMsNkJBQWlCLEdBQWdCLFNBQVUsQ0FBQTsySEFIL0MsV0FBVzsrSEFBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vYW5pbWF0aW9uL2tpcmJ5LWFuaW1hdGlvbic7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICcuLi8uLi8uLi90eXBlcy93aW5kb3ctcmVmJztcbmltcG9ydCB7IE1vZGFsQ29tcGFjdFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC13cmFwcGVyL2NvbXBhY3QvbW9kYWwtY29tcGFjdC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbmZpZywgTW9kYWxGbGF2b3IsIE1vZGFsU2l6ZSB9IGZyb20gJy4uL21vZGFsLXdyYXBwZXIvY29uZmlnL21vZGFsLWNvbmZpZyc7XG5pbXBvcnQgeyBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHsgTW9kYWxBbmltYXRpb25CdWlsZGVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtYW5pbWF0aW9uLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi9tb2RhbC5pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsSGVscGVyIHtcbiAgLy8gVE9ETzogTWFrZSBwcmVzZW50aW5nRWxlbWVudCBhbiBpbnN0YW5jZSBmaWVsZCB3aGVuXG4gIC8vIGZvclJvb3QoKS9zaW5nbGV0b24gc2VydmljZXMgaGFzIGJlZW4gc29sdmVkOlxuICBwcml2YXRlIHN0YXRpYyBwcmVzZW50aW5nRWxlbWVudDogSFRNTEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpb25pY01vZGFsQ29udHJvbGxlcjogTW9kYWxDb250cm9sbGVyLFxuICAgIHByaXZhdGUgbW9kYWxBbmltYXRpb25CdWlsZGVyOiBNb2RhbEFuaW1hdGlvbkJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWZcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBzaG93TW9kYWxXaW5kb3coY29uZmlnOiBNb2RhbENvbmZpZyk6IFByb21pc2U8T3ZlcmxheT4ge1xuICAgIGNvbmZpZy5mbGF2b3IgPSBjb25maWcuZmxhdm9yIHx8ICdtb2RhbCc7XG4gICAgY29uc3QgbW9kYWxQcmVzZW50aW5nRWxlbWVudCA9IGF3YWl0IHRoaXMuZ2V0UHJlc2VudGluZ0VsZW1lbnQoY29uZmlnLmZsYXZvcik7XG5cbiAgICBsZXQgY3VycmVudEJhY2tkcm9wOiBIVE1MSW9uQmFja2Ryb3BFbGVtZW50O1xuICAgIGNvbnN0IHRvcE1vc3RNb2RhbCA9IGF3YWl0IHRoaXMuaW9uaWNNb2RhbENvbnRyb2xsZXIuZ2V0VG9wKCk7XG4gICAgaWYgKHRvcE1vc3RNb2RhbCkge1xuICAgICAgY3VycmVudEJhY2tkcm9wID0gdG9wTW9zdE1vZGFsLnF1ZXJ5U2VsZWN0b3I8SFRNTElvbkJhY2tkcm9wRWxlbWVudD4oJ2lvbi1iYWNrZHJvcCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGVyQW5pbWF0aW9uID0gdGhpcy5tb2RhbEFuaW1hdGlvbkJ1aWxkZXIuZW50ZXJBbmltYXRpb24oY3VycmVudEJhY2tkcm9wKTtcbiAgICBjb25zdCBsZWF2ZUFuaW1hdGlvbiA9IHRoaXMubW9kYWxBbmltYXRpb25CdWlsZGVyLmxlYXZlQW5pbWF0aW9uKGN1cnJlbnRCYWNrZHJvcCk7XG5cbiAgICBjb25zdCBkZWZhdWx0TW9kYWxTaXplOiBNb2RhbFNpemUgPSBjb25maWcuZmxhdm9yID09PSAnbW9kYWwnID8gJ21lZGl1bScgOiBudWxsO1xuICAgIGNvbnN0IG1vZGFsU2l6ZSA9IGNvbmZpZy5zaXplIHx8IGRlZmF1bHRNb2RhbFNpemU7XG4gICAgY29uc3QgYWxsb3dfc2Nyb2xsX2NsYXNzID0gJ2FsbG93LWJhY2tncm91bmQtc2Nyb2xsJztcblxuICAgIGxldCBjdXN0b21Dc3NDbGFzc2VzID0gW107XG4gICAgaWYgKGNvbmZpZy5jc3NDbGFzcykge1xuICAgICAgY3VzdG9tQ3NzQ2xhc3NlcyA9IEFycmF5LmlzQXJyYXkoY29uZmlnLmNzc0NsYXNzKSA/IGNvbmZpZy5jc3NDbGFzcyA6IFtjb25maWcuY3NzQ2xhc3NdO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgIH1cblxuICAgIGNvbnN0IGlvbk1vZGFsID0gYXdhaXQgdGhpcy5pb25pY01vZGFsQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBjb25maWcuZmxhdm9yID09PSAnY29tcGFjdCcgPyBNb2RhbENvbXBhY3RXcmFwcGVyQ29tcG9uZW50IDogTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgY3NzQ2xhc3M6IFtcbiAgICAgICAgJ2tpcmJ5LW92ZXJsYXknLFxuICAgICAgICAna2lyYnktbW9kYWwnLFxuICAgICAgICBjb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyA/ICdraXJieS1kcmF3ZXInIDogbnVsbCxcbiAgICAgICAgY29uZmlnLmZsYXZvciA9PT0gJ2NvbXBhY3QnID8gJ2tpcmJ5LW1vZGFsLWNvbXBhY3QnIDogbnVsbCxcbiAgICAgICAgJ2tpcmJ5LW1vZGFsLScgKyBtb2RhbFNpemUsXG4gICAgICAgIGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kID8gJ2ludGVyYWN0LXdpdGgtYmFja2dyb3VuZCcgOiBudWxsLFxuICAgICAgICAuLi5jdXN0b21Dc3NDbGFzc2VzLFxuICAgICAgXSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogY29uZmlnLmZsYXZvciA9PT0gJ2NvbXBhY3QnIHx8IGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kID8gZmFsc2UgOiB0cnVlLFxuICAgICAgc2hvd0JhY2tkcm9wOiAhY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmQsXG4gICAgICBjb21wb25lbnRQcm9wczogeyBjb25maWc6IGNvbmZpZyB9LFxuICAgICAgc3dpcGVUb0Nsb3NlOiBjb25maWcuZmxhdm9yICE9ICdjb21wYWN0JyxcbiAgICAgIHByZXNlbnRpbmdFbGVtZW50OiBtb2RhbFByZXNlbnRpbmdFbGVtZW50LFxuICAgICAga2V5Ym9hcmRDbG9zZTogZmFsc2UsXG4gICAgICBlbnRlckFuaW1hdGlvbixcbiAgICAgIGxlYXZlQW5pbWF0aW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBpb25Nb2RhbC5vbkRpZERpc21pc3MoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShhbGxvd19zY3JvbGxfY2xhc3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXdhaXQgaW9uTW9kYWwucHJlc2VudCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc21pc3M6IGlvbk1vZGFsLmRpc21pc3MuYmluZChpb25Nb2RhbCksXG4gICAgICBvbldpbGxEaXNtaXNzOiBpb25Nb2RhbC5vbldpbGxEaXNtaXNzKCksXG4gICAgICBvbkRpZERpc21pc3M6IGlvbk1vZGFsLm9uRGlkRGlzbWlzcygpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJQcmVzZW50aW5nRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIE1vZGFsSGVscGVyLnByZXNlbnRpbmdFbGVtZW50ID0gZWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UHJlc2VudGluZ0VsZW1lbnQoZmxhdm9yPzogTW9kYWxGbGF2b3IpIHtcbiAgICBsZXQgbW9kYWxQcmVzZW50aW5nRWxlbWVudDogSFRNTEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFmbGF2b3IgfHwgZmxhdm9yID09PSAnbW9kYWwnKSB7XG4gICAgICBjb25zdCB0b3BNb3N0TW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgICAgaWYgKCF0b3BNb3N0TW9kYWwpIHtcbiAgICAgICAgbW9kYWxQcmVzZW50aW5nRWxlbWVudCA9IE1vZGFsSGVscGVyLnByZXNlbnRpbmdFbGVtZW50O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgIXRvcE1vc3RNb2RhbC5jbGFzc0xpc3QuY29udGFpbnMoJ2tpcmJ5LWRyYXdlcicpICYmXG4gICAgICAgICF0b3BNb3N0TW9kYWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdraXJieS1tb2RhbC1jb21wYWN0JylcbiAgICAgICkge1xuICAgICAgICBtb2RhbFByZXNlbnRpbmdFbGVtZW50ID0gdG9wTW9zdE1vZGFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbW9kYWxQcmVzZW50aW5nRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzY3JvbGxUb1RvcChcbiAgICBub01vZGFsUmVnaXN0ZXJlZEVycm9yTWVzc2FnZTogc3RyaW5nLFxuICAgIGR1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb25cbiAgKSB7XG4gICAgY29uc3QgbW9kYWwgPSBhd2FpdCB0aGlzLmlvbmljTW9kYWxDb250cm9sbGVyLmdldFRvcCgpO1xuICAgIGlmICghbW9kYWwgfHwgIShtb2RhbC5jb21wb25lbnQgaW5zdGFuY2VvZiBNb2RhbFdyYXBwZXJDb21wb25lbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Nb2RhbFJlZ2lzdGVyZWRFcnJvck1lc3NhZ2UpO1xuICAgIH1cbiAgICBtb2RhbC5jb21wb25lbnQuc2Nyb2xsVG9Ub3AoZHVyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNjcm9sbFRvQm90dG9tKFxuICAgIG5vTW9kYWxSZWdpc3RlcmVkRXJyb3JNZXNzYWdlOiBzdHJpbmcsXG4gICAgZHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvblxuICApIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMuaW9uaWNNb2RhbENvbnRyb2xsZXIuZ2V0VG9wKCk7XG4gICAgaWYgKCFtb2RhbCB8fCAhKG1vZGFsLmNvbXBvbmVudCBpbnN0YW5jZW9mIE1vZGFsV3JhcHBlckNvbXBvbmVudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihub01vZGFsUmVnaXN0ZXJlZEVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIG1vZGFsLmNvbXBvbmVudC5zY3JvbGxUb0JvdHRvbShkdXJhdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -361,7 +361,7 @@ export class PageComponent {
361
361
  }
362
362
  }
363
363
  /** @nocollapse */ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i3.Router }, { token: i0.ChangeDetectorRef }, { token: i4.WindowRef }, { token: i5.ModalNavigationService }, { token: i6.TabsComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
364
- /** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"], components: [{ type: i7.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i7.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i7.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i7.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { type: i7.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i7.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i7.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { type: i8.SpinnerComponent, selector: "kirby-spinner" }, { type: i7.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }], directives: [{ type: i7.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
364
+ /** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"], components: [{ type: i7.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i7.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i7.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i7.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { type: i7.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i7.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i7.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { type: i8.SpinnerComponent, selector: "kirby-spinner" }, { type: i7.IonFooter, selector: "ion-footer", inputs: ["mode", "translucent"] }], directives: [{ type: i7.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
365
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, decorators: [{
366
366
  type: Component,
367
367
  args: [{ selector: 'kirby-page', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"] }]
@@ -70,7 +70,7 @@ export class RangeComponent {
70
70
  multi: true,
71
71
  useExisting: forwardRef((() => RangeComponent)),
72
72
  },
73
- ], usesOnChanges: true, ngImport: i0, template: "<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n>\n</ion-range>\n\n<label *ngIf=\"minLabel\" class=\"min-label\">{{ minLabel }}</label>\n<label *ngIf=\"maxLabel\" class=\"max-label\">{{ maxLabel }}</label>\n", styles: [":host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-white);--knob-box-shadow: 0 5px 10px 0 rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 8%);--knob-size: 24px;--pin-color: var(--kirby-text-color-black);--pin-background: var(--kirby-semi-light);--bar-background: var(--kirby-medium);--bar-background-active: var(--kirby-dark);--bar-border-radius: 4px;--bar-height: 2px;flex:1 1 100%;padding:0}ion-range.range-disabled{--knob-background: var(--kirby-semi-light);--knob-box-shadow: none;--bar-background: var(--kirby-semi-light);--bar-background-active: var(--kirby-semi-light)}ion-range.range-disabled::part(tick){background:var(--kirby-semi-light)}ion-range.range-has-pin{padding:0 3px}ion-range::part(pin){font-size:12px;color:var(--pin-color);background-color:var(--pin-background);padding:2px 4px;border-radius:4px;min-width:40px;position:relative}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:50%;width:6px;height:6px;z-index:1;margin-inline-start:-3px}ion-range::part(tick){background:var(--kirby-medium)}label{font-size:12px;line-height:16px;color:var(--kirby-text-color-semi-dark);margin-top:-4px}\n"], components: [{ type: i1.IonRange, selector: "ion-range", inputs: ["activeBarStart", "color", "debounce", "disabled", "dualKnobs", "max", "min", "mode", "name", "pin", "pinFormatter", "snaps", "step", "ticks", "value"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ ], usesOnChanges: true, ngImport: i0, template: "<ion-range\n (ionChange)=\"_onRangeValueChange($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [pin]=\"pin\"\n [snaps]=\"ticks\"\n [ticks]=\"ticks\"\n [debounce]=\"debounce\"\n [disabled]=\"disabled\"\n>\n</ion-range>\n\n<label *ngIf=\"minLabel\" class=\"min-label\">{{ minLabel }}</label>\n<label *ngIf=\"maxLabel\" class=\"max-label\">{{ maxLabel }}</label>\n", styles: [":host{display:flex;justify-content:space-between;flex-wrap:wrap}ion-range{--knob-background: var(--kirby-white);--knob-box-shadow: 0 5px 10px 0 rgb(28 28 28 / 30%), 0 0 5px 0 rgb(28 28 28 / 8%);--knob-size: 24px;--pin-color: var(--kirby-text-color-black);--pin-background: var(--kirby-semi-light);--bar-background: var(--kirby-medium);--bar-background-active: var(--kirby-dark);--bar-border-radius: 4px;--bar-height: 2px;flex:1 1 100%;padding:0}ion-range.range-disabled{--knob-background: var(--kirby-semi-light);--knob-box-shadow: none;--bar-background: var(--kirby-semi-light);--bar-background-active: var(--kirby-semi-light)}ion-range.range-disabled::part(tick){background:var(--kirby-semi-light)}ion-range.range-has-pin{padding:0 3px}ion-range::part(pin){font-size:12px;color:var(--pin-color);background-color:var(--pin-background);padding:2px 4px;border-radius:4px;min-width:40px;position:relative}ion-range::part(pin):before{content:\"\";position:absolute;top:100%;left:50%;transform:translate(-50%);display:block;border:solid transparent 6px;border-top-color:var(--pin-background)}ion-range::part(tick),ion-range::part(tick-active){border-radius:50%;width:6px;height:6px;z-index:1;margin-inline-start:-3px}ion-range::part(tick){background:var(--kirby-medium)}label{font-size:12px;line-height:16px;color:var(--kirby-text-color-semi-dark);margin-top:-4px}\n"], components: [{ type: i1.IonRange, selector: "ion-range", inputs: ["color", "debounce", "disabled", "dualKnobs", "max", "min", "mode", "name", "pin", "snaps", "step", "ticks", "value"] }], directives: [{ type: i1.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: RangeComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{ selector: 'kirby-range', providers: [