@mediusinc/mng-commons 0.0.1-rc.2

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 (187) hide show
  1. package/README.md +19 -0
  2. package/esm2020/lib/api/models/builders/query-param.builder.mjs +49 -0
  3. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -0
  4. package/esm2020/lib/api/models/filter-param.model.mjs +46 -0
  5. package/esm2020/lib/api/models/index.mjs +9 -0
  6. package/esm2020/lib/api/models/mappers.mjs +17 -0
  7. package/esm2020/lib/api/models/query-mode.model.mjs +19 -0
  8. package/esm2020/lib/api/models/query-param.model.mjs +69 -0
  9. package/esm2020/lib/api/models/query-result.model.mjs +45 -0
  10. package/esm2020/lib/api/models/serialization.model.mjs +2 -0
  11. package/esm2020/lib/api/services/abstract-crud-api.service.mjs +72 -0
  12. package/esm2020/lib/api/services/index.mjs +2 -0
  13. package/esm2020/lib/api/utils/index.mjs +3 -0
  14. package/esm2020/lib/api/utils/medius-rest.util.mjs +70 -0
  15. package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -0
  16. package/esm2020/lib/components/action/action.component.mjs +63 -0
  17. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -0
  18. package/esm2020/lib/components/action/index.mjs +4 -0
  19. package/esm2020/lib/components/action/route/action-route.component.mjs +144 -0
  20. package/esm2020/lib/components/form/editor/form-editor.component.mjs +140 -0
  21. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +58 -0
  22. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +51 -0
  23. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -0
  24. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +26 -0
  25. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +94 -0
  26. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +124 -0
  27. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -0
  28. package/esm2020/lib/components/form/formly/fields/index.mjs +8 -0
  29. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -0
  30. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -0
  31. package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -0
  32. package/esm2020/lib/components/form/index.mjs +2 -0
  33. package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +27 -0
  34. package/esm2020/lib/components/layout/app.footer.component.mjs +35 -0
  35. package/esm2020/lib/components/layout/app.main.component.mjs +25 -0
  36. package/esm2020/lib/components/layout/app.main.component.service.mjs +133 -0
  37. package/esm2020/lib/components/layout/app.menu.component.mjs +38 -0
  38. package/esm2020/lib/components/layout/app.menuitem.component.mjs +243 -0
  39. package/esm2020/lib/components/layout/app.topbar.component.mjs +135 -0
  40. package/esm2020/lib/components/layout/index.mjs +7 -0
  41. package/esm2020/lib/components/tableview/index.mjs +4 -0
  42. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +31 -0
  43. package/esm2020/lib/components/tableview/table/table.component.mjs +173 -0
  44. package/esm2020/lib/components/tableview/tableview.component.mjs +82 -0
  45. package/esm2020/lib/components/tableview/tableview.component.service.mjs +18 -0
  46. package/esm2020/lib/config/formly.config.mjs +165 -0
  47. package/esm2020/lib/config/index.mjs +2 -0
  48. package/esm2020/lib/directives/index.mjs +2 -0
  49. package/esm2020/lib/directives/template.directive.mjs +25 -0
  50. package/esm2020/lib/mng-commons.module.mjs +338 -0
  51. package/esm2020/lib/models/action/action.model.mjs +58 -0
  52. package/esm2020/lib/models/action/index.mjs +2 -0
  53. package/esm2020/lib/models/config/index.mjs +2 -0
  54. package/esm2020/lib/models/config/mng-config.model.mjs +3 -0
  55. package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +283 -0
  56. package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +647 -0
  57. package/esm2020/lib/models/descriptors/index.mjs +6 -0
  58. package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +34 -0
  59. package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +123 -0
  60. package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +124 -0
  61. package/esm2020/lib/models/events/editor-event.model.mjs +14 -0
  62. package/esm2020/lib/models/events/index.mjs +3 -0
  63. package/esm2020/lib/models/events/table-event.model.mjs +16 -0
  64. package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +2 -0
  65. package/esm2020/lib/models/interfaces/index.mjs +2 -0
  66. package/esm2020/lib/models/providers/data-provider.model.mjs +86 -0
  67. package/esm2020/lib/models/providers/index.mjs +2 -0
  68. package/esm2020/lib/models/types/index.mjs +3 -0
  69. package/esm2020/lib/models/types/type.decorator.mjs +8 -0
  70. package/esm2020/lib/models/types/type.model.mjs +2 -0
  71. package/esm2020/lib/models/validators/field.validator.mjs +21 -0
  72. package/esm2020/lib/models/validators/index.mjs +2 -0
  73. package/esm2020/lib/pipes/index.mjs +2 -0
  74. package/esm2020/lib/pipes/property-path.pipe.mjs +36 -0
  75. package/esm2020/lib/services/action.service.mjs +239 -0
  76. package/esm2020/lib/services/breadcrumb.service.mjs +21 -0
  77. package/esm2020/lib/services/configuration.service.mjs +77 -0
  78. package/esm2020/lib/services/index.mjs +7 -0
  79. package/esm2020/lib/services/menu.service.mjs +26 -0
  80. package/esm2020/lib/services/navigation.service.mjs +49 -0
  81. package/esm2020/lib/services/providers/config-service.provider.mjs +12 -0
  82. package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -0
  83. package/esm2020/lib/services/providers/index.mjs +3 -0
  84. package/esm2020/lib/services/settings.service.mjs +40 -0
  85. package/esm2020/lib/utils/editor-formly.util.mjs +165 -0
  86. package/esm2020/lib/utils/i18n.util.mjs +75 -0
  87. package/esm2020/lib/utils/index.mjs +5 -0
  88. package/esm2020/lib/utils/model.util.mjs +38 -0
  89. package/esm2020/lib/utils/type.util.mjs +43 -0
  90. package/esm2020/mediusinc-mng-commons.mjs +5 -0
  91. package/esm2020/public-api.mjs +33 -0
  92. package/fesm2015/mediusinc-mng-commons.mjs +5056 -0
  93. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -0
  94. package/fesm2020/mediusinc-mng-commons.mjs +5012 -0
  95. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -0
  96. package/lib/api/models/builders/query-param.builder.d.ts +11 -0
  97. package/lib/api/models/filter-match-type.model.d.ts +21 -0
  98. package/lib/api/models/filter-param.model.d.ts +23 -0
  99. package/lib/api/models/index.d.ts +8 -0
  100. package/lib/api/models/mappers.d.ts +6 -0
  101. package/lib/api/models/query-mode.model.d.ts +16 -0
  102. package/lib/api/models/query-param.model.d.ts +31 -0
  103. package/lib/api/models/query-result.model.d.ts +36 -0
  104. package/lib/api/models/serialization.model.d.ts +8 -0
  105. package/lib/api/services/abstract-crud-api.service.d.ts +23 -0
  106. package/lib/api/services/index.d.ts +1 -0
  107. package/lib/api/utils/index.d.ts +2 -0
  108. package/lib/api/utils/medius-rest.util.d.ts +6 -0
  109. package/lib/api/utils/object-serializer.util.d.ts +30 -0
  110. package/lib/components/action/action.component.d.ts +36 -0
  111. package/lib/components/action/dialog/action-dialog.component.d.ts +48 -0
  112. package/lib/components/action/index.d.ts +3 -0
  113. package/lib/components/action/route/action-route.component.d.ts +32 -0
  114. package/lib/components/form/editor/form-editor.component.d.ts +37 -0
  115. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +21 -0
  116. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +19 -0
  117. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -0
  118. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -0
  119. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -0
  120. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -0
  121. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -0
  122. package/lib/components/form/formly/fields/index.d.ts +7 -0
  123. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -0
  124. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -0
  125. package/lib/components/form/formly/wrappers/index.d.ts +2 -0
  126. package/lib/components/form/index.d.ts +1 -0
  127. package/lib/components/layout/app.breadcrumb.component.d.ts +16 -0
  128. package/lib/components/layout/app.footer.component.d.ts +8 -0
  129. package/lib/components/layout/app.main.component.d.ts +12 -0
  130. package/lib/components/layout/app.main.component.service.d.ts +40 -0
  131. package/lib/components/layout/app.menu.component.d.ts +14 -0
  132. package/lib/components/layout/app.menuitem.component.d.ts +31 -0
  133. package/lib/components/layout/app.topbar.component.d.ts +16 -0
  134. package/lib/components/layout/index.d.ts +6 -0
  135. package/lib/components/tableview/index.d.ts +3 -0
  136. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +15 -0
  137. package/lib/components/tableview/table/table.component.d.ts +47 -0
  138. package/lib/components/tableview/tableview.component.d.ts +36 -0
  139. package/lib/components/tableview/tableview.component.service.d.ts +11 -0
  140. package/lib/config/formly.config.d.ts +8 -0
  141. package/lib/config/index.d.ts +1 -0
  142. package/lib/directives/index.d.ts +1 -0
  143. package/lib/directives/template.directive.d.ts +11 -0
  144. package/lib/mng-commons.module.d.ts +74 -0
  145. package/lib/models/action/action.model.d.ts +53 -0
  146. package/lib/models/action/index.d.ts +1 -0
  147. package/lib/models/config/index.d.ts +1 -0
  148. package/lib/models/config/mng-config.model.d.ts +19 -0
  149. package/lib/models/descriptors/action-descriptor.model.d.ts +124 -0
  150. package/lib/models/descriptors/editor-descriptor.model.d.ts +248 -0
  151. package/lib/models/descriptors/index.d.ts +5 -0
  152. package/lib/models/descriptors/model-descriptor.model.d.ts +15 -0
  153. package/lib/models/descriptors/table-descriptor.model.d.ts +45 -0
  154. package/lib/models/descriptors/tableview-descriptor.model.d.ts +38 -0
  155. package/lib/models/events/editor-event.model.d.ts +11 -0
  156. package/lib/models/events/index.d.ts +2 -0
  157. package/lib/models/events/table-event.model.d.ts +17 -0
  158. package/lib/models/interfaces/confirmation-service.model.d.ts +6 -0
  159. package/lib/models/interfaces/index.d.ts +1 -0
  160. package/lib/models/providers/data-provider.model.d.ts +62 -0
  161. package/lib/models/providers/index.d.ts +1 -0
  162. package/lib/models/types/index.d.ts +2 -0
  163. package/lib/models/types/type.decorator.d.ts +2 -0
  164. package/lib/models/types/type.model.d.ts +10 -0
  165. package/lib/models/validators/field.validator.d.ts +18 -0
  166. package/lib/models/validators/index.d.ts +1 -0
  167. package/lib/pipes/index.d.ts +1 -0
  168. package/lib/pipes/property-path.pipe.d.ts +7 -0
  169. package/lib/services/action.service.d.ts +92 -0
  170. package/lib/services/breadcrumb.service.d.ts +9 -0
  171. package/lib/services/configuration.service.d.ts +35 -0
  172. package/lib/services/index.d.ts +6 -0
  173. package/lib/services/menu.service.d.ts +11 -0
  174. package/lib/services/navigation.service.d.ts +14 -0
  175. package/lib/services/providers/config-service.provider.d.ts +5 -0
  176. package/lib/services/providers/formly-config.provider.d.ts +4 -0
  177. package/lib/services/providers/index.d.ts +2 -0
  178. package/lib/services/settings.service.d.ts +18 -0
  179. package/lib/utils/editor-formly.util.d.ts +9 -0
  180. package/lib/utils/i18n.util.d.ts +14 -0
  181. package/lib/utils/index.d.ts +4 -0
  182. package/lib/utils/model.util.d.ts +5 -0
  183. package/lib/utils/type.util.d.ts +15 -0
  184. package/mediusinc-mng-commons-0.0.1-rc.2.tgz +0 -0
  185. package/mediusinc-mng-commons.d.ts +5 -0
  186. package/package.json +38 -0
  187. package/public-api.d.ts +22 -0
