@mediusinc/mng-commons 0.2.0 → 0.2.6

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 (235) hide show
  1. package/esm2020/lib/api/models/builders/query-param.builder.mjs +48 -48
  2. package/esm2020/lib/api/models/filter-match-type.model.mjs +26 -26
  3. package/esm2020/lib/api/models/filter-param.model.mjs +46 -46
  4. package/esm2020/lib/api/models/index.mjs +9 -9
  5. package/esm2020/lib/api/models/mappers.mjs +17 -17
  6. package/esm2020/lib/api/models/query-mode.model.mjs +19 -19
  7. package/esm2020/lib/api/models/query-param.model.mjs +69 -69
  8. package/esm2020/lib/api/models/query-result.model.mjs +45 -45
  9. package/esm2020/lib/api/models/serialization.model.mjs +2 -2
  10. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +72 -72
  11. package/esm2020/lib/api/services/index.mjs +2 -2
  12. package/esm2020/lib/api/utils/index.mjs +3 -3
  13. package/esm2020/lib/api/utils/medius-rest.util.mjs +122 -122
  14. package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -226
  15. package/esm2020/lib/components/action/action.component.mjs +65 -65
  16. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -148
  17. package/esm2020/lib/components/action/index.mjs +4 -4
  18. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +2 -2
  19. package/esm2020/lib/components/action/models/action-execution.model.mjs +58 -58
  20. package/esm2020/lib/components/action/models/index.mjs +3 -3
  21. package/esm2020/lib/components/action/route/action-route.component.mjs +144 -144
  22. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +114 -114
  23. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +113 -113
  24. package/esm2020/lib/components/form/editor/form-editor.component.mjs +141 -141
  25. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +19 -19
  26. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +19 -19
  27. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -16
  28. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +30 -26
  29. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +108 -109
  30. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +122 -122
  31. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
  32. package/esm2020/lib/components/form/formly/fields/index.mjs +8 -8
  33. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -17
  34. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -16
  35. package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -3
  36. package/esm2020/lib/components/form/index.mjs +4 -4
  37. package/esm2020/lib/components/form/models/form-editor.event.mjs +7 -7
  38. package/esm2020/lib/components/form/models/index.mjs +2 -2
  39. package/esm2020/lib/components/layout/breadcrumb.component.mjs +17 -17
  40. package/esm2020/lib/components/layout/footer.component.mjs +17 -17
  41. package/esm2020/lib/components/layout/index.mjs +7 -7
  42. package/esm2020/lib/components/layout/main-layout.component.mjs +54 -54
  43. package/esm2020/lib/components/layout/menu-item.component.mjs +173 -173
  44. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  45. package/esm2020/lib/components/layout/services/index.mjs +2 -2
  46. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +190 -190
  47. package/esm2020/lib/components/layout/topbar.component.mjs +59 -59
  48. package/esm2020/lib/components/tableview/index.mjs +7 -6
  49. package/esm2020/lib/components/tableview/models/index.mjs +2 -2
  50. package/esm2020/lib/components/tableview/models/table.event.mjs +16 -16
  51. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +24 -24
  52. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +33 -0
  53. package/esm2020/lib/components/tableview/services/index.mjs +2 -2
  54. package/esm2020/lib/components/tableview/services/tableview.component.service.mjs +16 -17
  55. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +85 -74
  56. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +25 -25
  57. package/esm2020/lib/components/tableview/table/table.component.mjs +307 -307
  58. package/esm2020/lib/components/tableview/tableview.component.mjs +82 -82
  59. package/esm2020/lib/config/formly.config.mjs +136 -136
  60. package/esm2020/lib/config/index.mjs +2 -2
  61. package/esm2020/lib/config/models/index.mjs +2 -2
  62. package/esm2020/lib/config/models/mng-config.model.mjs +2 -2
  63. package/esm2020/lib/data-providers/base.data-provider.mjs +24 -24
  64. package/esm2020/lib/data-providers/editor.data-provider.mjs +37 -37
  65. package/esm2020/lib/data-providers/index.mjs +6 -6
  66. package/esm2020/lib/data-providers/lookup.data-provider.mjs +16 -16
  67. package/esm2020/lib/data-providers/table.data-provider.mjs +2 -2
  68. package/esm2020/lib/data-providers/tableview.data-provider.mjs +17 -17
  69. package/esm2020/lib/descriptors/action.descriptor.mjs +332 -332
  70. package/esm2020/lib/descriptors/editor.descriptor.mjs +670 -670
  71. package/esm2020/lib/descriptors/field.validator.mjs +21 -21
  72. package/esm2020/lib/descriptors/index.mjs +8 -8
  73. package/esm2020/lib/descriptors/lookup.descriptor.mjs +2 -2
  74. package/esm2020/lib/descriptors/model.descriptor.mjs +34 -34
  75. package/esm2020/lib/descriptors/table.descriptor.mjs +427 -401
  76. package/esm2020/lib/descriptors/tableview.descriptor.mjs +131 -131
  77. package/esm2020/lib/directives/component.directive.mjs +23 -23
  78. package/esm2020/lib/directives/index.mjs +3 -3
  79. package/esm2020/lib/directives/template.directive.mjs +29 -29
  80. package/esm2020/lib/mng-commons.module.mjs +412 -410
  81. package/esm2020/lib/models/index.mjs +2 -3
  82. package/esm2020/lib/models/user.model.mjs +2 -2
  83. package/esm2020/lib/pipes/boolean.pipe.mjs +22 -22
  84. package/esm2020/lib/pipes/index.mjs +3 -3
  85. package/esm2020/lib/pipes/property-path.pipe.mjs +36 -36
  86. package/esm2020/lib/router/index.mjs +2 -0
  87. package/esm2020/lib/router/models/index.mjs +2 -0
  88. package/esm2020/lib/router/models/router.model.mjs +2 -0
  89. package/esm2020/lib/router/route-builder.mjs +288 -0
  90. package/esm2020/lib/services/action.service.mjs +269 -269
  91. package/esm2020/lib/services/commons.service.mjs +354 -353
  92. package/esm2020/lib/services/configuration.service.mjs +78 -78
  93. package/esm2020/lib/services/index.mjs +5 -5
  94. package/esm2020/lib/services/navigation.service.mjs +48 -48
  95. package/esm2020/lib/services/providers/commons-init.provider.mjs +4 -4
  96. package/esm2020/lib/services/providers/config-service.provider.mjs +20 -20
  97. package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -31
  98. package/esm2020/lib/services/providers/index.mjs +4 -4
  99. package/esm2020/lib/services/tokens/browser-storage.token.mjs +6 -6
  100. package/esm2020/lib/services/tokens/index.mjs +3 -3
  101. package/esm2020/lib/services/tokens/module-config.token.mjs +3 -3
  102. package/esm2020/lib/types/index.mjs +3 -3
  103. package/esm2020/lib/types/type.decorator.mjs +7 -7
  104. package/esm2020/lib/types/type.model.mjs +2 -2
  105. package/esm2020/lib/utils/editor-formly.util.mjs +176 -176
  106. package/esm2020/lib/utils/i18n.util.mjs +125 -125
  107. package/esm2020/lib/utils/index.mjs +6 -6
  108. package/esm2020/lib/utils/model.util.mjs +57 -57
  109. package/esm2020/lib/utils/route.util.mjs +24 -0
  110. package/esm2020/lib/utils/toast.util.mjs +39 -39
  111. package/esm2020/lib/utils/type.util.mjs +39 -39
  112. package/esm2020/mediusinc-mng-commons.mjs +5 -5
  113. package/esm2020/public-api.mjs +37 -36
  114. package/fesm2015/mediusinc-mng-commons.mjs +6407 -6024
  115. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  116. package/fesm2020/mediusinc-mng-commons.mjs +6329 -5950
  117. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  118. package/lib/api/models/builders/query-param.builder.d.ts +11 -11
  119. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  120. package/lib/api/models/filter-param.model.d.ts +23 -23
  121. package/lib/api/models/index.d.ts +8 -8
  122. package/lib/api/models/mappers.d.ts +6 -6
  123. package/lib/api/models/query-mode.model.d.ts +16 -16
  124. package/lib/api/models/query-param.model.d.ts +31 -31
  125. package/lib/api/models/query-result.model.d.ts +36 -36
  126. package/lib/api/models/serialization.model.d.ts +8 -8
  127. package/lib/api/services/crud-api.abstract.service.d.ts +23 -23
  128. package/lib/api/services/index.d.ts +1 -1
  129. package/lib/api/utils/index.d.ts +2 -2
  130. package/lib/api/utils/medius-rest.util.d.ts +12 -12
  131. package/lib/api/utils/object-serializer.util.d.ts +30 -30
  132. package/lib/components/action/action.component.d.ts +36 -36
  133. package/lib/components/action/dialog/action-dialog.component.d.ts +46 -46
  134. package/lib/components/action/index.d.ts +3 -3
  135. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  136. package/lib/components/action/models/action-execution.model.d.ts +53 -53
  137. package/lib/components/action/models/index.d.ts +2 -2
  138. package/lib/components/action/route/action-route.component.d.ts +32 -32
  139. package/lib/components/form/autocomplete/autocomplete.component.d.ts +36 -36
  140. package/lib/components/form/dropdown/dropdown.component.d.ts +34 -34
  141. package/lib/components/form/editor/form-editor.component.d.ts +39 -39
  142. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +11 -11
  143. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +11 -11
  144. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -6
  145. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -12
  146. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -17
  147. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -36
  148. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  149. package/lib/components/form/formly/fields/index.d.ts +7 -7
  150. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -8
  151. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -8
  152. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  153. package/lib/components/form/index.d.ts +3 -3
  154. package/lib/components/form/models/form-editor.event.d.ts +5 -5
  155. package/lib/components/form/models/index.d.ts +1 -1
  156. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  157. package/lib/components/layout/footer.component.d.ts +9 -9
  158. package/lib/components/layout/index.d.ts +6 -6
  159. package/lib/components/layout/main-layout.component.d.ts +21 -21
  160. package/lib/components/layout/menu-item.component.d.ts +29 -29
  161. package/lib/components/layout/menu.component.d.ts +10 -10
  162. package/lib/components/layout/services/index.d.ts +1 -1
  163. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  164. package/lib/components/layout/topbar.component.d.ts +25 -25
  165. package/lib/components/tableview/index.d.ts +6 -5
  166. package/lib/components/tableview/models/index.d.ts +1 -1
  167. package/lib/components/tableview/models/table.event.d.ts +17 -17
  168. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +15 -14
  169. package/lib/components/tableview/route/tableview-route.component.d.ts +15 -0
  170. package/lib/components/tableview/services/index.d.ts +1 -1
  171. package/lib/components/tableview/services/tableview.component.service.d.ts +13 -13
  172. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +27 -22
  173. package/lib/components/tableview/table/column-value/column-value.component.d.ts +12 -12
  174. package/lib/components/tableview/table/table.component.d.ts +79 -79
  175. package/lib/components/tableview/tableview.component.d.ts +35 -35
  176. package/lib/config/formly.config.d.ts +14 -14
  177. package/lib/config/index.d.ts +1 -1
  178. package/lib/config/models/index.d.ts +1 -1
  179. package/lib/config/models/mng-config.model.d.ts +34 -34
  180. package/lib/data-providers/base.data-provider.d.ts +17 -17
  181. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  182. package/lib/data-providers/index.d.ts +5 -5
  183. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  184. package/lib/data-providers/table.data-provider.d.ts +6 -6
  185. package/lib/data-providers/tableview.data-provider.d.ts +15 -15
  186. package/lib/descriptors/action.descriptor.d.ts +148 -148
  187. package/lib/descriptors/editor.descriptor.d.ts +255 -255
  188. package/lib/descriptors/field.validator.d.ts +18 -18
  189. package/lib/descriptors/index.d.ts +7 -7
  190. package/lib/descriptors/lookup.descriptor.d.ts +17 -17
  191. package/lib/descriptors/model.descriptor.d.ts +15 -15
  192. package/lib/descriptors/table.descriptor.d.ts +184 -164
  193. package/lib/descriptors/tableview.descriptor.d.ts +39 -39
  194. package/lib/directives/component.directive.d.ts +11 -11
  195. package/lib/directives/index.d.ts +2 -2
  196. package/lib/directives/template.directive.d.ts +13 -13
  197. package/lib/mng-commons.module.d.ts +80 -79
  198. package/lib/models/index.d.ts +1 -2
  199. package/lib/models/user.model.d.ts +8 -8
  200. package/lib/pipes/boolean.pipe.d.ts +7 -7
  201. package/lib/pipes/index.d.ts +2 -2
  202. package/lib/pipes/property-path.pipe.d.ts +7 -7
  203. package/lib/router/index.d.ts +1 -0
  204. package/lib/router/models/index.d.ts +1 -0
  205. package/lib/router/models/router.model.d.ts +22 -0
  206. package/lib/router/route-builder.d.ts +66 -0
  207. package/lib/services/action.service.d.ts +92 -92
  208. package/lib/services/commons.service.d.ts +72 -72
  209. package/lib/services/configuration.service.d.ts +35 -35
  210. package/lib/services/index.d.ts +4 -4
  211. package/lib/services/navigation.service.d.ts +14 -14
  212. package/lib/services/providers/commons-init.provider.d.ts +2 -2
  213. package/lib/services/providers/config-service.provider.d.ts +5 -5
  214. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  215. package/lib/services/providers/index.d.ts +3 -3
  216. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  217. package/lib/services/tokens/index.d.ts +2 -2
  218. package/lib/services/tokens/module-config.token.d.ts +3 -3
  219. package/lib/types/index.d.ts +2 -2
  220. package/lib/types/type.decorator.d.ts +2 -2
  221. package/lib/types/type.model.d.ts +10 -10
  222. package/lib/utils/editor-formly.util.d.ts +9 -9
  223. package/lib/utils/i18n.util.d.ts +18 -18
  224. package/lib/utils/index.d.ts +5 -5
  225. package/lib/utils/model.util.d.ts +7 -7
  226. package/lib/utils/route.util.d.ts +4 -0
  227. package/lib/utils/toast.util.d.ts +13 -13
  228. package/lib/utils/type.util.d.ts +15 -15
  229. package/mediusinc-mng-commons.d.ts +5 -5
  230. package/package.json +4 -4
  231. package/public-api.d.ts +26 -25
  232. package/scss/common/layout/_exception.scss +1 -1
  233. package/esm2020/lib/models/router.model.mjs +0 -2
  234. package/lib/models/router.model.d.ts +0 -14
  235. package/mediusinc-mng-commons-0.2.0.tgz +0 -0
