@sapui5/sap.fe.core 1.108.2 → 1.110.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 (359) hide show
  1. package/README.md +5 -1
  2. package/package.json +11 -9
  3. package/src/.eslintrc +7 -0
  4. package/src/sap/fe/core/.library +39 -37
  5. package/src/sap/fe/core/.supportrc +3 -3
  6. package/src/sap/fe/core/ActionRuntime.js +72 -27
  7. package/src/sap/fe/core/ActionRuntime.ts +104 -21
  8. package/src/sap/fe/core/AppComponent.js +102 -120
  9. package/src/sap/fe/core/AppComponent.ts +148 -45
  10. package/src/sap/fe/core/AppStateHandler.js +105 -91
  11. package/src/sap/fe/core/AppStateHandler.ts +85 -23
  12. package/src/sap/fe/core/BaseController.js +5 -20
  13. package/src/sap/fe/core/BaseController.ts +11 -2
  14. package/src/sap/fe/core/CommonUtils.js +770 -1079
  15. package/src/sap/fe/core/CommonUtils.ts +750 -491
  16. package/src/sap/fe/core/ExtensionAPI.js +69 -96
  17. package/src/sap/fe/core/ExtensionAPI.ts +15 -17
  18. package/src/sap/fe/core/PageController.js +21 -46
  19. package/src/sap/fe/core/PageController.ts +11 -2
  20. package/src/sap/fe/core/TemplateComponent.js +6 -51
  21. package/src/sap/fe/core/TemplateComponent.ts +27 -16
  22. package/src/sap/fe/core/TemplateModel.js +18 -24
  23. package/src/sap/fe/core/TemplateModel.ts +25 -6
  24. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +8 -23
  25. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +5 -4
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +146 -180
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +144 -57
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +1 -1
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +43 -0
  30. package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +11 -0
  31. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +436 -556
  32. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +288 -157
  33. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +215 -202
  34. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +93 -51
  35. package/src/sap/fe/core/controllerextensions/BusyLocker.js +11 -26
  36. package/src/sap/fe/core/controllerextensions/EditFlow.js +407 -596
  37. package/src/sap/fe/core/controllerextensions/EditFlow.ts +163 -56
  38. package/src/sap/fe/core/controllerextensions/Feedback.js +70 -0
  39. package/src/sap/fe/core/controllerextensions/Feedback.ts +64 -0
  40. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +12 -23
  41. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
  42. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +127 -182
  43. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +65 -32
  44. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +96 -198
  45. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +4 -5
  46. package/src/sap/fe/core/controllerextensions/InternalRouting.js +134 -291
  47. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +21 -12
  48. package/src/sap/fe/core/controllerextensions/KPIManagement.js +111 -214
  49. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +44 -44
  50. package/src/sap/fe/core/controllerextensions/MassEdit.js +24 -44
  51. package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -2
  52. package/src/sap/fe/core/controllerextensions/MessageHandler.js +39 -52
  53. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +26 -7
  54. package/src/sap/fe/core/controllerextensions/PageReady.js +81 -119
  55. package/src/sap/fe/core/controllerextensions/PageReady.ts +36 -15
  56. package/src/sap/fe/core/controllerextensions/Paginator.js +16 -51
  57. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -3
  58. package/src/sap/fe/core/controllerextensions/Placeholder.js +7 -33
  59. package/src/sap/fe/core/controllerextensions/Routing.js +24 -32
  60. package/src/sap/fe/core/controllerextensions/Routing.ts +6 -1
  61. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  62. package/src/sap/fe/core/controllerextensions/Share.js +53 -98
  63. package/src/sap/fe/core/controllerextensions/Share.ts +6 -3
  64. package/src/sap/fe/core/controllerextensions/SideEffects.js +103 -174
  65. package/src/sap/fe/core/controllerextensions/SideEffects.ts +37 -22
  66. package/src/sap/fe/core/controllerextensions/ViewState.js +341 -276
  67. package/src/sap/fe/core/controllerextensions/ViewState.ts +236 -84
  68. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +6 -22
  69. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -2
  70. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +66 -88
  71. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +64 -17
  72. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +28 -34
  73. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +22 -1
  74. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +69 -65
  75. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +31 -12
  76. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +15 -13
  77. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +273 -906
  78. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +142 -420
  79. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +49 -115
  80. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +12 -7
  81. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +70 -89
  82. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +313 -320
  83. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +582 -683
  84. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +507 -386
  85. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +111 -102
  86. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -79
  87. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +689 -154
  88. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +866 -31
  89. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +24 -101
  90. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +5 -5
  91. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +91 -217
  92. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +3 -20
  93. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +1 -0
  94. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +46 -46
  95. package/src/sap/fe/core/controls/Any.js +1 -1
  96. package/src/sap/fe/core/controls/AnyElement.js +1 -1
  97. package/src/sap/fe/core/controls/CommandExecution.js +4 -26
  98. package/src/sap/fe/core/controls/ConditionalWrapper.js +16 -33
  99. package/src/sap/fe/core/controls/ConditionalWrapper.ts +16 -2
  100. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +41 -94
  101. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +1 -1
  102. package/src/sap/fe/core/controls/CustomQuickViewPage.js +5 -34
  103. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +5 -7
  104. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +7 -7
  105. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +56 -58
  106. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +53 -33
  107. package/src/sap/fe/core/controls/FieldWrapper.js +6 -49
  108. package/src/sap/fe/core/controls/FileWrapper.js +51 -136
  109. package/src/sap/fe/core/controls/FileWrapper.ts +25 -29
  110. package/src/sap/fe/core/controls/FilterBar.js +19 -54
  111. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -22
  112. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  113. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -5
  114. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +2 -2
  115. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +24 -46
  116. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +14 -41
  117. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +4 -4
  118. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +26 -67
  119. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -20
  120. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +12 -48
  121. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +17 -46
  122. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -3
  123. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +1 -0
  124. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +6 -78
  125. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +4 -4
  126. package/src/sap/fe/core/converters/ConverterContext.js +44 -98
  127. package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
  128. package/src/sap/fe/core/converters/ManifestSettings.js +1 -20
  129. package/src/sap/fe/core/converters/ManifestSettings.ts +16 -9
  130. package/src/sap/fe/core/converters/ManifestWrapper.js +97 -158
  131. package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -0
  132. package/src/sap/fe/core/converters/MetaModelConverter.js +28 -167
  133. package/src/sap/fe/core/converters/MetaModelConverter.ts +9 -3
  134. package/src/sap/fe/core/converters/TemplateConverter.js +10 -22
  135. package/src/sap/fe/core/converters/TemplateConverter.ts +10 -7
  136. package/src/sap/fe/core/converters/annotations/DataField.js +88 -132
  137. package/src/sap/fe/core/converters/annotations/DataField.ts +90 -38
  138. package/src/sap/fe/core/converters/common/AnnotationConverter.js +57 -379
  139. package/src/sap/fe/core/converters/controls/Common/Action.js +45 -115
  140. package/src/sap/fe/core/converters/controls/Common/Action.ts +17 -5
  141. package/src/sap/fe/core/converters/controls/Common/Chart.js +20 -73
  142. package/src/sap/fe/core/converters/controls/Common/Chart.ts +21 -14
  143. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -9
  144. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +40 -94
  145. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +44 -31
  146. package/src/sap/fe/core/converters/controls/Common/Form.js +26 -63
  147. package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -10
  148. package/src/sap/fe/core/converters/controls/Common/KPI.js +13 -63
  149. package/src/sap/fe/core/converters/controls/Common/Table.js +368 -707
  150. package/src/sap/fe/core/converters/controls/Common/Table.ts +308 -197
  151. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +54 -109
  152. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +15 -9
  153. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +69 -210
  154. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -16
  155. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -80
  156. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +3 -1
  157. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -19
  158. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +45 -136
  159. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +10 -10
  160. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +82 -173
  161. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +48 -22
  162. package/src/sap/fe/core/converters/helpers/Aggregation.js +24 -66
  163. package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -7
  164. package/src/sap/fe/core/converters/helpers/BindingHelper.js +9 -19
  165. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +0 -1
  166. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +20 -48
  167. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +5 -1
  168. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +12 -51
  169. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +13 -11
  170. package/src/sap/fe/core/converters/helpers/ID.js +3 -17
  171. package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
  172. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -6
  173. package/src/sap/fe/core/converters/helpers/Key.js +10 -19
  174. package/src/sap/fe/core/converters/helpers/Key.ts +3 -3
  175. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +2 -20
  176. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +2 -37
  177. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +126 -131
  178. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +112 -31
  179. package/src/sap/fe/core/converters/templates/ListReportConverter.js +67 -131
  180. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +58 -27
  181. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -183
  182. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +73 -104
  183. package/src/sap/fe/core/designtime/AppComponent.designtime.js +74 -67
  184. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +77 -69
  185. package/src/sap/fe/core/formatters/CollaborationFormatter.js +20 -29
  186. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +21 -0
  187. package/src/sap/fe/core/formatters/FPMFormatter.js +3 -7
  188. package/src/sap/fe/core/formatters/KPIFormatter.js +5 -13
  189. package/src/sap/fe/core/formatters/StandardFormatter.js +3 -18
  190. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -2
  191. package/src/sap/fe/core/formatters/TableFormatter.js +87 -53
  192. package/src/sap/fe/core/formatters/TableFormatter.ts +96 -9
  193. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -4
  194. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -37
  195. package/src/sap/fe/core/fpm/Component.js +2 -17
  196. package/src/sap/fe/core/helpers/AnnotationEnum.js +10 -20
  197. package/src/sap/fe/core/helpers/AnnotationEnum.ts +6 -6
  198. package/src/sap/fe/core/helpers/AppStartupHelper.js +16 -52
  199. package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
  200. package/src/sap/fe/core/helpers/BindingToolkit.js +106 -364
  201. package/src/sap/fe/core/helpers/BindingToolkit.ts +30 -7
  202. package/src/sap/fe/core/helpers/ClassSupport.js +16 -97
  203. package/src/sap/fe/core/helpers/ClassSupport.ts +7 -4
  204. package/src/sap/fe/core/helpers/DeleteHelper.js +621 -0
  205. package/src/sap/fe/core/helpers/DeleteHelper.ts +796 -0
  206. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -12
  207. package/src/sap/fe/core/helpers/EditState.js +2 -5
  208. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -10
  209. package/src/sap/fe/core/helpers/FPMHelper.js +3 -8
  210. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -1
  211. package/src/sap/fe/core/helpers/KeepAliveHelper.js +8 -38
  212. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -5
  213. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -7
  214. package/src/sap/fe/core/helpers/MassEditHelper.js +177 -289
  215. package/src/sap/fe/core/helpers/MassEditHelper.ts +124 -91
  216. package/src/sap/fe/core/helpers/MessageStrip.js +12 -28
  217. package/src/sap/fe/core/helpers/MessageStrip.ts +7 -7
  218. package/src/sap/fe/core/helpers/ModelHelper.js +62 -103
  219. package/src/sap/fe/core/helpers/ModelHelper.ts +58 -20
  220. package/src/sap/fe/core/helpers/PasteHelper.js +28 -51
  221. package/src/sap/fe/core/helpers/PasteHelper.ts +10 -9
  222. package/src/sap/fe/core/helpers/SemanticDateOperators.js +112 -136
  223. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +111 -111
  224. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +5 -11
  225. package/src/sap/fe/core/helpers/SideEffectsHelper.js +26 -32
  226. package/src/sap/fe/core/helpers/StableIdHelper.js +166 -218
  227. package/src/sap/fe/core/helpers/StableIdHelper.ts +175 -191
  228. package/src/sap/fe/core/helpers/Synchronization.js +1 -8
  229. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -4
  230. package/src/sap/fe/core/helpers/TypeGuards.js +22 -0
  231. package/src/sap/fe/core/helpers/TypeGuards.ts +9 -0
  232. package/src/sap/fe/core/jsx-runtime/Fragment.js +1 -3
  233. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -23
  234. package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -23
  235. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +2 -1
  236. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +4 -16
  237. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
  238. package/src/sap/fe/core/jsx-runtime/jsx.js +2 -5
  239. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  240. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +4 -27
  241. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
  242. package/src/sap/fe/core/library.js +9 -48
  243. package/src/sap/fe/core/library.support.js +3 -2
  244. package/src/sap/fe/core/library.support.ts +3 -1
  245. package/src/sap/fe/core/library.ts +3 -8
  246. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +74 -39
  247. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +71 -26
  248. package/src/sap/fe/core/messagebundle.properties +113 -67
  249. package/src/sap/fe/core/messagebundle_ar.properties +20 -3
  250. package/src/sap/fe/core/messagebundle_bg.properties +22 -5
  251. package/src/sap/fe/core/messagebundle_ca.properties +21 -4
  252. package/src/sap/fe/core/messagebundle_cs.properties +21 -4
  253. package/src/sap/fe/core/messagebundle_cy.properties +22 -5
  254. package/src/sap/fe/core/messagebundle_da.properties +20 -3
  255. package/src/sap/fe/core/messagebundle_de.properties +38 -21
  256. package/src/sap/fe/core/messagebundle_el.properties +20 -3
  257. package/src/sap/fe/core/messagebundle_en.properties +38 -21
  258. package/src/sap/fe/core/messagebundle_en_GB.properties +20 -3
  259. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -28
  260. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +41 -24
  261. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -29
  262. package/src/sap/fe/core/messagebundle_es.properties +40 -23
  263. package/src/sap/fe/core/messagebundle_es_MX.properties +20 -3
  264. package/src/sap/fe/core/messagebundle_et.properties +20 -3
  265. package/src/sap/fe/core/messagebundle_fi.properties +20 -3
  266. package/src/sap/fe/core/messagebundle_fr.properties +21 -4
  267. package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -5
  268. package/src/sap/fe/core/messagebundle_hi.properties +20 -3
  269. package/src/sap/fe/core/messagebundle_hr.properties +22 -5
  270. package/src/sap/fe/core/messagebundle_hu.properties +20 -3
  271. package/src/sap/fe/core/messagebundle_id.properties +20 -3
  272. package/src/sap/fe/core/messagebundle_it.properties +23 -6
  273. package/src/sap/fe/core/messagebundle_iw.properties +20 -3
  274. package/src/sap/fe/core/messagebundle_ja.properties +22 -5
  275. package/src/sap/fe/core/messagebundle_kk.properties +21 -4
  276. package/src/sap/fe/core/messagebundle_ko.properties +20 -3
  277. package/src/sap/fe/core/messagebundle_lt.properties +20 -3
  278. package/src/sap/fe/core/messagebundle_lv.properties +20 -3
  279. package/src/sap/fe/core/messagebundle_ms.properties +20 -3
  280. package/src/sap/fe/core/messagebundle_nl.properties +20 -3
  281. package/src/sap/fe/core/messagebundle_no.properties +20 -3
  282. package/src/sap/fe/core/messagebundle_pl.properties +21 -4
  283. package/src/sap/fe/core/messagebundle_pt.properties +20 -3
  284. package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -3
  285. package/src/sap/fe/core/messagebundle_ro.properties +20 -3
  286. package/src/sap/fe/core/messagebundle_ru.properties +20 -3
  287. package/src/sap/fe/core/messagebundle_sh.properties +20 -3
  288. package/src/sap/fe/core/messagebundle_sk.properties +20 -3
  289. package/src/sap/fe/core/messagebundle_sl.properties +26 -9
  290. package/src/sap/fe/core/messagebundle_sv.properties +20 -3
  291. package/src/sap/fe/core/messagebundle_th.properties +21 -4
  292. package/src/sap/fe/core/messagebundle_tr.properties +20 -3
  293. package/src/sap/fe/core/messagebundle_uk.properties +23 -6
  294. package/src/sap/fe/core/messagebundle_vi.properties +20 -3
  295. package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -3
  296. package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -3
  297. package/src/sap/fe/core/operationsHelper.js +74 -101
  298. package/src/sap/fe/core/operationsHelper.ts +113 -44
  299. package/src/sap/fe/core/rootView/Fcl.controller.js +151 -228
  300. package/src/sap/fe/core/rootView/Fcl.controller.ts +90 -15
  301. package/src/sap/fe/core/rootView/Fcl.view.xml +1 -8
  302. package/src/sap/fe/core/rootView/NavContainer.controller.js +41 -78
  303. package/src/sap/fe/core/rootView/NavContainer.controller.ts +32 -38
  304. package/src/sap/fe/core/rootView/RootViewBaseController.js +110 -181
  305. package/src/sap/fe/core/rootView/RootViewBaseController.ts +37 -17
  306. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -18
  307. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +13 -52
  308. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -22
  309. package/src/sap/fe/core/services/NavigationServiceFactory.js +45 -87
  310. package/src/sap/fe/core/services/NavigationServiceFactory.ts +17 -10
  311. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -28
  312. package/src/sap/fe/core/services/RoutingServiceFactory.js +92 -250
  313. package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -12
  314. package/src/sap/fe/core/services/ShellServicesFactory.js +122 -251
  315. package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -4
  316. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +188 -273
  317. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +143 -154
  318. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +37 -135
  319. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +59 -94
  320. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -16
  321. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  322. package/src/sap/fe/core/support/AnnotationIssue.support.js +6 -9
  323. package/src/sap/fe/core/support/AnnotationIssue.support.ts +4 -4
  324. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +6 -9
  325. package/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +3 -3
  326. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +6 -9
  327. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +3 -3
  328. package/src/sap/fe/core/support/CommonHelper.js +7 -16
  329. package/src/sap/fe/core/support/Diagnostics.js +1 -10
  330. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +6 -9
  331. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +3 -3
  332. package/src/sap/fe/core/templating/CommonFormatters.js +1 -15
  333. package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -20
  334. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -20
  335. package/src/sap/fe/core/templating/DataModelPathHelper.js +49 -121
  336. package/src/sap/fe/core/templating/DataModelPathHelper.ts +41 -31
  337. package/src/sap/fe/core/templating/DisplayModeFormatter.js +8 -15
  338. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +7 -7
  339. package/src/sap/fe/core/templating/EntitySetHelper.js +6 -31
  340. package/src/sap/fe/core/templating/FieldControlHelper.js +4 -21
  341. package/src/sap/fe/core/templating/FieldControlHelper.ts +1 -1
  342. package/src/sap/fe/core/templating/FilterHelper.js +40 -111
  343. package/src/sap/fe/core/templating/FilterHelper.ts +20 -16
  344. package/src/sap/fe/core/templating/FilterTemplating.js +1 -19
  345. package/src/sap/fe/core/templating/FilterTemplating.ts +1 -1
  346. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -34
  347. package/src/sap/fe/core/templating/PropertyHelper.js +120 -163
  348. package/src/sap/fe/core/templating/PropertyHelper.ts +69 -33
  349. package/src/sap/fe/core/templating/SemanticObjectHelper.js +46 -0
  350. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +34 -0
  351. package/src/sap/fe/core/templating/UIFormatters.js +40 -180
  352. package/src/sap/fe/core/templating/UIFormatters.ts +37 -43
  353. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -14
  354. package/src/sap/fe/core/type/Email.js +1 -10
  355. package/src/sap/fe/core/type/TypeUtil.js +1 -11
  356. package/ui5.yaml +0 -1
  357. package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +0 -35
  358. package/src/sap/fe/core/helpers/LRMessageStrip.js +0 -234
  359. package/src/sap/fe/core/helpers/LRMessageStrip.ts +0 -216