@@ -0,0 +1,226 @@
1
+ import { enumsMapBase, typeMapBase } from '../models';
2
+ import { TypeUtil } from '../../utils';
3
+ export class ObjectSerializer {
4
+ constructor() {
5
+ this._primitives = [
6
+ 'string',
7
+ 'boolean',
8
+ 'double',
9
+ 'integer',
10
+ 'long',
11
+ 'float',
12
+ 'number',
13
+ 'any'
14
+ ];
15
+ this._typeMap = {
16
+ ...typeMapBase
17
+ };
18
+ this._enumMap = {
19
+ ...enumsMapBase
20
+ };
21
+ }
22
+ /**
23
+ * Only use one instance of object (out of Angular context)
24
+ */
25
+ static get() {
26
+ return ObjectSerializer._instance;
27
+ }
28
+ get primitives() { return this._primitives; }
29
+ get typeMap() { return this._typeMap; }
30
+ get enumMap() { return this._enumMap; }
31
+ findAttributeDefinitionByClassType(type, attributeName) {
32
+ return this.findAttributeDefinition(TypeUtil.findTypeName(type), attributeName);
33
+ }
34
+ findAttributeDefinition(typeName, attributeName) {
35
+ const attributeDefs = this.findAttributesDefinition(typeName);
36
+ if (!attributeDefs) {
37
+ return null;
38
+ }
39
+ for (let attribute of attributeDefs) {
40
+ if (attribute.name === attributeName) {
41
+ return attribute;
42
+ }
43
+ }
44
+ return null;
45
+ }
46
+ findAttributesDefinitionByClassType(type) {
47
+ return this.findAttributesDefinition(TypeUtil.findTypeName(type));
48
+ }
49
+ findAttributesDefinition(typeName) {
50
+ const typeDef = this.findType(typeName);
51
+ if (!typeDef) {
52
+ return null;
53
+ }
54
+ return typeDef.getAttributeTypeMap();
55
+ }
56
+ findByClassType(type) {
57
+ return this.findType(TypeUtil.findTypeName(type));
58
+ }
59
+ findType(typeName) {
60
+ return this._typeMap[typeName];
61
+ }
62
+ findEnum(enumName) {
63
+ return this._enumMap[enumName];
64
+ }
65
+ registerTypes(types) {
66
+ for (const key in types) {
67
+ this.registerType(types[key], key);
68
+ }
69
+ }
70
+ registerType(type, optTypeName) {
71
+ // try to find name from decorator
72
+ let typeName = TypeUtil.getDecoratorTypeName(type);
73
+ if (!typeName) {
74
+ // defined name from optional type name
75
+ typeName = optTypeName;
76
+ if (!typeName) {
77
+ console.warn(`Registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);
78
+ return;
79
+ }
80
+ }
81
+ if (typeof this._typeMap[typeName] !== 'undefined') {
82
+ console.warn(`Registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);
83
+ }
84
+ else {
85
+ TypeUtil.defineReflectTypeName(type, typeName);
86
+ this._typeMap[typeName] = type;
87
+ }
88
+ }
89
+ registerEnums(enums) {
90
+ for (const key in enums) {
91
+ if (typeof this._enumMap[key] !== 'undefined') {
92
+ console.warn(`Registering enum ${key} skipped, because enum already exists.`);
93
+ }
94
+ else {
95
+ this._enumMap[key] = enums[key];
96
+ }
97
+ }
98
+ }
99
+ findCorrectType(data, expectedType) {
100
+ if (data == undefined) {
101
+ return expectedType;
102
+ }
103
+ else if (this._primitives.indexOf(expectedType.toLowerCase()) !== -1) {
104
+ return expectedType;
105
+ }
106
+ else if (expectedType === 'Date') {
107
+ return expectedType;
108
+ }
109
+ else {
110
+ if (this._enumMap[expectedType]) {
111
+ return expectedType;
112
+ }
113
+ if (!this._typeMap[expectedType]) {
114
+ return expectedType; // w/e we don't know the type
115
+ }
116
+ // Check the discriminator
117
+ const discriminatorProperty = this._typeMap[expectedType].discriminator;
118
+ if (discriminatorProperty == null) {
119
+ return expectedType; // the type does not have a discriminator. use it.
120
+ }
121
+ else {
122
+ if (data[discriminatorProperty]) {
123
+ const discriminatorType = data[discriminatorProperty];
124
+ if (this._typeMap[discriminatorType]) {
125
+ return discriminatorType; // use the type given in the discriminator
126
+ }
127
+ else {
128
+ return expectedType; // discriminator did not map to a type
129
+ }
130
+ }
131
+ else {
132
+ return expectedType; // discriminator was not present (or an empty string)
133
+ }
134
+ }
135
+ }
136
+ }
137
+ serializeClass(data, type) {
138
+ return this.serialize(data, TypeUtil.findTypeName(type));
139
+ }
140
+ serialize(data, type) {
141
+ if (data == undefined) {
142
+ return data;
143
+ }
144
+ else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {
145
+ return data;
146
+ }
147
+ else if (type.lastIndexOf('Array<', 0) === 0) { // string.startsWith pre es6
148
+ let subType = type.replace('Array<', ''); // Array<Type> => Type>
149
+ subType = subType.substring(0, subType.length - 1); // Type> => Type
150
+ const transformedData = [];
151
+ // tslint:disable-next-line:prefer-for-of
152
+ for (let index = 0; index < data.length; index++) {
153
+ const datum = data[index];
154
+ transformedData.push(this.serialize(datum, subType));
155
+ }
156
+ return transformedData;
157
+ }
158
+ else if (type === 'Date') {
159
+ return data.toISOString();
160
+ }
161
+ else {
162
+ if (this._enumMap[type]) {
163
+ return data;
164
+ }
165
+ if (!this._typeMap[type]) { // in case we dont know the type
166
+ return data;
167
+ }
168
+ // Get the actual type of this object
169
+ type = this.findCorrectType(data, type);
170
+ // get the map for the correct type.
171
+ const attributeTypes = this._typeMap[type].getAttributeTypeMap();
172
+ const instance = {};
173
+ // tslint:disable-next-line:prefer-for-of
174
+ for (let index = 0; index < attributeTypes.length; index++) {
175
+ const attributeType = attributeTypes[index];
176
+ instance[attributeType.baseName] = this.serialize(data[attributeType.name], attributeType.type);
177
+ }
178
+ return instance;
179
+ }
180
+ }
181
+ deserializeClass(data, type) {
182
+ return this.deserialize(data, TypeUtil.findTypeName(type));
183
+ }
184
+ deserialize(data, type) {
185
+ // polymorphism may change the actual type.
186
+ type = this.findCorrectType(data, type);
187
+ if (data == undefined) {
188
+ return data;
189
+ }
190
+ else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {
191
+ return data;
192
+ }
193
+ else if (type.lastIndexOf('Array<', 0) === 0) { // string.startsWith pre es6
194
+ let subType = type.replace('Array<', ''); // Array<Type> => Type>
195
+ subType = subType.substring(0, subType.length - 1); // Type> => Type
196
+ const transformedData = [];
197
+ // tslint:disable-next-line:prefer-for-of
198
+ for (let index = 0; index < data.length; index++) {
199
+ const datum = data[index];
200
+ transformedData.push(this.deserialize(datum, subType));
201
+ }
202
+ return transformedData;
203
+ }
204
+ else if (type === 'Date') {
205
+ return new Date(data);
206
+ }
207
+ else {
208
+ if (this._enumMap[type]) { // is Enum
209
+ return data;
210
+ }
211
+ if (!this._typeMap[type]) { // dont know the type
212
+ return data;
213
+ }
214
+ const instance = new this._typeMap[type]();
215
+ const attributeTypes = this._typeMap[type].getAttributeTypeMap();
216
+ // tslint:disable-next-line:prefer-for-of
217
+ for (let index = 0; index < attributeTypes.length; index++) {
218
+ const attributeType = attributeTypes[index];
219
+ instance[attributeType.name] = this.deserialize(data[attributeType.baseName], attributeType.type);
220
+ }
221
+ return instance;
222
+ }
223
+ }
224
+ }
225
+ ObjectSerializer._instance = new ObjectSerializer();
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXNlcmlhbGl6ZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvYXBpL3V0aWxzL29iamVjdC1zZXJpYWxpemVyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFlBQVksRUFBdUIsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXZGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFckMsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUVxQixnQkFBVyxHQUFhO1lBQ3JDLFFBQVE7WUFDUixTQUFTO1lBQ1QsUUFBUTtZQUNSLFNBQVM7WUFDVCxNQUFNO1lBQ04sT0FBTztZQUNQLFFBQVE7WUFDUixLQUFLO1NBQ1IsQ0FBQztRQUNlLGFBQVEsR0FBd0I7WUFDN0MsR0FBRyxXQUFXO1NBQ2pCLENBQUE7UUFDZ0IsYUFBUSxHQUF3QjtZQUM3QyxHQUFHLFlBQVk7U0FDbEIsQ0FBQTtJQTZNTCxDQUFDO0lBek1HOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBLENBQUMsQ0FBQztJQUNuRCxJQUFXLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBQzdDLElBQVcsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUM7SUFFdEMsa0NBQWtDLENBQUMsSUFBb0IsRUFBRSxhQUFxQjtRQUNqRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFDTSx1QkFBdUIsQ0FBQyxR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RCxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUFtQixFQUF5QixDQUFDO1lBQ3hGLHlDQUF5QztZQUN6QyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDeEQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFDeEUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNCO1lBQ0QsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDTCxDQUFDOztBQTFNYywwQkFBUyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F0dHJpYnV0ZURlZiwgZW51bXNNYXBCYXNlLCBTZXJpYWxpemFibGVUeXBlTWFwLCB0eXBlTWFwQmFzZX0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHtUeXBlVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgT2JqZWN0U2VyaWFsaXplciB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcmltaXRpdmVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgJ3N0cmluZycsXG4gICAgICAgICdib29sZWFuJyxcbiAgICAgICAgJ2RvdWJsZScsXG4gICAgICAgICdpbnRlZ2VyJyxcbiAgICAgICAgJ2xvbmcnLFxuICAgICAgICAnZmxvYXQnLFxuICAgICAgICAnbnVtYmVyJyxcbiAgICAgICAgJ2FueSdcbiAgICBdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3R5cGVNYXA6IFNlcmlhbGl6YWJsZVR5cGVNYXAgPSB7XG4gICAgICAgIC4uLnR5cGVNYXBCYXNlXG4gICAgfVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1NYXA6IFNlcmlhbGl6YWJsZVR5cGVNYXAgPSB7XG4gICAgICAgIC4uLmVudW1zTWFwQmFzZVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogT2JqZWN0U2VyaWFsaXplciA9IG5ldyBPYmplY3RTZXJpYWxpemVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBPbmx5IHVzZSBvbmUgaW5zdGFuY2Ugb2Ygb2JqZWN0IChvdXQgb2YgQW5ndWxhciBjb250ZXh0KVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KCk6IE9iamVjdFNlcmlhbGl6ZXIge1xuICAgICAgICByZXR1cm4gT2JqZWN0U2VyaWFsaXplci5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcmltaXRpdmVzKCkgeyByZXR1cm4gdGhpcy5fcHJpbWl0aXZlcyB9XG4gICAgcHVibGljIGdldCB0eXBlTWFwKCkgeyByZXR1cm4gdGhpcy5fdHlwZU1hcCB9XG4gICAgcHVibGljIGdldCBlbnVtTWFwKCkgeyByZXR1cm4gdGhpcy5fZW51bU1hcCB9XG5cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZURlZmluaXRpb25CeUNsYXNzVHlwZSh0eXBlOiBDbGFzc1R5cGU8YW55PiwgYXR0cmlidXRlTmFtZTogc3RyaW5nKTogQXR0cmlidXRlRGVmfG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQXR0cmlidXRlRGVmaW5pdGlvbihUeXBlVXRpbC5maW5kVHlwZU5hbWUodHlwZSksIGF0dHJpYnV0ZU5hbWUpO1xuICAgIH1cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZURlZmluaXRpb24odHlwZU5hbWU6IHN0cmluZywgYXR0cmlidXRlTmFtZTogc3RyaW5nKTogQXR0cmlidXRlRGVmfG51bGwge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWZzID0gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24odHlwZU5hbWUpO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVEZWZzKSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlLm5hbWUgPT09IGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZXNEZWZpbml0aW9uQnlDbGFzc1R5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4pOiBBcnJheTxBdHRyaWJ1dGVEZWY+fG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24oVHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpKTtcbiAgICB9XG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVzRGVmaW5pdGlvbih0eXBlTmFtZTogc3RyaW5nKTogQXJyYXk8QXR0cmlidXRlRGVmPnxudWxsIHtcbiAgICAgICAgY29uc3QgdHlwZURlZiA9IHRoaXMuZmluZFR5cGUodHlwZU5hbWUpO1xuICAgICAgICBpZiAoIXR5cGVEZWYpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlRGVmLmdldEF0dHJpYnV0ZVR5cGVNYXAoKSBhcyBBcnJheTxBdHRyaWJ1dGVEZWY+O1xuICAgIH1cbiAgICBwdWJsaWMgZmluZEJ5Q2xhc3NUeXBlKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFR5cGUoVHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpKTtcbiAgICB9XG4gICAgcHVibGljIGZpbmRUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU1hcFt0eXBlTmFtZV07XG4gICAgfVxuICAgIHB1YmxpYyBmaW5kRW51bShlbnVtTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1NYXBbZW51bU5hbWVdO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclR5cGVzKHR5cGVzOiBTZXJpYWxpemFibGVUeXBlTWFwKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHR5cGVzKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyVHlwZSh0eXBlc1trZXldLCBrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyVHlwZSh0eXBlOiBDbGFzc1R5cGU8YW55Piwgb3B0VHlwZU5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gdHJ5IHRvIGZpbmQgbmFtZSBmcm9tIGRlY29yYXRvclxuICAgICAgICBsZXQgdHlwZU5hbWUgPSBUeXBlVXRpbC5nZXREZWNvcmF0b3JUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgLy8gZGVmaW5lZCBuYW1lIGZyb20gb3B0aW9uYWwgdHlwZSBuYW1lXG4gICAgICAgICAgICB0eXBlTmFtZSA9IG9wdFR5cGVOYW1lO1xuICAgICAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVnaXN0ZXJpbmcgdHlwZSAke3R5cGV9IGZhaWxlZCwgYmVjYXVzZSB0eXBlTmFtZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBhbmQgb3B0aW9uYWwgbmFtZSB3YXMgbm90IHByb3ZpZGVkLmApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3R5cGVNYXBbdHlwZU5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBSZWdpc3RlcmluZyB0eXBlICR7dHlwZX0gdW5kZXIga2V5ICR7dHlwZU5hbWV9IHNraXBwZWQsIGJlY2F1c2UgdHlwZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBrZXkuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBUeXBlVXRpbC5kZWZpbmVSZWZsZWN0VHlwZU5hbWUodHlwZSwgdHlwZU5hbWUpO1xuICAgICAgICAgICAgdGhpcy5fdHlwZU1hcFt0eXBlTmFtZV0gPSB0eXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyRW51bXMoZW51bXM6IFNlcmlhbGl6YWJsZVR5cGVNYXApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZW51bXMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fZW51bU1hcFtrZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgUmVnaXN0ZXJpbmcgZW51bSAke2tleX0gc2tpcHBlZCwgYmVjYXVzZSBlbnVtIGFscmVhZHkgZXhpc3RzLmApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbnVtTWFwW2tleV0gPSBlbnVtc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRDb3JyZWN0VHlwZShkYXRhOiBhbnksIGV4cGVjdGVkVHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9wcmltaXRpdmVzLmluZGV4T2YoZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdEYXRlJykge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9lbnVtTWFwW2V4cGVjdGVkVHlwZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRUeXBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVNYXBbZXhwZWN0ZWRUeXBlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFR5cGU7IC8vIHcvZSB3ZSBkb24ndCBrbm93IHRoZSB0eXBlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkaXNjcmltaW5hdG9yXG4gICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yUHJvcGVydHkgPSB0aGlzLl90eXBlTWFwW2V4cGVjdGVkVHlwZV0uZGlzY3JpbWluYXRvcjtcbiAgICAgICAgICAgIGlmIChkaXNjcmltaW5hdG9yUHJvcGVydHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFR5cGU7IC8vIHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSBkaXNjcmltaW5hdG9yLiB1c2UgaXQuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2Rpc2NyaW1pbmF0b3JQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvclR5cGUgPSBkYXRhW2Rpc2NyaW1pbmF0b3JQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlTWFwW2Rpc2NyaW1pbmF0b3JUeXBlXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpc2NyaW1pbmF0b3JUeXBlOyAvLyB1c2UgdGhlIHR5cGUgZ2l2ZW4gaW4gdGhlIGRpc2NyaW1pbmF0b3JcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFR5cGU7IC8vIGRpc2NyaW1pbmF0b3IgZGlkIG5vdCBtYXAgdG8gYSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRUeXBlOyAvLyBkaXNjcmltaW5hdG9yIHdhcyBub3QgcHJlc2VudCAob3IgYW4gZW1wdHkgc3RyaW5nKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXJpYWxpemVDbGFzczxUPihkYXRhOiBhbnksIHR5cGU6IENsYXNzVHlwZTxUPikge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoZGF0YSwgVHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpKTtcbiAgICB9XG4gICAgcHVibGljIHNlcmlhbGl6ZShkYXRhOiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3ByaW1pdGl2ZXMuaW5kZXhPZih0eXBlLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZS5sYXN0SW5kZXhPZignQXJyYXk8JywgMCkgPT09IDApIHsgLy8gc3RyaW5nLnN0YXJ0c1dpdGggcHJlIGVzNlxuICAgICAgICAgICAgbGV0IHN1YlR5cGU6IHN0cmluZyA9IHR5cGUucmVwbGFjZSgnQXJyYXk8JywgJycpOyAvLyBBcnJheTxUeXBlPiA9PiBUeXBlPlxuICAgICAgICAgICAgc3ViVHlwZSA9IHN1YlR5cGUuc3Vic3RyaW5nKDAsIHN1YlR5cGUubGVuZ3RoIC0gMSk7IC8vIFR5cGU+ID0+IFR5cGVcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXR1bSA9IGRhdGFbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkRGF0YS5wdXNoKHRoaXMuc2VyaWFsaXplKGRhdHVtLCBzdWJUeXBlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdEYXRlJykge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9lbnVtTWFwW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVNYXBbdHlwZV0pIHsgLy8gaW4gY2FzZSB3ZSBkb250IGtub3cgdGhlIHR5cGVcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdHlwZSBvZiB0aGlzIG9iamVjdFxuICAgICAgICAgICAgdHlwZSA9IHRoaXMuZmluZENvcnJlY3RUeXBlKGRhdGEsIHR5cGUpO1xuXG4gICAgICAgICAgICAvLyBnZXQgdGhlIG1hcCBmb3IgdGhlIGNvcnJlY3QgdHlwZS5cbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGVzID0gdGhpcy5fdHlwZU1hcFt0eXBlXS5nZXRBdHRyaWJ1dGVUeXBlTWFwKCkgYXMgQXJyYXk8QXR0cmlidXRlRGVmPjtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlOiB7W2luZGV4OiBzdHJpbmddOiBhbnl9ID0ge307XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGF0dHJpYnV0ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSBhdHRyaWJ1dGVUeXBlc1tpbmRleF07XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VbYXR0cmlidXRlVHlwZS5iYXNlTmFtZV0gPSB0aGlzLnNlcmlhbGl6ZShkYXRhW2F0dHJpYnV0ZVR5cGUubmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUudHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzZXJpYWxpemVDbGFzczxUPihkYXRhOiBhbnksIHR5cGU6IENsYXNzVHlwZTxUPikge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZShkYXRhLCBUeXBlVXRpbC5maW5kVHlwZU5hbWUodHlwZSkpO1xuICAgIH1cbiAgICBwdWJsaWMgZGVzZXJpYWxpemUoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gcG9seW1vcnBoaXNtIG1heSBjaGFuZ2UgdGhlIGFjdHVhbCB0eXBlLlxuICAgICAgICB0eXBlID0gdGhpcy5maW5kQ29ycmVjdFR5cGUoZGF0YSwgdHlwZSk7XG4gICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcHJpbWl0aXZlcy5pbmRleE9mKHR5cGUudG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlLmxhc3RJbmRleE9mKCdBcnJheTwnLCAwKSA9PT0gMCkgeyAvLyBzdHJpbmcuc3RhcnRzV2l0aCBwcmUgZXM2XG4gICAgICAgICAgICBsZXQgc3ViVHlwZTogc3RyaW5nID0gdHlwZS5yZXBsYWNlKCdBcnJheTwnLCAnJyk7IC8vIEFycmF5PFR5cGU+ID0+IFR5cGU+XG4gICAgICAgICAgICBzdWJUeXBlID0gc3ViVHlwZS5zdWJzdHJpbmcoMCwgc3ViVHlwZS5sZW5ndGggLSAxKTsgLy8gVHlwZT4gPT4gVHlwZVxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWREYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdHVtID0gZGF0YVtpbmRleF07XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWREYXRhLnB1c2godGhpcy5kZXNlcmlhbGl6ZShkYXR1bSwgc3ViVHlwZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkRGF0YTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnRGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9lbnVtTWFwW3R5cGVdKSB7Ly8gaXMgRW51bVxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVNYXBbdHlwZV0pIHsgLy8gZG9udCBrbm93IHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0aGlzLl90eXBlTWFwW3R5cGVdKCk7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVUeXBlcyA9IHRoaXMuX3R5cGVNYXBbdHlwZV0uZ2V0QXR0cmlidXRlVHlwZU1hcCgpIGFzIEFycmF5PEF0dHJpYnV0ZURlZj47XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGF0dHJpYnV0ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSBhdHRyaWJ1dGVUeXBlc1tpbmRleF07XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VbYXR0cmlidXRlVHlwZS5uYW1lXSA9IHRoaXMuZGVzZXJpYWxpemUoZGF0YVthdHRyaWJ1dGVUeXBlLmJhc2VOYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZS50eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { of, ReplaySubject } from 'rxjs';
3
+ import { finalize, first } from 'rxjs/operators';
4
+ import { ConfirmationService, MessageService } from 'primeng/api';
5
+ import { I18nUtil } from '../../utils';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "@ngx-translate/core";
9
+ import * as i3 from "../../services";
10
+ import * as i4 from "primeng/api";
11
+ import * as i5 from "../tableview/tableview.component.service";
12
+ import * as i6 from "primeng/confirmdialog";
13
+ import * as i7 from "@angular/common";
14
+ import * as i8 from "primeng/button";
15
+ import * as i9 from "primeng/ripple";
16
+ export class ActionComponent {
17
+ constructor(route, translate, actionService, confirmationService, tableviewService) {
18
+ this.route = route;
19
+ this.translate = translate;
20
+ this.actionService = actionService;
21
+ this.confirmationService = confirmationService;
22
+ this.tableviewService = tableviewService;
23
+ this.loadingSubject = new ReplaySubject(1);
24
+ this.$loading = this.loadingSubject.asObservable();
25
+ this.cmpId = Math.random().toString(36).substring(2);
26
+ this.loadingSubject.next(false);
27
+ }
28
+ ngOnInit() {
29
+ const context = this.actionService.getActionExecContext(this.action, this.itemId, this.item, this.tableviewService?.dataProvider ?? undefined, this.tableviewService, this, this.actionData);
30
+ this.$isVisible = typeof this.action.isVisibleFunction === 'function' ? this.action.isVisibleFunction(context) : of(true);
31
+ this.$isEnabled = typeof this.action.isEnabledFunction === 'function' ? this.action.isEnabledFunction(context) : of(true);
32
+ this.$label = I18nUtil.streamActionTranslation(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item);
33
+ }
34
+ triggerAction(event) {
35
+ this.loadingSubject.next(true);
36
+ const actionData = this.actionData ? this.actionData : {};
37
+ actionData['cmpId'] = this.cmpId;
38
+ this.actionService.triggerAction(this.action, this.itemId, this.item, actionData, this.route, this.tableviewService, this)
39
+ .pipe(first(), finalize(() => this.loadingSubject.next(false)))
40
+ .subscribe(res => { });
41
+ }
42
+ getConfirmationService() {
43
+ return this.confirmationService;
44
+ }
45
+ getConfirmationServiceInstanceKey(action) {
46
+ return `${action.actionName}_${this.cmpId}`;
47
+ }
48
+ }
49
+ ActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.ActionService }, { token: i4.ConfirmationService }, { token: i5.TableviewComponentService }], target: i0.ɵɵFactoryTarget.Component });
50
+ ActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData" }, providers: [MessageService, ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <button *ngIf=\"action.icon && action.title === null; else noIcon\" type=\"button\"\n pButton pRipple\n [icon]=\"action.icon\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"!($isEnabled | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\">\n </button>\n <ng-template #noIcon>\n <button type=\"button\"\n pButton pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"!($isEnabled | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\">\n </button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", components: [{ type: i6.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i9.Ripple, selector: "[pRipple]" }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageService, ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <button *ngIf=\"action.icon && action.title === null; else noIcon\" type=\"button\"\n pButton pRipple\n [icon]=\"action.icon\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"!($isEnabled | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\">\n </button>\n <ng-template #noIcon>\n <button type=\"button\"\n pButton pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"($loading | async) ?? false\"\n [disabled]=\"!($isEnabled | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\">\n </button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n" }]
54
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.ActionService }, { type: i4.ConfirmationService }, { type: i5.TableviewComponentService }]; }, propDecorators: { action: [{
55
+ type: Input
56
+ }], item: [{
57
+ type: Input
58
+ }], itemId: [{
59
+ type: Input
60
+ }], actionData: [{
61
+ type: Input
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUsxRixPQUFPLEVBQWEsRUFBRSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFPaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7QUFTckMsTUFBTSxPQUFPLGVBQWU7SUFnQnhCLFlBQ1ksS0FBcUIsRUFDckIsU0FBMkIsRUFDM0IsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLGdCQUFpRDtRQUpqRCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUM7UUFickQsbUJBQWMsR0FBRyxJQUFJLGFBQWEsQ0FBVSxDQUFDLENBQUMsQ0FBQztRQUNoRCxhQUFRLEdBQXdCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbkUsVUFBSyxHQUFXLElBQUksQ0FBQyxN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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaW5hbGl6ZSwgZmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtJZFR5cGV9IGZyb20gJy4uLy4uL21vZGVscy90eXBlcyc7XG5pbXBvcnQge0FjdGlvbkRhdGF9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24nO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9tb2RlbHMvZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtJQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtBY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0kxOG5VdGlsfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1RhYmxldmlld0NvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uL3RhYmxldmlldy90YWJsZXZpZXcuY29tcG9uZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db21wb25lbnQ8VCwgUz4gaW1wbGVtZW50cyBPbkluaXQsIElDb25maXJtYXRpb25TZXJ2aWNlIHtcblxuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25EZXNjcmlwdG9yPFQ+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtPzogVDtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbUlkPzogSWRUeXBlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcblxuICAgIHByaXZhdGUgbG9hZGluZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwdWJsaWMgJGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIGNtcElkOiBzdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG4gICAgcHVibGljICRpc1Zpc2libGUhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIHB1YmxpYyAkaXNFbmFibGVkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwdWJsaWMgJGxhYmVsITogT2JzZXJ2YWJsZTxzdHJpbmd8bnVsbD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0YWJsZXZpZXdTZXJ2aWNlOiBUYWJsZXZpZXdDb21wb25lbnRTZXJ2aWNlPFQsIFM+XG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5hY3Rpb25TZXJ2aWNlLmdldEFjdGlvbkV4ZWNDb250ZXh0KHRoaXMuYWN0aW9uLCB0aGlzLml0ZW1JZCwgdGhpcy5pdGVtLCB0aGlzLnRhYmxldmlld1NlcnZpY2U/LmRhdGFQcm92aWRlciA/PyB1bmRlZmluZWQsIHRoaXMudGFibGV2aWV3U2VydmljZSwgdGhpcywgdGhpcy5hY3Rpb25EYXRhKTtcbiAgICAgICAgdGhpcy4kaXNWaXNpYmxlID0gdHlwZW9mIHRoaXMuYWN0aW9uLmlzVmlzaWJsZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5hY3Rpb24uaXNWaXNpYmxlRnVuY3Rpb24oY29udGV4dCkgOiBvZih0cnVlKTtcbiAgICAgICAgdGhpcy4kaXNFbmFibGVkID0gdHlwZW9mIHRoaXMuYWN0aW9uLmlzRW5hYmxlZEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5hY3Rpb24uaXNFbmFibGVkRnVuY3Rpb24oY29udGV4dCkgOiBvZih0cnVlKTtcbiAgICAgICAgdGhpcy4kbGFiZWwgPSBJMThuVXRpbC5zdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sICd0aXRsZScsIHRoaXMuYWN0aW9uPy50aXRsZSA/PyB1bmRlZmluZWQsIHRoaXMuaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyaWdnZXJBY3Rpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMuYWN0aW9uRGF0YSA/IHRoaXMuYWN0aW9uRGF0YSA6IHt9O1xuICAgICAgICBhY3Rpb25EYXRhWydjbXBJZCddID0gdGhpcy5jbXBJZDtcbiAgICAgICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnRyaWdnZXJBY3Rpb24odGhpcy5hY3Rpb24sIHRoaXMuaXRlbUlkLCB0aGlzLml0ZW0sIGFjdGlvbkRhdGEsIHRoaXMucm91dGUsIHRoaXMudGFibGV2aWV3U2VydmljZSwgdGhpcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHt9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZUluc3RhbmNlS2V5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+KSB7XG4gICAgICAgIHJldHVybiBgJHthY3Rpb24uYWN0aW9uTmFtZX1fJHt0aGlzLmNtcElkfWA7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRpc1Zpc2libGUgfCBhc3luY1wiPlxuICAgIDxidXR0b24gKm5nSWY9XCJhY3Rpb24uaWNvbiAmJiBhY3Rpb24udGl0bGUgPT09IG51bGw7IGVsc2Ugbm9JY29uXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBwQnV0dG9uIHBSaXBwbGVcbiAgICAgICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIigkbG9hZGluZyB8IGFzeW5jKSA/PyBmYWxzZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiISgkaXNFbmFibGVkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJtbmctYWN0aW9uLWJ1dHRvbiBtbmctYWN0aW9uLWJ1dHRvbi1pY29uIHAtYnV0dG9uLXJvdW5kZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSA1XCJcbiAgICAgICAgICAgIFtjbGFzcy5wLWJ1dHRvbi1kYW5nZXJdPVwiYWN0aW9uLmxldmVsID09PSA3XCI+XG4gICAgPC9idXR0b24+XG4gICAgPG5nLXRlbXBsYXRlICNub0ljb24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvbiBwUmlwcGxlXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJGFueShhY3Rpb24uaWNvbilcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIoJGxhYmVsIHwgYXN5bmMpID8/ICcnXCJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCIoJGxvYWRpbmcgfCBhc3luYykgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKCRpc0VuYWJsZWQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0cmlnZ2VyQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW5nLWFjdGlvbi1idXR0b24gcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnAtYnV0dG9uLXN1Y2Nlc3NdPVwiYWN0aW9uLmxldmVsID09PSA1XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucC1idXR0b24tZGFuZ2VyXT1cImFjdGlvbi5sZXZlbCA9PT0gN1wiPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxwLWNvbmZpcm1EaWFsb2cgKm5nSWY9XCJhY3Rpb24uaGFzUnVuQ29uZmlybWF0aW9uXCIgW2tleV09XCJhY3Rpb24uYWN0aW9uTmFtZSArICdfJyArIGNtcElkXCIgW2Jhc2VaSW5kZXhdPVwiNTBcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtY29uZmlybURpYWxvZz5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,148 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { of, ReplaySubject } from 'rxjs';
3
+ import { finalize, first, mergeMap } from 'rxjs/operators';
4
+ import { ActionError, ActionRunResult } from '../../../models/action';
5
+ import { TemplateDirective } from '../../../directives';
6
+ import { FormEditorComponent } from '../../../components/form';
7
+ import { I18nUtil } from '../../../utils';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ngx-translate/core";
10
+ import * as i2 from "primeng/dynamicdialog";
11
+ import * as i3 from "../../../services";
12
+ import * as i4 from "primeng/progressspinner";
13
+ import * as i5 from "../../form/editor/form-editor.component";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "primeng/button";
16
+ import * as i8 from "primeng/ripple";
17
+ export class ActionDialogComponent {
18
+ constructor(injector, translate, dialogRef, dialogConfig, actionService) {
19
+ this.injector = injector;
20
+ this.translate = translate;
21
+ this.dialogRef = dialogRef;
22
+ this.dialogConfig = dialogConfig;
23
+ this.actionService = actionService;
24
+ // event outputs
25
+ this.createEventEmitter = new EventEmitter();
26
+ this.visibleChangeEventEmitter = new EventEmitter();
27
+ this.cmpId = Math.random().toString(36).substring(2);
28
+ this.loadingSubject = new ReplaySubject(1);
29
+ this.submitLoadingSubject = new ReplaySubject(1);
30
+ this.loading$ = this.loadingSubject.asObservable();
31
+ this.submitLoading$ = this.submitLoadingSubject.asObservable();
32
+ this.isSaveButton = true;
33
+ this.sourceComponent = this;
34
+ this.subscriptions = [];
35
+ }
36
+ ngOnInit() {
37
+ if (this.dialogConfig.data) {
38
+ if (this.dialogConfig.data.action) {
39
+ this.action = this.dialogConfig.data.action;
40
+ }
41
+ if (this.dialogConfig.data.item) {
42
+ this.item = this.dialogConfig.data.item;
43
+ }
44
+ if (this.dialogConfig.data.itemId) {
45
+ this.itemId = this.dialogConfig.data.itemId;
46
+ }
47
+ if (this.dialogConfig.data.actionData) {
48
+ this.actionData = this.dialogConfig.data.actionData;
49
+ }
50
+ if (this.dialogConfig.data.tableview) {
51
+ this.tableviewService = this.dialogConfig.data.tableview;
52
+ if (!this.dataProvider && this.tableviewService?.dataProvider) {
53
+ this.dataProvider = this.tableviewService.dataProvider;
54
+ }
55
+ }
56
+ if (this.dialogConfig.data.sourceComponent) {
57
+ this.sourceComponent = this.dialogConfig.data.sourceComponent;
58
+ }
59
+ }
60
+ this.isSaveButton = typeof this.action.submitFunction === 'function';
61
+ this.setDialogHeaderTitle();
62
+ this.loadItemWithDataProvider();
63
+ }
64
+ ngOnDestroy() {
65
+ this.subscriptions.forEach(s => s.unsubscribe());
66
+ }
67
+ onSubmit(event) {
68
+ if (event.success) {
69
+ if (typeof this.action.submitFunction !== 'function') {
70
+ return;
71
+ }
72
+ this.submitLoadingSubject.next(true);
73
+ this.actionService.runEditorSave(this.action, this.itemId, event.formItem, this.dataProvider, this.sourceComponent, this.tableviewService, this.actionData)
74
+ .pipe(first(), finalize(() => this.submitLoadingSubject.next(false)))
75
+ .subscribe(res => {
76
+ this.closeDialog(res);
77
+ });
78
+ }
79
+ }
80
+ closeDialog(result) {
81
+ this.dialogRef.close(result ? result : new ActionRunResult(undefined, undefined, new ActionError(null, true)));
82
+ }
83
+ saveItem() {
84
+ this.editorComponent.submit();
85
+ }
86
+ loadItemWithDataProvider() {
87
+ if (typeof this.action.fetchFunction !== 'function') {
88
+ return;
89
+ }
90
+ this.loadingSubject.next(true);
91
+ this.actionService.runEditorFetch(this.action, this.itemId, this.dataProvider, this.sourceComponent, this.tableviewService)
92
+ .pipe(first(), finalize(() => this.loadingSubject.next(false)))
93
+ .subscribe(res => {
94
+ this.item = res.result;
95
+ this.setDialogHeaderTitle();
96
+ });
97
+ }
98
+ setDialogHeaderTitle() {
99
+ if (this.action.editorTitle === null) {
100
+ requestAnimationFrame(() => {
101
+ this.dialogConfig.header = undefined;
102
+ });
103
+ return;
104
+ }
105
+ const subscription = I18nUtil.streamActionTranslation(this.translate, this.action, 'dialog.title', undefined, this.item)
106
+ .pipe(mergeMap(i18nDialogTitle => i18nDialogTitle === null
107
+ ? I18nUtil.getActionTranslation(this.translate, this.action, 'title', this.action.editorTitle, this.item)
108
+ : of(i18nDialogTitle)))
109
+ .subscribe(t => {
110
+ requestAnimationFrame(() => {
111
+ this.dialogConfig.header = t ?? undefined;
112
+ });
113
+ });
114
+ this.subscriptions.push(subscription);
115
+ }
116
+ }
117
+ ActionDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionDialogComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: i3.ActionService }], target: i0.ɵɵFactoryTarget.Component });
118
+ ActionDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: ActionDialogComponent, selector: "mng-action-dialog", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider" }, outputs: { createEventEmitter: "onFinished", visibleChangeEventEmitter: "onVisibleChange" }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: FormEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && !(loading$ | async)\"\n [descriptor]=\"action.editorDescriptor\"\n [item]=\"item\"\n (onSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n <div class=\"flex flex-row justify-content-between\">\n <div></div>\n <div>\n <button type=\"button\" pButton pRipple [label]=\"'general.close' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"closeDialog()\" [disabled]=\"submitLoading$ | async\"></button>\n <button *ngIf=\"isSaveButton\" #submitButton type=\"button\" pButton pRipple\n [label]=\"'general.save' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"saveItem()\"\n [loading]=\"(submitLoading$ | async) ?? false\"\n [disabled]=\"(submitLoading$ | async) ?? false\">\n </button>\n </div>\n </div>\n</div>\n", components: [{ type: i4.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: i5.FormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["onSubmit"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }], pipes: { "async": i6.AsyncPipe, "translate": i1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ActionDialogComponent, decorators: [{
120
+ type: Component,
121
+ args: [{ selector: 'mng-action-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && !(loading$ | async)\"\n [descriptor]=\"action.editorDescriptor\"\n [item]=\"item\"\n (onSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n <div class=\"flex flex-row justify-content-between\">\n <div></div>\n <div>\n <button type=\"button\" pButton pRipple [label]=\"'general.close' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"closeDialog()\" [disabled]=\"submitLoading$ | async\"></button>\n <button *ngIf=\"isSaveButton\" #submitButton type=\"button\" pButton pRipple\n [label]=\"'general.save' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"saveItem()\"\n [loading]=\"(submitLoading$ | async) ?? false\"\n [disabled]=\"(submitLoading$ | async) ?? false\">\n </button>\n </div>\n </div>\n</div>\n" }]
122
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.DynamicDialogRef }, { type: i2.DynamicDialogConfig }, { type: i3.ActionService }]; }, propDecorators: { action: [{
123
+ type: Input
124
+ }], itemId: [{
125
+ type: Input
126
+ }], item: [{
127
+ type: Input
128
+ }], actionData: [{
129
+ type: Input
130
+ }], dataProvider: [{
131
+ type: Input
132
+ }], createEventEmitter: [{
133
+ type: Output,
134
+ args: ['onFinished']
135
+ }], visibleChangeEventEmitter: [{
136
+ type: Output,
137
+ args: ['onVisibleChange']
138
+ }], templates: [{
139
+ type: ContentChildren,
140
+ args: [TemplateDirective]
141
+ }], submitButtonElementRef: [{
142
+ type: ViewChild,
143
+ args: ['submitButton']
144
+ }], editorComponent: [{
145
+ type: ViewChild,
146
+ args: [FormEditorComponent]
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvYWN0aW9uL2RpYWxvZy9hY3Rpb24tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vZGlhbG9nL2FjdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFZLEtBQUssRUFBcUIsTUFBTSxFQUFhLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUk5SyxPQUFPLEVBQWEsRUFBRSxFQUFFLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQWEsV0FBVyxFQUFFLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBTWhGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVF4QyxNQUFNLE9BQU8scUJBQXFCO0lBaUM5QixZQUNZLFFBQWtCLEVBQ2xCLFNBQTJCLEVBQzVCLFNBQTJCLEVBQzNCLFlBQWlDLEVBQ2hDLGFBQTRCO1FBSjVCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsaUJB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QVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNYLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7a0hBeklRLHFCQUFxQjtzR0FBckIscUJBQXFCLHNTQWdCYixpQkFBaUIsdUxBR3ZCLG1CQUFtQixnREMxQ2xDLHN6Q0EwQkE7MkZESGEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLG1CQUFtQixtQkFFWix1QkFBdUIsQ0FBQyxNQUFNOzJOQUsvQixNQUFNO3NCQUFyQixLQUFLO2dCQUdVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBR3dCLGtCQUFrQjtzQkFBL0MsTUFBTTt1QkFBQyxZQUFZO2dCQUNlLHlCQUF5QjtzQkFBM0QsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBR1csU0FBUztzQkFBNUMsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBRUMsc0JBQXNCO3NCQUF4RCxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2UsZUFBZTtzQkFBdEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZn0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbmFsaXplLCBmaXJzdCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25FcnJvciwgQWN0aW9uUnVuUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYWN0aW9uJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcHJvdmlkZXJzJztcbmltcG9ydCB7TW5nRWRpdG9ySXRlbUV2ZW50LCBNbmdFZGl0b3JTdWJtaXRFdmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50cyc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7VGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHtJMThuVXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtUYWJsZXZpZXdDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi90YWJsZXZpZXcvdGFibGV2aWV3LmNvbXBvbmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctYWN0aW9uLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbkRpYWxvZ0NvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+O1xuXG4gICAgLy8gZGF0YSBzb3VyY2UgaW5wdXRzXG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1JZD86IElkVHlwZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbT86IFQ7XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbkRhdGE/OiBBY3Rpb25EYXRhO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhUHJvdmlkZXI/OiBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIFM+O1xuXG4gICAgLy8gZXZlbnQgb3V0cHV0c1xuICAgIEBPdXRwdXQoJ29uRmluaXNoZWQnKSBwcml2YXRlIGNyZWF0ZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8TW5nRWRpdG9ySXRlbUV2ZW50PFQ+PigpO1xuICAgIEBPdXRwdXQoJ29uVmlzaWJsZUNoYW5nZScpIHByaXZhdGUgdmlzaWJsZUNoYW5nZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vIGNvbnRlbnQgYW5kIHZpZXcgcXVlcmllc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCdzdWJtaXRCdXR0b24nKSBwcml2YXRlIHN1Ym1pdEJ1dHRvbkVsZW1lbnRSZWYhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoRm9ybUVkaXRvckNvbXBvbmVudCkgcHJpdmF0ZSBlZGl0b3JDb21wb25lbnQhOiBGb3JtRWRpdG9yQ29tcG9uZW50PFQ+O1xuXG4gICAgcHVibGljIGNtcElkOiBzdHJpbmcgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHJpdmF0ZSBzdWJtaXRMb2FkaW5nU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgIHB1YmxpYyBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMubG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHN1Ym1pdExvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zdWJtaXRMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgaXNTYXZlQnV0dG9uID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgdGFibGV2aWV3U2VydmljZT86IFRhYmxldmlld0NvbXBvbmVudFNlcnZpY2U8VCwgUz47XG4gICAgcHJpdmF0ZSBzb3VyY2VDb21wb25lbnQ6IGFueSA9IHRoaXM7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBEeW5hbWljRGlhbG9nUmVmLFxuICAgICAgICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLFxuICAgICAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnLmRhdGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLmFjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YS5hY3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcuZGF0YS5pdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YS5pdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnLmRhdGEuaXRlbUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtSWQgPSB0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLml0ZW1JZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLmFjdGlvbkRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbkRhdGEgPSB0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLmFjdGlvbkRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcuZGF0YS50YWJsZXZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxldmlld1NlcnZpY2UgPSB0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLnRhYmxldmlldztcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YVByb3ZpZGVyICYmIHRoaXMudGFibGV2aWV3U2VydmljZT8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyID0gdGhpcy50YWJsZXZpZXdTZXJ2aWNlLmRhdGFQcm92aWRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcuZGF0YS5zb3VyY2VDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUNvbXBvbmVudCA9IHRoaXMuZGlhbG9nQ29uZmlnLmRhdGEuc291cmNlQ29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1NhdmVCdXR0b24gPSB0eXBlb2YgdGhpcy5hY3Rpb24uc3VibWl0RnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgICAgIHRoaXMuc2V0RGlhbG9nSGVhZGVyVGl0bGUoKTtcblxuICAgICAgICB0aGlzLmxvYWRJdGVtV2l0aERhdGFQcm92aWRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN1Ym1pdChldmVudDogTW5nRWRpdG9yU3VibWl0RXZlbnQ8VD4pIHtcbiAgICAgICAgaWYgKGV2ZW50LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24uc3VibWl0RnVuY3Rpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblNlcnZpY2UucnVuRWRpdG9yU2F2ZSh0aGlzLmFjdGlvbiwgdGhpcy5pdGVtSWQsIGV2ZW50LmZvcm1JdGVtLCB0aGlzLmRhdGFQcm92aWRlciwgdGhpcy5zb3VyY2VDb21wb25lbnQsIHRoaXMudGFibGV2aWV3U2VydmljZSwgdGhpcy5hY3Rpb25EYXRhKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnN1Ym1pdExvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2cocmVzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZURpYWxvZyhyZXN1bHQ/OiBBY3Rpb25SdW5SZXN1bHQ8VCwgYW55LCBhbnk+KSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCA/IHJlc3VsdCA6IG5ldyBBY3Rpb25SdW5SZXN1bHQodW5kZWZpbmVkLCB1bmRlZmluZWQsIG5ldyBBY3Rpb25FcnJvcihudWxsLCB0cnVlKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlSXRlbSgpIHtcbiAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkSXRlbVdpdGhEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24uZmV0Y2hGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnJ1bkVkaXRvckZldGNoKHRoaXMuYWN0aW9uLCB0aGlzLml0ZW1JZCwgdGhpcy5kYXRhUHJvdmlkZXIsIHRoaXMuc291cmNlQ29tcG9uZW50LCB0aGlzLnRhYmxldmlld1NlcnZpY2UpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtID0gcmVzLnJlc3VsdDtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpYWxvZ0hlYWRlclRpdGxlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERpYWxvZ0hlYWRlclRpdGxlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3Rpb24uZWRpdG9yVGl0bGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dDb25maWcuaGVhZGVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gSTE4blV0aWwuc3RyZWFtQWN0aW9uVHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uIGFzIEFjdGlvbkRlc2NyaXB0b3I8VD4sICdkaWFsb2cudGl0bGUnLCB1bmRlZmluZWQsIHRoaXMuaXRlbSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGkxOG5EaWFsb2dUaXRsZSA9PiBpMThuRGlhbG9nVGl0bGUgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgPyBJMThuVXRpbC5nZXRBY3Rpb25UcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24gYXMgQWN0aW9uRGVzY3JpcHRvcjxUPiwgJ3RpdGxlJywgdGhpcy5hY3Rpb24uZWRpdG9yVGl0bGUsIHRoaXMuaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgOiBvZihpMThuRGlhbG9nVGl0bGUpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0ID0+IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0NvbmZpZy5oZWFkZXIgPSB0ID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmckIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBbc3R5bGVdPVwie3dpZHRoOiAnM3JlbScsIGhlaWdodDogJzNyZW0nfVwiIHN0cm9rZVdpZHRoPVwiM1wiPjwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bW5nLWZvcm0tZWRpdG9yICpuZ0lmPVwiYWN0aW9uLmVkaXRvckRlc2NyaXB0b3IgJiYgIShsb2FkaW5nJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdG9yXT1cImFjdGlvbi5lZGl0b3JEZXNjcmlwdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIChvblN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbW5nLWZvcm0tZWRpdG9yPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgW2xhYmVsXT1cIidnZW5lcmFsLmNsb3NlJyB8IHRyYW5zbGF0ZVwiIGljb249XCJwaSBwaS10aW1lc1wiIGNsYXNzPVwicC1idXR0b24tdGV4dFwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCIgW2Rpc2FibGVkXT1cInN1Ym1pdExvYWRpbmckIHwgYXN5bmNcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc1NhdmVCdXR0b25cIiAjc3VibWl0QnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidnZW5lcmFsLnNhdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVJdGVtKClcIlxuICAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCIoc3VibWl0TG9hZGluZyQgfCBhc3luYykgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKHN1Ym1pdExvYWRpbmckIHwgYXN5bmMpID8/IGZhbHNlXCI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './action.component';
2
+ export * from './route/action-route.component';
3
+ export * from './dialog/action-dialog.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvYWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy9hY3Rpb24tZGlhbG9nLmNvbXBvbmVudCc7XG4iXX0=