nxt-pick-datetime 16.0.0-alpha.6 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/{esm2020 → esm2022}/lib/class/date-time-adapter.class.mjs +96 -96
  2. package/{esm2020 → esm2022}/lib/class/date-time-format.class.mjs +3 -3
  3. package/esm2022/lib/class/date-time.class.mjs +96 -0
  4. package/{esm2020 → esm2022}/lib/class/dialog-config.class.mjs +46 -46
  5. package/{esm2020 → esm2022}/lib/class/dialog-ref.class.mjs +118 -118
  6. package/esm2022/lib/date-time/calendar/calendar.component.mjs +347 -0
  7. package/esm2022/lib/date-time/calendar-body/calendar-body.component.mjs +152 -0
  8. package/esm2022/lib/date-time/calendar-month-view/calendar-month-view.component.mjs +430 -0
  9. package/esm2022/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.mjs +359 -0
  10. package/esm2022/lib/date-time/calendar-year-view/calendar-year-view.component.mjs +363 -0
  11. package/esm2022/lib/date-time/date-time-inline/date-time-inline.component.mjs +276 -0
  12. package/esm2022/lib/date-time/date-time-picker/date-time-picker.component.mjs +542 -0
  13. package/{esm2020 → esm2022}/lib/date-time/date-time-picker-container/date-time-picker-container.animations.mjs +18 -18
  14. package/esm2022/lib/date-time/date-time-picker-container/date-time-picker-container.component.mjs +390 -0
  15. package/esm2022/lib/date-time/date-time-picker-input.directive.mjs +619 -0
  16. package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +62 -0
  17. package/esm2022/lib/date-time/date-time-picker-trigger.directive.mjs +71 -0
  18. package/esm2022/lib/date-time/date-time.module.mjs +97 -0
  19. package/esm2022/lib/date-time/number-fixed-len.pipe.mjs +23 -0
  20. package/esm2022/lib/date-time/timer/timer.component.mjs +300 -0
  21. package/esm2022/lib/date-time/timer-box/timer-box.component.mjs +96 -0
  22. package/esm2022/lib/dialog/dialog-container/dialog-container.component.mjs +249 -0
  23. package/esm2022/lib/dialog/dialog.module.mjs +43 -0
  24. package/esm2022/lib/dialog/dialog.service.mjs +252 -0
  25. package/esm2022/lib/utils/object.mjs +24 -0
  26. package/esm2022/moment-adapter/date-time-adapter.class.mjs +221 -0
  27. package/{esm2020 → esm2022}/moment-adapter/date-time-format.class.mjs +12 -12
  28. package/esm2022/moment-adapter/moment-adapter.module.mjs +38 -0
  29. package/{esm2020 → esm2022}/moment-adapter/nxt-pick-datetime-moment-adapter.mjs +4 -4
  30. package/{esm2020 → esm2022}/moment-adapter/public-api.mjs +2 -2
  31. package/esm2022/native-adapter/date-time-adapter.class.mjs +367 -0
  32. package/{esm2020 → esm2022}/native-adapter/date-time-format.class.mjs +12 -12
  33. package/esm2022/native-adapter/native-adapter.module.mjs +38 -0
  34. package/{esm2020 → esm2022}/native-adapter/nxt-pick-datetime-native-adapter.mjs +4 -4
  35. package/{esm2020 → esm2022}/native-adapter/public-api.mjs +1 -1
  36. package/{esm2020 → esm2022}/nxt-pick-datetime.mjs +4 -4
  37. package/{esm2020 → esm2022}/public-api.mjs +13 -13
  38. package/{fesm2020 → fesm2022}/nxt-pick-datetime-moment-adapter.mjs +257 -257
  39. package/{fesm2020 → fesm2022}/nxt-pick-datetime-moment-adapter.mjs.map +1 -1
  40. package/{fesm2020 → fesm2022}/nxt-pick-datetime-native-adapter.mjs +402 -402
  41. package/{fesm2020 → fesm2022}/nxt-pick-datetime-native-adapter.mjs.map +1 -1
  42. package/{fesm2020 → fesm2022}/nxt-pick-datetime.mjs +4858 -4860
  43. package/{fesm2020 → fesm2022}/nxt-pick-datetime.mjs.map +1 -1
  44. package/index.d.ts +5 -5
  45. package/lib/class/date-time-adapter.class.d.ts +176 -176
  46. package/lib/class/date-time-format.class.d.ts +12 -12
  47. package/lib/class/date-time.class.d.ts +76 -76
  48. package/lib/class/dialog-config.class.d.ts +90 -90
  49. package/lib/class/dialog-ref.class.d.ts +50 -50
  50. package/lib/date-time/calendar/calendar.component.d.ts +147 -147
  51. package/lib/date-time/calendar-body/calendar-body.component.d.ts +79 -79
  52. package/lib/date-time/calendar-month-view/calendar-month-view.component.d.ts +139 -139
  53. package/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.d.ts +115 -115
  54. package/lib/date-time/calendar-year-view/calendar-year-view.component.d.ts +123 -123
  55. package/lib/date-time/date-time-inline/date-time-inline.component.d.ts +106 -106
  56. package/lib/date-time/date-time-picker/date-time-picker.component.d.ts +172 -172
  57. package/lib/date-time/date-time-picker-container/date-time-picker-container.animations.d.ts +6 -6
  58. package/lib/date-time/date-time-picker-container/date-time-picker-container.component.d.ts +129 -129
  59. package/lib/date-time/date-time-picker-input.directive.d.ts +167 -167
  60. package/lib/date-time/date-time-picker-intl.service.d.ts +51 -51
  61. package/lib/date-time/date-time-picker-trigger.directive.d.ts +22 -22
  62. package/lib/date-time/date-time.module.d.ts +23 -23
  63. package/lib/date-time/number-fixed-len.pipe.d.ts +8 -8
  64. package/lib/date-time/timer/timer.component.d.ts +131 -131
  65. package/lib/date-time/timer-box/timer-box.component.d.ts +37 -37
  66. package/lib/dialog/dialog-container/dialog-container.component.d.ts +69 -69
  67. package/lib/dialog/dialog.module.d.ts +12 -12
  68. package/lib/dialog/dialog.service.d.ts +78 -78
  69. package/lib/utils/object.d.ts +9 -10
  70. package/moment-adapter/date-time-adapter.class.d.ts +64 -64
  71. package/moment-adapter/date-time-format.class.d.ts +5 -5
  72. package/moment-adapter/index.d.ts +5 -5
  73. package/moment-adapter/moment-adapter.module.d.ts +6 -6
  74. package/moment-adapter/public-api.d.ts +2 -2
  75. package/native-adapter/date-time-adapter.class.d.ts +72 -72
  76. package/native-adapter/date-time-format.class.d.ts +5 -5
  77. package/native-adapter/index.d.ts +5 -5
  78. package/native-adapter/native-adapter.module.d.ts +7 -7
  79. package/native-adapter/public-api.d.ts +1 -1
  80. package/package.json +18 -28
  81. package/public-api.d.ts +14 -14
  82. package/esm2020/lib/class/date-time.class.mjs +0 -95
  83. package/esm2020/lib/date-time/calendar/calendar.component.mjs +0 -346
  84. package/esm2020/lib/date-time/calendar-body/calendar-body.component.mjs +0 -151
  85. package/esm2020/lib/date-time/calendar-month-view/calendar-month-view.component.mjs +0 -429
  86. package/esm2020/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.mjs +0 -358
  87. package/esm2020/lib/date-time/calendar-year-view/calendar-year-view.component.mjs +0 -362
  88. package/esm2020/lib/date-time/date-time-inline/date-time-inline.component.mjs +0 -275
  89. package/esm2020/lib/date-time/date-time-picker/date-time-picker.component.mjs +0 -541
  90. package/esm2020/lib/date-time/date-time-picker-container/date-time-picker-container.component.mjs +0 -389
  91. package/esm2020/lib/date-time/date-time-picker-input.directive.mjs +0 -618
  92. package/esm2020/lib/date-time/date-time-picker-intl.service.mjs +0 -61
  93. package/esm2020/lib/date-time/date-time-picker-trigger.directive.mjs +0 -70
  94. package/esm2020/lib/date-time/date-time.module.mjs +0 -96
  95. package/esm2020/lib/date-time/number-fixed-len.pipe.mjs +0 -22
  96. package/esm2020/lib/date-time/timer/timer.component.mjs +0 -299
  97. package/esm2020/lib/date-time/timer-box/timer-box.component.mjs +0 -95
  98. package/esm2020/lib/dialog/dialog-container/dialog-container.component.mjs +0 -248
  99. package/esm2020/lib/dialog/dialog.module.mjs +0 -42
  100. package/esm2020/lib/dialog/dialog.service.mjs +0 -252
  101. package/esm2020/lib/utils/object.mjs +0 -25
  102. package/esm2020/moment-adapter/date-time-adapter.class.mjs +0 -220
  103. package/esm2020/moment-adapter/moment-adapter.module.mjs +0 -37
  104. package/esm2020/native-adapter/date-time-adapter.class.mjs +0 -366
  105. package/esm2020/native-adapter/native-adapter.module.mjs +0 -37
  106. package/fesm2015/nxt-pick-datetime-moment-adapter.mjs +0 -274
  107. package/fesm2015/nxt-pick-datetime-moment-adapter.mjs.map +0 -1
  108. package/fesm2015/nxt-pick-datetime-native-adapter.mjs +0 -420
  109. package/fesm2015/nxt-pick-datetime-native-adapter.mjs.map +0 -1
  110. package/fesm2015/nxt-pick-datetime.mjs +0 -5014
  111. package/fesm2015/nxt-pick-datetime.mjs.map +0 -1