@@ -11,10 +11,8 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit)
11
11
  var not = BindingToolkit.not;
12
12
  var equal = BindingToolkit.equal;
13
13
  var and = BindingToolkit.and;
14
-
15
14
  var UI = {
16
15
  IsCreateMode: pathInModel("createMode", "ui"),
17
- IsCreateModeSticky: pathInModel("createModeSticky", "ui"),
18
16
  IsEditable: pathInModel("/isEditable", "ui"),
19
17
  IsTransientBinding: equal(pathInModel("@$ui5.context.isTransient"), true),
20
18
  IsTotal: equal(pathInModel("@$ui5.node.isTotal"), true),
@@ -33,6 +31,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit)
33
31
  IsNewObject: and(not(Entity.HasActive), not(Entity.IsActive)),
34
32
  HasNoDraftForCurrentUser: or(not(Entity.HasDraft), and(Entity.HasDraft, not(pathInModel("DraftAdministrativeData/DraftIsCreatedByMe"))))
35
33
  };
34
+
36
35
  /**
37
36
  * Gets a singleton based on the fully qualified name.
38
37
  *
@@ -40,14 +39,13 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit)
40
39
  * @param fullyQualifiedName The fully qualified name of the singleton
41
40
  * @returns The singleton instance.
42
41
  */
43
-
44
42
  _exports.Draft = Draft;
45
-
46
43
  function getSingleton(convertedTypes, fullyQualifiedName) {
47
44
  return convertedTypes.singletons.find(function (singleton) {
48
45
  return singleton.fullyQualifiedName === fullyQualifiedName;
49
46
  });
50
47
  }
48
+
51
49
  /**
52
50
  * Function to adjust singleton paths in the annotation.
53
51
  * The absolute path via EntityContainer needs to be shortened to /SingletonName/PropertyName.
@@ -57,16 +55,13 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit)
57
55
  * @param visitedNavigationPaths The array of visited navigation paths
58
56
  * @returns The adjusted path for the reference of the singleton property, otherwise the input path itself.
59
57
  */
60
-
61
-
62
58
  var singletonPathVisitor = function (path, convertedTypes, visitedNavigationPaths) {
63
59
  // Determine whether the path is absolute and whether it points to a singleton.
64
60
  if (path.indexOf("/") === 0) {
65
61
  var parts = path.split("/").filter(Boolean),
66
- propertyName = parts.pop(),
67
- entitySetName = parts.join("/"),
68
- singleton = getSingleton(convertedTypes, entitySetName);
69
-
62
+ propertyName = parts.pop(),
63
+ entitySetName = parts.join("/"),
64
+ singleton = getSingleton(convertedTypes, entitySetName);
70
65
  if (singleton) {
71
66
  // Set the absolute binding path to access the singleton property
72
67
  path = "/".concat(singleton.name, "/").concat(propertyName);
@@ -78,9 +73,9 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit)
78
73
  localPath.push(path);
79
74
  path = localPath.join("/");
80
75
  }
81
-
82
76
  return path;
83
77
  };
78
+
84
79
  /**
85
80
  * Function to adjust property paths defined in the binding of an action.
86
81
  *
@@ -91,22 +86,17 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit"], function (BindingToolkit)
91
86
  * @param bindingParameterFullName The fully qualified name of the binding parameter
92
87
  * @returns The adjusted property path
93
88
  */
94
-
95
-
96
89
  _exports.singletonPathVisitor = singletonPathVisitor;
97
-
98
90
  function bindingContextPathVisitor(path, converterContext, bindingParameterFullName) {
99
- var bindingParameterPrefix = "".concat(bindingParameterFullName === null || bindingParameterFullName === void 0 ? void 0 : bindingParameterFullName.substring(bindingParameterFullName.lastIndexOf("/") + 1), "/"); // Strip the binding parameter name from OperationAvailable path
91
+ var bindingParameterPrefix = "".concat(bindingParameterFullName === null || bindingParameterFullName === void 0 ? void 0 : bindingParameterFullName.substring(bindingParameterFullName.lastIndexOf("/") + 1), "/");
92
+ // Strip the binding parameter name from OperationAvailable path
100
93
  // For e.g. _it/property1 --> property1
101
-
102
94
  if (path.startsWith(bindingParameterPrefix)) {
103
95
  return path.substring(bindingParameterPrefix.length);
104
96
  }
105
-
106
97
  return singletonPathVisitor(path, converterContext.getConvertedTypes(), []);
107
98
  }
108
-
109
99
  _exports.bindingContextPathVisitor = bindingContextPathVisitor;
110
100
  return _exports;
111
101
  }, false);
