@sapui5/sap.fe.core 1.97.0 → 1.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/package.json +7 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +309 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +315 -0
  5. package/src/sap/fe/core/AppComponent.js +389 -397
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +198 -181
  8. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  9. package/src/sap/fe/core/BaseController.js +83 -58
  10. package/src/sap/fe/core/BaseController.ts +68 -0
  11. package/src/sap/fe/core/BusyLocker.js +105 -121
  12. package/src/sap/fe/core/BusyLocker.ts +98 -0
  13. package/src/sap/fe/core/CommonUtils.js +2164 -2379
  14. package/src/sap/fe/core/CommonUtils.ts +2177 -0
  15. package/src/sap/fe/core/ExtensionAPI.js +279 -266
  16. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  17. package/src/sap/fe/core/PageController.js +218 -125
  18. package/src/sap/fe/core/PageController.ts +129 -0
  19. package/src/sap/fe/core/RouterProxy.js +924 -807
  20. package/src/sap/fe/core/RouterProxy.ts +840 -0
  21. package/src/sap/fe/core/Synchronization.js +41 -35
  22. package/src/sap/fe/core/Synchronization.ts +29 -0
  23. package/src/sap/fe/core/TemplateComponent.js +173 -155
  24. package/src/sap/fe/core/TemplateComponent.ts +173 -0
  25. package/src/sap/fe/core/TemplateModel.js +79 -54
  26. package/src/sap/fe/core/TemplateModel.ts +63 -0
  27. package/src/sap/fe/core/TransactionHelper.js +1560 -1579
  28. package/src/sap/fe/core/TransactionHelper.ts +1717 -0
  29. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  30. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  31. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  32. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  33. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  34. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  35. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  36. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  37. package/src/sap/fe/core/actions/draft.js +521 -581
  38. package/src/sap/fe/core/actions/draft.ts +566 -0
  39. package/src/sap/fe/core/actions/messageHandling.js +564 -511
  40. package/src/sap/fe/core/actions/messageHandling.ts +552 -0
  41. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  42. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  43. package/src/sap/fe/core/actions/operations.js +1093 -1211
  44. package/src/sap/fe/core/actions/operations.ts +1192 -0
  45. package/src/sap/fe/core/actions/sticky.js +114 -104
  46. package/src/sap/fe/core/actions/sticky.ts +119 -0
  47. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +70 -66
  48. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  49. package/src/sap/fe/core/controllerextensions/EditFlow.js +1594 -1701
  50. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  51. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +80 -54
  52. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  53. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +719 -505
  54. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  55. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +797 -813
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  57. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1005 -973
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  59. package/src/sap/fe/core/controllerextensions/KPIManagement.js +530 -476
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +137 -46
  61. package/src/sap/fe/core/controllerextensions/MassEdit.js +144 -0
  62. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.js +234 -232
  64. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  65. package/src/sap/fe/core/controllerextensions/PageReady.js +302 -337
  66. package/src/sap/fe/core/controllerextensions/PageReady.ts +23 -17
  67. package/src/sap/fe/core/controllerextensions/Paginator.js +189 -148
  68. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  69. package/src/sap/fe/core/controllerextensions/Placeholder.js +158 -146
  70. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  71. package/src/sap/fe/core/controllerextensions/Routing.js +145 -106
  72. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  73. package/src/sap/fe/core/controllerextensions/RoutingListener.js +8 -6
  74. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  75. package/src/sap/fe/core/controllerextensions/Share.js +220 -244
  76. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  77. package/src/sap/fe/core/controllerextensions/SideEffects.js +593 -634
  78. package/src/sap/fe/core/controllerextensions/SideEffects.ts +29 -27
  79. package/src/sap/fe/core/controllerextensions/ViewState.js +789 -806
  80. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -3
  82. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  83. package/src/sap/fe/core/controls/CommandExecution.js +68 -66
  84. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  85. package/src/sap/fe/core/controls/ConditionalWrapper.js +91 -75
  86. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  87. package/src/sap/fe/core/controls/CustomQuickViewPage.js +131 -125
  88. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  89. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +105 -110
  90. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  91. package/src/sap/fe/core/controls/FieldWrapper.js +122 -140
  92. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  93. package/src/sap/fe/core/controls/FilterBar.js +163 -159
  94. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  95. package/src/sap/fe/core/controls/FormElementWrapper.js +46 -44
  96. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  97. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +38 -42
  98. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  99. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  100. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +127 -116
  101. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  102. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -255
  103. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  104. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +151 -141
  105. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  106. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +336 -322
  107. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  108. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  109. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  110. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  111. package/src/sap/fe/core/converters/ConverterContext.js +348 -367
  112. package/src/sap/fe/core/converters/ConverterContext.ts +33 -19
  113. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  114. package/src/sap/fe/core/converters/ManifestSettings.ts +16 -1
  115. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -354
  116. package/src/sap/fe/core/converters/ManifestWrapper.ts +34 -6
  117. package/src/sap/fe/core/converters/MetaModelConverter.js +72 -9
  118. package/src/sap/fe/core/converters/MetaModelConverter.ts +75 -16
  119. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  120. package/src/sap/fe/core/converters/TemplateConverter.ts +4 -3
  121. package/src/sap/fe/core/converters/annotations/DataField.js +28 -14
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +38 -14
  123. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  125. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  126. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  127. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  128. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  129. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  130. package/src/sap/fe/core/converters/controls/Common/Form.js +21 -11
  131. package/src/sap/fe/core/converters/controls/Common/Form.ts +28 -6
  132. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  133. package/src/sap/fe/core/converters/controls/Common/KPI.ts +75 -2
  134. package/src/sap/fe/core/converters/controls/Common/Table.js +507 -408
  135. package/src/sap/fe/core/converters/controls/Common/Table.ts +618 -500
  136. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +592 -0
  137. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +718 -0
  138. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +465 -59
  139. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +462 -72
  140. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  141. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  142. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  143. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  144. package/src/sap/fe/core/converters/helpers/Aggregation.js +118 -121
  145. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  146. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  147. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  148. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  149. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  150. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  151. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  152. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  153. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  154. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +28 -7
  155. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +23 -6
  156. package/src/sap/fe/core/converters/templates/ListReportConverter.js +20 -7
  157. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -14
  158. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  159. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  160. package/src/sap/fe/core/designtime/AppComponent.designtime.js +93 -90
  161. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  162. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  163. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  164. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  165. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  166. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  167. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  168. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  169. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  170. package/src/sap/fe/core/formatters/TableFormatter.js +91 -29
  171. package/src/sap/fe/core/formatters/TableFormatter.ts +94 -28
  172. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  173. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  174. package/src/sap/fe/core/fpm/Component.js +51 -54
  175. package/src/sap/fe/core/fpm/Component.ts +48 -0
  176. package/src/sap/fe/core/helpers/AppStartupHelper.js +373 -0
  177. package/src/sap/fe/core/helpers/AppStartupHelper.ts +417 -0
  178. package/src/sap/fe/core/helpers/BindingExpression.js +489 -442
  179. package/src/sap/fe/core/helpers/BindingExpression.ts +486 -469
  180. package/src/sap/fe/core/helpers/ClassSupport.js +212 -76
  181. package/src/sap/fe/core/helpers/ClassSupport.ts +198 -71
  182. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +64 -59
  183. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +52 -0
  184. package/src/sap/fe/core/helpers/EditState.js +81 -84
  185. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  186. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  187. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  188. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  189. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  190. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  191. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  192. package/src/sap/fe/core/helpers/MassEditHelper.js +604 -0
  193. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  194. package/src/sap/fe/core/helpers/ModelHelper.js +253 -225
  195. package/src/sap/fe/core/helpers/ModelHelper.ts +250 -0
  196. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  197. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  198. package/src/sap/fe/core/helpers/SemanticDateOperators.js +336 -313
  199. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +334 -0
  200. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  201. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  202. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  203. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  204. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  205. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  206. package/src/sap/fe/core/library.js +427 -425
  207. package/src/sap/fe/core/library.support.js +23 -27
  208. package/src/sap/fe/core/library.support.ts +23 -0
  209. package/src/sap/fe/core/library.ts +420 -0
  210. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +64 -0
  211. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +69 -0
  212. package/src/sap/fe/core/messagebundle.properties +78 -13
  213. package/src/sap/fe/core/messagebundle_ar.properties +58 -7
  214. package/src/sap/fe/core/messagebundle_bg.properties +58 -7
  215. package/src/sap/fe/core/messagebundle_ca.properties +58 -7
  216. package/src/sap/fe/core/messagebundle_cs.properties +59 -8
  217. package/src/sap/fe/core/messagebundle_cy.properties +58 -7
  218. package/src/sap/fe/core/messagebundle_da.properties +58 -7
  219. package/src/sap/fe/core/messagebundle_de.properties +58 -7
  220. package/src/sap/fe/core/messagebundle_el.properties +58 -7
  221. package/src/sap/fe/core/messagebundle_en.properties +57 -6
  222. package/src/sap/fe/core/messagebundle_en_GB.properties +57 -6
  223. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +61 -6
  224. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +58 -7
  225. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +58 -7
  226. package/src/sap/fe/core/messagebundle_es.properties +58 -7
  227. package/src/sap/fe/core/messagebundle_es_MX.properties +58 -7
  228. package/src/sap/fe/core/messagebundle_et.properties +58 -7
  229. package/src/sap/fe/core/messagebundle_fi.properties +60 -9
  230. package/src/sap/fe/core/messagebundle_fr.properties +64 -13
  231. package/src/sap/fe/core/messagebundle_fr_CA.properties +59 -8
  232. package/src/sap/fe/core/messagebundle_hi.properties +58 -7
  233. package/src/sap/fe/core/messagebundle_hr.properties +58 -7
  234. package/src/sap/fe/core/messagebundle_hu.properties +59 -8
  235. package/src/sap/fe/core/messagebundle_id.properties +61 -10
  236. package/src/sap/fe/core/messagebundle_it.properties +58 -7
  237. package/src/sap/fe/core/messagebundle_iw.properties +58 -7
  238. package/src/sap/fe/core/messagebundle_ja.properties +58 -7
  239. package/src/sap/fe/core/messagebundle_kk.properties +58 -7
  240. package/src/sap/fe/core/messagebundle_ko.properties +58 -7
  241. package/src/sap/fe/core/messagebundle_lt.properties +58 -7
  242. package/src/sap/fe/core/messagebundle_lv.properties +59 -8
  243. package/src/sap/fe/core/messagebundle_ms.properties +58 -7
  244. package/src/sap/fe/core/messagebundle_nl.properties +58 -7
  245. package/src/sap/fe/core/messagebundle_no.properties +58 -7
  246. package/src/sap/fe/core/messagebundle_pl.properties +58 -7
  247. package/src/sap/fe/core/messagebundle_pt.properties +59 -8
  248. package/src/sap/fe/core/messagebundle_pt_PT.properties +58 -7
  249. package/src/sap/fe/core/messagebundle_ro.properties +58 -7
  250. package/src/sap/fe/core/messagebundle_ru.properties +58 -7
  251. package/src/sap/fe/core/messagebundle_sh.properties +58 -7
  252. package/src/sap/fe/core/messagebundle_sk.properties +58 -7
  253. package/src/sap/fe/core/messagebundle_sl.properties +58 -7
  254. package/src/sap/fe/core/messagebundle_sv.properties +59 -8
  255. package/src/sap/fe/core/messagebundle_th.properties +58 -7
  256. package/src/sap/fe/core/messagebundle_tr.properties +60 -9
  257. package/src/sap/fe/core/messagebundle_uk.properties +58 -7
  258. package/src/sap/fe/core/messagebundle_vi.properties +58 -7
  259. package/src/sap/fe/core/messagebundle_zh_CN.properties +58 -7
  260. package/src/sap/fe/core/messagebundle_zh_TW.properties +58 -7
  261. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  262. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  263. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +231 -202
  264. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  265. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +67 -92
  266. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -6
  267. package/src/sap/fe/core/services/NavigationServiceFactory.js +351 -300
  268. package/src/sap/fe/core/services/NavigationServiceFactory.ts +313 -0
  269. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +114 -81
  270. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +83 -0
  271. package/src/sap/fe/core/services/RoutingServiceFactory.js +927 -1152
  272. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  273. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -707
  274. package/src/sap/fe/core/services/ShellServicesFactory.ts +52 -15
  275. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +569 -637
  276. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +78 -102
  277. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +429 -478
  278. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +460 -0
  279. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  280. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  281. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  282. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  283. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  284. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  285. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  286. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  287. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  288. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  289. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  290. package/src/sap/fe/core/templating/DataModelPathHelper.js +97 -127
  291. package/src/sap/fe/core/templating/DataModelPathHelper.ts +112 -135
  292. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  294. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  295. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  296. package/src/sap/fe/core/templating/FilterHelper.js +140 -78
  297. package/src/sap/fe/core/templating/FilterHelper.ts +149 -78
  298. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  299. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
  300. package/src/sap/fe/core/templating/UIFormatters.js +76 -135
  301. package/src/sap/fe/core/templating/UIFormatters.ts +76 -99
  302. package/src/sap/fe/core/type/Email.js +1 -1
  303. package/src/sap/fe/core/type/Email.ts +4 -6
  304. package/ui5.yaml +0 -3
  305. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  306. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -1,235 +1,237 @@
