@ecodev/natural 50.4.1 → 52.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/esm2022/lib/classes/abstract-controller.mjs +30 -0
  2. package/esm2022/lib/classes/abstract-detail.mjs +166 -0
  3. package/{esm2020 → esm2022}/lib/classes/abstract-editable-list.mjs +4 -4
  4. package/esm2022/lib/classes/abstract-list.mjs +434 -0
  5. package/esm2022/lib/classes/abstract-navigable-list.mjs +131 -0
  6. package/{esm2020 → esm2022}/lib/directives/http-prefix.directive.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/modules/alert/alert.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/modules/alert/alert.service.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/modules/alert/confirm.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/modules/avatar/avatar.module.mjs +5 -5
  11. package/{esm2020 → esm2022}/lib/modules/avatar/component/avatar.component.mjs +6 -6
  12. package/{esm2020 → esm2022}/lib/modules/avatar/service/avatar.service.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/modules/columns-picker/columns-picker.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/modules/columns-picker/columns-picker.module.mjs +19 -19
  15. package/{esm2020 → esm2022}/lib/modules/common/common-module.mjs +19 -19
  16. package/{esm2020 → esm2022}/lib/modules/common/directives/linkable-tab.directive.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/modules/common/directives/src-density.directive.mjs +6 -5
  18. package/{esm2020 → esm2022}/lib/modules/common/pipes/capitalize.pipe.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/modules/common/pipes/ellipsis.pipe.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/modules/common/pipes/enum.pipe.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/modules/common/pipes/swiss-date.pipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/modules/common/pipes/time-ago.pipe.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/modules/common/services/memory-storage.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/modules/common/services/seo.service.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/modules/detail-header/detail-header.component.mjs +6 -5
  26. package/{esm2020 → esm2022}/lib/modules/detail-header/detail-header.module.mjs +5 -5
  27. package/{esm2020 → esm2022}/lib/modules/dialog-trigger/dialog-trigger.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/modules/dialog-trigger/dialog-trigger.module.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +4 -4
  30. package/{esm2020 → esm2022}/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +39 -39
  31. package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +164 -0
  32. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-number/type-number.component.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-select/type-select.component.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-text/type-text.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/modules/file/abstract-file.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/modules/file/component/file.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/modules/file/file-drop.directive.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/modules/file/file-select.directive.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/modules/file/file.module.mjs +5 -5
  43. package/{esm2020 → esm2022}/lib/modules/file/file.service.mjs +4 -4
  44. package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +29 -0
  45. package/{esm2020 → esm2022}/lib/modules/fixed-button/fixed-button.module.mjs +5 -5
  46. package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +53 -0
  47. package/{esm2020 → esm2022}/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +6 -5
  49. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +33 -33
  53. package/{esm2020 → esm2022}/lib/modules/icon/icon.directive.mjs +6 -5
  54. package/{esm2020 → esm2022}/lib/modules/icon/icon.module.mjs +5 -5
  55. package/{esm2020 → esm2022}/lib/modules/logger/error-handler.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/modules/logger/error.module.mjs +5 -5
  57. package/{esm2020 → esm2022}/lib/modules/matomo/matomo-module.module.mjs +5 -5
  58. package/{esm2020 → esm2022}/lib/modules/matomo/matomo.service.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/modules/panels/abstract-panel.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/modules/panels/panels.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/modules/panels/panels.module.mjs +5 -5
  62. package/esm2022/lib/modules/panels/panels.service.mjs +328 -0
  63. package/esm2022/lib/modules/panels/panels.urlmatcher.mjs +75 -0
  64. package/esm2022/lib/modules/panels/types.mjs +3 -0
  65. package/esm2022/lib/modules/relations/relations.component.mjs +211 -0
  66. package/{esm2020 → esm2022}/lib/modules/relations/relations.module.mjs +25 -25
  67. package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown-container.component.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown.service.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/modules/search/facet-selector/facet-selector.component.mjs +4 -4
  70. package/esm2022/lib/modules/search/group/group.component.mjs +53 -0
  71. package/{esm2020 → esm2022}/lib/modules/search/input/input.component.mjs +6 -5
  72. package/{esm2020 → esm2022}/lib/modules/search/search/search.component.mjs +4 -4
  73. package/esm2022/lib/modules/search/search.module.mjs +90 -0
  74. package/{esm2020 → esm2022}/lib/modules/select/abstract-select.component.mjs +4 -4
  75. package/esm2022/lib/modules/select/select/select.component.mjs +279 -0
  76. package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +47 -0
  77. package/{esm2020 → esm2022}/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/modules/select/select.module.mjs +29 -29
  79. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav/sidenav.component.mjs +4 -4
  80. package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +87 -0
  81. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav-stack.service.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav.module.mjs +5 -5
  84. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav.service.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/modules/stamp/stamp-module.module.mjs +5 -5
  86. package/esm2022/lib/modules/stamp/stamp.component.mjs +23 -0
  87. package/{esm2020 → esm2022}/lib/modules/table-button/table-button.component.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/modules/table-button/table-button.module.mjs +5 -5
  89. package/{esm2020 → esm2022}/lib/services/debounce.service.mjs +4 -4
  90. package/{esm2020 → esm2022}/lib/services/enum.service.mjs +4 -4
  91. package/{esm2020 → esm2022}/lib/services/link-mutation.service.mjs +4 -4
  92. package/{esm2020 → esm2022}/lib/services/persistence.service.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/services/swiss-parsing-date-adapter.service.mjs +4 -4
  94. package/{fesm2020 → fesm2022}/ecodev-natural.mjs +555 -537
  95. package/fesm2022/ecodev-natural.mjs.map +1 -0
  96. package/lib/classes/abstract-controller.d.ts +12 -6
  97. package/lib/classes/abstract-detail.d.ts +5 -6
  98. package/lib/classes/abstract-list.d.ts +7 -8
  99. package/lib/classes/abstract-navigable-list.d.ts +3 -3
  100. package/lib/directives/http-prefix.directive.d.ts +1 -1
  101. package/lib/modules/avatar/component/avatar.component.d.ts +1 -1
  102. package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -1
  103. package/lib/modules/common/directives/linkable-tab.directive.d.ts +1 -1
  104. package/lib/modules/common/directives/src-density.directive.d.ts +1 -1
  105. package/lib/modules/detail-header/detail-header.component.d.ts +1 -1
  106. package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -2
  107. package/lib/modules/file/abstract-file.d.ts +1 -1
  108. package/lib/modules/file/component/file.component.d.ts +1 -1
  109. package/lib/modules/file/file-select.directive.d.ts +1 -1
  110. package/lib/modules/fixed-button/fixed-button.component.d.ts +1 -1
  111. package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +2 -3
  112. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +1 -1
  113. package/lib/modules/icon/icon.directive.d.ts +1 -1
  114. package/lib/modules/panels/panels.service.d.ts +1 -1
  115. package/lib/modules/panels/types.d.ts +10 -12
  116. package/lib/modules/relations/relations.component.d.ts +1 -1
  117. package/lib/modules/search/group/group.component.d.ts +1 -1
  118. package/lib/modules/search/input/input.component.d.ts +1 -1
  119. package/lib/modules/search/search/search.component.d.ts +1 -1
  120. package/lib/modules/select/abstract-select.component.d.ts +1 -1
  121. package/lib/modules/select/select/select.component.d.ts +1 -1
  122. package/lib/modules/select/select-enum/select-enum.component.d.ts +1 -1
  123. package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +1 -1
  124. package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +1 -1
  125. package/lib/modules/sidenav/sidenav.service.d.ts +1 -1
  126. package/lib/modules/stamp/stamp.component.d.ts +1 -1
  127. package/lib/modules/table-button/table-button.component.d.ts +1 -1
  128. package/package.json +17 -25
  129. package/esm2020/lib/classes/abstract-controller.mjs +0 -30
  130. package/esm2020/lib/classes/abstract-detail.mjs +0 -158
  131. package/esm2020/lib/classes/abstract-list.mjs +0 -435
  132. package/esm2020/lib/classes/abstract-navigable-list.mjs +0 -131
  133. package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +0 -166
  134. package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +0 -28
  135. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +0 -53
  136. package/esm2020/lib/modules/panels/panels.service.mjs +0 -325
  137. package/esm2020/lib/modules/panels/panels.urlmatcher.mjs +0 -81
  138. package/esm2020/lib/modules/panels/types.mjs +0 -3
  139. package/esm2020/lib/modules/relations/relations.component.mjs +0 -210
  140. package/esm2020/lib/modules/search/group/group.component.mjs +0 -51
  141. package/esm2020/lib/modules/search/search.module.mjs +0 -90
  142. package/esm2020/lib/modules/select/select/select.component.mjs +0 -278
  143. package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +0 -46
  144. package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +0 -86
  145. package/esm2020/lib/modules/stamp/stamp.component.mjs +0 -22
  146. package/fesm2015/ecodev-natural.mjs +0 -11532
  147. package/fesm2015/ecodev-natural.mjs.map +0 -1
  148. package/fesm2020/ecodev-natural.mjs.map +0 -1
  149. /package/{esm2020 → esm2022}/ecodev-natural.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/classes/apollo-utils.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/classes/data-source.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/classes/query-variable-manager-utils.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/classes/query-variable-manager.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/classes/rxjs.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/classes/tld.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/classes/utility.mjs +0 -0
  157. /package/{esm2020 → esm2022}/lib/classes/validators.mjs +0 -0
  158. /package/{esm2020 → esm2022}/lib/modules/alert/public-api.mjs +0 -0
  159. /package/{esm2020 → esm2022}/lib/modules/avatar/public-api.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/modules/avatar/service/md5.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/gravatar.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/image.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/initials.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/source.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/modules/columns-picker/public-api.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/modules/columns-picker/types.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/modules/common/public-api.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/modules/detail-header/public-api.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/modules/dialog-trigger/public-api.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/modules/dropdown-components/public-api.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/modules/dropdown-components/types.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/modules/dropdown-components/utils.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/modules/file/public-api.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/modules/file/types.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/modules/file/utils.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/modules/fixed-button/public-api.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/modules/fixed-button-detail/public-api.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/flat-node.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/model-node.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/public-api.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/modules/icon/public-api.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/modules/logger/public-api.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/modules/matomo/public-api.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/modules/panels/public-api.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/modules/relations/public-api.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/modules/search/classes/graphql-doctrine.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/modules/search/classes/graphql-doctrine.types.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/modules/search/classes/transformers.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/modules/search/classes/url.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/modules/search/classes/utils.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown-container-animations.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown-ref.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/modules/search/public-api.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/modules/search/types/dropdown-component.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/modules/search/types/facet.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/modules/search/types/values.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/modules/select/public-api.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/modules/sidenav/public-api.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/modules/stamp/public-api.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/modules/table-button/public-api.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/services/abstract-model.service.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/types/types.mjs +0 -0
  206. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -1,158 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { UntypedFormGroup } from '@angular/forms';
