@sapui5/sap.fe.core 1.102.3 → 1.105.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/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +120 -0
  4. package/src/sap/fe/core/ActionRuntime.ts +108 -0
  5. package/src/sap/fe/core/AppComponent.js +81 -35
  6. package/src/sap/fe/core/AppComponent.ts +68 -44
  7. package/src/sap/fe/core/AppStateHandler.js +82 -70
  8. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  9. package/src/sap/fe/core/BaseController.js +12 -10
  10. package/src/sap/fe/core/BaseController.ts +15 -13
  11. package/src/sap/fe/core/CommonUtils.js +291 -218
  12. package/src/sap/fe/core/CommonUtils.ts +315 -251
  13. package/src/sap/fe/core/ExtensionAPI.js +25 -28
  14. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  15. package/src/sap/fe/core/PageController.js +5 -5
  16. package/src/sap/fe/core/PageController.ts +4 -5
  17. package/src/sap/fe/core/TemplateComponent.js +21 -10
  18. package/src/sap/fe/core/TemplateComponent.ts +9 -6
  19. package/src/sap/fe/core/TemplateModel.js +2 -2
  20. package/src/sap/fe/core/TemplateModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
  22. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +8 -2
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +197 -43
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +164 -24
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -230
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +275 -128
  29. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  30. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  31. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  32. package/src/sap/fe/core/controllerextensions/EditFlow.js +761 -700
  33. package/src/sap/fe/core/controllerextensions/EditFlow.ts +478 -514
  34. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +10 -10
  35. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  36. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +104 -75
  37. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -79
  38. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +68 -68
  39. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  40. package/src/sap/fe/core/controllerextensions/InternalRouting.js +162 -102
  41. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +177 -121
  42. package/src/sap/fe/core/controllerextensions/KPIManagement.js +67 -69
  43. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  44. package/src/sap/fe/core/controllerextensions/MassEdit.js +10 -10
  45. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  46. package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
  47. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  48. package/src/sap/fe/core/controllerextensions/PageReady.js +98 -26
  49. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  50. package/src/sap/fe/core/controllerextensions/Paginator.js +31 -32
  51. package/src/sap/fe/core/controllerextensions/Paginator.ts +33 -34
  52. package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -7
  53. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  54. package/src/sap/fe/core/controllerextensions/Routing.js +11 -12
  55. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  56. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  57. package/src/sap/fe/core/controllerextensions/Share.js +171 -140
  58. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  59. package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
  60. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  61. package/src/sap/fe/core/controllerextensions/ViewState.js +201 -132
  62. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  63. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  64. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  65. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +13 -12
  66. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  67. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +13 -12
  68. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +15 -15
  69. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -18
  70. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +60 -28
  71. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +29 -21
  72. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1424 -940
  73. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +799 -836
  74. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +410 -377
  75. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +275 -358
  76. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
  77. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
  78. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +752 -579
  79. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +631 -599
  80. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +92 -74
  81. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +49 -52
  82. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -41
  83. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +110 -84
  84. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +69 -81
  85. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +64 -73
  86. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +18 -2
  87. package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
  88. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +25 -24
  89. package/src/sap/fe/core/controls/Any.js +9 -5
  90. package/src/sap/fe/core/controls/Any.ts +10 -4
  91. package/src/sap/fe/core/controls/CommandExecution.js +12 -26
  92. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  93. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -3
  94. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  95. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +26 -26
  96. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  97. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -3
  98. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  99. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  100. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  101. package/src/sap/fe/core/controls/FieldWrapper.js +3 -3
  102. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  103. package/src/sap/fe/core/controls/FileWrapper.js +9 -4
  104. package/src/sap/fe/core/controls/FileWrapper.ts +16 -12
  105. package/src/sap/fe/core/controls/FilterBar.js +7 -3
  106. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  107. package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
  108. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  109. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  110. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  111. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
  112. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +44 -19
  113. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
  114. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +17 -13
  115. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  116. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +4 -4
  117. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  118. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  119. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  120. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  121. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  122. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  123. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  124. package/src/sap/fe/core/converters/ConverterContext.js +48 -34
  125. package/src/sap/fe/core/converters/ConverterContext.ts +81 -67
  126. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  127. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -15
  128. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  129. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  130. package/src/sap/fe/core/converters/MetaModelConverter.js +74 -40
  131. package/src/sap/fe/core/converters/MetaModelConverter.ts +176 -140
  132. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  133. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  134. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  135. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  136. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1956 -1494
  137. package/src/sap/fe/core/converters/controls/Common/Action.js +78 -51
  138. package/src/sap/fe/core/converters/controls/Common/Action.ts +87 -52
  139. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -16
  140. package/src/sap/fe/core/converters/controls/Common/Chart.ts +42 -43
  141. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  142. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  143. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +65 -29
  144. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +93 -62
  145. package/src/sap/fe/core/converters/controls/Common/Form.js +31 -31
  146. package/src/sap/fe/core/converters/controls/Common/Form.ts +46 -57
  147. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  148. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  149. package/src/sap/fe/core/converters/controls/Common/Table.js +251 -264
  150. package/src/sap/fe/core/converters/controls/Common/Table.ts +344 -370
  151. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  152. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +147 -144
  153. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +89 -59
  154. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +118 -71
  155. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  156. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  157. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  158. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  159. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +131 -95
  160. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +123 -87
  161. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +98 -87
  162. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +121 -117
  163. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  164. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  165. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  166. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  167. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +8 -6
  168. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +18 -10
  169. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +136 -0
  170. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +139 -0
  171. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  172. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  173. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  174. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  175. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  176. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  177. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  178. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  179. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  180. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +53 -75
  181. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +59 -90
  182. package/src/sap/fe/core/converters/templates/ListReportConverter.js +58 -57
  183. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +93 -86
  184. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +58 -44
  185. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +87 -80
  186. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  187. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  188. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  189. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  190. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  191. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  192. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  193. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  194. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  195. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  196. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  197. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  198. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  199. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  200. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  201. package/src/sap/fe/core/fpm/Component.js +33 -7
  202. package/src/sap/fe/core/fpm/Component.ts +14 -0
  203. package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
  204. package/src/sap/fe/core/helpers/AppStartupHelper.js +19 -18
  205. package/src/sap/fe/core/helpers/AppStartupHelper.ts +41 -43
  206. package/src/sap/fe/core/helpers/BindingToolkit.js +1836 -0
  207. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +397 -270
  208. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  209. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  210. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  211. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  212. package/src/sap/fe/core/helpers/EditState.js +1 -6
  213. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  214. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  215. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  216. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  217. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  218. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  219. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  220. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
  221. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  222. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  223. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  224. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  225. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  226. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  227. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  228. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  229. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  230. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  231. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  232. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  233. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  234. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  235. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  236. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  237. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  238. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  239. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  240. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
  241. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
  242. package/src/sap/fe/core/jsx-runtime/jsx-control.js +110 -0
  243. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +92 -0
  244. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  245. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  246. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  247. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  248. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  249. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
  250. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
  251. package/src/sap/fe/core/library.js +42 -3
  252. package/src/sap/fe/core/library.support.js +1 -1
  253. package/src/sap/fe/core/library.ts +38 -0
  254. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  255. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  256. package/src/sap/fe/core/messagebundle.properties +39 -67
  257. package/src/sap/fe/core/messagebundle_ar.properties +27 -44
  258. package/src/sap/fe/core/messagebundle_bg.properties +27 -44
  259. package/src/sap/fe/core/messagebundle_ca.properties +27 -44
  260. package/src/sap/fe/core/messagebundle_cs.properties +27 -44
  261. package/src/sap/fe/core/messagebundle_cy.properties +26 -43
  262. package/src/sap/fe/core/messagebundle_da.properties +27 -44
  263. package/src/sap/fe/core/messagebundle_de.properties +25 -42
  264. package/src/sap/fe/core/messagebundle_el.properties +28 -45
  265. package/src/sap/fe/core/messagebundle_en.properties +27 -44
  266. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -44
  267. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -42
  268. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -40
  269. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +25 -42
  270. package/src/sap/fe/core/messagebundle_es.properties +27 -44
  271. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -44
  272. package/src/sap/fe/core/messagebundle_et.properties +27 -44
  273. package/src/sap/fe/core/messagebundle_fi.properties +27 -44
  274. package/src/sap/fe/core/messagebundle_fr.properties +26 -43
  275. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -42
  276. package/src/sap/fe/core/messagebundle_hi.properties +27 -44
  277. package/src/sap/fe/core/messagebundle_hr.properties +27 -44
  278. package/src/sap/fe/core/messagebundle_hu.properties +27 -44
  279. package/src/sap/fe/core/messagebundle_id.properties +27 -44
  280. package/src/sap/fe/core/messagebundle_it.properties +43 -60
  281. package/src/sap/fe/core/messagebundle_iw.properties +27 -44
  282. package/src/sap/fe/core/messagebundle_ja.properties +27 -44
  283. package/src/sap/fe/core/messagebundle_kk.properties +27 -44
  284. package/src/sap/fe/core/messagebundle_ko.properties +30 -47
  285. package/src/sap/fe/core/messagebundle_lt.properties +27 -44
  286. package/src/sap/fe/core/messagebundle_lv.properties +27 -44
  287. package/src/sap/fe/core/messagebundle_ms.properties +27 -44
  288. package/src/sap/fe/core/messagebundle_nl.properties +29 -46
  289. package/src/sap/fe/core/messagebundle_no.properties +27 -44
  290. package/src/sap/fe/core/messagebundle_pl.properties +28 -45
  291. package/src/sap/fe/core/messagebundle_pt.properties +28 -45
  292. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -44
  293. package/src/sap/fe/core/messagebundle_ro.properties +27 -44
  294. package/src/sap/fe/core/messagebundle_ru.properties +27 -44
  295. package/src/sap/fe/core/messagebundle_sh.properties +27 -44
  296. package/src/sap/fe/core/messagebundle_sk.properties +27 -44
  297. package/src/sap/fe/core/messagebundle_sl.properties +27 -44
  298. package/src/sap/fe/core/messagebundle_sv.properties +27 -44
  299. package/src/sap/fe/core/messagebundle_th.properties +25 -42
  300. package/src/sap/fe/core/messagebundle_tr.properties +27 -44
  301. package/src/sap/fe/core/messagebundle_uk.properties +27 -44
  302. package/src/sap/fe/core/messagebundle_vi.properties +27 -44
  303. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -44
  304. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -44
  305. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
  306. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  307. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +103 -75
  308. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +72 -73
  309. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
  310. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  311. package/src/sap/fe/core/services/NavigationServiceFactory.js +62 -50
  312. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  313. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
  314. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  315. package/src/sap/fe/core/services/RoutingServiceFactory.js +56 -56
  316. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  317. package/src/sap/fe/core/services/ShellServicesFactory.js +93 -77
  318. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  319. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +64 -64
  320. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  321. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +232 -200
  322. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +145 -142
  323. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
  324. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  325. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  326. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  327. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  328. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  329. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  330. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  331. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  332. package/src/sap/fe/core/templating/CommonFormatters.js +85 -0
  333. package/src/sap/fe/core/templating/CommonFormatters.ts +90 -0
  334. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  335. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  336. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  337. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  338. package/src/sap/fe/core/templating/DataModelPathHelper.js +23 -15
  339. package/src/sap/fe/core/templating/DataModelPathHelper.ts +47 -34
  340. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  341. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  342. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  343. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  344. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  345. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  346. package/src/sap/fe/core/templating/FilterHelper.js +18 -17
  347. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  348. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  349. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  350. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  351. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  352. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  353. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  354. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  355. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  356. package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
  357. package/src/sap/fe/core/type/Email.js +3 -3
  358. package/src/sap/fe/core/type/Email.ts +2 -2
  359. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -0,0 +1,136 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/base/Log"], function (Log) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+