1
1
  /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
+ sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "sap/fe/core/actions/messageHandling", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/ControllerExtensionMetadata", "sap/fe/core/helpers/ClassSupport"], function (ControllerExtension, OverrideExecution, messageHandling, CommonUtils, ControllerExtensionMetadata, ClassSupport) {
6
+ "use strict";
5
7
 
6
- sap.ui.define(
7
- [
8
- "sap/ui/core/mvc/ControllerExtension",
9
- "sap/ui/core/mvc/OverrideExecution",
10
- "sap/fe/core/actions/messageHandling",
11
- "sap/fe/core/CommonUtils",
12
- "sap/fe/core/controllerextensions/ControllerExtensionMetadata"
13
- ],
14
- function(ControllerExtension, OverrideExecution, messageHandling, CommonUtils, ControllerExtensionMetadata) {
15
- "use strict";
16
-
17
- /**
18
- * @class A controller extension offering message handling.
19
- *
20
- * @name sap.fe.core.controllerextensions.MessageHandler
21
- * @hideconstructor
22
- * @public
23
- * @experimental As of version 1.90.0
24
- * @since 1.90.0
25
- */
26
-
27
- return ControllerExtension.extend(
28
- "sap.fe.core.controllerextensions.MessageHandler",
29
- {
30
- metadata: {
31
- methods: {
32
- showMessageDialog: { "public": true, "final": true },
33
- getShowBoundMessagesInMessageDialog: {
34
- "public": false,
35
- "final": false,
36
- overrideExecution: OverrideExecution.Instead
37
- }
38
- }
39
- },
40
-
41
- /**
42
- * @private
43
- * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
44
- * @function
45
- */
46
- /**
47
- * @private
48
- * @name sap.fe.core.controllerextensions.MessageHandler.extend
49
- * @function
50
- */
51
- /**
52
- * Determines whether or not bound messages are shown in the message dialog.
53
- *
54
- * This function is meant to be individually overridden by consuming controllers, but not to be called directly.
55
- * The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
56
- *
57
- * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
58
- * this method has to be overridden.
59
- *
60
- * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
61
- * @private
62
- */
63
- getShowBoundMessagesInMessageDialog: function() {
64
- return true;
65
- },
66
- // eslint-disable-next-line jsdoc/require-param
67
- /**
68
- * Shows a message dialog with transition messages if there are any.
69
- * The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
70
- * are removed from the message model. If there is more than one message, a list of messages is shown. The user
71
- * can filter on message types and can display details as well as the long text. If there is one message,
72
- * the dialog immediately shows the details of the message. If there is just one success message, a message
73
- * toast is shown instead.
74
- * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
75
- * to be shown, the promise is resolved immediately
76
- * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
77
- * @public
78
- * @experimental As of version 1.90.0
79
- * @since 1.90.0
80
- */
81
- showMessageDialog: function(mParameters) {
82
- var customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
83
- oOPInternalBindingContext = this.base.getView().getBindingContext("internal");
84
- // set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
85
- if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
86
- oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
87
- }
88
- var bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
89
- var oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
90
- var bEtagMessage = mParameters && mParameters.bHasEtagMessage;
91
- // reset isActionParameterDialogOpen
92
- // cannot do this operations.js since it is not aware of the view
93
- if (oOPInternalBindingContext) {
94
- oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
95
- }
96
- return new Promise(function(resolve, reject) {
97
- // we have to set a timeout to be able to access the most recent messages
98
- setTimeout(function() {
99
- // TODO: great API - will be changed later
100
- messageHandling
101
- .showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
102
- .then(resolve)
103
- .catch(reject);
104
- }, 0);
105
- });
106
- },
107
-
108
- /**
109
- * You can remove the existing transition message from the message model with this method.
110
- * With every user interaction that causes server communication (like clicking on an action, changing data),
111
- * this method removes the existing transition messages from the message model.
112
- * @param {boolean} keepBoundMessage Checks if the bound transition messages are not to be removed
113
- *
114
- * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
115
- * @private
116
- */
117
- removeTransitionMessages: function(keepBoundMessage) {
118
- if (!keepBoundMessage) {
119
- messageHandling.removeBoundTransitionMessages();
120
- }
121
- messageHandling.removeUnboundTransitionMessages();
122
- },
123
-
124
- _checkNavigationToMessagePage: function(mParameters) {
125
- var aUnboundMessages = messageHandling.getMessages(),
126
- bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog(),
127
- aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [],
128
- aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [],
129
- bIsStickyEditMode = CommonUtils.isStickyEditMode(this.base.getView()),
130
- mMessagePageParameters;
131
-
132
- // TODO: Stick mode check is okay as long as the controller extension is used with sap.fe.core and sap.fe.core.AppComponent.
133
- // It might be better to provide an extension to the consumer of the controller extension to provide this value.
134
-
135
- // The message page can only show 1 message today, so we navigate to it when :
136
- // 1. There are no bound transition messages to show,
137
- // 2. There are no custom messages to show, &
138
- // 3. There is exactly 1 unbound message in the message model with statusCode=503 and retry-After available
139
- // 4. retryAfter is greater than 120 seconds
140
- //
141
- // In Addition, navigating away from a sticky session will destroy the session so we do not navigate to message page for now.
142
- // TODO: check if navigation should be done in sticky edit mode.
143
- if (
144
- !bIsStickyEditMode &&
145
- !aBoundTransitionMessages.length &&
146
- !aCustomMessages.length &&
147
- aUnboundMessages.length === 1
148
- ) {
149
- var oMessage = aUnboundMessages[0],
150
- oTechnicalDetails = oMessage.getTechnicalDetails();
151
- var sRetryAfterMessage;
152
- if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503) {
153
- if (oTechnicalDetails.retryAfter) {
154
- var iSecondsBeforeRetry = this._getSecondsBeforeRetryAfter(oTechnicalDetails.retryAfter);
155
- if (iSecondsBeforeRetry > 120) {
156
- // TODO: For now let's keep getRetryAfterMessage in messageHandling because it is needed also by the dialog.
157
- // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
158
- sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
159
- mMessagePageParameters = {
160
- description: sRetryAfterMessage
161
- ? sRetryAfterMessage + " " + oMessage.getMessage()
162
- : oMessage.getMessage(),
163
- navigateBackToOrigin: true
164
- };
165
- }
166
- } else {
167
- sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
168
- mMessagePageParameters = {
169
- description: sRetryAfterMessage
170
- ? sRetryAfterMessage + " " + oMessage.getMessage()
171
- : oMessage.getMessage(),
172
- navigateBackToOrigin: true
173
- };
174
- }
175
- }
176
- }
177
- return mMessagePageParameters;
178
- },
179
-
180
- _getSecondsBeforeRetryAfter: function(dRetryAfter) {
181
- var dCurrentDateTime = new Date(),
182
- iCurrentDateTimeInMilliSeconds = dCurrentDateTime.getTime(),
183
- iRetryAfterDateTimeInMilliSeconds = dRetryAfter.getTime(),
184
- iSecondsBeforeRetry = (iRetryAfterDateTimeInMilliSeconds - iCurrentDateTimeInMilliSeconds) / 1000;
185
- return iSecondsBeforeRetry;
186
- },
187
- /**
188
- * Shows a message page or a message dialog based on the messages in the message dialog.
189
- * @param mParameters
190
- * @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
191
- * to be shown, the promise is resolved immediately
192
- * @private
193
- */
194
- showMessages: function(mParameters) {
195
- var mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
196
- if (mMessagePageParameters) {
197
- // navigate to message page.
198
- // handler before page navigation is triggered, for example to close the action parameter dialog
199
- mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
200
-
201
- mMessagePageParameters.handleShellBack = true;
202
- // TODO: Use Illustrated message instead of normal message page
203
- // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
204
- this.removeTransitionMessages();
205
- var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
206
- if (this.base._routing) {
207
- return new Promise(
208
- function(resolve, reject) {
209
- // we have to set a timeout to be able to access the most recent messages
210
- setTimeout(
211
- function() {
212
- // TODO: great API - will be changed later
213
- this.base._routing
214
- .navigateToMessagePage(
215
- oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),
216
- mMessagePageParameters
217
- )
218
- .then(resolve)
219
- .catch(reject);
220
- }.bind(this),
221
- 0
222
- );
223
- }.bind(this)
224
- );
225
- }
226
- } else {
227
- // navigate to message dialog
228
- return this.showMessageDialog(mParameters);
229
- }
230
- }
231
- },
232
- ControllerExtensionMetadata
233
- );
234
- }
235
- );
8
+ var _dec, _dec2, _class, _class2;
9
+
10
+ var UI5Class = ClassSupport.UI5Class;
11
+ var Public = ClassSupport.Public;
12
+ var Private = ClassSupport.Private;
13
+ var Final = ClassSupport.Final;
14
+ var Extensible = ClassSupport.Extensible;
15
+
16
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
17
+
18
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
+
20
+ function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
21
+
22
+ /**
23
+ * A controller extension offering message handling.
24
+ *
25
+ * @hideconstructor
26
+ * @public
27
+ * @experimental As of version 1.90.0
28
+ * @since 1.90.0
29
+ */
30
+ var MessageHandler = (_dec = UI5Class("sap.fe.core.controllerextensions.MessageHandler", ControllerExtensionMetadata), _dec2 = Extensible(OverrideExecution.Instead), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
31
+ _inherits(MessageHandler, _ControllerExtension);
32
+
33
+ function MessageHandler() {
34
+ return _ControllerExtension.apply(this, arguments) || this;
35
+ }
36
+
37
+ var _proto = MessageHandler.prototype;
38
+
39
+ /**
40
+ * @private
41
+ * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
42
+ * @function
43
+ */
44
+
45
+ /**
46
+ * @private
47
+ * @name sap.fe.core.controllerextensions.MessageHandler.extend
48
+ * @function
49
+ */
50
+
51
+ /**
52
+ * Determines whether or not bound messages are shown in the message dialog.
53
+ *
54
+ * This function is meant to be individually overridden by consuming controllers, but not to be called directly.
55
+ * The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
56
+ *
57
+ * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
58
+ * this method has to be overridden.
59
+ *
60
+ * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
61
+ * @private
62
+ */
63
+ _proto.getShowBoundMessagesInMessageDialog = function getShowBoundMessagesInMessageDialog() {
64
+ return true;
65
+ }
66
+ /**
67
+ * Shows a message dialog with transition messages if there are any.
68
+ * The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
69
+ * are removed from the message model. If there is more than one message, a list of messages is shown. The user
70
+ * can filter on message types and can display details as well as the long text. If there is one message,
71
+ * the dialog immediately shows the details of the message. If there is just one success message, a message
72
+ * toast is shown instead.
73
+ *
74
+ * @param mParameters PRIVATE
75
+ * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
76
+ * to be shown, the promise is resolved immediately
77
+ * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
78
+ * @public
79
+ * @experimental As of version 1.90.0
80
+ * @since 1.90.0
81
+ */
82
+ ;
83
+
84
+ _proto.showMessageDialog = function showMessageDialog(mParameters) {
85
+ var customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
86
+ oOPInternalBindingContext = this.base.getView().getBindingContext("internal"); // set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
87
+
88
+ if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
89
+ oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
90
+ }
91
+
92
+ var bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
93
+ var oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
94
+ var bEtagMessage = mParameters && mParameters.bHasEtagMessage; // reset isActionParameterDialogOpen
95
+ // cannot do this operations.js since it is not aware of the view
96
+
97
+ if (oOPInternalBindingContext) {
98
+ oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
99
+ }
100
+
101
+ return new Promise(function (resolve, reject) {
102
+ // we have to set a timeout to be able to access the most recent messages
103
+ setTimeout(function () {
104
+ // TODO: great API - will be changed later
105
+ messageHandling.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages).then(resolve).catch(reject);
106
+ }, 0);
107
+ });
108
+ }
109
+ /**
110
+ * You can remove the existing transition message from the message model with this method.
111
+ * With every user interaction that causes server communication (like clicking on an action, changing data),
112
+ * this method removes the existing transition messages from the message model.
113
+ * @param {boolean} [keepBoundMessage] Checks if the bound transition messages are not to be removed
114
+ *
115
+ * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
116
+ * @private
117
+ */
118
+ ;
119
+
120
+ _proto.removeTransitionMessages = function removeTransitionMessages(keepBoundMessage) {
121
+ if (!keepBoundMessage) {
122
+ messageHandling.removeBoundTransitionMessages();
123
+ }
124
+
125
+ messageHandling.removeUnboundTransitionMessages();
126
+ };
127
+
128
+ _proto._checkNavigationToMessagePage = function _checkNavigationToMessagePage(mParameters) {
129
+ var aUnboundMessages = messageHandling.getMessages();
130
+ var bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog();
131
+ var aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [];
132
+ var aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [];
133
+ var bIsStickyEditMode = CommonUtils.isStickyEditMode(this.base.getView());
134
+ var mMessagePageParameters; // TODO: Stick mode check is okay as long as the controller extension is used with sap.fe.core and sap.fe.core.AppComponent.
135
+ // It might be better to provide an extension to the consumer of the controller extension to provide this value.
136
+ // The message page can only show 1 message today, so we navigate to it when :
137
+ // 1. There are no bound transition messages to show,
138
+ // 2. There are no custom messages to show, &
139
+ // 3. There is exactly 1 unbound message in the message model with statusCode=503 and retry-After available
140
+ // 4. retryAfter is greater than 120 seconds
141
+ //
142
+ // In Addition, navigating away from a sticky session will destroy the session so we do not navigate to message page for now.
143
+ // TODO: check if navigation should be done in sticky edit mode.
144
+
145
+ if (mParameters && mParameters.isDataReceivedError) {
146
+ mMessagePageParameters = {
147
+ title: mParameters.title,
148
+ description: mParameters.description,
149
+ navigateBackToOrigin: true
150
+ };
151
+ } else if (!bIsStickyEditMode && !aBoundTransitionMessages.length && !aCustomMessages.length && (aUnboundMessages.length === 1 || mParameters && mParameters.isInitialLoad503Error)) {
152
+ var oMessage = aUnboundMessages[0],
153
+ oTechnicalDetails = oMessage.getTechnicalDetails();
154
+ var sRetryAfterMessage;
155
+
156
+ if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503) {
157
+ if (oTechnicalDetails.retryAfter) {
158
+ var iSecondsBeforeRetry = this._getSecondsBeforeRetryAfter(oTechnicalDetails.retryAfter);
159
+
160
+ if (iSecondsBeforeRetry > 120) {
161
+ // TODO: For now let's keep getRetryAfterMessage in messageHandling because it is needed also by the dialog.
162
+ // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
163
+ sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
164
+ mMessagePageParameters = {
165
+ description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
166
+ navigateBackToOrigin: true
167
+ };
168
+ }
169
+ } else {
170
+ sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
171
+ mMessagePageParameters = {
172
+ description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
173
+ navigateBackToOrigin: true
174
+ };
175
+ }
176
+ }
177
+ }
178
+
179
+ return mMessagePageParameters;
180
+ };
181
+
182
+ _proto._getSecondsBeforeRetryAfter = function _getSecondsBeforeRetryAfter(dRetryAfter) {
183
+ var dCurrentDateTime = new Date(),
184
+ iCurrentDateTimeInMilliSeconds = dCurrentDateTime.getTime(),
185
+ iRetryAfterDateTimeInMilliSeconds = dRetryAfter.getTime(),
186
+ iSecondsBeforeRetry = (iRetryAfterDateTimeInMilliSeconds - iCurrentDateTimeInMilliSeconds) / 1000;
187
+ return iSecondsBeforeRetry;
188
+ }
189
+ /**
190
+ * Shows a message page or a message dialog based on the messages in the message dialog.
191
+ * @param [mParameters]
192
+ * @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
193
+ * to be shown, the promise is resolved immediately
194
+ * @private
195
+ */
196
+ ;
197
+
198
+ _proto.showMessages = function showMessages(mParameters) {
199
+ var _this = this;
200
+
201
+ var oAppComponent = CommonUtils.getAppComponent(this.getView());
202
+ var mMessagePageParameters;
203
+
204
+ if (!oAppComponent._isFclEnabled()) {
205
+ mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
206
+ }
207
+
208
+ if (mMessagePageParameters) {
209
+ // navigate to message page.
210
+ // handler before page navigation is triggered, for example to close the action parameter dialog
211
+ mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
212
+ mMessagePageParameters.handleShellBack = !(mParameters && mParameters.shellBack); // TODO: Use Illustrated message instead of normal message page
213
+ // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
214
+
215
+ this.removeTransitionMessages();
216
+ var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
217
+
218
+ if (this.base._routing) {
219
+ return new Promise(function (resolve, reject) {
220
+ // we have to set a timeout to be able to access the most recent messages
221
+ setTimeout(function () {
222
+ // TODO: great API - will be changed later
223
+ _this.base._routing.navigateToMessagePage(mParameters && mParameters.isDataReceivedError ? oResourceBundle.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR") : oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"), mMessagePageParameters).then(resolve).catch(reject);
224
+ }, 0);
225
+ });
226
+ }
227
+ } else {
228
+ // navigate to message dialog
229
+ return this.showMessageDialog(mParameters);
230
+ }
231
+ };
232
+
233
+ return MessageHandler;
234
+ }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [Private, _dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [Public], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype)), _class2)) || _class);
235
+ return MessageHandler;
236
+ }, false);
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1lc3NhZ2VIYW5kbGVyIiwiVUk1Q2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEiLCJFeHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJJbnN0ZWFkIiwiZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2ciLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiY3VzdG9tTWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiYmFzZSIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlbiIsInNldFByb3BlcnR5IiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwiY29udGV4dCIsImJFdGFnTWVzc2FnZSIsImJIYXNFdGFnTWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIm1lc3NhZ2VIYW5kbGluZyIsInNob3dVbmJvdW5kTWVzc2FnZXMiLCJ0aGVuIiwiY2F0Y2giLCJyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMiLCJrZWVwQm91bmRNZXNzYWdlIiwicmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UiLCJhVW5ib3VuZE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZXMiLCJiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiYUN1c3RvbU1lc3NhZ2VzIiwiYklzU3RpY2t5RWRpdE1vZGUiLCJDb21tb25VdGlscyIsImlzU3RpY2t5RWRpdE1vZGUiLCJtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzIiwiaXNEYXRhUmVjZWl2ZWRFcnJvciIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJuYXZpZ2F0ZUJhY2tUb09yaWdpbiIsImxlbmd0aCIsImlzSW5pdGlhbExvYWQ1MDNFcnJvciIsIm9NZXNzYWdlIiwib1RlY2huaWNhbERldGFpbHMiLCJnZXRUZWNobmljYWxEZXRhaWxzIiwic1JldHJ5QWZ0ZXJNZXNzYWdlIiwiaHR0cFN0YXR1cyIsInJldHJ5QWZ0ZXIiLCJpU2Vjb25kc0JlZm9yZVJldHJ5IiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwiZ2V0UmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZFJldHJ5QWZ0ZXIiLCJkQ3VycmVudERhdGVUaW1lIiwiRGF0ZSIsImlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyIsImdldFRpbWUiLCJpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMiLCJzaG93TWVzc2FnZXMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiX2lzRmNsRW5hYmxlZCIsIm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrIiwiaGFuZGxlU2hlbGxCYWNrIiwic2hlbGxCYWNrIiwib1Jlc291cmNlQnVuZGxlIiwic2FwIiwidWkiLCJnZXRDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiX3JvdXRpbmciLCJuYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIlByaXZhdGUiLCJQdWJsaWMiLCJGaW5hbCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxjLFdBRExDLFFBQVEsQ0FBQyxpREFBRCxFQUFvREMsMkJBQXBELEMsVUEwQlBDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQW5CLEM7Ozs7Ozs7OztBQXhCWDtBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUNDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7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LDZCQUFaLEVBQTVEO0FBRUEzQixRQUFBQSxzQkFBc0IsQ0FBQzRCLGVBQXZCLEdBQXlDLEVBQUUvRCxXQUFXLElBQUlBLFdBQVcsQ0FBQ2dFLFNBQTdCLENBQXpDLENBTDJCLENBTTNCO0FBQ0E7O0FBQ0EsYUFBSzFDLHdCQUFMO0FBQ0EsWUFBTTJDLGVBQWUsR0FBR0MsR0FBRyxDQUFDQyxFQUFKLENBQU9DLE9BQVAsR0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF4Qjs7QUFDQSxZQUFJLEtBQUtqRSxJQUFMLENBQVVrRSxRQUFkLEVBQXdCO0FBQ3ZCLGlCQUFPLElBQUl4RCxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFlQyxNQUFmLEVBQStCO0FBQ2pEO0FBQ0FDLFlBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2hCO0FBQ0EsY0FBQSxLQUFJLENBQUNiLElBQUwsQ0FBVWtFLFFBQVYsQ0FDRUMscUJBREYsQ0FFRXZFLFdBQVcsSUFBSUEsV0FBVyxDQUFDb0MsbUJBQTNCLEdBQ0c2QixlQUFlLENBQUNPLE9BQWhCLENBQXdCLG9DQUF4QixDQURILEdBRUdQLGVBQWUsQ0FBQ08sT0FBaEIsQ0FBd0Isb0NBQXhCLENBSkwsRUFLRXJDLHNCQUxGLEVBT0VmLElBUEYsQ0FPT0wsT0FQUCxFQVFFTSxLQVJGLENBUVFMLE1BUlI7QUFTQSxhQVhTLEVBV1AsQ0FYTyxDQUFWO0FBWUEsV0FkTSxDQUFQO0FBZUE7QUFDRCxPQTNCRCxNQTJCTztBQUNOO0FBQ0EsZUFBTyxLQUFLakIsaUJBQUwsQ0FBdUJDLFdBQXZCLENBQVA7QUFDQTtBQUNELEs7OztJQTNNMkJ5RSxtQix5RkF3QjNCQyxPLDRMQXNCQUMsTSxFQUNBQyxLLDBLQXFDQUQsTSxxS0FnRkFBLE0sRUFDQUMsSztTQXdDYXBGLGMiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCBtZXNzYWdlSGFuZGxpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2FjdGlvbnMvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Db250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGFcIjtcbmltcG9ydCB7IEV4dGVuc2libGUsIEZpbmFsLCBQcml2YXRlLCBQdWJsaWMsIFVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuLyoqXG4gKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIG1lc3NhZ2UgaGFuZGxpbmcuXG4gKlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQGV4cGVyaW1lbnRhbCBBcyBvZiB2ZXJzaW9uIDEuOTAuMFxuICogQHNpbmNlIDEuOTAuMFxuICovXG5AVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlclwiLCBDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEpXG5jbGFzcyBNZXNzYWdlSGFuZGxlciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIuZXh0ZW5kXG5cdCAqIEBmdW5jdGlvblxuXHQgKi9cblx0cHJpdmF0ZSBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IERldGVybWluZXMgd2hldGhlciBvciBub3QgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQcml2YXRlXG5cdEBFeHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdGdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3dzIGEgbWVzc2FnZSBkaWFsb2cgd2l0aCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGlmIHRoZXJlIGFyZSBhbnkuXG5cdCAqIFRoZSBtZXNzYWdlIGRpYWxvZyBpcyBzaG93biBhcyBhIG1vZGFsIGRpYWxvZy4gT25jZSB0aGUgdXNlciBjb25maXJtcyB0aGUgZGlhbG9nLCBhbGwgdHJhbnNpdGlvbiBtZXNzYWdlc1xuXHQgKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIG1lc3NhZ2UsIGEgbGlzdCBvZiBtZXNzYWdlcyBpcyBzaG93bi4gVGhlIHVzZXJcblx0ICogY2FuIGZpbHRlciBvbiBtZXNzYWdlIHR5cGVzIGFuZCBjYW4gZGlzcGxheSBkZXRhaWxzIGFzIHdlbGwgYXMgdGhlIGxvbmcgdGV4dC4gSWYgdGhlcmUgaXMgb25lIG1lc3NhZ2UsXG5cdCAqIHRoZSBkaWFsb2cgaW1tZWRpYXRlbHkgc2hvd3MgdGhlIGRldGFpbHMgb2YgdGhlIG1lc3NhZ2UuIElmIHRoZXJlIGlzIGp1c3Qgb25lIHN1Y2Nlc3MgbWVzc2FnZSwgYSBtZXNzYWdlXG5cdCAqIHRvYXN0IGlzIHNob3duIGluc3RlYWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBtUGFyYW1ldGVycyBQUklWQVRFXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgZGlhbG9nLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlciNzaG93TWVzc2FnZURpYWxvZ1xuXHQgKiBAcHVibGljXG5cdCAqIEBleHBlcmltZW50YWwgQXMgb2YgdmVyc2lvbiAxLjkwLjBcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QFB1YmxpY1xuXHRARmluYWxcblx0c2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiB1bmRlZmluZWQsXG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRjb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0FjdGlvblBhcmFtZXRlckRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Ly8gd2UgaGF2ZSB0byBzZXQgYSB0aW1lb3V0IHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlc1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdG1lc3NhZ2VIYW5kbGluZ1xuXHRcdFx0XHRcdC5zaG93VW5ib3VuZE1lc3NhZ2VzKGN1c3RvbU1lc3NhZ2VzLCBvQmluZGluZ0NvbnRleHQsIGJFdGFnTWVzc2FnZSwgYlNob3dCb3VuZE1lc3NhZ2VzKVxuXHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHR9LCAwKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBZb3UgY2FuIHJlbW92ZSB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBtZXNzYWdlIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwgd2l0aCB0aGlzIG1ldGhvZC5cblx0ICogV2l0aCBldmVyeSB1c2VyIGludGVyYWN0aW9uIHRoYXQgY2F1c2VzIHNlcnZlciBjb21tdW5pY2F0aW9uIChsaWtlIGNsaWNraW5nIG9uIGFuIGFjdGlvbiwgY2hhbmdpbmcgZGF0YSksXG5cdCAqIHRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC5cblx0ICogQHBhcmFtIHtib29sZWFufSBba2VlcEJvdW5kTWVzc2FnZV0gQ2hlY2tzIGlmIHRoZSBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSBub3QgdG8gYmUgcmVtb3ZlZFxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWVzc2FnZUhhbmRsZXIjcmVtb3Zlc1RyYW5zaXRpb25NZXNzYWdlc1xuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0QFB1YmxpY1xuXHRyZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoa2VlcEJvdW5kTWVzc2FnZT86IGJvb2xlYW4pIHtcblx0XHRpZiAoIWtlZXBCb3VuZE1lc3NhZ2UpIHtcblx0XHRcdG1lc3NhZ2VIYW5kbGluZy5yZW1vdmVCb3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHR9XG5cblx0X2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IGFVbmJvdW5kTWVzc2FnZXMgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXMoKTtcblx0XHRjb25zdCBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IGFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPyBtZXNzYWdlSGFuZGxpbmcuZ2V0TWVzc2FnZXModHJ1ZSwgdHJ1ZSkgOiBbXTtcblx0XHRjb25zdCBhQ3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogW107XG5cdFx0Y29uc3QgYklzU3RpY2t5RWRpdE1vZGUgPSBDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKHRoaXMuYmFzZS5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzRGF0YVJlY2VpdmVkRXJyb3IpIHtcblx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdHRpdGxlOiBtUGFyYW1ldGVycy50aXRsZSxcblx0XHRcdFx0ZGVzY3JpcHRpb246IG1QYXJhbWV0ZXJzLmRlc2NyaXB0aW9uLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCAobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNJbml0aWFsTG9hZDUwM0Vycm9yKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9NZXNzYWdlID0gYVVuYm91bmRNZXNzYWdlc1swXSxcblx0XHRcdFx0b1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCk7XG5cdFx0XHRsZXQgc1JldHJ5QWZ0ZXJNZXNzYWdlO1xuXHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzICYmIG9UZWNobmljYWxEZXRhaWxzLmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcikge1xuXHRcdFx0XHRcdGNvbnN0IGlTZWNvbmRzQmVmb3JlUmV0cnkgPSB0aGlzLl9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihvVGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKTtcblx0XHRcdFx0XHRpZiAoaVNlY29uZHNCZWZvcmVSZXRyeSA+IDEyMCkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogRm9yIG5vdyBsZXQncyBrZWVwIGdldFJldHJ5QWZ0ZXJNZXNzYWdlIGluIG1lc3NhZ2VIYW5kbGluZyBiZWNhdXNlIGl0IGlzIG5lZWRlZCBhbHNvIGJ5IHRoZSBkaWFsb2cuXG5cdFx0XHRcdFx0XHQvLyBXZSBjYW4gcGxhbiB0byBtb3ZlIHRoaXMgYW5kIHRoZSBkaWFsb2cgbG9naWMgYm90aCB0byBtZXNzYWdlSGFuZGxlciBjb250cm9sbGVyIGV4dGVuc2lvbiBpZiByZXF1aXJlZC5cblx0XHRcdFx0XHRcdHNSZXRyeUFmdGVyTWVzc2FnZSA9IG1lc3NhZ2VIYW5kbGluZy5nZXRSZXRyeUFmdGVyTWVzc2FnZShvTWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzUmV0cnlBZnRlck1lc3NhZ2UgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0UmV0cnlBZnRlck1lc3NhZ2Uob01lc3NhZ2UpO1xuXHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogc1JldHJ5QWZ0ZXJNZXNzYWdlID8gc1JldHJ5QWZ0ZXJNZXNzYWdlICsgXCIgXCIgKyBvTWVzc2FnZS5nZXRNZXNzYWdlKCkgOiBvTWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIoZFJldHJ5QWZ0ZXI6IGFueSkge1xuXHRcdGNvbnN0IGRDdXJyZW50RGF0ZVRpbWUgPSBuZXcgRGF0ZSgpLFxuXHRcdFx0aUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZEN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCksXG5cdFx0XHRpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkUmV0cnlBZnRlci5nZXRUaW1lKCksXG5cdFx0XHRpU2Vjb25kc0JlZm9yZVJldHJ5ID0gKGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyAtIGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcykgLyAxMDAwO1xuXHRcdHJldHVybiBpU2Vjb25kc0JlZm9yZVJldHJ5O1xuXHR9XG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEBwYXJhbSBbbVBhcmFtZXRlcnNdXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdHNob3dNZXNzYWdlcyhtUGFyYW1ldGVycz86IGFueSkge1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRWaWV3KCkpO1xuXHRcdGxldCBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzOiBhbnk7XG5cdFx0aWYgKCFvQXBwQ29tcG9uZW50Ll9pc0ZjbEVuYWJsZWQoKSkge1xuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHRoaXMuX2NoZWNrTmF2aWdhdGlvblRvTWVzc2FnZVBhZ2UobVBhcmFtZXRlcnMpO1xuXHRcdH1cblx0XHRpZiAobU1lc3NhZ2VQYWdlUGFyYW1ldGVycykge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlLlxuXHRcdFx0Ly8gaGFuZGxlciBiZWZvcmUgcGFnZSBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZCwgZm9yIGV4YW1wbGUgdG8gY2xvc2UgdGhlIGFjdGlvbiBwYXJhbWV0ZXIgZGlhbG9nXG5cdFx0XHRtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjayAmJiBtUGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaygpO1xuXG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzLmhhbmRsZVNoZWxsQmFjayA9ICEobVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuc2hlbGxCYWNrKTtcblx0XHRcdC8vIFRPRE86IFVzZSBJbGx1c3RyYXRlZCBtZXNzYWdlIGluc3RlYWQgb2Ygbm9ybWFsIG1lc3NhZ2UgcGFnZVxuXHRcdFx0Ly8gVE9ETzogUmV0dXJuIHZhbHVlIG5lZWRzIHRvIHByb3ZpZGVkIGJ1dCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHByaXZhdGUgZm9yIG5vdyBoZW5jZSB3ZSBjYW4gc2tpcCB0aGlzLlxuXHRcdFx0dGhpcy5yZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cdFx0XHRpZiAodGhpcy5iYXNlLl9yb3V0aW5nKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRcdFx0dGhpcy5iYXNlLl9yb3V0aW5nXG5cdFx0XHRcdFx0XHRcdC5uYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UoXG5cdFx0XHRcdFx0XHRcdFx0bVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuaXNEYXRhUmVjZWl2ZWRFcnJvclxuXHRcdFx0XHRcdFx0XHRcdFx0PyBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0RBVEFfUkVDRUlWRURfRVJST1JcIilcblx0XHRcdFx0XHRcdFx0XHRcdDogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfNTAzX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XHRcdG1NZXNzYWdlUGFnZVBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdFx0XHR9LCAwKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgZGlhbG9nXG5cdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZURpYWxvZyhtUGFyYW1ldGVycyk7XG5cdFx0fVxuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlSGFuZGxlcjtcbiJdfQ==