@valtimo/components 4.15.3-next-main.14 → 4.15.3-next-main.15

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 (197) hide show
  1. package/bundles/valtimo-components.umd.js +4795 -4795
  2. package/esm2015/lib/alert/alert.component.js +141 -141
  3. package/esm2015/lib/alert/alert.module.js +27 -27
  4. package/esm2015/lib/alert/alert.service.js +80 -80
  5. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +159 -159
  6. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.module.js +29 -29
  7. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +92 -92
  8. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +33 -33
  9. package/esm2015/lib/camunda/form/camunda-form.components.js +36 -36
  10. package/esm2015/lib/camunda/form/camunda-form.module.js +37 -37
  11. package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +41 -41
  12. package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +33 -33
  13. package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +68 -68
  14. package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +62 -62
  15. package/esm2015/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +27 -27
  16. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +63 -63
  17. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +66 -66
  18. package/esm2015/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +37 -37
  19. package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +65 -65
  20. package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +30 -30
  21. package/esm2015/lib/camunda/form/generated/formfield/formfield.model.js +15 -15
  22. package/esm2015/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.js +27 -27
  23. package/esm2015/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.js +27 -27
  24. package/esm2015/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +27 -27
  25. package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +35 -35
  26. package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +59 -59
  27. package/esm2015/lib/card/card.component.js +36 -36
  28. package/esm2015/lib/card/card.module.js +29 -29
  29. package/esm2015/lib/components.module.js +21 -21
  30. package/esm2015/lib/data-list/data-list.component.js +33 -33
  31. package/esm2015/lib/data-list/data-list.module.js +29 -29
  32. package/esm2015/lib/dropzone/dropzone.component.js +142 -142
  33. package/esm2015/lib/dropzone/dropzone.module.js +31 -31
  34. package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +34 -34
  35. package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +31 -31
  36. package/esm2015/lib/file-size/file-size.module.js +29 -29
  37. package/esm2015/lib/file-size/file-size.pipe.js +44 -44
  38. package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +45 -45
  39. package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +29 -29
  40. package/esm2015/lib/form-io/form-io-builder.component.js +38 -38
  41. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +89 -89
  42. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +71 -71
  43. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +25 -25
  44. package/esm2015/lib/form-io/form-io.component.js +157 -157
  45. package/esm2015/lib/form-io/form-io.module.js +55 -55
  46. package/esm2015/lib/form-io/formio-config.js +21 -21
  47. package/esm2015/lib/form-io/services/form-io-dom.service.js +22 -22
  48. package/esm2015/lib/form-io/services/form-io-state.service.js +23 -23
  49. package/esm2015/lib/left-sidebar/left-sidebar.component.js +113 -113
  50. package/esm2015/lib/left-sidebar/left-sidebar.module.js +33 -33
  51. package/esm2015/lib/list/ListFilterPipe.directive.js +34 -34
  52. package/esm2015/lib/list/list.component.js +176 -176
  53. package/esm2015/lib/list/list.module.js +32 -32
  54. package/esm2015/lib/menu/menu-item-text.component.js +27 -27
  55. package/esm2015/lib/menu/menu-routing.module.js +28 -28
  56. package/esm2015/lib/menu/menu.component.js +64 -64
  57. package/esm2015/lib/menu/menu.init.js +33 -33
  58. package/esm2015/lib/menu/menu.module.js +38 -38
  59. package/esm2015/lib/menu/menu.service.js +126 -126
  60. package/esm2015/lib/menu/submenu-item-text.component.js +27 -27
  61. package/esm2015/lib/modal/modal.component.js +47 -47
  62. package/esm2015/lib/modal/modal.module.js +27 -27
  63. package/esm2015/lib/page-header/page-header.component.js +28 -28
  64. package/esm2015/lib/page-header/page-header.module.js +33 -33
  65. package/esm2015/lib/page-title/page-title.component.js +75 -75
  66. package/esm2015/lib/page-title/page-title.module.js +31 -31
  67. package/esm2015/lib/progress-bar/progress-bar.component.js +25 -25
  68. package/esm2015/lib/progress-bar/progress-bar.module.js +29 -29
  69. package/esm2015/lib/right-sidebar/right-sidebar.component.js +130 -130
  70. package/esm2015/lib/right-sidebar/right-sidebar.module.js +48 -48
  71. package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +184 -184
  72. package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +28 -28
  73. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +51 -51
  74. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +29 -29
  75. package/esm2015/lib/spinner/spinner.component.js +44 -44
  76. package/esm2015/lib/spinner/spinner.module.js +35 -35
  77. package/esm2015/lib/timeline/timeline.component.js +28 -28
  78. package/esm2015/lib/timeline/timeline.module.js +31 -31
  79. package/esm2015/lib/topbar/topbar.component.js +28 -28
  80. package/esm2015/lib/topbar/topbar.module.js +31 -31
  81. package/esm2015/lib/uploader/uploader-drag-drop.directive.js +48 -48
  82. package/esm2015/lib/uploader/uploader.component.js +69 -69
  83. package/esm2015/lib/uploader/uploader.module.js +32 -32
  84. package/esm2015/lib/version/version.service.js +37 -37
  85. package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +28 -28
  86. package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +29 -29
  87. package/esm2015/lib/view-content/type-converters/enumTypeConverter.js +23 -23
  88. package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +23 -23
  89. package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +26 -26
  90. package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +23 -23
  91. package/esm2015/lib/view-content/type-converters/type-converters.model.js +36 -36
  92. package/esm2015/lib/view-content/view-content.service.js +50 -50
  93. package/esm2015/lib/webcam/webcam.component.js +102 -102
  94. package/esm2015/lib/webcam/webcam.module.js +31 -31
  95. package/esm2015/lib/widget/widget.component.js +79 -79
  96. package/esm2015/lib/widget/widget.module.js +29 -29
  97. package/esm2015/public_api.js +83 -83
  98. package/esm2015/valtimo-components.js +26 -26
  99. package/fesm2015/valtimo-components.js +4303 -4303
  100. package/lib/alert/alert.component.d.ts +21 -21
  101. package/lib/alert/alert.module.d.ts +2 -2
  102. package/lib/alert/alert.service.d.ts +21 -21
  103. package/lib/bpmn-js-diagram/bpmn-js-diagram.component.d.ts +27 -27
  104. package/lib/bpmn-js-diagram/bpmn-js-diagram.module.d.ts +2 -2
  105. package/lib/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +14 -14
  106. package/lib/breadcrumb-navigation/breadcrumb-navigation.module.d.ts +2 -2
  107. package/lib/camunda/form/camunda-form.components.d.ts +9 -9
  108. package/lib/camunda/form/camunda-form.module.d.ts +2 -2
  109. package/lib/camunda/form/custom/camunda-custom-form.component.d.ts +8 -8
  110. package/lib/camunda/form/custom/camunda-custom-form.module.d.ts +2 -2
  111. package/lib/camunda/form/generated/camunda-generated-form.component.d.ts +19 -19
  112. package/lib/camunda/form/generated/camunda-generated-form.module.d.ts +2 -2
  113. package/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +7 -7
  114. package/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.d.ts +13 -13
  115. package/lib/camunda/form/generated/formfield/camunda-formfield.service.d.ts +7 -7
  116. package/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +12 -12
  117. package/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts +14 -14
  118. package/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +10 -10
  119. package/lib/camunda/form/generated/formfield/formfield.model.d.ts +20 -20
  120. package/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts +7 -7
  121. package/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts +7 -7
  122. package/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +7 -7
  123. package/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +10 -10
  124. package/lib/camunda/form/generated/formfield/validation/date.validators.d.ts +3 -3
  125. package/lib/card/card.component.d.ts +16 -16
  126. package/lib/card/card.module.d.ts +2 -2
  127. package/lib/components.module.d.ts +2 -2
  128. package/lib/data-list/data-list.component.d.ts +7 -7
  129. package/lib/data-list/data-list.module.d.ts +2 -2
  130. package/lib/dropzone/dropzone.component.d.ts +38 -38
  131. package/lib/dropzone/dropzone.module.d.ts +2 -2
  132. package/lib/field-auto-focus/field-auto-focus.directive.d.ts +6 -6
  133. package/lib/field-auto-focus/field-auto-focus.module.d.ts +2 -2
  134. package/lib/file-size/file-size.module.d.ts +2 -2
  135. package/lib/file-size/file-size.pipe.d.ts +5 -5
  136. package/lib/filter-sidebar/filter-sidebar.component.d.ts +8 -8
  137. package/lib/filter-sidebar/filter-sidebar.module.d.ts +2 -2
  138. package/lib/form-io/form-io-builder.component.d.ts +8 -8
  139. package/lib/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts +61 -61
  140. package/lib/form-io/form-io-uploader/form-io-uploader.component.d.ts +29 -29
  141. package/lib/form-io/form-io-uploader/form-io-uploader.formio.d.ts +3 -3
  142. package/lib/form-io/form-io.component.d.ts +44 -44
  143. package/lib/form-io/form-io.module.d.ts +2 -2
  144. package/lib/form-io/formio-config.d.ts +6 -6
  145. package/lib/form-io/services/form-io-dom.service.d.ts +6 -6
  146. package/lib/form-io/services/form-io-state.service.d.ts +10 -10
  147. package/lib/left-sidebar/left-sidebar.component.d.ts +34 -34
  148. package/lib/left-sidebar/left-sidebar.module.d.ts +2 -2
  149. package/lib/list/ListFilterPipe.directive.d.ts +4 -4
  150. package/lib/list/list.component.d.ts +43 -43
  151. package/lib/list/list.module.d.ts +2 -2
  152. package/lib/menu/menu-item-text.component.d.ts +4 -4
  153. package/lib/menu/menu-routing.module.d.ts +2 -2
  154. package/lib/menu/menu.component.d.ts +18 -18
  155. package/lib/menu/menu.init.d.ts +3 -3
  156. package/lib/menu/menu.module.d.ts +2 -2
  157. package/lib/menu/menu.service.d.ts +23 -23
  158. package/lib/menu/submenu-item-text.component.d.ts +4 -4
  159. package/lib/modal/modal.component.d.ts +12 -12
  160. package/lib/modal/modal.module.d.ts +2 -2
  161. package/lib/page-header/page-header.component.d.ts +5 -5
  162. package/lib/page-header/page-header.module.d.ts +2 -2
  163. package/lib/page-title/page-title.component.d.ts +19 -19
  164. package/lib/page-title/page-title.module.d.ts +2 -2
  165. package/lib/progress-bar/progress-bar.component.d.ts +2 -2
  166. package/lib/progress-bar/progress-bar.module.d.ts +2 -2
  167. package/lib/right-sidebar/right-sidebar.component.d.ts +34 -34
  168. package/lib/right-sidebar/right-sidebar.module.d.ts +2 -2
  169. package/lib/searchable-dropdown/searchable-dropdown.component.d.ts +39 -39
  170. package/lib/searchable-dropdown/searchable-dropdown.module.d.ts +2 -2
  171. package/lib/searchable-dropdown-select/searchable-dropdown-select.component.d.ts +19 -19
  172. package/lib/searchable-dropdown-select/searchable-dropdown-select.module.d.ts +2 -2
  173. package/lib/spinner/spinner.component.d.ts +10 -10
  174. package/lib/spinner/spinner.module.d.ts +2 -2
  175. package/lib/timeline/timeline.component.d.ts +4 -4
  176. package/lib/timeline/timeline.module.d.ts +2 -2
  177. package/lib/topbar/topbar.component.d.ts +3 -3
  178. package/lib/topbar/topbar.module.d.ts +2 -2
  179. package/lib/uploader/uploader-drag-drop.directive.d.ts +7 -7
  180. package/lib/uploader/uploader.component.d.ts +15 -15
  181. package/lib/uploader/uploader.module.d.ts +2 -2
  182. package/lib/version/version.service.d.ts +8 -8
  183. package/lib/view-content/type-converters/booleanTypeConverter.d.ts +5 -5
  184. package/lib/view-content/type-converters/dateTypeConverter.d.ts +5 -5
  185. package/lib/view-content/type-converters/enumTypeConverter.d.ts +5 -5
  186. package/lib/view-content/type-converters/relatedFilesTypeConverter.d.ts +5 -5
  187. package/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +6 -6
  188. package/lib/view-content/type-converters/stringTypeConverter.d.ts +5 -5
  189. package/lib/view-content/type-converters/type-converters.model.d.ts +5 -5
  190. package/lib/view-content/view-content.service.d.ts +8 -8
  191. package/lib/webcam/webcam.component.d.ts +20 -20
  192. package/lib/webcam/webcam.module.d.ts +2 -2
  193. package/lib/widget/widget.component.d.ts +28 -28
  194. package/lib/widget/widget.module.d.ts +2 -2
  195. package/package.json +1 -1
  196. package/public_api.d.ts +65 -65
  197. package/valtimo-components.d.ts +26 -26
@@ -1,142 +1,142 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component } from '@angular/core';
17
- import { AlertType } from '@valtimo/contract';
18
- import { AlertService } from './alert.service';
19
- export class AlertComponent {
20
- constructor(alertService) {
21
- this.alertService = alertService;
22
- this.alerts = [];
23
- this.autoCloseInMS = 5000;
24
- }
25
- ngOnInit() {
26
- }
27
- ngAfterContentInit() {
28
- this.subscription = this.alertService.onAlert()
29
- .subscribe(alert => {
30
- if (!alert.message) {
31
- // clear alerts when an empty alert is received
32
- this.alerts = [];
33
- return;
34
- }
35
- // set empty array when an empty alert confirmations is received
36
- if (!alert.confirmations) {
37
- alert.confirmations = [];
38
- }
39
- // add alert to array if not exist
40
- const alertExist = this.alerts.filter(x => x.message === alert.message);
41
- if (alertExist.length === 0) {
42
- this.alerts.push(alert);
43
- }
44
- if (this.inModal(alert)) {
45
- setTimeout(() => {
46
- this.openModal();
47
- }, 300);
48
- }
49
- // auto close except alert confirmations not empty
50
- if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {
51
- setTimeout(() => {
52
- this.removeAlert(alert);
53
- }, this.autoCloseInMS);
54
- }
55
- });
56
- }
57
- closeModal() {
58
- $('#modalNotification').modal('hide');
59
- }
60
- openModal() {
61
- $('#modalNotification').modal('show');
62
- }
63
- alertConfirm(alert, confirm) {
64
- alert.confirm = confirm;
65
- this.alertService.emitAlertConfirmEvent(alert);
66
- this.removeAlert(alert);
67
- }
68
- ngOnDestroy() {
69
- // unsubscribe to avoid memory leaks
70
- this.subscription.unsubscribe();
71
- }
72
- removeAlert(alert) {
73
- if (this.inModal(alert)) {
74
- this.closeModal();
75
- }
76
- // remove specified alert from array
77
- this.alerts = this.alerts.filter(x => x.message !== alert.message);
78
- }
79
- inModal(alert) {
80
- if (!alert) {
81
- return;
82
- }
83
- // return true based on AlertType.ModalNotification
84
- switch (alert.type) {
85
- case AlertType.ModalNotification:
86
- return true;
87
- default:
88
- return false;
89
- }
90
- }
91
- cssClass(alert) {
92
- if (!alert) {
93
- return;
94
- }
95
- // return css class based on alert type
96
- switch (alert.type) {
97
- case AlertType.Success:
98
- return 'alert alert-success';
99
- case AlertType.Error:
100
- return 'alert alert-danger';
101
- case AlertType.Info:
102
- return 'alert alert-info';
103
- case AlertType.Warning:
104
- return 'alert alert-warning';
105
- case AlertType.Notification:
106
- return 'alert alert-light';
107
- case AlertType.ModalNotification:
108
- return 'alert alert-light';
109
- }
110
- }
111
- cssIconClass(alert) {
112
- if (!alert) {
113
- return;
114
- }
115
- // return css class based on alert type
116
- switch (alert.type) {
117
- case AlertType.Success:
118
- return 'mdi mdi-check';
119
- case AlertType.Error:
120
- return 'mdi mdi-close-circle-o';
121
- case AlertType.Info:
122
- return 'mdi mdi-info-outline';
123
- case AlertType.Warning:
124
- return 'mdi mdi-alert-triangle';
125
- case AlertType.Notification:
126
- return 'mdi mdi-notifications';
127
- case AlertType.ModalNotification:
128
- return 'mdi mdi-notifications';
129
- }
130
- }
131
- }
132
- AlertComponent.decorators = [
133
- { type: Component, args: [{
134
- selector: 'valtimo-alert',
135
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let alert of alerts\" class=\"{{cssClass(alert)}} rounded-0 m-0 alert-dismissable\">\n\n <div *ngIf=\"inModal(alert)\">\n <!-- Modal -->\n <div class=\"modal fade\" id=\"modalNotification\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body p-0\">\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\"><span class=\"mdi mdi-close\" aria-hidden=\"true\"></span></button>\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n </div>\n </div>\n <div class=\"modal-footer pt-0\" *ngIf=\"alert.confirmations?.length\">\n <button class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\">{{ confirmation.label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!inModal(alert)\" class=\"alert-block\">\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n <div class=\"mt-3\" *ngIf=\"alert.confirmations?.length\">\n <button class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\">{{ confirmation.label }}</button>\n </div>\n </div>\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\"><span class=\"mdi mdi-close\" aria-hidden=\"true\"></span></button>\n </div>\n</div>\n",
136
- styles: [".alert-block{display:flex;flex-direction:row;justify-content:space-between}.alert-block .message{width:100%}.alert-block .icon{align-items:center;display:flex}.alert .message{font-size:1.1rem!important;line-height:1.5rem!important;padding:2rem 5rem 2rem 2rem!important}.alert .close{color:#fff!important;opacity:1!important;padding:2rem 2rem 0 0!important;right:0!important}.alert .icon{padding-left:2rem!important}.alert-warning{color:#404040!important}.alert-light .close,.alert-warning .close{color:#404040!important;opacity:1!important}"]
137
- },] }
138
- ];
139
- AlertComponent.ctorParameters = () => [
140
- { type: AlertService }
141
- ];
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component } from '@angular/core';
17
+ import { AlertType } from '@valtimo/contract';
18
+ import { AlertService } from './alert.service';
19
+ export class AlertComponent {
20
+ constructor(alertService) {
21
+ this.alertService = alertService;
22
+ this.alerts = [];
23
+ this.autoCloseInMS = 5000;
24
+ }
25
+ ngOnInit() {
26
+ }
27
+ ngAfterContentInit() {
28
+ this.subscription = this.alertService.onAlert()
29
+ .subscribe(alert => {
30
+ if (!alert.message) {
31
+ // clear alerts when an empty alert is received
32
+ this.alerts = [];
33
+ return;
34
+ }
35
+ // set empty array when an empty alert confirmations is received
36
+ if (!alert.confirmations) {
37
+ alert.confirmations = [];
38
+ }
39
+ // add alert to array if not exist
40
+ const alertExist = this.alerts.filter(x => x.message === alert.message);
41
+ if (alertExist.length === 0) {
42
+ this.alerts.push(alert);
43
+ }
44
+ if (this.inModal(alert)) {
45
+ setTimeout(() => {
46
+ this.openModal();
47
+ }, 300);
48
+ }
49
+ // auto close except alert confirmations not empty
50
+ if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {
51
+ setTimeout(() => {
52
+ this.removeAlert(alert);
53
+ }, this.autoCloseInMS);
54
+ }
55
+ });
56
+ }
57
+ closeModal() {
58
+ $('#modalNotification').modal('hide');
59
+ }
60
+ openModal() {
61
+ $('#modalNotification').modal('show');
62
+ }
63
+ alertConfirm(alert, confirm) {
64
+ alert.confirm = confirm;
65
+ this.alertService.emitAlertConfirmEvent(alert);
66
+ this.removeAlert(alert);
67
+ }
68
+ ngOnDestroy() {
69
+ // unsubscribe to avoid memory leaks
70
+ this.subscription.unsubscribe();
71
+ }
72
+ removeAlert(alert) {
73
+ if (this.inModal(alert)) {
74
+ this.closeModal();
75
+ }
76
+ // remove specified alert from array
77
+ this.alerts = this.alerts.filter(x => x.message !== alert.message);
78
+ }
79
+ inModal(alert) {
80
+ if (!alert) {
81
+ return;
82
+ }
83
+ // return true based on AlertType.ModalNotification
84
+ switch (alert.type) {
85
+ case AlertType.ModalNotification:
86
+ return true;
87
+ default:
88
+ return false;
89
+ }
90
+ }
91
+ cssClass(alert) {
92
+ if (!alert) {
93
+ return;
94
+ }
95
+ // return css class based on alert type
96
+ switch (alert.type) {
97
+ case AlertType.Success:
98
+ return 'alert alert-success';
99
+ case AlertType.Error:
100
+ return 'alert alert-danger';
101
+ case AlertType.Info:
102
+ return 'alert alert-info';
103
+ case AlertType.Warning:
104
+ return 'alert alert-warning';
105
+ case AlertType.Notification:
106
+ return 'alert alert-light';
107
+ case AlertType.ModalNotification:
108
+ return 'alert alert-light';
109
+ }
110
+ }
111
+ cssIconClass(alert) {
112
+ if (!alert) {
113
+ return;
114
+ }
115
+ // return css class based on alert type
116
+ switch (alert.type) {
117
+ case AlertType.Success:
118
+ return 'mdi mdi-check';
119
+ case AlertType.Error:
120
+ return 'mdi mdi-close-circle-o';
121
+ case AlertType.Info:
122
+ return 'mdi mdi-info-outline';
123
+ case AlertType.Warning:
124
+ return 'mdi mdi-alert-triangle';
125
+ case AlertType.Notification:
126
+ return 'mdi mdi-notifications';
127
+ case AlertType.ModalNotification:
128
+ return 'mdi mdi-notifications';
129
+ }
130
+ }
131
+ }
132
+ AlertComponent.decorators = [
133
+ { type: Component, args: [{
134
+ selector: 'valtimo-alert',
135
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let alert of alerts\" class=\"{{cssClass(alert)}} rounded-0 m-0 alert-dismissable\">\n\n <div *ngIf=\"inModal(alert)\">\n <!-- Modal -->\n <div class=\"modal fade\" id=\"modalNotification\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body p-0\">\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\"><span class=\"mdi mdi-close\" aria-hidden=\"true\"></span></button>\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n </div>\n </div>\n <div class=\"modal-footer pt-0\" *ngIf=\"alert.confirmations?.length\">\n <button class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\">{{ confirmation.label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!inModal(alert)\" class=\"alert-block\">\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n <div class=\"mt-3\" *ngIf=\"alert.confirmations?.length\">\n <button class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\">{{ confirmation.label }}</button>\n </div>\n </div>\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\"><span class=\"mdi mdi-close\" aria-hidden=\"true\"></span></button>\n </div>\n</div>\n",
136
+ styles: [".alert-block{display:flex;flex-direction:row;justify-content:space-between}.alert-block .message{width:100%}.alert-block .icon{align-items:center;display:flex}.alert .message{font-size:1.1rem!important;line-height:1.5rem!important;padding:2rem 5rem 2rem 2rem!important}.alert .close{color:#fff!important;opacity:1!important;padding:2rem 2rem 0 0!important;right:0!important}.alert .icon{padding-left:2rem!important}.alert-warning{color:#404040!important}.alert-light .close,.alert-warning .close{color:#404040!important;opacity:1!important}"]
137
+ },] }
138
+ ];
139
+ AlertComponent.ctorParameters = () => [
140
+ { type: AlertService }
141
+ ];
142
142
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFtQixTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBUSxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFTN0MsTUFBTSxPQUFPLGNBQWM7SUFLdkIsWUFDWSxZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUx0QyxXQUFNLEdBQVksRUFBRSxDQUFDO1FBT2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7YUFDMUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBRWYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87YUFDVjtZQUVELGdFQUFnRTtZQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsS0FBSyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7YUFDNUI7WUFFRCxrQ0FBa0M7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FB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TztTQUNWO1FBRUQsdUNBQXVDO1FBQ3ZDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixPQUFPLGVBQWUsQ0FBQztZQUMzQixLQUFLLFNBQVMsQ0FBQyxLQUFLO2dCQUNoQixPQUFPLHdCQUF3QixDQUFDO1lBQ3BDLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2YsT0FBTyxzQkFBc0IsQ0FBQztZQUNsQyxLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixPQUFPLHdCQUF3QixDQUFDO1lBQ3BDLEtBQUssU0FBUyxDQUFDLFlBQVk7Z0JBQ3ZCLE9BQU8sdUJBQXVCLENBQUM7WUFDbkMsS0FBSyxTQUFTLENBQUMsaUJBQWlCO2dCQUM1QixPQUFPLHVCQUF1QixDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7O1lBMUlKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsOC9FQUFxQzs7YUFFeEM7OztZQVJPLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0FmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydCwgQWxlcnRUeXBlfSBmcm9tICdAdmFsdGltby9jb250cmFjdCc7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcblxuZGVjbGFyZSB2YXIgJDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2YWx0aW1vLWFsZXJ0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBhbGVydHM6IEFsZXJ0W10gPSBbXTtcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBhdXRvQ2xvc2VJbk1TOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmF1dG9DbG9zZUluTVMgPSA1MDAwO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmFsZXJ0U2VydmljZS5vbkFsZXJ0KClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYWxlcnQgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFhbGVydC5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIGFsZXJ0cyB3aGVuIGFuIGVtcHR5IGFsZXJ0IGlzIHJlY2VpdmVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBzZXQgZW1wdHkgYXJyYXkgd2hlbiBhbiBlbXB0eSBhbGVydCBjb25maXJtYXRpb25zIGlzIHJlY2VpdmVkXG4gICAgICAgICAgICAgICAgaWYgKCFhbGVydC5jb25maXJtYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0LmNvbmZpcm1hdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhZGQgYWxlcnQgdG8gYXJyYXkgaWYgbm90IGV4aXN0XG4gICAgICAgICAgICAgICAgY29uc3QgYWxlcnRFeGlzdCA9IHRoaXMuYWxlcnRzLmZpbHRlcih4ID0+IHgubWVzc2FnZSA9PT0gYWxlcnQubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFsZXJ0RXhpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzLnB1c2goYWxlcnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluTW9kYWwoYWxlcnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhdXRvIGNsb3NlIGV4Y2VwdCBhbGVydCBjb25maXJtYXRpb25zIG5vdCBlbXB0eVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9DbG9zZUluTVMgPiAwICYmIGFsZXJ0LmNvbmZpcm1hdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBbGVydChhbGVydCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYXV0b0Nsb3NlSW5NUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbCgpIHtcbiAgICAgICAgJCgnI21vZGFsTm90aWZpY2F0aW9uJykubW9kYWwoJ2hpZGUnKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwoKSB7XG4gICAgICAgICQoJyNtb2RhbE5vdGlmaWNhdGlvbicpLm1vZGFsKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgYWxlcnRDb25maXJtKGFsZXJ0OiBBbGVydCwgY29uZmlybTogYW55KSB7XG4gICAgICAgIGFsZXJ0LmNvbmZpcm0gPSBjb25maXJtO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lbWl0QWxlcnRDb25maXJtRXZlbnQoYWxlcnQpO1xuICAgICAgICB0aGlzLnJlbW92ZUFsZXJ0KGFsZXJ0KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gdW5zdWJzY3JpYmUgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQWxlcnQoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgICAgIGlmICh0aGlzLmluTW9kYWwoYWxlcnQpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgc3BlY2lmaWVkIGFsZXJ0IGZyb20gYXJyYXlcbiAgICAgICAgdGhpcy5hbGVydHMgPSB0aGlzLmFsZXJ0cy5maWx0ZXIoeCA9PiB4Lm1lc3NhZ2UgIT09IGFsZXJ0Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGluTW9kYWwoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgICAgIGlmICghYWxlcnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJldHVybiB0cnVlIGJhc2VkIG9uIEFsZXJ0VHlwZS5Nb2RhbE5vdGlmaWNhdGlvblxuICAgICAgICBzd2l0Y2ggKGFsZXJ0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjc3NDbGFzcyhhbGVydDogQWxlcnQpIHtcbiAgICAgICAgaWYgKCFhbGVydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGNzcyBjbGFzcyBiYXNlZCBvbiBhbGVydCB0eXBlXG4gICAgICAgIHN3aXRjaCAoYWxlcnQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuU3VjY2VzczpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0IGFsZXJ0LXN1Y2Nlc3MnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuRXJyb3I6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1kYW5nZXInO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuSW5mbzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0IGFsZXJ0LWluZm8nO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuV2FybmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0IGFsZXJ0LXdhcm5pbmcnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtbGlnaHQnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuTW9kYWxOb3RpZmljYXRpb246XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1saWdodCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjc3NJY29uQ2xhc3MoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgICAgIGlmICghYWxlcnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJldHVybiBjc3MgY2xhc3MgYmFzZWQgb24gYWxlcnQgdHlwZVxuICAgICAgICBzd2l0Y2ggKGFsZXJ0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLlN1Y2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtZGkgbWRpLWNoZWNrJztcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLkVycm9yOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1jbG9zZS1jaXJjbGUtbyc7XG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5JbmZvOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1pbmZvLW91dGxpbmUnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuV2FybmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21kaSBtZGktYWxlcnQtdHJpYW5nbGUnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1ub3RpZmljYXRpb25zJztcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1ub3RpZmljYXRpb25zJztcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
@@ -1,28 +1,28 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { CommonModule } from '@angular/common';
18
- import { AlertComponent } from './alert.component';
19
- export class AlertModule {
20
- }
21
- AlertModule.decorators = [
22
- { type: NgModule, args: [{
23
- imports: [CommonModule],
24
- declarations: [AlertComponent],
25
- exports: [AlertComponent]
26
- },] }
27
- ];
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { NgModule } from '@angular/core';
17
+ import { CommonModule } from '@angular/common';
18
+ import { AlertComponent } from './alert.component';
19
+ export class AlertModule {
20
+ }
21
+ AlertModule.decorators = [
22
+ { type: NgModule, args: [{
23
+ imports: [CommonModule],
24
+ declarations: [AlertComponent],
25
+ exports: [AlertComponent]
26
+ },] }
27
+ ];
28
28
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvYWxlcnQvYWxlcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBT2pELE1BQU0sT0FBTyxXQUFXOzs7WUFMdkIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBbGVydENvbXBvbmVudH0gZnJvbSAnLi9hbGVydC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQWxlcnRDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQWxlcnRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0TW9kdWxlIHtcbn1cbiJdfQ==
@@ -1,81 +1,81 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { EventEmitter, Injectable } from '@angular/core';
17
- import { NavigationStart, Router } from '@angular/router';
18
- import { Subject } from 'rxjs';
19
- import { Alert, AlertType } from '@valtimo/contract';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@angular/router";
22
- export class AlertService {
23
- constructor(router) {
24
- this.router = router;
25
- this.confirmed = new EventEmitter();
26
- this.subject = new Subject();
27
- // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
28
- this.router.events.subscribe(event => {
29
- if (event instanceof NavigationStart) {
30
- // clear alert messages
31
- this.clear();
32
- }
33
- });
34
- }
35
- // enable subscribing to alerts observable
36
- onAlert() {
37
- return this.subject.asObservable();
38
- }
39
- // convenience methods
40
- success(message, confirmations, iconClass) {
41
- this.alert(new Alert({ message, type: AlertType.Success, confirmations, iconClass }));
42
- }
43
- error(message, confirmations, iconClass) {
44
- this.alert(new Alert({ message, type: AlertType.Error, confirmations, iconClass }));
45
- }
46
- info(message, confirmations, iconClass) {
47
- this.alert(new Alert({ message, type: AlertType.Info, confirmations, iconClass }));
48
- }
49
- warning(message, confirmations, iconClass) {
50
- this.alert(new Alert({ message, type: AlertType.Warning, confirmations, iconClass }));
51
- }
52
- notification(message, confirmations, iconClass) {
53
- this.alert(new Alert({ message, type: AlertType.Notification, confirmations, iconClass }));
54
- }
55
- modalNotification(message, confirmations, iconClass) {
56
- this.alert(new Alert({ message, type: AlertType.ModalNotification, confirmations, iconClass }));
57
- }
58
- // main alert method
59
- alert(alert) {
60
- this.subject.next(alert);
61
- }
62
- // clear alerts
63
- clear() {
64
- this.subject.next(new Alert({}));
65
- }
66
- // emit confirm
67
- emitAlertConfirmEvent(alert) {
68
- this.confirmed.emit(alert);
69
- }
70
- getAlertConfirmChangeEmitter() {
71
- return this.confirmed;
72
- }
73
- }
74
- AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.Router)); }, token: AlertService, providedIn: "root" });
75
- AlertService.decorators = [
76
- { type: Injectable, args: [{ providedIn: 'root' },] }
77
- ];
78
- AlertService.ctorParameters = () => [
79
- { type: Router }
80
- ];
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { EventEmitter, Injectable } from '@angular/core';
17
+ import { NavigationStart, Router } from '@angular/router';
18
+ import { Subject } from 'rxjs';
19
+ import { Alert, AlertType } from '@valtimo/contract';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/router";
22
+ export class AlertService {
23
+ constructor(router) {
24
+ this.router = router;
25
+ this.confirmed = new EventEmitter();
26
+ this.subject = new Subject();
27
+ // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
28
+ this.router.events.subscribe(event => {
29
+ if (event instanceof NavigationStart) {
30
+ // clear alert messages
31
+ this.clear();
32
+ }
33
+ });
34
+ }
35
+ // enable subscribing to alerts observable
36
+ onAlert() {
37
+ return this.subject.asObservable();
38
+ }
39
+ // convenience methods
40
+ success(message, confirmations, iconClass) {
41
+ this.alert(new Alert({ message, type: AlertType.Success, confirmations, iconClass }));
42
+ }
43
+ error(message, confirmations, iconClass) {
44
+ this.alert(new Alert({ message, type: AlertType.Error, confirmations, iconClass }));
45
+ }
46
+ info(message, confirmations, iconClass) {
47
+ this.alert(new Alert({ message, type: AlertType.Info, confirmations, iconClass }));
48
+ }
49
+ warning(message, confirmations, iconClass) {
50
+ this.alert(new Alert({ message, type: AlertType.Warning, confirmations, iconClass }));
51
+ }
52
+ notification(message, confirmations, iconClass) {
53
+ this.alert(new Alert({ message, type: AlertType.Notification, confirmations, iconClass }));
54
+ }
55
+ modalNotification(message, confirmations, iconClass) {
56
+ this.alert(new Alert({ message, type: AlertType.ModalNotification, confirmations, iconClass }));
57
+ }
58
+ // main alert method
59
+ alert(alert) {
60
+ this.subject.next(alert);
61
+ }
62
+ // clear alerts
63
+ clear() {
64
+ this.subject.next(new Alert({}));
65
+ }
66
+ // emit confirm
67
+ emitAlertConfirmEvent(alert) {
68
+ this.confirmed.emit(alert);
69
+ }
70
+ getAlertConfirmChangeEmitter() {
71
+ return this.confirmed;
72
+ }
73
+ }
74
+ AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.Router)); }, token: AlertService, providedIn: "root" });
75
+ AlertService.decorators = [
76
+ { type: Injectable, args: [{ providedIn: 'root' },] }
77
+ ];
78
+ AlertService.ctorParameters = () => [
79
+ { type: Router }
80
+ ];
81
81
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2FsZXJ0L2FsZXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSDNCLGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUdyQyxrRkFBa0Y7UUFDbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDcEMsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsT0FBTyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixLQUFLLENBQUMsS0FBWTtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtJQUNmLEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlO0lBQ2YscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7O1lBOURGLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OztZQUpQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25TdGFydCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWxlcnQsIEFsZXJ0VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBbGVydFNlcnZpY2Uge1xuICBwdWJsaWMgY29uZmlybWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWxlcnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIC8vIGNsZWFyIGFsZXJ0IG1lc3NhZ2VzIG9uIHJvdXRlIGNoYW5nZSB1bmxlc3MgJ2tlZXBBZnRlclJvdXRlQ2hhbmdlJyBmbGFnIGlzIHRydWVcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjbGVhciBhbGVydCBtZXNzYWdlc1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmFibGUgc3Vic2NyaWJpbmcgdG8gYWxlcnRzIG9ic2VydmFibGVcbiAgb25BbGVydCgpOiBPYnNlcnZhYmxlPEFsZXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8vIGNvbnZlbmllbmNlIG1ldGhvZHNcbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpcm1hdGlvbnM/OiBhbnksIGljb25DbGFzcz86IHN0cmluZykge1xuICAgIHRoaXMuYWxlcnQobmV3IEFsZXJ0KHttZXNzYWdlLCB0eXBlOiBBbGVydFR5cGUuU3VjY2VzcywgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLkVycm9yLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5JbmZvLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5XYXJuaW5nLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBub3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk5vdGlmaWNhdGlvbiwgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgbW9kYWxOb3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICAvLyBtYWluIGFsZXJ0IG1ldGhvZFxuICBhbGVydChhbGVydDogQWxlcnQpIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dChhbGVydCk7XG4gIH1cblxuICAvLyBjbGVhciBhbGVydHNcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5zdWJqZWN0Lm5leHQobmV3IEFsZXJ0KHt9KSk7XG4gIH1cblxuICAvLyBlbWl0IGNvbmZpcm1cbiAgZW1pdEFsZXJ0Q29uZmlybUV2ZW50KGFsZXJ0OiBBbGVydCkge1xuICAgIHRoaXMuY29uZmlybWVkLmVtaXQoYWxlcnQpO1xuICB9XG5cbiAgZ2V0QWxlcnRDb25maXJtQ2hhbmdlRW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtZWQ7XG4gIH1cbn1cbiJdfQ==