design-angular-kit 1.3.2 → 1.5.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 (163) hide show
  1. package/fesm2022/design-angular-kit.mjs +621 -418
  2. package/fesm2022/design-angular-kit.mjs.map +1 -1
  3. package/lib/components/core/avatar/avatar-extra-text.directive.d.ts +6 -0
  4. package/lib/components/core/avatar/avatar-group/avatar-group.component.d.ts +5 -0
  5. package/lib/components/core/avatar/avatar-presence.directive.d.ts +17 -0
  6. package/lib/components/core/avatar/avatar-status.directive.d.ts +17 -0
  7. package/lib/components/core/avatar/avatar-wrapper.directive.d.ts +9 -0
  8. package/lib/components/core/avatar/avatar.module.d.ts +5 -1
  9. package/lib/components/core/list/list-item/list-item.component.d.ts +4 -1
  10. package/lib/components/core/video-player/video-player.config.d.ts +18 -18
  11. package/lib/components/form/transfer/store/transfer.reducers.d.ts +35 -35
  12. package/lib/components/navigation/footer/footer.component.d.ts +6 -0
  13. package/lib/design-angular-kit.module.d.ts +13 -12
  14. package/package.json +11 -10
  15. package/public_api.d.ts +7 -2
  16. package/schematics/ng-add/index.js +1 -1
  17. package/schematics/ng-add/index.js.map +1 -1
  18. package/schematics/ng-add/rules/setup-project/add-animations.js +1 -2
  19. package/schematics/ng-add/rules/setup-project/add-animations.js.map +1 -1
  20. package/schematics/ng-add/rules/setup-project/add-assets.js +1 -2
  21. package/schematics/ng-add/rules/setup-project/add-assets.js.map +1 -1
  22. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js +1 -2
  23. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js.map +1 -1
  24. package/schematics/ng-add/rules/setup-project/add-http-client.js +1 -2
  25. package/schematics/ng-add/rules/setup-project/add-http-client.js.map +1 -1
  26. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js +1 -2
  27. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js.map +1 -1
  28. package/schematics/ng-add/rules/setup-project/add-localisation.js +1 -2
  29. package/schematics/ng-add/rules/setup-project/add-localisation.js.map +1 -1
  30. package/schematics/ng-add/rules/setup-project/angular-json-helper.js +1 -2
  31. package/schematics/ng-add/rules/setup-project/angular-json-helper.js.map +1 -1
  32. package/schematics/ng-add/setup-project.js +2 -2
  33. package/schematics/ng-add/setup-project.js.map +1 -1
  34. package/schematics/ng-add/utils.js +13 -6
  35. package/schematics/ng-add/utils.js.map +1 -1
  36. package/schematics/ng-add/utils.spec.d.ts +1 -0
  37. package/schematics/ng-add/utils.spec.js +48 -0
  38. package/schematics/ng-add/utils.spec.js.map +1 -0
  39. package/schematics/ng-add/versions-helper.js +11 -19
  40. package/schematics/ng-add/versions-helper.js.map +1 -1
  41. package/schematics/ng-add/versions-helper.spec.d.ts +1 -0
  42. package/schematics/ng-add/versions-helper.spec.js +46 -0
  43. package/schematics/ng-add/versions-helper.spec.js.map +1 -0
  44. package/esm2022/design-angular-kit.mjs +0 -5
  45. package/esm2022/lib/abstracts/abstract-form.component.mjs +0 -199
  46. package/esm2022/lib/abstracts/abstract.component.mjs +0 -46
  47. package/esm2022/lib/components/core/accordion/accordion.component.mjs +0 -39
  48. package/esm2022/lib/components/core/alert/alert.component.mjs +0 -71
  49. package/esm2022/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.mjs +0 -43
  50. package/esm2022/lib/components/core/avatar/avatar-group/avatar-group.component.mjs +0 -40
  51. package/esm2022/lib/components/core/avatar/avatar.directive.mjs +0 -78
  52. package/esm2022/lib/components/core/avatar/avatar.module.mjs +0 -33
  53. package/esm2022/lib/components/core/badge/badge.directive.mjs +0 -39
  54. package/esm2022/lib/components/core/button/button.directive.mjs +0 -80
  55. package/esm2022/lib/components/core/callout/callout.component.mjs +0 -64
  56. package/esm2022/lib/components/core/card/card.component.mjs +0 -59
  57. package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +0 -86
  58. package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -19
  59. package/esm2022/lib/components/core/carousel/carousel.module.mjs +0 -18
  60. package/esm2022/lib/components/core/chip/chip.component.mjs +0 -136
  61. package/esm2022/lib/components/core/collapse/collapse.component.mjs +0 -116
  62. package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +0 -27
  63. package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +0 -11
  64. package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +0 -55
  65. package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +0 -19
  66. package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +0 -147
  67. package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +0 -70
  68. package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +0 -18
  69. package/esm2022/lib/components/core/forward/forward.directive.mjs +0 -57
  70. package/esm2022/lib/components/core/link/link.component.mjs +0 -42
  71. package/esm2022/lib/components/core/list/list/list.component.mjs +0 -22
  72. package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +0 -56
  73. package/esm2022/lib/components/core/list/list.module.mjs +0 -18
  74. package/esm2022/lib/components/core/modal/modal.component.mjs +0 -194
  75. package/esm2022/lib/components/core/notifications/notifications.component.mjs +0 -111
  76. package/esm2022/lib/components/core/pagination/pagination.component.mjs +0 -130
  77. package/esm2022/lib/components/core/popover/popover.directive.mjs +0 -176
  78. package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +0 -34
  79. package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +0 -25
  80. package/esm2022/lib/components/core/spinner/spinner.component.mjs +0 -30
  81. package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -116
  82. package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -22
  83. package/esm2022/lib/components/core/steppers/steppers.module.mjs +0 -18
  84. package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +0 -97
  85. package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +0 -39
  86. package/esm2022/lib/components/core/tab/tab.module.mjs +0 -18
  87. package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +0 -134
  88. package/esm2022/lib/components/core/table/sort/sort.directive.mjs +0 -123
  89. package/esm2022/lib/components/core/table/table.component.mjs +0 -45
  90. package/esm2022/lib/components/core/table/table.module.mjs +0 -19
  91. package/esm2022/lib/components/core/timeline/timeline-item/timeline-item.component.mjs +0 -90
  92. package/esm2022/lib/components/core/timeline/timeline.component.mjs +0 -36
  93. package/esm2022/lib/components/core/timeline/timeline.module.mjs +0 -18
  94. package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +0 -143
  95. package/esm2022/lib/components/core/video-player/video-player-i18n.model.mjs +0 -2
  96. package/esm2022/lib/components/core/video-player/video-player-i18n.service.mjs +0 -130
  97. package/esm2022/lib/components/core/video-player/video-player.component.mjs +0 -301
  98. package/esm2022/lib/components/core/video-player/video-player.config.mjs +0 -43
  99. package/esm2022/lib/components/core/video-player/video-player.cookie.mjs +0 -25
  100. package/esm2022/lib/components/core/video-player/video-player.model.mjs +0 -3
  101. package/esm2022/lib/components/core/video-player/video-player.module.mjs +0 -16
  102. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +0 -178
  103. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +0 -48
  104. package/esm2022/lib/components/form/form.module.mjs +0 -67
  105. package/esm2022/lib/components/form/input/input.component.mjs +0 -190
  106. package/esm2022/lib/components/form/password-input/password-input.component.mjs +0 -149
  107. package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +0 -60
  108. package/esm2022/lib/components/form/range/range.component.mjs +0 -64
  109. package/esm2022/lib/components/form/rating/rating.component.mjs +0 -50
  110. package/esm2022/lib/components/form/search/search.component.mjs +0 -112
  111. package/esm2022/lib/components/form/select/select.component.mjs +0 -70
  112. package/esm2022/lib/components/form/textarea/textarea.component.mjs +0 -55
  113. package/esm2022/lib/components/form/transfer/store/transfer.reducers.mjs +0 -191
  114. package/esm2022/lib/components/form/transfer/store/transfer.state.mjs +0 -2
  115. package/esm2022/lib/components/form/transfer/store/transfer.store.mjs +0 -70
  116. package/esm2022/lib/components/form/transfer/transfer-list/transfer-list.component.mjs +0 -72
  117. package/esm2022/lib/components/form/transfer/transfer.component.mjs +0 -149
  118. package/esm2022/lib/components/form/transfer/transfer.model.mjs +0 -6
  119. package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +0 -142
  120. package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +0 -107
  121. package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +0 -67
  122. package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +0 -68
  123. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -51
  124. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -21
  125. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +0 -18
  126. package/esm2022/lib/components/navigation/header/header.component.mjs +0 -103
  127. package/esm2022/lib/components/navigation/megamenu/megamenu.component.mjs +0 -27
  128. package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +0 -49
  129. package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +0 -11
  130. package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +0 -18
  131. package/esm2022/lib/components/navigation/navscroll/navscroll-list-item.component.mjs +0 -97
  132. package/esm2022/lib/components/navigation/navscroll/navscroll-list-items.component.mjs +0 -44
  133. package/esm2022/lib/components/navigation/navscroll/navscroll.component.mjs +0 -116
  134. package/esm2022/lib/components/navigation/navscroll/navscroll.model.mjs +0 -2
  135. package/esm2022/lib/components/navigation/navscroll/navscroll.store.mjs +0 -68
  136. package/esm2022/lib/components/navigation/navscroll/navscroll.utils.mjs +0 -23
  137. package/esm2022/lib/components/navigation/sidebar/sidebar.component.mjs +0 -50
  138. package/esm2022/lib/components/navigation/skiplink/skiplink/skiplink.component.mjs +0 -27
  139. package/esm2022/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.mjs +0 -26
  140. package/esm2022/lib/components/navigation/skiplink/skiplink.module.mjs +0 -18
  141. package/esm2022/lib/components/utils/error-page/error-page.component.mjs +0 -74
  142. package/esm2022/lib/components/utils/icon/icon.component.mjs +0 -63
  143. package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -50
  144. package/esm2022/lib/design-angular-kit.module.mjs +0 -237
  145. package/esm2022/lib/enums/colors.enums.mjs +0 -12
  146. package/esm2022/lib/enums/sizes.enum.mjs +0 -9
  147. package/esm2022/lib/interfaces/core.mjs +0 -16
  148. package/esm2022/lib/interfaces/design-angular-kit-config.mjs +0 -7
  149. package/esm2022/lib/interfaces/form.mjs +0 -2
  150. package/esm2022/lib/interfaces/icon.mjs +0 -181
  151. package/esm2022/lib/interfaces/sortable-table.mjs +0 -6
  152. package/esm2022/lib/interfaces/utils.mjs +0 -2
  153. package/esm2022/lib/pipes/date-ago.pipe.mjs +0 -56
  154. package/esm2022/lib/pipes/duration.pipe.mjs +0 -115
  155. package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +0 -48
  156. package/esm2022/lib/provide-design-angular-kit.mjs +0 -64
  157. package/esm2022/lib/services/notification/notification.service.mjs +0 -120
  158. package/esm2022/lib/utils/coercion.mjs +0 -18
  159. package/esm2022/lib/utils/date-utils.mjs +0 -162
  160. package/esm2022/lib/utils/file-utils.mjs +0 -73
  161. package/esm2022/lib/utils/regex.mjs +0 -35
  162. package/esm2022/lib/validators/it-validators.mjs +0 -161
  163. package/esm2022/public_api.mjs +0 -114