3
- import { ActivatedRoute, Router } from '@angular/router';
4
- import { kebabCase, merge, mergeWith, omit } from 'lodash-es';
5
- import { NaturalAlertService } from '../modules/alert/alert.service';
6
- import { NaturalAbstractPanel } from '../modules/panels/abstract-panel';
7
- import { finalize } from 'rxjs/operators';
8
- import { ifValid, validateAllFormControls } from './validators';
9
- import { mergeOverrideArray } from './utility';
10
- import { EMPTY, endWith, last, switchMap } from 'rxjs';
11
- import * as i0 from "@angular/core";
12
- // @dynamic
13
- export class NaturalAbstractDetail extends NaturalAbstractPanel {
14
- constructor(key, service, injector) {
15
- super();
16
- this.key = key;
17
- this.service = service;
18
- this.injector = injector;
19
- /**
20
- * Empty placeholder for data retrieved by the server
21
- */
22
- this.data = {
23
- model: {},
24
- };
25
- /**
26
- * Form that manages the data from the controller
27
- */
28
- this.form = new UntypedFormGroup({});
29
- /**
30
- * Show / hides the bottom fab button (mostly to hide it when we are on other tabs where semantic of button can conflict with ...
31
- * semantic of data on other tab, like relations that list other objects)
32
- */
33
- this.showFabButton = true;
34
- this.alertService = injector.get(NaturalAlertService);
35
- this.router = injector.get(Router);
36
- this.route = injector.get(ActivatedRoute);
37
- }
38
- ngOnInit() {
39
- if (!this.isPanel) {
40
- this.route.data.subscribe(data => {
41
- this.data = merge({ model: this.service.getConsolidatedForClient() }, data[this.key]);
42
- this.data = merge(this.data, omit(data, [this.key]));
43
- this.initForm();
44
- });
45
- }
46
- else {
47
- this.initForm();
48
- }
49
- }
50
- changeTab(index) {
51
- this.showFabButton = index === 0;
52
- }
53
- update(now = false) {
54
- if (!this.data.model.id) {
55
- return;
56
- }
57
- validateAllFormControls(this.form);
58
- ifValid(this.form).subscribe(() => {
59
- this.formToData();
60
- const postUpdate = (model) => {
61
- this.alertService.info($localize `Mis à jour`);
62
- this.form.patchValue(model);
63
- this.postUpdate(model);
64
- };
65
- if (now) {
66
- this.service.updateNow(this.data.model).subscribe(postUpdate);
67
- }
68
- else {
69
- this.service.update(this.data.model).subscribe(postUpdate);
70
- }
71
- });
72
- }
73
- create(redirect = true) {
74
- validateAllFormControls(this.form);
75
- if (!this.form.valid) {
76
- return;
77
- }
78
- this.formToData();
79
- this.form.disable();
80
- this.service
81
- .create(this.data.model)
82
- .pipe(switchMap(model => {
83
- this.alertService.info($localize `Créé`);
84
- this.form.patchValue(model);
85
- return this.postCreate(model).pipe(endWith(model), last());
86
- }), switchMap(model => {
87
- if (redirect) {
88
- if (this.isPanel) {
89
- const oldUrl = this.router.url;
90
- const nextUrl = this.panelData?.config.params.nextRoute;
91
- const newUrl = oldUrl.replace('/new', '/' + model.id) + (nextUrl ? '/' + nextUrl : '');
92
- return this.router.navigateByUrl(newUrl); // replace /new by /123
93
- }
94
- else {
95
- return this.router.navigate(['..', model.id], { relativeTo: this.route });
96
- }
97
- }
98
- return EMPTY;
99
- }), finalize(() => this.form.enable()))
100
- .subscribe();
101
- }
102
- delete(redirectionRoute) {
103
- this.form.disable();
104
- this.alertService
105
- .confirm($localize `Suppression`, $localize `Voulez-vous supprimer définitivement cet élément ?`, $localize `Supprimer définitivement`)
106
- .pipe(switchMap(confirmed => {
107
- if (!confirmed) {
108
- return EMPTY;
109
- }
110
- this.preDelete(this.data.model);
111
- return this.service.delete([this.data.model]).pipe(switchMap(() => {
112
- this.alertService.info($localize `Supprimé`);
113
- if (this.isPanel) {
114
- this.panelService?.goToPenultimatePanel();
115
- return EMPTY;
116
- }
117
- else {
118
- const defaultRoute = ['../../' + kebabCase(this.key)];
119
- return this.router.navigate(redirectionRoute ? redirectionRoute : defaultRoute, {
120
- relativeTo: this.route,
121
- });
122
- }
123
- }));
124
- }), finalize(() => this.form.enable()))
125
- .subscribe();
126
- }
127
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
128
- postUpdate(model) {
129
- // noop
130
- }
131
- /**
132
- * Returns an observable that will be subscribed to immediately and the
133
- * redirect navigation will only happen after the observable completes.
134
- */
135
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
- postCreate(model) {
137
- return EMPTY;
138
- }
139
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
140
- preDelete(model) {
141
- // noop
142
- }
143
- initForm() {
144
- this.form = this.service.getFormGroup(this.data.model);
145
- }
146
- /**
147
- * Merge values of form into `this.data.model`.
148
- */
149
- formToData() {
150
- mergeWith(this.data.model, this.form.value, mergeOverrideArray);
151
- }
152
- }
153
- NaturalAbstractDetail.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalAbstractDetail, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
154
- NaturalAbstractDetail.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NaturalAbstractDetail, usesInheritance: true, ngImport: i0 });
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalAbstractDetail, decorators: [{
156
- type: Directive
157
- }], ctorParameters: function () { return [{ type: undefined }, { type: undefined }, { type: i0.Injector }]; } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUM1RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFHN0MsT0FBTyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFjLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFakUsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFjVCxTQUFRLG9CQUFvQjtJQW9DNUIsWUFDdUIsR0FBVyxFQUNkLE9BQWlCLEVBQ2QsUUFBa0I7UUFFckMsS0FBSyxFQUFFLENBQUM7UUFKVyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFwQ3pDOztXQUVHO1FBQ2EsU0FBSSxHQUFRO1lBQ3hCLEtBQUssRUFBRSxFQUFF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QzVFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztxQkFDekIsQ0FBQyxDQUFDO2lCQUNOO1lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxVQUFVLENBQUMsS0FBK0I7UUFDaEQsT0FBTztJQUNYLENBQUM7SUFFRDs7O09BR0c7SUFDSCw2REFBNkQ7SUFDbkQsVUFBVSxDQUFDLEtBQStCO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsU0FBUyxDQUFDLEtBQTRCO1FBQzVDLE9BQU87SUFDWCxDQUFDO0lBRVMsUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxVQUFVO1FBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7O2tIQTdNUSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdG9yLCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2tlYmFiQ2FzZSwgbWVyZ2UsIG1lcmdlV2l0aCwgb21pdH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7TmF0dXJhbEFsZXJ0U2VydmljZX0gZnJvbSAnLi4vbW9kdWxlcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0UGFuZWx9IGZyb20gJy4uL21vZHVsZXMvcGFuZWxzL2Fic3RyYWN0LXBhbmVsJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0TW9kZWxTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7RXh0cmFjdFRjcmVhdGUsIEV4dHJhY3RUb25lLCBFeHRyYWN0VHVwZGF0ZSwgTGl0ZXJhbH0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtmaW5hbGl6ZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtpZlZhbGlkLCB2YWxpZGF0ZUFsbEZvcm1Db250cm9sc30gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7bWVyZ2VPdmVycmlkZUFycmF5fSBmcm9tICcuL3V0aWxpdHknO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcbmltcG9ydCB7UXVlcnlWYXJpYWJsZXN9IGZyb20gJy4vcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0VNUFRZLCBlbmRXaXRoLCBsYXN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTmF0dXJhbEFic3RyYWN0RGV0YWlsPFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBQYWdpbmF0ZWREYXRhPExpdGVyYWw+LFxuICAgICAgICAgICAgUXVlcnlWYXJpYWJsZXMsXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55XG4gICAgICAgID4sXG4gICAgPlxuICAgIGV4dGVuZHMgTmF0dXJhbEFic3RyYWN0UGFuZWxcbiAgICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAgIC8qKlxuICAgICAqIEVtcHR5IHBsYWNlaG9sZGVyIGZvciBkYXRhIHJldHJpZXZlZCBieSB0aGUgc2VydmVyXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGRhdGE6IGFueSA9IHtcbiAgICAgICAgbW9kZWw6IHt9LFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHRoYXQgbWFuYWdlcyB0aGUgZGF0YSBmcm9tIHRoZSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IC8gaGlkZXMgdGhlIGJvdHRvbSBmYWIgYnV0dG9uIChtb3N0bHkgdG8gaGlkZSBpdCB3aGVuIHdlIGFyZSBvbiBvdGhlciB0YWJzIHdoZXJlIHNlbWFudGljIG9mIGJ1dHRvbiBjYW4gY29uZmxpY3Qgd2l0aCAuLi5cbiAgICAgKiBzZW1hbnRpYyBvZiBkYXRhIG9uIG90aGVyIHRhYiwgbGlrZSByZWxhdGlvbnMgdGhhdCBsaXN0IG90aGVyIG9iamVjdHMpXG4gICAgICovXG4gICAgcHVibGljIHNob3dGYWJCdXR0b24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhbGVydFNlcnZpY2U6IE5hdHVyYWxBbGVydFNlcnZpY2U7XG5cbiAgICAvKipcbiAgICAgKiBJbmplY3RlZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBrZXk6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFRTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5hdHVyYWxBbGVydFNlcnZpY2UpO1xuICAgICAgICB0aGlzLnJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgICAgICB0aGlzLnJvdXRlID0gaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IG1lcmdlKHttb2RlbDogdGhpcy5zZXJ2aWNlLmdldENvbnNvbGlkYXRlZEZvckNsaWVudCgpfSwgZGF0YVt0aGlzLmtleV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IG1lcmdlKHRoaXMuZGF0YSwgb21pdChkYXRhLCBbdGhpcy5rZXldKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmFiQnV0dG9uID0gaW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShub3cgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5tb2RlbC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZlZhbGlkKHRoaXMuZm9ybSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybVRvRGF0YSgpO1xuICAgICAgICAgICAgY29uc3QgcG9zdFVwZGF0ZSA9IChtb2RlbDogRXh0cmFjdFR1cGRhdGU8VFNlcnZpY2U+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgTWlzIMOgIGpvdXJgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShtb2RlbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0VXBkYXRlKG1vZGVsKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChub3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlTm93KHRoaXMuZGF0YS5tb2RlbCkuc3Vic2NyaWJlKHBvc3RVcGRhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMuZGF0YS5tb2RlbCkuc3Vic2NyaWJlKHBvc3RVcGRhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlKHJlZGlyZWN0ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB2YWxpZGF0ZUFsbEZvcm1Db250cm9scyh0aGlzLmZvcm0pO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm1Ub0RhdGEoKTtcbiAgICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcblxuICAgICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC5jcmVhdGUodGhpcy5kYXRhLm1vZGVsKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgQ3LDqcOpYCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKG1vZGVsKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3N0Q3JlYXRlKG1vZGVsKS5waXBlKGVuZFdpdGgobW9kZWwpLCBsYXN0KCkpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9sZFVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VXJsID0gdGhpcy5wYW5lbERhdGE/LmNvbmZpZy5wYXJhbXMubmV4dFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1VybCA9IG9sZFVybC5yZXBsYWNlKCcvbmV3JywgJy8nICsgbW9kZWwuaWQpICsgKG5leHRVcmwgPyAnLycgKyBuZXh0VXJsIDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5ld1VybCk7IC8vIHJlcGxhY2UgL25ldyBieSAvMTIzXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgbW9kZWwuaWRdLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuZm9ybS5lbmFibGUoKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZShyZWRpcmVjdGlvblJvdXRlPzogdW5rbm93bltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlXG4gICAgICAgICAgICAuY29uZmlybShcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGNldCDDqWzDqW1lbnQgP2AsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGNvbmZpcm1lZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZURlbGV0ZSh0aGlzLmRhdGEubW9kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZGVsZXRlKFt0aGlzLmRhdGEubW9kZWxdKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBTdXBwcmltw6lgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbFNlcnZpY2U/LmdvVG9QZW51bHRpbWF0ZVBhbmVsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRSb3V0ZSA9IFsnLi4vLi4vJyArIGtlYmFiQ2FzZSh0aGlzLmtleSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUocmVkaXJlY3Rpb25Sb3V0ZSA/IHJlZGlyZWN0aW9uUm91dGUgOiBkZWZhdWx0Um91dGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuZm9ybS5lbmFibGUoKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBwb3N0VXBkYXRlKG1vZGVsOiBFeHRyYWN0VHVwZGF0ZTxUU2VydmljZT4pOiB2b2lkIHtcbiAgICAgICAgLy8gbm9vcFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgYmUgc3Vic2NyaWJlZCB0byBpbW1lZGlhdGVseSBhbmQgdGhlXG4gICAgICogcmVkaXJlY3QgbmF2aWdhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIGFmdGVyIHRoZSBvYnNlcnZhYmxlIGNvbXBsZXRlcy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHBvc3RDcmVhdGUobW9kZWw6IEV4dHJhY3RUY3JlYXRlPFRTZXJ2aWNlPik6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBwcmVEZWxldGUobW9kZWw6IEV4dHJhY3RUb25lPFRTZXJ2aWNlPik6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwKHRoaXMuZGF0YS5tb2RlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2UgdmFsdWVzIG9mIGZvcm0gaW50byBgdGhpcy5kYXRhLm1vZGVsYC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZm9ybVRvRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgbWVyZ2VXaXRoKHRoaXMuZGF0YS5tb2RlbCwgdGhpcy5mb3JtLnZhbHVlLCBtZXJnZU92ZXJyaWRlQXJyYXkpO1xuICAgIH1cbn1cbiJdfQ==