10
+ //function to check for statically hidden reference properties
11
+ function isReferencePropertyStaticallyHidden(property) {
12
+ var _property$annotations, _property$annotations2, _property$annotations3, _property$Value, _property$Value$$targ, _property$Value$$targ2, _property$Value$$targ3, _property$Value$$targ4, _property$Value3, _property$Value3$$tar, _propertyValueAnnotat, _propertyValueAnnotat2, _property$annotations4, _property$annotations5, _property$annotations6;
13
+
14
+ if (property) {
15
+ switch (property.$Type) {
16
+ case "com.sap.vocabularies.UI.v1.DataFieldForAnnotation":
17
+ return isAnnotationFieldStaticallyHidden(property);
18
+
19
+ case "com.sap.vocabularies.UI.v1.DataField":
20
+ if (property.targetObject) {
21
+ var _headerInfoAnnotation, _headerInfoAnnotation2, _headerInfoAnnotation3, _headerInfoAnnotation9, _headerInfoAnnotation10, _headerInfoAnnotation11, _headerInfoAnnotation12, _headerInfoAnnotation13;
22
+
23
+ var headerInfoAnnotation = property.targetObject;
24
+
25
+ if (headerInfoAnnotation.annotations && ((_headerInfoAnnotation = headerInfoAnnotation.annotations) === null || _headerInfoAnnotation === void 0 ? void 0 : (_headerInfoAnnotation2 = _headerInfoAnnotation.UI) === null || _headerInfoAnnotation2 === void 0 ? void 0 : (_headerInfoAnnotation3 = _headerInfoAnnotation2.Hidden) === null || _headerInfoAnnotation3 === void 0 ? void 0 : _headerInfoAnnotation3.valueOf()) === true) {
26
+ var _headerInfoAnnotation4, _headerInfoAnnotation5, _headerInfoAnnotation6, _headerInfoAnnotation7, _headerInfoAnnotation8;
27
+
28
+ if (((_headerInfoAnnotation4 = headerInfoAnnotation.Value) === null || _headerInfoAnnotation4 === void 0 ? void 0 : (_headerInfoAnnotation5 = _headerInfoAnnotation4.$target) === null || _headerInfoAnnotation5 === void 0 ? void 0 : (_headerInfoAnnotation6 = _headerInfoAnnotation5.annotations) === null || _headerInfoAnnotation6 === void 0 ? void 0 : (_headerInfoAnnotation7 = _headerInfoAnnotation6.UI) === null || _headerInfoAnnotation7 === void 0 ? void 0 : (_headerInfoAnnotation8 = _headerInfoAnnotation7.HiddenFilter) === null || _headerInfoAnnotation8 === void 0 ? void 0 : _headerInfoAnnotation8.valueOf()) === true) Log.warning("Warning: Property " + property.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
29
+ return true;
30
+ } else if (headerInfoAnnotation.Value.$target && ((_headerInfoAnnotation9 = headerInfoAnnotation.Value) === null || _headerInfoAnnotation9 === void 0 ? void 0 : (_headerInfoAnnotation10 = _headerInfoAnnotation9.$target) === null || _headerInfoAnnotation10 === void 0 ? void 0 : (_headerInfoAnnotation11 = _headerInfoAnnotation10.annotations) === null || _headerInfoAnnotation11 === void 0 ? void 0 : (_headerInfoAnnotation12 = _headerInfoAnnotation11.UI) === null || _headerInfoAnnotation12 === void 0 ? void 0 : (_headerInfoAnnotation13 = _headerInfoAnnotation12.Hidden) === null || _headerInfoAnnotation13 === void 0 ? void 0 : _headerInfoAnnotation13.valueOf()) === true) {
31
+ var _headerInfoAnnotation14, _headerInfoAnnotation15, _headerInfoAnnotation16, _headerInfoAnnotation17, _headerInfoAnnotation18;
32
+
33
+ if (((_headerInfoAnnotation14 = headerInfoAnnotation.Value) === null || _headerInfoAnnotation14 === void 0 ? void 0 : (_headerInfoAnnotation15 = _headerInfoAnnotation14.$target) === null || _headerInfoAnnotation15 === void 0 ? void 0 : (_headerInfoAnnotation16 = _headerInfoAnnotation15.annotations) === null || _headerInfoAnnotation16 === void 0 ? void 0 : (_headerInfoAnnotation17 = _headerInfoAnnotation16.UI) === null || _headerInfoAnnotation17 === void 0 ? void 0 : (_headerInfoAnnotation18 = _headerInfoAnnotation17.HiddenFilter) === null || _headerInfoAnnotation18 === void 0 ? void 0 : _headerInfoAnnotation18.valueOf()) === true) Log.warning("Warning: Property " + property.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
34
+ return true;
35
+ } else return false;
36
+ } else if (property.annotations && ((_property$annotations = property.annotations) === null || _property$annotations === void 0 ? void 0 : (_property$annotations2 = _property$annotations.UI) === null || _property$annotations2 === void 0 ? void 0 : (_property$annotations3 = _property$annotations2.Hidden) === null || _property$annotations3 === void 0 ? void 0 : _property$annotations3.valueOf()) === true) {
37
+ var _UI, _UI$HiddenFilter;
38
+
39
+ if (property.annotations && ((_UI = property.annotations.UI) === null || _UI === void 0 ? void 0 : (_UI$HiddenFilter = _UI.HiddenFilter) === null || _UI$HiddenFilter === void 0 ? void 0 : _UI$HiddenFilter.valueOf()) === true) Log.warning("Warning: Property " + property.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
40
+ return true;
41
+ } else if (property.Value.$target && ((_property$Value = property.Value) === null || _property$Value === void 0 ? void 0 : (_property$Value$$targ = _property$Value.$target) === null || _property$Value$$targ === void 0 ? void 0 : (_property$Value$$targ2 = _property$Value$$targ.annotations) === null || _property$Value$$targ2 === void 0 ? void 0 : (_property$Value$$targ3 = _property$Value$$targ2.UI) === null || _property$Value$$targ3 === void 0 ? void 0 : (_property$Value$$targ4 = _property$Value$$targ3.Hidden) === null || _property$Value$$targ4 === void 0 ? void 0 : _property$Value$$targ4.valueOf()) === true) {
42
+ var _property$Value2, _property$Value2$$tar, _property$Value2$$tar2, _property$Value2$$tar3, _property$Value2$$tar4;
43
+
44
+ if (((_property$Value2 = property.Value) === null || _property$Value2 === void 0 ? void 0 : (_property$Value2$$tar = _property$Value2.$target) === null || _property$Value2$$tar === void 0 ? void 0 : (_property$Value2$$tar2 = _property$Value2$$tar.annotations) === null || _property$Value2$$tar2 === void 0 ? void 0 : (_property$Value2$$tar3 = _property$Value2$$tar2.UI) === null || _property$Value2$$tar3 === void 0 ? void 0 : (_property$Value2$$tar4 = _property$Value2$$tar3.HiddenFilter) === null || _property$Value2$$tar4 === void 0 ? void 0 : _property$Value2$$tar4.valueOf()) === true) Log.warning("Warning: Property " + property.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
45
+ return true;
46
+ } else return false;
47
+
48
+ case "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":
49
+ var propertyValueAnnotation = (_property$Value3 = property.Value) === null || _property$Value3 === void 0 ? void 0 : (_property$Value3$$tar = _property$Value3.$target) === null || _property$Value3$$tar === void 0 ? void 0 : _property$Value3$$tar.annotations;
50
+
51
+ if ((propertyValueAnnotation === null || propertyValueAnnotation === void 0 ? void 0 : (_propertyValueAnnotat = propertyValueAnnotation.UI) === null || _propertyValueAnnotat === void 0 ? void 0 : (_propertyValueAnnotat2 = _propertyValueAnnotat.Hidden) === null || _propertyValueAnnotat2 === void 0 ? void 0 : _propertyValueAnnotat2.valueOf()) === true) {
52
+ var _propertyValueAnnotat3, _propertyValueAnnotat4;
53
+
54
+ if ((propertyValueAnnotation === null || propertyValueAnnotation === void 0 ? void 0 : (_propertyValueAnnotat3 = propertyValueAnnotation.UI) === null || _propertyValueAnnotat3 === void 0 ? void 0 : (_propertyValueAnnotat4 = _propertyValueAnnotat3.HiddenFilter) === null || _propertyValueAnnotat4 === void 0 ? void 0 : _propertyValueAnnotat4.valueOf()) === true) Log.warning("Warning: Property " + property.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
55
+ return true;
56
+ } else return false;
57
+
58
+ case "com.sap.vocabularies.UI.v1.DataFieldWithUrl":
59
+ if (((_property$annotations4 = property.annotations) === null || _property$annotations4 === void 0 ? void 0 : (_property$annotations5 = _property$annotations4.UI) === null || _property$annotations5 === void 0 ? void 0 : (_property$annotations6 = _property$annotations5.Hidden) === null || _property$annotations6 === void 0 ? void 0 : _property$annotations6.valueOf()) === true) {
60
+ var _UI2, _UI2$HiddenFilter;
61
+
62
+ if (property.annotations && ((_UI2 = property.annotations.UI) === null || _UI2 === void 0 ? void 0 : (_UI2$HiddenFilter = _UI2.HiddenFilter) === null || _UI2$HiddenFilter === void 0 ? void 0 : _UI2$HiddenFilter.valueOf()) === true) Log.warning("Warning: Property " + property.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
63
+ return true;
64
+ } else return false;
65
+
66
+ default:
67
+ }
68
+ }
69
+ }
70
+
71
+ _exports.isReferencePropertyStaticallyHidden = isReferencePropertyStaticallyHidden;
72
+
73
+ function isAnnotationFieldStaticallyHidden(annotationProperty) {
74
+ var _propertyValueAnnotat5, _propertyValueAnnotat6, _propertyValueAnnotat7;
75
+
76
+ var target = annotationProperty.Target.$target.term; // let ChartAnnotation: Chart, ConnectedFieldsAnnotation: ConnectedFields, FieldGroupAnnotation: FieldGroup, DataPointAnnotation: DataPoint;
77
+
78
+ switch (target) {
79
+ case "com.sap.vocabularies.UI.v1.Chart":
80
+ var ischartMeasureHidden;
81
+ annotationProperty.Target.$target.Measures.forEach(function (chartMeasure) {
82
+ var _chartMeasure$$target, _chartMeasure$$target2, _chartMeasure$$target3;
83
+
84
+ if (((_chartMeasure$$target = chartMeasure.$target.annotations) === null || _chartMeasure$$target === void 0 ? void 0 : (_chartMeasure$$target2 = _chartMeasure$$target.UI) === null || _chartMeasure$$target2 === void 0 ? void 0 : (_chartMeasure$$target3 = _chartMeasure$$target2.Hidden) === null || _chartMeasure$$target3 === void 0 ? void 0 : _chartMeasure$$target3.valueOf()) === true) {
85
+ var _UI3, _UI3$HiddenFilter;
86
+
87
+ Log.warning("Warning: Measure attribute for Chart " + chartMeasure.$target.name + " is statically hidden hence chart can't be rendered");
88
+ if (chartMeasure.$target.annotations && ((_UI3 = chartMeasure.$target.annotations.UI) === null || _UI3 === void 0 ? void 0 : (_UI3$HiddenFilter = _UI3.HiddenFilter) === null || _UI3$HiddenFilter === void 0 ? void 0 : _UI3$HiddenFilter.valueOf()) === true) Log.warning("Warning: Property " + chartMeasure.$target.name + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
89
+ ischartMeasureHidden = true;
90
+ }
91
+ });
92
+ if (ischartMeasureHidden === true) return true;else return false;
93
+
94
+ case "com.sap.vocabularies.UI.v1.ConnectedFields":
95
+ if (annotationProperty) {
96
+ var _annotationProperty$a, _annotationProperty$a2, _annotationProperty$a3;
97
+
98
+ if (((_annotationProperty$a = annotationProperty.annotations) === null || _annotationProperty$a === void 0 ? void 0 : (_annotationProperty$a2 = _annotationProperty$a.UI) === null || _annotationProperty$a2 === void 0 ? void 0 : (_annotationProperty$a3 = _annotationProperty$a2.Hidden) === null || _annotationProperty$a3 === void 0 ? void 0 : _annotationProperty$a3.valueOf()) === true) {
99
+ var _UI4, _UI4$HiddenFilter;
100
+
101
+ if (annotationProperty.annotations && ((_UI4 = annotationProperty.annotations.UI) === null || _UI4 === void 0 ? void 0 : (_UI4$HiddenFilter = _UI4.HiddenFilter) === null || _UI4$HiddenFilter === void 0 ? void 0 : _UI4$HiddenFilter.valueOf()) === true) Log.warning("Warning: Property " + annotationProperty.Target.$target.qualifier + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
102
+ return true;
103
+ } else return false;
104
+ }
105
+
106
+ break;
107
+
108
+ case "com.sap.vocabularies.UI.v1.FieldGroup":
109
+ if (annotationProperty) {
110
+ annotationProperty.Target.$target.Data.forEach(function (field) {
111
+ return isReferencePropertyStaticallyHidden(field);
112
+ });
113
+ }
114
+
115
+ break;
116
+
117
+ case "com.sap.vocabularies.UI.v1.DataPoint":
118
+ var propertyValueAnnotation = annotationProperty.Target.$target.Value.$target;
119
+
120
+ if (((_propertyValueAnnotat5 = propertyValueAnnotation.annotations) === null || _propertyValueAnnotat5 === void 0 ? void 0 : (_propertyValueAnnotat6 = _propertyValueAnnotat5.UI) === null || _propertyValueAnnotat6 === void 0 ? void 0 : (_propertyValueAnnotat7 = _propertyValueAnnotat6.Hidden) === null || _propertyValueAnnotat7 === void 0 ? void 0 : _propertyValueAnnotat7.valueOf()) === true) {
121
+ var _propertyValueAnnotat8, _propertyValueAnnotat9, _propertyValueAnnotat10;
122
+
123
+ if (((_propertyValueAnnotat8 = propertyValueAnnotation.annotations) === null || _propertyValueAnnotat8 === void 0 ? void 0 : (_propertyValueAnnotat9 = _propertyValueAnnotat8.UI) === null || _propertyValueAnnotat9 === void 0 ? void 0 : (_propertyValueAnnotat10 = _propertyValueAnnotat9.HiddenFilter) === null || _propertyValueAnnotat10 === void 0 ? void 0 : _propertyValueAnnotat10.valueOf()) === true) Log.warning("Warning: Property " + annotationProperty.Target.$target.Value.path + " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!");
124
+ return true;
125
+ } else {
126
+ return false;
127
+ }
128
+
129
+ default:
130
+ }
131
+ }
132
+
133
+ _exports.isAnnotationFieldStaticallyHidden = isAnnotationFieldStaticallyHidden;
134
+ return _exports;
135
+ }, false);
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbiIsInByb3BlcnR5IiwiJFR5cGUiLCJpc0Fubm90YXRpb25GaWVsZFN0YXRpY2FsbHlIaWRkZW4iLCJ0YXJnZXRPYmplY3QiLCJoZWFkZXJJbmZvQW5ub3RhdGlvbiIsImFubm90YXRpb25zIiwiVUkiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwiVmFsdWUiLCIkdGFyZ2V0IiwiSGlkZGVuRmlsdGVyIiwiTG9nIiwid2FybmluZyIsInBhdGgiLCJwcm9wZXJ0eVZhbHVlQW5ub3RhdGlvbiIsImFubm90YXRpb25Qcm9wZXJ0eSIsInRhcmdldCIsIlRhcmdldCIsInRlcm0iLCJpc2NoYXJ0TWVhc3VyZUhpZGRlbiIsIk1lYXN1cmVzIiwiZm9yRWFjaCIsImNoYXJ0TWVhc3VyZSIsIm5hbWUiLCJxdWFsaWZpZXIiLCJEYXRhIiwiZmllbGQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFGaWVsZEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRGb3JBbm5vdGF0aW9uVHlwZXMsXG5cdFVJQW5ub3RhdGlvblRlcm1zLFxuXHRVSUFubm90YXRpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcblxuLy9mdW5jdGlvbiB0byBjaGVjayBmb3Igc3RhdGljYWxseSBoaWRkZW4gcmVmZXJlbmNlIHByb3BlcnRpZXNcbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZVByb3BlcnR5U3RhdGljYWxseUhpZGRlbihwcm9wZXJ0eT86IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCB1bmRlZmluZWQpIHtcblx0aWYgKHByb3BlcnR5KSB7XG5cdFx0c3dpdGNoIChwcm9wZXJ0eS4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uOlxuXHRcdFx0XHRyZXR1cm4gaXNBbm5vdGF0aW9uRmllbGRTdGF0aWNhbGx5SGlkZGVuKHByb3BlcnR5KTtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0XHRpZiAoKHByb3BlcnR5IGFzIGFueSkudGFyZ2V0T2JqZWN0KSB7XG5cdFx0XHRcdFx0Y29uc3QgaGVhZGVySW5mb0Fubm90YXRpb24gPSAocHJvcGVydHkgYXMgYW55KS50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdFx0aWYgKGhlYWRlckluZm9Bbm5vdGF0aW9uLmFubm90YXRpb25zICYmIGhlYWRlckluZm9Bbm5vdGF0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdGlmIChoZWFkZXJJbmZvQW5ub3RhdGlvbi5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW5GaWx0ZXI/LnZhbHVlT2YoKSA9PT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFx0XCJXYXJuaW5nOiBQcm9wZXJ0eSBcIiArXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5WYWx1ZS5wYXRoICtcblx0XHRcdFx0XHRcdFx0XHRcdFwiIGlzIHNldCB3aXRoIGJvdGggVUkuSGlkZGVuIGFuZCBVSS5IaWRkZW5GaWx0ZXIgLSBwbGVhc2Ugc2V0IG9ubHkgb25lIG9mIHRoZXNlISBVSS5IaWRkZW5GaWx0ZXIgaXMgaWdub3JlZCBjdXJyZW50bHkhXCJcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHRoZWFkZXJJbmZvQW5ub3RhdGlvbi5WYWx1ZS4kdGFyZ2V0ICYmXG5cdFx0XHRcdFx0XHRoZWFkZXJJbmZvQW5ub3RhdGlvbi5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0aWYgKGhlYWRlckluZm9Bbm5vdGF0aW9uLlZhbHVlPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbkZpbHRlcj8udmFsdWVPZigpID09PSB0cnVlKVxuXHRcdFx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XHRcIldhcm5pbmc6IFByb3BlcnR5IFwiICtcblx0XHRcdFx0XHRcdFx0XHRcdHByb3BlcnR5LlZhbHVlLnBhdGggK1xuXHRcdFx0XHRcdFx0XHRcdFx0XCIgaXMgc2V0IHdpdGggYm90aCBVSS5IaWRkZW4gYW5kIFVJLkhpZGRlbkZpbHRlciAtIHBsZWFzZSBzZXQgb25seSBvbmUgb2YgdGhlc2UhIFVJLkhpZGRlbkZpbHRlciBpcyBpZ25vcmVkIGN1cnJlbnRseSFcIlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fSBlbHNlIHJldHVybiBmYWxzZTtcblx0XHRcdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS5hbm5vdGF0aW9ucyAmJiBwcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0aWYgKHByb3BlcnR5LmFubm90YXRpb25zICYmIChwcm9wZXJ0eS5hbm5vdGF0aW9ucyBhcyBhbnkpLlVJPy5IaWRkZW5GaWx0ZXI/LnZhbHVlT2YoKSA9PT0gdHJ1ZSlcblx0XHRcdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFx0XHRcIldhcm5pbmc6IFByb3BlcnR5IFwiICtcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5WYWx1ZS5wYXRoICtcblx0XHRcdFx0XHRcdFx0XHRcIiBpcyBzZXQgd2l0aCBib3RoIFVJLkhpZGRlbiBhbmQgVUkuSGlkZGVuRmlsdGVyIC0gcGxlYXNlIHNldCBvbmx5IG9uZSBvZiB0aGVzZSEgVUkuSGlkZGVuRmlsdGVyIGlzIGlnbm9yZWQgY3VycmVudGx5IVwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHByb3BlcnR5LlZhbHVlLiR0YXJnZXQgJiYgcHJvcGVydHkuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0XHRpZiAocHJvcGVydHkuVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuRmlsdGVyPy52YWx1ZU9mKCkgPT09IHRydWUpXG5cdFx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XCJXYXJuaW5nOiBQcm9wZXJ0eSBcIiArXG5cdFx0XHRcdFx0XHRcdFx0cHJvcGVydHkuVmFsdWUucGF0aCArXG5cdFx0XHRcdFx0XHRcdFx0XCIgaXMgc2V0IHdpdGggYm90aCBVSS5IaWRkZW4gYW5kIFVJLkhpZGRlbkZpbHRlciAtIHBsZWFzZSBzZXQgb25seSBvbmUgb2YgdGhlc2UhIFVJLkhpZGRlbkZpbHRlciBpcyBpZ25vcmVkIGN1cnJlbnRseSFcIlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHJldHVybiBmYWxzZTtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOlxuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlQW5ub3RhdGlvbiA9IHByb3BlcnR5LlZhbHVlPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucztcblx0XHRcdFx0aWYgKHByb3BlcnR5VmFsdWVBbm5vdGF0aW9uPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0XHRpZiAocHJvcGVydHlWYWx1ZUFubm90YXRpb24/LlVJPy5IaWRkZW5GaWx0ZXI/LnZhbHVlT2YoKSA9PT0gdHJ1ZSlcblx0XHRcdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFx0XHRcIldhcm5pbmc6IFByb3BlcnR5IFwiICtcblx0XHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5WYWx1ZS5wYXRoICtcblx0XHRcdFx0XHRcdFx0XHRcIiBpcyBzZXQgd2l0aCBib3RoIFVJLkhpZGRlbiBhbmQgVUkuSGlkZGVuRmlsdGVyIC0gcGxlYXNlIHNldCBvbmx5IG9uZSBvZiB0aGVzZSEgVUkuSGlkZGVuRmlsdGVyIGlzIGlnbm9yZWQgY3VycmVudGx5IVwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgcmV0dXJuIGZhbHNlO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdFx0XHRpZiAocHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eS5hbm5vdGF0aW9ucyAmJiAocHJvcGVydHkuYW5ub3RhdGlvbnMgYXMgYW55KS5VST8uSGlkZGVuRmlsdGVyPy52YWx1ZU9mKCkgPT09IHRydWUpXG5cdFx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdFx0XCJXYXJuaW5nOiBQcm9wZXJ0eSBcIiArXG5cdFx0XHRcdFx0XHRcdFx0cHJvcGVydHkuVmFsdWUucGF0aCArXG5cdFx0XHRcdFx0XHRcdFx0XCIgaXMgc2V0IHdpdGggYm90aCBVSS5IaWRkZW4gYW5kIFVJLkhpZGRlbkZpbHRlciAtIHBsZWFzZSBzZXQgb25seSBvbmUgb2YgdGhlc2UhIFVJLkhpZGRlbkZpbHRlciBpcyBpZ25vcmVkIGN1cnJlbnRseSFcIlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHJldHVybiBmYWxzZTtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0fVxuXHR9XG59XG5leHBvcnQgZnVuY3Rpb24gaXNBbm5vdGF0aW9uRmllbGRTdGF0aWNhbGx5SGlkZGVuKGFubm90YXRpb25Qcm9wZXJ0eTogRGF0YUZpZWxkRm9yQW5ub3RhdGlvblR5cGVzKSB7XG5cdGNvbnN0IHRhcmdldCA9IGFubm90YXRpb25Qcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC50ZXJtO1xuXHQvLyBsZXQgQ2hhcnRBbm5vdGF0aW9uOiBDaGFydCwgQ29ubmVjdGVkRmllbGRzQW5ub3RhdGlvbjogQ29ubmVjdGVkRmllbGRzLCBGaWVsZEdyb3VwQW5ub3RhdGlvbjogRmllbGRHcm91cCwgRGF0YVBvaW50QW5ub3RhdGlvbjogRGF0YVBvaW50O1xuXHRzd2l0Y2ggKHRhcmdldCkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQ6XG5cdFx0XHRsZXQgaXNjaGFydE1lYXN1cmVIaWRkZW47XG5cdFx0XHRhbm5vdGF0aW9uUHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQuTWVhc3VyZXMuZm9yRWFjaCgoY2hhcnRNZWFzdXJlKSA9PiB7XG5cdFx0XHRcdGlmIChjaGFydE1lYXN1cmUuJHRhcmdldC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcIldhcm5pbmc6IE1lYXN1cmUgYXR0cmlidXRlIGZvciBDaGFydCBcIiArXG5cdFx0XHRcdFx0XHRcdGNoYXJ0TWVhc3VyZS4kdGFyZ2V0Lm5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcIiBpcyBzdGF0aWNhbGx5IGhpZGRlbiBoZW5jZSBjaGFydCBjYW4ndCBiZSByZW5kZXJlZFwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAoY2hhcnRNZWFzdXJlLiR0YXJnZXQuYW5ub3RhdGlvbnMgJiYgKGNoYXJ0TWVhc3VyZS4kdGFyZ2V0LmFubm90YXRpb25zIGFzIGFueSkuVUk/LkhpZGRlbkZpbHRlcj8udmFsdWVPZigpID09PSB0cnVlKVxuXHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFwiV2FybmluZzogUHJvcGVydHkgXCIgK1xuXHRcdFx0XHRcdFx0XHRcdGNoYXJ0TWVhc3VyZS4kdGFyZ2V0Lm5hbWUgK1xuXHRcdFx0XHRcdFx0XHRcdFwiIGlzIHNldCB3aXRoIGJvdGggVUkuSGlkZGVuIGFuZCBVSS5IaWRkZW5GaWx0ZXIgLSBwbGVhc2Ugc2V0IG9ubHkgb25lIG9mIHRoZXNlISBVSS5IaWRkZW5GaWx0ZXIgaXMgaWdub3JlZCBjdXJyZW50bHkhXCJcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aXNjaGFydE1lYXN1cmVIaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmIChpc2NoYXJ0TWVhc3VyZUhpZGRlbiA9PT0gdHJ1ZSkgcmV0dXJuIHRydWU7XG5cdFx0XHRlbHNlIHJldHVybiBmYWxzZTtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkNvbm5lY3RlZEZpZWxkczpcblx0XHRcdGlmIChhbm5vdGF0aW9uUHJvcGVydHkpIHtcblx0XHRcdFx0aWYgKGFubm90YXRpb25Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0aWYgKGFubm90YXRpb25Qcm9wZXJ0eS5hbm5vdGF0aW9ucyAmJiAoYW5ub3RhdGlvblByb3BlcnR5LmFubm90YXRpb25zIGFzIGFueSkuVUk/LkhpZGRlbkZpbHRlcj8udmFsdWVPZigpID09PSB0cnVlKVxuXHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcdFwiV2FybmluZzogUHJvcGVydHkgXCIgK1xuXHRcdFx0XHRcdFx0XHRcdGFubm90YXRpb25Qcm9wZXJ0eS5UYXJnZXQuJHRhcmdldC5xdWFsaWZpZXIgK1xuXHRcdFx0XHRcdFx0XHRcdFwiIGlzIHNldCB3aXRoIGJvdGggVUkuSGlkZGVuIGFuZCBVSS5IaWRkZW5GaWx0ZXIgLSBwbGVhc2Ugc2V0IG9ubHkgb25lIG9mIHRoZXNlISBVSS5IaWRkZW5GaWx0ZXIgaXMgaWdub3JlZCBjdXJyZW50bHkhXCJcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRpZiAoYW5ub3RhdGlvblByb3BlcnR5KSB7XG5cdFx0XHRcdChhbm5vdGF0aW9uUHJvcGVydHkgYXMgYW55KS5UYXJnZXQuJHRhcmdldC5EYXRhLmZvckVhY2goKGZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PlxuXHRcdFx0XHRcdGlzUmVmZXJlbmNlUHJvcGVydHlTdGF0aWNhbGx5SGlkZGVuKGZpZWxkKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5EYXRhUG9pbnQ6XG5cdFx0XHRjb25zdCBwcm9wZXJ0eVZhbHVlQW5ub3RhdGlvbiA9IChhbm5vdGF0aW9uUHJvcGVydHkuVGFyZ2V0LiR0YXJnZXQgYXMgYW55KS5WYWx1ZS4kdGFyZ2V0O1xuXHRcdFx0aWYgKHByb3BlcnR5VmFsdWVBbm5vdGF0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKHByb3BlcnR5VmFsdWVBbm5vdGF0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuRmlsdGVyPy52YWx1ZU9mKCkgPT09IHRydWUpXG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRcIldhcm5pbmc6IFByb3BlcnR5IFwiICtcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblByb3BlcnR5LlRhcmdldC4kdGFyZ2V0LlZhbHVlLnBhdGggK1xuXHRcdFx0XHRcdFx0XHRcIiBpcyBzZXQgd2l0aCBib3RoIFVJLkhpZGRlbiBhbmQgVUkuSGlkZGVuRmlsdGVyIC0gcGxlYXNlIHNldCBvbmx5IG9uZSBvZiB0aGVzZSEgVUkuSGlkZGVuRmlsdGVyIGlzIGlnbm9yZWQgY3VycmVudGx5IVwiXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0ZGVmYXVsdDpcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7RUFRQTtFQUNPLFNBQVNBLG1DQUFULENBQTZDQyxRQUE3QyxFQUE0RjtJQUFBOztJQUNsRyxJQUFJQSxRQUFKLEVBQWM7TUFDYixRQUFRQSxRQUFRLENBQUNDLEtBQWpCO1FBQ0M7VUFDQyxPQUFPQyxpQ0FBaUMsQ0FBQ0YsUUFBRCxDQUF4Qzs7UUFDRDtVQUNDLElBQUtBLFFBQUQsQ0FBa0JHLFlBQXRCLEVBQW9DO1lBQUE7O1lBQ25DLElBQU1DLG9CQUFvQixHQUFJSixRQUFELENBQWtCRyxZQUEvQzs7WUFDQSxJQUFJQyxvQkFBb0IsQ0FBQ0MsV0FBckIsSUFBb0MsMEJBQUFELG9CQUFvQixDQUFDQyxXQUFyQiwwR0FBa0NDLEVBQWxDLDRHQUFzQ0MsTUFBdEMsa0ZBQThDQyxPQUE5QyxRQUE0RCxJQUFwRyxFQUEwRztjQUFBOztjQUN6RyxJQUFJLDJCQUFBSixvQkFBb0IsQ0FBQ0ssS0FBckIsNEdBQTRCQyxPQUE1Qiw0R0FBcUNMLFdBQXJDLDRHQUFrREMsRUFBbEQsNEdBQXNESyxZQUF0RCxrRkFBb0VILE9BQXBFLFFBQWtGLElBQXRGLEVBQ0NJLEdBQUcsQ0FBQ0MsT0FBSixDQUNDLHVCQUNDYixRQUFRLENBQUNTLEtBQVQsQ0FBZUssSUFEaEIsR0FFQyx1SEFIRjtjQUtELE9BQU8sSUFBUDtZQUNBLENBUkQsTUFRTyxJQUNOVixvQkFBb0IsQ0FBQ0ssS0FBckIsQ0FBMkJDLE9BQTNCLElBQ0EsMkJBQUFOLG9CQUFvQixDQUFDSyxLQUFyQiw2R0FBNEJDLE9BQTVCLCtHQUFxQ0wsV0FBckMsK0dBQWtEQyxF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
@@ -0,0 +1,139 @@
1
+ import {
2
+ DataFieldAbstractTypes,
3
+ DataFieldForAnnotationTypes,
4
+ UIAnnotationTerms,
5
+ UIAnnotationTypes
6
+ } from "@sap-ux/vocabularies-types/vocabularies/UI";
7
+ import Log from "sap/base/Log";
8
+
9
+ //function to check for statically hidden reference properties
10
+ export function isReferencePropertyStaticallyHidden(property?: DataFieldAbstractTypes | undefined) {
11
+ if (property) {
12
+ switch (property.$Type) {
13
+ case UIAnnotationTypes.DataFieldForAnnotation:
14
+ return isAnnotationFieldStaticallyHidden(property);
15
+ case UIAnnotationTypes.DataField:
16
+ if ((property as any).targetObject) {
17
+ const headerInfoAnnotation = (property as any).targetObject;
18
+ if (headerInfoAnnotation.annotations && headerInfoAnnotation.annotations?.UI?.Hidden?.valueOf() === true) {
19
+ if (headerInfoAnnotation.Value?.$target?.annotations?.UI?.HiddenFilter?.valueOf() === true)
20
+ Log.warning(
21
+ "Warning: Property " +
22
+ property.Value.path +
23
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
24
+ );
25
+ return true;
26
+ } else if (
27
+ headerInfoAnnotation.Value.$target &&
28
+ headerInfoAnnotation.Value?.$target?.annotations?.UI?.Hidden?.valueOf() === true
29
+ ) {
30
+ if (headerInfoAnnotation.Value?.$target?.annotations?.UI?.HiddenFilter?.valueOf() === true)
31
+ Log.warning(
32
+ "Warning: Property " +
33
+ property.Value.path +
34
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
35
+ );
36
+ return true;
37
+ } else return false;
38
+ } else if (property.annotations && property.annotations?.UI?.Hidden?.valueOf() === true) {
39
+ if (property.annotations && (property.annotations as any).UI?.HiddenFilter?.valueOf() === true)
40
+ Log.warning(
41
+ "Warning: Property " +
42
+ property.Value.path +
43
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
44
+ );
45
+ return true;
46
+ } else if (property.Value.$target && property.Value?.$target?.annotations?.UI?.Hidden?.valueOf() === true) {
47
+ if (property.Value?.$target?.annotations?.UI?.HiddenFilter?.valueOf() === true)
48
+ Log.warning(
49
+ "Warning: Property " +
50
+ property.Value.path +
51
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
52
+ );
53
+ return true;
54
+ } else return false;
55
+ case UIAnnotationTypes.DataFieldWithNavigationPath:
56
+ const propertyValueAnnotation = property.Value?.$target?.annotations;
57
+ if (propertyValueAnnotation?.UI?.Hidden?.valueOf() === true) {
58
+ if (propertyValueAnnotation?.UI?.HiddenFilter?.valueOf() === true)
59
+ Log.warning(
60
+ "Warning: Property " +
61
+ property.Value.path +
62
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
63
+ );
64
+ return true;
65
+ } else return false;
66
+ case UIAnnotationTypes.DataFieldWithUrl:
67
+ if (property.annotations?.UI?.Hidden?.valueOf() === true) {
68
+ if (property.annotations && (property.annotations as any).UI?.HiddenFilter?.valueOf() === true)
69
+ Log.warning(
70
+ "Warning: Property " +
71
+ property.Value.path +
72
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
73
+ );
74
+ return true;
75
+ } else return false;
76
+ default:
77
+ }
78
+ }
79
+ }
80
+ export function isAnnotationFieldStaticallyHidden(annotationProperty: DataFieldForAnnotationTypes) {
81
+ const target = annotationProperty.Target.$target.term;
82
+ // let ChartAnnotation: Chart, ConnectedFieldsAnnotation: ConnectedFields, FieldGroupAnnotation: FieldGroup, DataPointAnnotation: DataPoint;
83
+ switch (target) {
84
+ case UIAnnotationTerms.Chart:
85
+ let ischartMeasureHidden;
86
+ annotationProperty.Target.$target.Measures.forEach((chartMeasure) => {
87
+ if (chartMeasure.$target.annotations?.UI?.Hidden?.valueOf() === true) {
88
+ Log.warning(
89
+ "Warning: Measure attribute for Chart " +
90
+ chartMeasure.$target.name +
91
+ " is statically hidden hence chart can't be rendered"
92
+ );
93
+ if (chartMeasure.$target.annotations && (chartMeasure.$target.annotations as any).UI?.HiddenFilter?.valueOf() === true)
94
+ Log.warning(
95
+ "Warning: Property " +
96
+ chartMeasure.$target.name +
97
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
98
+ );
99
+ ischartMeasureHidden = true;
100
+ }
101
+ });
102
+ if (ischartMeasureHidden === true) return true;
103
+ else return false;
104
+ case UIAnnotationTerms.ConnectedFields:
105
+ if (annotationProperty) {
106
+ if (annotationProperty.annotations?.UI?.Hidden?.valueOf() === true) {
107
+ if (annotationProperty.annotations && (annotationProperty.annotations as any).UI?.HiddenFilter?.valueOf() === true)
108
+ Log.warning(
109
+ "Warning: Property " +
110
+ annotationProperty.Target.$target.qualifier +
111
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
112
+ );
113
+ return true;
114
+ } else return false;
115
+ }
116
+ break;
117
+ case UIAnnotationTerms.FieldGroup:
118
+ if (annotationProperty) {
119
+ (annotationProperty as any).Target.$target.Data.forEach((field: DataFieldAbstractTypes) =>
120
+ isReferencePropertyStaticallyHidden(field)
121
+ );
122
+ }
123
+ break;
124
+ case UIAnnotationTerms.DataPoint:
125
+ const propertyValueAnnotation = (annotationProperty.Target.$target as any).Value.$target;
126
+ if (propertyValueAnnotation.annotations?.UI?.Hidden?.valueOf() === true) {
127
+ if (propertyValueAnnotation.annotations?.UI?.HiddenFilter?.valueOf() === true)
128
+ Log.warning(
129
+ "Warning: Property " +
130
+ annotationProperty.Target.$target.Value.path +
131
+ " is set with both UI.Hidden and UI.HiddenFilter - please set only one of these! UI.HiddenFilter is ignored currently!"
132
+ );
133
+ return true;
134
+ } else {
135
+ return false;
136
+ }
137
+ default:
138
+ }
139
+ }
@@ -13,10 +13,10 @@ sap.ui.define(["../../helpers/StableIdHelper"], function (StableIdHelper) {
13
13
  * Shortcut to the stableIdHelper providing a "curry" like method where the last parameter is missing.
14
14
  *
15
15
  * @param sFixedPart
16
- * @returns {Function} A shortcut function with the fixed ID part
16
+ * @returns A shortcut function with the fixed ID part
17
17
  */
18
18
 
19
- function IDGenerator() {
19
+ function createIDGenerator() {
20
20
  for (var _len = arguments.length, sFixedPart = new Array(_len), _key = 0; _key < _len; _key++) {
21
21
  sFixedPart[_key] = arguments[_key];
22
22
  }
@@ -34,65 +34,67 @@ sap.ui.define(["../../helpers/StableIdHelper"], function (StableIdHelper) {
34
34
  */
35
35
 
36
36
 
37
- _exports.IDGenerator = IDGenerator;
38
- var HeaderFacetID = IDGenerator("HeaderFacet");
39
- _exports.HeaderFacetID = HeaderFacetID;
40
- var HeaderFacetContainerID = IDGenerator("HeaderFacetContainer");
41
- _exports.HeaderFacetContainerID = HeaderFacetContainerID;
42
- var HeaderFacetFormID = IDGenerator("HeaderFacet", "Form");
43
- _exports.HeaderFacetFormID = HeaderFacetFormID;
44
- var CustomHeaderFacetID = IDGenerator("HeaderFacetCustomContainer");
45
- _exports.CustomHeaderFacetID = CustomHeaderFacetID;
46
- var EditableHeaderSectionID = IDGenerator("EditableHeaderSection");
47
- _exports.EditableHeaderSectionID = EditableHeaderSectionID;
48
- var SectionID = IDGenerator("FacetSection");
49
- _exports.SectionID = SectionID;
50
- var CustomSectionID = IDGenerator("CustomSection");
51
- _exports.CustomSectionID = CustomSectionID;
52
- var SubSectionID = IDGenerator("FacetSubSection");
53
- _exports.SubSectionID = SubSectionID;
54
- var CustomSubSectionID = IDGenerator("CustomSubSection");
55
- _exports.CustomSubSectionID = CustomSubSectionID;
56
- var SideContentID = IDGenerator("SideContent");
57
- _exports.SideContentID = SideContentID;
37
+ _exports.createIDGenerator = createIDGenerator;
38
+ var getHeaderFacetID = createIDGenerator("HeaderFacet");
39
+ _exports.getHeaderFacetID = getHeaderFacetID;
40
+ var getHeaderFacetContainerID = createIDGenerator("HeaderFacetContainer");
41
+ _exports.getHeaderFacetContainerID = getHeaderFacetContainerID;
42
+ var getHeaderFacetFormID = createIDGenerator("HeaderFacet", "Form");
43
+ _exports.getHeaderFacetFormID = getHeaderFacetFormID;
44
+ var getCustomHeaderFacetID = createIDGenerator("HeaderFacetCustomContainer");
45
+ _exports.getCustomHeaderFacetID = getCustomHeaderFacetID;
46
+ var getEditableHeaderSectionID = createIDGenerator("EditableHeaderSection");
47
+ _exports.getEditableHeaderSectionID = getEditableHeaderSectionID;
48
+ var getSectionID = createIDGenerator("FacetSection");
49
+ _exports.getSectionID = getSectionID;
50
+ var getCustomSectionID = createIDGenerator("CustomSection");
51
+ _exports.getCustomSectionID = getCustomSectionID;
52
+ var getSubSectionID = createIDGenerator("FacetSubSection");
53
+ _exports.getSubSectionID = getSubSectionID;
54
+ var getCustomSubSectionID = createIDGenerator("CustomSubSection");
55
+ _exports.getCustomSubSectionID = getCustomSubSectionID;
56
+ var getSideContentID = createIDGenerator("SideContent");
57
+ _exports.getSideContentID = getSideContentID;
58
58
 
59
- var SideContentLayoutID = function (sSectionID) {
59
+ var getSideContentLayoutID = function (sSectionID) {
60
60
  return generate(["fe", sSectionID, "SideContentLayout"]);
61
61
  };
62
62
 
63
- _exports.SideContentLayoutID = SideContentLayoutID;
64
- var FormID = IDGenerator("Form");
65
- _exports.FormID = FormID;
63
+ _exports.getSideContentLayoutID = getSideContentLayoutID;
64
+ var getFormID = createIDGenerator("Form");
65
+ _exports.getFormID = getFormID;
66
+ var getFormContainerID = createIDGenerator("FormContainer");
67
+ _exports.getFormContainerID = getFormContainerID;
66
68
 
67
- var FormStandardActionButtonID = function (sFormContainerId, sActionName) {
69
+ var getFormStandardActionButtonID = function (sFormContainerId, sActionName) {
68
70
  return generate(["fe", "FormContainer", sFormContainerId, "StandardAction", sActionName]);
69
71
  };
70
72
 
71
- _exports.FormStandardActionButtonID = FormStandardActionButtonID;
72
- var TableID = IDGenerator("table");
73
- _exports.TableID = TableID;
74
- var CustomTabID = IDGenerator("CustomTab");
75
- _exports.CustomTabID = CustomTabID;
76
- var FilterBarID = IDGenerator("FilterBar");
77
- _exports.FilterBarID = FilterBarID;
78
- var IconTabBarID = IDGenerator("TabMultipleMode");
79
- _exports.IconTabBarID = IconTabBarID;
73
+ _exports.getFormStandardActionButtonID = getFormStandardActionButtonID;
74
+ var getTableID = createIDGenerator("table");
75
+ _exports.getTableID = getTableID;
76
+ var getCustomTabID = createIDGenerator("CustomTab");
77
+ _exports.getCustomTabID = getCustomTabID;
78
+ var getFilterBarID = createIDGenerator("FilterBar");
79
+ _exports.getFilterBarID = getFilterBarID;
80
+ var getIconTabBarID = createIDGenerator("TabMultipleMode");
81
+ _exports.getIconTabBarID = getIconTabBarID;
80
82
 
81
- var FilterVariantManagementID = function (sFilterID) {
83
+ var getFilterVariantManagementID = function (sFilterID) {
82
84
  return generate([sFilterID, "VariantManagement"]);
83
85
  };
84
86
 
85
- _exports.FilterVariantManagementID = FilterVariantManagementID;
86
- var ChartID = IDGenerator("Chart");
87
- _exports.ChartID = ChartID;
87
+ _exports.getFilterVariantManagementID = getFilterVariantManagementID;
88
+ var getChartID = createIDGenerator("Chart");
89
+ _exports.getChartID = getChartID;
88
90
 
89
- var CustomActionID = function (sActionID) {
91
+ var getCustomActionID = function (sActionID) {
90
92
  return generate(["CustomAction", sActionID]);
91
93
  };
92
94
 
93
- _exports.CustomActionID = CustomActionID;
94
- var KPIID = IDGenerator("KPI");
95
- _exports.KPIID = KPIID;
95
+ _exports.getCustomActionID = getCustomActionID;
96
+ var getKPIID = createIDGenerator("KPI");
97
+ _exports.getKPIID = getKPIID;
96
98
  return _exports;
97
99
  }, false);
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIklELnRzIl0sIm5hbWVzIjpbIkJBU0VfSUQiLCJJREdlbmVyYXRvciIsInNGaXhlZFBhcnQiLCJzSURQYXJ0IiwiZ2VuZXJhdGUiLCJjb25jYXQiLCJIZWFkZXJGYWNldElEIiwiSGVhZGVyRmFjZXRDb250YWluZXJJRCIsIkhlYWRlckZhY2V0Rm9ybUlEIiwiQ3VzdG9tSGVhZGVyRmFjZXRJRCIsIkVkaXRhYmxlSGVhZGVyU2VjdGlvbklEIiwiU2VjdGlvbklEIiwiQ3VzdG9tU2VjdGlvbklEIiwiU3ViU2VjdGlvbklEIiwiQ3VzdG9tU3ViU2VjdGlvbklEIiwiU2lkZUNvbnRlbnRJRCIsIlNpZGVDb250ZW50TGF5b3V0SUQiLCJzU2VjdGlvbklEIiwiRm9ybUlEIiwiRm9ybVN0YW5kYXJkQWN0aW9uQnV0dG9uSUQiLCJzRm9ybUNvbnRhaW5lcklkIiwic0FjdGlvbk5hbWUiLCJUYWJsZUlEIiwiQ3VzdG9tVGFiSUQiLCJGaWx0ZXJCYXJJRCIsIkljb25UYWJCYXJJRCIsIkZpbHRlclZhcmlhbnRNYW5hZ2VtZW50SUQiLCJzRmlsdGVySUQiLCJDaGFydElEIiwiQ3VzdG9tQWN0aW9uSUQiLCJzQWN0aW9uSUQiLCJLUElJRCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQUNBLE1BQU1BLE9BQWlCLEdBQUcsQ0FBQyxJQUFELENBQTFCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNPLFdBQVNDLFdBQVQsR0FBOEM7QUFBQSxzQ0FBdEJDLFVBQXNCO0FBQXRCQSxNQUFBQSxVQUFzQjtBQUFBOztBQUNwRCxXQUFPLFlBQStCO0FBQUEseUNBQW5CQyxPQUFtQjtBQUFuQkEsUUFBQUEsT0FBbUI7QUFBQTs7QUFDckMsYUFBT0MsUUFBUSxDQUFDSixPQUFPLENBQUNLLE1BQVIsT0FBQUwsT0FBTyxFQUFXRSxVQUFYLFFBQTBCQyxPQUExQixFQUFSLENBQWY7QUFDQSxLQUZEO0FBR0E7QUFFRDtBQUNBO0FBQ0E7Ozs7QUFDTyxNQUFNRyxhQUFhLEdBQUdMLFdBQVcsQ0FBQyxhQUFELENBQWpDOztBQUNBLE1BQU1NLHNCQUFzQixHQUFHTixXQUFXLENBQUMsc0JBQUQsQ0FBMUM7O0FBQ0EsTUFBTU8saUJBQWlCLEdBQUdQLFdBQVcsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLENBQXJDOztBQUNBLE1BQU1RLG1CQUFtQixHQUFHUixXQUFXLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTVMsdUJBQXVCLEdBQUdULFdBQVcsQ0FBQyx1QkFBRCxDQUEzQzs7QUFDQSxNQUFNVSxTQUFTLEdBQUdWLFdBQVcsQ0FBQyxjQUFELENBQTdCOztBQUNBLE1BQU1XLGVBQWUsR0FBR1gsV0FBVyxDQUFDLGVBQUQsQ0FBbkM7O0FBQ0EsTUFBTVksWUFBWSxHQUFHWixXQUFXLENBQUMsaUJBQUQsQ0FBaEM7O0FBQ0EsTUFBTWEsa0JBQWtCLEdBQUdiLFdBQVcsQ0FBQyxrQkFBRCxDQUF0Qzs7QUFDQSxNQUFNYyxhQUFhLEdBQUdkLFdBQVcsQ0FBQyxhQUFELENBQWpDOzs7QUFDQSxNQUFNZSxtQkFBbUIsR0FBRyxVQUFTQyxVQUFULEVBQTZCO0FBQy9ELFdBQU9iLFFBQVEsQ0FBQyxDQUFDLElBQUQsRUFBT2EsVUFBUCxFQUFtQixtQkFBbkIsQ0FBRCxDQUFmO0FBQ0EsR0FGTTs7O0FBR0EsTUFBTUMsTUFBTSxHQUFHakIsV0FBVyxDQUFDLE1BQUQsQ0FBMUI7OztBQUNBLE1BQU1rQiwwQkFBMEIsR0FBRyxVQUFTQyxnQkFBVCxFQUFtQ0MsV0FBbkMsRUFBd0Q7QUFDakcsV0FBT2pCLFFBQVEsQ0FBQyxDQUFDLElBQUQsRUFBTyxlQUFQLEVBQXdCZ0IsZ0JBQXhCLEVBQTBDLGdCQUExQyxFQUE0REMsV0FBNUQsQ0FBRCxDQUFmO0FBQ0EsR0FGTTs7O0FBR0EsTUFBTUMsT0FBTyxHQUFHckIsV0FBVyxDQUFDLE9BQUQsQ0FBM0I7O0FBQ0EsTUFBTXNCLFdBQVcsR0FBR3RCLFdBQVcsQ0FBQyxXQUFELENBQS9COztBQUNBLE1BQU11QixXQUFXLEdBQUd2QixXQUFXLENBQUMsV0FBRCxDQUEvQjs7QUFDQSxNQUFNd0IsWUFBWSxHQUFHeEIsV0FBVyxDQUFDLGlCQUFELENBQWhDOzs7QUFDQSxNQUFNeUIseUJBQXlCLEdBQUcsVUFBU0MsU0FBVCxFQUE0QjtBQUNwRSxXQUFPdkIsUUFBUSxDQUFDLENBQUN1QixTQUFELEVBQVksbUJBQVosQ0FBRCxDQUFmO0FBQ0EsR0FGTTs7O0FBR0EsTUFBTUMsT0FBTyxHQUFHM0IsV0FBVyxDQUFDLE9BQUQsQ0FBM0I7OztBQUNBLE1BQU00QixjQUFjLEdBQUcsVUFBU0MsU0FBVCxFQUE0QjtBQUN6RCxXQUFPMUIsUUFBUSxDQUFDLENBQUMsY0FBRCxFQUFpQjBCLFNBQWpCLENBQUQsQ0FBZjtBQUNBLEdBRk07OztBQUdBLE1BQU1DLEtBQUssR0FBRzlCLFdBQVcsQ0FBQyxLQUFELENBQXpCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBGYWNldFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG50eXBlIElEUGFydCA9IHN0cmluZyB8IHsgRmFjZXQ6IEZhY2V0VHlwZXMgfSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXM7XG5jb25zdCBCQVNFX0lEOiBJRFBhcnRbXSA9IFtcImZlXCJdO1xuXG4vKipcbiAqIFNob3J0Y3V0IHRvIHRoZSBzdGFibGVJZEhlbHBlciBwcm92aWRpbmcgYSBcImN1cnJ5XCIgbGlrZSBtZXRob2Qgd2hlcmUgdGhlIGxhc3QgcGFyYW1ldGVyIGlzIG1pc3NpbmcuXG4gKlxuICogQHBhcmFtIHNGaXhlZFBhcnRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBzaG9ydGN1dCBmdW5jdGlvbiB3aXRoIHRoZSBmaXhlZCBJRCBwYXJ0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJREdlbmVyYXRvciguLi5zRml4ZWRQYXJ0OiBJRFBhcnRbXSkge1xuXHRyZXR1cm4gZnVuY3Rpb24oLi4uc0lEUGFydDogSURQYXJ0W10pIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoQkFTRV9JRC5jb25jYXQoLi4uc0ZpeGVkUGFydCwgLi4uc0lEUGFydCkpO1xuXHR9O1xufVxuXG4vKipcbiAqIFRob3NlIGFyZSBhbGwgaGVscGVycyB0byBjZW50cmFsaXplIElEIGdlbmVyYXRpb24gaW4gdGhlIGNvZGUgZm9yIGRpZmZlcmVudCBlbGVtZW50c1xuICovXG5leHBvcnQgY29uc3QgSGVhZGVyRmFjZXRJRCA9IElER2VuZXJhdG9yKFwiSGVhZGVyRmFjZXRcIik7XG5leHBvcnQgY29uc3QgSGVhZGVyRmFjZXRDb250YWluZXJJRCA9IElER2VuZXJhdG9yKFwiSGVhZGVyRmFjZXRDb250YWluZXJcIik7XG5leHBvcnQgY29uc3QgSGVhZGVyRmFjZXRGb3JtSUQgPSBJREdlbmVyYXRvcihcIkhlYWRlckZhY2V0XCIsIFwiRm9ybVwiKTtcbmV4cG9ydCBjb25zdCBDdXN0b21IZWFkZXJGYWNldElEID0gSURHZW5lcmF0b3IoXCJIZWFkZXJGYWNldEN1c3RvbUNvbnRhaW5lclwiKTtcbmV4cG9ydCBjb25zdCBFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCA9IElER2VuZXJhdG9yKFwiRWRpdGFibGVIZWFkZXJTZWN0aW9uXCIpO1xuZXhwb3J0IGNvbnN0IFNlY3Rpb25JRCA9IElER2VuZXJhdG9yKFwiRmFjZXRTZWN0aW9uXCIpO1xuZXhwb3J0IGNvbnN0IEN1c3RvbVNlY3Rpb25JRCA9IElER2VuZXJhdG9yKFwiQ3VzdG9tU2VjdGlvblwiKTtcbmV4cG9ydCBjb25zdCBTdWJTZWN0aW9uSUQgPSBJREdlbmVyYXRvcihcIkZhY2V0U3ViU2VjdGlvblwiKTtcbmV4cG9ydCBjb25zdCBDdXN0b21TdWJTZWN0aW9uSUQgPSBJREdlbmVyYXRvcihcIkN1c3RvbVN1YlNlY3Rpb25cIik7XG5leHBvcnQgY29uc3QgU2lkZUNvbnRlbnRJRCA9IElER2VuZXJhdG9yKFwiU2lkZUNvbnRlbnRcIik7XG5leHBvcnQgY29uc3QgU2lkZUNvbnRlbnRMYXlvdXRJRCA9IGZ1bmN0aW9uKHNTZWN0aW9uSUQ6IHN0cmluZykge1xuXHRyZXR1cm4gZ2VuZXJhdGUoW1wiZmVcIiwgc1NlY3Rpb25JRCwgXCJTaWRlQ29udGVudExheW91dFwiXSk7XG59O1xuZXhwb3J0IGNvbnN0IEZvcm1JRCA9IElER2VuZXJhdG9yKFwiRm9ybVwiKTtcbmV4cG9ydCBjb25zdCBGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCA9IGZ1bmN0aW9uKHNGb3JtQ29udGFpbmVySWQ6IHN0cmluZywgc0FjdGlvbk5hbWU6IHN0cmluZykge1xuXHRyZXR1cm4gZ2VuZXJhdGUoW1wiZmVcIiwgXCJGb3JtQ29udGFpbmVyXCIsIHNGb3JtQ29udGFpbmVySWQsIFwiU3RhbmRhcmRBY3Rpb25cIiwgc0FjdGlvbk5hbWVdKTtcbn07XG5leHBvcnQgY29uc3QgVGFibGVJRCA9IElER2VuZXJhdG9yKFwidGFibGVcIik7XG5leHBvcnQgY29uc3QgQ3VzdG9tVGFiSUQgPSBJREdlbmVyYXRvcihcIkN1c3RvbVRhYlwiKTtcbmV4cG9ydCBjb25zdCBGaWx0ZXJCYXJJRCA9IElER2VuZXJhdG9yKFwiRmlsdGVyQmFyXCIpO1xuZXhwb3J0IGNvbnN0IEljb25UYWJCYXJJRCA9IElER2VuZXJhdG9yKFwiVGFiTXVsdGlwbGVNb2RlXCIpO1xuZXhwb3J0IGNvbnN0IEZpbHRlclZhcmlhbnRNYW5hZ2VtZW50SUQgPSBmdW5jdGlvbihzRmlsdGVySUQ6IHN0cmluZykge1xuXHRyZXR1cm4gZ2VuZXJhdGUoW3NGaWx0ZXJJRCwgXCJWYXJpYW50TWFuYWdlbWVudFwiXSk7XG59O1xuZXhwb3J0IGNvbnN0IENoYXJ0SUQgPSBJREdlbmVyYXRvcihcIkNoYXJ0XCIpO1xuZXhwb3J0IGNvbnN0IEN1c3RvbUFjdGlvbklEID0gZnVuY3Rpb24oc0FjdGlvbklEOiBzdHJpbmcpIHtcblx0cmV0dXJuIGdlbmVyYXRlKFtcIkN1c3RvbUFjdGlvblwiLCBzQWN0aW9uSURdKTtcbn07XG5leHBvcnQgY29uc3QgS1BJSUQgPSBJREdlbmVyYXRvcihcIktQSVwiKTtcbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCQVNFX0lEIiwiY3JlYXRlSURHZW5lcmF0b3IiLCJzRml4ZWRQYXJ0Iiwic0lEUGFydCIsImdlbmVyYXRlIiwiY29uY2F0IiwiZ2V0SGVhZGVyRmFjZXRJRCIsImdldEhlYWRlckZhY2V0Q29udGFpbmVySUQiLCJnZXRIZWFkZXJGYWNldEZvcm1JRCIsImdldEN1c3RvbUhlYWRlckZhY2V0SUQiLCJnZXRFZGl0YWJsZUhlYWRlclNlY3Rpb25JRCIsImdldFNlY3Rpb25JRCIsImdldEN1c3RvbVNlY3Rpb25JRCIsImdldFN1YlNlY3Rpb25JRCIsImdldEN1c3RvbVN1YlNlY3Rpb25JRCIsImdldFNpZGVDb250ZW50SUQiLCJnZXRTaWRlQ29udGVudExheW91dElEIiwic1NlY3Rpb25JRCIsImdldEZvcm1JRCIsImdldEZvcm1Db250YWluZXJJRCIsImdldEZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIiwic0Zvcm1Db250YWluZXJJZCIsInNBY3Rpb25OYW1lIiwiZ2V0VGFibGVJRCIsImdldEN1c3RvbVRhYklEIiwiZ2V0RmlsdGVyQmFySUQiLCJnZXRJY29uVGFiQmFySUQiLCJnZXRGaWx0ZXJWYXJpYW50TWFuYWdlbWVudElEIiwic0ZpbHRlcklEIiwiZ2V0Q2hhcnRJRCIsImdldEN1c3RvbUFjdGlvbklEIiwic0FjdGlvbklEIiwiZ2V0S1BJSUQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIklELnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRmFjZXRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbnR5cGUgSURQYXJ0ID0gc3RyaW5nIHwgeyBGYWNldDogRmFjZXRUeXBlcyB9IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcztcbmNvbnN0IEJBU0VfSUQ6IElEUGFydFtdID0gW1wiZmVcIl07XG5cbi8qKlxuICogU2hvcnRjdXQgdG8gdGhlIHN0YWJsZUlkSGVscGVyIHByb3ZpZGluZyBhIFwiY3VycnlcIiBsaWtlIG1ldGhvZCB3aGVyZSB0aGUgbGFzdCBwYXJhbWV0ZXIgaXMgbWlzc2luZy5cbiAqXG4gKiBAcGFyYW0gc0ZpeGVkUGFydFxuICogQHJldHVybnMgQSBzaG9ydGN1dCBmdW5jdGlvbiB3aXRoIHRoZSBmaXhlZCBJRCBwYXJ0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJREdlbmVyYXRvciguLi5zRml4ZWRQYXJ0OiBJRFBhcnRbXSkge1xuXHRyZXR1cm4gZnVuY3Rpb24gKC4uLnNJRFBhcnQ6IElEUGFydFtdKSB7XG5cdFx0cmV0dXJuIGdlbmVyYXRlKEJBU0VfSUQuY29uY2F0KC4uLnNGaXhlZFBhcnQsIC4uLnNJRFBhcnQpKTtcblx0fTtcbn1cblxuLyoqXG4gKiBUaG9zZSBhcmUgYWxsIGhlbHBlcnMgdG8gY2VudHJhbGl6ZSBJRCBnZW5lcmF0aW9uIGluIHRoZSBjb2RlIGZvciBkaWZmZXJlbnQgZWxlbWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhlYWRlckZhY2V0SUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIkhlYWRlckZhY2V0XCIpO1xuZXhwb3J0IGNvbnN0IGdldEhlYWRlckZhY2V0Q29udGFpbmVySUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIkhlYWRlckZhY2V0Q29udGFpbmVyXCIpO1xuZXhwb3J0IGNvbnN0IGdldEhlYWRlckZhY2V0Rm9ybUlEID0gY3JlYXRlSURHZW5lcmF0b3IoXCJIZWFkZXJGYWNldFwiLCBcIkZvcm1cIik7XG5leHBvcnQgY29uc3QgZ2V0Q3VzdG9tSGVhZGVyRmFjZXRJRCA9IGNyZWF0ZUlER2VuZXJhdG9yKFwiSGVhZGVyRmFjZXRDdXN0b21Db250YWluZXJcIik7XG5leHBvcnQgY29uc3QgZ2V0RWRpdGFibGVIZWFkZXJTZWN0aW9uSUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIkVkaXRhYmxlSGVhZGVyU2VjdGlvblwiKTtcbmV4cG9ydCBjb25zdCBnZXRTZWN0aW9uSUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIkZhY2V0U2VjdGlvblwiKTtcbmV4cG9ydCBjb25zdCBnZXRDdXN0b21TZWN0aW9uSUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIkN1c3RvbVNlY3Rpb25cIik7XG5leHBvcnQgY29uc3QgZ2V0U3ViU2VjdGlvbklEID0gY3JlYXRlSURHZW5lcmF0b3IoXCJGYWNldFN1YlNlY3Rpb25cIik7XG5leHBvcnQgY29uc3QgZ2V0Q3VzdG9tU3ViU2VjdGlvbklEID0gY3JlYXRlSURHZW5lcmF0b3IoXCJDdXN0b21TdWJTZWN0aW9uXCIpO1xuZXhwb3J0IGNvbnN0IGdldFNpZGVDb250ZW50SUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIlNpZGVDb250ZW50XCIpO1xuZXhwb3J0IGNvbnN0IGdldFNpZGVDb250ZW50TGF5b3V0SUQgPSBmdW5jdGlvbiAoc1NlY3Rpb25JRDogc3RyaW5nKSB7XG5cdHJldHVybiBnZW5lcmF0ZShbXCJmZVwiLCBzU2VjdGlvbklELCBcIlNpZGVDb250ZW50TGF5b3V0XCJdKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Rm9ybUlEID0gY3JlYXRlSURHZW5lcmF0b3IoXCJGb3JtXCIpO1xuZXhwb3J0IGNvbnN0IGdldEZvcm1Db250YWluZXJJRCA9IGNyZWF0ZUlER2VuZXJhdG9yKFwiRm9ybUNvbnRhaW5lclwiKTtcbmV4cG9ydCBjb25zdCBnZXRGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCA9IGZ1bmN0aW9uIChzRm9ybUNvbnRhaW5lcklkOiBzdHJpbmcsIHNBY3Rpb25OYW1lOiBzdHJpbmcpIHtcblx0cmV0dXJuIGdlbmVyYXRlKFtcImZlXCIsIFwiRm9ybUNvbnRhaW5lclwiLCBzRm9ybUNvbnRhaW5lcklkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIHNBY3Rpb25OYW1lXSk7XG59O1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlSUQgPSBjcmVhdGVJREdlbmVyYXRvcihcInRhYmxlXCIpO1xuZXhwb3J0IGNvbnN0IGdldEN1c3RvbVRhYklEID0gY3JlYXRlSURHZW5lcmF0b3IoXCJDdXN0b21UYWJcIik7XG5leHBvcnQgY29uc3QgZ2V0RmlsdGVyQmFySUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIkZpbHRlckJhclwiKTtcbmV4cG9ydCBjb25zdCBnZXRJY29uVGFiQmFySUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIlRhYk11bHRpcGxlTW9kZVwiKTtcbmV4cG9ydCBjb25zdCBnZXRGaWx0ZXJWYXJpYW50TWFuYWdlbWVudElEID0gZnVuY3Rpb24gKHNGaWx0ZXJJRDogc3RyaW5nKSB7XG5cdHJldHVybiBnZW5lcmF0ZShbc0ZpbHRlcklELCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0Q2hhcnRJRCA9IGNyZWF0ZUlER2VuZXJhdG9yKFwiQ2hhcnRcIik7XG5leHBvcnQgY29uc3QgZ2V0Q3VzdG9tQWN0aW9uSUQgPSBmdW5jdGlvbiAoc0FjdGlvbklEOiBzdHJpbmcpIHtcblx0cmV0dXJuIGdlbmVyYXRlKFtcIkN1c3RvbUFjdGlvblwiLCBzQWN0aW9uSURdKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0S1BJSUQgPSBjcmVhdGVJREdlbmVyYXRvcihcIktQSVwiKTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7OztFQUdBLElBQU1BLE9BQWlCLEdBQUcsQ0FBQyxJQUFELENBQTFCO0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQUNPLFNBQVNDLGlCQUFULEdBQW9EO0lBQUEsa0NBQXRCQyxVQUFzQjtNQUF0QkEsVUFBc0I7SUFBQTs7SUFDMUQsT0FBTyxZQUFnQztNQUFBLG1DQUFuQkMsT0FBbUI7UUFBbkJBLE9BQW1CO01BQUE7O01BQ3RDLE9BQU9DLFFBQVEsQ0FBQ0osT0FBTyxDQUFDSyxNQUFSLE9BQUFMLE9BQU8sRUFBV0UsVUFBWCxRQUEwQkMsT0FBMUIsRUFBUixDQUFmO0lBQ0EsQ0FGRDtFQUdBO0VBRUQ7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTUcsZ0JBQWdCLEdBQUdMLGlCQUFpQixDQUFDLGFBQUQsQ0FBMUM7O0VBQ0EsSUFBTU0seUJBQXlCLEdBQUdOLGlCQUFpQixDQUFDLHNCQUFELENBQW5EOztFQUNBLElBQU1PLG9CQUFvQixHQUFHUCxpQkFBaUIsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLENBQTlDOztFQUNBLElBQU1RLHNCQUFzQixHQUFHUixpQkFBaUIsQ0FBQyw0QkFBRCxDQUFoRDs7RUFDQSxJQUFNUywwQkFBMEIsR0FBR1QsaUJBQWlCLENBQUMsdUJBQUQsQ0FBcEQ7O0VBQ0EsSUFBTVUsWUFBWSxHQUFHVixpQkFBaUIsQ0FBQyxjQUFELENBQXRDOztFQUNBLElBQU1XLGtCQUFrQixHQUFHWCxpQkFBaUIsQ0FBQyxlQUFELENBQTVDOztFQUNBLElBQU1ZLGVBQWUsR0FBR1osaUJBQWlCLENBQUMsaUJBQUQsQ0FBekM7O0VBQ0EsSUFBTWEscUJBQXFCLEdBQUdiLGlCQUFpQixDQUFDLGtCQUFELENBQS9DOztFQUNBLElBQU1jLGdCQUFnQixHQUFHZCxpQkFBaUIsQ0FBQyxhQUFELENBQTFDOzs7RUFDQSxJQUFNZSxzQkFBc0IsR0FBRyxVQUFVQyxVQUFWLEVBQThCO0lBQ25FLE9BQU9iLFFBQVEsQ0FBQyxDQUFDLElBQUQsRUFBT2EsVUFBUCxFQUFtQixtQkFBbkIsQ0FBRCxDQUFmO0VBQ0EsQ0FGTTs7O0VBR0EsSUFBTUMsU0FBUyxHQUFHakIsaUJBQWlCLENBQUMsTUFBRCxDQUFuQzs7RUFDQSxJQUFNa0Isa0JBQWtCLEdBQUdsQixpQkFBaUIsQ0FBQyxlQUFELENBQTVDOzs7RUFDQSxJQUFNbUIsNkJBQTZCLEdBQUcsVUFBVUMsZ0JBQVYsRUFBb0NDLFdBQXBDLEVBQXlEO0lBQ3JHLE9BQU9sQixRQUFRLENBQUMsQ0FBQyxJQUFELEVBQU8sZUFBUCxFQUF3QmlCLGdCQUF4QixFQUEwQyxnQkFBMUMsRUFBNERDLFdBQTVELENBQUQsQ0FBZjtFQUNBLENBRk07OztFQUdBLElBQU1DLFVBQVUsR0FBR3RCLGlCQUFpQixDQUFDLE9BQUQsQ0FBcEM7O0VBQ0EsSUFBTXVCLGNBQWMsR0FBR3ZCLGlCQUFpQixDQUFDLFdBQUQsQ0FBeEM7O0VBQ0EsSUFBTXdCLGNBQWMsR0FBR3hCLGlCQUFpQixDQUFDLFdBQUQsQ0FBeEM7O0VBQ0EsSUFBTXlCLGVBQWUsR0FBR3pCLGlCQUFpQixDQUFDLGlCQUFELENBQXpDOzs7RUFDQSxJQUFNMEIsNEJBQTRCLEdBQUcsVUFBVUMsU0FBVixFQUE2QjtJQUN4RSxPQUFPeEIsUUFBUSxDQUFDLENBQUN3QixTQUFELEVBQVksbUJBQVosQ0FBRCxDQUFmO0VBQ0EsQ0FGTTs7O0VBR0EsSUFBTUMsVUFBVSxHQUFHNUIsaUJBQWlCLENBQUMsT0FBRCxDQUFwQzs7O0VBQ0EsSUFBTTZCLGlCQUFpQixHQUFHLFVBQVVDLFNBQVYsRUFBNkI7SUFDN0QsT0FBTzNCLFFBQVEsQ0FBQyxDQUFDLGNBQUQsRUFBaUIyQixTQUFqQixDQUFELENBQWY7RUFDQSxDQUZNOzs7RUFHQSxJQUFNQyxRQUFRLEdBQUcvQixpQkFBaUIsQ0FBQyxLQUFELENBQWxDIn0=
@@ -1,5 +1,5 @@
1
+ import type { DataFieldAbstractTypes, FacetTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
1
2
  import { generate } from "../../helpers/StableIdHelper";
2
- import { DataFieldAbstractTypes, FacetTypes } from "@sap-ux/vocabularies-types";
3
3
  type IDPart = string | { Facet: FacetTypes } | DataFieldAbstractTypes;
4
4
  const BASE_ID: IDPart[] = ["fe"];
5
5
 
@@ -7,10 +7,10 @@ const BASE_ID: IDPart[] = ["fe"];
7
7
  * Shortcut to the stableIdHelper providing a "curry" like method where the last parameter is missing.
8
8
  *
9
9
  * @param sFixedPart
10
- * @returns {Function} A shortcut function with the fixed ID part
10
+ * @returns A shortcut function with the fixed ID part
11
11
  */
12
- export function IDGenerator(...sFixedPart: IDPart[]) {
13
- return function(...sIDPart: IDPart[]) {
12
+ export function createIDGenerator(...sFixedPart: IDPart[]) {
13
+ return function (...sIDPart: IDPart[]) {
14
14
  return generate(BASE_ID.concat(...sFixedPart, ...sIDPart));
15
15
  };
16
16
  }
@@ -18,32 +18,33 @@ export function IDGenerator(...sFixedPart: IDPart[]) {
18
18
  /**
19
19
  * Those are all helpers to centralize ID generation in the code for different elements
20
20
  */
21
- export const HeaderFacetID = IDGenerator("HeaderFacet");
22
- export const HeaderFacetContainerID = IDGenerator("HeaderFacetContainer");
23
- export const HeaderFacetFormID = IDGenerator("HeaderFacet", "Form");
24
- export const CustomHeaderFacetID = IDGenerator("HeaderFacetCustomContainer");
25
- export const EditableHeaderSectionID = IDGenerator("EditableHeaderSection");
26
- export const SectionID = IDGenerator("FacetSection");
27
- export const CustomSectionID = IDGenerator("CustomSection");
28
- export const SubSectionID = IDGenerator("FacetSubSection");
29
- export const CustomSubSectionID = IDGenerator("CustomSubSection");
30
- export const SideContentID = IDGenerator("SideContent");
31
- export const SideContentLayoutID = function(sSectionID: string) {
21
+ export const getHeaderFacetID = createIDGenerator("HeaderFacet");
22
+ export const getHeaderFacetContainerID = createIDGenerator("HeaderFacetContainer");
23
+ export const getHeaderFacetFormID = createIDGenerator("HeaderFacet", "Form");
24
+ export const getCustomHeaderFacetID = createIDGenerator("HeaderFacetCustomContainer");
25
+ export const getEditableHeaderSectionID = createIDGenerator("EditableHeaderSection");
26
+ export const getSectionID = createIDGenerator("FacetSection");
27
+ export const getCustomSectionID = createIDGenerator("CustomSection");
28
+ export const getSubSectionID = createIDGenerator("FacetSubSection");
29
+ export const getCustomSubSectionID = createIDGenerator("CustomSubSection");
30
+ export const getSideContentID = createIDGenerator("SideContent");
31
+ export const getSideContentLayoutID = function (sSectionID: string) {
32
32
  return generate(["fe", sSectionID, "SideContentLayout"]);
33
33
  };
34
- export const FormID = IDGenerator("Form");
35
- export const FormStandardActionButtonID = function(sFormContainerId: string, sActionName: string) {
34
+ export const getFormID = createIDGenerator("Form");
35
+ export const getFormContainerID = createIDGenerator("FormContainer");
36
+ export const getFormStandardActionButtonID = function (sFormContainerId: string, sActionName: string) {
36
37
  return generate(["fe", "FormContainer", sFormContainerId, "StandardAction", sActionName]);
37
38
  };
38
- export const TableID = IDGenerator("table");
39
- export const CustomTabID = IDGenerator("CustomTab");
40
- export const FilterBarID = IDGenerator("FilterBar");
41
- export const IconTabBarID = IDGenerator("TabMultipleMode");
42
- export const FilterVariantManagementID = function(sFilterID: string) {
39
+ export const getTableID = createIDGenerator("table");
40
+ export const getCustomTabID = createIDGenerator("CustomTab");
41
+ export const getFilterBarID = createIDGenerator("FilterBar");
42
+ export const getIconTabBarID = createIDGenerator("TabMultipleMode");
43
+ export const getFilterVariantManagementID = function (sFilterID: string) {
43
44
  return generate([sFilterID, "VariantManagement"]);
44
45
  };
45
- export const ChartID = IDGenerator("Chart");
46
- export const CustomActionID = function(sActionID: string) {
46
+ export const getChartID = createIDGenerator("Chart");
47
+ export const getCustomActionID = function (sActionID: string) {
47
48
  return generate(["CustomAction", sActionID]);
48
49
  };
49
- export const KPIID = IDGenerator("KPI");
50
+ export const getKPIID = createIDGenerator("KPI");
@@ -64,4 +64,4 @@ sap.ui.define([], function () {
64
64
  _exports.IssueType = IssueType;
65
65
  return _exports;
66
66
  }, false);
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIklzc3VlTWFuYWdlci50cyJdLCJuYW1lcyI6WyJJc3N1ZVNldmVyaXR5IiwiSXNzdWVDYXRlZ29yeVR5cGUiLCJGYWNldHMiLCJNaXNzaW5nSUQiLCJVblN1cHBvcnRlZExldmVsIiwiQW5ub3RhdGlvbkNvbHVtbnMiLCJJbnZhbGlkS2V5IiwiQW5ub3RhdGlvbnMiLCJJZ25vcmVkQW5ub3RhdGlvbiIsIklzc3VlQ2F0ZWdvcnkiLCJJc3N1ZVR5cGUiLCJNSVNTSU5HX0xJTkVJVEVNIiwiTUlTU0lOR19TRUxFQ1RJT05GSUVMRCIsIk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTiIsIlJFUVVJUkVTQ09OVEVYVCIsIklOTElORSIsIkRFVEVSTUlOSU5HIiwiTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMiLCJWQUxVRUxJU1QiLCJQUkVTRU5UQVRJT05WQVJJQU5UIiwiQ0hBUlQiLCJWQUxVRUxJU1RDT05GSUciLCJGVUxMU0NSRUVOTU9ERV9OT1RfT05fTElTVFJFUE9SVCIsIktQSV9JU1NVRVMiLCJLUElfTk9UX0ZPVU5EIiwiS1BJX0RFVEFJTF9OT1RfRk9VTkQiLCJOT19BTkFMWVRJQ1MiLCJNQUlOX1BST1BFUlRZX05PVF9BR0dSRUdBVEFCTEUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztNQUZZQSxhOzthQUFBQSxhO0FBQUFBLElBQUFBLGEsQ0FBQUEsYTtBQUFBQSxJQUFBQSxhLENBQUFBLGE7QUFBQUEsSUFBQUEsYSxDQUFBQSxhO0tBQUFBLGEsS0FBQUEsYTs7O0FBTUwsTUFBTUMsaUJBQWlCLEdBQUc7QUFDaENDLElBQUFBLE1BQU0sRUFBRTtBQUNQQyxNQUFBQSxTQUFTLEVBQUUsV0FESjtBQUVQQyxNQUFBQSxnQkFBZ0IsRUFBRTtBQUZYLEtBRHdCO0FBS2hDQyxJQUFBQSxpQkFBaUIsRUFBRTtBQUNsQkMsTUFBQUEsVUFBVSxFQUFFO0FBRE0sS0FMYTtBQVFoQ0MsSUFBQUEsV0FBVyxFQUFFO0FBQ1pDLE1BQUFBLGlCQUFpQixFQUFFO0FBRFA7QUFSbUIsR0FBMUI7O01BYUtDLGE7O2FBQUFBLGE7QUFBQUEsSUFBQUEsYTtBQUFBQSxJQUFBQSxhO0FBQUFBLElBQUFBLGE7QUFBQUEsSUFBQUEsYTtLQUFBQSxhLEtBQUFBLGE7OztBQU1MLE1BQU1DLFNBQVMsR0FBRztBQUN4QkMsSUFBQUEsZ0JBQWdCLEVBQUUsb0dBRE07QUFFeEJDLElBQUFBLHNCQUFzQixFQUFFLHNDQUZBO0FBR3hCQyxJQUFBQSwyQkFBMkIsRUFBRTtBQUM1QkMsTUFBQUEsZUFBZSxFQUFFLCtFQURXO0FBRTVCQyxNQUFBQSxNQUFNLEVBQUUscUVBRm9CO0FBRzVCQyxNQUFBQSxXQUFXLEVBQUU7QUFIZSxLQUhMO0FBUXhCQyxJQUFBQSx1QkFBdUIsRUFBRTtBQUN4QkMsTUFBQUEsU0FBUyxFQUFFLHVEQURhO0FBRXhCQyxNQUFBQSxtQkFBbUIsRUFBRSxrRUFGRztBQUd4QkMsTUFBQUEsS0FBSyxFQUFFLDBFQUhpQjtBQUl4QkMsTUFBQUEsZUFBZSxFQUFFO0FBSk8sS0FSRDtBQWN4QkMsSUFBQUEsZ0NBQWdDLEVBQUUsNkRBZFY7QUFleEJDLElBQUFBLFVBQVUsRUFBRTtBQUNYQyxNQUFBQSxhQUFhLEVBQUUsMENBREo7QUFFWEMsTUFBQUEsb0JBQW9CLEVBQUUsMERBRlg7QUFHWEMsTUFBQUEsWUFBWSxFQUFFLGtGQUhIO0FBSVhDLE1BQUFBLDhCQUE4QixFQUFFO0FBSnJCO0FBZlksR0FBbEIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIElzc3VlU2V2ZXJpdHkge1xuXHRIaWdoLFxuXHRMb3csXG5cdE1lZGl1bVxufVxuXG5leHBvcnQgY29uc3QgSXNzdWVDYXRlZ29yeVR5cGUgPSB7XG5cdEZhY2V0czoge1xuXHRcdE1pc3NpbmdJRDogXCJNaXNzaW5nSURcIixcblx0XHRVblN1cHBvcnRlZExldmVsOiBcIlVuc3VwcG9ydGVkTGV2ZWxcIlxuXHR9LFxuXHRBbm5vdGF0aW9uQ29sdW1uczoge1xuXHRcdEludmFsaWRLZXk6IFwiSW52YWxpZEtleVwiXG5cdH0sXG5cdEFubm90YXRpb25zOiB7XG5cdFx0SWdub3JlZEFubm90YXRpb246IFwiSWdub3JlZEFubm90YXRpb25cIlxuXHR9XG59O1xuXG5leHBvcnQgZW51bSBJc3N1ZUNhdGVnb3J5IHtcblx0QW5ub3RhdGlvbiA9IFwiQW5ub3RhdGlvblwiLFxuXHRUZW1wbGF0ZSA9IFwiVGVtcGxhdGVcIixcblx0TWFuaWZlc3QgPSBcIk1hbmlmZXN0XCIsXG5cdEZhY2V0cyA9IFwiRmFjZXRzXCJcbn1cbmV4cG9ydCBjb25zdCBJc3N1ZVR5cGUgPSB7XG5cdE1JU1NJTkdfTElORUlURU06IFwiV2UgY291bGRuJ3QgZmluZCBhIGxpbmUgaXRlbSBhbm5vdGF0aW9uIGZvciB0aGUgY3VycmVudCBlbnRpdHlTZXQsIHlvdSBzaG91bGQgY29uc2lkZXIgYWRkaW5nIG9uZS5cIixcblx0TUlTU0lOR19TRUxFQ1RJT05GSUVMRDogXCJEZWZpbmVkIFNlbGVjdGlvbiBGaWVsZCBpcyBub3QgZm91bmRcIixcblx0TUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOOiB7XG5cdFx0UkVRVUlSRVNDT05URVhUOiBcIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiBjYW5ub3QgdXNlIHJlcXVpcmVzIGNvbnRleHQgaW4gZm9ybS9oZWFkZXIuXCIsXG5cdFx0SU5MSU5FOiBcIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiBjYW5ub3QgdXNlIElubGluZSBpbiBmb3JtL2hlYWRlci5cIixcblx0XHRERVRFUk1JTklORzogXCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gY2Fubm90IHVzZSBEZXRlcm1pbmluZyBpbiBmb3JtL2hlYWRlci5cIlxuXHR9LFxuXHRNQUxGT1JNRURfVklTVUFMRklMVEVSUzoge1xuXHRcdFZBTFVFTElTVDogXCJWYWx1ZUxpc3QgUGF0aCBtZW50aW9uZWQgaW4gdGhlIG1hbmlmZXN0IGlzIG5vdCBmb3VuZFwiLFxuXHRcdFBSRVNFTlRBVElPTlZBUklBTlQ6IFwiUHJlc2VudGF0aW9uIFZhcmlhbnQgQW5ub3RhdGlvbiBpcyBtaXNzaW5nIGZvciB0aGUgVmlzdWFsRmlsdGVyc1wiLFxuXHRcdENIQVJUOiBcIkNoYXJ0IEFubm90YXRpb24gaXMgbWlzc2luZyBmcm9tIHRoZSBQViBjb25maWd1cmVkIGZvciB0aGUgVmlzdWFsRmlsdGVyc1wiLFxuXHRcdFZBTFVFTElTVENPTkZJRzogXCJWYWx1ZUxpc3QgaXMgbm90IGJlZW4gY29uZmlndXJlZCBpbnNpZGUgdGhlIFZpc3VhbCBGaWx0ZXIgU2V0dGluZ3NcIlxuXHR9LFxuXHRGVUxMU0NSRUVOTU9ERV9OT1RfT05fTElTVFJFUE9SVDogXCJlbmFibGVGdWxsU2NyZWVuTW9kZSBpcyBub3Qgc3VwcG9ydGVkIG9uIGxpc3QgcmVwb3J0IHBhZ2VzLlwiLFxuXHRLUElfSVNTVUVTOiB7XG5cdFx0S1BJX05PVF9GT1VORDogXCJDb3VsZG4ndCBmaW5kIEtQSSBvciBTUFYgd2l0aCBxdWFsaWZpZXIgXCIsXG5cdFx0S1BJX0RFVEFJTF9OT1RfRk9VTkQ6IFwiQ2FuJ3QgZmluZCBwcm9wZXIgZGF0YXBvaW50IG9yIGNoYXJ0IGRlZmluaXRpb24gZm9yIEtQSSBcIixcblx0XHROT19BTkFMWVRJQ1M6IFwiVGhlIGZvbGxvd2luZyBlbnRpdHlTZXQgdXNlZCBpbiBhIEtQSSBkZWZpbml0aW9uIGRvZXNuJ3Qgc3VwcG9ydCAkYXBwbHkgcXVlcmllczpcIixcblx0XHRNQUlOX1BST1BFUlRZX05PVF9BR0dSRUdBVEFCTEU6IFwiTWFpbiBwcm9wZXJ0eSB1c2VkIGluIEtQSSBjYW5ub3QgYmUgYWdncmVnYXRlZCBcIlxuXHR9XG59O1xuIl19
67
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJc3N1ZVNldmVyaXR5IiwiSXNzdWVDYXRlZ29yeVR5cGUiLCJGYWNldHMiLCJNaXNzaW5nSUQiLCJVblN1cHBvcnRlZExldmVsIiwiQW5ub3RhdGlvbkNvbHVtbnMiLCJJbnZhbGlkS2V5IiwiQW5ub3RhdGlvbnMiLCJJZ25vcmVkQW5ub3RhdGlvbiIsIklzc3VlQ2F0ZWdvcnkiLCJJc3N1ZVR5cGUiLCJNSVNTSU5HX0xJTkVJVEVNIiwiTUlTU0lOR19TRUxFQ1RJT05GSUVMRCIsIk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTiIsIlJFUVVJUkVTQ09OVEVYVCIsIklOTElORSIsIkRFVEVSTUlOSU5HIiwiTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMiLCJWQUxVRUxJU1QiLCJQUkVTRU5UQVRJT05WQVJJQU5UIiwiQ0hBUlQiLCJWQUxVRUxJU1RDT05GSUciLCJGVUxMU0NSRUVOTU9ERV9OT1RfT05fTElTVFJFUE9SVCIsIktQSV9JU1NVRVMiLCJLUElfTk9UX0ZPVU5EIiwiS1BJX0RFVEFJTF9OT1RfRk9VTkQiLCJOT19BTkFMWVRJQ1MiLCJNQUlOX1BST1BFUlRZX05PVF9BR0dSRUdBVEFCTEUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIklzc3VlTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBJc3N1ZVNldmVyaXR5IHtcblx0SGlnaCxcblx0TG93LFxuXHRNZWRpdW1cbn1cblxuZXhwb3J0IGNvbnN0IElzc3VlQ2F0ZWdvcnlUeXBlID0ge1xuXHRGYWNldHM6IHtcblx0XHRNaXNzaW5nSUQ6IFwiTWlzc2luZ0lEXCIsXG5cdFx0VW5TdXBwb3J0ZWRMZXZlbDogXCJVbnN1cHBvcnRlZExldmVsXCJcblx0fSxcblx0QW5ub3RhdGlvbkNvbHVtbnM6IHtcblx0XHRJbnZhbGlkS2V5OiBcIkludmFsaWRLZXlcIlxuXHR9LFxuXHRBbm5vdGF0aW9uczoge1xuXHRcdElnbm9yZWRBbm5vdGF0aW9uOiBcIklnbm9yZWRBbm5vdGF0aW9uXCJcblx0fVxufTtcblxuZXhwb3J0IGVudW0gSXNzdWVDYXRlZ29yeSB7XG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIixcblx0VGVtcGxhdGUgPSBcIlRlbXBsYXRlXCIsXG5cdE1hbmlmZXN0ID0gXCJNYW5pZmVzdFwiLFxuXHRGYWNldHMgPSBcIkZhY2V0c1wiXG59XG5leHBvcnQgY29uc3QgSXNzdWVUeXBlID0ge1xuXHRNSVNTSU5HX0xJTkVJVEVNOiBcIldlIGNvdWxkbid0IGZpbmQgYSBsaW5lIGl0ZW0gYW5ub3RhdGlvbiBmb3IgdGhlIGN1cnJlbnQgZW50aXR5U2V0LCB5b3Ugc2hvdWxkIGNvbnNpZGVyIGFkZGluZyBvbmUuXCIsXG5cdE1JU1NJTkdfU0VMRUNUSU9ORklFTEQ6IFwiRGVmaW5lZCBTZWxlY3Rpb24gRmllbGQgaXMgbm90IGZvdW5kXCIsXG5cdE1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTjoge1xuXHRcdFJFUVVJUkVTQ09OVEVYVDogXCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gY2Fubm90IHVzZSByZXF1aXJlcyBjb250ZXh0IGluIGZvcm0vaGVhZGVyLlwiLFxuXHRcdElOTElORTogXCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gY2Fubm90IHVzZSBJbmxpbmUgaW4gZm9ybS9oZWFkZXIuXCIsXG5cdFx0REVURVJNSU5JTkc6IFwiRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uIGNhbm5vdCB1c2UgRGV0ZXJtaW5pbmcgaW4gZm9ybS9oZWFkZXIuXCJcblx0fSxcblx0TUFMRk9STUVEX1ZJU1VBTEZJTFRFUlM6IHtcblx0XHRWQUxVRUxJU1Q6IFwiVmFsdWVMaXN0IFBhdGggbWVudGlvbmVkIGluIHRoZSBtYW5pZmVzdCBpcyBub3QgZm91bmRcIixcblx0XHRQUkVTRU5UQVRJT05WQVJJQU5UOiBcIlByZXNlbnRhdGlvbiBWYXJpYW50IEFubm90YXRpb24gaXMgbWlzc2luZyBmb3IgdGhlIFZpc3VhbEZpbHRlcnNcIixcblx0XHRDSEFSVDogXCJDaGFydCBBbm5vdGF0aW9uIGlzIG1pc3NpbmcgZnJvbSB0aGUgUFYgY29uZmlndXJlZCBmb3IgdGhlIFZpc3VhbEZpbHRlcnNcIixcblx0XHRWQUxVRUxJU1RDT05GSUc6IFwiVmFsdWVMaXN0IGlzIG5vdCBiZWVuIGNvbmZpZ3VyZWQgaW5zaWRlIHRoZSBWaXN1YWwgRmlsdGVyIFNldHRpbmdzXCJcblx0fSxcblx0RlVMTFNDUkVFTk1PREVfTk9UX09OX0xJU1RSRVBPUlQ6IFwiZW5hYmxlRnVsbFNjcmVlbk1vZGUgaXMgbm90IHN1cHBvcnRlZCBvbiBsaXN0IHJlcG9ydCBwYWdlcy5cIixcblx0S1BJX0lTU1VFUzoge1xuXHRcdEtQSV9OT1RfRk9VTkQ6IFwiQ291bGRuJ3QgZmluZCBLUEkgb3IgU1BWIHdpdGggcXVhbGlmaWVyIFwiLFxuXHRcdEtQSV9ERVRBSUxfTk9UX0ZPVU5EOiBcIkNhbid0IGZpbmQgcHJvcGVyIGRhdGFwb2ludCBvciBjaGFydCBkZWZpbml0aW9uIGZvciBLUEkgXCIsXG5cdFx0Tk9fQU5BTFlUSUNTOiBcIlRoZSBmb2xsb3dpbmcgZW50aXR5U2V0IHVzZWQgaW4gYSBLUEkgZGVmaW5pdGlvbiBkb2Vzbid0IHN1cHBvcnQgJGFwcGx5IHF1ZXJpZXM6XCIsXG5cdFx0TUFJTl9QUk9QRVJUWV9OT1RfQUdHUkVHQVRBQkxFOiBcIk1haW4gcHJvcGVydHkgdXNlZCBpbiBLUEkgY2Fubm90IGJlIGFnZ3JlZ2F0ZWQgXCJcblx0fVxufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7O01BQVlBLGE7O2FBQUFBLGE7SUFBQUEsYSxDQUFBQSxhO0lBQUFBLGEsQ0FBQUEsYTtJQUFBQSxhLENBQUFBLGE7S0FBQUEsYSxLQUFBQSxhOzs7RUFNTCxJQUFNQyxpQkFBaUIsR0FBRztJQUNoQ0MsTUFBTSxFQUFFO01BQ1BDLFNBQVMsRUFBRSxXQURKO01BRVBDLGdCQUFnQixFQUFFO0lBRlgsQ0FEd0I7SUFLaENDLGlCQUFpQixFQUFFO01BQ2xCQyxVQUFVLEVBQUU7SUFETSxDQUxhO0lBUWhDQyxXQUFXLEVBQUU7TUFDWkMsaUJBQWlCLEVBQUU7SUFEUDtFQVJtQixDQUExQjs7TUFhS0MsYTs7YUFBQUEsYTtJQUFBQSxhO0lBQUFBLGE7SUFBQUEsYTtJQUFBQSxhO0tBQUFBLGEsS0FBQUEsYTs7O0VBTUwsSUFBTUMsU0FBUyxHQUFHO0lBQ3hCQyxnQkFBZ0IsRUFBRSxvR0FETTtJQUV4QkMsc0JBQXNCLEVBQUUsc0NBRkE7SUFHeEJDLDJCQUEyQixFQUFFO01BQzVCQyxlQUFlLEVBQUUsK0VBRFc7TUFFNUJDLE1BQU0sRUFBRSxxRUFGb0I7TUFHNUJDLFdBQVcsRUFBRTtJQUhlLENBSEw7SUFReEJDLHVCQUF1QixFQUFFO01BQ3hCQyxTQUFTLEVBQUUsdURBRGE7TUFFeEJDLG1CQUFtQixFQUFFLGtFQUZHO01BR3hCQyxLQUFLLEVBQUUsMEVBSGlCO01BSXhCQyxlQUFlLEVBQUU7SUFKTyxDQVJEO0lBY3hCQyxnQ0FBZ0MsRUFBRSw2REFkVjtJQWV4QkMsVUFBVSxFQUFFO01BQ1hDLGFBQWEsRUFBRSwwQ0FESjtNQUVYQyxvQkFBb0IsRUFBRSwwREFGWDtNQUdYQyxZQUFZLEVBQUUsa0ZBSEg7TUFJWEMsOEJBQThCLEVBQUU7SUFKckI7RUFmWSxDQUFsQiJ9