@@ -1,194 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { ItAbstractComponent } from '../../../abstracts/abstract.component';
3
- import { Modal } from 'bootstrap-italia';
4
- import { TranslateModule } from '@ngx-translate/core';
5
- import { inputToBoolean } from '../../../utils/coercion';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ngx-translate/core";
8
- /**
9
- * Modal windows
10
- * @description To show featured content, notifications to users, or personalized content.
11
- */
12
- export class ItModalComponent extends ItAbstractComponent {
13
- constructor() {
14
- super(...arguments);
15
- /**
16
- * Show/Hide close button on header
17
- * @default true
18
- */
19
- this.closeButton = true;
20
- /**
21
- * To have modals that appear with fades
22
- * @default true
23
- */
24
- this.fade = true;
25
- /**
26
- * Includes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn’t close the modal when clicked.
27
- * @default true
28
- */
29
- this.backdrop = true;
30
- /**
31
- * Puts the focus on the modal when initialized.
32
- * @default true
33
- */
34
- this.focus = true;
35
- /**
36
- * Closes the modal when escape key is pressed.
37
- * @default true
38
- */
39
- this.keyboard = true;
40
- /**
41
- * This event fires immediately when the instance method show is called.
42
- */
43
- this.showEvent = new EventEmitter();
44
- /**
45
- * This event fires when the modal has been made visible to the user (it will wait for CSS transitions to complete).
46
- */
47
- this.shownEvent = new EventEmitter();
48
- /**
49
- * This event is raised immediately when the instance method hide has been called.
50
- */
51
- this.hideEvent = new EventEmitter();
52
- /**
53
- * This event fires when the modal has finished hiding from the user (it will wait for CSS transitions to complete).
54
- */
55
- this.hiddenEvent = new EventEmitter();
56
- /**
57
- * This event is fired when the modal is displayed, its background is static and a click outside the modal or a press
58
- * of the esc key occurs and data-bs-keyboard is set to false.
59
- */
60
- this.hidePreventedEvent = new EventEmitter();
61
- }
62
- ngAfterViewInit() {
63
- super.ngAfterViewInit();
64
- this._renderer.removeAttribute(this._elementRef.nativeElement, 'title');
65
- if (this.modalElement) {
66
- const element = this.modalElement.nativeElement;
67
- this.modal = Modal.getOrCreateInstance(element, {
68
- ...this.options,
69
- backdrop: this.backdrop === 'static' ? 'static' : this.backdrop,
70
- focus: this.focus,
71
- keyboard: this.keyboard,
72
- });
73
- element.addEventListener('show.bs.modal', event => this.showEvent.emit(event));
74
- element.addEventListener('shown.bs.modal', event => this.shownEvent.emit(event));
75
- element.addEventListener('hide.bs.modal', event => this.hideEvent.emit(event));
76
- element.addEventListener('hidden.bs.modal', event => this.hiddenEvent.emit(event));
77
- element.addEventListener('hidePrevented.bs.modal', event => this.hidePreventedEvent.emit(event));
78
- }
79
- }
80
- get modalClass() {
81
- let modalClass = 'modal';
82
- if (this.fade) {
83
- modalClass += ` fade`;
84
- }
85
- if (this.alertModal) {
86
- modalClass += ` alert-modal`;
87
- }
88
- if (this.dialogLinkList) {
89
- modalClass += ` it-dialog-link-list`;
90
- }
91
- if (this.popconfirm) {
92
- modalClass += ` popconfirm-modal`;
93
- }
94
- if (this.scrollable) {
95
- modalClass += ` it-dialog-scrollable`;
96
- }
97
- return modalClass;
98
- }
99
- get dialogClass() {
100
- let dialogClass = 'modal-dialog';
101
- if (this.alignment) {
102
- dialogClass += ` modal-dialog-${this.alignment}`;
103
- }
104
- if (this.size) {
105
- dialogClass += ` modal-${this.size}`;
106
- }
107
- return dialogClass;
108
- }
109
- /**
110
- * Manually activate/deactivate a modal. Returns to the caller before the modal has actually been shown or hidden
111
- */
112
- toggle() {
113
- this.modal?.toggle();
114
- }
115
- /**
116
- * Manually open a modal. Returns to the caller before the modal has actually been displayed
117
- */
118
- show() {
119
- this.modal?.show();
120
- }
121
- /**
122
- * Manually hide a modal. Returns to the caller before the modal has actually been hidden
123
- */
124
- hide() {
125
- this.modal?.hide();
126
- }
127
- /**
128
- * Manually reposition the modal if the height of the modal changes when it is opened (in case a scroll bar appears).
129
- */
130
- handleUpdate() {
131
- this.modal?.handleUpdate();
132
- }
133
- /**
134
- * Destroys the modal of an element.
135
- */
136
- dispose() {
137
- this.modal?.dispose();
138
- }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItModalComponent, isStandalone: true, selector: "it-modal", inputs: { closeButton: ["closeButton", "closeButton", inputToBoolean], alertModal: ["alertModal", "alertModal", inputToBoolean], dialogLinkList: ["dialogLinkList", "dialogLinkList", inputToBoolean], popconfirm: ["popconfirm", "popconfirm", inputToBoolean], scrollable: ["scrollable", "scrollable", inputToBoolean], fade: ["fade", "fade", inputToBoolean], alignment: "alignment", size: "size", backdrop: "backdrop", focus: ["focus", "focus", inputToBoolean], keyboard: ["keyboard", "keyboard", inputToBoolean], footerShadow: ["footerShadow", "footerShadow", inputToBoolean], options: "options" }, outputs: { showEvent: "showEvent", shownEvent: "shownEvent", hideEvent: "hideEvent", hiddenEvent: "hiddenEvent", hidePreventedEvent: "hidePreventedEvent" }, viewQueries: [{ propertyName: "modalElement", first: true, predicate: ["modalElement"], descendants: true }], exportAs: ["itModal"], usesInheritance: true, ngImport: i0, template: "<div\n #modalElement\n [id]=\"id\"\n [class]=\"modalClass\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-hidden=\"true\"\n [attr.aria-labelledby]=\"id + '-title'\"\n [attr.aria-describedby]=\"id + '-description'\">\n <div [class]=\"dialogClass\">\n <div class=\"modal-content\" role=\"document\">\n <div class=\"modal-header\">\n <ng-content select=\"[beforeTitle]\"></ng-content>\n\n <h2 class=\"modal-title h5\" id=\"{{ id }}-title\">\n <ng-content select=\"[modalTitle]\"></ng-content>\n </h2>\n\n @if (closeButton) {\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" [attr.aria-label]=\"'it.core.close-modal' | translate\"></button>\n }\n </div>\n\n <div class=\"modal-body\">\n <div id=\"{{ id }}-description\">\n <ng-content select=\"[description]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"modal-footer\" [class.modal-footer-shadow]=\"footerShadow\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modal-footer:empty{display:none}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItModalComponent, decorators: [{
143
- type: Component,
144
- args: [{ standalone: true, selector: 'it-modal', exportAs: 'itModal', changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule], template: "<div\n #modalElement\n [id]=\"id\"\n [class]=\"modalClass\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-hidden=\"true\"\n [attr.aria-labelledby]=\"id + '-title'\"\n [attr.aria-describedby]=\"id + '-description'\">\n <div [class]=\"dialogClass\">\n <div class=\"modal-content\" role=\"document\">\n <div class=\"modal-header\">\n <ng-content select=\"[beforeTitle]\"></ng-content>\n\n <h2 class=\"modal-title h5\" id=\"{{ id }}-title\">\n <ng-content select=\"[modalTitle]\"></ng-content>\n </h2>\n\n @if (closeButton) {\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" [attr.aria-label]=\"'it.core.close-modal' | translate\"></button>\n }\n </div>\n\n <div class=\"modal-body\">\n <div id=\"{{ id }}-description\">\n <ng-content select=\"[description]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n\n <div class=\"modal-footer\" [class.modal-footer-shadow]=\"footerShadow\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modal-footer:empty{display:none}\n"] }]
145
- }], propDecorators: { closeButton: [{
146
- type: Input,
147
- args: [{ transform: inputToBoolean }]
148
- }], alertModal: [{
149
- type: Input,
150
- args: [{ transform: inputToBoolean }]
151
- }], dialogLinkList: [{
152
- type: Input,
153
- args: [{ transform: inputToBoolean }]
154
- }], popconfirm: [{
155
- type: Input,
156
- args: [{ transform: inputToBoolean }]
157
- }], scrollable: [{
158
- type: Input,
159
- args: [{ transform: inputToBoolean }]
160
- }], fade: [{
161
- type: Input,
162
- args: [{ transform: inputToBoolean }]
163
- }], alignment: [{
164
- type: Input
165
- }], size: [{
166
- type: Input
167
- }], backdrop: [{
168
- type: Input
169
- }], focus: [{
170
- type: Input,
171
- args: [{ transform: inputToBoolean }]
172
- }], keyboard: [{
173
- type: Input,
174
- args: [{ transform: inputToBoolean }]
175
- }], footerShadow: [{
176
- type: Input,
177
- args: [{ transform: inputToBoolean }]
178
- }], options: [{
179
- type: Input
180
- }], showEvent: [{
181
- type: Output
182
- }], shownEvent: [{
183
- type: Output
184
- }], hideEvent: [{
185
- type: Output
186
- }], hiddenEvent: [{
187
- type: Output
188
- }], hidePreventedEvent: [{
189
- type: Output
190
- }], modalElement: [{
191
- type: ViewChild,
192
- args: ['modalElement', { static: false }]
193
- }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb3JlL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUV6RDs7O0dBR0c7QUFVSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBVHpEOztRQVVFOzs7V0FHRztRQUNtQyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQTBCbEU7OztXQUdHO1FBQ21DLFNBQUksR0FBYSxJQUFJLENBQUM7UUFpQjVEOzs7V0FHRztRQUNNLGFBQVEsR0FBdUIsSUFBSSxDQUFDO1FBRTdDOzs7V0FHRztRQUNtQyxVQUFLLEdBQVksSUFBSSxDQUFDO1FBRTVEOzs7V0FHRztRQUNtQyxhQUFRLEdBQVksSUFBSSxDQUFDO1FBYS9EOztXQUVHO1FBQ2MsY0FBUyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXJFOztXQUVHO1FBQ2MsZUFBVSxHQUF3QixJQUFJLFlBQVks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L0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsVUFBVTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBTUUsSUFBSTtzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUU7Z0JBUzNCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTWdDLEtBQUs7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLFFBQVE7c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLFlBQVk7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQUszQixPQUFPO3NCQUFmLEtBQUs7Z0JBS1csU0FBUztzQkFBekIsTUFBTTtnQkFLVSxVQUFVO3NCQUExQixNQUFNO2dCQUtVLFNBQVM7c0JBQXpCLE1BQU07Z0JBS1UsV0FBVztzQkFBM0IsTUFBTTtnQkFNVSxrQkFBa0I7c0JBQWxDLE1BQU07Z0JBSStDLFlBQVk7c0JBQWpFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNb2RhbCBhcyBCU01vZGFsIH0gZnJvbSAnYm9vdHN0cmFwJztcbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG4vKipcbiAqIE1vZGFsIHdpbmRvd3NcbiAqIEBkZXNjcmlwdGlvbiBUbyBzaG93IGZlYXR1cmVkIGNvbnRlbnQsIG5vdGlmaWNhdGlvbnMgdG8gdXNlcnMsIG9yIHBlcnNvbmFsaXplZCBjb250ZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnaXRNb2RhbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRNb2RhbENvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIFNob3cvSGlkZSBjbG9zZSBidXR0b24gb24gaGVhZGVyXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgY2xvc2VCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUbyBjb3JyZWN0bHkgZm9ybWF0IHRoZSBjb250ZW50cyBvZiB0aGUgbW9kYWwgd2l0aCBpY29uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGFsZXJ0TW9kYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUbyBjb3JyZWN0bHkgZm9ybWF0IHRoZSBjb250ZW50cyBvZiB0aGUgbW9kYWwgd2l0aCBMaW5rIExpc3RcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgZGlhbG9nTGlua0xpc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2RhbCB0eXBlIFBvcGNvbmZpcm0gY2FuIGJlIHVzZWQgZm9yIHNob3J0IGNvbmZpcm1hdGlvbiBtZXNzYWdlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgcG9wY29uZmlybT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gY2hvb3NlIHRvIHVzZSBhIHNjcm9sbCBpbnNpZGUgdGhlIG1vZGFsLCBrZWVwaW5nIHRoZSBoZWFkZXIgYW5kIGZvb3RlciBvZiB0aGUgbW9kYWwgYWx3YXlzIHZpc2libGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgc2Nyb2xsYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvIGhhdmUgbW9kYWxzIHRoYXQgYXBwZWFyIHdpdGggZmFkZXNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBmYWRlPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE1vZGFsIGFsaWdubWVudFxuICAgKiAtIDxiPmNlbnRlcmVkPC9iPjogdG8gdmVydGljYWxseSBjZW50ZXIgdGhlIG1vZGFsXG4gICAqIC0gPGI+bGVmdDwvYj46IHRvIGxlZnQtYWxpZ24gdGhlIG1vZGFsXG4gICAqIC0gPGI+cmlnaHQ8L2I+OiB0byByaWdodC1hbGlnbiB0aGUgbW9kYWxcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBhbGlnbm1lbnQ6ICdjZW50ZXJlZCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kYWwgc2l6ZVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbGcnIHwgJ3hsJyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5jbHVkZXMgYSBtb2RhbC1iYWNrZHJvcCBlbGVtZW50LiBBbHRlcm5hdGl2ZWx5LCBzcGVjaWZ5IHN0YXRpYyBmb3IgYSBiYWNrZHJvcCB3aGljaCBkb2VzbuKAmXQgY2xvc2UgdGhlIG1vZGFsIHdoZW4gY2xpY2tlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KCkgYmFja2Ryb3A6ICdzdGF0aWMnIHwgYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFB1dHMgdGhlIGZvY3VzIG9uIHRoZSBtb2RhbCB3aGVuIGluaXRpYWxpemVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbCB3aGVuIGVzY2FwZSBrZXkgaXMgcHJlc3NlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBrZXlib2FyZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRvIGJldHRlciBkaXN0aW5ndWlzaCB0aGUgZm9vdGVyIGVsZW1lbnQgd2l0aCBhIHNoYWRvd1xuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBmb290ZXJTaGFkb3c/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2RhbCBvcHRpb25zXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zPzogUGFydGlhbDxCU01vZGFsLk9wdGlvbnM+O1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGZpcmVzIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGluc3RhbmNlIG1ldGhvZCBzaG93IGlzIGNhbGxlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2hvd0V2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGZpcmVzIHdoZW4gdGhlIG1vZGFsIGhhcyBiZWVuIG1hZGUgdmlzaWJsZSB0byB0aGUgdXNlciAoaXQgd2lsbCB3YWl0IGZvciBDU1MgdHJhbnNpdGlvbnMgdG8gY29tcGxldGUpLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBzaG93bkV2ZW50OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIHJhaXNlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBpbnN0YW5jZSBtZXRob2QgaGlkZSBoYXMgYmVlbiBjYWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIGhpZGVFdmVudDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBldmVudCBmaXJlcyB3aGVuIHRoZSBtb2RhbCBoYXMgZmluaXNoZWQgaGlkaW5nIGZyb20gdGhlIHVzZXIgKGl0IHdpbGwgd2FpdCBmb3IgQ1NTIHRyYW5zaXRpb25zIHRvIGNvbXBsZXRlKS5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgaGlkZGVuRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgbW9kYWwgaXMgZGlzcGxheWVkLCBpdHMgYmFja2dyb3VuZCBpcyBzdGF0aWMgYW5kIGEgY2xpY2sgb3V0c2lkZSB0aGUgbW9kYWwgb3IgYSBwcmVzc1xuICAgKiBvZiB0aGUgZXNjIGtleSBvY2N1cnMgYW5kIGRhdGEtYnMta2V5Ym9hcmQgaXMgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBoaWRlUHJldmVudGVkRXZlbnQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBtb2RhbD86IE1vZGFsO1xuXG4gIEBWaWV3Q2hpbGQoJ21vZGFsRWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIG1vZGFsRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndGl0bGUnKTtcblxuICAgIGlmICh0aGlzLm1vZGFsRWxlbWVudCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMubW9kYWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0aGlzLm1vZGFsID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCB7XG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgYmFja2Ryb3A6IHRoaXMuYmFja2Ryb3AgPT09ICdzdGF0aWMnID8gJ3N0YXRpYycgOiB0aGlzLmJhY2tkcm9wLFxuICAgICAgICBmb2N1czogdGhpcy5mb2N1cyxcbiAgICAgICAga2V5Ym9hcmQ6IHRoaXMua2V5Ym9hcmQsXG4gICAgICB9KTtcblxuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzaG93LmJzLm1vZGFsJywgZXZlbnQgPT4gdGhpcy5zaG93RXZlbnQuZW1pdChldmVudCkpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzaG93bi5icy5tb2RhbCcsIGV2ZW50ID0+IHRoaXMuc2hvd25FdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2hpZGUuYnMubW9kYWwnLCBldmVudCA9PiB0aGlzLmhpZGVFdmVudC5lbWl0KGV2ZW50KSk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2hpZGRlbi5icy5tb2RhbCcsIGV2ZW50ID0+IHRoaXMuaGlkZGVuRXZlbnQuZW1pdChldmVudCkpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdoaWRlUHJldmVudGVkLmJzLm1vZGFsJywgZXZlbnQgPT4gdGhpcy5oaWRlUHJldmVudGVkRXZlbnQuZW1pdChldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgbW9kYWxDbGFzcygpOiBzdHJpbmcge1xuICAgIGxldCBtb2RhbENsYXNzID0gJ21vZGFsJztcbiAgICBpZiAodGhpcy5mYWRlKSB7XG4gICAgICBtb2RhbENsYXNzICs9IGAgZmFkZWA7XG4gICAgfVxuICAgIGlmICh0aGlzLmFsZXJ0TW9kYWwpIHtcbiAgICAgIG1vZGFsQ2xhc3MgKz0gYCBhbGVydC1tb2RhbGA7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpYWxvZ0xpbmtMaXN0KSB7XG4gICAgICBtb2RhbENsYXNzICs9IGAgaXQtZGlhbG9nLWxpbmstbGlzdGA7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcGNvbmZpcm0pIHtcbiAgICAgIG1vZGFsQ2xhc3MgKz0gYCBwb3Bjb25maXJtLW1vZGFsYDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2Nyb2xsYWJsZSkge1xuICAgICAgbW9kYWxDbGFzcyArPSBgIGl0LWRpYWxvZy1zY3JvbGxhYmxlYDtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsQ2xhc3M7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRpYWxvZ0NsYXNzKCk6IHN0cmluZyB7XG4gICAgbGV0IGRpYWxvZ0NsYXNzID0gJ21vZGFsLWRpYWxvZyc7XG4gICAgaWYgKHRoaXMuYWxpZ25tZW50KSB7XG4gICAgICBkaWFsb2dDbGFzcyArPSBgIG1vZGFsLWRpYWxvZy0ke3RoaXMuYWxpZ25tZW50fWA7XG4gICAgfVxuICAgIGlmICh0aGlzLnNpemUpIHtcbiAgICAgIGRpYWxvZ0NsYXNzICs9IGAgbW9kYWwtJHt0aGlzLnNpemV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWxvZ0NsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFjdGl2YXRlL2RlYWN0aXZhdGUgYSBtb2RhbC4gUmV0dXJucyB0byB0aGUgY2FsbGVyIGJlZm9yZSB0aGUgbW9kYWwgaGFzIGFjdHVhbGx5IGJlZW4gc2hvd24gb3IgaGlkZGVuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWw/LnRvZ2dsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IG9wZW4gYSBtb2RhbC4gUmV0dXJucyB0byB0aGUgY2FsbGVyIGJlZm9yZSB0aGUgbW9kYWwgaGFzIGFjdHVhbGx5IGJlZW4gZGlzcGxheWVkXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsPy5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgaGlkZSBhIG1vZGFsLiBSZXR1cm5zIHRvIHRoZSBjYWxsZXIgYmVmb3JlIHRoZSBtb2RhbCBoYXMgYWN0dWFsbHkgYmVlbiBoaWRkZW5cbiAgICovXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWw/LmhpZGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW51YWxseSByZXBvc2l0aW9uIHRoZSBtb2RhbCBpZiB0aGUgaGVpZ2h0IG9mIHRoZSBtb2RhbCBjaGFuZ2VzIHdoZW4gaXQgaXMgb3BlbmVkIChpbiBjYXNlIGEgc2Nyb2xsIGJhciBhcHBlYXJzKS5cbiAgICovXG4gIHB1YmxpYyBoYW5kbGVVcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbD8uaGFuZGxlVXBkYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgdGhlIG1vZGFsIG9mIGFuIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsPy5kaXNwb3NlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI21vZGFsRWxlbWVudFxuICBbaWRdPVwiaWRcIlxuICBbY2xhc3NdPVwibW9kYWxDbGFzc1wiXG4gIHRhYmluZGV4PVwiLTFcIlxuICByb2xlPVwiZGlhbG9nXCJcbiAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkICsgJy10aXRsZSdcIlxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkICsgJy1kZXNjcmlwdGlvbidcIj5cbiAgPGRpdiBbY2xhc3NdPVwiZGlhbG9nQ2xhc3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmVmb3JlVGl0bGVdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxoMiBjbGFzcz1cIm1vZGFsLXRpdGxlIGg1XCIgaWQ9XCJ7eyBpZCB9fS10aXRsZVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttb2RhbFRpdGxlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9oMj5cblxuICAgICAgICBAaWYgKGNsb3NlQnV0dG9uKSB7XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2l0LmNvcmUuY2xvc2UtbW9kYWwnIHwgdHJhbnNsYXRlXCI+PC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGlkPVwie3sgaWQgfX0tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZGVzY3JpcHRpb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIiBbY2xhc3MubW9kYWwtZm9vdGVyLXNoYWRvd109XCJmb290ZXJTaGFkb3dcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,111 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { NotificationType } from '../../../interfaces/core';
3
- import { Notification as BSNotification } from 'bootstrap-italia';
4
- import { ItIconComponent } from '../../utils/icon/icon.component';
5
- import { TranslateModule } from '@ngx-translate/core';
6
- import { inputToBoolean } from '../../../utils/coercion';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../../services/notification/notification.service";
9
- import * as i2 from "@ngx-translate/core";
10
- export class ItNotificationsComponent {
11
- constructor(_changeDetectorRef, _notificationService) {
12
- this._changeDetectorRef = _changeDetectorRef;
13
- this._notificationService = _notificationService;
14
- /**
15
- * Default notifications duration (milliseconds)
16
- * @default 8000
17
- */
18
- this.duration = 8000;
19
- /**
20
- * Default notifications is dismissible
21
- * @default true
22
- */
23
- this.dismissible = true;
24
- this.notificationCount = 0;
25
- this.notifications = [];
26
- this.subscription = this._notificationService.onNotification().subscribe(notification => {
27
- if (!notification.duration) {
28
- notification.duration = this.duration; // Add duration if not is set
29
- }
30
- if (!notification.position && this.position) {
31
- notification.position = this.position; // Add position if not is set
32
- }
33
- if (notification.dismissible === undefined && this.dismissible) {
34
- notification.dismissible = true; // Add dismissible if not is set
35
- }
36
- if (!notification.icon) {
37
- notification.icon = this.getNotificationIcon(notification);
38
- }
39
- const newNotification = {
40
- ...notification,
41
- id: `${notification.type}-${this.notificationCount++}-notification`,
42
- };
43
- this.notifications.push(newNotification);
44
- this._changeDetectorRef.detectChanges();
45
- setTimeout(() => {
46
- // Show the notification
47
- new BSNotification(document.getElementById(newNotification.id), {
48
- timeout: notification.duration,
49
- }).show();
50
- // Clear notification after the duration
51
- setTimeout(() => {
52
- const index = this.notifications.findIndex(n => n.id === newNotification.id);
53
- if (index > -1) {
54
- this.notifications.splice(index, 1);
55
- if (!this.notifications.length) {
56
- this.notificationCount = 0;
57
- }
58
- this._changeDetectorRef.detectChanges();
59
- }
60
- }, notification.duration);
61
- }, 200);
62
- });
63
- }
64
- ngOnDestroy() {
65
- this.subscription.unsubscribe();
66
- }
67
- get NotificationType() {
68
- return NotificationType;
69
- }
70
- /**
71
- * Hide the notification
72
- * @param id
73
- */
74
- hideNotification(id) {
75
- BSNotification.getInstance(document.getElementById(id))?.hide();
76
- }
77
- /**
78
- * Retrieve the icon name by notification type
79
- * @param notification the notification
80
- * @protected
81
- */
82
- getNotificationIcon(notification) {
83
- switch (notification.type) {
84
- case NotificationType.Success:
85
- return 'check-circle';
86
- case NotificationType.Error:
87
- return 'close-circle';
88
- case NotificationType.Warning:
89
- return 'error';
90
- case NotificationType.Info:
91
- return 'info-circle';
92
- case NotificationType.Standard:
93
- default:
94
- return undefined;
95
- }
96
- }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNotificationsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ItNotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
98
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItNotificationsComponent, isStandalone: true, selector: "it-notifications", inputs: { duration: "duration", position: "position", dismissible: ["dismissible", "dismissible", inputToBoolean] }, ngImport: i0, template: "@for (notification of notifications; track notification.id) {\n <div\n [id]=\"notification.id\"\n class=\"notification {{ notification.position }} {{ notification.type }}\"\n [class.with-icon]=\"!!notification.icon\"\n [class.dismissable]=\"notification.dismissible\"\n role=\"alert\"\n [attr.aria-labelledby]=\"notification.id + '-title'\">\n <h2 [id]=\"notification.id + '-title'\" class=\"h5\">\n @if (notification.icon) {\n <it-icon [name]=\"notification.icon\"></it-icon>\n }\n <ng-container>{{ notification.title }}</ng-container>\n </h2>\n @if (notification.message) {\n <p>{{ notification.message }}</p>\n }\n @if (notification.dismissible) {\n <button type=\"button\" class=\"btn notification-close\" (click)=\"hideNotification(notification.id)\">\n <it-icon name=\"close\"></it-icon>\n <span class=\"visually-hidden\">{{ 'it.core.close-notification' | translate: { title: notification.title } }}</span>\n </button>\n }\n </div>\n}\n", styles: [".notification{z-index:10000}\n"], dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "title", "labelWaria"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNotificationsComponent, decorators: [{
101
- type: Component,
102
- args: [{ standalone: true, selector: 'it-notifications', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, TranslateModule], template: "@for (notification of notifications; track notification.id) {\n <div\n [id]=\"notification.id\"\n class=\"notification {{ notification.position }} {{ notification.type }}\"\n [class.with-icon]=\"!!notification.icon\"\n [class.dismissable]=\"notification.dismissible\"\n role=\"alert\"\n [attr.aria-labelledby]=\"notification.id + '-title'\">\n <h2 [id]=\"notification.id + '-title'\" class=\"h5\">\n @if (notification.icon) {\n <it-icon [name]=\"notification.icon\"></it-icon>\n }\n <ng-container>{{ notification.title }}</ng-container>\n </h2>\n @if (notification.message) {\n <p>{{ notification.message }}</p>\n }\n @if (notification.dismissible) {\n <button type=\"button\" class=\"btn notification-close\" (click)=\"hideNotification(notification.id)\">\n <it-icon name=\"close\"></it-icon>\n <span class=\"visually-hidden\">{{ 'it.core.close-notification' | translate: { title: notification.title } }}</span>\n </button>\n }\n </div>\n}\n", styles: [".notification{z-index:10000}\n"] }]
103
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ItNotificationService }], propDecorators: { duration: [{
104
- type: Input
105
- }], position: [{
106
- type: Input
107
- }], dismissible: [{
108
- type: Input,
109
- args: [{ transform: inputToBoolean }]
110
- }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBc0MsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxJQUFJLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBVXpELE1BQU0sT0FBTyx3QkFBd0I7SUFzQm5DLFlBQ21CLGtCQUFxQyxFQUNyQyxvQkFBMkM7UUFEM0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXVCO1FBdkI5RDs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsSUFBSSxDQUFDO1FBT2pDOzs7V0FHRztRQUNtQyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUcxRCxzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBeUMsRUFBRSxDQUFDO1FBTWpFLElBQUksQ0FBQyxZ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Y0FBYyxDQUFDO1lBQ3hCLEtBQUssZ0JBQWdCLENBQUMsS0FBSztnQkFDekIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUMzQixPQUFPLE9BQU8sQ0FBQztZQUNqQixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3hCLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLEtBQUssZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQy9CO2dCQUNFLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDOzhHQXZHVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixzSkFnQmYsY0FBYyw2QkNsQ3BDLHlnQ0F5QkEsd0ZEVFksZUFBZSxtSUFBRSxlQUFlOzsyRkFFL0Isd0JBQXdCO2tCQVJwQyxTQUFTO2lDQUNJLElBQUksWUFDTixrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUM7MEhBT2xDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFNZ0MsV0FBVztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJdE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uLCBOb3RpZmljYXRpb25Qb3NpdGlvbiwgTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvY29yZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24gYXMgQlNOb3RpZmljYXRpb24gfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9pY29uJztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtbm90aWZpY2F0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9ucy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0l0SWNvbkNvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXROb3RpZmljYXRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIERlZmF1bHQgbm90aWZpY2F0aW9ucyBkdXJhdGlvbiAobWlsbGlzZWNvbmRzKVxuICAgKiBAZGVmYXVsdCA4MDAwXG4gICAqL1xuICBASW5wdXQoKSBkdXJhdGlvbjogbnVtYmVyID0gODAwMDtcblxuICAvKipcbiAgICogRGVmYXVsdCBub3RpZmljYXRpb25zIHBvc2l0aW9uXG4gICAqL1xuICBASW5wdXQoKSBwb3NpdGlvbjogTm90aWZpY2F0aW9uUG9zaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm90aWZpY2F0aW9ucyBpcyBkaXNtaXNzaWJsZVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGRpc21pc3NpYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG5vdGlmaWNhdGlvbkNvdW50OiBudW1iZXIgPSAwO1xuICBwcm90ZWN0ZWQgbm90aWZpY2F0aW9uczogQXJyYXk8Tm90aWZpY2F0aW9uICYgeyBpZDogc3RyaW5nIH0+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvblNlcnZpY2U6IEl0Tm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uub25Ob3RpZmljYXRpb24oKS5zdWJzY3JpYmUobm90aWZpY2F0aW9uID0+IHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmR1cmF0aW9uKSB7XG4gICAgICAgIG5vdGlmaWNhdGlvbi5kdXJhdGlvbiA9IHRoaXMuZHVyYXRpb247IC8vIEFkZCBkdXJhdGlvbiBpZiBub3QgaXMgc2V0XG4gICAgICB9XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbi5wb3NpdGlvbiAmJiB0aGlzLnBvc2l0aW9uKSB7XG4gICAgICAgIG5vdGlmaWNhdGlvbi5wb3NpdGlvbiA9IHRoaXMucG9zaXRpb247IC8vIEFkZCBwb3NpdGlvbiBpZiBub3QgaXMgc2V0XG4gICAgICB9XG4gICAgICBpZiAobm90aWZpY2F0aW9uLmRpc21pc3NpYmxlID09PSB1bmRlZmluZWQgJiYgdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICBub3RpZmljYXRpb24uZGlzbWlzc2libGUgPSB0cnVlOyAvLyBBZGQgZGlzbWlzc2libGUgaWYgbm90IGlzIHNldFxuICAgICAgfVxuICAgICAgaWYgKCFub3RpZmljYXRpb24uaWNvbikge1xuICAgICAgICBub3RpZmljYXRpb24uaWNvbiA9IHRoaXMuZ2V0Tm90aWZpY2F0aW9uSWNvbihub3RpZmljYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdOb3RpZmljYXRpb24gPSB7XG4gICAgICAgIC4uLm5vdGlmaWNhdGlvbixcbiAgICAgICAgaWQ6IGAke25vdGlmaWNhdGlvbi50eXBlfS0ke3RoaXMubm90aWZpY2F0aW9uQ291bnQrK30tbm90aWZpY2F0aW9uYCxcbiAgICAgIH07XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMucHVzaChuZXdOb3RpZmljYXRpb24pO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gU2hvdyB0aGUgbm90aWZpY2F0aW9uXG4gICAgICAgIG5ldyBCU05vdGlmaWNhdGlvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdOb3RpZmljYXRpb24uaWQpISwge1xuICAgICAgICAgIHRpbWVvdXQ6IG5vdGlmaWNhdGlvbi5kdXJhdGlvbixcbiAgICAgICAgfSkuc2hvdygpO1xuXG4gICAgICAgIC8vIENsZWFyIG5vdGlmaWNhdGlvbiBhZnRlciB0aGUgZHVyYXRpb25cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZEluZGV4KG4gPT4gbi5pZCA9PT0gbmV3Tm90aWZpY2F0aW9uLmlkKTtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm90aWZpY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Db3VudCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBub3RpZmljYXRpb24uZHVyYXRpb24pO1xuICAgICAgfSwgMjAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IE5vdGlmaWNhdGlvblR5cGUoKTogdHlwZW9mIE5vdGlmaWNhdGlvblR5cGUge1xuICAgIHJldHVybiBOb3RpZmljYXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhpZGUgdGhlIG5vdGlmaWNhdGlvblxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIHByb3RlY3RlZCBoaWRlTm90aWZpY2F0aW9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBCU05vdGlmaWNhdGlvbi5nZXRJbnN0YW5jZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkhKT8uaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSBpY29uIG5hbWUgYnkgbm90aWZpY2F0aW9uIHR5cGVcbiAgICogQHBhcmFtIG5vdGlmaWNhdGlvbiB0aGUgbm90aWZpY2F0aW9uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByaXZhdGUgZ2V0Tm90aWZpY2F0aW9uSWNvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IEljb25OYW1lIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuU3VjY2VzczpcbiAgICAgICAgcmV0dXJuICdjaGVjay1jaXJjbGUnO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkVycm9yOlxuICAgICAgICByZXR1cm4gJ2Nsb3NlLWNpcmNsZSc7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuV2FybmluZzpcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuSW5mbzpcbiAgICAgICAgcmV0dXJuICdpbmZvLWNpcmNsZSc7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuU3RhbmRhcmQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIiwiQGZvciAobm90aWZpY2F0aW9uIG9mIG5vdGlmaWNhdGlvbnM7IHRyYWNrIG5vdGlmaWNhdGlvbi5pZCkge1xuICA8ZGl2XG4gICAgW2lkXT1cIm5vdGlmaWNhdGlvbi5pZFwiXG4gICAgY2xhc3M9XCJub3RpZmljYXRpb24ge3sgbm90aWZpY2F0aW9uLnBvc2l0aW9uIH19IHt7IG5vdGlmaWNhdGlvbi50eXBlIH19XCJcbiAgICBbY2xhc3Mud2l0aC1pY29uXT1cIiEhbm90aWZpY2F0aW9uLmljb25cIlxuICAgIFtjbGFzcy5kaXNtaXNzYWJsZV09XCJub3RpZmljYXRpb24uZGlzbWlzc2libGVcIlxuICAgIHJvbGU9XCJhbGVydFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIm5vdGlmaWNhdGlvbi5pZCArICctdGl0bGUnXCI+XG4gICAgPGgyIFtpZF09XCJub3RpZmljYXRpb24uaWQgKyAnLXRpdGxlJ1wiIGNsYXNzPVwiaDVcIj5cbiAgICAgIEBpZiAobm90aWZpY2F0aW9uLmljb24pIHtcbiAgICAgICAgPGl0LWljb24gW25hbWVdPVwibm90aWZpY2F0aW9uLmljb25cIj48L2l0LWljb24+XG4gICAgICB9XG4gICAgICA8bmctY29udGFpbmVyPnt7IG5vdGlmaWNhdGlvbi50aXRsZSB9fTwvbmctY29udGFpbmVyPlxuICAgIDwvaDI+XG4gICAgQGlmIChub3RpZmljYXRpb24ubWVzc2FnZSkge1xuICAgICAgPHA+e3sgbm90aWZpY2F0aW9uLm1lc3NhZ2UgfX08L3A+XG4gICAgfVxuICAgIEBpZiAobm90aWZpY2F0aW9uLmRpc21pc3NpYmxlKSB7XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBub3RpZmljYXRpb24tY2xvc2VcIiAoY2xpY2spPVwiaGlkZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWQpXCI+XG4gICAgICAgIDxpdC1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaXQtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyAnaXQuY29yZS5jbG9zZS1ub3RpZmljYXRpb24nIHwgdHJhbnNsYXRlOiB7IHRpdGxlOiBub3RpZmljYXRpb24udGl0bGUgfSB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=
@@ -1,130 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
3
- import { debounceTime, distinctUntilChanged, filter } from 'rxjs';
4
- import { LowerCasePipe } from '@angular/common';
5
- import { ItIconComponent } from '../../utils/icon/icon.component';
6
- import { TranslateModule } from '@ngx-translate/core';
7
- import { ItDropdownModule } from '../dropdown/dropdown.module';
8
- import { ItInputComponent } from '../../form/input/input.component';
9
- import { inputToBoolean } from '../../../utils/coercion';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@ngx-translate/core";
12
- import * as i2 from "../dropdown/dropdown/dropdown.component";
13
- import * as i3 from "../dropdown/dropdown-item/dropdown-item.component";
14
- import * as i4 from "@angular/forms";
15
- export class ItPaginationComponent {
16
- constructor() {
17
- /**
18
- * Number of pages closest to the current one to display
19
- * @default 5
20
- */
21
- this.visiblePages = 5;
22
- /**
23
- * Available Changer values
24
- * @default [10, 25, 50, 100]
25
- */
26
- this.changerValues = [10, 25, 50, 100];
27
- /**
28
- * Fired when page is changed. Emit the new index of page
29
- */
30
- this.pageEvent = new EventEmitter();
31
- /**
32
- * Fired when changer is changed. Emit the new changer value
33
- */
34
- this.changerEvent = new EventEmitter();
35
- /**
36
- * The pages
37
- * @protected
38
- */
39
- this.pages = [];
40
- /**
41
- * Jump to page input
42
- * @protected
43
- */
44
- this.jumpToPage = new FormControl(null);
45
- this.jumpToPage.valueChanges
46
- .pipe(debounceTime(300), // Delay filter data after time span has passed without another source emission
47
- distinctUntilChanged(), filter(value => !!value && this.jumpToPage.valid))
48
- .subscribe(value => {
49
- this.pageEvent.emit(value - 1);
50
- });
51
- }
52
- ngOnChanges(changes) {
53
- this.pages = this.calculatePages();
54
- if (changes['currentPage']) {
55
- this.jumpToPage.setValue(null, { emitEvent: false });
56
- }
57
- }
58
- /**
59
- * Create array to generate pagination of `visiblePages` element
60
- */
61
- calculatePages() {
62
- if (this.simpleMode) {
63
- return [this.currentPage];
64
- }
65
- const length = this.pageNumbers > this.visiblePages ? this.visiblePages : this.pageNumbers;
66
- const halfVisiblePages = Math.floor(this.visiblePages / 2);
67
- let start = this.currentPage > halfVisiblePages && this.pageNumbers > this.visiblePages ? this.currentPage - halfVisiblePages + 1 : 1;
68
- if (this.pageNumbers > this.visiblePages) {
69
- if (this.currentPage + 1 >= this.pageNumbers) {
70
- start -= halfVisiblePages;
71
- }
72
- else if (this.currentPage >= this.pageNumbers - halfVisiblePages) {
73
- start -= this.pageNumbers - (this.currentPage + 1);
74
- }
75
- }
76
- return Array.from({ length }, (_, i) => i + start);
77
- }
78
- /**
79
- * On click page change
80
- * @param event click event
81
- * @param newPage the new page of table
82
- */
83
- pageChange(event, newPage) {
84
- event.preventDefault();
85
- this.pageEvent.emit(newPage - 1); // emit new page index
86
- }
87
- /**
88
- * On click changer
89
- * @param event click event
90
- * @param value the new changer value
91
- */
92
- changerChange(event, value) {
93
- event.preventDefault();
94
- this.changerEvent.emit(value); // emit new changer value
95
- }
96
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItPaginationComponent, isStandalone: true, selector: "it-pagination", inputs: { currentPage: "currentPage", pageNumbers: "pageNumbers", visiblePages: "visiblePages", alignment: "alignment", simpleMode: ["simpleMode", "simpleMode", inputToBoolean], textLinks: ["textLinks", "textLinks", inputToBoolean], currentChanger: "currentChanger", changerValues: "changerValues", showJumpToPage: ["showJumpToPage", "showJumpToPage", inputToBoolean] }, outputs: { pageEvent: "pageEvent", changerEvent: "changerEvent" }, usesOnChanges: true, ngImport: i0, template: "<nav\n class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment === 'center'\"\n [class.justify-content-end]=\"alignment === 'end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n @if (pages.length) {\n <ul class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n @if (!textLinks) {\n <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n }\n <span class=\"visually-hidden\">\n {{ (textLinks ? 'it.core.page' : 'it.core.previous-page') | translate }}\n </span>\n @if (textLinks) {\n {{ 'it.core.previous' | translate }}\n }\n </a>\n </li>\n @if (simpleMode) {\n <li class=\"page-item\">\n <span class=\"page-link\" aria-current=\"page\">{{ currentPage + 1 }}</span>\n </li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\">\n <span class=\"page-link\">{{ pageNumbers }}</span>\n </li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{ 'it.core.page-of-total' | translate: { page: currentPage + 1, total: pageNumbers } }}\n </a>\n </li>\n } @else {\n @if (pageNumbers > visiblePages && pages[0] >= 2) {\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n @if (pages[0] >= 3) {\n <li class=\"page-item\">\n <span class=\"page-link\">...</span>\n </li>\n }\n }\n @for (page of pages; track page) {\n <li class=\"page-item\">\n @if (page === currentPage + 1) {\n <a class=\"page-link\" aria-current=\"page\">\n <span class=\"d-inline-block d-sm-none\">{{ 'it.core.page' | translate }}</span> {{ page }}\n </a>\n } @else {\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{ page }}</a>\n }\n </li>\n }\n @if (pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers) {\n @if (pages[pages.length - 1] < pageNumbers - 1) {\n <li class=\"page-item\">\n <span class=\"page-link\">...</span>\n </li>\n }\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{ pageNumbers }}</a>\n </li>\n }\n }\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{ (textLinks ? 'it.core.page' : 'it.core.next-page') | translate }}\n </span>\n @if (textLinks) {\n {{ 'it.core.next' | translate }}\n } @else {\n <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n }\n </a>\n </li>\n </ul>\n }\n\n @if (currentChanger !== undefined) {\n <it-dropdown>\n <span button>{{ currentChanger }} / {{ 'it.core.page' | translate | lowercase }}</span>\n <ng-container list>\n @for (value of changerValues; track value) {\n <it-dropdown-item href=\"#\" externalLink=\"true\" (click)=\"changerChange($event, value)\">\n {{ value }} / {{ 'it.core.page' | translate | lowercase }}\n </it-dropdown-item>\n }\n </ng-container>\n </it-dropdown>\n }\n\n @if (showJumpToPage) {\n <it-input\n type=\"number\"\n [min]=\"1\"\n [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\"\n [formControl]=\"jumpToPage\"></it-input>\n }\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n", dependencies: [{ kind: "component", type: ItIconComponent, selector: "it-icon", inputs: ["name", "size", "color", "padded", "svgClass", "title", "labelWaria"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }, { kind: "ngmodule", type: ItDropdownModule }, { kind: "component", type: i2.ItDropdownComponent, selector: "it-dropdown", inputs: ["mode", "color", "direction", "fullWidth", "megamenu", "dark"], outputs: ["showEvent", "shownEvent", "hideEvent", "hiddenEvent"], exportAs: ["itDropdown"] }, { kind: "component", type: i3.ItDropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition", "mode"] }, { kind: "component", type: ItInputComponent, selector: "it-input", inputs: ["type", "placeholder", "description", "readonly", "maxDate", "minDate", "max", "min", "step", "currency", "percentage", "symbol", "adaptive", "autocomplete"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
- }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItPaginationComponent, decorators: [{
100
- type: Component,
101
- args: [{ standalone: true, selector: 'it-pagination', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ItIconComponent, TranslateModule, LowerCasePipe, ItDropdownModule, ItInputComponent, ReactiveFormsModule], template: "<nav\n class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment === 'center'\"\n [class.justify-content-end]=\"alignment === 'end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n @if (pages.length) {\n <ul class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n @if (!textLinks) {\n <it-icon name=\"chevron-left\" color=\"primary\"></it-icon>\n }\n <span class=\"visually-hidden\">\n {{ (textLinks ? 'it.core.page' : 'it.core.previous-page') | translate }}\n </span>\n @if (textLinks) {\n {{ 'it.core.previous' | translate }}\n }\n </a>\n </li>\n @if (simpleMode) {\n <li class=\"page-item\">\n <span class=\"page-link\" aria-current=\"page\">{{ currentPage + 1 }}</span>\n </li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\">\n <span class=\"page-link\">{{ pageNumbers }}</span>\n </li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{ 'it.core.page-of-total' | translate: { page: currentPage + 1, total: pageNumbers } }}\n </a>\n </li>\n } @else {\n @if (pageNumbers > visiblePages && pages[0] >= 2) {\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n @if (pages[0] >= 3) {\n <li class=\"page-item\">\n <span class=\"page-link\">...</span>\n </li>\n }\n }\n @for (page of pages; track page) {\n <li class=\"page-item\">\n @if (page === currentPage + 1) {\n <a class=\"page-link\" aria-current=\"page\">\n <span class=\"d-inline-block d-sm-none\">{{ 'it.core.page' | translate }}</span> {{ page }}\n </a>\n } @else {\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{ page }}</a>\n }\n </li>\n }\n @if (pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers) {\n @if (pages[pages.length - 1] < pageNumbers - 1) {\n <li class=\"page-item\">\n <span class=\"page-link\">...</span>\n </li>\n }\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{ pageNumbers }}</a>\n </li>\n }\n }\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"textLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{ (textLinks ? 'it.core.page' : 'it.core.next-page') | translate }}\n </span>\n @if (textLinks) {\n {{ 'it.core.next' | translate }}\n } @else {\n <it-icon name=\"chevron-right\" color=\"primary\"></it-icon>\n }\n </a>\n </li>\n </ul>\n }\n\n @if (currentChanger !== undefined) {\n <it-dropdown>\n <span button>{{ currentChanger }} / {{ 'it.core.page' | translate | lowercase }}</span>\n <ng-container list>\n @for (value of changerValues; track value) {\n <it-dropdown-item href=\"#\" externalLink=\"true\" (click)=\"changerChange($event, value)\">\n {{ value }} / {{ 'it.core.page' | translate | lowercase }}\n </it-dropdown-item>\n }\n </ng-container>\n </it-dropdown>\n }\n\n @if (showJumpToPage) {\n <it-input\n type=\"number\"\n [min]=\"1\"\n [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\"\n [formControl]=\"jumpToPage\"></it-input>\n }\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n" }]
102
- }], ctorParameters: () => [], propDecorators: { currentPage: [{
103
- type: Input,
104
- args: [{ required: true }]
105
- }], pageNumbers: [{
106
- type: Input,
107
- args: [{ required: true }]
108
- }], visiblePages: [{
109
- type: Input
110
- }], alignment: [{
111
- type: Input
112
- }], simpleMode: [{
113
- type: Input,
114
- args: [{ transform: inputToBoolean }]
115
- }], textLinks: [{
116
- type: Input,
117
- args: [{ transform: inputToBoolean }]
118
- }], currentChanger: [{
119
- type: Input
120
- }], changerValues: [{
121
- type: Input
122
- }], showJumpToPage: [{
123
- type: Input,
124
- args: [{ transform: inputToBoolean }]
125
- }], pageEvent: [{
126
- type: Output
127
- }], changerEvent: [{
128
- type: Output
129
- }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBU3pELE1BQU0sT0FBTyxxQkFBcUI7SUE2RWhDO1FBbEVBOzs7V0FHRztRQUNNLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBNEJsQzs7O1dBR0c7UUFDTSxrQkFBYSxHQUFrQixDQUFDLEVBQUUsRUFB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJdERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlJztcbmltcG9ydCB7IEl0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtJdEljb25Db21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZSwgTG93ZXJDYXNlUGlwZSwgSXREcm9wZG93bk1vZHVsZSwgSXRJbnB1dENvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEl0UGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBJbmRleCBvZiBwYWdlIChzdGFydCAwKVxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY3VycmVudFBhZ2UhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heCBudW1iZXIgb2YgcGFnZSAoY291bnRlcilcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHBhZ2VOdW1iZXJzITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGFnZXMgY2xvc2VzdCB0byB0aGUgY3VycmVudCBvbmUgdG8gZGlzcGxheVxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICBASW5wdXQoKSB2aXNpYmxlUGFnZXM6IG51bWJlciA9IDU7XG5cbiAgLyoqXG4gICAqIFBhZ2luYXRpb24gYWxpZ25tZW50IChqdXN0aWZ5LWNvbnRlbnQpXG4gICAqL1xuICBASW5wdXQoKSBhbGlnbm1lbnQ6ICdjZW50ZXInIHwgJ2VuZCcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEVuYWJsZS9EaXNhYmxlIHNpbXBsZSBtb2RlXG4gICAqIFBhZ2luYXRpb24gaW4gdGhlIFwiU2ltcGxlIG1vZGVcIiB2ZXJzaW9uIGlzIG9wdGltaXplZCBmb3IgbW9iaWxlIGRldmljZXMuXG4gICAqIEBkZWZhdWx0IGZhbHNlIC0gZGlzYWJsZWRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgc2ltcGxlTW9kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZS9EaXNhYmxlIHRleHQgbGlua3NcbiAgICogQ2hldnJvbiBpY29ucyB1c2VkIGFzIG5hdmlnYXRpb24gbGlua3MgYXJlIHJlcGxhY2VkIGJ5IHRleHQgbGlua3Mgc3VjaCBhcyDigJxwcmV2aW91c+KAnSBhbmQg4oCcbmV4dOKAnS5cbiAgICogQGRlZmF1bHQgZmFsc2UgLSBkaXNhYmxlZFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSB0ZXh0TGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlIG9mIENoYW5nZXJcbiAgICogSWYgaXMgc2V0IHNob3cgdGhlIENoYW5nZXJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gaGlkZSB0aGUgQ2hhbmdlclxuICAgKi9cbiAgQElucHV0KCkgY3VycmVudENoYW5nZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQXZhaWxhYmxlIENoYW5nZXIgdmFsdWVzXG4gICAqIEBkZWZhdWx0IFsxMCwgMjUsIDUwLCAxMDBdXG4gICAqL1xuICBASW5wdXQoKSBjaGFuZ2VyVmFsdWVzOiBBcnJheTxudW1iZXI+ID0gWzEwLCAyNSwgNTAsIDEwMF07XG5cbiAgLyoqXG4gICAqIEhpZGUvU2hvdyBcIkp1bXAgdG8gcGFnZVwiIGlucHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlIC0gaGlkZGVuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHNob3dKdW1wVG9QYWdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiBwYWdlIGlzIGNoYW5nZWQuIEVtaXQgdGhlIG5ldyBpbmRleCBvZiBwYWdlXG4gICAqL1xuICBAT3V0cHV0KCkgcGFnZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gY2hhbmdlciBpcyBjaGFuZ2VkLiBFbWl0IHRoZSBuZXcgY2hhbmdlciB2YWx1ZVxuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFnZXNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHBhZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG5cbiAgLyoqXG4gICAqIEp1bXAgdG8gcGFnZSBpbnB1dFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQganVtcFRvUGFnZTogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5qdW1wVG9QYWdlLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLCAvLyBEZWxheSBmaWx0ZXIgZGF0YSBhZnRlciB0aW1lIHNwYW4gaGFzIHBhc3NlZCB3aXRob3V0IGFub3RoZXIgc291cmNlIGVtaXNzaW9uXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlICYmIHRoaXMuanVtcFRvUGFnZS52YWxpZClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnBhZ2VFdmVudC5lbWl0KHZhbHVlISAtIDEpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlcyA9IHRoaXMuY2FsY3VsYXRlUGFnZXMoKTtcbiAgICBpZiAoY2hhbmdlc1snY3VycmVudFBhZ2UnXSkge1xuICAgICAgdGhpcy5qdW1wVG9QYWdlLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFycmF5IHRvIGdlbmVyYXRlIHBhZ2luYXRpb24gb2YgYHZpc2libGVQYWdlc2AgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlcygpOiBBcnJheTxudW1iZXI+IHtcbiAgICBpZiAodGhpcy5zaW1wbGVNb2RlKSB7XG4gICAgICByZXR1cm4gW3RoaXMuY3VycmVudFBhZ2VdO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucGFnZU51bWJlcnMgPiB0aGlzLnZpc2libGVQYWdlcyA/IHRoaXMudmlzaWJsZVBhZ2VzIDogdGhpcy5wYWdlTnVtYmVycztcblxuICAgIGNvbnN0IGhhbGZWaXNpYmxlUGFnZXMgPSBNYXRoLmZsb29yKHRoaXMudmlzaWJsZVBhZ2VzIC8gMik7XG4gICAgbGV0IHN0YXJ0ID0gdGhpcy5jdXJyZW50UGFnZSA+IGhhbGZWaXNpYmxlUGFnZXMgJiYgdGhpcy5wYWdlTnVtYmVycyA+IHRoaXMudmlzaWJsZVBhZ2VzID8gdGhpcy5jdXJyZW50UGFnZSAtIGhhbGZWaXNpYmxlUGFnZXMgKyAxIDogMTtcblxuICAgIGlmICh0aGlzLnBhZ2VOdW1iZXJzID4gdGhpcy52aXNpYmxlUGFnZXMpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlICsgMSA+PSB0aGlzLnBhZ2VOdW1iZXJzKSB7XG4gICAgICAgIHN0YXJ0IC09IGhhbGZWaXNpYmxlUGFnZXM7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFBhZ2UgPj0gdGhpcy5wYWdlTnVtYmVycyAtIGhhbGZWaXNpYmxlUGFnZXMpIHtcbiAgICAgICAgc3RhcnQgLT0gdGhpcy5wYWdlTnVtYmVycyAtICh0aGlzLmN1cnJlbnRQYWdlICsgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSwgKF8sIGkpID0+IGkgKyBzdGFydCk7XG4gIH1cblxuICAvKipcbiAgICogT24gY2xpY2sgcGFnZSBjaGFuZ2VcbiAgICogQHBhcmFtIGV2ZW50IGNsaWNrIGV2ZW50XG4gICAqIEBwYXJhbSBuZXdQYWdlIHRoZSBuZXcgcGFnZSBvZiB0YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhZ2VDaGFuZ2UoZXZlbnQ6IEV2ZW50LCBuZXdQYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucGFnZUV2ZW50LmVtaXQobmV3UGFnZSAtIDEpOyAvLyBlbWl0IG5ldyBwYWdlIGluZGV4XG4gIH1cblxuICAvKipcbiAgICogT24gY2xpY2sgY2hhbmdlclxuICAgKiBAcGFyYW0gZXZlbnQgY2xpY2sgZXZlbnRcbiAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgY2hhbmdlciB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNoYW5nZXJDaGFuZ2UoZXZlbnQ6IEV2ZW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmNoYW5nZXJFdmVudC5lbWl0KHZhbHVlKTsgLy8gZW1pdCBuZXcgY2hhbmdlciB2YWx1ZVxuICB9XG59XG4iLCI8bmF2XG4gIGNsYXNzPVwicGFnaW5hdGlvbi13cmFwcGVyXCJcbiAgW2NsYXNzLmp1c3RpZnktY29udGVudC1jZW50ZXJdPVwiYWxpZ25tZW50ID09PSAnY2VudGVyJ1wiXG4gIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtZW5kXT1cImFsaWdubWVudCA9PT0gJ2VuZCdcIlxuICBbY2xhc3MucGFnaW5hdGlvbi10b3RhbF09XCJ0b3RhbE51bWJlclRleHQuaGFzQ2hpbGROb2RlcygpXCI+XG4gIEBpZiAocGFnZXMubGVuZ3RoKSB7XG4gICAgPHVsIGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlIDwgMVwiPlxuICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIFtjbGFzcy50ZXh0XT1cInRleHRMaW5rc1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInBhZ2VDaGFuZ2UoJGV2ZW50LCBjdXJyZW50UGFnZSlcIj5cbiAgICAgICAgICBAaWYgKCF0ZXh0TGlua3MpIHtcbiAgICAgICAgICAgIDxpdC1pY29uIG5hbWU9XCJjaGV2cm9uLWxlZnRcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICB7eyAodGV4dExpbmtzID8gJ2l0LmNvcmUucGFnZScgOiAnaXQuY29yZS5wcmV2aW91cy1wYWdlJykgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgQGlmICh0ZXh0TGlua3MpIHtcbiAgICAgICAgICAgIHt7ICdpdC5jb3JlLnByZXZpb3VzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIEBpZiAoc2ltcGxlTW9kZSkge1xuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiIGFyaWEtY3VycmVudD1cInBhZ2VcIj57eyBjdXJyZW50UGFnZSArIDEgfX08L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPjxzcGFuIGNsYXNzPVwicGFnZS1saW5rXCI+Lzwvc3Bhbj48L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPnt7IHBhZ2VOdW1iZXJzIH19PC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW0gdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIGFyaWEtY3VycmVudD1cInBhZ2VcIj5cbiAgICAgICAgICAgIHt7ICdpdC5jb3JlLnBhZ2Utb2YtdG90YWwnIHwgdHJhbnNsYXRlOiB7IHBhZ2U6IGN1cnJlbnRQYWdlICsgMSwgdG90YWw6IHBhZ2VOdW1iZXJzIH0gfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChwYWdlTnVtYmVycyA+IHZpc2libGVQYWdlcyAmJiBwYWdlc1swXSA+PSAyKSB7XG4gICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCI+XG4gICAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInBhZ2VDaGFuZ2UoJGV2ZW50LCAxKVwiPjE8L2E+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICBAaWYgKHBhZ2VzWzBdID49IDMpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZXM7IHRyYWNrIHBhZ2UpIHtcbiAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIj5cbiAgICAgICAgICAgIEBpZiAocGFnZSA9PT0gY3VycmVudFBhZ2UgKyAxKSB7XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgYXJpYS1jdXJyZW50PVwicGFnZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgZC1zbS1ub25lXCI+e3sgJ2l0LmNvcmUucGFnZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+IHt7IHBhZ2UgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiAoY2xpY2spPVwicGFnZUNoYW5nZSgkZXZlbnQsIHBhZ2UpXCI+e3sgcGFnZSB9fTwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAocGFnZU51bWJlcnMgPiB2aXNpYmxlUGFnZXMgJiYgcGFnZXNbcGFnZXMubGVuZ3RoIC0gMV0gPCBwYWdlTnVtYmVycykge1xuICAgICAgICAgIEBpZiAocGFnZXNbcGFnZXMubGVuZ3RoIC0gMV0gPCBwYWdlTnVtYmVycyAtIDEpIHtcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGlua1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIChjbGljayk9XCJwYWdlQ2hhbmdlKCRldmVudCwgcGFnZU51bWJlcnMpXCI+e3sgcGFnZU51bWJlcnMgfX08L2E+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQYWdlID49IHBhZ2VOdW1iZXJzIC0gMVwiPlxuICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIFtjbGFzcy50ZXh0XT1cInRleHRMaW5rc1wiIGhyZWY9XCIjXCIgKGNsaWNrKT1cInBhZ2VDaGFuZ2UoJGV2ZW50LCBjdXJyZW50UGFnZSArIDIpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgIHt7ICh0ZXh0TGlua3MgPyAnaXQuY29yZS5wYWdlJyA6ICdpdC5jb3JlLm5leHQtcGFnZScpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIEBpZiAodGV4dExpbmtzKSB7XG4gICAgICAgICAgICB7eyAnaXQuY29yZS5uZXh0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGl0LWljb24gbmFtZT1cImNoZXZyb24tcmlnaHRcIiBjb2xvcj1cInByaW1hcnlcIj48L2l0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIH1cblxuICBAaWYgKGN1cnJlbnRDaGFuZ2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICA8aXQtZHJvcGRvd24+XG4gICAgICA8c3BhbiBidXR0b24+e3sgY3VycmVudENoYW5nZXIgfX0gLyB7eyAnaXQuY29yZS5wYWdlJyB8IHRyYW5zbGF0ZSB8IGxvd2VyY2FzZSB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgbGlzdD5cbiAgICAgICAgQGZvciAodmFsdWUgb2YgY2hhbmdlclZhbHVlczsgdHJhY2sgdmFsdWUpIHtcbiAgICAgICAgICA8aXQtZHJvcGRvd24taXRlbSBocmVmPVwiI1wiIGV4dGVybmFsTGluaz1cInRydWVcIiAoY2xpY2spPVwiY2hhbmdlckNoYW5nZSgkZXZlbnQsIHZhbHVlKVwiPlxuICAgICAgICAgICAge3sgdmFsdWUgfX0gLyB7eyAnaXQuY29yZS5wYWdlJyB8IHRyYW5zbGF0ZSB8IGxvd2VyY2FzZSB9fVxuICAgICAgICAgIDwvaXQtZHJvcGRvd24taXRlbT5cbiAgICAgICAgfVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9pdC1kcm9wZG93bj5cbiAgfVxuXG4gIEBpZiAoc2hvd0p1bXBUb1BhZ2UpIHtcbiAgICA8aXQtaW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW21pbl09XCIxXCJcbiAgICAgIFttYXhdPVwicGFnZU51bWJlcnNcIlxuICAgICAgW2xhYmVsXT1cIignaXQuY29yZS5nby10bycgfCB0cmFuc2xhdGUpICsgJy4uLidcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImp1bXBUb1BhZ2VcIj48L2l0LWlucHV0PlxuICB9XG5cbiAgPHAgW2NsYXNzLmQtbm9uZV09XCIhdG90YWxOdW1iZXJUZXh0Lmhhc0NoaWxkTm9kZXMoKVwiICN0b3RhbE51bWJlclRleHQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3A+XG48L25hdj5cbiJdfQ==