@@ -1,125 +1,125 @@
1
- import { first, map, mergeMap } from 'rxjs/operators';
2
- export class I18nUtil {
3
- static instantModelTranslation(translate, model, keyPath, customKey, item, fallbackKey, i18nParams) {
4
- const keys = I18nUtil.getModelKeysByPriority(model, keyPath, customKey, fallbackKey);
5
- const i18nModelName = I18nUtil.instantModelName(translate, model, true);
6
- const i18n = translate.instant(keys, I18nUtil.getModelI18nParams(model, item, i18nModelName ?? undefined, i18nParams));
7
- return I18nUtil.selectKeyByPriority(keys, i18n);
8
- }
9
- static instantActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, functionNameKey, i18nParams) {
10
- const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);
11
- const i18nModelName = I18nUtil.instantModelName(translate, action?.model, true);
12
- const i18nFunctionTitle = I18nUtil.getFunctionTitle(translate, functionNameKey);
13
- const i18n = translate.instant(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined, i18nParams, i18nFunctionTitle));
14
- return I18nUtil.selectKeyByPriority(keys, i18n);
15
- }
16
- static streamActionTranslation(translate, action, keyPath, customKey, item, fallbackKey) {
17
- return I18nUtil.getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, false);
18
- }
19
- static getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, oneTime = true) {
20
- const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);
21
- return I18nUtil.getModelName(translate, action?.model, oneTime, true).pipe(mergeMap(i18nModelName => translate.get(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined))), map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));
22
- }
23
- static getModelKeysByPriority(model, keyPath, customKey, fallbackKey) {
24
- const keys = [];
25
- if (customKey) {
26
- keys.push(customKey);
27
- }
28
- const modelActionKey = `${model.typeName}.${keyPath}`;
29
- keys.push(modelActionKey);
30
- if (fallbackKey) {
31
- keys.push(fallbackKey);
32
- }
33
- return keys;
34
- }
35
- static getActionKeysByPriority(action, keyPath, customKey, fallbackKey) {
36
- const keys = [];
37
- if (customKey) {
38
- keys.push(customKey);
39
- }
40
- const modelActionKey = `${action.i18nModelActionBaseKey}.${keyPath}`;
41
- const actionKey = `${action.actionName}.${keyPath}`;
42
- keys.push(modelActionKey, actionKey);
43
- if (fallbackKey) {
44
- keys.push(fallbackKey);
45
- }
46
- return keys;
47
- }
48
- static getModelI18nParams(model, item, i18nModelName, i18nParameters = {}) {
49
- i18nParameters.itemId = '';
50
- i18nParameters.itemTitle = '';
51
- if (i18nModelName) {
52
- i18nParameters.modelName = i18nModelName;
53
- }
54
- if (item) {
55
- if (model.idPropertyName && item[model.idPropertyName]) {
56
- i18nParameters.itemId = item[model.idPropertyName];
57
- }
58
- if (model.titlePropertyName && item[model.titlePropertyName]) {
59
- i18nParameters.itemTitle = item[model.titlePropertyName];
60
- }
61
- }
62
- return i18nParameters;
63
- }
64
- static getActionI18nParams(action, item, i18nModelName, i18nParameters = {}, functionTitle) {
65
- i18nParameters.itemId = '';
66
- i18nParameters.itemTitle = '';
67
- if (functionTitle) {
68
- i18nParameters.functionTitle = functionTitle;
69
- }
70
- if (i18nModelName) {
71
- i18nParameters.modelName = i18nModelName;
72
- }
73
- if (item) {
74
- if (action.model.idPropertyName && item[action.model.idPropertyName]) {
75
- i18nParameters.itemId = item[action.model.idPropertyName];
76
- }
77
- if (action.model.titlePropertyName && item[action.model.titlePropertyName]) {
78
- i18nParameters.itemTitle = item[action.model.titlePropertyName];
79
- }
80
- }
81
- return i18nParameters;
82
- }
83
- static instantModelName(translate, model, singular) {
84
- const keys = I18nUtil.getModelNameKeys(model, singular);
85
- const i18n = translate.instant(keys);
86
- return I18nUtil.selectKeyByPriority(keys, i18n);
87
- }
88
- static getModelName(translate, model, oneTime = true, singular) {
89
- const keys = I18nUtil.getModelNameKeys(model, singular);
90
- const obs = translate.stream(keys);
91
- if (oneTime) {
92
- obs.pipe(first());
93
- }
94
- return obs.pipe(map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));
95
- }
96
- static getModelNameKeys(model, singular) {
97
- let keys = [];
98
- if (singular !== undefined) {
99
- keys.push(singular ? `${model?.typeName}.nameSingular` : `${model?.typeName}.namePlural`);
100
- }
101
- keys.push(`${model?.typeName}.name`);
102
- return keys;
103
- }
104
- static selectKeyByPriority(keys, i18n) {
105
- for (const key of keys) {
106
- if (key !== i18n[key]) {
107
- return i18n[key];
108
- }
109
- }
110
- return null;
111
- }
112
- static getFunctionTitle(translate, functionTitle) {
113
- if (functionTitle) {
114
- const translation = translate.instant(`mngAction.functions.${functionTitle}.title`);
115
- if (translation === functionTitle) {
116
- return null;
117
- }
118
- return translation;
119
- }
120
- else {
121
- return null;
122
- }
123
- }
124
- }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW5nLWNvbW1vbnMvc3JjL2xpYi91dGlscy9pMThuLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEQsTUFBTSxPQUFPLFFBQVE7SUFFVixNQUFNLENBQUMsdUJBQXVCLENBQUMsU0FBMkIsRUFBRSxLQUEyQixFQUFFLE9BQWUsRUFBRSxTQUFrQixFQUFFLElBQVUsRUFDeEcsV0FBb0IsRUFBRSxVQUFnQjtRQUN6RSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckYsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxJQUFJLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILE9BQU8sUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQTJCLEVBQUUsTUFBNkIsRUFBRSxPQUFlLEVBQUUsU0FBa0IsRUFBRSxJQUFVLEVBQzNHLFdBQW9CLEVBQUUsZUFBd0IsRUFBRSxVQUFnQjtRQUNuRyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFD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O1NBQ2Y7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3QsIG1hcCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcblxuZXhwb3J0IGNsYXNzIEkxOG5VdGlsIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBpdGVtPzogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLCBpMThuUGFyYW1zPzogYW55KTogc3RyaW5nfG51bGwge1xuICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWwuZ2V0TW9kZWxLZXlzQnlQcmlvcml0eShtb2RlbCwga2V5UGF0aCwgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgIGNvbnN0IGkxOG5Nb2RlbE5hbWUgPSBJMThuVXRpbC5pbnN0YW50TW9kZWxOYW1lKHRyYW5zbGF0ZSwgbW9kZWwsIHRydWUpO1xuICAgICAgICBjb25zdCBpMThuID0gdHJhbnNsYXRlLmluc3RhbnQoa2V5cywgSTE4blV0aWwuZ2V0TW9kZWxJMThuUGFyYW1zKG1vZGVsLCBpdGVtLCBpMThuTW9kZWxOYW1lID8/IHVuZGVmaW5lZCwgaTE4blBhcmFtcykpO1xuICAgICAgICByZXR1cm4gSTE4blV0aWwuc2VsZWN0S2V5QnlQcmlvcml0eShrZXlzLCBpMThuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbnRBY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBrZXlQYXRoOiBzdHJpbmcsIGN1c3RvbUtleT86IHN0cmluZywgaXRlbT86IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0tleT86IHN0cmluZywgZnVuY3Rpb25OYW1lS2V5Pzogc3RyaW5nLCBpMThuUGFyYW1zPzogYW55KTogc3RyaW5nfG51bGwge1xuICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWwuZ2V0QWN0aW9uS2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBrZXlQYXRoLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgY29uc3QgaTE4bk1vZGVsTmFtZSA9IEkxOG5VdGlsLmluc3RhbnRNb2RlbE5hbWUodHJhbnNsYXRlLCBhY3Rpb24/Lm1vZGVsLCB0cnVlKTtcbiAgICAgICAgY29uc3QgaTE4bkZ1bmN0aW9uVGl0bGUgPSBJMThuVXRpbC5nZXRGdW5jdGlvblRpdGxlKHRyYW5zbGF0ZSwgZnVuY3Rpb25OYW1lS2V5KTtcbiAgICAgICAgY29uc3QgaTE4biA9IHRyYW5zbGF0ZS5pbnN0YW50KGtleXMsIEkxOG5VdGlsLmdldEFjdGlvbkkxOG5QYXJhbXMoYWN0aW9uLCBpdGVtLCBpMThuTW9kZWxOYW1lID8/IHVuZGVmaW5lZCwgaTE4blBhcmFtcywgaTE4bkZ1bmN0aW9uVGl0bGUpKTtcbiAgICAgICAgcmV0dXJuIEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBrZXlQYXRoOiBzdHJpbmcsIGN1c3RvbUtleT86IHN0cmluZywgaXRlbT86IGFueSwgZmFsbGJhY2tLZXk/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZ3xudWxsPiB7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5nZXRBY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGUsIGFjdGlvbiwga2V5UGF0aCwgY3VzdG9tS2V5LCBpdGVtLCBmYWxsYmFja0tleSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Piwga2V5UGF0aDogc3RyaW5nLCBjdXN0b21LZXk/OiBzdHJpbmcsIGl0ZW0/OiBhbnksIGZhbGxiYWNrS2V5Pzogc3RyaW5nLCBvbmVUaW1lOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8c3RyaW5nfG51bGw+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlsLmdldEFjdGlvbktleXNCeVByaW9yaXR5KGFjdGlvbiwga2V5UGF0aCwgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5nZXRNb2RlbE5hbWUodHJhbnNsYXRlLCBhY3Rpb24/Lm1vZGVsLCBvbmVUaW1lLCB0cnVlKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoaTE4bk1vZGVsTmFtZSA9PiB0cmFuc2xhdGUuZ2V0KGtleXMsIEkxOG5VdGlsLmdldEFjdGlvbkkxOG5QYXJhbXMoYWN0aW9uLCBpdGVtLCBpMThuTW9kZWxOYW1lID8/IHVuZGVmaW5lZCkpKSxcbiAgICAgICAgICAgIG1hcChpMThuID0+IEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0TW9kZWxLZXlzQnlQcmlvcml0eShtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gYCR7bW9kZWwudHlwZU5hbWV9LiR7a2V5UGF0aH1gO1xuICAgICAgICBrZXlzLnB1c2gobW9kZWxBY3Rpb25LZXkpO1xuICAgICAgICBpZiAoZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChmYWxsYmFja0tleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0QWN0aW9uS2V5c0J5UHJpb3JpdHkoYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gYCR7YWN0aW9uLmkxOG5Nb2RlbEFjdGlvbkJhc2VLZXl9LiR7a2V5UGF0aH1gO1xuICAgICAgICBjb25zdCBhY3Rpb25LZXkgPSBgJHthY3Rpb24uYWN0aW9uTmFtZX0uJHtrZXlQYXRofWA7XG4gICAgICAgIGtleXMucHVzaChtb2RlbEFjdGlvbktleSwgYWN0aW9uS2V5KTtcbiAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goZmFsbGJhY2tLZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxJMThuUGFyYW1zKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55PiwgaXRlbTogYW55LCBpMThuTW9kZWxOYW1lPzogc3RyaW5nLCBpMThuUGFyYW1ldGVyczogYW55ID0ge30pIHtcbiAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbUlkID0gJydcbiAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbVRpdGxlID0gJydcblxuICAgICAgICBpZiAoaTE4bk1vZGVsTmFtZSkge1xuICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMubW9kZWxOYW1lID0gaTE4bk1vZGVsTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaWYgKG1vZGVsLmlkUHJvcGVydHlOYW1lICYmIGl0ZW1bbW9kZWwuaWRQcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbUlkID0gaXRlbVttb2RlbC5pZFByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUgJiYgaXRlbVttb2RlbC50aXRsZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtVGl0bGUgPSBpdGVtW21vZGVsLnRpdGxlUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTE4blBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3Rpb25JMThuUGFyYW1zKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtOiBhbnksIGkxOG5Nb2RlbE5hbWU/OiBzdHJpbmcsIGkxOG5QYXJhbWV0ZXJzOiBhbnkgPSB7fSwgZnVuY3Rpb25UaXRsZT86IHN0cmluZykge1xuICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtSWQgPSAnJ1xuICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtVGl0bGUgPSAnJ1xuXG4gICAgICAgIGlmIChmdW5jdGlvblRpdGxlKSB7XG4gICAgICAgICAgICBpMThuUGFyYW1ldGVycy5mdW5jdGlvblRpdGxlID0gZnVuY3Rpb25UaXRsZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaTE4bk1vZGVsTmFtZSkge1xuICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMubW9kZWxOYW1lID0gaTE4bk1vZGVsTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi5tb2RlbC5pZFByb3BlcnR5TmFtZSAmJiBpdGVtW2FjdGlvbi5tb2RlbC5pZFByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtSWQgPSBpdGVtW2FjdGlvbi5tb2RlbC5pZFByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWN0aW9uLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lICYmIGl0ZW1bYWN0aW9uLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgICAgICAgIGkxOG5QYXJhbWV0ZXJzLml0ZW1UaXRsZSA9IGl0ZW1bYWN0aW9uLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTE4blBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW50TW9kZWxOYW1lKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBzaW5ndWxhcj86IGJvb2xlYW4pOiBzdHJpbmd8bnVsbCB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbC5nZXRNb2RlbE5hbWVLZXlzKG1vZGVsLCBzaW5ndWxhcik7XG4gICAgICAgIGNvbnN0IGkxOG4gPSB0cmFuc2xhdGUuaW5zdGFudChrZXlzKTtcbiAgICAgICAgcmV0dXJuIEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbE5hbWUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIG9uZVRpbWU6IGJvb2xlYW4gPSB0cnVlLCBzaW5ndWxhcj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZ3xudWxsPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbC5nZXRNb2RlbE5hbWVLZXlzKG1vZGVsLCBzaW5ndWxhcik7XG4gICAgICAgIGNvbnN0IG9icyA9IHRyYW5zbGF0ZS5zdHJlYW0oa2V5cyk7XG4gICAgICAgIGlmIChvbmVUaW1lKSB7XG4gICAgICAgICAgICBvYnMucGlwZShmaXJzdCgpKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnMucGlwZShtYXAoaTE4biA9PiBJMThuVXRpbC5zZWxlY3RLZXlCeVByaW9yaXR5KGtleXMsIGkxOG4pKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbE5hbWVLZXlzKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwgc2luZ3VsYXI/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBrZXlzID0gW107XG4gICAgICAgIGlmIChzaW5ndWxhciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goc2luZ3VsYXIgPyBgJHttb2RlbD8udHlwZU5hbWV9Lm5hbWVTaW5ndWxhcmAgOiBgJHttb2RlbD8udHlwZU5hbWV9Lm5hbWVQbHVyYWxgKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlzLnB1c2goYCR7bW9kZWw/LnR5cGVOYW1lfS5uYW1lYCk7XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5czogc3RyaW5nW10sIGkxOG46IGFueSk6IHN0cmluZ3xudWxsIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gaTE4bltrZXldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkxOG5ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRGdW5jdGlvblRpdGxlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgZnVuY3Rpb25UaXRsZT86IHN0cmluZykge1xuICAgICAgICBpZiAoZnVuY3Rpb25UaXRsZSkge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0cmFuc2xhdGUuaW5zdGFudChgbW5nQWN0aW9uLmZ1bmN0aW9ucy4ke2Z1bmN0aW9uVGl0bGV9LnRpdGxlYCk7XG4gICAgICAgICAgICBpZiAodHJhbnNsYXRpb24gPT09IGZ1bmN0aW9uVGl0bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
1
+ import { first, map, mergeMap } from 'rxjs/operators';
2
+ export class I18nUtil {
3
+ static instantModelTranslation(translate, model, keyPath, customKey, item, fallbackKey, i18nParams) {
4
+ const keys = I18nUtil.getModelKeysByPriority(model, keyPath, customKey, fallbackKey);
5
+ const i18nModelName = I18nUtil.instantModelName(translate, model, true);
6
+ const i18n = translate.instant(keys, I18nUtil.getModelI18nParams(model, item, i18nModelName ?? undefined, i18nParams));
7
+ return I18nUtil.selectKeyByPriority(keys, i18n);
8
+ }
9
+ static instantActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, functionNameKey, i18nParams) {
10
+ const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);
11
+ const i18nModelName = I18nUtil.instantModelName(translate, action?.model, true);
12
+ const i18nFunctionTitle = I18nUtil.getFunctionTitle(translate, functionNameKey);
13
+ const i18n = translate.instant(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined, i18nParams, i18nFunctionTitle));
14
+ return I18nUtil.selectKeyByPriority(keys, i18n);
15
+ }
16
+ static streamActionTranslation(translate, action, keyPath, customKey, item, fallbackKey) {
17
+ return I18nUtil.getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, false);
18
+ }
19
+ static getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, oneTime = true) {
20
+ const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);
21
+ return I18nUtil.getModelName(translate, action?.model, oneTime, true).pipe(mergeMap(i18nModelName => translate.get(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined))), map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));
22
+ }
23
+ static getModelKeysByPriority(model, keyPath, customKey, fallbackKey) {
24
+ const keys = [];
25
+ if (customKey) {
26
+ keys.push(customKey);
27
+ }
28
+ const modelActionKey = `${model.typeName}.${keyPath}`;
29
+ keys.push(modelActionKey);
30
+ if (fallbackKey) {
31
+ keys.push(fallbackKey);
32
+ }
33
+ return keys;
34
+ }
35
+ static getActionKeysByPriority(action, keyPath, customKey, fallbackKey) {
36
+ const keys = [];
37
+ if (customKey) {
38
+ keys.push(customKey);
39
+ }
40
+ const modelActionKey = `${action.i18nModelActionBaseKey}.${keyPath}`;
41
+ const actionKey = `${action.actionName}.${keyPath}`;
42
+ keys.push(modelActionKey, actionKey);
43
+ if (fallbackKey) {
44
+ keys.push(fallbackKey);
45
+ }
46
+ return keys;
47
+ }
48
+ static getModelI18nParams(model, item, i18nModelName, i18nParameters = {}) {
49
+ i18nParameters.itemId = '';
50
+ i18nParameters.itemTitle = '';
51
+ if (i18nModelName) {
52
+ i18nParameters.modelName = i18nModelName;
53
+ }
54
+ if (item) {
55
+ if (model.idPropertyName && item[model.idPropertyName]) {
56
+ i18nParameters.itemId = item[model.idPropertyName];
57
+ }
58
+ if (model.titlePropertyName && item[model.titlePropertyName]) {
59
+ i18nParameters.itemTitle = item[model.titlePropertyName];
60
+ }
61
+ }
62
+ return i18nParameters;
63
+ }
64
+ static getActionI18nParams(action, item, i18nModelName, i18nParameters = {}, functionTitle) {
65
+ i18nParameters.itemId = '';
66
+ i18nParameters.itemTitle = '';
67
+ if (functionTitle) {
68
+ i18nParameters.functionTitle = functionTitle;
69
+ }
70
+ if (i18nModelName) {
71
+ i18nParameters.modelName = i18nModelName;
72
+ }
73
+ if (item) {
74
+ if (action.model.idPropertyName && item[action.model.idPropertyName]) {
75
+ i18nParameters.itemId = item[action.model.idPropertyName];
76
+ }
77
+ if (action.model.titlePropertyName && item[action.model.titlePropertyName]) {
78
+ i18nParameters.itemTitle = item[action.model.titlePropertyName];
79
+ }
80
+ }
81
+ return i18nParameters;
82
+ }
83
+ static instantModelName(translate, model, singular) {
84
+ const keys = I18nUtil.getModelNameKeys(model, singular);
85
+ const i18n = translate.instant(keys);
86
+ return I18nUtil.selectKeyByPriority(keys, i18n);
87
+ }
88
+ static getModelName(translate, model, oneTime = true, singular) {
89
+ const keys = I18nUtil.getModelNameKeys(model, singular);
90
+ const obs = translate.stream(keys);
91
+ if (oneTime) {
92
+ obs.pipe(first());
93
+ }
94
+ return obs.pipe(map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));
95
+ }
96
+ static getModelNameKeys(model, singular) {
97
+ let keys = [];
98
+ if (singular !== undefined) {
99
+ keys.push(singular ? `${model?.typeName}.nameSingular` : `${model?.typeName}.namePlural`);
100
+ }
101
+ keys.push(`${model?.typeName}.name`);
102
+ return keys;
103
+ }
104
+ static selectKeyByPriority(keys, i18n) {
105
+ for (const key of keys) {
106
+ if (key !== i18n[key]) {
107
+ return i18n[key];
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ static getFunctionTitle(translate, functionTitle) {
113
+ if (functionTitle) {
114
+ const translation = translate.instant(`mngAction.functions.${functionTitle}.title`);
115
+ if (translation === functionTitle) {
116
+ return null;
117
+ }
118
+ return translation;
119
+ }
120
+ else {
121
+ return null;
122
+ }
123
+ }
124
+ }
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9pMThuLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEQsTUFBTSxPQUFPLFFBQVE7SUFFVixNQUFNLENBQUMsdUJBQXVCLENBQUMsU0FBMkIsRUFBRSxLQUEyQixFQUFFLE9BQWUsRUFBRSxTQUFrQixFQUFFLElBQVUsRUFDeEcsV0FBb0IsRUFBRSxVQUFnQjtRQUN6RSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckYsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxJQUFJLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILE9BQU8sUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQTJCLEVBQUUsTUFBNkIsRUFBRSxPQUFlLEVBQUUsU0FBa0IsRUFBRSxJQUFVLEVBQzNHLFdBQW9CLEVBQUUsZUFBd0IsRUFBRSxVQUFnQjtRQUNuRyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdkYsTUFBTSxhQUFhLEdBQUcsUUFBUSxD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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3QsIG1hcCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcblxuZXhwb3J0IGNsYXNzIEkxOG5VdGlsIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBpdGVtPzogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLCBpMThuUGFyYW1zPzogYW55KTogc3RyaW5nfG51bGwge1xuICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWwuZ2V0TW9kZWxLZXlzQnlQcmlvcml0eShtb2RlbCwga2V5UGF0aCwgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgIGNvbnN0IGkxOG5Nb2RlbE5hbWUgPSBJMThuVXRpbC5pbnN0YW50TW9kZWxOYW1lKHRyYW5zbGF0ZSwgbW9kZWwsIHRydWUpO1xuICAgICAgICBjb25zdCBpMThuID0gdHJhbnNsYXRlLmluc3RhbnQoa2V5cywgSTE4blV0aWwuZ2V0TW9kZWxJMThuUGFyYW1zKG1vZGVsLCBpdGVtLCBpMThuTW9kZWxOYW1lID8/IHVuZGVmaW5lZCwgaTE4blBhcmFtcykpO1xuICAgICAgICByZXR1cm4gSTE4blV0aWwuc2VsZWN0S2V5QnlQcmlvcml0eShrZXlzLCBpMThuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbnRBY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBrZXlQYXRoOiBzdHJpbmcsIGN1c3RvbUtleT86IHN0cmluZywgaXRlbT86IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0tleT86IHN0cmluZywgZnVuY3Rpb25OYW1lS2V5Pzogc3RyaW5nLCBpMThuUGFyYW1zPzogYW55KTogc3RyaW5nfG51bGwge1xuICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWwuZ2V0QWN0aW9uS2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBrZXlQYXRoLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgY29uc3QgaTE4bk1vZGVsTmFtZSA9IEkxOG5VdGlsLmluc3RhbnRNb2RlbE5hbWUodHJhbnNsYXRlLCBhY3Rpb24/Lm1vZGVsLCB0cnVlKTtcbiAgICAgICAgY29uc3QgaTE4bkZ1bmN0aW9uVGl0bGUgPSBJMThuVXRpbC5nZXRGdW5jdGlvblRpdGxlKHRyYW5zbGF0ZSwgZnVuY3Rpb25OYW1lS2V5KTtcbiAgICAgICAgY29uc3QgaTE4biA9IHRyYW5zbGF0ZS5pbnN0YW50KGtleXMsIEkxOG5VdGlsLmdldEFjdGlvbkkxOG5QYXJhbXMoYWN0aW9uLCBpdGVtLCBpMThuTW9kZWxOYW1lID8/IHVuZGVmaW5lZCwgaTE4blBhcmFtcywgaTE4bkZ1bmN0aW9uVGl0bGUpKTtcbiAgICAgICAgcmV0dXJuIEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHJlYW1BY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBrZXlQYXRoOiBzdHJpbmcsIGN1c3RvbUtleT86IHN0cmluZywgaXRlbT86IGFueSwgZmFsbGJhY2tLZXk/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZ3xudWxsPiB7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5nZXRBY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGUsIGFjdGlvbiwga2V5UGF0aCwgY3VzdG9tS2V5LCBpdGVtLCBmYWxsYmFja0tleSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Piwga2V5UGF0aDogc3RyaW5nLCBjdXN0b21LZXk/OiBzdHJpbmcsIGl0ZW0/OiBhbnksIGZhbGxiYWNrS2V5Pzogc3RyaW5nLCBvbmVUaW1lOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8c3RyaW5nfG51bGw+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlsLmdldEFjdGlvbktleXNCeVByaW9yaXR5KGFjdGlvbiwga2V5UGF0aCwgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5nZXRNb2RlbE5hbWUodHJhbnNsYXRlLCBhY3Rpb24/Lm1vZGVsLCBvbmVUaW1lLCB0cnVlKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoaTE4bk1vZGVsTmFtZSA9PiB0cmFuc2xhdGUuZ2V0KGtleXMsIEkxOG5VdGlsLmdldEFjdGlvbkkxOG5QYXJhbXMoYWN0aW9uLCBpdGVtLCBpMThuTW9kZWxOYW1lID8/IHVuZGVmaW5lZCkpKSxcbiAgICAgICAgICAgIG1hcChpMThuID0+IEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0TW9kZWxLZXlzQnlQcmlvcml0eShtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gYCR7bW9kZWwudHlwZU5hbWV9LiR7a2V5UGF0aH1gO1xuICAgICAgICBrZXlzLnB1c2gobW9kZWxBY3Rpb25LZXkpO1xuICAgICAgICBpZiAoZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChmYWxsYmFja0tleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0QWN0aW9uS2V5c0J5UHJpb3JpdHkoYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gYCR7YWN0aW9uLmkxOG5Nb2RlbEFjdGlvbkJhc2VLZXl9LiR7a2V5UGF0aH1gO1xuICAgICAgICBjb25zdCBhY3Rpb25LZXkgPSBgJHthY3Rpb24uYWN0aW9uTmFtZX0uJHtrZXlQYXRofWA7XG4gICAgICAgIGtleXMucHVzaChtb2RlbEFjdGlvbktleSwgYWN0aW9uS2V5KTtcbiAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goZmFsbGJhY2tLZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxJMThuUGFyYW1zKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55PiwgaXRlbTogYW55LCBpMThuTW9kZWxOYW1lPzogc3RyaW5nLCBpMThuUGFyYW1ldGVyczogYW55ID0ge30pIHtcbiAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbUlkID0gJydcbiAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbVRpdGxlID0gJydcblxuICAgICAgICBpZiAoaTE4bk1vZGVsTmFtZSkge1xuICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMubW9kZWxOYW1lID0gaTE4bk1vZGVsTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaWYgKG1vZGVsLmlkUHJvcGVydHlOYW1lICYmIGl0ZW1bbW9kZWwuaWRQcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbUlkID0gaXRlbVttb2RlbC5pZFByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUgJiYgaXRlbVttb2RlbC50aXRsZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtVGl0bGUgPSBpdGVtW21vZGVsLnRpdGxlUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTE4blBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3Rpb25JMThuUGFyYW1zKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtOiBhbnksIGkxOG5Nb2RlbE5hbWU/OiBzdHJpbmcsIGkxOG5QYXJhbWV0ZXJzOiBhbnkgPSB7fSwgZnVuY3Rpb25UaXRsZT86IHN0cmluZykge1xuICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtSWQgPSAnJ1xuICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtVGl0bGUgPSAnJ1xuXG4gICAgICAgIGlmIChmdW5jdGlvblRpdGxlKSB7XG4gICAgICAgICAgICBpMThuUGFyYW1ldGVycy5mdW5jdGlvblRpdGxlID0gZnVuY3Rpb25UaXRsZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaTE4bk1vZGVsTmFtZSkge1xuICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMubW9kZWxOYW1lID0gaTE4bk1vZGVsTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi5tb2RlbC5pZFByb3BlcnR5TmFtZSAmJiBpdGVtW2FjdGlvbi5tb2RlbC5pZFByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtSWQgPSBpdGVtW2FjdGlvbi5tb2RlbC5pZFByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWN0aW9uLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lICYmIGl0ZW1bYWN0aW9uLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgICAgICAgIGkxOG5QYXJhbWV0ZXJzLml0ZW1UaXRsZSA9IGl0ZW1bYWN0aW9uLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTE4blBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW50TW9kZWxOYW1lKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBzaW5ndWxhcj86IGJvb2xlYW4pOiBzdHJpbmd8bnVsbCB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbC5nZXRNb2RlbE5hbWVLZXlzKG1vZGVsLCBzaW5ndWxhcik7XG4gICAgICAgIGNvbnN0IGkxOG4gPSB0cmFuc2xhdGUuaW5zdGFudChrZXlzKTtcbiAgICAgICAgcmV0dXJuIEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbE5hbWUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIG9uZVRpbWU6IGJvb2xlYW4gPSB0cnVlLCBzaW5ndWxhcj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZ3xudWxsPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbC5nZXRNb2RlbE5hbWVLZXlzKG1vZGVsLCBzaW5ndWxhcik7XG4gICAgICAgIGNvbnN0IG9icyA9IHRyYW5zbGF0ZS5zdHJlYW0oa2V5cyk7XG4gICAgICAgIGlmIChvbmVUaW1lKSB7XG4gICAgICAgICAgICBvYnMucGlwZShmaXJzdCgpKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYnMucGlwZShtYXAoaTE4biA9PiBJMThuVXRpbC5zZWxlY3RLZXlCeVByaW9yaXR5KGtleXMsIGkxOG4pKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbE5hbWVLZXlzKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwgc2luZ3VsYXI/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBrZXlzID0gW107XG4gICAgICAgIGlmIChzaW5ndWxhciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goc2luZ3VsYXIgPyBgJHttb2RlbD8udHlwZU5hbWV9Lm5hbWVTaW5ndWxhcmAgOiBgJHttb2RlbD8udHlwZU5hbWV9Lm5hbWVQbHVyYWxgKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlzLnB1c2goYCR7bW9kZWw/LnR5cGVOYW1lfS5uYW1lYCk7XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5czogc3RyaW5nW10sIGkxOG46IGFueSk6IHN0cmluZ3xudWxsIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gaTE4bltrZXldKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkxOG5ba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRGdW5jdGlvblRpdGxlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgZnVuY3Rpb25UaXRsZT86IHN0cmluZykge1xuICAgICAgICBpZiAoZnVuY3Rpb25UaXRsZSkge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0cmFuc2xhdGUuaW5zdGFudChgbW5nQWN0aW9uLmZ1bmN0aW9ucy4ke2Z1bmN0aW9uVGl0bGV9LnRpdGxlYCk7XG4gICAgICAgICAgICBpZiAodHJhbnNsYXRpb24gPT09IGZ1bmN0aW9uVGl0bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- export * from './editor-formly.util';
2
- export * from './i18n.util';
3
- export * from './model.util';
4
- export * from './toast.util';
5
- export * from './type.util';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VkaXRvci1mb3JtbHkudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4udXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS51dGlsJztcbiJdfQ==
1
+ export * from './editor-formly.util';
2
+ export * from './i18n.util';
3
+ export * from './model.util';
4
+ export * from './toast.util';
5
+ export * from './type.util';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VkaXRvci1mb3JtbHkudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4udXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZS51dGlsJztcbiJdfQ==
@@ -1,57 +1,57 @@
1
- import { ObjectSerializer } from '../api/utils';
2
- export class ModelUtil {
3
- static findIdAttribute(classType) {
4
- const objSerializer = ObjectSerializer.get();
5
- const attributes = objSerializer.findAttributesDefinitionByClassType(classType);
6
- if (!attributes) {
7
- return null;
8
- }
9
- let idAttribute = attributes.find(a => a.name === 'id');
10
- if (!idAttribute) {
11
- // if no id, try with code
12
- idAttribute = attributes.find(a => a.name === 'code');
13
- if (!idAttribute) {
14
- // if no id or code, take the first attribute
15
- idAttribute = attributes[0];
16
- }
17
- }
18
- return idAttribute?.name ?? null;
19
- }
20
- static findTitleAttribute(classType) {
21
- const objSerializer = ObjectSerializer.get();
22
- const attributes = objSerializer.findAttributesDefinitionByClassType(classType);
23
- if (!attributes) {
24
- return null;
25
- }
26
- let titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'name');
27
- if (!titleAttribute) {
28
- // if no name, try with title
29
- titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'title');
30
- if (!titleAttribute) {
31
- // if no name or title, take the first attribute
32
- titleAttribute = attributes[0];
33
- }
34
- }
35
- return titleAttribute?.name ?? null;
36
- }
37
- static trySetLookupItemsProperties(lookup) {
38
- if (lookup.modelType) {
39
- if (!lookup.itemsValueProperty || !lookup.dataKeyProperty) {
40
- const idProperty = ModelUtil.findIdAttribute(lookup.modelType) ?? undefined;
41
- if (idProperty && !lookup.itemsValueProperty) {
42
- lookup.withItemsValueProperty(idProperty);
43
- }
44
- if (idProperty && !lookup.dataKeyProperty) {
45
- lookup.withDataKeyProperty(idProperty);
46
- }
47
- }
48
- if (!lookup.itemsLabelProperty) {
49
- const labelProperty = ModelUtil.findTitleAttribute(lookup.modelType);
50
- if (labelProperty) {
51
- lookup.withItemsLabelProperty(labelProperty);
52
- }
53
- }
54
- }
55
- }
56
- }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvdXRpbHMvbW9kZWwudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUMsTUFBTSxPQUFPLFNBQVM7SUFDWCxNQUFNLENBQUMsZUFBZSxDQUFJLFNBQXVCO1FBQ3BELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCwwQkFBMEI7WUFDMUIsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2QsNkNBQTZDO2dCQUM3QyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7UUFFRCxPQUFPLFdBQVcsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUksU0FBdUI7UUFDdkQsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqQiw2QkFBNkI7WUFDN0IsY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ2pCLGdEQUFnRDtnQkFDaEQsY0FBYyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsQztTQUNKO1FBRUQsT0FBTyxjQUFjLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLDJCQUEyQixDQUFJLE1BQTRCO1FBQ3JFLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDO2dCQUM1RSxJQUFJLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtvQkFDMUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUM3QztnQkFDRCxJQUFJLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7b0JBQ3ZDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDMUM7YUFDSjtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzVCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksYUFBYSxFQUFFO29CQUNmLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDaEQ7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtPYmplY3RTZXJpYWxpemVyfSBmcm9tICcuLi9hcGkvdXRpbHMnO1xuaW1wb3J0IHtJTG9va3VwRGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGZpbmRJZEF0dHJpYnV0ZTxUPihjbGFzc1R5cGU6IENsYXNzVHlwZTxUPik6IHN0cmluZ3xudWxsIHtcbiAgICAgICAgY29uc3Qgb2JqU2VyaWFsaXplciA9IE9iamVjdFNlcmlhbGl6ZXIuZ2V0KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBvYmpTZXJpYWxpemVyLmZpbmRBdHRyaWJ1dGVzRGVmaW5pdGlvbkJ5Q2xhc3NUeXBlKGNsYXNzVHlwZSk7XG4gICAgICAgIGlmICghYXR0cmlidXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09ICdpZCcpO1xuICAgICAgICBpZiAoIWlkQXR0cmlidXRlKSB7XG4gICAgICAgICAgICAvLyBpZiBubyBpZCwgdHJ5IHdpdGggY29kZVxuICAgICAgICAgICAgaWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09ICdjb2RlJyk7XG4gICAgICAgICAgICBpZiAoIWlkQXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgbm8gaWQgb3IgY29kZSwgdGFrZSB0aGUgZmlyc3QgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgaWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkQXR0cmlidXRlPy5uYW1lID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kVGl0bGVBdHRyaWJ1dGU8VD4oY2xhc3NUeXBlOiBDbGFzc1R5cGU8VD4pOiBzdHJpbmd8bnVsbCB7XG4gICAgICAgIGNvbnN0IG9ialNlcmlhbGl6ZXIgPSBPYmplY3RTZXJpYWxpemVyLmdldCgpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gb2JqU2VyaWFsaXplci5maW5kQXR0cmlidXRlc0RlZmluaXRpb25CeUNsYXNzVHlwZShjbGFzc1R5cGUpO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRpdGxlQXR0cmlidXRlID0gYXR0cmlidXRlcy5maW5kKGEgPT4gYS50eXBlID09PSAnc3RyaW5nJyAmJiBhLm5hbWUgPT09ICduYW1lJyk7XG4gICAgICAgIGlmICghdGl0bGVBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIC8vIGlmIG5vIG5hbWUsIHRyeSB3aXRoIHRpdGxlXG4gICAgICAgICAgICB0aXRsZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuZmluZChhID0+IGEudHlwZSA9PT0gJ3N0cmluZycgJiYgYS5uYW1lID09PSAndGl0bGUnKTtcbiAgICAgICAgICAgIGlmICghdGl0bGVBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBubyBuYW1lIG9yIHRpdGxlLCB0YWtlIHRoZSBmaXJzdCBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICB0aXRsZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGl0bGVBdHRyaWJ1dGU/Lm5hbWUgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRyeVNldExvb2t1cEl0ZW1zUHJvcGVydGllczxUPihsb29rdXA6IElMb29rdXBEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIGlmIChsb29rdXAubW9kZWxUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIWxvb2t1cC5pdGVtc1ZhbHVlUHJvcGVydHkgfHwgIWxvb2t1cC5kYXRhS2V5UHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZFByb3BlcnR5ID0gTW9kZWxVdGlsLmZpbmRJZEF0dHJpYnV0ZShsb29rdXAubW9kZWxUeXBlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGlkUHJvcGVydHkgJiYgIWxvb2t1cC5pdGVtc1ZhbHVlUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9va3VwLndpdGhJdGVtc1ZhbHVlUHJvcGVydHkoaWRQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpZFByb3BlcnR5ICYmICFsb29rdXAuZGF0YUtleVByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cC53aXRoRGF0YUtleVByb3BlcnR5KGlkUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9va3VwLml0ZW1zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsUHJvcGVydHkgPSBNb2RlbFV0aWwuZmluZFRpdGxlQXR0cmlidXRlKGxvb2t1cC5tb2RlbFR5cGUpO1xuICAgICAgICAgICAgICAgIGlmIChsYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cC53aXRoSXRlbXNMYWJlbFByb3BlcnR5KGxhYmVsUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
1
+ import { ObjectSerializer } from '../api/utils';
2
+ export class ModelUtil {
3
+ static findIdAttribute(classType) {
4
+ const objSerializer = ObjectSerializer.get();
5
+ const attributes = objSerializer.findAttributesDefinitionByClassType(classType);
6
+ if (!attributes) {
7
+ return null;
8
+ }
9
+ let idAttribute = attributes.find(a => a.name === 'id');
10
+ if (!idAttribute) {
11
+ // if no id, try with code
12
+ idAttribute = attributes.find(a => a.name === 'code');
13
+ if (!idAttribute) {
14
+ // if no id or code, take the first attribute
15
+ idAttribute = attributes[0];
16
+ }
17
+ }
18
+ return idAttribute?.name ?? null;
19
+ }
20
+ static findTitleAttribute(classType) {
21
+ const objSerializer = ObjectSerializer.get();
22
+ const attributes = objSerializer.findAttributesDefinitionByClassType(classType);
23
+ if (!attributes) {
24
+ return null;
25
+ }
26
+ let titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'name');
27
+ if (!titleAttribute) {
28
+ // if no name, try with title
29
+ titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'title');
30
+ if (!titleAttribute) {
31
+ // if no name or title, take the first attribute
32
+ titleAttribute = attributes[0];
33
+ }
34
+ }
35
+ return titleAttribute?.name ?? null;
36
+ }
37
+ static trySetLookupItemsProperties(lookup) {
38
+ if (lookup.modelType) {
39
+ if (!lookup.itemsValueProperty || !lookup.dataKeyProperty) {
40
+ const idProperty = ModelUtil.findIdAttribute(lookup.modelType) ?? undefined;
41
+ if (idProperty && !lookup.itemsValueProperty) {
42
+ lookup.withItemsValueProperty(idProperty);
43
+ }
44
+ if (idProperty && !lookup.dataKeyProperty) {
45
+ lookup.withDataKeyProperty(idProperty);
46
+ }
47
+ }
48
+ if (!lookup.itemsLabelProperty) {
49
+ const labelProperty = ModelUtil.findTitleAttribute(lookup.modelType);
50
+ if (labelProperty) {
51
+ lookup.withItemsLabelProperty(labelProperty);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvbW9kZWwudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUMsTUFBTSxPQUFPLFNBQVM7SUFDWCxNQUFNLENBQUMsZUFBZSxDQUFJLFNBQXVCO1FBQ3BELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCwwQkFBMEI7WUFDMUIsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2QsNkNBQTZDO2dCQUM3QyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7UUFFRCxPQUFPLFdBQVcsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUksU0FBdUI7UUFDdkQsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqQiw2QkFBNkI7WUFDN0IsY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ2pCLGdEQUFnRDtnQkFDaEQsY0FBYyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsQztTQUNKO1FBRUQsT0FBTyxjQUFjLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLDJCQUEyQixDQUFJLE1BQTRCO1FBQ3JFLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDO2dCQUM1RSxJQUFJLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtvQkFDMUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUM3QztnQkFDRCxJQUFJLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7b0JBQ3ZDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDMUM7YUFDSjtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzVCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksYUFBYSxFQUFFO29CQUNmLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDaEQ7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHtPYmplY3RTZXJpYWxpemVyfSBmcm9tICcuLi9hcGkvdXRpbHMnO1xuaW1wb3J0IHtJTG9va3VwRGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuXG5leHBvcnQgY2xhc3MgTW9kZWxVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGZpbmRJZEF0dHJpYnV0ZTxUPihjbGFzc1R5cGU6IENsYXNzVHlwZTxUPik6IHN0cmluZ3xudWxsIHtcbiAgICAgICAgY29uc3Qgb2JqU2VyaWFsaXplciA9IE9iamVjdFNlcmlhbGl6ZXIuZ2V0KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBvYmpTZXJpYWxpemVyLmZpbmRBdHRyaWJ1dGVzRGVmaW5pdGlvbkJ5Q2xhc3NUeXBlKGNsYXNzVHlwZSk7XG4gICAgICAgIGlmICghYXR0cmlidXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09ICdpZCcpO1xuICAgICAgICBpZiAoIWlkQXR0cmlidXRlKSB7XG4gICAgICAgICAgICAvLyBpZiBubyBpZCwgdHJ5IHdpdGggY29kZVxuICAgICAgICAgICAgaWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09ICdjb2RlJyk7XG4gICAgICAgICAgICBpZiAoIWlkQXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgbm8gaWQgb3IgY29kZSwgdGFrZSB0aGUgZmlyc3QgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgaWRBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkQXR0cmlidXRlPy5uYW1lID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kVGl0bGVBdHRyaWJ1dGU8VD4oY2xhc3NUeXBlOiBDbGFzc1R5cGU8VD4pOiBzdHJpbmd8bnVsbCB7XG4gICAgICAgIGNvbnN0IG9ialNlcmlhbGl6ZXIgPSBPYmplY3RTZXJpYWxpemVyLmdldCgpO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gb2JqU2VyaWFsaXplci5maW5kQXR0cmlidXRlc0RlZmluaXRpb25CeUNsYXNzVHlwZShjbGFzc1R5cGUpO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRpdGxlQXR0cmlidXRlID0gYXR0cmlidXRlcy5maW5kKGEgPT4gYS50eXBlID09PSAnc3RyaW5nJyAmJiBhLm5hbWUgPT09ICduYW1lJyk7XG4gICAgICAgIGlmICghdGl0bGVBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIC8vIGlmIG5vIG5hbWUsIHRyeSB3aXRoIHRpdGxlXG4gICAgICAgICAgICB0aXRsZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuZmluZChhID0+IGEudHlwZSA9PT0gJ3N0cmluZycgJiYgYS5uYW1lID09PSAndGl0bGUnKTtcbiAgICAgICAgICAgIGlmICghdGl0bGVBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBubyBuYW1lIG9yIHRpdGxlLCB0YWtlIHRoZSBmaXJzdCBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICB0aXRsZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGl0bGVBdHRyaWJ1dGU/Lm5hbWUgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRyeVNldExvb2t1cEl0ZW1zUHJvcGVydGllczxUPihsb29rdXA6IElMb29rdXBEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIGlmIChsb29rdXAubW9kZWxUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIWxvb2t1cC5pdGVtc1ZhbHVlUHJvcGVydHkgfHwgIWxvb2t1cC5kYXRhS2V5UHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZFByb3BlcnR5ID0gTW9kZWxVdGlsLmZpbmRJZEF0dHJpYnV0ZShsb29rdXAubW9kZWxUeXBlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGlkUHJvcGVydHkgJiYgIWxvb2t1cC5pdGVtc1ZhbHVlUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9va3VwLndpdGhJdGVtc1ZhbHVlUHJvcGVydHkoaWRQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpZFByb3BlcnR5ICYmICFsb29rdXAuZGF0YUtleVByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cC53aXRoRGF0YUtleVByb3BlcnR5KGlkUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9va3VwLml0ZW1zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsUHJvcGVydHkgPSBNb2RlbFV0aWwuZmluZFRpdGxlQXR0cmlidXRlKGxvb2t1cC5tb2RlbFR5cGUpO1xuICAgICAgICAgICAgICAgIGlmIChsYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cC53aXRoSXRlbXNMYWJlbFByb3BlcnR5KGxhYmVsUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ export class RouteUtil {
2
+ static removeEmptyPathSegments(path) {
3
+ const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);
4
+ return filteredPath.length > 0 ? filteredPath : [''];
5
+ }
6
+ static appendPathToBasePath(basePath, path) {
7
+ if (path.length > 0) {
8
+ if (path[0].startsWith('/')) {
9
+ return path;
10
+ }
11
+ else if (path[0].startsWith('../')) {
12
+ // TODO: process multi upper folder
13
+ throw new Error('Not implemented');
14
+ }
15
+ else {
16
+ return RouteUtil.removeEmptyPathSegments([...basePath, ...path]);
17
+ }
18
+ }
19
+ else {
20
+ return basePath;
21
+ }
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvcm91dGUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUztJQUVYLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFtQjtRQUNyRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEYsT0FBTyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsUUFBdUIsRUFBRSxJQUFtQjtRQUMzRSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekIsT0FBTyxJQUFJLENBQUM7YUFDZjtpQkFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2xDLG1DQUFtQztnQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNILE9BQU8sU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1NBQ0o7YUFBTTtZQUNILE9BQU8sUUFBUSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJvdXRlVXRpbCB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUVtcHR5UGF0aFNlZ21lbnRzKHBhdGg6IEFycmF5PHN0cmluZz4pIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRQYXRoID0gcGF0aC5maWx0ZXIocHMgPT4gdHlwZW9mIHBzID09PSAnc3RyaW5nJyAmJiBwcy5sZW5ndGggPiAwKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkUGF0aC5sZW5ndGggPiAwID8gZmlsdGVyZWRQYXRoIDogWycnXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFwcGVuZFBhdGhUb0Jhc2VQYXRoKGJhc2VQYXRoOiBBcnJheTxzdHJpbmc+LCBwYXRoOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChwYXRoWzBdLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXRoWzBdLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogcHJvY2VzcyBtdWx0aSB1cHBlciBmb2xkZXJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUm91dGVVdGlsLnJlbW92ZUVtcHR5UGF0aFNlZ21lbnRzKFsuLi5iYXNlUGF0aCwgLi4ucGF0aF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,39 +1,39 @@
1
- import { I18nUtil } from './i18n.util';
2
- export class ToastUtil {
3
- static tableNotificationError(translationService, table, error, tableview) {
4
- const params = {};
5
- if (error?.message) {
6
- params.errorMessage = `: ${error.message}`;
7
- }
8
- else {
9
- params.errorMessage = '.';
10
- }
11
- console.log(params);
12
- const tableErrorTitle = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;
13
- const tableErrorMessage = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;
14
- tableview?.messageService?.add({ severity: 'error', summary: tableErrorTitle, detail: tableErrorMessage });
15
- }
16
- static actionNotificationSuccess(translationService, action, functionName, customTitleKey, customMessageKey, tableview, item) {
17
- const actionSuccessTitle = I18nUtil.instantActionTranslation(translationService, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;
18
- const actionSuccessMessage = I18nUtil.instantActionTranslation(translationService, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;
19
- tableview?.messageService?.add({ severity: 'success', summary: actionSuccessTitle, detail: actionSuccessMessage });
20
- }
21
- static actionNotificationError(translationService, action, error, functionName, tableview, item) {
22
- const params = {};
23
- if (error?.message) {
24
- params.errorMessage = `: ${error.message}`;
25
- }
26
- else {
27
- params.errorMessage = '.';
28
- }
29
- const actionErrorTitle = I18nUtil.instantActionTranslation(translationService, action, 'error.title', action.runNotificationErrorTitle, item, 'general.error', functionName, params) ?? undefined;
30
- const actionErrorMessage = I18nUtil.instantActionTranslation(translationService, action, 'error.message', action.runNotificationErrorMessage, item, 'general.errorMessage', functionName, params) ?? undefined;
31
- tableview?.messageService?.add({ severity: 'error', summary: actionErrorTitle, detail: actionErrorMessage });
32
- }
33
- static getFormEditorWarningMessage(translationService, title, message) {
34
- const actionErrorTitle = translationService.instant(title) ?? undefined;
35
- const actionErrorMessage = translationService.instant(message) ?? undefined;
36
- return { severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage };
37
- }
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvdXRpbHMvdG9hc3QudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXJDLE1BQU0sT0FBTyxTQUFTO0lBRVgsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGtCQUFvQyxFQUFFLEtBQTJCLEVBQUUsS0FBVSxFQUFFLFNBQStDO1FBQy9KLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQTtRQUN0QixJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDaEIsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM5QzthQUFNO1lBQ0gsTUFBTSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7U0FDN0I7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUMzSyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDO1FBRXRMLFNBQVMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBb0MsRUFBRSxNQUE2QixFQUFFLFlBQW9CLEVBQUUsY0FBdUIsRUFBRSxnQkFBeUIsRUFBRSxTQUErQyxFQUFFLElBQVU7UUFDOU8sTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM5SyxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLFlBQVksQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUUzTCxTQUFTLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBb0MsRUFBRSxNQUE2QixFQUFFLEtBQVUsRUFBRSxZQUFvQixFQUFFLFNBQStDLEVBQUUsSUFBVTtRQUNwTSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUE7UUFDdEIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7YUFBTTtZQUNILE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQzdCO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMseUJBQXlCLEVBQ2xJLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM5RCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQywyQkFBMkIsRUFDeEksSUFBSSxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUM7UUFFckUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsa0JBQW9DLEVBQUUsS0FBYSxFQUFFLE9BQWU7UUFDMUcsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ3hFLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM1RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDcEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgVGFibGVEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge1RhYmxldmlld0NvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGV2aWV3L3NlcnZpY2VzJztcbmltcG9ydCB7STE4blV0aWx9IGZyb20gJy4vaTE4bi51dGlsJztcblxuZXhwb3J0IGNsYXNzIFRvYXN0VXRpbCB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHRhYmxlTm90aWZpY2F0aW9uRXJyb3IodHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0YWJsZTogVGFibGVEZXNjcmlwdG9yPGFueT4sIGVycm9yOiBhbnksIHRhYmxldmlldz86IFRhYmxldmlld0NvbXBvbmVudFNlcnZpY2U8YW55LCBhbnk+KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge31cbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gYDogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKHBhcmFtcylcbiAgICAgICAgY29uc3QgdGFibGVFcnJvclRpdGxlID0gSTE4blV0aWwuaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLnRpdGxlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JNZXNzYWdlID0gSTE4blV0aWwuaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLm1lc3NhZ2UnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGFibGV2aWV3Py5tZXNzYWdlU2VydmljZT8uYWRkKHtzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogdGFibGVFcnJvclRpdGxlLCBkZXRhaWw6IHRhYmxlRXJyb3JNZXNzYWdlfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhY3Rpb25Ob3RpZmljYXRpb25TdWNjZXNzKHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sIGZ1bmN0aW9uTmFtZTogc3RyaW5nLCBjdXN0b21UaXRsZUtleT86IHN0cmluZywgY3VzdG9tTWVzc2FnZUtleT86IHN0cmluZywgdGFibGV2aWV3PzogVGFibGV2aWV3Q29tcG9uZW50U2VydmljZTxhbnksIGFueT4sIGl0ZW0/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uU3VjY2Vzc1RpdGxlID0gSTE4blV0aWwuaW5zdGFudEFjdGlvblRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uU2VydmljZSwgYWN0aW9uLCAnc3VjY2Vzcy50aXRsZScsIGN1c3RvbVRpdGxlS2V5LCBpdGVtLCAnZ2VuZXJhbC5zdWNjZXNzJywgZnVuY3Rpb25OYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvblN1Y2Nlc3NNZXNzYWdlID0gSTE4blV0aWwuaW5zdGFudEFjdGlvblRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uU2VydmljZSwgYWN0aW9uLCAnc3VjY2Vzcy5tZXNzYWdlJywgY3VzdG9tTWVzc2FnZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2Vzc01lc3NhZ2UnLCBmdW5jdGlvbk5hbWUpID8/IHVuZGVmaW5lZDtcblxuICAgICAgICB0YWJsZXZpZXc/Lm1lc3NhZ2VTZXJ2aWNlPy5hZGQoe3NldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6IGFjdGlvblN1Y2Nlc3NUaXRsZSwgZGV0YWlsOiBhY3Rpb25TdWNjZXNzTWVzc2FnZX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uRXJyb3IodHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PiwgZXJyb3I6IGFueSwgZnVuY3Rpb25OYW1lOiBzdHJpbmcsIHRhYmxldmlldz86IFRhYmxldmlld0NvbXBvbmVudFNlcnZpY2U8YW55LCBhbnk+LCBpdGVtPzogYW55KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge31cbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gYDogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPSBJMThuVXRpbC5pbnN0YW50QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCBhY3Rpb24sICdlcnJvci50aXRsZScsIGFjdGlvbi5ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlLFxuICAgICAgICAgICAgaXRlbSwgJ2dlbmVyYWwuZXJyb3InLCBmdW5jdGlvbk5hbWUsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPSBJMThuVXRpbC5pbnN0YW50QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCBhY3Rpb24sICdlcnJvci5tZXNzYWdlJywgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGl0ZW0sICdnZW5lcmFsLmVycm9yTWVzc2FnZScsIGZ1bmN0aW9uTmFtZSwgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGFibGV2aWV3Py5tZXNzYWdlU2VydmljZT8uYWRkKHtzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID0gdHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQodGl0bGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gdHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobWVzc2FnZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5Oid3YXJuJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9O1xuICAgIH1cbn1cbiJdfQ==
1
+ import { I18nUtil } from './i18n.util';
2
+ export class ToastUtil {
3
+ static tableNotificationError(translationService, table, error, tableview) {
4
+ const params = {};
5
+ if (error?.message) {
6
+ params.errorMessage = `: ${error.message}`;
7
+ }
8
+ else {
9
+ params.errorMessage = '.';
10
+ }
11
+ console.log(params);
12
+ const tableErrorTitle = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;
13
+ const tableErrorMessage = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;
14
+ tableview?.messageService?.add({ severity: 'error', summary: tableErrorTitle, detail: tableErrorMessage });
15
+ }
16
+ static actionNotificationSuccess(translationService, action, functionName, customTitleKey, customMessageKey, tableview, item) {
17
+ const actionSuccessTitle = I18nUtil.instantActionTranslation(translationService, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;
18
+ const actionSuccessMessage = I18nUtil.instantActionTranslation(translationService, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;
19
+ tableview?.messageService?.add({ severity: 'success', summary: actionSuccessTitle, detail: actionSuccessMessage });
20
+ }
21
+ static actionNotificationError(translationService, action, error, functionName, tableview, item) {
22
+ const params = {};
23
+ if (error?.message) {
24
+ params.errorMessage = `: ${error.message}`;
25
+ }
26
+ else {
27
+ params.errorMessage = '.';
28
+ }
29
+ const actionErrorTitle = I18nUtil.instantActionTranslation(translationService, action, 'error.title', action.runNotificationErrorTitle, item, 'general.error', functionName, params) ?? undefined;
30
+ const actionErrorMessage = I18nUtil.instantActionTranslation(translationService, action, 'error.message', action.runNotificationErrorMessage, item, 'general.errorMessage', functionName, params) ?? undefined;
31
+ tableview?.messageService?.add({ severity: 'error', summary: actionErrorTitle, detail: actionErrorMessage });
32
+ }
33
+ static getFormEditorWarningMessage(translationService, title, message) {
34
+ const actionErrorTitle = translationService.instant(title) ?? undefined;
35
+ const actionErrorMessage = translationService.instant(message) ?? undefined;
36
+ return { severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage };
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvdG9hc3QudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXJDLE1BQU0sT0FBTyxTQUFTO0lBRVgsTUFBTSxDQUFDLHNCQUFzQixDQUFDLGtCQUFvQyxFQUFFLEtBQTJCLEVBQUUsS0FBVSxFQUFFLFNBQStDO1FBQy9KLE1BQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQTtRQUN0QixJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDaEIsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM5QzthQUFNO1lBQ0gsTUFBTSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7U0FDN0I7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUMzSyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDO1FBRXRMLFNBQVMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVNLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBb0MsRUFBRSxNQUE2QixFQUFFLFlBQW9CLEVBQUUsY0FBdUIsRUFBRSxnQkFBeUIsRUFBRSxTQUErQyxFQUFFLElBQVU7UUFDOU8sTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM5SyxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLFlBQVksQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUUzTCxTQUFTLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBb0MsRUFBRSxNQUE2QixFQUFFLEtBQVUsRUFBRSxZQUFvQixFQUFFLFNBQStDLEVBQUUsSUFBVTtRQUNwTSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUE7UUFDdEIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7YUFBTTtZQUNILE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQzdCO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMseUJBQXlCLEVBQ2xJLElBQUksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM5RCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQywyQkFBMkIsRUFDeEksSUFBSSxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUM7UUFFckUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsa0JBQW9DLEVBQUUsS0FBYSxFQUFFLE9BQWU7UUFDMUcsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ3hFLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM1RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDcEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgVGFibGVEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge1RhYmxldmlld0NvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGV2aWV3L3NlcnZpY2VzJztcbmltcG9ydCB7STE4blV0aWx9IGZyb20gJy4vaTE4bi51dGlsJztcblxuZXhwb3J0IGNsYXNzIFRvYXN0VXRpbCB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHRhYmxlTm90aWZpY2F0aW9uRXJyb3IodHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0YWJsZTogVGFibGVEZXNjcmlwdG9yPGFueT4sIGVycm9yOiBhbnksIHRhYmxldmlldz86IFRhYmxldmlld0NvbXBvbmVudFNlcnZpY2U8YW55LCBhbnk+KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge31cbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gYDogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKHBhcmFtcylcbiAgICAgICAgY29uc3QgdGFibGVFcnJvclRpdGxlID0gSTE4blV0aWwuaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLnRpdGxlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JNZXNzYWdlID0gSTE4blV0aWwuaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLm1lc3NhZ2UnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGFibGV2aWV3Py5tZXNzYWdlU2VydmljZT8uYWRkKHtzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogdGFibGVFcnJvclRpdGxlLCBkZXRhaWw6IHRhYmxlRXJyb3JNZXNzYWdlfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhY3Rpb25Ob3RpZmljYXRpb25TdWNjZXNzKHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sIGZ1bmN0aW9uTmFtZTogc3RyaW5nLCBjdXN0b21UaXRsZUtleT86IHN0cmluZywgY3VzdG9tTWVzc2FnZUtleT86IHN0cmluZywgdGFibGV2aWV3PzogVGFibGV2aWV3Q29tcG9uZW50U2VydmljZTxhbnksIGFueT4sIGl0ZW0/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uU3VjY2Vzc1RpdGxlID0gSTE4blV0aWwuaW5zdGFudEFjdGlvblRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uU2VydmljZSwgYWN0aW9uLCAnc3VjY2Vzcy50aXRsZScsIGN1c3RvbVRpdGxlS2V5LCBpdGVtLCAnZ2VuZXJhbC5zdWNjZXNzJywgZnVuY3Rpb25OYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvblN1Y2Nlc3NNZXNzYWdlID0gSTE4blV0aWwuaW5zdGFudEFjdGlvblRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uU2VydmljZSwgYWN0aW9uLCAnc3VjY2Vzcy5tZXNzYWdlJywgY3VzdG9tTWVzc2FnZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2Vzc01lc3NhZ2UnLCBmdW5jdGlvbk5hbWUpID8/IHVuZGVmaW5lZDtcblxuICAgICAgICB0YWJsZXZpZXc/Lm1lc3NhZ2VTZXJ2aWNlPy5hZGQoe3NldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6IGFjdGlvblN1Y2Nlc3NUaXRsZSwgZGV0YWlsOiBhY3Rpb25TdWNjZXNzTWVzc2FnZX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uRXJyb3IodHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PiwgZXJyb3I6IGFueSwgZnVuY3Rpb25OYW1lOiBzdHJpbmcsIHRhYmxldmlldz86IFRhYmxldmlld0NvbXBvbmVudFNlcnZpY2U8YW55LCBhbnk+LCBpdGVtPzogYW55KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge31cbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gYDogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPSBJMThuVXRpbC5pbnN0YW50QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCBhY3Rpb24sICdlcnJvci50aXRsZScsIGFjdGlvbi5ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlLFxuICAgICAgICAgICAgaXRlbSwgJ2dlbmVyYWwuZXJyb3InLCBmdW5jdGlvbk5hbWUsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPSBJMThuVXRpbC5pbnN0YW50QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCBhY3Rpb24sICdlcnJvci5tZXNzYWdlJywgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGl0ZW0sICdnZW5lcmFsLmVycm9yTWVzc2FnZScsIGZ1bmN0aW9uTmFtZSwgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGFibGV2aWV3Py5tZXNzYWdlU2VydmljZT8uYWRkKHtzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID0gdHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQodGl0bGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gdHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobWVzc2FnZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5Oid3YXJuJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9O1xuICAgIH1cbn1cbiJdfQ==