112
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVSSIsIklzQ3JlYXRlTW9kZSIsInBhdGhJbk1vZGVsIiwiSXNDcmVhdGVNb2RlU3RpY2t5IiwiSXNFZGl0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImVxdWFsIiwiSXNUb3RhbCIsIklzRXhwYW5kZWQiLCJOb2RlTGV2ZWwiLCJJc0luYWN0aXZlIiwiRW50aXR5IiwiSGFzRHJhZnQiLCJIYXNBY3RpdmUiLCJJc0FjdGl2ZSIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJhbmQiLCJub3QiLCJIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXIiLCJvciIsImdldFNpbmdsZXRvbiIsImNvbnZlcnRlZFR5cGVzIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2luZ2xldG9ucyIsImZpbmQiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsInBhdGgiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicHJvcGVydHlOYW1lIiwicG9wIiwiZW50aXR5U2V0TmFtZSIsImpvaW4iLCJuYW1lIiwibG9jYWxQYXRoIiwiY29uY2F0IiwicHVzaCIsImJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IiLCJjb252ZXJ0ZXJDb250ZXh0IiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiYmluZGluZ1BhcmFtZXRlclByZWZpeCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsImdldENvbnZlcnRlZFR5cGVzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCaW5kaW5nSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udmVydGVkTWV0YWRhdGEsIFNpbmdsZXRvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGVxdWFsLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5cbmV4cG9ydCBjb25zdCBVSSA9IHtcblx0SXNDcmVhdGVNb2RlOiBwYXRoSW5Nb2RlbChcImNyZWF0ZU1vZGVcIiwgXCJ1aVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzQ3JlYXRlTW9kZVN0aWNreTogcGF0aEluTW9kZWwoXCJjcmVhdGVNb2RlU3RpY2t5XCIsIFwidWlcIikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRJc0VkaXRhYmxlOiBwYXRoSW5Nb2RlbChcIi9pc0VkaXRhYmxlXCIsIFwidWlcIikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRJc1RyYW5zaWVudEJpbmRpbmc6IGVxdWFsKHBhdGhJbk1vZGVsKFwiQCR1aTUuY29udGV4dC5pc1RyYW5zaWVudFwiKSwgdHJ1ZSksXG5cdElzVG90YWw6IGVxdWFsKHBhdGhJbk1vZGVsKFwiQCR1aTUubm9kZS5pc1RvdGFsXCIpLCB0cnVlKSxcblx0SXNFeHBhbmRlZDogZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIiksIHRydWUpLFxuXHROb2RlTGV2ZWw6IHBhdGhJbk1vZGVsKFwiQCR1aTUubm9kZS5sZXZlbFwiKSxcblx0SXNJbmFjdGl2ZTogcGF0aEluTW9kZWwoXCJAJHVpNS5jb250ZXh0LmlzSW5hY3RpdmVcIilcbn07XG5cbmV4cG9ydCBjb25zdCBFbnRpdHkgPSB7XG5cdEhhc0RyYWZ0OiBwYXRoSW5Nb2RlbChcIkhhc0RyYWZ0RW50aXR5XCIpLFxuXHRIYXNBY3RpdmU6IHBhdGhJbk1vZGVsKFwiSGFzQWN0aXZlRW50aXR5XCIpLFxuXHRJc0FjdGl2ZTogcGF0aEluTW9kZWwoXCJJc0FjdGl2ZUVudGl0eVwiKVxufTtcblxuZXhwb3J0IGNvbnN0IERyYWZ0ID0ge1xuXHRJc05ld09iamVjdDogYW5kKG5vdChFbnRpdHkuSGFzQWN0aXZlKSwgbm90KEVudGl0eS5Jc0FjdGl2ZSkpLFxuXHRIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXI6IG9yKFxuXHRcdG5vdChFbnRpdHkuSGFzRHJhZnQpLFxuXHRcdGFuZChFbnRpdHkuSGFzRHJhZnQsIG5vdChwYXRoSW5Nb2RlbChcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0SXNDcmVhdGVkQnlNZVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pKVxuXHQpXG59O1xuXG4vKipcbiAqIEdldHMgYSBzaW5nbGV0b24gYmFzZWQgb24gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZWRUeXBlcyBUaGUgY29udmVydGVkIHR5cGVzXG4gKiBAcGFyYW0gZnVsbHlRdWFsaWZpZWROYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgc2luZ2xldG9uXG4gKiBAcmV0dXJucyBUaGUgc2luZ2xldG9uIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBnZXRTaW5nbGV0b24oY29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLCBmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFNpbmdsZXRvbiB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBjb252ZXJ0ZWRUeXBlcy5zaW5nbGV0b25zLmZpbmQoKHNpbmdsZXRvbikgPT4gc2luZ2xldG9uLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0byBhZGp1c3Qgc2luZ2xldG9uIHBhdGhzIGluIHRoZSBhbm5vdGF0aW9uLlxuICogVGhlIGFic29sdXRlIHBhdGggdmlhIEVudGl0eUNvbnRhaW5lciBuZWVkcyB0byBiZSBzaG9ydGVuZWQgdG8gL1NpbmdsZXRvbk5hbWUvUHJvcGVydHlOYW1lLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGNvbmZpZ3VyZWQgaW4gdGhlIGFubm90YXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZWRUeXBlcyBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gdmlzaXRlZE5hdmlnYXRpb25QYXRocyBUaGUgYXJyYXkgb2YgdmlzaXRlZCBuYXZpZ2F0aW9uIHBhdGhzXG4gKiBAcmV0dXJucyBUaGUgYWRqdXN0ZWQgcGF0aCBmb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgc2luZ2xldG9uIHByb3BlcnR5LCBvdGhlcndpc2UgdGhlIGlucHV0IHBhdGggaXRzZWxmLlxuICovXG5leHBvcnQgY29uc3Qgc2luZ2xldG9uUGF0aFZpc2l0b3IgPSBmdW5jdGlvbiAocGF0aDogc3RyaW5nLCBjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcblx0Ly8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHBhdGggaXMgYWJzb2x1dGUgYW5kIHdoZXRoZXIgaXQgcG9pbnRzIHRvIGEgc2luZ2xldG9uLlxuXHRpZiAocGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLFxuXHRcdFx0cHJvcGVydHlOYW1lID0gcGFydHMucG9wKCksXG5cdFx0XHRlbnRpdHlTZXROYW1lID0gcGFydHMuam9pbihcIi9cIiksXG5cdFx0XHRzaW5nbGV0b24gPSBnZXRTaW5nbGV0b24oY29udmVydGVkVHlwZXMsIGVudGl0eVNldE5hbWUpO1xuXHRcdGlmIChzaW5nbGV0b24pIHtcblx0XHRcdC8vIFNldCB0aGUgYWJzb2x1dGUgYmluZGluZyBwYXRoIHRvIGFjY2VzcyB0aGUgc2luZ2xldG9uIHByb3BlcnR5XG5cdFx0XHRwYXRoID0gYC8ke3NpbmdsZXRvbi5uYW1lfS8ke3Byb3BlcnR5TmFtZX1gO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBOb3QgYSBzaW5nbGV0b24gcmVmZXJlbmNlLlxuXHRcdC8vIFByZWZpeCB0aGUgbmF2aWdhdGlvbiBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBwYXRoXG5cdFx0Y29uc3QgbG9jYWxQYXRoID0gdmlzaXRlZE5hdmlnYXRpb25QYXRocy5jb25jYXQoKTtcblx0XHRsb2NhbFBhdGgucHVzaChwYXRoKTtcblx0XHRwYXRoID0gbG9jYWxQYXRoLmpvaW4oXCIvXCIpO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBhZGp1c3QgcHJvcGVydHkgcGF0aHMgZGVmaW5lZCBpbiB0aGUgYmluZGluZyBvZiBhbiBhY3Rpb24uXG4gKlxuICogVGhlIGJpbmRpbmcgcGFyYW1ldGVyIG5hbWUgbmVlZHMgdG8gYmUgcmVtb3ZlZC4gU2luZ2xldG9uIHBhdGhzIG5lZWQgdG8gYmUgcmVzb2x2ZWQuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggY29uZmlndXJlZCBpbiB0aGUgYW5ub3RhdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJpbmRpbmcgcGFyYW1ldGVyXG4gKiBAcmV0dXJucyBUaGUgYWRqdXN0ZWQgcHJvcGVydHkgcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvcihwYXRoOiBzdHJpbmcsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZTogc3RyaW5nKSB7XG5cdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJQcmVmaXggPSBgJHtiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWU/LnN1YnN0cmluZyhiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUubGFzdEluZGV4T2YoXCIvXCIpICsgMSl9L2A7XG5cdC8vIFN0cmlwIHRoZSBiaW5kaW5nIHBhcmFtZXRlciBuYW1lIGZyb20gT3BlcmF0aW9uQXZhaWxhYmxlIHBhdGhcblx0Ly8gRm9yIGUuZy4gX2l0L3Byb3BlcnR5MSAtLT4gcHJvcGVydHkxXG5cdGlmIChwYXRoLnN0YXJ0c1dpdGgoYmluZGluZ1BhcmFtZXRlclByZWZpeCkpIHtcblx0XHRyZXR1cm4gcGF0aC5zdWJzdHJpbmcoYmluZGluZ1BhcmFtZXRlclByZWZpeC5sZW5ndGgpO1xuXHR9XG5cdHJldHVybiBzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIFtdKTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7RUFLTyxJQUFNQSxFQUFFLEdBQUc7SUFDakJDLFlBQVksRUFBRUMsV0FBVyxDQUFDLFlBQUQsRUFBZSxJQUFmLENBRFI7SUFFakJDLGtCQUFrQixFQUFFRCxXQUFXLENBQUMsa0JBQUQsRUFBcUIsSUFBckIsQ0FGZDtJQUdqQkUsVUFBVSxFQUFFRixXQUFXLENBQUMsYUFBRCxFQUFnQixJQUFoQixDQUhOO0lBSWpCRyxrQkFBa0IsRUFBRUMsS0FBSyxDQUFDSixXQUFXLENBQUMsMkJBQUQsQ0FBWixFQUEyQyxJQUEzQyxDQUpSO0lBS2pCSyxPQUFPLEVBQUVELEtBQUssQ0FBQ0osV0FBVyxDQUFDLG9CQUFELENBQVosRUFBb0MsSUFBcEMsQ0FMRztJQU1qQk0sVUFBVSxFQUFFRixLQUFLLENBQUNKLFdBQVcsQ0FBQyx1QkFBRCxDQUFaLEVBQXVDLElBQXZDLENBTkE7SUFPakJPLFNBQVMsRUFB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
102
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVSSIsIklzQ3JlYXRlTW9kZSIsInBhdGhJbk1vZGVsIiwiSXNFZGl0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImVxdWFsIiwiSXNUb3RhbCIsIklzRXhwYW5kZWQiLCJOb2RlTGV2ZWwiLCJJc0luYWN0aXZlIiwiRW50aXR5IiwiSGFzRHJhZnQiLCJIYXNBY3RpdmUiLCJJc0FjdGl2ZSIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJhbmQiLCJub3QiLCJIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXIiLCJvciIsImdldFNpbmdsZXRvbiIsImNvbnZlcnRlZFR5cGVzIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2luZ2xldG9ucyIsImZpbmQiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsInBhdGgiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicHJvcGVydHlOYW1lIiwicG9wIiwiZW50aXR5U2V0TmFtZSIsImpvaW4iLCJuYW1lIiwibG9jYWxQYXRoIiwiY29uY2F0IiwicHVzaCIsImJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IiLCJjb252ZXJ0ZXJDb250ZXh0IiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiYmluZGluZ1BhcmFtZXRlclByZWZpeCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsImdldENvbnZlcnRlZFR5cGVzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCaW5kaW5nSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udmVydGVkTWV0YWRhdGEsIFNpbmdsZXRvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGVxdWFsLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5cbmV4cG9ydCBjb25zdCBVSSA9IHtcblx0SXNDcmVhdGVNb2RlOiBwYXRoSW5Nb2RlbChcImNyZWF0ZU1vZGVcIiwgXCJ1aVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzRWRpdGFibGU6IHBhdGhJbk1vZGVsKFwiL2lzRWRpdGFibGVcIiwgXCJ1aVwiKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzVHJhbnNpZW50QmluZGluZzogZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5jb250ZXh0LmlzVHJhbnNpZW50XCIpLCB0cnVlKSxcblx0SXNUb3RhbDogZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzVG90YWxcIiksIHRydWUpLFxuXHRJc0V4cGFuZGVkOiBlcXVhbChwYXRoSW5Nb2RlbChcIkAkdWk1Lm5vZGUuaXNFeHBhbmRlZFwiKSwgdHJ1ZSksXG5cdE5vZGVMZXZlbDogcGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmxldmVsXCIpLFxuXHRJc0luYWN0aXZlOiBwYXRoSW5Nb2RlbChcIkAkdWk1LmNvbnRleHQuaXNJbmFjdGl2ZVwiKVxufTtcblxuZXhwb3J0IGNvbnN0IEVudGl0eSA9IHtcblx0SGFzRHJhZnQ6IHBhdGhJbk1vZGVsKFwiSGFzRHJhZnRFbnRpdHlcIiksXG5cdEhhc0FjdGl2ZTogcGF0aEluTW9kZWwoXCJIYXNBY3RpdmVFbnRpdHlcIiksXG5cdElzQWN0aXZlOiBwYXRoSW5Nb2RlbChcIklzQWN0aXZlRW50aXR5XCIpXG59O1xuXG5leHBvcnQgY29uc3QgRHJhZnQgPSB7XG5cdElzTmV3T2JqZWN0OiBhbmQobm90KEVudGl0eS5IYXNBY3RpdmUpLCBub3QoRW50aXR5LklzQWN0aXZlKSksXG5cdEhhc05vRHJhZnRGb3JDdXJyZW50VXNlcjogb3IoXG5cdFx0bm90KEVudGl0eS5IYXNEcmFmdCksXG5cdFx0YW5kKEVudGl0eS5IYXNEcmFmdCwgbm90KHBhdGhJbk1vZGVsKFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRJc0NyZWF0ZWRCeU1lXCIpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPikpXG5cdClcbn07XG5cbi8qKlxuICogR2V0cyBhIHNpbmdsZXRvbiBiYXNlZCBvbiB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIFRoZSBjb252ZXJ0ZWQgdHlwZXNcbiAqIEBwYXJhbSBmdWxseVF1YWxpZmllZE5hbWUgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBzaW5nbGV0b25cbiAqIEByZXR1cm5zIFRoZSBzaW5nbGV0b24gaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGdldFNpbmdsZXRvbihjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsIGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogU2luZ2xldG9uIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGNvbnZlcnRlZFR5cGVzLnNpbmdsZXRvbnMuZmluZCgoc2luZ2xldG9uKSA9PiBzaW5nbGV0b24uZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGFkanVzdCBzaW5nbGV0b24gcGF0aHMgaW4gdGhlIGFubm90YXRpb24uXG4gKiBUaGUgYWJzb2x1dGUgcGF0aCB2aWEgRW50aXR5Q29udGFpbmVyIG5lZWRzIHRvIGJlIHNob3J0ZW5lZCB0byAvU2luZ2xldG9uTmFtZS9Qcm9wZXJ0eU5hbWUuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggY29uZmlndXJlZCBpbiB0aGUgYW5ub3RhdGlvblxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIFRoZSBpbnN0YW5jZSBvZiB0aGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSB2aXNpdGVkTmF2aWdhdGlvblBhdGhzIFRoZSBhcnJheSBvZiB2aXNpdGVkIG5hdmlnYXRpb24gcGF0aHNcbiAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBwYXRoIGZvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBzaW5nbGV0b24gcHJvcGVydHksIG90aGVyd2lzZSB0aGUgaW5wdXQgcGF0aCBpdHNlbGYuXG4gKi9cbmV4cG9ydCBjb25zdCBzaW5nbGV0b25QYXRoVmlzaXRvciA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcsIGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YSwgdmlzaXRlZE5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuXHQvLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgcGF0aCBpcyBhYnNvbHV0ZSBhbmQgd2hldGhlciBpdCBwb2ludHMgdG8gYSBzaW5nbGV0b24uXG5cdGlmIChwYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0Y29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbiksXG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBwYXJ0cy5wb3AoKSxcblx0XHRcdGVudGl0eVNldE5hbWUgPSBwYXJ0cy5qb2luKFwiL1wiKSxcblx0XHRcdHNpbmdsZXRvbiA9IGdldFNpbmdsZXRvbihjb252ZXJ0ZWRUeXBlcywgZW50aXR5U2V0TmFtZSk7XG5cdFx0aWYgKHNpbmdsZXRvbikge1xuXHRcdFx0Ly8gU2V0IHRoZSBhYnNvbHV0ZSBiaW5kaW5nIHBhdGggdG8gYWNjZXNzIHRoZSBzaW5nbGV0b24gcHJvcGVydHlcblx0XHRcdHBhdGggPSBgLyR7c2luZ2xldG9uLm5hbWV9LyR7cHJvcGVydHlOYW1lfWA7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIE5vdCBhIHNpbmdsZXRvbiByZWZlcmVuY2UuXG5cdFx0Ly8gUHJlZml4IHRoZSBuYXZpZ2F0aW9uIHBhdGggdG8gdGhlIHByb3BlcnR5IHBhdGhcblx0XHRjb25zdCBsb2NhbFBhdGggPSB2aXNpdGVkTmF2aWdhdGlvblBhdGhzLmNvbmNhdCgpO1xuXHRcdGxvY2FsUGF0aC5wdXNoKHBhdGgpO1xuXHRcdHBhdGggPSBsb2NhbFBhdGguam9pbihcIi9cIik7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGFkanVzdCBwcm9wZXJ0eSBwYXRocyBkZWZpbmVkIGluIHRoZSBiaW5kaW5nIG9mIGFuIGFjdGlvbi5cbiAqXG4gKiBUaGUgYmluZGluZyBwYXJhbWV0ZXIgbmFtZSBuZWVkcyB0byBiZSByZW1vdmVkLiBTaW5nbGV0b24gcGF0aHMgbmVlZCB0byBiZSByZXNvbHZlZC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBjb25maWd1cmVkIGluIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYmluZGluZyBwYXJhbWV0ZXJcbiAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBwcm9wZXJ0eSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGg6IHN0cmluZywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCwgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lOiBzdHJpbmcpIHtcblx0Y29uc3QgYmluZGluZ1BhcmFtZXRlclByZWZpeCA9IGAke2JpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZT8uc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZS5sYXN0SW5kZXhPZihcIi9cIikgKyAxKX0vYDtcblx0Ly8gU3RyaXAgdGhlIGJpbmRpbmcgcGFyYW1ldGVyIG5hbWUgZnJvbSBPcGVyYXRpb25BdmFpbGFibGUgcGF0aFxuXHQvLyBGb3IgZS5nLiBfaXQvcHJvcGVydHkxIC0tPiBwcm9wZXJ0eTFcblx0aWYgKHBhdGguc3RhcnRzV2l0aChiaW5kaW5nUGFyYW1ldGVyUHJlZml4KSkge1xuXHRcdHJldHVybiBwYXRoLnN1YnN0cmluZyhiaW5kaW5nUGFyYW1ldGVyUHJlZml4Lmxlbmd0aCk7XG5cdH1cblx0cmV0dXJuIHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgW10pO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7O0VBS08sSUFBTUEsRUFBRSxHQUFHO0lBQ2pCQyxZQUFZLEVBQUVDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFzQztJQUNsRkMsVUFBVSxFQUFFRCxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBc0M7SUFDakZFLGtCQUFrQixFQUFFQyxLQUFLLENBQUNILFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RUksT0FBTyxFQUFFRCxLQUFLLENBQUNILFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN2REssVUFBVSxFQUFFRixLQUFLLENBQUNILFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUM3RE0sU0FBUyxFQUFFTixXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDMUNPLFVBQVUsRUFBRVAsV0FBVyxDQUFDLDBCQUEwQjtFQUNuRCxDQUFDO0VBQUM7RUFFSyxJQUFNUSxNQUFNLEdBQUc7SUFDckJDLFFBQVEsRUFBRVQsV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ3ZDVSxTQUFTLEVBQUVWLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztJQUN6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
@@ -5,7 +5,6 @@ import { and, equal, not, or, pathInModel } from "sap/fe/core/helpers/BindingToo
5
5
 
