@sapui5/sap.fe.core 1.110.0 → 1.111.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.
- package/README.md +0 -4
- package/package.json +2 -23
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +182 -0
- package/src/sap/fe/core/ActionRuntime.js +3 -181
- package/src/sap/fe/core/ActionRuntime.js.map +1 -0
- package/src/sap/fe/core/ActionRuntime.ts +3 -5
- package/src/sap/fe/core/AppComponent-dbg.js +435 -0
- package/src/sap/fe/core/AppComponent.js +3 -439
- package/src/sap/fe/core/AppComponent.js.map +1 -0
- package/src/sap/fe/core/AppComponent.ts +0 -3
- package/src/sap/fe/core/AppStateHandler-dbg.js +200 -0
- package/src/sap/fe/core/AppStateHandler.js +3 -227
- package/src/sap/fe/core/AppStateHandler.js.map +1 -0
- package/src/sap/fe/core/BaseController-dbg.js +76 -0
- package/src/sap/fe/core/BaseController.js +3 -73
- package/src/sap/fe/core/BaseController.js.map +1 -0
- package/src/sap/fe/core/CommonUtils-dbg.js +2135 -0
- package/src/sap/fe/core/CommonUtils.js +3 -2296
- package/src/sap/fe/core/CommonUtils.js.map +1 -0
- package/src/sap/fe/core/CommonUtils.ts +34 -28
- package/src/sap/fe/core/ExtensionAPI-dbg.js +273 -0
- package/src/sap/fe/core/ExtensionAPI.js +3 -280
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -0
- package/src/sap/fe/core/PageController-dbg.js +203 -0
- package/src/sap/fe/core/PageController.js +3 -200
- package/src/sap/fe/core/PageController.js.map +1 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +218 -0
- package/src/sap/fe/core/TemplateComponent.js +3 -216
- package/src/sap/fe/core/TemplateComponent.js.map +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +75 -0
- package/src/sap/fe/core/TemplateModel.js +3 -72
- package/src/sap/fe/core/TemplateModel.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +57 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +3 -54
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +410 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +11 -355
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +118 -52
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter-dbg.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +3 -11
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +44 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +3 -40
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +932 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +16 -1292
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +40 -42
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +434 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +3 -481
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -5
- package/src/sap/fe/core/controllerextensions/BusyLocker-dbg.js +92 -0
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +3 -89
- package/src/sap/fe/core/controllerextensions/BusyLocker.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1659 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.js +3 -1868
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +180 -125
- package/src/sap/fe/core/controllerextensions/Feedback-dbg.js +70 -0
- package/src/sap/fe/core/controllerextensions/Feedback.js +3 -67
- package/src/sap/fe/core/controllerextensions/Feedback.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +83 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -84
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -8
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +711 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +3 -707
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +79 -48
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +791 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +3 -696
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +107 -7
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +984 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +3 -996
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +43 -23
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1013 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +3 -1011
- package/src/sap/fe/core/controllerextensions/KPIManagement.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -10
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +135 -0
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -133
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +221 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +3 -224
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +254 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -279
- package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +169 -0
- package/src/sap/fe/core/controllerextensions/Paginator.js +3 -174
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Paginator.ts +4 -5
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +132 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -130
- package/src/sap/fe/core/controllerextensions/Placeholder.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Routing-dbg.js +138 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +3 -135
- package/src/sap/fe/core/controllerextensions/Routing.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +10 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -7
- package/src/sap/fe/core/controllerextensions/RoutingListener.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +317 -0
- package/src/sap/fe/core/controllerextensions/Share.js +3 -356
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -1
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +553 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +3 -651
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +411 -553
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +903 -0
- package/src/sap/fe/core/controllerextensions/ViewState.js +3 -967
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/ViewState.ts +90 -41
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +99 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +3 -96
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +314 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +3 -336
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +152 -0
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +3 -161
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +243 -0
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +3 -302
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +252 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +6 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +188 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +1196 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +3 -1479
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +239 -289
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +689 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -785
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +134 -142
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +236 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -287
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +1422 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +3 -1598
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +40 -24
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +185 -0
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +3 -214
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -5
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +1219 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -1213
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +304 -0
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +3 -339
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason-dbg.js +15 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +6 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/routing/NavigationReason.ts +6 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +798 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +3 -799
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -0
- package/src/sap/fe/core/controls/Any-dbg.js +32 -0
- package/src/sap/fe/core/controls/Any.js +3 -29
- package/src/sap/fe/core/controls/Any.js.map +1 -0
- package/src/sap/fe/core/controls/AnyElement-dbg.js +29 -0
- package/src/sap/fe/core/controls/AnyElement.js +3 -26
- package/src/sap/fe/core/controls/AnyElement.js.map +1 -0
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +72 -0
- package/src/sap/fe/core/controls/CommandExecution.js +3 -69
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -0
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +151 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -148
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +330 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +3 -328
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +126 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -124
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +1 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +170 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -171
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -0
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +194 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +3 -191
- package/src/sap/fe/core/controls/FieldWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +280 -0
- package/src/sap/fe/core/controls/FileWrapper.js +3 -277
- package/src/sap/fe/core/controls/FileWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/FilterBar-dbg.js +167 -0
- package/src/sap/fe/core/controls/FilterBar.js +3 -166
- package/src/sap/fe/core/controls/FilterBar.js.map +1 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +92 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +3 -89
- package/src/sap/fe/core/controls/FormElementWrapper.js.map +1 -0
- package/src/sap/fe/core/controls/MassEditSelect-dbg.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.js +3 -30
- package/src/sap/fe/core/controls/MassEditSelect.js.map +1 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -34
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +119 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -121
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +267 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +3 -264
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -150
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +310 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -307
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +491 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +3 -504
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +2 -2
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +403 -0
- package/src/sap/fe/core/converters/ConverterContext.js +3 -406
- package/src/sap/fe/core/converters/ConverterContext.js.map +1 -0
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +88 -0
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -84
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -0
- package/src/sap/fe/core/converters/ManifestSettings.ts +3 -1
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +402 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +3 -406
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -0
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +1161 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +3 -1225
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -0
- package/src/sap/fe/core/converters/MetaModelConverter.ts +193 -199
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +89 -0
- package/src/sap/fe/core/converters/TemplateConverter.js +3 -86
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -0
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +396 -0
- package/src/sap/fe/core/converters/annotations/DataField.js +3 -394
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -0
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -5
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1948 -0
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +3 -1868
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +424 -0
- package/src/sap/fe/core/converters/controls/Common/Action.js +3 -446
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Action.ts +31 -14
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +276 -0
- package/src/sap/fe/core/converters/controls/Common/Chart.js +3 -260
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +52 -7
- package/src/sap/fe/core/converters/controls/Common/Criticality-dbg.js +42 -0
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -39
- package/src/sap/fe/core/converters/controls/Common/Criticality.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +247 -0
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -242
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +229 -0
- package/src/sap/fe/core/converters/controls/Common/Form.js +3 -234
- package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +374 -0
- package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -371
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +2596 -0
- package/src/sap/fe/core/converters/controls/Common/Table.js +3 -2527
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/Table.ts +214 -77
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +522 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +3 -527
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +51 -50
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +786 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +3 -845
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +0 -64
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +291 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +3 -316
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +30 -12
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +56 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +3 -53
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +438 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -431
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +597 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +3 -630
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -0
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +204 -0
- package/src/sap/fe/core/converters/helpers/Aggregation.js +3 -204
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +100 -0
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -99
- package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +199 -0
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +3 -199
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +143 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +3 -140
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +2 -1
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +92 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -89
- package/src/sap/fe/core/converters/helpers/ID.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +62 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +3 -59
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/Key-dbg.js +62 -0
- package/src/sap/fe/core/converters/helpers/Key.js +3 -59
- package/src/sap/fe/core/converters/helpers/Key.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper-dbg.js +80 -0
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +3 -77
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js.map +1 -0
- package/src/sap/fe/core/converters/objectPage/FormMenuActions-dbg.js +142 -0
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +3 -139
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js.map +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +406 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +3 -422
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +132 -111
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +557 -0
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +3 -589
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -0
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +474 -0
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +3 -477
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -0
- package/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +103 -0
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -100
- package/src/sap/fe/core/designtime/AppComponent.designtime.js.map +1 -0
- package/src/sap/fe/core/designtime/library-preload.designtime.js +7 -0
- package/src/sap/fe/core/designtime/library-preload.designtime.js.map +1 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +95 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +3 -92
- package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +46 -0
- package/src/sap/fe/core/formatters/FPMFormatter.js +3 -44
- package/src/sap/fe/core/formatters/FPMFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/FPMFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +343 -0
- package/src/sap/fe/core/formatters/FiscalFormat.js +6 -0
- package/src/sap/fe/core/formatters/FiscalFormat.js.map +1 -0
- package/src/sap/fe/core/formatters/FiscalFormat.ts +319 -0
- package/src/sap/fe/core/formatters/KPIFormatter-dbg.js +86 -0
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -83
- package/src/sap/fe/core/formatters/KPIFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/StandardFormatter-dbg.js +80 -0
- package/src/sap/fe/core/formatters/StandardFormatter.js +3 -78
- package/src/sap/fe/core/formatters/StandardFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +276 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +3 -275
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes-dbg.js +20 -0
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +3 -17
- package/src/sap/fe/core/formatters/TableFormatterTypes.js.map +1 -0
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +172 -0
- package/src/sap/fe/core/formatters/ValueFormatter.js +3 -161
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -0
- package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -8
- package/src/sap/fe/core/fpm/Component-dbg.js +94 -0
- package/src/sap/fe/core/fpm/Component.js +3 -91
- package/src/sap/fe/core/fpm/Component.js.map +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AnnotationEnum-dbg.js +30 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -36
- package/src/sap/fe/core/helpers/AnnotationEnum.js.map +1 -0
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +334 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +3 -335
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +1739 -0
- package/src/sap/fe/core/helpers/BindingToolkit.js +3 -1611
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -0
- package/src/sap/fe/core/helpers/BindingToolkit.ts +277 -97
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +421 -0
- package/src/sap/fe/core/helpers/ClassSupport.js +3 -420
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -0
- package/src/sap/fe/core/helpers/ClassSupport.ts +13 -15
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +526 -0
- package/src/sap/fe/core/helpers/DeleteHelper.js +3 -618
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper.ts +116 -134
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +55 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +3 -52
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/EditState-dbg.js +80 -0
- package/src/sap/fe/core/helpers/EditState.js +3 -77
- package/src/sap/fe/core/helpers/EditState.js.map +1 -0
- package/src/sap/fe/core/helpers/ExcelFormatHelper-dbg.js +55 -0
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +3 -52
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/FPMHelper-dbg.js +55 -0
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -52
- package/src/sap/fe/core/helpers/FPMHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +180 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +3 -177
- package/src/sap/fe/core/helpers/KeepAliveHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +28 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +3 -25
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js.map +1 -0
- package/src/sap/fe/core/helpers/LoaderUtils-dbg.js +29 -0
- package/src/sap/fe/core/helpers/LoaderUtils.js +3 -30
- package/src/sap/fe/core/helpers/LoaderUtils.js.map +1 -0
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +1229 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +3 -1309
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/MassEditHelper.ts +6 -6
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +65 -0
- package/src/sap/fe/core/helpers/MessageStrip.js +3 -62
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +489 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +3 -503
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ModelHelper.ts +13 -36
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +174 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -185
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +371 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -368
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +70 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -67
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +141 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +3 -137
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +3 -2
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +204 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +3 -208
- package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +35 -0
- package/src/sap/fe/core/helpers/Synchronization.js +3 -33
- package/src/sap/fe/core/helpers/Synchronization.js.map +1 -0
- package/src/sap/fe/core/helpers/ToES6Promise-dbg.js +29 -0
- package/src/sap/fe/core/helpers/ToES6Promise.js +3 -26
- package/src/sap/fe/core/helpers/ToES6Promise.js.map +1 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +20 -0
- package/src/sap/fe/core/helpers/TypeGuards.js +3 -19
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -0
- package/src/sap/fe/core/helpers/TypeGuards.ts +5 -1
- package/src/sap/fe/core/jsx-runtime/Fragment-dbg.js +14 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +3 -11
- package/src/sap/fe/core/jsx-runtime/Fragment.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +76 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -86
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +124 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -98
- package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +43 -17
- package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +41 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml-dbg.js +94 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +3 -90
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +3 -28
- package/src/sap/fe/core/jsx-runtime/jsx.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/jsx.ts +19 -1
- package/src/sap/fe/core/jsx-runtime/jsxs-dbg.js +10 -0
- package/src/sap/fe/core/jsx-runtime/jsxs.js +3 -7
- package/src/sap/fe/core/jsx-runtime/jsxs.js.map +1 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +154 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +3 -153
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -0
- package/src/sap/fe/core/library-dbg.js +437 -0
- package/src/sap/fe/core/library-preload.js +900 -0
- package/src/sap/fe/core/library-preload.js.map +1 -0
- package/src/sap/fe/core/library-preload.support.js +177 -0
- package/src/sap/fe/core/library-preload.support.js.map +1 -0
- package/src/sap/fe/core/library.js +3 -461
- package/src/sap/fe/core/library.js.map +1 -0
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +12 -25
- package/src/sap/fe/core/manifest.json +100 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +99 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -96
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -0
- package/src/sap/fe/core/messagebundle.properties +6 -0
- package/src/sap/fe/core/messagebundle_ar.properties +22 -0
- package/src/sap/fe/core/messagebundle_bg.properties +22 -0
- package/src/sap/fe/core/messagebundle_ca.properties +22 -0
- package/src/sap/fe/core/messagebundle_cs.properties +22 -0
- package/src/sap/fe/core/messagebundle_cy.properties +22 -0
- package/src/sap/fe/core/messagebundle_da.properties +22 -0
- package/src/sap/fe/core/messagebundle_de.properties +22 -0
- package/src/sap/fe/core/messagebundle_el.properties +22 -0
- package/src/sap/fe/core/messagebundle_en.properties +22 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +22 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +22 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +4 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +4 -0
- package/src/sap/fe/core/messagebundle_es.properties +22 -0
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -0
- package/src/sap/fe/core/messagebundle_et.properties +22 -0
- package/src/sap/fe/core/messagebundle_fi.properties +22 -0
- package/src/sap/fe/core/messagebundle_fr.properties +22 -0
- package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -0
- package/src/sap/fe/core/messagebundle_hi.properties +22 -0
- package/src/sap/fe/core/messagebundle_hr.properties +23 -1
- package/src/sap/fe/core/messagebundle_hu.properties +22 -0
- package/src/sap/fe/core/messagebundle_id.properties +22 -0
- package/src/sap/fe/core/messagebundle_it.properties +22 -0
- package/src/sap/fe/core/messagebundle_iw.properties +22 -0
- package/src/sap/fe/core/messagebundle_ja.properties +22 -0
- package/src/sap/fe/core/messagebundle_kk.properties +22 -0
- package/src/sap/fe/core/messagebundle_ko.properties +22 -0
- package/src/sap/fe/core/messagebundle_lt.properties +22 -0
- package/src/sap/fe/core/messagebundle_lv.properties +22 -0
- package/src/sap/fe/core/messagebundle_ms.properties +22 -0
- package/src/sap/fe/core/messagebundle_nl.properties +22 -0
- package/src/sap/fe/core/messagebundle_no.properties +22 -0
- package/src/sap/fe/core/messagebundle_pl.properties +22 -0
- package/src/sap/fe/core/messagebundle_pt.properties +22 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -0
- package/src/sap/fe/core/messagebundle_ro.properties +22 -0
- package/src/sap/fe/core/messagebundle_ru.properties +22 -0
- package/src/sap/fe/core/messagebundle_sh.properties +22 -0
- package/src/sap/fe/core/messagebundle_sk.properties +22 -0
- package/src/sap/fe/core/messagebundle_sl.properties +22 -0
- package/src/sap/fe/core/messagebundle_sv.properties +22 -0
- package/src/sap/fe/core/messagebundle_th.properties +22 -0
- package/src/sap/fe/core/messagebundle_tr.properties +22 -0
- package/src/sap/fe/core/messagebundle_uk.properties +22 -0
- package/src/sap/fe/core/messagebundle_vi.properties +22 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -0
- package/src/sap/fe/core/operationsHelper-dbg.js +155 -0
- package/src/sap/fe/core/operationsHelper.js +3 -205
- package/src/sap/fe/core/operationsHelper.js.map +1 -0
- package/src/sap/fe/core/operationsHelper.ts +14 -68
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +837 -0
- package/src/sap/fe/core/rootView/Fcl.controller.js +3 -855
- package/src/sap/fe/core/rootView/Fcl.controller.js.map +1 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +190 -0
- package/src/sap/fe/core/rootView/NavContainer.controller.js +3 -190
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -0
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +506 -0
- package/src/sap/fe/core/rootView/RootViewBaseController.js +3 -538
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -0
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +60 -0
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -60
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +196 -0
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -219
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +80 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -82
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +320 -0
- package/src/sap/fe/core/services/NavigationServiceFactory.js +3 -320
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +91 -0
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -89
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +817 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.js +3 -847
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +6 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +732 -0
- package/src/sap/fe/core/services/ShellServicesFactory.js +3 -752
- package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +569 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +3 -599
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +3 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +355 -0
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +3 -387
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -0
- package/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +37 -0
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +3 -34
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js.map +1 -0
- package/src/sap/fe/core/support/AnnotationIssue.support.js +4 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +3 -3
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +3 -3
- package/src/sap/fe/core/support/CommonHelper-dbg.js +63 -0
- package/src/sap/fe/core/support/CommonHelper.js +3 -60
- package/src/sap/fe/core/support/CommonHelper.js.map +1 -0
- package/src/sap/fe/core/support/Diagnostics-dbg.js +44 -0
- package/src/sap/fe/core/support/Diagnostics.js +3 -49
- package/src/sap/fe/core/support/Diagnostics.js.map +1 -0
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +3 -3
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +70 -0
- package/src/sap/fe/core/templating/CommonFormatters.js +3 -66
- package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +9 -3
- package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +136 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +3 -133
- package/src/sap/fe/core/templating/CriticalityFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/DataFieldFormatters-dbg.js +58 -0
- package/src/sap/fe/core/templating/DataFieldFormatters.js +3 -55
- package/src/sap/fe/core/templating/DataFieldFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +363 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -372
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +17 -8
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +56 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +3 -124
- package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +0 -47
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +68 -0
- package/src/sap/fe/core/templating/EntitySetHelper.js +3 -81
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -0
- package/src/sap/fe/core/templating/FieldControlHelper-dbg.js +77 -0
- package/src/sap/fe/core/templating/FieldControlHelper.js +3 -74
- package/src/sap/fe/core/templating/FieldControlHelper.js.map +1 -0
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +346 -0
- package/src/sap/fe/core/templating/FilterHelper.js +3 -339
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -0
- package/src/sap/fe/core/templating/FilterHelper.ts +2 -21
- package/src/sap/fe/core/templating/FilterTemplating-dbg.js +62 -0
- package/src/sap/fe/core/templating/FilterTemplating.js +3 -59
- package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -0
- package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +93 -0
- package/src/sap/fe/core/templating/PropertyFormatters.js +3 -90
- package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +340 -0
- package/src/sap/fe/core/templating/PropertyHelper.js +3 -337
- package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper-dbg.js +91 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +3 -43
- package/src/sap/fe/core/templating/SemanticObjectHelper.js.map +1 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +45 -1
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +498 -0
- package/src/sap/fe/core/templating/UIFormatters.js +3 -544
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -0
- package/src/sap/fe/core/templating/UIFormatters.ts +60 -110
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +35 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -33
- package/src/sap/fe/core/type/DateTimeWithTimezone.js.map +1 -0
- package/src/sap/fe/core/type/EDM-dbg.js +84 -0
- package/src/sap/fe/core/type/EDM.js +6 -0
- package/src/sap/fe/core/type/EDM.js.map +1 -0
- package/src/sap/fe/core/type/EDM.ts +70 -0
- package/src/sap/fe/core/type/Email-dbg.js +29 -0
- package/src/sap/fe/core/type/Email.js +3 -26
- package/src/sap/fe/core/type/Email.js.map +1 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +174 -0
- package/src/sap/fe/core/type/FiscalDate.js +6 -0
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -0
- package/src/sap/fe/core/type/FiscalDate.ts +179 -0
- package/src/sap/fe/core/type/TypeUtil-dbg.js +58 -0
- package/src/sap/fe/core/type/TypeUtil.js +3 -55
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -0
- package/src/sap/fe/core/type/TypeUtil.ts +1 -0
- package/src/.eslintrc +0 -7
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/BaseController", "sap/fe/core/CommonUtils", "sap/fe/core/controllerextensions/Placeholder", "sap/fe/core/controllerextensions/ViewState", "sap/fe/core/helpers/ClassSupport", "sap/fe/macros/table/TableSizeHelper", "sap/ui/base/BindingParser", "sap/ui/core/routing/HashChanger", "sap/ui/model/json/JSONModel", "sap/ui/model/odata/v4/AnnotationHelper", "sap/ui/thirdparty/URI"], function (Log, BaseController, CommonUtils, Placeholder, ViewState, ClassSupport, TableSizeHelper, BindingParser, HashChanger, JSONModel, AnnotationHelper, URI) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
|
|
9
|
+
var usingExtension = ClassSupport.usingExtension;
|
|
10
|
+
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
11
|
+
function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
|
|
12
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
13
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
14
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
15
|
+
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
16
|
+
function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
|
|
17
|
+
let RootViewBaseController = (_dec = defineUI5Class("sap.fe.core.rootView.RootViewBaseController"), _dec2 = usingExtension(Placeholder), _dec3 = usingExtension(ViewState), _dec(_class = (_class2 = /*#__PURE__*/function (_BaseController) {
|
|
18
|
+
_inheritsLoose(RootViewBaseController, _BaseController);
|
|
19
|
+
function RootViewBaseController() {
|
|
20
|
+
var _this;
|
|
21
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
22
|
+
args[_key] = arguments[_key];
|
|
23
|
+
}
|
|
24
|
+
_this = _BaseController.call(this, ...args) || this;
|
|
25
|
+
_initializerDefineProperty(_this, "oPlaceholder", _descriptor, _assertThisInitialized(_this));
|
|
26
|
+
_initializerDefineProperty(_this, "viewState", _descriptor2, _assertThisInitialized(_this));
|
|
27
|
+
_this.bIsComputingTitleHierachy = false;
|
|
28
|
+
return _this;
|
|
29
|
+
}
|
|
30
|
+
var _proto = RootViewBaseController.prototype;
|
|
31
|
+
_proto.onInit = function onInit() {
|
|
32
|
+
TableSizeHelper.init();
|
|
33
|
+
this._aHelperModels = [];
|
|
34
|
+
};
|
|
35
|
+
_proto.getPlaceholder = function getPlaceholder() {
|
|
36
|
+
return this.oPlaceholder;
|
|
37
|
+
};
|
|
38
|
+
_proto.attachRouteMatchers = function attachRouteMatchers() {
|
|
39
|
+
this.oPlaceholder.attachRouteMatchers();
|
|
40
|
+
this.getAppComponent().getRoutingService().attachAfterRouteMatched(this._onAfterRouteMatched, this);
|
|
41
|
+
};
|
|
42
|
+
_proto.onExit = function onExit() {
|
|
43
|
+
this.getAppComponent().getRoutingService().detachAfterRouteMatched(this._onAfterRouteMatched, this);
|
|
44
|
+
this.oRouter = undefined;
|
|
45
|
+
TableSizeHelper.exit();
|
|
46
|
+
|
|
47
|
+
// Destroy all JSON models created dynamically for the views
|
|
48
|
+
this._aHelperModels.forEach(function (oModel) {
|
|
49
|
+
oModel.destroy();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convenience method for getting the resource bundle.
|
|
54
|
+
*
|
|
55
|
+
* @public
|
|
56
|
+
* @returns The resourceModel of the component
|
|
57
|
+
*/;
|
|
58
|
+
_proto.getResourceBundle = function getResourceBundle() {
|
|
59
|
+
return this.getOwnerComponent().getModel("i18n").getResourceBundle();
|
|
60
|
+
};
|
|
61
|
+
_proto.getRouter = function getRouter() {
|
|
62
|
+
if (!this.oRouter) {
|
|
63
|
+
this.oRouter = this.getAppComponent().getRouter();
|
|
64
|
+
}
|
|
65
|
+
return this.oRouter;
|
|
66
|
+
};
|
|
67
|
+
_proto._createHelperModel = function _createHelperModel() {
|
|
68
|
+
// We keep a reference on the models created dynamically, as they don't get destroyed
|
|
69
|
+
// automatically when the view is destroyed.
|
|
70
|
+
// This is done during onExit
|
|
71
|
+
const oModel = new JSONModel();
|
|
72
|
+
this._aHelperModels.push(oModel);
|
|
73
|
+
return oModel;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Function waiting for the Right most view to be ready.
|
|
78
|
+
*
|
|
79
|
+
* @memberof sap.fe.core.rootView.BaseController
|
|
80
|
+
* @param oEvent Reference an Event parameter coming from routeMatched event
|
|
81
|
+
* @returns A promise indicating when the right most view is ready
|
|
82
|
+
*/;
|
|
83
|
+
_proto.waitForRightMostViewReady = function waitForRightMostViewReady(oEvent) {
|
|
84
|
+
return new Promise(function (resolve) {
|
|
85
|
+
const aContainers = oEvent.getParameter("views"),
|
|
86
|
+
// There can also be reuse components in the view, remove them before processing.
|
|
87
|
+
aFEContainers = [];
|
|
88
|
+
aContainers.forEach(function (oContainer) {
|
|
89
|
+
let oView = oContainer;
|
|
90
|
+
if (oContainer && oContainer.getComponentInstance) {
|
|
91
|
+
const oComponentInstance = oContainer.getComponentInstance();
|
|
92
|
+
oView = oComponentInstance.getRootControl();
|
|
93
|
+
}
|
|
94
|
+
if (oView && oView.getController() && oView.getController().pageReady) {
|
|
95
|
+
aFEContainers.push(oView);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
const oRightMostFEView = aFEContainers[aFEContainers.length - 1];
|
|
99
|
+
if (oRightMostFEView && oRightMostFEView.getController().pageReady.isPageReady()) {
|
|
100
|
+
resolve(oRightMostFEView);
|
|
101
|
+
} else if (oRightMostFEView) {
|
|
102
|
+
oRightMostFEView.getController().pageReady.attachEventOnce("pageReady", function () {
|
|
103
|
+
resolve(oRightMostFEView);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Callback when the navigation is done.
|
|
111
|
+
* - update the shell title.
|
|
112
|
+
* - update table scroll.
|
|
113
|
+
* - call onPageReady on the rightMostView.
|
|
114
|
+
*
|
|
115
|
+
* @param oEvent
|
|
116
|
+
* @name sap.fe.core.rootView.BaseController#_onAfterRouteMatched
|
|
117
|
+
* @memberof sap.fe.core.rootView.BaseController
|
|
118
|
+
*/;
|
|
119
|
+
_proto._onAfterRouteMatched = function _onAfterRouteMatched(oEvent) {
|
|
120
|
+
if (!this._oRouteMatchedPromise) {
|
|
121
|
+
this._oRouteMatchedPromise = this.waitForRightMostViewReady(oEvent).then(oView => {
|
|
122
|
+
// The autoFocus is initially disabled on the navContainer or the FCL, so that the focus stays on the Shell menu
|
|
123
|
+
// even if the app takes a long time to launch
|
|
124
|
+
// The first time the view is displayed, we need to enable the autofocus so that it's managed properly during navigation
|
|
125
|
+
const oRootControl = this.getView().getContent()[0];
|
|
126
|
+
if (oRootControl && oRootControl.getAutoFocus && !oRootControl.getAutoFocus()) {
|
|
127
|
+
oRootControl.setProperty("autoFocus", true, true); // Do not mark the container as invalid, otherwise it's re-rendered
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const oAppComponent = this.getAppComponent();
|
|
131
|
+
this._scrollTablesToLastNavigatedItems();
|
|
132
|
+
if (oAppComponent.getEnvironmentCapabilities().getCapabilities().UShell) {
|
|
133
|
+
this._computeTitleHierarchy(oView);
|
|
134
|
+
}
|
|
135
|
+
const bForceFocus = oAppComponent.getRouterProxy().isFocusForced();
|
|
136
|
+
oAppComponent.getRouterProxy().setFocusForced(false); // reset
|
|
137
|
+
if (oView.getController() && oView.getController().onPageReady && oView.getParent().onPageReady) {
|
|
138
|
+
oView.getParent().onPageReady({
|
|
139
|
+
forceFocus: bForceFocus
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (this.onContainerReady) {
|
|
143
|
+
this.onContainerReady();
|
|
144
|
+
}
|
|
145
|
+
}).catch(function (oError) {
|
|
146
|
+
Log.error("An error occurs while computing the title hierarchy and calling focus method", oError);
|
|
147
|
+
}).finally(() => {
|
|
148
|
+
this._oRouteMatchedPromise = null;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* This function returns the TitleHierarchy cache ( or initializes it if undefined).
|
|
155
|
+
*
|
|
156
|
+
* @name sap.fe.core.rootView.BaseController#_getTitleHierarchyCache
|
|
157
|
+
* @memberof sap.fe.core.rootView.BaseController
|
|
158
|
+
* @returns The TitleHierarchy cache
|
|
159
|
+
*/;
|
|
160
|
+
_proto._getTitleHierarchyCache = function _getTitleHierarchyCache() {
|
|
161
|
+
if (!this.oTitleHierarchyCache) {
|
|
162
|
+
this.oTitleHierarchyCache = {};
|
|
163
|
+
}
|
|
164
|
+
return this.oTitleHierarchyCache;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* This function returns a titleInfo object.
|
|
169
|
+
*
|
|
170
|
+
* @memberof sap.fe.core.rootView.BaseController
|
|
171
|
+
* @param title The application's title
|
|
172
|
+
* @param subtitle The application's subTitle
|
|
173
|
+
* @param sIntent The intent path to be redirected to
|
|
174
|
+
* @param icon The application's icon
|
|
175
|
+
* @returns The title information
|
|
176
|
+
*/;
|
|
177
|
+
_proto._computeTitleInfo = function _computeTitleInfo(title, subtitle, sIntent) {
|
|
178
|
+
let icon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "";
|
|
179
|
+
const aParts = sIntent.split("/");
|
|
180
|
+
sIntent = URI.decode(sIntent);
|
|
181
|
+
if (aParts[aParts.length - 1].indexOf("?") === -1) {
|
|
182
|
+
sIntent += "?restoreHistory=true";
|
|
183
|
+
} else {
|
|
184
|
+
sIntent += "&restoreHistory=true";
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
title: title,
|
|
188
|
+
subtitle: subtitle,
|
|
189
|
+
intent: sIntent,
|
|
190
|
+
icon: icon
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
_proto._formatTitle = function _formatTitle(displayMode, titleValue, titleDescription) {
|
|
194
|
+
let formattedTitle = "";
|
|
195
|
+
switch (displayMode) {
|
|
196
|
+
case "Value":
|
|
197
|
+
formattedTitle = `${titleValue}`;
|
|
198
|
+
break;
|
|
199
|
+
case "ValueDescription":
|
|
200
|
+
formattedTitle = `${titleValue} (${titleDescription})`;
|
|
201
|
+
break;
|
|
202
|
+
case "DescriptionValue":
|
|
203
|
+
formattedTitle = `${titleDescription} (${titleValue})`;
|
|
204
|
+
break;
|
|
205
|
+
case "Description":
|
|
206
|
+
formattedTitle = `${titleDescription}`;
|
|
207
|
+
break;
|
|
208
|
+
default:
|
|
209
|
+
}
|
|
210
|
+
return formattedTitle;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Fetches the value of the HeaderInfo title for a given path.
|
|
215
|
+
*
|
|
216
|
+
* @param sPath The path to the entity
|
|
217
|
+
* @returns A promise containing the formatted title, or an empty string if no HeaderInfo title annotation is available
|
|
218
|
+
*/;
|
|
219
|
+
_proto._fetchTitleValue = async function _fetchTitleValue(sPath) {
|
|
220
|
+
const oAppComponent = this.getAppComponent(),
|
|
221
|
+
oModel = this.getView().getModel(),
|
|
222
|
+
oMetaModel = oAppComponent.getMetaModel(),
|
|
223
|
+
sMetaPath = oMetaModel.getMetaPath(sPath),
|
|
224
|
+
oBindingViewContext = oModel.createBindingContext(sPath),
|
|
225
|
+
sValueExpression = AnnotationHelper.format(oMetaModel.getObject(`${sMetaPath}/@com.sap.vocabularies.UI.v1.HeaderInfo/Title/Value`), {
|
|
226
|
+
context: oMetaModel.createBindingContext("/")
|
|
227
|
+
});
|
|
228
|
+
if (!sValueExpression) {
|
|
229
|
+
return Promise.resolve("");
|
|
230
|
+
}
|
|
231
|
+
const sTextExpression = AnnotationHelper.format(oMetaModel.getObject(`${sMetaPath}/@com.sap.vocabularies.UI.v1.HeaderInfo/Title/Value/$Path@com.sap.vocabularies.Common.v1.Text`), {
|
|
232
|
+
context: oMetaModel.createBindingContext("/")
|
|
233
|
+
}),
|
|
234
|
+
oPropertyContext = oMetaModel.getObject(`${sMetaPath}/@com.sap.vocabularies.UI.v1.HeaderInfo/Title/Value/$Path@`),
|
|
235
|
+
aPromises = [],
|
|
236
|
+
oValueExpression = BindingParser.complexParser(sValueExpression),
|
|
237
|
+
oPromiseForDisplayMode = new Promise(function (resolve) {
|
|
238
|
+
const displayMode = CommonUtils.computeDisplayMode(oPropertyContext);
|
|
239
|
+
resolve(displayMode);
|
|
240
|
+
});
|
|
241
|
+
aPromises.push(oPromiseForDisplayMode);
|
|
242
|
+
const sValuePath = oValueExpression.parts ? oValueExpression.parts[0].path : oValueExpression.path,
|
|
243
|
+
fnValueFormatter = oValueExpression.formatter,
|
|
244
|
+
oValueBinding = oModel.bindProperty(sValuePath, oBindingViewContext);
|
|
245
|
+
oValueBinding.initialize();
|
|
246
|
+
const oPromiseForTitleValue = new Promise(function (resolve) {
|
|
247
|
+
const fnChange = function (oEvent) {
|
|
248
|
+
const sTargetValue = fnValueFormatter ? fnValueFormatter(oEvent.getSource().getValue()) : oEvent.getSource().getValue();
|
|
249
|
+
oValueBinding.detachChange(fnChange);
|
|
250
|
+
resolve(sTargetValue);
|
|
251
|
+
};
|
|
252
|
+
oValueBinding.attachChange(fnChange);
|
|
253
|
+
});
|
|
254
|
+
aPromises.push(oPromiseForTitleValue);
|
|
255
|
+
if (sTextExpression) {
|
|
256
|
+
const oTextExpression = BindingParser.complexParser(sTextExpression);
|
|
257
|
+
let sTextPath = oTextExpression.parts ? oTextExpression.parts[0].path : oTextExpression.path;
|
|
258
|
+
sTextPath = sValuePath.lastIndexOf("/") > -1 ? `${sValuePath.slice(0, sValuePath.lastIndexOf("/"))}/${sTextPath}` : sTextPath;
|
|
259
|
+
const fnTextFormatter = oTextExpression.formatter,
|
|
260
|
+
oTextBinding = oModel.bindProperty(sTextPath, oBindingViewContext);
|
|
261
|
+
oTextBinding.initialize();
|
|
262
|
+
const oPromiseForTitleText = new Promise(function (resolve) {
|
|
263
|
+
const fnChange = function (oEvent) {
|
|
264
|
+
const sTargetText = fnTextFormatter ? fnTextFormatter(oEvent.getSource().getValue()) : oEvent.getSource().getValue();
|
|
265
|
+
oTextBinding.detachChange(fnChange);
|
|
266
|
+
resolve(sTargetText);
|
|
267
|
+
};
|
|
268
|
+
oTextBinding.attachChange(fnChange);
|
|
269
|
+
});
|
|
270
|
+
aPromises.push(oPromiseForTitleText);
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
const titleInfo = await Promise.all(aPromises);
|
|
274
|
+
let formattedTitle = "";
|
|
275
|
+
if (typeof titleInfo !== "string") {
|
|
276
|
+
formattedTitle = this._formatTitle(titleInfo[0], titleInfo[1], titleInfo[2]);
|
|
277
|
+
}
|
|
278
|
+
return formattedTitle;
|
|
279
|
+
} catch (error) {
|
|
280
|
+
Log.error("Error while fetching the title from the header info :" + error);
|
|
281
|
+
}
|
|
282
|
+
return "";
|
|
283
|
+
};
|
|
284
|
+
_proto._getAppSpecificHash = function _getAppSpecificHash() {
|
|
285
|
+
// HashChanged isShellNavigationHashChanger
|
|
286
|
+
const hashChanger = HashChanger.getInstance();
|
|
287
|
+
return "hrefForAppSpecificHash" in hashChanger ? hashChanger.hrefForAppSpecificHash("") : "#/";
|
|
288
|
+
};
|
|
289
|
+
_proto._getHash = function _getHash() {
|
|
290
|
+
return HashChanger.getInstance().getHash();
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* This function returns titleInformation from a path.
|
|
295
|
+
* It updates the cache to store title information if necessary
|
|
296
|
+
*
|
|
297
|
+
* @name sap.fe.core.rootView.BaseController#getTitleInfoFromPath
|
|
298
|
+
* @memberof sap.fe.core.rootView.BaseController
|
|
299
|
+
* @param {*} sPath path of the context to retrieve title information from MetaModel
|
|
300
|
+
* @returns {Promise} oTitleinformation returned as promise
|
|
301
|
+
*/;
|
|
302
|
+
_proto.getTitleInfoFromPath = function getTitleInfoFromPath(sPath) {
|
|
303
|
+
const oTitleHierarchyCache = this._getTitleHierarchyCache();
|
|
304
|
+
if (oTitleHierarchyCache[sPath]) {
|
|
305
|
+
// The title info is already stored in the cache
|
|
306
|
+
return Promise.resolve(oTitleHierarchyCache[sPath]);
|
|
307
|
+
}
|
|
308
|
+
const oMetaModel = this.getAppComponent().getMetaModel();
|
|
309
|
+
const sEntityPath = oMetaModel.getMetaPath(sPath);
|
|
310
|
+
const sTypeName = oMetaModel.getObject(`${sEntityPath}/@com.sap.vocabularies.UI.v1.HeaderInfo/TypeName`);
|
|
311
|
+
const sAppSpecificHash = this._getAppSpecificHash();
|
|
312
|
+
const sIntent = sAppSpecificHash + sPath.slice(1);
|
|
313
|
+
return this._fetchTitleValue(sPath).then(sTitle => {
|
|
314
|
+
const oTitleInfo = this._computeTitleInfo(sTypeName, sTitle, sIntent);
|
|
315
|
+
oTitleHierarchyCache[sPath] = oTitleInfo;
|
|
316
|
+
return oTitleInfo;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Ensure that the ushell service receives all elements
|
|
321
|
+
* (title, subtitle, intent, icon) as strings.
|
|
322
|
+
*
|
|
323
|
+
* Annotation HeaderInfo allows for binding of title and description
|
|
324
|
+
* (which are used here as title and subtitle) to any element in the entity
|
|
325
|
+
* (being possibly types like boolean, timestamp, double, etc.)
|
|
326
|
+
*
|
|
327
|
+
* Creates a new hierarchy and converts non-string types to string.
|
|
328
|
+
*
|
|
329
|
+
* @param aHierarchy Shell title hierarchy
|
|
330
|
+
* @returns Copy of shell title hierarchy containing all elements as strings
|
|
331
|
+
*/;
|
|
332
|
+
_proto._ensureHierarchyElementsAreStrings = function _ensureHierarchyElementsAreStrings(aHierarchy) {
|
|
333
|
+
const aHierarchyShell = [];
|
|
334
|
+
for (const level in aHierarchy) {
|
|
335
|
+
const oHierarchy = aHierarchy[level];
|
|
336
|
+
const oShellHierarchy = {};
|
|
337
|
+
for (const key in oHierarchy) {
|
|
338
|
+
oShellHierarchy[key] = typeof oHierarchy[key] !== "string" ? String(oHierarchy[key]) : oHierarchy[key];
|
|
339
|
+
}
|
|
340
|
+
aHierarchyShell.push(oShellHierarchy);
|
|
341
|
+
}
|
|
342
|
+
return aHierarchyShell;
|
|
343
|
+
};
|
|
344
|
+
_proto._getTargetTypeFromHash = function _getTargetTypeFromHash(sHash) {
|
|
345
|
+
var _oAppComponent$getMan;
|
|
346
|
+
const oAppComponent = this.getAppComponent();
|
|
347
|
+
let sTargetType = "";
|
|
348
|
+
const aRoutes = ((_oAppComponent$getMan = oAppComponent.getManifestEntry("sap.ui5").routing) === null || _oAppComponent$getMan === void 0 ? void 0 : _oAppComponent$getMan.routes) ?? [];
|
|
349
|
+
for (const route of aRoutes) {
|
|
350
|
+
const oRoute = oAppComponent.getRouter().getRoute(route.name);
|
|
351
|
+
if (oRoute !== null && oRoute !== void 0 && oRoute.match(sHash)) {
|
|
352
|
+
const sTarget = Array.isArray(route.target) ? route.target[0] : route.target;
|
|
353
|
+
sTargetType = oAppComponent.getRouter().getTarget(sTarget)._oOptions.name;
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return sTargetType;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* This function updates the shell title after each navigation.
|
|
362
|
+
*
|
|
363
|
+
* @memberof sap.fe.core.rootView.BaseController
|
|
364
|
+
* @param oView The current view
|
|
365
|
+
* @returns A Promise that is resolved when the menu is filled properly
|
|
366
|
+
*/;
|
|
367
|
+
_proto._computeTitleHierarchy = function _computeTitleHierarchy(oView) {
|
|
368
|
+
const oAppComponent = this.getAppComponent(),
|
|
369
|
+
oContext = oView.getBindingContext(),
|
|
370
|
+
oCurrentPage = oView.getParent(),
|
|
371
|
+
aTitleInformationPromises = [],
|
|
372
|
+
sAppSpecificHash = this._getAppSpecificHash(),
|
|
373
|
+
manifestAppSettings = oAppComponent.getManifestEntry("sap.app"),
|
|
374
|
+
sAppTitle = manifestAppSettings.title || "",
|
|
375
|
+
sAppSubTitle = manifestAppSettings.subTitle || "",
|
|
376
|
+
appIcon = manifestAppSettings.icon || "";
|
|
377
|
+
let oPageTitleInformation, sNewPath;
|
|
378
|
+
if (oCurrentPage && oCurrentPage._getPageTitleInformation) {
|
|
379
|
+
if (oContext) {
|
|
380
|
+
// If the first page of the application is a LR, use the title and subtitle from the manifest
|
|
381
|
+
if (this._getTargetTypeFromHash("") === "sap.fe.templates.ListReport") {
|
|
382
|
+
aTitleInformationPromises.push(Promise.resolve(this._computeTitleInfo(sAppTitle, sAppSubTitle, sAppSpecificHash, appIcon)));
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// Then manage other pages
|
|
386
|
+
sNewPath = oContext.getPath();
|
|
387
|
+
const aPathParts = sNewPath.split("/");
|
|
388
|
+
let sPath = "";
|
|
389
|
+
aPathParts.shift(); // Remove the first segment (empty string) as it has been managed above
|
|
390
|
+
aPathParts.pop(); // Remove the last segment as it corresponds to the current page and shouldn't appear in the menu
|
|
391
|
+
|
|
392
|
+
aPathParts.forEach(sPathPart => {
|
|
393
|
+
sPath += `/${sPathPart}`;
|
|
394
|
+
const oMetaModel = oAppComponent.getMetaModel(),
|
|
395
|
+
sParameterPath = oMetaModel.getMetaPath(sPath),
|
|
396
|
+
bIsParameterized = oMetaModel.getObject(`${sParameterPath}/@com.sap.vocabularies.Common.v1.ResultContext`);
|
|
397
|
+
if (!bIsParameterized) {
|
|
398
|
+
aTitleInformationPromises.push(this.getTitleInfoFromPath(sPath));
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// Current page
|
|
404
|
+
oPageTitleInformation = oCurrentPage._getPageTitleInformation();
|
|
405
|
+
oPageTitleInformation = this._computeTitleInfo(oPageTitleInformation.title, oPageTitleInformation.subtitle, sAppSpecificHash + this._getHash());
|
|
406
|
+
if (oContext) {
|
|
407
|
+
this._getTitleHierarchyCache()[sNewPath] = oPageTitleInformation;
|
|
408
|
+
} else {
|
|
409
|
+
this._getTitleHierarchyCache()[sAppSpecificHash] = oPageTitleInformation;
|
|
410
|
+
}
|
|
411
|
+
} else {
|
|
412
|
+
aTitleInformationPromises.push(Promise.reject("Title information missing in HeaderInfo"));
|
|
413
|
+
}
|
|
414
|
+
return Promise.all(aTitleInformationPromises).then(aTitleInfoHierarchy => {
|
|
415
|
+
// workaround for shell which is expecting all elements being of type string
|
|
416
|
+
const aTitleInfoHierarchyShell = this._ensureHierarchyElementsAreStrings(aTitleInfoHierarchy),
|
|
417
|
+
sTitle = oPageTitleInformation.title;
|
|
418
|
+
aTitleInfoHierarchyShell.reverse();
|
|
419
|
+
oAppComponent.getShellServices().setHierarchy(aTitleInfoHierarchyShell);
|
|
420
|
+
this._setShellMenuTitle(oAppComponent, sTitle, sAppTitle);
|
|
421
|
+
}).catch(function (sErrorMessage) {
|
|
422
|
+
Log.error(sErrorMessage);
|
|
423
|
+
}).finally(() => {
|
|
424
|
+
this.bIsComputingTitleHierachy = false;
|
|
425
|
+
}).catch(function (sErrorMessage) {
|
|
426
|
+
Log.error(sErrorMessage);
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
431
|
+
;
|
|
432
|
+
_proto.calculateLayout = function calculateLayout(iNextFCLLevel, sHash, sProposedLayout) {
|
|
433
|
+
let keepCurrentLayout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Callback after a view has been bound to a context.
|
|
439
|
+
*
|
|
440
|
+
* @param oContext The context that has been bound to a view
|
|
441
|
+
*/;
|
|
442
|
+
_proto.onContextBoundToView = function onContextBoundToView(oContext) {
|
|
443
|
+
if (oContext) {
|
|
444
|
+
const sDeepestPath = this.getView().getModel("internal").getProperty("/deepestPath"),
|
|
445
|
+
sViewContextPath = oContext.getPath();
|
|
446
|
+
if (!sDeepestPath || sDeepestPath.indexOf(sViewContextPath) !== 0) {
|
|
447
|
+
// There was no previous value for the deepest reached path, or the path
|
|
448
|
+
// for the view isn't a subpath of the previous deepest path --> update
|
|
449
|
+
this.getView().getModel("internal").setProperty("/deepestPath", sViewContextPath, undefined, true);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
455
|
+
;
|
|
456
|
+
_proto.displayErrorPage = function displayErrorPage(sErrorMessage, mParameters) {
|
|
457
|
+
// To be overridden
|
|
458
|
+
return Promise.resolve(true);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
462
|
+
;
|
|
463
|
+
_proto.updateUIStateForView = function updateUIStateForView(oView, FCLLevel) {
|
|
464
|
+
// To be overriden
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
468
|
+
;
|
|
469
|
+
_proto.getInstancedViews = function getInstancedViews() {
|
|
470
|
+
return [];
|
|
471
|
+
// To be overriden
|
|
472
|
+
};
|
|
473
|
+
_proto._scrollTablesToLastNavigatedItems = function _scrollTablesToLastNavigatedItems() {
|
|
474
|
+
// To be overriden
|
|
475
|
+
};
|
|
476
|
+
_proto.isFclEnabled = function isFclEnabled() {
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
481
|
+
;
|
|
482
|
+
_proto._setShellMenuTitle = function _setShellMenuTitle(oAppComponent, sTitle, sAppTitle) {
|
|
483
|
+
// To be overriden by FclController
|
|
484
|
+
oAppComponent.getShellServices().setTitle(sTitle);
|
|
485
|
+
};
|
|
486
|
+
_proto.getAppContentContainer = function getAppContentContainer() {
|
|
487
|
+
var _oAppComponent$getMan2, _oAppComponent$getMan3;
|
|
488
|
+
const oAppComponent = this.getAppComponent();
|
|
489
|
+
const appContentId = ((_oAppComponent$getMan2 = oAppComponent.getManifestEntry("sap.ui5").routing) === null || _oAppComponent$getMan2 === void 0 ? void 0 : (_oAppComponent$getMan3 = _oAppComponent$getMan2.config) === null || _oAppComponent$getMan3 === void 0 ? void 0 : _oAppComponent$getMan3.controlId) ?? "appContent";
|
|
490
|
+
return this.getView().byId(appContentId);
|
|
491
|
+
};
|
|
492
|
+
return RootViewBaseController;
|
|
493
|
+
}(BaseController), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "oPlaceholder", [_dec2], {
|
|
494
|
+
configurable: true,
|
|
495
|
+
enumerable: true,
|
|
496
|
+
writable: true,
|
|
497
|
+
initializer: null
|
|
498
|
+
}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "viewState", [_dec3], {
|
|
499
|
+
configurable: true,
|
|
500
|
+
enumerable: true,
|
|
501
|
+
writable: true,
|
|
502
|
+
initializer: null
|
|
503
|
+
})), _class2)) || _class);
|
|
504
|
+
return RootViewBaseController;
|
|
505
|
+
}, false);
|
|
506
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSb290Vmlld0Jhc2VDb250cm9sbGVyIiwiZGVmaW5lVUk1Q2xhc3MiLCJ1c2luZ0V4dGVuc2lvbiIsIlBsYWNlaG9sZGVyIiwiVmlld1N0YXRlIiwiYklzQ29tcHV0aW5nVGl0bGVIaWVyYWNoeSIsIm9uSW5pdCIsIlRhYmxlU2l6ZUhlbHBlciIsImluaXQiLCJfYUhlbHBlck1vZGVscyIsImdldFBsYWNlaG9sZGVyIiwib1BsYWNlaG9sZGVyIiwiYXR0YWNoUm91dGVNYXRjaGVycyIsImdldEFwcENvbXBvbmVudCIsImdldFJvdXRpbmdTZXJ2aWNlIiwiYXR0YWNoQWZ0ZXJSb3V0ZU1hdGNoZWQiLCJfb25BZnRlclJvdXRlTWF0Y2hlZCIsIm9uRXhpdCIsImRldGFjaEFmdGVyUm91dGVNYXRjaGVkIiwib1JvdXRlciIsInVuZGVmaW5lZCIsImV4aXQiLCJmb3JFYWNoIiwib01vZGVsIiwiZGVzdHJveSIsImdldFJlc291cmNlQnVuZGxlIiwiZ2V0T3duZXJDb21wb25lbnQiLCJnZXRNb2RlbCIsImdldFJvdXRlciIsIl9jcmVhdGVIZWxwZXJNb2RlbCIsIkpTT05Nb2RlbCIsInB1c2giLCJ3YWl0Rm9yUmlnaHRNb3N0Vmlld1JlYWR5Iiwib0V2ZW50IiwiUHJvbWlzZSIsInJlc29sdmUiLCJhQ29udGFpbmVycyIsImdldFBhcmFtZXRlciIsImFGRUNvbnRhaW5lcnMiLCJvQ29udGFpbmVyIiwib1ZpZXciLCJnZXRDb21wb25lbnRJbnN0YW5jZSIsIm9Db21wb25lbnRJbnN0YW5jZSIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsInBhZ2VSZWFkeSIsIm9SaWdodE1vc3RGRVZpZXciLCJsZW5ndGgiLCJpc1BhZ2VSZWFkeSIsImF0dGFjaEV2ZW50T25jZSIsIl9vUm91dGVNYXRjaGVkUHJvbWlzZSIsInRoZW4iLCJvUm9vdENvbnRyb2wiLCJnZXRWaWV3IiwiZ2V0Q29udGVudCIsImdldEF1dG9Gb2N1cyIsInNldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIl9zY3JvbGxUYWJsZXNUb0xhc3ROYXZpZ2F0ZWRJdGVtcyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiVVNoZWxsIiwiX2NvbXB1dGVUaXRsZUhpZXJhcmNoeSIsImJGb3JjZUZvY3VzIiwiZ2V0Um91dGVyUHJveHkiLCJpc0ZvY3VzRm9yY2VkIiwic2V0Rm9jdXNGb3JjZWQiLCJvblBhZ2VSZWFkeSIsImdldFBhcmVudCIsImZvcmNlRm9jdXMiLCJvbkNvbnRhaW5lclJlYWR5IiwiY2F0Y2giLCJvRXJyb3IiLCJMb2ciLCJlcnJvciIsImZpbmFsbHkiLCJfZ2V0VGl0bGVIaWVyYXJjaHlDYWNoZSIsIm9UaXRsZUhpZXJhcmNoeUNhY2hlIiwiX2NvbXB1dGVUaXRsZUluZm8iLCJ0aXRsZSIsInN1YnRpdGxlIiwic0ludGVudCIsImljb24iLCJhUGFydHMiLCJzcGxpdCIsIlVSSSIsImRlY29kZSIsImluZGV4T2YiLCJpbnRlbnQiLCJfZm9ybWF0VGl0bGUiLCJkaXNwbGF5TW9kZSIsInRpdGxlVmFsdWUiLCJ0aXRsZURlc2NyaXB0aW9uIiwiZm9ybWF0dGVkVGl0bGUiLCJfZmV0Y2hUaXRsZVZhbHVlIiwic1BhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic01ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJvQmluZGluZ1ZpZXdDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzVmFsdWVFeHByZXNzaW9uIiwiQW5ub3RhdGlvbkhlbHBlciIsImZvcm1hdCIsImdldE9iamVjdCIsImNvbnRleHQiLCJzVGV4dEV4cHJlc3Npb24iLCJvUHJvcGVydHlDb250ZXh0IiwiYVByb21pc2VzIiwib1ZhbHVlRXhwcmVzc2lvbiIsIkJpbmRpbmdQYXJzZXIiLCJjb21wbGV4UGFyc2VyIiwib1Byb21pc2VGb3JEaXNwbGF5TW9kZSIsIkNvbW1vblV0aWxzIiwiY29tcHV0ZURpc3BsYXlNb2RlIiwic1ZhbHVlUGF0aCIsInBhcnRzIiwicGF0aCIsImZuVmFsdWVGb3JtYXR0ZXIiLCJmb3JtYXR0ZXIiLCJvVmFsdWVCaW5kaW5nIiwiYmluZFByb3BlcnR5IiwiaW5pdGlhbGl6ZSIsIm9Qcm9taXNlRm9yVGl0bGVWYWx1ZSIsImZuQ2hhbmdlIiwic1RhcmdldFZhbHVlIiwiZ2V0U291cmNlIiwiZ2V0VmFsdWUiLCJkZXRhY2hDaGFuZ2UiLCJhdHRhY2hDaGFuZ2UiLCJvVGV4dEV4cHJlc3Npb24iLCJzVGV4dFBhdGgiLCJsYXN0SW5kZXhPZiIsInNsaWNlIiwiZm5UZXh0Rm9ybWF0dGVyIiwib1RleHRCaW5kaW5nIiwib1Byb21pc2VGb3JUaXRsZVRleHQiLCJzVGFyZ2V0VGV4dCIsInRpdGxlSW5mbyIsImFsbCIsIl9nZXRBcHBTcGVjaWZpY0hhc2giLCJoYXNoQ2hhbmdlciIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJocmVmRm9yQXBwU3BlY2lmaWNIYXNoIiwiX2dldEhhc2giLCJnZXRIYXNoIiwiZ2V0VGl0bGVJbmZvRnJvbVBhdGgiLCJzRW50aXR5UGF0aCIsInNUeXBlTmFtZSIsInNBcHBTcGVjaWZpY0hhc2giLCJzVGl0bGUiLCJvVGl0bGVJbmZvIiwiX2Vuc3VyZUhpZXJhcmNoeUVsZW1lbnRzQXJlU3RyaW5ncyIsImFIaWVyYXJjaHkiLCJhSGllcmFyY2h5U2hlbGwiLCJsZXZlbCIsIm9IaWVyYXJjaHkiLCJvU2hlbGxIaWVyYXJjaHkiLCJrZXkiLCJTdHJpbmciLCJfZ2V0VGFyZ2V0VHlwZUZyb21IYXNoIiwic0hhc2giLCJzVGFyZ2V0VHlwZSIsImFSb3V0ZXMiLCJnZXRNYW5pZmVzdEVudHJ5Iiwicm91dGluZyIsInJvdXRlcyIsInJvdXRlIiwib1JvdXRlIiwiZ2V0Um91dGUiLCJuYW1lIiwibWF0Y2giLCJzVGFyZ2V0IiwiQXJyYXkiLCJpc0FycmF5IiwidGFyZ2V0IiwiZ2V0VGFyZ2V0IiwiX29PcHRpb25zIiwib0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsIm9DdXJyZW50UGFnZSIsImFUaXRsZUluZm9ybWF0aW9uUHJvbWlzZXMiLCJtYW5pZmVzdEFwcFNldHRpbmdzIiwic0FwcFRpdGxlIiwic0FwcFN1YlRpdGxlIiwic3ViVGl0bGUiLCJhcHBJY29uIiwib1BhZ2VUaXRsZUluZm9ybWF0aW9uIiwic05ld1BhdGgiLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJnZXRQYXRoIiwiYVBhdGhQYXJ0cyIsInNoaWZ0IiwicG9wIiwic1BhdGhQYXJ0Iiwic1BhcmFtZXRlclBhdGgiLCJiSXNQYXJhbWV0ZXJpemVkIiwicmVqZWN0IiwiYVRpdGxlSW5mb0hpZXJhcmNoeSIsImFUaXRsZUluZm9IaWVyYXJjaHlTaGVsbCIsInJldmVyc2UiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2V0SGllcmFyY2h5IiwiX3NldFNoZWxsTWVudVRpdGxlIiwic0Vycm9yTWVzc2FnZSIsImNhbGN1bGF0ZUxheW91dCIsImlOZXh0RkNMTGV2ZWwiLCJzUHJvcG9zZWRMYXlvdXQiLCJrZWVwQ3VycmVudExheW91dCIsIm9uQ29udGV4dEJvdW5kVG9WaWV3Iiwic0RlZXBlc3RQYXRoIiwiZ2V0UHJvcGVydHkiLCJzVmlld0NvbnRleHRQYXRoIiwiZGlzcGxheUVycm9yUGFnZSIsIm1QYXJhbWV0ZXJzIiwidXBkYXRlVUlTdGF0ZUZvclZpZXciLCJGQ0xMZXZlbCIsImdldEluc3RhbmNlZFZpZXdzIiwiaXNGY2xFbmFibGVkIiwic2V0VGl0bGUiLCJnZXRBcHBDb250ZW50Q29udGFpbmVyIiwiYXBwQ29udGVudElkIiwiY29uZmlnIiwiY29udHJvbElkIiwiYnlJZCIsIkJhc2VDb250cm9sbGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJSb290Vmlld0Jhc2VDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgRmxleGlibGVDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1BsYWNlaG9sZGVyXCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCB1c2luZ0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgRmNsQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvRmNsLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBUYWJsZVNpemVIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVTaXplSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBOYXZDb250YWluZXIgZnJvbSBcInNhcC9tL05hdkNvbnRhaW5lclwiO1xuaW1wb3J0IEJpbmRpbmdQYXJzZXIgZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdQYXJzZXJcIjtcbmltcG9ydCB0eXBlIFhNTFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9YTUxWaWV3XCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCB0eXBlIFJvdXRlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9Sb3V0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBBbm5vdGF0aW9uSGVscGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQW5ub3RhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCBVUkkgZnJvbSBcInNhcC91aS90aGlyZHBhcnR5L1VSSVwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCIuLi9BcHBDb21wb25lbnRcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUucm9vdFZpZXcuUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiKVxuY2xhc3MgUm9vdFZpZXdCYXNlQ29udHJvbGxlciBleHRlbmRzIEJhc2VDb250cm9sbGVyIHtcblx0QHVzaW5nRXh0ZW5zaW9uKFBsYWNlaG9sZGVyKVxuXHRvUGxhY2Vob2xkZXIhOiBQbGFjZWhvbGRlcjtcblxuXHRAdXNpbmdFeHRlbnNpb24oVmlld1N0YXRlKVxuXHR2aWV3U3RhdGUhOiBWaWV3U3RhdGU7XG5cdHByaXZhdGUgX2FIZWxwZXJNb2RlbHMhOiBhbnlbXTtcblx0cHJpdmF0ZSBvUm91dGVyPzogUm91dGVyO1xuXHRwcml2YXRlIF9vUm91dGVNYXRjaGVkUHJvbWlzZTogYW55O1xuXHRwcml2YXRlIG9UaXRsZUhpZXJhcmNoeUNhY2hlOiBhbnk7XG5cdHByaXZhdGUgYklzQ29tcHV0aW5nVGl0bGVIaWVyYWNoeSA9IGZhbHNlO1xuXG5cdG9uSW5pdCgpIHtcblx0XHRUYWJsZVNpemVIZWxwZXIuaW5pdCgpO1xuXG5cdFx0dGhpcy5fYUhlbHBlck1vZGVscyA9IFtdO1xuXHR9XG5cblx0Z2V0UGxhY2Vob2xkZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMub1BsYWNlaG9sZGVyO1xuXHR9XG5cdGF0dGFjaFJvdXRlTWF0Y2hlcnMoKSB7XG5cdFx0dGhpcy5vUGxhY2Vob2xkZXIuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um91dGluZ1NlcnZpY2UoKS5hdHRhY2hBZnRlclJvdXRlTWF0Y2hlZCh0aGlzLl9vbkFmdGVyUm91dGVNYXRjaGVkLCB0aGlzKTtcblx0fVxuXHRvbkV4aXQoKSB7XG5cdFx0dGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRSb3V0aW5nU2VydmljZSgpLmRldGFjaEFmdGVyUm91dGVNYXRjaGVkKHRoaXMuX29uQWZ0ZXJSb3V0ZU1hdGNoZWQsIHRoaXMpO1xuXHRcdHRoaXMub1JvdXRlciA9IHVuZGVmaW5lZDtcblxuXHRcdFRhYmxlU2l6ZUhlbHBlci5leGl0KCk7XG5cblx0XHQvLyBEZXN0cm95IGFsbCBKU09OIG1vZGVscyBjcmVhdGVkIGR5bmFtaWNhbGx5IGZvciB0aGUgdmlld3Ncblx0XHR0aGlzLl9hSGVscGVyTW9kZWxzLmZvckVhY2goZnVuY3Rpb24gKG9Nb2RlbDogYW55KSB7XG5cdFx0XHRvTW9kZWwuZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGdldHRpbmcgdGhlIHJlc291cmNlIGJ1bmRsZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcmVzb3VyY2VNb2RlbCBvZiB0aGUgY29tcG9uZW50XG5cdCAqL1xuXHRnZXRSZXNvdXJjZUJ1bmRsZSgpIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKS5nZXRNb2RlbChcImkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKTtcblx0fVxuXHRnZXRSb3V0ZXIoKSB7XG5cdFx0aWYgKCF0aGlzLm9Sb3V0ZXIpIHtcblx0XHRcdHRoaXMub1JvdXRlciA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um91dGVyKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMub1JvdXRlcjtcblx0fVxuXG5cdF9jcmVhdGVIZWxwZXJNb2RlbCgpIHtcblx0XHQvLyBXZSBrZWVwIGEgcmVmZXJlbmNlIG9uIHRoZSBtb2RlbHMgY3JlYXRlZCBkeW5hbWljYWxseSwgYXMgdGhleSBkb24ndCBnZXQgZGVzdHJveWVkXG5cdFx0Ly8gYXV0b21hdGljYWxseSB3aGVuIHRoZSB2aWV3IGlzIGRlc3Ryb3llZC5cblx0XHQvLyBUaGlzIGlzIGRvbmUgZHVyaW5nIG9uRXhpdFxuXHRcdGNvbnN0IG9Nb2RlbCA9IG5ldyBKU09OTW9kZWwoKTtcblx0XHR0aGlzLl9hSGVscGVyTW9kZWxzLnB1c2gob01vZGVsKTtcblxuXHRcdHJldHVybiBvTW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gd2FpdGluZyBmb3IgdGhlIFJpZ2h0IG1vc3QgdmlldyB0byBiZSByZWFkeS5cblx0ICpcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLnJvb3RWaWV3LkJhc2VDb250cm9sbGVyXG5cdCAqIEBwYXJhbSBvRXZlbnQgUmVmZXJlbmNlIGFuIEV2ZW50IHBhcmFtZXRlciBjb21pbmcgZnJvbSByb3V0ZU1hdGNoZWQgZXZlbnRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIGluZGljYXRpbmcgd2hlbiB0aGUgcmlnaHQgbW9zdCB2aWV3IGlzIHJlYWR5XG5cdCAqL1xuXHR3YWl0Rm9yUmlnaHRNb3N0Vmlld1JlYWR5KG9FdmVudDogYW55KSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuXHRcdFx0Y29uc3QgYUNvbnRhaW5lcnMgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmlld3NcIiksXG5cdFx0XHRcdC8vIFRoZXJlIGNhbiBhbHNvIGJlIHJldXNlIGNvbXBvbmVudHMgaW4gdGhlIHZpZXcsIHJlbW92ZSB0aGVtIGJlZm9yZSBwcm9jZXNzaW5nLlxuXHRcdFx0XHRhRkVDb250YWluZXJzOiBhbnlbXSA9IFtdO1xuXHRcdFx0YUNvbnRhaW5lcnMuZm9yRWFjaChmdW5jdGlvbiAob0NvbnRhaW5lcjogYW55KSB7XG5cdFx0XHRcdGxldCBvVmlldyA9IG9Db250YWluZXI7XG5cdFx0XHRcdGlmIChvQ29udGFpbmVyICYmIG9Db250YWluZXIuZ2V0Q29tcG9uZW50SW5zdGFuY2UpIHtcblx0XHRcdFx0XHRjb25zdCBvQ29tcG9uZW50SW5zdGFuY2UgPSBvQ29udGFpbmVyLmdldENvbXBvbmVudEluc3RhbmNlKCk7XG5cdFx0XHRcdFx0b1ZpZXcgPSBvQ29tcG9uZW50SW5zdGFuY2UuZ2V0Um9vdENvbnRyb2woKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1ZpZXcgJiYgb1ZpZXcuZ2V0Q29udHJvbGxlcigpICYmIG9WaWV3LmdldENvbnRyb2xsZXIoKS5wYWdlUmVhZHkpIHtcblx0XHRcdFx0XHRhRkVDb250YWluZXJzLnB1c2gob1ZpZXcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IG9SaWdodE1vc3RGRVZpZXcgPSBhRkVDb250YWluZXJzW2FGRUNvbnRhaW5lcnMubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAob1JpZ2h0TW9zdEZFVmlldyAmJiBvUmlnaHRNb3N0RkVWaWV3LmdldENvbnRyb2xsZXIoKS5wYWdlUmVhZHkuaXNQYWdlUmVhZHkoKSkge1xuXHRcdFx0XHRyZXNvbHZlKG9SaWdodE1vc3RGRVZpZXcpO1xuXHRcdFx0fSBlbHNlIGlmIChvUmlnaHRNb3N0RkVWaWV3KSB7XG5cdFx0XHRcdG9SaWdodE1vc3RGRVZpZXcuZ2V0Q29udHJvbGxlcigpLnBhZ2VSZWFkeS5hdHRhY2hFdmVudE9uY2UoXCJwYWdlUmVhZHlcIiwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJlc29sdmUob1JpZ2h0TW9zdEZFVmlldyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxiYWNrIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZG9uZS5cblx0ICogIC0gdXBkYXRlIHRoZSBzaGVsbCB0aXRsZS5cblx0ICogIC0gdXBkYXRlIHRhYmxlIHNjcm9sbC5cblx0ICogIC0gY2FsbCBvblBhZ2VSZWFkeSBvbiB0aGUgcmlnaHRNb3N0Vmlldy5cblx0ICpcblx0ICogQHBhcmFtIG9FdmVudFxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5yb290Vmlldy5CYXNlQ29udHJvbGxlciNfb25BZnRlclJvdXRlTWF0Y2hlZFxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUucm9vdFZpZXcuQmFzZUNvbnRyb2xsZXJcblx0ICovXG5cdF9vbkFmdGVyUm91dGVNYXRjaGVkKG9FdmVudDogYW55KSB7XG5cdFx0aWYgKCF0aGlzLl9vUm91dGVNYXRjaGVkUHJvbWlzZSkge1xuXHRcdFx0dGhpcy5fb1JvdXRlTWF0Y2hlZFByb21pc2UgPSB0aGlzLndhaXRGb3JSaWdodE1vc3RWaWV3UmVhZHkob0V2ZW50KVxuXHRcdFx0XHQudGhlbigob1ZpZXc6IGFueSkgPT4ge1xuXHRcdFx0XHRcdC8vIFRoZSBhdXRvRm9jdXMgaXMgaW5pdGlhbGx5IGRpc2FibGVkIG9uIHRoZSBuYXZDb250YWluZXIgb3IgdGhlIEZDTCwgc28gdGhhdCB0aGUgZm9jdXMgc3RheXMgb24gdGhlIFNoZWxsIG1lbnVcblx0XHRcdFx0XHQvLyBldmVuIGlmIHRoZSBhcHAgdGFrZXMgYSBsb25nIHRpbWUgdG8gbGF1bmNoXG5cdFx0XHRcdFx0Ly8gVGhlIGZpcnN0IHRpbWUgdGhlIHZpZXcgaXMgZGlzcGxheWVkLCB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgYXV0b2ZvY3VzIHNvIHRoYXQgaXQncyBtYW5hZ2VkIHByb3Blcmx5IGR1cmluZyBuYXZpZ2F0aW9uXG5cdFx0XHRcdFx0Y29uc3Qgb1Jvb3RDb250cm9sID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdIGFzIGFueTtcblx0XHRcdFx0XHRpZiAob1Jvb3RDb250cm9sICYmIG9Sb290Q29udHJvbC5nZXRBdXRvRm9jdXMgJiYgIW9Sb290Q29udHJvbC5nZXRBdXRvRm9jdXMoKSkge1xuXHRcdFx0XHRcdFx0b1Jvb3RDb250cm9sLnNldFByb3BlcnR5KFwiYXV0b0ZvY3VzXCIsIHRydWUsIHRydWUpOyAvLyBEbyBub3QgbWFyayB0aGUgY29udGFpbmVyIGFzIGludmFsaWQsIG90aGVyd2lzZSBpdCdzIHJlLXJlbmRlcmVkXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0XHRcdFx0dGhpcy5fc2Nyb2xsVGFibGVzVG9MYXN0TmF2aWdhdGVkSXRlbXMoKTtcblx0XHRcdFx0XHRpZiAob0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLlVTaGVsbCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY29tcHV0ZVRpdGxlSGllcmFyY2h5KG9WaWV3KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgYkZvcmNlRm9jdXMgPSBvQXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCkuaXNGb2N1c0ZvcmNlZCgpO1xuXHRcdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKS5zZXRGb2N1c0ZvcmNlZChmYWxzZSk7IC8vIHJlc2V0XG5cdFx0XHRcdFx0aWYgKG9WaWV3LmdldENvbnRyb2xsZXIoKSAmJiBvVmlldy5nZXRDb250cm9sbGVyKCkub25QYWdlUmVhZHkgJiYgb1ZpZXcuZ2V0UGFyZW50KCkub25QYWdlUmVhZHkpIHtcblx0XHRcdFx0XHRcdG9WaWV3LmdldFBhcmVudCgpLm9uUGFnZVJlYWR5KHsgZm9yY2VGb2N1czogYkZvcmNlRm9jdXMgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0aGlzLm9uQ29udGFpbmVyUmVhZHkpIHtcblx0XHRcdFx0XHRcdHRoaXMub25Db250YWluZXJSZWFkeSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIkFuIGVycm9yIG9jY3VycyB3aGlsZSBjb21wdXRpbmcgdGhlIHRpdGxlIGhpZXJhcmNoeSBhbmQgY2FsbGluZyBmb2N1cyBtZXRob2RcIiwgb0Vycm9yKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX29Sb3V0ZU1hdGNoZWRQcm9taXNlID0gbnVsbDtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgVGl0bGVIaWVyYXJjaHkgY2FjaGUgKCBvciBpbml0aWFsaXplcyBpdCBpZiB1bmRlZmluZWQpLlxuXHQgKlxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5yb290Vmlldy5CYXNlQ29udHJvbGxlciNfZ2V0VGl0bGVIaWVyYXJjaHlDYWNoZVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUucm9vdFZpZXcuQmFzZUNvbnRyb2xsZXJcblx0ICogQHJldHVybnMgIFRoZSBUaXRsZUhpZXJhcmNoeSBjYWNoZVxuXHQgKi9cblx0X2dldFRpdGxlSGllcmFyY2h5Q2FjaGUoKSB7XG5cdFx0aWYgKCF0aGlzLm9UaXRsZUhpZXJhcmNoeUNhY2hlKSB7XG5cdFx0XHR0aGlzLm9UaXRsZUhpZXJhcmNoeUNhY2hlID0ge307XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm9UaXRsZUhpZXJhcmNoeUNhY2hlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHRpdGxlSW5mbyBvYmplY3QuXG5cdCAqXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5yb290Vmlldy5CYXNlQ29udHJvbGxlclxuXHQgKiBAcGFyYW0gdGl0bGUgVGhlIGFwcGxpY2F0aW9uJ3MgdGl0bGVcblx0ICogQHBhcmFtIHN1YnRpdGxlIFRoZSBhcHBsaWNhdGlvbidzIHN1YlRpdGxlXG5cdCAqIEBwYXJhbSBzSW50ZW50IFRoZSBpbnRlbnQgcGF0aCB0byBiZSByZWRpcmVjdGVkIHRvXG5cdCAqIEBwYXJhbSBpY29uIFRoZSBhcHBsaWNhdGlvbidzIGljb25cblx0ICogQHJldHVybnMgVGhlIHRpdGxlIGluZm9ybWF0aW9uXG5cdCAqL1xuXHRfY29tcHV0ZVRpdGxlSW5mbyh0aXRsZTogYW55LCBzdWJ0aXRsZTogYW55LCBzSW50ZW50OiBhbnksIGljb24gPSBcIlwiKSB7XG5cdFx0Y29uc3QgYVBhcnRzID0gc0ludGVudC5zcGxpdChcIi9cIik7XG5cdFx0c0ludGVudCA9IFVSSS5kZWNvZGUoc0ludGVudCk7XG5cdFx0aWYgKGFQYXJ0c1thUGFydHMubGVuZ3RoIC0gMV0uaW5kZXhPZihcIj9cIikgPT09IC0xKSB7XG5cdFx0XHRzSW50ZW50ICs9IFwiP3Jlc3RvcmVIaXN0b3J5PXRydWVcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c0ludGVudCArPSBcIiZyZXN0b3JlSGlzdG9yeT10cnVlXCI7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR0aXRsZTogdGl0bGUsXG5cdFx0XHRzdWJ0aXRsZTogc3VidGl0bGUsXG5cdFx0XHRpbnRlbnQ6IHNJbnRlbnQsXG5cdFx0XHRpY29uOiBpY29uXG5cdFx0fTtcblx0fVxuXHRfZm9ybWF0VGl0bGUoZGlzcGxheU1vZGU6IHN0cmluZywgdGl0bGVWYWx1ZTogc3RyaW5nLCB0aXRsZURlc2NyaXB0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGxldCBmb3JtYXR0ZWRUaXRsZSA9IFwiXCI7XG5cdFx0c3dpdGNoIChkaXNwbGF5TW9kZSkge1xuXHRcdFx0Y2FzZSBcIlZhbHVlXCI6XG5cdFx0XHRcdGZvcm1hdHRlZFRpdGxlID0gYCR7dGl0bGVWYWx1ZX1gO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdGZvcm1hdHRlZFRpdGxlID0gYCR7dGl0bGVWYWx1ZX0gKCR7dGl0bGVEZXNjcmlwdGlvbn0pYDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRmb3JtYXR0ZWRUaXRsZSA9IGAke3RpdGxlRGVzY3JpcHRpb259ICgke3RpdGxlVmFsdWV9KWA7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdGZvcm1hdHRlZFRpdGxlID0gYCR7dGl0bGVEZXNjcmlwdGlvbn1gO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0fVxuXHRcdHJldHVybiBmb3JtYXR0ZWRUaXRsZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGZXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgSGVhZGVySW5mbyB0aXRsZSBmb3IgYSBnaXZlbiBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0gc1BhdGggVGhlIHBhdGggdG8gdGhlIGVudGl0eVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIHRpdGxlLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgbm8gSGVhZGVySW5mbyB0aXRsZSBhbm5vdGF0aW9uIGlzIGF2YWlsYWJsZVxuXHQgKi9cblx0YXN5bmMgX2ZldGNoVGl0bGVWYWx1ZShzUGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRvTW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbCgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKSxcblx0XHRcdG9CaW5kaW5nVmlld0NvbnRleHQgPSBvTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc1BhdGgpLFxuXHRcdFx0c1ZhbHVlRXhwcmVzc2lvbiA9IEFubm90YXRpb25IZWxwZXIuZm9ybWF0KFxuXHRcdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzTWV0YVBhdGh9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJJbmZvL1RpdGxlL1ZhbHVlYCksXG5cdFx0XHRcdHsgY29udGV4dDogb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dCB9XG5cdFx0XHQpO1xuXHRcdGlmICghc1ZhbHVlRXhwcmVzc2lvbikge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShcIlwiKTtcblx0XHR9XG5cdFx0Y29uc3Qgc1RleHRFeHByZXNzaW9uID0gQW5ub3RhdGlvbkhlbHBlci5mb3JtYXQoXG5cdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFxuXHRcdFx0XHRcdGAke3NNZXRhUGF0aH0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckluZm8vVGl0bGUvVmFsdWUvJFBhdGhAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRgXG5cdFx0XHRcdCksXG5cdFx0XHRcdHsgY29udGV4dDogb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dCB9XG5cdFx0XHQpLFxuXHRcdFx0b1Byb3BlcnR5Q29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke3NNZXRhUGF0aH0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckluZm8vVGl0bGUvVmFsdWUvJFBhdGhAYCksXG5cdFx0XHRhUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdLFxuXHRcdFx0b1ZhbHVlRXhwcmVzc2lvbiA9IEJpbmRpbmdQYXJzZXIuY29tcGxleFBhcnNlcihzVmFsdWVFeHByZXNzaW9uKSxcblx0XHRcdG9Qcm9taXNlRm9yRGlzcGxheU1vZGUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcblx0XHRcdFx0Y29uc3QgZGlzcGxheU1vZGUgPSBDb21tb25VdGlscy5jb21wdXRlRGlzcGxheU1vZGUob1Byb3BlcnR5Q29udGV4dCk7XG5cdFx0XHRcdHJlc29sdmUoZGlzcGxheU1vZGUpO1xuXHRcdFx0fSk7XG5cdFx0YVByb21pc2VzLnB1c2gob1Byb21pc2VGb3JEaXNwbGF5TW9kZSk7XG5cdFx0Y29uc3Qgc1ZhbHVlUGF0aCA9IG9WYWx1ZUV4cHJlc3Npb24ucGFydHMgPyBvVmFsdWVFeHByZXNzaW9uLnBhcnRzWzBdLnBhdGggOiBvVmFsdWVFeHByZXNzaW9uLnBhdGgsXG5cdFx0XHRmblZhbHVlRm9ybWF0dGVyID0gb1ZhbHVlRXhwcmVzc2lvbi5mb3JtYXR0ZXIsXG5cdFx0XHRvVmFsdWVCaW5kaW5nID0gb01vZGVsLmJpbmRQcm9wZXJ0eShzVmFsdWVQYXRoLCBvQmluZGluZ1ZpZXdDb250ZXh0KTtcblx0XHRvVmFsdWVCaW5kaW5nLmluaXRpYWxpemUoKTtcblx0XHRjb25zdCBvUHJvbWlzZUZvclRpdGxlVmFsdWUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcblx0XHRcdGNvbnN0IGZuQ2hhbmdlID0gZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0XHRcdGNvbnN0IHNUYXJnZXRWYWx1ZSA9IGZuVmFsdWVGb3JtYXR0ZXIgPyBmblZhbHVlRm9ybWF0dGVyKG9FdmVudC5nZXRTb3VyY2UoKS5nZXRWYWx1ZSgpKSA6IG9FdmVudC5nZXRTb3VyY2UoKS5nZXRWYWx1ZSgpO1xuXG5cdFx0XHRcdG9WYWx1ZUJpbmRpbmcuZGV0YWNoQ2hhbmdlKGZuQ2hhbmdlKTtcblx0XHRcdFx0cmVzb2x2ZShzVGFyZ2V0VmFsdWUpO1xuXHRcdFx0fTtcblx0XHRcdG9WYWx1ZUJpbmRpbmcuYXR0YWNoQ2hhbmdlKGZuQ2hhbmdlKTtcblx0XHR9KTtcblx0XHRhUHJvbWlzZXMucHVzaChvUHJvbWlzZUZvclRpdGxlVmFsdWUpO1xuXG5cdFx0aWYgKHNUZXh0RXhwcmVzc2lvbikge1xuXHRcdFx0Y29uc3Qgb1RleHRFeHByZXNzaW9uID0gQmluZGluZ1BhcnNlci5jb21wbGV4UGFyc2VyKHNUZXh0RXhwcmVzc2lvbik7XG5cdFx0XHRsZXQgc1RleHRQYXRoID0gb1RleHRFeHByZXNzaW9uLnBhcnRzID8gb1RleHRFeHByZXNzaW9uLnBhcnRzWzBdLnBhdGggOiBvVGV4dEV4cHJlc3Npb24ucGF0aDtcblx0XHRcdHNUZXh0UGF0aCA9IHNWYWx1ZVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID4gLTEgPyBgJHtzVmFsdWVQYXRoLnNsaWNlKDAsIHNWYWx1ZVBhdGgubGFzdEluZGV4T2YoXCIvXCIpKX0vJHtzVGV4dFBhdGh9YCA6IHNUZXh0UGF0aDtcblxuXHRcdFx0Y29uc3QgZm5UZXh0Rm9ybWF0dGVyID0gb1RleHRFeHByZXNzaW9uLmZvcm1hdHRlcixcblx0XHRcdFx0b1RleHRCaW5kaW5nID0gb01vZGVsLmJpbmRQcm9wZXJ0eShzVGV4dFBhdGgsIG9CaW5kaW5nVmlld0NvbnRleHQpO1xuXHRcdFx0b1RleHRCaW5kaW5nLmluaXRpYWxpemUoKTtcblx0XHRcdGNvbnN0IG9Qcm9taXNlRm9yVGl0bGVUZXh0ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6IChkZXNjcmlwdGlvbjogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRcdGNvbnN0IGZuQ2hhbmdlID0gZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc1RhcmdldFRleHQgPSBmblRleHRGb3JtYXR0ZXIgPyBmblRleHRGb3JtYXR0ZXIob0V2ZW50LmdldFNvdXJjZSgpLmdldFZhbHVlKCkpIDogb0V2ZW50LmdldFNvdXJjZSgpLmdldFZhbHVlKCk7XG5cblx0XHRcdFx0XHRvVGV4dEJpbmRpbmcuZGV0YWNoQ2hhbmdlKGZuQ2hhbmdlKTtcblx0XHRcdFx0XHRyZXNvbHZlKHNUYXJnZXRUZXh0KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRvVGV4dEJpbmRpbmcuYXR0YWNoQ2hhbmdlKGZuQ2hhbmdlKTtcblx0XHRcdH0pO1xuXHRcdFx0YVByb21pc2VzLnB1c2gob1Byb21pc2VGb3JUaXRsZVRleHQpO1xuXHRcdH1cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgdGl0bGVJbmZvOiBhbnlbXSA9IGF3YWl0IFByb21pc2UuYWxsKGFQcm9taXNlcyk7XG5cdFx0XHRsZXQgZm9ybWF0dGVkVGl0bGUgPSBcIlwiO1xuXHRcdFx0aWYgKHR5cGVvZiB0aXRsZUluZm8gIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0Zm9ybWF0dGVkVGl0bGUgPSB0aGlzLl9mb3JtYXRUaXRsZSh0aXRsZUluZm9bMF0sIHRpdGxlSW5mb1sxXSwgdGl0bGVJbmZvWzJdKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmb3JtYXR0ZWRUaXRsZTtcblx0XHR9IGNhdGNoIChlcnJvcjogYW55KSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBmZXRjaGluZyB0aGUgdGl0bGUgZnJvbSB0aGUgaGVhZGVyIGluZm8gOlwiICsgZXJyb3IpO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdF9nZXRBcHBTcGVjaWZpY0hhc2goKSB7XG5cdFx0Ly8gSGFzaENoYW5nZWQgaXNTaGVsbE5hdmlnYXRpb25IYXNoQ2hhbmdlclxuXHRcdGNvbnN0IGhhc2hDaGFuZ2VyID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBIYXNoQ2hhbmdlciB8IChIYXNoQ2hhbmdlciAmIHsgaHJlZkZvckFwcFNwZWNpZmljSGFzaDogRnVuY3Rpb24gfSk7XG5cdFx0cmV0dXJuIFwiaHJlZkZvckFwcFNwZWNpZmljSGFzaFwiIGluIGhhc2hDaGFuZ2VyID8gaGFzaENoYW5nZXIuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKSA6IFwiIy9cIjtcblx0fVxuXG5cdF9nZXRIYXNoKCkge1xuXHRcdHJldHVybiBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGl0bGVJbmZvcm1hdGlvbiBmcm9tIGEgcGF0aC5cblx0ICogSXQgdXBkYXRlcyB0aGUgY2FjaGUgdG8gc3RvcmUgdGl0bGUgaW5mb3JtYXRpb24gaWYgbmVjZXNzYXJ5XG5cdCAqXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLnJvb3RWaWV3LkJhc2VDb250cm9sbGVyI2dldFRpdGxlSW5mb0Zyb21QYXRoXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5yb290Vmlldy5CYXNlQ29udHJvbGxlclxuXHQgKiBAcGFyYW0geyp9IHNQYXRoIHBhdGggb2YgdGhlIGNvbnRleHQgdG8gcmV0cmlldmUgdGl0bGUgaW5mb3JtYXRpb24gZnJvbSBNZXRhTW9kZWxcblx0ICogQHJldHVybnMge1Byb21pc2V9ICBvVGl0bGVpbmZvcm1hdGlvbiByZXR1cm5lZCBhcyBwcm9taXNlXG5cdCAqL1xuXG5cdGdldFRpdGxlSW5mb0Zyb21QYXRoKHNQYXRoOiBhbnkpIHtcblx0XHRjb25zdCBvVGl0bGVIaWVyYXJjaHlDYWNoZSA9IHRoaXMuX2dldFRpdGxlSGllcmFyY2h5Q2FjaGUoKTtcblxuXHRcdGlmIChvVGl0bGVIaWVyYXJjaHlDYWNoZVtzUGF0aF0pIHtcblx0XHRcdC8vIFRoZSB0aXRsZSBpbmZvIGlzIGFscmVhZHkgc3RvcmVkIGluIHRoZSBjYWNoZVxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShvVGl0bGVIaWVyYXJjaHlDYWNoZVtzUGF0aF0pO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHNFbnRpdHlQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChzUGF0aCk7XG5cdFx0Y29uc3Qgc1R5cGVOYW1lID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c0VudGl0eVBhdGh9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IZWFkZXJJbmZvL1R5cGVOYW1lYCk7XG5cdFx0Y29uc3Qgc0FwcFNwZWNpZmljSGFzaCA9IHRoaXMuX2dldEFwcFNwZWNpZmljSGFzaCgpO1xuXHRcdGNvbnN0IHNJbnRlbnQgPSBzQXBwU3BlY2lmaWNIYXNoICsgc1BhdGguc2xpY2UoMSk7XG5cdFx0cmV0dXJuIHRoaXMuX2ZldGNoVGl0bGVWYWx1ZShzUGF0aCkudGhlbigoc1RpdGxlOiBhbnkpID0+IHtcblx0XHRcdGNvbnN0IG9UaXRsZUluZm8gPSB0aGlzLl9jb21wdXRlVGl0bGVJbmZvKHNUeXBlTmFtZSwgc1RpdGxlLCBzSW50ZW50KTtcblx0XHRcdG9UaXRsZUhpZXJhcmNoeUNhY2hlW3NQYXRoXSA9IG9UaXRsZUluZm87XG5cdFx0XHRyZXR1cm4gb1RpdGxlSW5mbztcblx0XHR9KTtcblx0fVxuXHQvKipcblx0ICogRW5zdXJlIHRoYXQgdGhlIHVzaGVsbCBzZXJ2aWNlIHJlY2VpdmVzIGFsbCBlbGVtZW50c1xuXHQgKiAodGl0bGUsIHN1YnRpdGxlLCBpbnRlbnQsIGljb24pIGFzIHN0cmluZ3MuXG5cdCAqXG5cdCAqIEFubm90YXRpb24gSGVhZGVySW5mbyBhbGxvd3MgZm9yIGJpbmRpbmcgb2YgdGl0bGUgYW5kIGRlc2NyaXB0aW9uXG5cdCAqICh3aGljaCBhcmUgdXNlZCBoZXJlIGFzIHRpdGxlIGFuZCBzdWJ0aXRsZSkgdG8gYW55IGVsZW1lbnQgaW4gdGhlIGVudGl0eVxuXHQgKiAoYmVpbmcgcG9zc2libHkgdHlwZXMgbGlrZSBib29sZWFuLCB0aW1lc3RhbXAsIGRvdWJsZSwgZXRjLilcblx0ICpcblx0ICogQ3JlYXRlcyBhIG5ldyBoaWVyYXJjaHkgYW5kIGNvbnZlcnRzIG5vbi1zdHJpbmcgdHlwZXMgdG8gc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gYUhpZXJhcmNoeSBTaGVsbCB0aXRsZSBoaWVyYXJjaHlcblx0ICogQHJldHVybnMgQ29weSBvZiBzaGVsbCB0aXRsZSBoaWVyYXJjaHkgY29udGFpbmluZyBhbGwgZWxlbWVudHMgYXMgc3RyaW5nc1xuXHQgKi9cblx0X2Vuc3VyZUhpZXJhcmNoeUVsZW1lbnRzQXJlU3RyaW5ncyhhSGllcmFyY2h5OiBhbnkpIHtcblx0XHRjb25zdCBhSGllcmFyY2h5U2hlbGwgPSBbXTtcblx0XHRmb3IgKGNvbnN0IGxldmVsIGluIGFIaWVyYXJjaHkpIHtcblx0XHRcdGNvbnN0IG9IaWVyYXJjaHkgPSBhSGllcmFyY2h5W2xldmVsXTtcblx0XHRcdGNvbnN0IG9TaGVsbEhpZXJhcmNoeTogYW55ID0ge307XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiBvSGllcmFyY2h5KSB7XG5cdFx0XHRcdG9TaGVsbEhpZXJhcmNoeVtrZXldID0gdHlwZW9mIG9IaWVyYXJjaHlba2V5XSAhPT0gXCJzdHJpbmdcIiA/IFN0cmluZyhvSGllcmFyY2h5W2tleV0pIDogb0hpZXJhcmNoeVtrZXldO1xuXHRcdFx0fVxuXHRcdFx0YUhpZXJhcmNoeVNoZWxsLnB1c2gob1NoZWxsSGllcmFyY2h5KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFIaWVyYXJjaHlTaGVsbDtcblx0fVxuXG5cdF9nZXRUYXJnZXRUeXBlRnJvbUhhc2goc0hhc2g6IGFueSkge1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGxldCBzVGFyZ2V0VHlwZSA9IFwiXCI7XG5cblx0XHRjb25zdCBhUm91dGVzID0gb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpNVwiKS5yb3V0aW5nPy5yb3V0ZXMgPz8gW107XG5cdFx0Zm9yIChjb25zdCByb3V0ZSBvZiBhUm91dGVzKSB7XG5cdFx0XHRjb25zdCBvUm91dGUgPSBvQXBwQ29tcG9uZW50LmdldFJvdXRlcigpLmdldFJvdXRlKHJvdXRlLm5hbWUpO1xuXHRcdFx0aWYgKG9Sb3V0ZT8ubWF0Y2goc0hhc2gpKSB7XG5cdFx0XHRcdGNvbnN0IHNUYXJnZXQgPSBBcnJheS5pc0FycmF5KHJvdXRlLnRhcmdldCkgPyByb3V0ZS50YXJnZXRbMF0gOiByb3V0ZS50YXJnZXQ7XG5cdFx0XHRcdHNUYXJnZXRUeXBlID0gKG9BcHBDb21wb25lbnQuZ2V0Um91dGVyKCkuZ2V0VGFyZ2V0KHNUYXJnZXQpIGFzIGFueSkuX29PcHRpb25zLm5hbWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBzVGFyZ2V0VHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHNoZWxsIHRpdGxlIGFmdGVyIGVhY2ggbmF2aWdhdGlvbi5cblx0ICpcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLnJvb3RWaWV3LkJhc2VDb250cm9sbGVyXG5cdCAqIEBwYXJhbSBvVmlldyBUaGUgY3VycmVudCB2aWV3XG5cdCAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG1lbnUgaXMgZmlsbGVkIHByb3Blcmx5XG5cdCAqL1xuXHRfY29tcHV0ZVRpdGxlSGllcmFyY2h5KG9WaWV3OiBhbnkpIHtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdG9Db250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSxcblx0XHRcdG9DdXJyZW50UGFnZSA9IG9WaWV3LmdldFBhcmVudCgpLFxuXHRcdFx0YVRpdGxlSW5mb3JtYXRpb25Qcm9taXNlcyA9IFtdLFxuXHRcdFx0c0FwcFNwZWNpZmljSGFzaCA9IHRoaXMuX2dldEFwcFNwZWNpZmljSGFzaCgpLFxuXHRcdFx0bWFuaWZlc3RBcHBTZXR0aW5ncyA9IG9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIiksXG5cdFx0XHRzQXBwVGl0bGUgPSBtYW5pZmVzdEFwcFNldHRpbmdzLnRpdGxlIHx8IFwiXCIsXG5cdFx0XHRzQXBwU3ViVGl0bGUgPSBtYW5pZmVzdEFwcFNldHRpbmdzLnN1YlRpdGxlIHx8IFwiXCIsXG5cdFx0XHRhcHBJY29uID0gbWFuaWZlc3RBcHBTZXR0aW5ncy5pY29uIHx8IFwiXCI7XG5cdFx0bGV0IG9QYWdlVGl0bGVJbmZvcm1hdGlvbjogYW55LCBzTmV3UGF0aDtcblxuXHRcdGlmIChvQ3VycmVudFBhZ2UgJiYgb0N1cnJlbnRQYWdlLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbikge1xuXHRcdFx0aWYgKG9Db250ZXh0KSB7XG5cdFx0XHRcdC8vIElmIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBhIExSLCB1c2UgdGhlIHRpdGxlIGFuZCBzdWJ0aXRsZSBmcm9tIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHRpZiAodGhpcy5fZ2V0VGFyZ2V0VHlwZUZyb21IYXNoKFwiXCIpID09PSBcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydFwiKSB7XG5cdFx0XHRcdFx0YVRpdGxlSW5mb3JtYXRpb25Qcm9taXNlcy5wdXNoKFxuXHRcdFx0XHRcdFx0UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2NvbXB1dGVUaXRsZUluZm8oc0FwcFRpdGxlLCBzQXBwU3ViVGl0bGUsIHNBcHBTcGVjaWZpY0hhc2gsIGFwcEljb24pKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaGVuIG1hbmFnZSBvdGhlciBwYWdlc1xuXHRcdFx0XHRzTmV3UGF0aCA9IG9Db250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3QgYVBhdGhQYXJ0cyA9IHNOZXdQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdFx0bGV0IHNQYXRoID0gXCJcIjtcblxuXHRcdFx0XHRhUGF0aFBhcnRzLnNoaWZ0KCk7IC8vIFJlbW92ZSB0aGUgZmlyc3Qgc2VnbWVudCAoZW1wdHkgc3RyaW5nKSBhcyBpdCBoYXMgYmVlbiBtYW5hZ2VkIGFib3ZlXG5cdFx0XHRcdGFQYXRoUGFydHMucG9wKCk7IC8vIFJlbW92ZSB0aGUgbGFzdCBzZWdtZW50IGFzIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHBhZ2UgYW5kIHNob3VsZG4ndCBhcHBlYXIgaW4gdGhlIG1lbnVcblxuXHRcdFx0XHRhUGF0aFBhcnRzLmZvckVhY2goKHNQYXRoUGFydDogYW55KSA9PiB7XG5cdFx0XHRcdFx0c1BhdGggKz0gYC8ke3NQYXRoUGFydH1gO1xuXHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0XHRcdFx0c1BhcmFtZXRlclBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKSxcblx0XHRcdFx0XHRcdGJJc1BhcmFtZXRlcml6ZWQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUGFyYW1ldGVyUGF0aH0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5SZXN1bHRDb250ZXh0YCk7XG5cdFx0XHRcdFx0aWYgKCFiSXNQYXJhbWV0ZXJpemVkKSB7XG5cdFx0XHRcdFx0XHRhVGl0bGVJbmZvcm1hdGlvblByb21pc2VzLnB1c2godGhpcy5nZXRUaXRsZUluZm9Gcm9tUGF0aChzUGF0aCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEN1cnJlbnQgcGFnZVxuXHRcdFx0b1BhZ2VUaXRsZUluZm9ybWF0aW9uID0gb0N1cnJlbnRQYWdlLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXHRcdFx0b1BhZ2VUaXRsZUluZm9ybWF0aW9uID0gdGhpcy5fY29tcHV0ZVRpdGxlSW5mbyhcblx0XHRcdFx0b1BhZ2VUaXRsZUluZm9ybWF0aW9uLnRpdGxlLFxuXHRcdFx0XHRvUGFnZVRpdGxlSW5mb3JtYXRpb24uc3VidGl0bGUsXG5cdFx0XHRcdHNBcHBTcGVjaWZpY0hhc2ggKyB0aGlzLl9nZXRIYXNoKClcblx0XHRcdCk7XG5cblx0XHRcdGlmIChvQ29udGV4dCkge1xuXHRcdFx0XHR0aGlzLl9nZXRUaXRsZUhpZXJhcmNoeUNhY2hlKClbc05ld1BhdGhdID0gb1BhZ2VUaXRsZUluZm9ybWF0aW9uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fZ2V0VGl0bGVIaWVyYXJjaHlDYWNoZSgpW3NBcHBTcGVjaWZpY0hhc2hdID0gb1BhZ2VUaXRsZUluZm9ybWF0aW9uO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRhVGl0bGVJbmZvcm1hdGlvblByb21pc2VzLnB1c2goUHJvbWlzZS5yZWplY3QoXCJUaXRsZSBpbmZvcm1hdGlvbiBtaXNzaW5nIGluIEhlYWRlckluZm9cIikpO1xuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVRpdGxlSW5mb3JtYXRpb25Qcm9taXNlcylcblx0XHRcdC50aGVuKChhVGl0bGVJbmZvSGllcmFyY2h5OiBhbnlbXSkgPT4ge1xuXHRcdFx0XHQvLyB3b3JrYXJvdW5kIGZvciBzaGVsbCB3aGljaCBpcyBleHBlY3RpbmcgYWxsIGVsZW1lbnRzIGJlaW5nIG9mIHR5cGUgc3RyaW5nXG5cdFx0XHRcdGNvbnN0IGFUaXRsZUluZm9IaWVyYXJjaHlTaGVsbCA9IHRoaXMuX2Vuc3VyZUhpZXJhcmNoeUVsZW1lbnRzQXJlU3RyaW5ncyhhVGl0bGVJbmZvSGllcmFyY2h5KSxcblx0XHRcdFx0XHRzVGl0bGUgPSBvUGFnZVRpdGxlSW5mb3JtYXRpb24udGl0bGU7XG5cdFx0XHRcdGFUaXRsZUluZm9IaWVyYXJjaHlTaGVsbC5yZXZlcnNlKCk7XG5cdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEhpZXJhcmNoeShhVGl0bGVJbmZvSGllcmFyY2h5U2hlbGwpO1xuXG5cdFx0XHRcdHRoaXMuX3NldFNoZWxsTWVudVRpdGxlKG9BcHBDb21wb25lbnQsIHNUaXRsZSwgc0FwcFRpdGxlKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvck1lc3NhZ2U6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3Ioc0Vycm9yTWVzc2FnZSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmJJc0NvbXB1dGluZ1RpdGxlSGllcmFjaHkgPSBmYWxzZTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvck1lc3NhZ2U6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3Ioc0Vycm9yTWVzc2FnZSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0Y2FsY3VsYXRlTGF5b3V0KGlOZXh0RkNMTGV2ZWw6IG51bWJlciwgc0hhc2g6IHN0cmluZywgc1Byb3Bvc2VkTGF5b3V0OiBzdHJpbmcgfCB1bmRlZmluZWQsIGtlZXBDdXJyZW50TGF5b3V0ID0gZmFsc2UpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayBhZnRlciBhIHZpZXcgaGFzIGJlZW4gYm91bmQgdG8gYSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgVGhlIGNvbnRleHQgdGhhdCBoYXMgYmVlbiBib3VuZCB0byBhIHZpZXdcblx0ICovXG5cdG9uQ29udGV4dEJvdW5kVG9WaWV3KG9Db250ZXh0OiBhbnkpIHtcblx0XHRpZiAob0NvbnRleHQpIHtcblx0XHRcdGNvbnN0IHNEZWVwZXN0UGF0aCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikuZ2V0UHJvcGVydHkoXCIvZGVlcGVzdFBhdGhcIiksXG5cdFx0XHRcdHNWaWV3Q29udGV4dFBhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cblx0XHRcdGlmICghc0RlZXBlc3RQYXRoIHx8IHNEZWVwZXN0UGF0aC5pbmRleE9mKHNWaWV3Q29udGV4dFBhdGgpICE9PSAwKSB7XG5cdFx0XHRcdC8vIFRoZXJlIHdhcyBubyBwcmV2aW91cyB2YWx1ZSBmb3IgdGhlIGRlZXBlc3QgcmVhY2hlZCBwYXRoLCBvciB0aGUgcGF0aFxuXHRcdFx0XHQvLyBmb3IgdGhlIHZpZXcgaXNuJ3QgYSBzdWJwYXRoIG9mIHRoZSBwcmV2aW91cyBkZWVwZXN0IHBhdGggLS0+IHVwZGF0ZVxuXHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpLnNldFByb3BlcnR5KFwiL2RlZXBlc3RQYXRoXCIsIHNWaWV3Q29udGV4dFBhdGgsIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRkaXNwbGF5RXJyb3JQYWdlKHNFcnJvck1lc3NhZ2U6IGFueSwgbVBhcmFtZXRlcnM6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdC8vIFRvIGJlIG92ZXJyaWRkZW5cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuXHR9XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHR1cGRhdGVVSVN0YXRlRm9yVmlldyhvVmlldzogYW55LCBGQ0xMZXZlbDogYW55KSB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuXG5cdH1cblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGdldEluc3RhbmNlZFZpZXdzKCk6IFhNTFZpZXdbXSB7XG5cdFx0cmV0dXJuIFtdO1xuXHRcdC8vIFRvIGJlIG92ZXJyaWRlblxuXHR9XG5cdF9zY3JvbGxUYWJsZXNUb0xhc3ROYXZpZ2F0ZWRJdGVtcygpOiB2b2lkIHtcblx0XHQvLyBUbyBiZSBvdmVycmlkZW5cblx0fVxuXHRpc0ZjbEVuYWJsZWQoKTogdGhpcyBpcyBGY2xDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdF9zZXRTaGVsbE1lbnVUaXRsZShvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQsIHNUaXRsZTogc3RyaW5nLCBzQXBwVGl0bGU6IHN0cmluZyk6IHZvaWQge1xuXHRcdC8vIFRvIGJlIG92ZXJyaWRlbiBieSBGY2xDb250cm9sbGVyXG5cdFx0b0FwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCkuc2V0VGl0bGUoc1RpdGxlKTtcblx0fVxuXG5cdGdldEFwcENvbnRlbnRDb250YWluZXIoKTogTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQge1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGFwcENvbnRlbnRJZCA9IG9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIikucm91dGluZz8uY29uZmlnPy5jb250cm9sSWQgPz8gXCJhcHBDb250ZW50XCI7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmJ5SWQoYXBwQ29udGVudElkKSBhcyBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dDtcblx0fVxufVxuaW50ZXJmYWNlIFJvb3RWaWV3QmFzZUNvbnRyb2xsZXIge1xuXHRvbkNvbnRhaW5lclJlYWR5PygpOiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBSb290Vmlld0Jhc2VDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O01Bc0JNQSxzQkFBc0IsV0FEM0JDLGNBQWMsQ0FBQyw2Q0FBNkMsQ0FBQyxVQUU1REMsY0FBYyxDQUFDQyxXQUFXLENBQUMsVUFHM0JELGNBQWMsQ0FBQ0UsU0FBUyxDQUFDO0lBQUE7SUFBQTtNQUFBO01BQUE7UUFBQTtNQUFBO01BQUE7TUFBQTtNQUFBO01BQUEsTUFNbEJDLHlCQUF5QixHQUFHLEtBQUs7TUFBQTtJQUFBO0lBQUE7SUFBQSxPQUV6Q0MsTUFBTSxHQUFOLGtCQUFTO01BQ1JDLGVBQWUsQ0FBQ0MsSUFBSSxFQUFFO01BRXRCLElBQUksQ0FBQ0MsY0FBYyxHQUFHLEVBQUU7SUFDekIsQ0FBQztJQUFBLE9BRURDLGNBQWMsR0FBZCwwQkFBaUI7TUFD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
|