@@ -1,119 +1,119 @@
1
- import { Subject } from 'rxjs';
2
- import { filter, take } from 'rxjs/operators';
3
- export class DialogRef {
4
- constructor(overlayRef, container, id, location) {
5
- this.overlayRef = overlayRef;
6
- this.container = container;
7
- this.id = id;
8
- this._beforeClose$ = new Subject();
9
- this._afterOpen$ = new Subject();
10
- this._afterClosed$ = new Subject();
11
- /** Whether the user is allowed to close the dialog */
12
- this.disableClose = !!this.container.config?.disableClose;
13
- this.container.animationStateChanged
14
- .pipe(filter((event) => event.phaseName === 'done' && event.toState === 'enter'), take(1))
15
- .subscribe(() => {
16
- this._afterOpen$.next(undefined);
17
- this._afterOpen$.complete();
18
- });
19
- this.container.animationStateChanged
20
- .pipe(filter((event) => event.phaseName === 'done' && event.toState === 'exit'), take(1))
21
- .subscribe(() => {
22
- this.overlayRef.dispose();
23
- this.locationChanged?.unsubscribe();
24
- this.locationChanged = undefined;
25
- this._afterClosed$.next(this.result);
26
- this._afterClosed$.complete();
27
- this.componentInstance = undefined;
28
- });
29
- this.overlayRef.keydownEvents()
30
- .pipe(filter(event => event.code.toLowerCase() === 'escape' && !this.disableClose))
31
- .subscribe(() => this.close());
32
- if (location) {
33
- this.locationChanged = location.subscribe(() => {
34
- if (this.container.config?.closeOnNavigation) {
35
- this.close();
36
- }
37
- });
38
- }
39
- }
40
- close(dialogResult) {
41
- this.result = dialogResult;
42
- this.container.animationStateChanged
43
- .pipe(filter((event) => event.phaseName === 'start'), take(1))
44
- .subscribe(() => {
45
- this._beforeClose$.next(dialogResult);
46
- this._beforeClose$.complete();
47
- this.overlayRef.detachBackdrop();
48
- });
49
- this.container.startExitAnimation();
50
- }
51
- /**
52
- * Gets an observable that emits when the overlay's backdrop has been clicked.
53
- */
54
- backdropClick() {
55
- return this.overlayRef.backdropClick();
56
- }
57
- /**
58
- * Gets an observable that emits when keydown events are targeted on the overlay.
59
- */
60
- keydownEvents() {
61
- return this.overlayRef.keydownEvents();
62
- }
63
- /**
64
- * Updates the dialog's position.
65
- *
66
- * @param position New dialog position.
67
- */
68
- updatePosition(position) {
69
- const strategy = this.getPositionStrategy();
70
- if (position && (position.left || position.right)) {
71
- if (position.left)
72
- strategy.left(position.left);
73
- else
74
- strategy.right(position.right);
75
- }
76
- else {
77
- strategy.centerHorizontally();
78
- }
79
- if (position && (position.top || position.bottom)) {
80
- if (position.top)
81
- strategy.top(position.top);
82
- else
83
- strategy.bottom(position.bottom);
84
- }
85
- else {
86
- strategy.centerVertically();
87
- }
88
- this.overlayRef.updatePosition();
89
- return this;
90
- }
91
- /**
92
- * Updates the dialog's width and height.
93
- *
94
- * @param width New width of the dialog.
95
- * @param height New height of the dialog.
96
- */
97
- updateSize(width = 'auto', height = 'auto') {
98
- this.overlayRef.updateSize({ width, height });
99
- this.overlayRef.updatePosition();
100
- return this;
101
- }
102
- isAnimating() {
103
- return this.container.isAnimating;
104
- }
105
- afterOpen() {
106
- return this._afterOpen$.asObservable();
107
- }
108
- beforeClose() {
109
- return this._beforeClose$.asObservable();
110
- }
111
- afterClosed() {
112
- return this._afterClosed$.asObservable();
113
- }
114
- /** Fetches the position strategy object from the overlay ref */
115
- getPositionStrategy() {
116
- return this.overlayRef.getConfig().positionStrategy;
117
- }
118
- }
1
+ import { Subject } from 'rxjs';
2
+ import { filter, take } from 'rxjs/operators';
3
+ export class DialogRef {
4
+ constructor(overlayRef, container, id, location) {
5
+ this.overlayRef = overlayRef;
6
+ this.container = container;
7
+ this.id = id;
8
+ this._beforeClose$ = new Subject();
9
+ this._afterOpen$ = new Subject();
10
+ this._afterClosed$ = new Subject();
11
+ /** Whether the user is allowed to close the dialog */
12
+ this.disableClose = !!this.container.config?.disableClose;
13
+ this.container.animationStateChanged
14
+ .pipe(filter((event) => event.phaseName === 'done' && event.toState === 'enter'), take(1))
15
+ .subscribe(() => {
16
+ this._afterOpen$.next(undefined);
17
+ this._afterOpen$.complete();
18
+ });
19
+ this.container.animationStateChanged
20
+ .pipe(filter((event) => event.phaseName === 'done' && event.toState === 'exit'), take(1))
21
+ .subscribe(() => {
22
+ this.overlayRef.dispose();
23
+ this.locationChanged?.unsubscribe();
24
+ this.locationChanged = undefined;
25
+ this._afterClosed$.next(this.result);
26
+ this._afterClosed$.complete();
27
+ this.componentInstance = undefined;
28
+ });
29
+ this.overlayRef.keydownEvents()
30
+ .pipe(filter(event => event.code.toLowerCase() === 'escape' && !this.disableClose))
31
+ .subscribe(() => this.close());
32
+ if (location) {
33
+ this.locationChanged = location.subscribe(() => {
34
+ if (this.container.config?.closeOnNavigation) {
35
+ this.close();
36
+ }
37
+ });
38
+ }
39
+ }
40
+ close(dialogResult) {
41
+ this.result = dialogResult;
42
+ this.container.animationStateChanged
43
+ .pipe(filter((event) => event.phaseName === 'start'), take(1))
44
+ .subscribe(() => {
45
+ this._beforeClose$.next(dialogResult);
46
+ this._beforeClose$.complete();
47
+ this.overlayRef.detachBackdrop();
48
+ });
49
+ this.container.startExitAnimation();
50
+ }
51
+ /**
52
+ * Gets an observable that emits when the overlay's backdrop has been clicked.
53
+ */
54
+ backdropClick() {
55
+ return this.overlayRef.backdropClick();
56
+ }
57
+ /**
58
+ * Gets an observable that emits when keydown events are targeted on the overlay.
59
+ */
60
+ keydownEvents() {
61
+ return this.overlayRef.keydownEvents();
62
+ }
63
+ /**
64
+ * Updates the dialog's position.
65
+ *
66
+ * @param position New dialog position.
67
+ */
68
+ updatePosition(position) {
69
+ const strategy = this.getPositionStrategy();
70
+ if (position && (position.left || position.right)) {
71
+ if (position.left)
72
+ strategy.left(position.left);
73
+ else
74
+ strategy.right(position.right);
75
+ }
76
+ else {
77
+ strategy.centerHorizontally();
78
+ }
79
+ if (position && (position.top || position.bottom)) {
80
+ if (position.top)
81
+ strategy.top(position.top);
82
+ else
83
+ strategy.bottom(position.bottom);
84
+ }
85
+ else {
86
+ strategy.centerVertically();
87
+ }
88
+ this.overlayRef.updatePosition();
89
+ return this;
90
+ }
91
+ /**
92
+ * Updates the dialog's width and height.
93
+ *
94
+ * @param width New width of the dialog.
95
+ * @param height New height of the dialog.
96
+ */
97
+ updateSize(width = 'auto', height = 'auto') {
98
+ this.overlayRef.updateSize({ width, height });
99
+ this.overlayRef.updatePosition();
100
+ return this;
101
+ }
102
+ isAnimating() {
103
+ return this.container.isAnimating;
104
+ }
105
+ afterOpen() {
106
+ return this._afterOpen$.asObservable();
107
+ }
108
+ beforeClose() {
109
+ return this._beforeClose$.asObservable();
110
+ }
111
+ afterClosed() {
112
+ return this._afterClosed$.asObservable();
113
+ }
114
+ /** Fetches the position strategy object from the overlay ref */
115
+ getPositionStrategy() {
116
+ return this.overlayRef.getConfig().positionStrategy;
117
+ }
118
+ }
119
119
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlZi5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BpY2stZGF0ZXRpbWUvc3JjL2xpYi9jbGFzcy9kaWFsb2ctcmVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQXFDLE1BQU0sTUFBTSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFJN0MsTUFBTSxPQUFPLFNBQVM7SUFxQmxCLFlBQ3FCLFVBQXNCLEVBQ3RCLFNBQW1DLEVBQzNDLEVBQVcsRUFDcEIsUUFBbUI7UUFIRixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQzNDLE9BQUUsR0FBRixFQUFFLENBQVM7UUFwQlAsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBRW5DLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUVqQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFVcEQsc0RBQXNEO1FBQ3RELGlCQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQTtRQVFoRCxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQjthQUMvQixJQUFJLENBQ0QsTUFBTSxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsRUFDMUYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNWO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUE7UUFD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akYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgR2xvYmFsUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb25MaWtlIGFzIElTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBEaWFsb2dDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLWNvbnRhaW5lci9kaWFsb2ctY29udGFpbmVyLmNvbXBvbmVudCdcbmltcG9ydCB7IERpYWxvZ1Bvc2l0aW9uIH0gZnJvbSAnLi9kaWFsb2ctY29uZmlnLmNsYXNzJ1xuXG5leHBvcnQgY2xhc3MgRGlhbG9nUmVmPFQ+IHtcblxuICAgIHByaXZhdGUgcmVzdWx0OiBhbnlcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2JlZm9yZUNsb3NlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyT3BlbiQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlckNsb3NlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICAvKiogU3Vic2NyaXB0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIHVzZXIncyBsb2NhdGlvbiAqL1xuICAgIHByaXZhdGUgbG9jYXRpb25DaGFuZ2VkPzogSVN1YnNjcmlwdGlvblxuXG4gICAgLyoqXG4gICAgICogVGhlIGluc3RhbmNlIG9mIGNvbXBvbmVudCBpc09wZW4gaW50byBtb2RhbFxuICAgICAqL1xuICAgIGNvbXBvbmVudEluc3RhbmNlPzogVFxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBjbG9zZSB0aGUgZGlhbG9nICovXG4gICAgZGlzYWJsZUNsb3NlID0gISF0aGlzLmNvbnRhaW5lci5jb25maWc/LmRpc2FibGVDbG9zZVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheVJlZjogT3ZlcmxheVJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXI6IERpYWxvZ0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgcmVhZG9ubHkgaWQ/OiBzdHJpbmcsXG4gICAgICAgIGxvY2F0aW9uPzogTG9jYXRpb25cbiAgICApIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ2VudGVyJyksXG4gICAgICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuJC5uZXh0KHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlck9wZW4kLmNvbXBsZXRlKClcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5jb250YWluZXIuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbkNoYW5nZWQ/LnVuc3Vic2NyaWJlKClcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uQ2hhbmdlZCA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkJC5uZXh0KHRoaXMucmVzdWx0KVxuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkJC5jb21wbGV0ZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSlcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQuY29kZS50b0xvd2VyQ2FzZSgpID09PSAnZXNjYXBlJyAmJiAhdGhpcy5kaXNhYmxlQ2xvc2UpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlKCkpXG5cbiAgICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uQ2hhbmdlZCA9IGxvY2F0aW9uLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyLmNvbmZpZz8uY2xvc2VPbk5hdmlnYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKGRpYWxvZ1Jlc3VsdD86IGFueSkge1xuICAgICAgICB0aGlzLnJlc3VsdCA9IGRpYWxvZ1Jlc3VsdFxuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmFuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IGV2ZW50LnBoYXNlTmFtZSA9PT0gJ3N0YXJ0JyksXG4gICAgICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmVmb3JlQ2xvc2UkLm5leHQoZGlhbG9nUmVzdWx0KVxuICAgICAgICAgICAgICAgIHRoaXMuX2JlZm9yZUNsb3NlJC5jb21wbGV0ZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKClcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5jb250YWluZXIuc3RhcnRFeGl0QW5pbWF0aW9uKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIHRoZSBvdmVybGF5J3MgYmFja2Ryb3AgaGFzIGJlZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICBiYWNrZHJvcENsaWNrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4ga2V5ZG93biBldmVudHMgYXJlIHRhcmdldGVkIG9uIHRoZSBvdmVybGF5LlxuICAgICAqL1xuICAgIGtleWRvd25FdmVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgZGlhbG9nJ3MgcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcG9zaXRpb24gTmV3IGRpYWxvZyBwb3NpdGlvbi5cbiAgICAgKi9cbiAgICB1cGRhdGVQb3NpdGlvbihwb3NpdGlvbj86IERpYWxvZ1Bvc2l0aW9uKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KClcblxuICAgICAgICBpZiAocG9zaXRpb24gJiYgKHBvc2l0aW9uLmxlZnQgfHwgcG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICAgICAgICBpZiAocG9zaXRpb24ubGVmdClcbiAgICAgICAgICAgICAgICBzdHJhdGVneS5sZWZ0KHBvc2l0aW9uLmxlZnQpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc3RyYXRlZ3kucmlnaHQocG9zaXRpb24ucmlnaHQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJhdGVneS5jZW50ZXJIb3Jpem9udGFsbHkoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uICYmIChwb3NpdGlvbi50b3AgfHwgcG9zaXRpb24uYm90dG9tKSkge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uLnRvcClcbiAgICAgICAgICAgICAgICBzdHJhdGVneS50b3AocG9zaXRpb24udG9wKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHN0cmF0ZWd5LmJvdHRvbShwb3NpdGlvbi5ib3R0b20pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJhdGVneS5jZW50ZXJWZXJ0aWNhbGx5KClcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBkaWFsb2cncyB3aWR0aCBhbmQgaGVpZ2h0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHdpZHRoIE5ldyB3aWR0aCBvZiB0aGUgZGlhbG9nLlxuICAgICAqIEBwYXJhbSBoZWlnaHQgTmV3IGhlaWdodCBvZiB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIHVwZGF0ZVNpemUod2lkdGg6IHN0cmluZyA9ICdhdXRvJywgaGVpZ2h0OiBzdHJpbmcgPSAnYXV0bycpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aCwgaGVpZ2h0IH0pXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaXNBbmltYXRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5pc0FuaW1hdGluZ1xuICAgIH1cblxuICAgIGFmdGVyT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyT3BlbiQuYXNPYnNlcnZhYmxlKClcbiAgICB9XG5cbiAgICBiZWZvcmVDbG9zZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JlZm9yZUNsb3NlJC5hc09ic2VydmFibGUoKVxuICAgIH1cblxuICAgIGFmdGVyQ2xvc2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJDbG9zZWQkLmFzT2JzZXJ2YWJsZSgpXG4gICAgfVxuXG4gICAgLyoqIEZldGNoZXMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IG9iamVjdCBmcm9tIHRoZSBvdmVybGF5IHJlZiAqL1xuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneSgpOiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5IGFzIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3lcbiAgICB9XG59XG4iXX0=