6
6
  export const UI = {
7
7
  IsCreateMode: pathInModel("createMode", "ui") as BindingToolkitExpression<boolean>,
8
- IsCreateModeSticky: pathInModel("createModeSticky", "ui") as BindingToolkitExpression<boolean>,
9
8
  IsEditable: pathInModel("/isEditable", "ui") as BindingToolkitExpression<boolean>,
10
9
  IsTransientBinding: equal(pathInModel("@$ui5.context.isTransient"), true),
11
10
  IsTotal: equal(pathInModel("@$ui5.node.isTotal"), true),
@@ -6,17 +6,13 @@ sap.ui.define(["sap/base/Log"], function (Log) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
-
10
9
  var Placement;
11
-
12
10
  (function (Placement) {
13
11
  Placement["After"] = "After";
14
12
  Placement["Before"] = "Before";
15
13
  Placement["End"] = "End";
16
14
  })(Placement || (Placement = {}));
17
-
18
15
  _exports.Placement = Placement;
19
-
20
16
  /**
21
17
  * Recursive method that order the keys based on a position information.
22
18
  *
@@ -28,69 +24,62 @@ sap.ui.define(["sap/base/Log"], function (Log) {
28
24
  */
29
25
  var orderPositioningItemRecursively = function (positioningItems, anchor, sorted, visited) {
30
26
  var insertIndex = sorted.indexOf(anchor);
31
-
32
27
  if (insertIndex !== -1) {
33
28
  return insertIndex;
34
29
  }
35
-
36
30
  var anchorItem = positioningItems[anchor];
37
-
38
31
  if (anchorItem === undefined) {
39
32
  var anchorText = anchor.split("::"),
40
- manifestItem = Object.keys(visited)[0];
33
+ manifestItem = Object.keys(visited)[0];
41
34
  Log.warning("Position anchor '".concat(anchorText[anchorText.length - 1], "' not found for item '").concat(manifestItem, "'. Please check manifest settings."));
42
- return sorted.length; // throw new Error(`position anchor not found: ${anchor}`);
35
+ return sorted.length;
36
+ // throw new Error(`position anchor not found: ${anchor}`);
43
37
  }
44
38
 
45
39
  visited[anchor] = anchorItem;
46
-
47
40
  if (anchorItem && !(anchorItem.anchor in visited)) {
48
41
  insertIndex = orderPositioningItemRecursively(positioningItems, anchorItem.anchor, sorted, visited);
49
-
50
42
  if (anchorItem.placement !== Placement.Before) {
51
43
  ++insertIndex;
52
44
  }
53
45
  } else {
54
46
  insertIndex = sorted.length;
55
47
  }
56
-
57
48
  sorted.splice(insertIndex, 0, anchor);
58
49
  return insertIndex;
59
50
  };
60
-
51
+ var OverrideType;
52
+ (function (OverrideType) {
53
+ OverrideType["merge"] = "merge";
54
+ OverrideType["overwrite"] = "overwrite";
55
+ OverrideType["ignore"] = "ignore";
56
+ })(OverrideType || (OverrideType = {}));
57
+ _exports.OverrideType = OverrideType;
61
58
  function isArrayConfig(config) {
62
59
  return typeof config === "object";
63
60
  }
64
-
65
61
  function applyOverride(overwritableKeys, sourceItem, customElement) {
66
62
  var outItem = sourceItem || customElement;
67
-
68
63
  for (var overwritableKey in overwritableKeys) {
69
64
  if (Object.hasOwnProperty.call(overwritableKeys, overwritableKey)) {
70
65
  var overrideConfig = overwritableKeys[overwritableKey];
71
-
72
66
  if (sourceItem !== null) {
73
67
  switch (overrideConfig) {
74
68
  case "overwrite":
75
69
  if (customElement.hasOwnProperty(overwritableKey) && customElement[overwritableKey] !== undefined) {
76
70
  sourceItem[overwritableKey] = customElement[overwritableKey];
77
71
  }
78
-
79
72
  break;
80
-
81
73
  case "merge":
82
74
  default:
83
75
  var subItem = sourceItem[overwritableKey] || [];
84
76
  var subConfig = {};
85
-
86
77
  if (isArrayConfig(overrideConfig)) {
87
78
  subConfig = overrideConfig;
88
79
  }
89
-
90
80
  if (Array.isArray(subItem)) {
91
81
  sourceItem[overwritableKey] = insertCustomElements(subItem, customElement && customElement[overwritableKey] || {}, subConfig);
92
82
  }
93
-
94
83
  break;
95
84
  }
96
85
  } else {
@@ -99,26 +88,22 @@ sap.ui.define(["sap/base/Log"], function (Log) {
99
88
  if (customElement.hasOwnProperty(overwritableKey) && customElement[overwritableKey] !== undefined) {
100
89
  outItem[overwritableKey] = customElement[overwritableKey];
101
90
  }
102
-
103
91
  break;
104
-
105
92
  case "merge":
106
93
  default:
107
94
  var _subConfig = {};
108
-
109
95
  if (isArrayConfig(overrideConfig)) {
110
96
  _subConfig = overrideConfig;
111
97
  }
112
-
113
98
  outItem[overwritableKey] = insertCustomElements([], customElement && customElement[overwritableKey] || {}, _subConfig);
114
99
  break;
115
100
  }
116
101
  }
117
102
  }
118
103
  }
119
-
120
104
  return outItem;
121
105
  }
106
+
122
107
  /**
123
108
  * Insert a set of custom elements in the right position in an original collection.
124
109
  *
@@ -139,14 +124,11 @@ sap.ui.define(["sap/base/Log"], function (Log) {
139
124
  * @param overwritableKeys The list of keys from the original object that can be overwritten in case a custom element has the same "key"
140
125
  * @returns An ordered array of elements including the custom ones
141
126
  */
142
-
143
-
144
127
  function insertCustomElements(rootElements, customElements) {
145
128
  var overwritableKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
146
129
  var firstAnchor = rootElements.length ? rootElements[0].key : null;
147
130
  var rootElementsWithoutLast = rootElements.filter(function (rootElement) {
148
131
  var _rootElement$position;
149
-
150
132
  return ((_rootElement$position = rootElement.position) === null || _rootElement$position === void 0 ? void 0 : _rootElement$position.placement) !== Placement.End;
151
133
  });
152
134
  var lastAnchor = rootElements.length ? rootElements[rootElementsWithoutLast.length - 1].key : null;
@@ -155,46 +137,40 @@ sap.ui.define(["sap/base/Log"], function (Log) {
155
137
  var itemsPerKey = {};
156
138
  rootElements.forEach(function (rootElement) {
157
139
  var _rootElement$position2;
158
-
159
140
  if (((_rootElement$position2 = rootElement.position) === null || _rootElement$position2 === void 0 ? void 0 : _rootElement$position2.placement) === Placement.End && !endElement) {
160
141
  endElement = rootElement;
161
142
  } else {
162
143
  var _rootElement$position3, _rootElement$position4;
163
-
164
144
  positioningItems[rootElement.key] = {
165
145
  anchor: ((_rootElement$position3 = rootElement.position) === null || _rootElement$position3 === void 0 ? void 0 : _rootElement$position3.anchor) || rootElement.key,
166
146
  placement: ((_rootElement$position4 = rootElement.position) === null || _rootElement$position4 === void 0 ? void 0 : _rootElement$position4.placement) || Placement.After
167
147
  };
168
148
  }
169
-
170
149
  itemsPerKey[rootElement.key] = rootElement;
171
150
  });
172
151
  Object.keys(customElements).forEach(function (customElementKey) {
173
152
  var _customElement$menu;
174
-
175
153
  var customElement = customElements[customElementKey];
176
- var anchor = customElement.position.anchor; // If no placement defined we are After
177
-
154
+ var anchor = customElement.position.anchor;
155
+ // If no placement defined we are After
178
156
  if (!customElement.position.placement) {
179
157
  customElement.position.placement = Placement.After;
180
- } // If no anchor we're either After the last anchor or Before the first
181
-
182
-
158
+ }
159
+ // If no anchor we're either After the last anchor or Before the first
183
160
  if (!anchor) {
184
161
  var potentialAnchor = customElement.position.placement === Placement.After ? lastAnchor : firstAnchor;
185
162
  customElement.position.anchor = potentialAnchor ? potentialAnchor : customElementKey;
186
- } // Adding bound/unbound actions to menu
187
-
163
+ }
188
164
 
165
+ // Adding bound/unbound actions to menu
189
166
  customElement.menu = customElement === null || customElement === void 0 ? void 0 : (_customElement$menu = customElement.menu) === null || _customElement$menu === void 0 ? void 0 : _customElement$menu.map(function (menu) {
190
167
  var _itemsPerKey$menu$key;
191
-
192
168
  return (_itemsPerKey$menu$key = itemsPerKey[menu.key]) !== null && _itemsPerKey$menu$key !== void 0 ? _itemsPerKey$menu$key : menu;
193
169
  });
194
-
195
170
  if (itemsPerKey[customElement.key]) {
196
- itemsPerKey[customElement.key] = applyOverride(overwritableKeys, itemsPerKey[customElement.key], customElement); //Position is overwritten for filter fields if there is a change in manifest
171
+ itemsPerKey[customElement.key] = applyOverride(overwritableKeys, itemsPerKey[customElement.key], customElement);
197
172
 
173
+ //Position is overwritten for filter fields if there is a change in manifest
198
174
  if (anchor && customElement.position && overwritableKeys.position && overwritableKeys.position === "overwrite") {
199
175
  positioningItems[customElement.key] = itemsPerKey[customElement.key].position;
200
176
  }
@@ -203,7 +179,6 @@ sap.ui.define(["sap/base/Log"], function (Log) {
203
179
  * Otherwise, when no position is mentioned in manifest for an altered field, the position is changed as
204
180
  * per the potential anchor
205
181
  */
206
-
207
182
  } else {
208
183
  itemsPerKey[customElement.key] = applyOverride(overwritableKeys, null, customElement);
209
184
  positioningItems[customElement.key] = customElement.position;
@@ -216,15 +191,12 @@ sap.ui.define(["sap/base/Log"], function (Log) {
216
191
  var outElements = sortedKeys.map(function (key) {
217
192
  return itemsPerKey[key];
218
193
  });
219
-
220
194
  if (endElement) {
221
195
  outElements.push(endElement);
222
196
  }
223
-
224
197
  return outElements;
225
198
  }
226
-
227
199
  _exports.insertCustomElements = insertCustomElements;
228
200
  return _exports;
229
201
  }, false);
230
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQbGFjZW1lbnQiLCJvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5IiwicG9zaXRpb25pbmdJdGVtcyIsImFuY2hvciIsInNvcnRlZCIsInZpc2l0ZWQiLCJpbnNlcnRJbmRleCIsImluZGV4T2YiLCJhbmNob3JJdGVtIiwidW5kZWZpbmVkIiwiYW5jaG9yVGV4dCIsInNwbGl0IiwibWFuaWZlc3RJdGVtIiwiT2JqZWN0Iiwia2V5cyIsIkxvZyIsIndhcm5pbmciLCJsZW5ndGgiLCJwbGFjZW1lbnQiLCJCZWZvcmUiLCJzcGxpY2UiLCJpc0FycmF5Q29uZmlnIiwiY29uZmlnIiwiYXBwbHlPdmVycmlkZSIsIm92ZXJ3cml0YWJsZUtleXMiLCJzb3VyY2VJdGVtIiwiY3VzdG9tRWxlbWVudCIsIm91dEl0ZW0iLCJvdmVyd3JpdGFibGVLZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJvdmVycmlkZUNvbmZpZyIsInN1Ykl0ZW0iLCJzdWJDb25maWciLCJBcnJheSIsImlzQXJyYXkiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsInJvb3RFbGVtZW50cyIsImN1c3RvbUVsZW1lbnRzIiwiZmlyc3RBbmNob3IiLCJrZXkiLCJyb290RWxlbWVudHNXaXRob3V0TGFzdCIsImZpbHRlciIsInJvb3RFbGVtZW50IiwicG9zaXRpb24iLCJFbmQiLCJsYXN0QW5jaG9yIiwiZW5kRWxlbWVudCIsIml0ZW1zUGVyS2V5IiwiZm9yRWFjaCIsIkFmdGVyIiwiY3VzdG9tRWxlbWVudEtleSIsInBvdGVudGlhbEFuY2hvciIsIm1lbnUiLCJtYXAiLCJzb3J0ZWRLZXlzIiwicG9zaXRpb25JdGVtS2V5Iiwib3V0RWxlbWVudHMiLCJwdXNoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb25maWd1cmFibGVPYmplY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uID0ge1xuXHRhbmNob3I/OiBzdHJpbmc7XG5cdHBsYWNlbWVudDogUGxhY2VtZW50O1xufTtcblxuZXhwb3J0IGVudW0gUGxhY2VtZW50IHtcblx0QWZ0ZXIgPSBcIkFmdGVyXCIsXG5cdEJlZm9yZSA9IFwiQmVmb3JlXCIsXG5cdEVuZCA9IFwiRW5kXCJcbn1cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZU9iamVjdEtleSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZU9iamVjdCA9IFBvc2l0aW9uYWJsZSAmIHtcblx0a2V5OiBDb25maWd1cmFibGVPYmplY3RLZXk7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21FbGVtZW50PFQgZXh0ZW5kcyBDb25maWd1cmFibGVPYmplY3Q+ID0gVCAmIHtcblx0cG9zaXRpb246IFBvc2l0aW9uO1xuXHRtZW51PzogYW55W10gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbmFibGUgPSB7XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBDb25maWd1cmFibGVSZWNvcmQ8VD4gPSBSZWNvcmQ8Q29uZmlndXJhYmxlT2JqZWN0S2V5LCBUPjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgbWV0aG9kIHRoYXQgb3JkZXIgdGhlIGtleXMgYmFzZWQgb24gYSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcG9zaXRpb25pbmdJdGVtc1xuICogQHBhcmFtIGFuY2hvclxuICogQHBhcmFtIHNvcnRlZFxuICogQHBhcmFtIHZpc2l0ZWRcbiAqIEByZXR1cm5zIFRoZSBvcmRlciBvZiB0aGUgY3VycmVudCBpdGVtXG4gKi9cbmNvbnN0IG9yZGVyUG9zaXRpb25pbmdJdGVtUmVjdXJzaXZlbHkgPSAoXG5cdHBvc2l0aW9uaW5nSXRlbXM6IFJlY29yZDxzdHJpbmcsIFJlcXVpcmVkPFBvc2l0aW9uPj4sXG5cdGFuY2hvcjogc3RyaW5nLFxuXHRzb3J0ZWQ6IHN0cmluZ1tdLFxuXHR2aXNpdGVkOiBSZWNvcmQ8c3RyaW5nLCBSZXF1aXJlZDxQb3NpdGlvbj4+XG4pOiBudW1iZXIgPT4ge1xuXHRsZXQgaW5zZXJ0SW5kZXggPSBzb3J0ZWQuaW5kZXhPZihhbmNob3IpO1xuXHRpZiAoaW5zZXJ0SW5kZXggIT09IC0xKSB7XG5cdFx0cmV0dXJuIGluc2VydEluZGV4O1xuXHR9XG5cdGNvbnN0IGFuY2hvckl0ZW06IFJlcXVpcmVkPFBvc2l0aW9uPiA9IHBvc2l0aW9uaW5nSXRlbXNbYW5jaG9yXTtcblx0aWYgKGFuY2hvckl0ZW0gPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IGFuY2hvclRleHQ6IEFycmF5PHN0cmluZz4gPSBhbmNob3Iuc3BsaXQoXCI6OlwiKSxcblx0XHRcdG1hbmlmZXN0SXRlbTogc3RyaW5nID0gT2JqZWN0LmtleXModmlzaXRlZClbMF07XG5cblx0XHRMb2cud2FybmluZyhcblx0XHRcdGBQb3NpdGlvbiBhbmNob3IgJyR7YW5jaG9yVGV4dFthbmNob3JUZXh0Lmxlbmd0aCAtIDFdfScgbm90IGZvdW5kIGZvciBpdGVtICcke21hbmlmZXN0SXRlbX0nLiBQbGVhc2UgY2hlY2sgbWFuaWZlc3Qgc2V0dGluZ3MuYFxuXHRcdCk7XG5cdFx0cmV0dXJuIHNvcnRlZC5sZW5ndGg7XG5cdFx0Ly8gdGhyb3cgbmV3IEVycm9yKGBwb3NpdGlvbiBhbmNob3Igbm90IGZvdW5kOiAke2FuY2hvcn1gKTtcblx0fVxuXG5cdHZpc2l0ZWRbYW5jaG9yXSA9IGFuY2hvckl0ZW07XG5cdGlmIChhbmNob3JJdGVtICYmICEoYW5jaG9ySXRlbS5hbmNob3IgaW4gdmlzaXRlZCkpIHtcblx0XHRpbnNlcnRJbmRleCA9IG9yZGVyUG9zaXRpb25pbmdJdGVtUmVjdXJzaXZlbHkocG9zaXRpb25pbmdJdGVtcywgYW5jaG9ySXRlbS5hbmNob3IsIHNvcnRlZCwgdmlzaXRlZCk7XG5cdFx0aWYgKGFuY2hvckl0ZW0ucGxhY2VtZW50ICE9PSBQbGFjZW1lbnQuQmVmb3JlKSB7XG5cdFx0XHQrK2luc2VydEluZGV4O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpbnNlcnRJbmRleCA9IHNvcnRlZC5sZW5ndGg7XG5cdH1cblxuXHRzb3J0ZWQuc3BsaWNlKGluc2VydEluZGV4LCAwLCBhbmNob3IpO1xuXHRyZXR1cm4gaW5zZXJ0SW5kZXg7XG59O1xuXG50eXBlIE92ZXJyaWRlVHlwZSA9IFwibWVyZ2VcIiB8IFwib3ZlcndyaXRlXCIgfCBcImlnbm9yZVwiO1xudHlwZSBBcnJheU92ZXJyaWRlVHlwZTxBcnJheVR5cGU+ID0gT3ZlcnJpZGVLZXlzPEFycmF5VHlwZT47XG5cbnR5cGUgRWxlbWVudFR5cGU8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBUW251bWJlcl0gOiBUO1xudHlwZSBPdmVycmlkZUtleXM8VD4gPSB7XG5cdFtQIGluIGtleW9mIFRdPzogT3ZlcnJpZGVUeXBlIHwgQXJyYXlPdmVycmlkZVR5cGU8RWxlbWVudFR5cGU8VFtQXT4+O1xufTtcblxuZnVuY3Rpb24gaXNBcnJheUNvbmZpZzxUPihjb25maWc6IE92ZXJyaWRlVHlwZSB8IEFycmF5T3ZlcnJpZGVUeXBlPFQ+IHwgdW5kZWZpbmVkKTogY29uZmlnIGlzIEFycmF5T3ZlcnJpZGVUeXBlPFQ+IHtcblx0cmV0dXJuIHR5cGVvZiBjb25maWcgPT09IFwib2JqZWN0XCI7XG59XG5cbmZ1bmN0aW9uIGFwcGx5T3ZlcnJpZGU8VCBleHRlbmRzIE9iamVjdD4ob3ZlcndyaXRhYmxlS2V5czogT3ZlcnJpZGVLZXlzPFQ+LCBzb3VyY2VJdGVtOiBUIHwgbnVsbCwgY3VzdG9tRWxlbWVudDogVCk6IFQge1xuXHRjb25zdCBvdXRJdGVtOiBUID0gc291cmNlSXRlbSB8fCBjdXN0b21FbGVtZW50O1xuXHRmb3IgKGNvbnN0IG92ZXJ3cml0YWJsZUtleSBpbiBvdmVyd3JpdGFibGVLZXlzKSB7XG5cdFx0aWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG92ZXJ3cml0YWJsZUtleXMsIG92ZXJ3cml0YWJsZUtleSkpIHtcblx0XHRcdGNvbnN0IG92ZXJyaWRlQ29uZmlnID0gb3ZlcndyaXRhYmxlS2V5c1tvdmVyd3JpdGFibGVLZXldO1xuXHRcdFx0aWYgKHNvdXJjZUl0ZW0gIT09IG51bGwpIHtcblx0XHRcdFx0c3dpdGNoIChvdmVycmlkZUNvbmZpZykge1xuXHRcdFx0XHRcdGNhc2UgXCJvdmVyd3JpdGVcIjpcblx0XHRcdFx0XHRcdGlmIChjdXN0b21FbGVtZW50Lmhhc093blByb3BlcnR5KG92ZXJ3cml0YWJsZUtleSkgJiYgY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0c291cmNlSXRlbVtvdmVyd3JpdGFibGVLZXldID0gY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIm1lcmdlXCI6XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNvbnN0IHN1Ykl0ZW0gPSBzb3VyY2VJdGVtW292ZXJ3cml0YWJsZUtleV0gfHwgKFtdIGFzIGFueVtdKTtcblx0XHRcdFx0XHRcdGxldCBzdWJDb25maWcgPSB7fTtcblx0XHRcdFx0XHRcdGlmIChpc0FycmF5Q29uZmlnKG92ZXJyaWRlQ29uZmlnKSkge1xuXHRcdFx0XHRcdFx0XHRzdWJDb25maWcgPSBvdmVycmlkZUNvbmZpZztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHN1Ykl0ZW0pKSB7XG5cdFx0XHRcdFx0XHRcdHNvdXJjZUl0ZW1bb3ZlcndyaXRhYmxlS2V5XSA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdFx0XHRcdFx0XHRcdHN1Ykl0ZW0sXG5cdFx0XHRcdFx0XHRcdFx0KGN1c3RvbUVsZW1lbnQgJiYgKGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50PGFueT4+KSkgfHwge30sXG5cdFx0XHRcdFx0XHRcdFx0c3ViQ29uZmlnXG5cdFx0XHRcdFx0XHRcdCkgYXMgYW55O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAob3ZlcnJpZGVDb25maWcpIHtcblx0XHRcdFx0XHRjYXNlIFwib3ZlcndyaXRlXCI6XG5cdFx0XHRcdFx0XHRpZiAoY3VzdG9tRWxlbWVudC5oYXNPd25Qcm9wZXJ0eShvdmVyd3JpdGFibGVLZXkpICYmIGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdG91dEl0ZW1bb3ZlcndyaXRhYmxlS2V5XSA9IGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJtZXJnZVwiOlxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRsZXQgc3ViQ29uZmlnID0ge307XG5cdFx0XHRcdFx0XHRpZiAoaXNBcnJheUNvbmZpZyhvdmVycmlkZUNvbmZpZykpIHtcblx0XHRcdFx0XHRcdFx0c3ViQ29uZmlnID0gb3ZlcnJpZGVDb25maWc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRvdXRJdGVtW292ZXJ3cml0YWJsZUtleV0gPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRcdFx0XHRcdFx0W10gYXMgYW55W10sXG5cdFx0XHRcdFx0XHRcdChjdXN0b21FbGVtZW50ICYmIChjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV0gYXMgUmVjb3JkPHN0cmluZywgQ3VzdG9tRWxlbWVudDxhbnk+PikpIHx8IHt9LFxuXHRcdFx0XHRcdFx0XHRzdWJDb25maWdcblx0XHRcdFx0XHRcdCkgYXMgYW55O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dEl0ZW07XG59XG5cbi8qKlxuICogSW5zZXJ0IGEgc2V0IG9mIGN1c3RvbSBlbGVtZW50cyBpbiB0aGUgcmlnaHQgcG9zaXRpb24gaW4gYW4gb3JpZ2luYWwgY29sbGVjdGlvbi5cbiAqXG4gKiBQYXJhbWV0ZXJzIGZvciBvdmVyd3JpdGFibGVLZXlzIGFuZCB0aGVpciBpbXBsaWNhdGlvbnM6XG4gKiBcIm92ZXJ3cml0ZVwiOiBUaGUgd2hvbGUgb2JqZWN0IGdldHMgb3ZlcndyaXR0ZW4gLSBpZiB0aGUgY3VzdG9tRWxlbWVudHMgaW5jbHVkZSBhIGRlZmF1bHQsIHRoaXMgd2lsbCBvdmVycnVsZSB0aGUgd2hvbGUgcm9vdEVsZW1lbnRzIGNvbmZpZ3VyYXRpb24uXG4gKiBcIm1lcmdlXCI6IFRoaXMgaXMgc2ltaWxhciB0byBjYWxsaW5nIGluc2VydEN1c3RvbUVsZW1lbnRzIGl0c2VsZi4gWW91IG11c3QgaW5jbHVkZSB0aGVcbiAqIGZ1bGwgQ3VzdG9tRWxlbWVudCBzeW50YXggd2l0aGluIHRoZSBjdXN0b21FbGVtZW50cywgaW5jbHVkaW5nIGFuY2hvcnMsIGZvciBleGFtcGxlLlxuICogXCJpZ25vcmVcIjogVGhlcmUgYXJlIG5vIGFkZGl0aW9ucyBhbmQgbm8gY29tYmluYXRpb25zLiBPbmx5IHRoZSByb290RWxlbWVudHMgb2JqZWN0IGlzIHVzZWQuXG4gKlxuICogTm90ZSAtIFByb2NlZWQgYXMgZm9sbG93cyBpbiBjYXNlIHlvdSBoYXZlIGRlZmluZWQgY3VzdG9tRWxlbWVudHMgYW5kIGRvIG5vdCB3YW50IHRvIG92ZXJ3cml0ZSB0aGVpciB2YWx1ZXMgd2l0aCBkZWZhdWx0czpcbiAqIEhhbmQgdGhlIHJvb3RFbGVtZW50cyBpbnRvIHRoZSBjcmVhdGlvbiBmdW5jdGlvbiBvZiB0aGUgY3VzdG9tRWxlbWVudC5cbiAqIERlcGVuZGluZyBvbiB0aGUgZXhpc3RlbmNlIG9mIGJvdGggcm9vdEVsZW1lbnQtY29uZmlndXJhdGlvbiBhbmQgY3VzdG9tRWxlbWVudC1jb25maWd1cmF0aW9uLFxuICogeW91IG11c3Qgc2V0IHRoZSBjdXN0b21FbGVtZW50cyBwcm9wZXJ0eSwgZm9yIHdoaWNoIHRoZSBcIm92ZXJ3cml0ZVwiLXByb3BlcnR5IGlzIHNldCwgZXhwbGljaXRseSB0byB1bmRlZmluZWQuXG4gKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSByb290RWxlbWVudHMgQSBsaXN0IG9mIFwiQ29uZmlndXJhYmxlT2JqZWN0XCIgd2hpY2ggbWVhbnMgb2JqZWN0IHRoYXQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiXG4gKiBAcGFyYW0gY3VzdG9tRWxlbWVudHMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgZXh0cmEgb2JqZWN0IHRvIGFkZCwgdGhleSBhcmUgaW5kZXhlZCBieSBhIGtleSBhbmQgaGF2ZSBhIFwicG9zaXRpb25cIiBvYmplY3RcbiAqIEBwYXJhbSBvdmVyd3JpdGFibGVLZXlzIFRoZSBsaXN0IG9mIGtleXMgZnJvbSB0aGUgb3JpZ2luYWwgb2JqZWN0IHRoYXQgY2FuIGJlIG92ZXJ3cml0dGVuIGluIGNhc2UgYSBjdXN0b20gZWxlbWVudCBoYXMgdGhlIHNhbWUgXCJrZXlcIlxuICogQHJldHVybnMgQW4gb3JkZXJlZCBhcnJheSBvZiBlbGVtZW50cyBpbmNsdWRpbmcgdGhlIGN1c3RvbSBvbmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRDdXN0b21FbGVtZW50czxUIGV4dGVuZHMgQ29uZmlndXJhYmxlT2JqZWN0Pihcblx0cm9vdEVsZW1lbnRzOiBUW10sXG5cdGN1c3RvbUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50PFQ+Pixcblx0b3ZlcndyaXRhYmxlS2V5czogT3ZlcnJpZGVLZXlzPFQ+ID0ge31cbik6IFRbXSB7XG5cdGNvbnN0IGZpcnN0QW5jaG9yID0gcm9vdEVsZW1lbnRzLmxlbmd0aCA/IHJvb3RFbGVtZW50c1swXS5rZXkgOiBudWxsO1xuXHRjb25zdCByb290RWxlbWVudHNXaXRob3V0TGFzdCA9IHJvb3RFbGVtZW50cy5maWx0ZXIoKHJvb3RFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgIT09IFBsYWNlbWVudC5FbmQ7XG5cdH0pO1xuXHRjb25zdCBsYXN0QW5jaG9yID0gcm9vdEVsZW1lbnRzLmxlbmd0aCA/IHJvb3RFbGVtZW50c1tyb290RWxlbWVudHNXaXRob3V0TGFzdC5sZW5ndGggLSAxXS5rZXkgOiBudWxsO1xuXHRsZXQgZW5kRWxlbWVudDogVCB8IHVuZGVmaW5lZDtcblx0Y29uc3QgcG9zaXRpb25pbmdJdGVtczogUmVjb3JkPHN0cmluZywgUmVxdWlyZWQ8UG9zaXRpb24+PiA9IHt9O1xuXHRjb25zdCBpdGVtc1BlcktleTogUmVjb3JkPHN0cmluZywgVD4gPSB7fTtcblx0cm9vdEVsZW1lbnRzLmZvckVhY2goKHJvb3RFbGVtZW50KSA9PiB7XG5cdFx0aWYgKHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgPT09IFBsYWNlbWVudC5FbmQgJiYgIWVuZEVsZW1lbnQpIHtcblx0XHRcdGVuZEVsZW1lbnQgPSByb290RWxlbWVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cG9zaXRpb25pbmdJdGVtc1tyb290RWxlbWVudC5rZXldID0ge1xuXHRcdFx0XHRhbmNob3I6IHJvb3RFbGVtZW50LnBvc2l0aW9uPy5hbmNob3IgfHwgcm9vdEVsZW1lbnQua2V5LFxuXHRcdFx0XHRwbGFjZW1lbnQ6IHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgfHwgUGxhY2VtZW50LkFmdGVyXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRpdGVtc1BlcktleVtyb290RWxlbWVudC5rZXldID0gcm9vdEVsZW1lbnQ7XG5cdH0pO1xuXHRPYmplY3Qua2V5cyhjdXN0b21FbGVtZW50cykuZm9yRWFjaCgoY3VzdG9tRWxlbWVudEtleSkgPT4ge1xuXHRcdGNvbnN0IGN1c3RvbUVsZW1lbnQgPSBjdXN0b21FbGVtZW50c1tjdXN0b21FbGVtZW50S2V5XTtcblx0XHRjb25zdCBhbmNob3IgPSBjdXN0b21FbGVtZW50LnBvc2l0aW9uLmFuY2hvcjtcblx0XHQvLyBJZiBubyBwbGFjZW1lbnQgZGVmaW5lZCB3ZSBhcmUgQWZ0ZXJcblx0XHRpZiAoIWN1c3RvbUVsZW1lbnQucG9zaXRpb24ucGxhY2VtZW50KSB7XG5cdFx0XHRjdXN0b21FbGVtZW50LnBvc2l0aW9uLnBsYWNlbWVudCA9IFBsYWNlbWVudC5BZnRlcjtcblx0XHR9XG5cdFx0Ly8gSWYgbm8gYW5jaG9yIHdlJ3JlIGVpdGhlciBBZnRlciB0aGUgbGFzdCBhbmNob3Igb3IgQmVmb3JlIHRoZSBmaXJzdFxuXHRcdGlmICghYW5jaG9yKSB7XG5cdFx0XHRjb25zdCBwb3RlbnRpYWxBbmNob3IgPSBjdXN0b21FbGVtZW50LnBvc2l0aW9uLnBsYWNlbWVudCA9PT0gUGxhY2VtZW50LkFmdGVyID8gbGFzdEFuY2hvciA6IGZpcnN0QW5jaG9yO1xuXHRcdFx0Y3VzdG9tRWxlbWVudC5wb3NpdGlvbi5hbmNob3IgPSBwb3RlbnRpYWxBbmNob3IgPyBwb3RlbnRpYWxBbmNob3IgOiBjdXN0b21FbGVtZW50S2V5O1xuXHRcdH1cblxuXHRcdC8vIEFkZGluZyBib3VuZC91bmJvdW5kIGFjdGlvbnMgdG8gbWVudVxuXHRcdGN1c3RvbUVsZW1lbnQubWVudSA9IGN1c3RvbUVsZW1lbnQ/Lm1lbnU/Lm1hcCgobWVudSkgPT4ge1xuXHRcdFx0cmV0dXJuIGl0ZW1zUGVyS2V5W21lbnUua2V5XSA/PyBtZW51O1xuXHRcdH0pO1xuXG5cdFx0aWYgKGl0ZW1zUGVyS2V5W2N1c3RvbUVsZW1lbnQua2V5XSkge1xuXHRcdFx0aXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldID0gYXBwbHlPdmVycmlkZShvdmVyd3JpdGFibGVLZXlzLCBpdGVtc1BlcktleVtjdXN0b21FbGVtZW50LmtleV0sIGN1c3RvbUVsZW1lbnQpO1xuXG5cdFx0XHQvL1Bvc2l0aW9uIGlzIG92ZXJ3cml0dGVuIGZvciBmaWx0ZXIgZmllbGRzIGlmIHRoZXJlIGlzIGEgY2hhbmdlIGluIG1hbmlmZXN0XG5cdFx0XHRpZiAoYW5jaG9yICYmIGN1c3RvbUVsZW1lbnQucG9zaXRpb24gJiYgb3ZlcndyaXRhYmxlS2V5cy5wb3NpdGlvbiAmJiBvdmVyd3JpdGFibGVLZXlzLnBvc2l0aW9uID09PSBcIm92ZXJ3cml0ZVwiKSB7XG5cdFx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbY3VzdG9tRWxlbWVudC5rZXldID0gaXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldLnBvc2l0aW9uIGFzIFJlcXVpcmVkPFBvc2l0aW9uPjtcblx0XHRcdH1cblx0XHRcdC8qKlxuXHRcdFx0ICogYW5jaG9yIGNoZWNrIGlzIGFkZGVkIHRvIG1ha2Ugc3VyZSBjaGFuZ2UgaW4gcHJvcGVydGllcyBpbiB0aGUgbWFuaWZlc3QgZG9lcyBub3QgYWZmZWN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgZmllbGQuXG5cdFx0XHQgKiBPdGhlcndpc2UsIHdoZW4gbm8gcG9zaXRpb24gaXMgbWVudGlvbmVkIGluIG1hbmlmZXN0IGZvciBhbiBhbHRlcmVkIGZpZWxkLCB0aGUgcG9zaXRpb24gaXMgY2hhbmdlZCBhc1xuXHRcdFx0ICogcGVyIHRoZSBwb3RlbnRpYWwgYW5jaG9yXG5cdFx0XHQgKi9cblx0XHR9IGVsc2Uge1xuXHRcdFx0aXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldID0gYXBwbHlPdmVycmlkZShvdmVyd3JpdGFibGVLZXlzLCBudWxsLCBjdXN0b21FbGVtZW50KTtcblx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbY3VzdG9tRWxlbWVudC5rZXldID0gY3VzdG9tRWxlbWVudC5wb3NpdGlvbiBhcyBSZXF1aXJlZDxQb3NpdGlvbj47XG5cdFx0fVxuXHR9KTtcblx0Y29uc3Qgc29ydGVkS2V5czogc3RyaW5nW10gPSBbXTtcblxuXHRPYmplY3Qua2V5cyhwb3NpdGlvbmluZ0l0ZW1zKS5mb3JFYWNoKChwb3NpdGlvbkl0ZW1LZXkpID0+IHtcblx0XHRvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5KHBvc2l0aW9uaW5nSXRlbXMsIHBvc2l0aW9uSXRlbUtleSwgc29ydGVkS2V5cywge30pO1xuXHR9KTtcblxuXHRjb25zdCBvdXRFbGVtZW50cyA9IHNvcnRlZEtleXMubWFwKChrZXkpID0+IGl0ZW1zUGVyS2V5W2tleV0pO1xuXHRpZiAoZW5kRWxlbWVudCkge1xuXHRcdG91dEVsZW1lbnRzLnB1c2goZW5kRWxlbWVudCk7XG5cdH1cblx0cmV0dXJuIG91dEVsZW1lbnRzO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7TUFPWUEsUzs7YUFBQUEsUztJQUFBQSxTO0lBQUFBLFM7SUFBQUEsUztLQUFBQSxTLEtBQUFBLFM7Ozs7RUFxQlo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsSUFBTUMsK0JBQStCLEdBQUcsVUFDdkNDLGdCQUR1QyxFQUV2Q0MsTUFGdUMsRUFHdkNDLE1BSHVDLEVBSXZDQyxPQUp1QyxFQUszQjtJQUNaLElBQUlDLFdBQVcsR0FBR0YsTUFBTSxDQUFDRyxPQUFQLENBQWVKLE1BQWYsQ0FBbEI7O0lBQ0EsSUFBSUcsV0FBVyxLQUFLLENBQUMsQ0FBckIsRUFBd0I7TUFDdkIsT0FBT0EsV0FBUDtJQUNBOztJQUNELElBQU1FLFVBQThCLEdBQUdOLGdCQUFnQixDQUFDQyxNQUFELENBQXZEOztJQUNBLElBQUlLLFVBQVUsS0FBS0MsU0FBbkIsRUFBOEI7TUFDN0IsSUFBTUMsVUFBeUIsR0FBR1AsTUFBTSxDQUFDUSxLQUFQLENBQWEsSUFBYixDQUFsQztNQUFBLElBQ0NDLFlBQW9CLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZVCxPQUFaLEVBQXFCLENBQXJCLENBRHhCO01BR0FVLEdBQUcsQ0FBQ0MsT0FBSiw0QkFDcUJOLFVBQVUsQ0FBQ0EsVUFBVSxDQUFDTyxNQUFYLEdBQW9CLENBQXJCLENBRC9CLG1DQUMrRUwsWUFEL0U7TUFHQSxPQUFPUixNQUFNLENBQUNhLE1BQWQsQ0FQNkIsQ0FRN0I7SUFD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
202
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQbGFjZW1lbnQiLCJvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5IiwicG9zaXRpb25pbmdJdGVtcyIsImFuY2hvciIsInNvcnRlZCIsInZpc2l0ZWQiLCJpbnNlcnRJbmRleCIsImluZGV4T2YiLCJhbmNob3JJdGVtIiwidW5kZWZpbmVkIiwiYW5jaG9yVGV4dCIsInNwbGl0IiwibWFuaWZlc3RJdGVtIiwiT2JqZWN0Iiwia2V5cyIsIkxvZyIsIndhcm5pbmciLCJsZW5ndGgiLCJwbGFjZW1lbnQiLCJCZWZvcmUiLCJzcGxpY2UiLCJPdmVycmlkZVR5cGUiLCJpc0FycmF5Q29uZmlnIiwiY29uZmlnIiwiYXBwbHlPdmVycmlkZSIsIm92ZXJ3cml0YWJsZUtleXMiLCJzb3VyY2VJdGVtIiwiY3VzdG9tRWxlbWVudCIsIm91dEl0ZW0iLCJvdmVyd3JpdGFibGVLZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJvdmVycmlkZUNvbmZpZyIsInN1Ykl0ZW0iLCJzdWJDb25maWciLCJBcnJheSIsImlzQXJyYXkiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsInJvb3RFbGVtZW50cyIsImN1c3RvbUVsZW1lbnRzIiwiZmlyc3RBbmNob3IiLCJrZXkiLCJyb290RWxlbWVudHNXaXRob3V0TGFzdCIsImZpbHRlciIsInJvb3RFbGVtZW50IiwicG9zaXRpb24iLCJFbmQiLCJsYXN0QW5jaG9yIiwiZW5kRWxlbWVudCIsIml0ZW1zUGVyS2V5IiwiZm9yRWFjaCIsIkFmdGVyIiwiY3VzdG9tRWxlbWVudEtleSIsInBvdGVudGlhbEFuY2hvciIsIm1lbnUiLCJtYXAiLCJzb3J0ZWRLZXlzIiwicG9zaXRpb25JdGVtS2V5Iiwib3V0RWxlbWVudHMiLCJwdXNoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb25maWd1cmFibGVPYmplY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uID0ge1xuXHRhbmNob3I/OiBzdHJpbmc7XG5cdHBsYWNlbWVudDogUGxhY2VtZW50O1xufTtcblxuZXhwb3J0IGVudW0gUGxhY2VtZW50IHtcblx0QWZ0ZXIgPSBcIkFmdGVyXCIsXG5cdEJlZm9yZSA9IFwiQmVmb3JlXCIsXG5cdEVuZCA9IFwiRW5kXCJcbn1cbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZU9iamVjdEtleSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIENvbmZpZ3VyYWJsZU9iamVjdCA9IFBvc2l0aW9uYWJsZSAmIHtcblx0a2V5OiBDb25maWd1cmFibGVPYmplY3RLZXk7XG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21FbGVtZW50PFQgZXh0ZW5kcyBDb25maWd1cmFibGVPYmplY3Q+ID0gVCAmIHtcblx0cG9zaXRpb246IFBvc2l0aW9uO1xuXHRtZW51PzogYW55W10gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbmFibGUgPSB7XG5cdHBvc2l0aW9uPzogUG9zaXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBDb25maWd1cmFibGVSZWNvcmQ8VD4gPSBSZWNvcmQ8Q29uZmlndXJhYmxlT2JqZWN0S2V5LCBUPjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgbWV0aG9kIHRoYXQgb3JkZXIgdGhlIGtleXMgYmFzZWQgb24gYSBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcG9zaXRpb25pbmdJdGVtc1xuICogQHBhcmFtIGFuY2hvclxuICogQHBhcmFtIHNvcnRlZFxuICogQHBhcmFtIHZpc2l0ZWRcbiAqIEByZXR1cm5zIFRoZSBvcmRlciBvZiB0aGUgY3VycmVudCBpdGVtXG4gKi9cbmNvbnN0IG9yZGVyUG9zaXRpb25pbmdJdGVtUmVjdXJzaXZlbHkgPSAoXG5cdHBvc2l0aW9uaW5nSXRlbXM6IFJlY29yZDxzdHJpbmcsIFJlcXVpcmVkPFBvc2l0aW9uPj4sXG5cdGFuY2hvcjogc3RyaW5nLFxuXHRzb3J0ZWQ6IHN0cmluZ1tdLFxuXHR2aXNpdGVkOiBSZWNvcmQ8c3RyaW5nLCBSZXF1aXJlZDxQb3NpdGlvbj4+XG4pOiBudW1iZXIgPT4ge1xuXHRsZXQgaW5zZXJ0SW5kZXggPSBzb3J0ZWQuaW5kZXhPZihhbmNob3IpO1xuXHRpZiAoaW5zZXJ0SW5kZXggIT09IC0xKSB7XG5cdFx0cmV0dXJuIGluc2VydEluZGV4O1xuXHR9XG5cdGNvbnN0IGFuY2hvckl0ZW06IFJlcXVpcmVkPFBvc2l0aW9uPiA9IHBvc2l0aW9uaW5nSXRlbXNbYW5jaG9yXTtcblx0aWYgKGFuY2hvckl0ZW0gPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IGFuY2hvclRleHQ6IEFycmF5PHN0cmluZz4gPSBhbmNob3Iuc3BsaXQoXCI6OlwiKSxcblx0XHRcdG1hbmlmZXN0SXRlbTogc3RyaW5nID0gT2JqZWN0LmtleXModmlzaXRlZClbMF07XG5cblx0XHRMb2cud2FybmluZyhcblx0XHRcdGBQb3NpdGlvbiBhbmNob3IgJyR7YW5jaG9yVGV4dFthbmNob3JUZXh0Lmxlbmd0aCAtIDFdfScgbm90IGZvdW5kIGZvciBpdGVtICcke21hbmlmZXN0SXRlbX0nLiBQbGVhc2UgY2hlY2sgbWFuaWZlc3Qgc2V0dGluZ3MuYFxuXHRcdCk7XG5cdFx0cmV0dXJuIHNvcnRlZC5sZW5ndGg7XG5cdFx0Ly8gdGhyb3cgbmV3IEVycm9yKGBwb3NpdGlvbiBhbmNob3Igbm90IGZvdW5kOiAke2FuY2hvcn1gKTtcblx0fVxuXG5cdHZpc2l0ZWRbYW5jaG9yXSA9IGFuY2hvckl0ZW07XG5cdGlmIChhbmNob3JJdGVtICYmICEoYW5jaG9ySXRlbS5hbmNob3IgaW4gdmlzaXRlZCkpIHtcblx0XHRpbnNlcnRJbmRleCA9IG9yZGVyUG9zaXRpb25pbmdJdGVtUmVjdXJzaXZlbHkocG9zaXRpb25pbmdJdGVtcywgYW5jaG9ySXRlbS5hbmNob3IsIHNvcnRlZCwgdmlzaXRlZCk7XG5cdFx0aWYgKGFuY2hvckl0ZW0ucGxhY2VtZW50ICE9PSBQbGFjZW1lbnQuQmVmb3JlKSB7XG5cdFx0XHQrK2luc2VydEluZGV4O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpbnNlcnRJbmRleCA9IHNvcnRlZC5sZW5ndGg7XG5cdH1cblxuXHRzb3J0ZWQuc3BsaWNlKGluc2VydEluZGV4LCAwLCBhbmNob3IpO1xuXHRyZXR1cm4gaW5zZXJ0SW5kZXg7XG59O1xuXG5leHBvcnQgZW51bSBPdmVycmlkZVR5cGUge1xuXHRtZXJnZSA9IFwibWVyZ2VcIixcblx0b3ZlcndyaXRlID0gXCJvdmVyd3JpdGVcIixcblx0aWdub3JlID0gXCJpZ25vcmVcIlxufVxudHlwZSBBcnJheU92ZXJyaWRlVHlwZTxBcnJheVR5cGU+ID0gT3ZlcnJpZGVLZXlzPEFycmF5VHlwZT47XG5cbnR5cGUgRWxlbWVudFR5cGU8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBUW251bWJlcl0gOiBUO1xudHlwZSBPdmVycmlkZUtleXM8VD4gPSB7XG5cdFtQIGluIGtleW9mIFRdPzogT3ZlcnJpZGVUeXBlIHwgQXJyYXlPdmVycmlkZVR5cGU8RWxlbWVudFR5cGU8VFtQXT4+O1xufTtcblxuZnVuY3Rpb24gaXNBcnJheUNvbmZpZzxUPihjb25maWc6IE92ZXJyaWRlVHlwZSB8IEFycmF5T3ZlcnJpZGVUeXBlPFQ+IHwgdW5kZWZpbmVkKTogY29uZmlnIGlzIEFycmF5T3ZlcnJpZGVUeXBlPFQ+IHtcblx0cmV0dXJuIHR5cGVvZiBjb25maWcgPT09IFwib2JqZWN0XCI7XG59XG5cbmZ1bmN0aW9uIGFwcGx5T3ZlcnJpZGU8VCBleHRlbmRzIE9iamVjdD4ob3ZlcndyaXRhYmxlS2V5czogT3ZlcnJpZGVLZXlzPFQ+LCBzb3VyY2VJdGVtOiBUIHwgbnVsbCwgY3VzdG9tRWxlbWVudDogVCk6IFQge1xuXHRjb25zdCBvdXRJdGVtOiBUID0gc291cmNlSXRlbSB8fCBjdXN0b21FbGVtZW50O1xuXHRmb3IgKGNvbnN0IG92ZXJ3cml0YWJsZUtleSBpbiBvdmVyd3JpdGFibGVLZXlzKSB7XG5cdFx0aWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG92ZXJ3cml0YWJsZUtleXMsIG92ZXJ3cml0YWJsZUtleSkpIHtcblx0XHRcdGNvbnN0IG92ZXJyaWRlQ29uZmlnID0gb3ZlcndyaXRhYmxlS2V5c1tvdmVyd3JpdGFibGVLZXldO1xuXHRcdFx0aWYgKHNvdXJjZUl0ZW0gIT09IG51bGwpIHtcblx0XHRcdFx0c3dpdGNoIChvdmVycmlkZUNvbmZpZykge1xuXHRcdFx0XHRcdGNhc2UgXCJvdmVyd3JpdGVcIjpcblx0XHRcdFx0XHRcdGlmIChjdXN0b21FbGVtZW50Lmhhc093blByb3BlcnR5KG92ZXJ3cml0YWJsZUtleSkgJiYgY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0c291cmNlSXRlbVtvdmVyd3JpdGFibGVLZXldID0gY3VzdG9tRWxlbWVudFtvdmVyd3JpdGFibGVLZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIm1lcmdlXCI6XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNvbnN0IHN1Ykl0ZW0gPSBzb3VyY2VJdGVtW292ZXJ3cml0YWJsZUtleV0gfHwgKFtdIGFzIGFueVtdKTtcblx0XHRcdFx0XHRcdGxldCBzdWJDb25maWcgPSB7fTtcblx0XHRcdFx0XHRcdGlmIChpc0FycmF5Q29uZmlnKG92ZXJyaWRlQ29uZmlnKSkge1xuXHRcdFx0XHRcdFx0XHRzdWJDb25maWcgPSBvdmVycmlkZUNvbmZpZztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHN1Ykl0ZW0pKSB7XG5cdFx0XHRcdFx0XHRcdHNvdXJjZUl0ZW1bb3ZlcndyaXRhYmxlS2V5XSA9IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdFx0XHRcdFx0XHRcdHN1Ykl0ZW0sXG5cdFx0XHRcdFx0XHRcdFx0KGN1c3RvbUVsZW1lbnQgJiYgKGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50PGFueT4+KSkgfHwge30sXG5cdFx0XHRcdFx0XHRcdFx0c3ViQ29uZmlnXG5cdFx0XHRcdFx0XHRcdCkgYXMgYW55O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAob3ZlcnJpZGVDb25maWcpIHtcblx0XHRcdFx0XHRjYXNlIFwib3ZlcndyaXRlXCI6XG5cdFx0XHRcdFx0XHRpZiAoY3VzdG9tRWxlbWVudC5oYXNPd25Qcm9wZXJ0eShvdmVyd3JpdGFibGVLZXkpICYmIGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdG91dEl0ZW1bb3ZlcndyaXRhYmxlS2V5XSA9IGN1c3RvbUVsZW1lbnRbb3ZlcndyaXRhYmxlS2V5XTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJtZXJnZVwiOlxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRsZXQgc3ViQ29uZmlnID0ge307XG5cdFx0XHRcdFx0XHRpZiAoaXNBcnJheUNvbmZpZyhvdmVycmlkZUNvbmZpZykpIHtcblx0XHRcdFx0XHRcdFx0c3ViQ29uZmlnID0gb3ZlcnJpZGVDb25maWc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRvdXRJdGVtW292ZXJ3cml0YWJsZUtleV0gPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRcdFx0XHRcdFx0W10gYXMgYW55W10sXG5cdFx0XHRcdFx0XHRcdChjdXN0b21FbGVtZW50ICYmIChjdXN0b21FbGVtZW50W292ZXJ3cml0YWJsZUtleV0gYXMgUmVjb3JkPHN0cmluZywgQ3VzdG9tRWxlbWVudDxhbnk+PikpIHx8IHt9LFxuXHRcdFx0XHRcdFx0XHRzdWJDb25maWdcblx0XHRcdFx0XHRcdCkgYXMgYW55O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIG91dEl0ZW07XG59XG5cbi8qKlxuICogSW5zZXJ0IGEgc2V0IG9mIGN1c3RvbSBlbGVtZW50cyBpbiB0aGUgcmlnaHQgcG9zaXRpb24gaW4gYW4gb3JpZ2luYWwgY29sbGVjdGlvbi5cbiAqXG4gKiBQYXJhbWV0ZXJzIGZvciBvdmVyd3JpdGFibGVLZXlzIGFuZCB0aGVpciBpbXBsaWNhdGlvbnM6XG4gKiBcIm92ZXJ3cml0ZVwiOiBUaGUgd2hvbGUgb2JqZWN0IGdldHMgb3ZlcndyaXR0ZW4gLSBpZiB0aGUgY3VzdG9tRWxlbWVudHMgaW5jbHVkZSBhIGRlZmF1bHQsIHRoaXMgd2lsbCBvdmVycnVsZSB0aGUgd2hvbGUgcm9vdEVsZW1lbnRzIGNvbmZpZ3VyYXRpb24uXG4gKiBcIm1lcmdlXCI6IFRoaXMgaXMgc2ltaWxhciB0byBjYWxsaW5nIGluc2VydEN1c3RvbUVsZW1lbnRzIGl0c2VsZi4gWW91IG11c3QgaW5jbHVkZSB0aGVcbiAqIGZ1bGwgQ3VzdG9tRWxlbWVudCBzeW50YXggd2l0aGluIHRoZSBjdXN0b21FbGVtZW50cywgaW5jbHVkaW5nIGFuY2hvcnMsIGZvciBleGFtcGxlLlxuICogXCJpZ25vcmVcIjogVGhlcmUgYXJlIG5vIGFkZGl0aW9ucyBhbmQgbm8gY29tYmluYXRpb25zLiBPbmx5IHRoZSByb290RWxlbWVudHMgb2JqZWN0IGlzIHVzZWQuXG4gKlxuICogTm90ZSAtIFByb2NlZWQgYXMgZm9sbG93cyBpbiBjYXNlIHlvdSBoYXZlIGRlZmluZWQgY3VzdG9tRWxlbWVudHMgYW5kIGRvIG5vdCB3YW50IHRvIG92ZXJ3cml0ZSB0aGVpciB2YWx1ZXMgd2l0aCBkZWZhdWx0czpcbiAqIEhhbmQgdGhlIHJvb3RFbGVtZW50cyBpbnRvIHRoZSBjcmVhdGlvbiBmdW5jdGlvbiBvZiB0aGUgY3VzdG9tRWxlbWVudC5cbiAqIERlcGVuZGluZyBvbiB0aGUgZXhpc3RlbmNlIG9mIGJvdGggcm9vdEVsZW1lbnQtY29uZmlndXJhdGlvbiBhbmQgY3VzdG9tRWxlbWVudC1jb25maWd1cmF0aW9uLFxuICogeW91IG11c3Qgc2V0IHRoZSBjdXN0b21FbGVtZW50cyBwcm9wZXJ0eSwgZm9yIHdoaWNoIHRoZSBcIm92ZXJ3cml0ZVwiLXByb3BlcnR5IGlzIHNldCwgZXhwbGljaXRseSB0byB1bmRlZmluZWQuXG4gKlxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSByb290RWxlbWVudHMgQSBsaXN0IG9mIFwiQ29uZmlndXJhYmxlT2JqZWN0XCIgd2hpY2ggbWVhbnMgb2JqZWN0IHRoYXQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiXG4gKiBAcGFyYW0gY3VzdG9tRWxlbWVudHMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgZXh0cmEgb2JqZWN0IHRvIGFkZCwgdGhleSBhcmUgaW5kZXhlZCBieSBhIGtleSBhbmQgaGF2ZSBhIFwicG9zaXRpb25cIiBvYmplY3RcbiAqIEBwYXJhbSBvdmVyd3JpdGFibGVLZXlzIFRoZSBsaXN0IG9mIGtleXMgZnJvbSB0aGUgb3JpZ2luYWwgb2JqZWN0IHRoYXQgY2FuIGJlIG92ZXJ3cml0dGVuIGluIGNhc2UgYSBjdXN0b20gZWxlbWVudCBoYXMgdGhlIHNhbWUgXCJrZXlcIlxuICogQHJldHVybnMgQW4gb3JkZXJlZCBhcnJheSBvZiBlbGVtZW50cyBpbmNsdWRpbmcgdGhlIGN1c3RvbSBvbmVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRDdXN0b21FbGVtZW50czxUIGV4dGVuZHMgQ29uZmlndXJhYmxlT2JqZWN0Pihcblx0cm9vdEVsZW1lbnRzOiBUW10sXG5cdGN1c3RvbUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50PFQ+Pixcblx0b3ZlcndyaXRhYmxlS2V5czogT3ZlcnJpZGVLZXlzPFQ+ID0ge31cbik6IFRbXSB7XG5cdGNvbnN0IGZpcnN0QW5jaG9yID0gcm9vdEVsZW1lbnRzLmxlbmd0aCA/IHJvb3RFbGVtZW50c1swXS5rZXkgOiBudWxsO1xuXHRjb25zdCByb290RWxlbWVudHNXaXRob3V0TGFzdCA9IHJvb3RFbGVtZW50cy5maWx0ZXIoKHJvb3RFbGVtZW50KSA9PiB7XG5cdFx0cmV0dXJuIHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgIT09IFBsYWNlbWVudC5FbmQ7XG5cdH0pO1xuXHRjb25zdCBsYXN0QW5jaG9yID0gcm9vdEVsZW1lbnRzLmxlbmd0aCA/IHJvb3RFbGVtZW50c1tyb290RWxlbWVudHNXaXRob3V0TGFzdC5sZW5ndGggLSAxXS5rZXkgOiBudWxsO1xuXHRsZXQgZW5kRWxlbWVudDogVCB8IHVuZGVmaW5lZDtcblx0Y29uc3QgcG9zaXRpb25pbmdJdGVtczogUmVjb3JkPHN0cmluZywgUmVxdWlyZWQ8UG9zaXRpb24+PiA9IHt9O1xuXHRjb25zdCBpdGVtc1BlcktleTogUmVjb3JkPHN0cmluZywgVD4gPSB7fTtcblx0cm9vdEVsZW1lbnRzLmZvckVhY2goKHJvb3RFbGVtZW50KSA9PiB7XG5cdFx0aWYgKHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgPT09IFBsYWNlbWVudC5FbmQgJiYgIWVuZEVsZW1lbnQpIHtcblx0XHRcdGVuZEVsZW1lbnQgPSByb290RWxlbWVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cG9zaXRpb25pbmdJdGVtc1tyb290RWxlbWVudC5rZXldID0ge1xuXHRcdFx0XHRhbmNob3I6IHJvb3RFbGVtZW50LnBvc2l0aW9uPy5hbmNob3IgfHwgcm9vdEVsZW1lbnQua2V5LFxuXHRcdFx0XHRwbGFjZW1lbnQ6IHJvb3RFbGVtZW50LnBvc2l0aW9uPy5wbGFjZW1lbnQgfHwgUGxhY2VtZW50LkFmdGVyXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRpdGVtc1BlcktleVtyb290RWxlbWVudC5rZXldID0gcm9vdEVsZW1lbnQ7XG5cdH0pO1xuXHRPYmplY3Qua2V5cyhjdXN0b21FbGVtZW50cykuZm9yRWFjaCgoY3VzdG9tRWxlbWVudEtleSkgPT4ge1xuXHRcdGNvbnN0IGN1c3RvbUVsZW1lbnQgPSBjdXN0b21FbGVtZW50c1tjdXN0b21FbGVtZW50S2V5XTtcblx0XHRjb25zdCBhbmNob3IgPSBjdXN0b21FbGVtZW50LnBvc2l0aW9uLmFuY2hvcjtcblx0XHQvLyBJZiBubyBwbGFjZW1lbnQgZGVmaW5lZCB3ZSBhcmUgQWZ0ZXJcblx0XHRpZiAoIWN1c3RvbUVsZW1lbnQucG9zaXRpb24ucGxhY2VtZW50KSB7XG5cdFx0XHRjdXN0b21FbGVtZW50LnBvc2l0aW9uLnBsYWNlbWVudCA9IFBsYWNlbWVudC5BZnRlcjtcblx0XHR9XG5cdFx0Ly8gSWYgbm8gYW5jaG9yIHdlJ3JlIGVpdGhlciBBZnRlciB0aGUgbGFzdCBhbmNob3Igb3IgQmVmb3JlIHRoZSBmaXJzdFxuXHRcdGlmICghYW5jaG9yKSB7XG5cdFx0XHRjb25zdCBwb3RlbnRpYWxBbmNob3IgPSBjdXN0b21FbGVtZW50LnBvc2l0aW9uLnBsYWNlbWVudCA9PT0gUGxhY2VtZW50LkFmdGVyID8gbGFzdEFuY2hvciA6IGZpcnN0QW5jaG9yO1xuXHRcdFx0Y3VzdG9tRWxlbWVudC5wb3NpdGlvbi5hbmNob3IgPSBwb3RlbnRpYWxBbmNob3IgPyBwb3RlbnRpYWxBbmNob3IgOiBjdXN0b21FbGVtZW50S2V5O1xuXHRcdH1cblxuXHRcdC8vIEFkZGluZyBib3VuZC91bmJvdW5kIGFjdGlvbnMgdG8gbWVudVxuXHRcdGN1c3RvbUVsZW1lbnQubWVudSA9IGN1c3RvbUVsZW1lbnQ/Lm1lbnU/Lm1hcCgobWVudSkgPT4ge1xuXHRcdFx0cmV0dXJuIGl0ZW1zUGVyS2V5W21lbnUua2V5XSA/PyBtZW51O1xuXHRcdH0pO1xuXG5cdFx0aWYgKGl0ZW1zUGVyS2V5W2N1c3RvbUVsZW1lbnQua2V5XSkge1xuXHRcdFx0aXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldID0gYXBwbHlPdmVycmlkZShvdmVyd3JpdGFibGVLZXlzLCBpdGVtc1BlcktleVtjdXN0b21FbGVtZW50LmtleV0sIGN1c3RvbUVsZW1lbnQpO1xuXG5cdFx0XHQvL1Bvc2l0aW9uIGlzIG92ZXJ3cml0dGVuIGZvciBmaWx0ZXIgZmllbGRzIGlmIHRoZXJlIGlzIGEgY2hhbmdlIGluIG1hbmlmZXN0XG5cdFx0XHRpZiAoYW5jaG9yICYmIGN1c3RvbUVsZW1lbnQucG9zaXRpb24gJiYgb3ZlcndyaXRhYmxlS2V5cy5wb3NpdGlvbiAmJiBvdmVyd3JpdGFibGVLZXlzLnBvc2l0aW9uID09PSBcIm92ZXJ3cml0ZVwiKSB7XG5cdFx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbY3VzdG9tRWxlbWVudC5rZXldID0gaXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldLnBvc2l0aW9uIGFzIFJlcXVpcmVkPFBvc2l0aW9uPjtcblx0XHRcdH1cblx0XHRcdC8qKlxuXHRcdFx0ICogYW5jaG9yIGNoZWNrIGlzIGFkZGVkIHRvIG1ha2Ugc3VyZSBjaGFuZ2UgaW4gcHJvcGVydGllcyBpbiB0aGUgbWFuaWZlc3QgZG9lcyBub3QgYWZmZWN0IHRoZSBwb3NpdGlvbiBvZiB0aGUgZmllbGQuXG5cdFx0XHQgKiBPdGhlcndpc2UsIHdoZW4gbm8gcG9zaXRpb24gaXMgbWVudGlvbmVkIGluIG1hbmlmZXN0IGZvciBhbiBhbHRlcmVkIGZpZWxkLCB0aGUgcG9zaXRpb24gaXMgY2hhbmdlZCBhc1xuXHRcdFx0ICogcGVyIHRoZSBwb3RlbnRpYWwgYW5jaG9yXG5cdFx0XHQgKi9cblx0XHR9IGVsc2Uge1xuXHRcdFx0aXRlbXNQZXJLZXlbY3VzdG9tRWxlbWVudC5rZXldID0gYXBwbHlPdmVycmlkZShvdmVyd3JpdGFibGVLZXlzLCBudWxsLCBjdXN0b21FbGVtZW50KTtcblx0XHRcdHBvc2l0aW9uaW5nSXRlbXNbY3VzdG9tRWxlbWVudC5rZXldID0gY3VzdG9tRWxlbWVudC5wb3NpdGlvbiBhcyBSZXF1aXJlZDxQb3NpdGlvbj47XG5cdFx0fVxuXHR9KTtcblx0Y29uc3Qgc29ydGVkS2V5czogc3RyaW5nW10gPSBbXTtcblxuXHRPYmplY3Qua2V5cyhwb3NpdGlvbmluZ0l0ZW1zKS5mb3JFYWNoKChwb3NpdGlvbkl0ZW1LZXkpID0+IHtcblx0XHRvcmRlclBvc2l0aW9uaW5nSXRlbVJlY3Vyc2l2ZWx5KHBvc2l0aW9uaW5nSXRlbXMsIHBvc2l0aW9uSXRlbUtleSwgc29ydGVkS2V5cywge30pO1xuXHR9KTtcblxuXHRjb25zdCBvdXRFbGVtZW50cyA9IHNvcnRlZEtleXMubWFwKChrZXkpID0+IGl0ZW1zUGVyS2V5W2tleV0pO1xuXHRpZiAoZW5kRWxlbWVudCkge1xuXHRcdG91dEVsZW1lbnRzLnB1c2goZW5kRWxlbWVudCk7XG5cdH1cblx0cmV0dXJuIG91dEVsZW1lbnRzO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7OztNQU9ZQSxTQUFTO0VBQUEsV0FBVEEsU0FBUztJQUFUQSxTQUFTO0lBQVRBLFNBQVM7SUFBVEEsU0FBUztFQUFBLEdBQVRBLFNBQVMsS0FBVEEsU0FBUztFQUFBO0VBcUJyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxJQUFNQywrQkFBK0IsR0FBRyxVQUN2Q0MsZ0JBQW9ELEVBQ3BEQyxNQUFjLEVBQ2RDLE1BQWdCLEVBQ2hCQyxPQUEyQyxFQUMvQjtJQUNaLElBQUlDLFdBQVcsR0FBR0YsTUFBTSxDQUFDRyxPQUFPLENBQUNKLE1BQU0sQ0FBQztJQUN4QyxJQUFJRyxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUU7TUFDdkIsT0FBT0EsV0FBVztJQUNuQjtJQUNBLElBQU1FLFVBQThCLEdBQUdOLGdCQUFnQixDQUFDQyxNQUFNLENBQUM7SUFDL0QsSUFBSUssVUFBVSxLQUFLQyxTQUFTLEVBQUU7TUFDN0IsSUFBTUMsVUFBeUIsR0FBR1AsTUFBTSxDQUFDUSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ25EQyxZQUFvQixHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ1QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BRS9DVSxHQUFHLENBQUNDLE9BQU8sNEJBQ1VOLFVBQVUsQ0FBQ0EsVUFBVSxDQUFD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
@@ -71,7 +71,11 @@ const orderPositioningItemRecursively = (
71
71
  return insertIndex;
72
72
  };
73
73
 
74
- type OverrideType = "merge" | "overwrite" | "ignore";
74
+ export enum OverrideType {
75
+ merge = "merge",
76
+ overwrite = "overwrite",
77
+ ignore = "ignore"
78
+ }
75
79
  type ArrayOverrideType<ArrayType> = OverrideKeys<ArrayType>;
76
80
 
77
81
  type ElementType<T> = T extends any[] ? T[number] : T;