@sapui5/sap.fe.core 1.101.0 → 1.103.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/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +66 -30
- package/src/sap/fe/core/AppComponent.ts +68 -51
- package/src/sap/fe/core/AppStateHandler.js +13 -13
- package/src/sap/fe/core/AppStateHandler.ts +18 -18
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +279 -188
- package/src/sap/fe/core/CommonUtils.ts +306 -215
- package/src/sap/fe/core/ExtensionAPI.js +25 -30
- package/src/sap/fe/core/ExtensionAPI.ts +37 -41
- package/src/sap/fe/core/PageController.js +12 -7
- package/src/sap/fe/core/PageController.ts +10 -5
- package/src/sap/fe/core/TemplateComponent.js +6 -6
- package/src/sap/fe/core/TemplateComponent.ts +11 -11
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +306 -78
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +280 -70
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +351 -229
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +321 -246
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +59 -34
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -45
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +72 -72
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +82 -80
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +152 -131
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +171 -152
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +11 -10
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +31 -37
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +30 -15
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +19 -11
- package/src/sap/fe/core/controllerextensions/Paginator.ts +22 -14
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +39 -21
- package/src/sap/fe/core/controllerextensions/Share.ts +45 -26
- package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +58 -62
- package/src/sap/fe/core/controllerextensions/ViewState.js +75 -62
- package/src/sap/fe/core/controllerextensions/ViewState.ts +78 -63
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +99 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +58 -112
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +7 -7
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +262 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +20 -21
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ManageDialog.fragment.xml +0 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1631 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +270 -211
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +772 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +240 -100
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1199 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +364 -229
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +188 -0
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +185 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +626 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +112 -69
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +937 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +72 -73
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +21 -24
- package/src/sap/fe/core/controls/CommandExecution.ts +19 -24
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +48 -43
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +51 -46
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +11 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +19 -9
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +14 -8
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +50 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +45 -12
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +12 -2
- package/src/sap/fe/core/controls/FormElementWrapper.ts +14 -3
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +41 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +48 -48
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +71 -76
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +36 -65
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +551 -36
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +605 -36
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
- package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -14
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +56 -67
- package/src/sap/fe/core/converters/MetaModelConverter.ts +183 -193
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +73 -37
- package/src/sap/fe/core/converters/annotations/DataField.ts +121 -77
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +51 -49
- package/src/sap/fe/core/converters/controls/Common/Action.ts +58 -54
- package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -15
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +29 -27
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
- package/src/sap/fe/core/converters/controls/Common/Form.js +30 -34
- package/src/sap/fe/core/converters/controls/Common/Form.ts +48 -58
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
- package/src/sap/fe/core/converters/controls/Common/Table.js +318 -244
- package/src/sap/fe/core/converters/controls/Common/Table.ts +368 -297
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +135 -125
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +162 -148
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +51 -45
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +79 -67
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +92 -89
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +124 -120
- package/src/sap/fe/core/converters/helpers/Aggregation.js +11 -5
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +25 -23
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -30
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +31 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +46 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +56 -55
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +65 -77
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +6 -6
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +10 -8
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +83 -22
- package/src/sap/fe/core/formatters/TableFormatter.ts +80 -25
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/fpm/Component.js +2 -2
- package/src/sap/fe/core/fpm/Component.ts +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +388 -285
- package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
- package/src/sap/fe/core/helpers/ClassSupport.ts +15 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +10 -9
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +532 -264
- package/src/sap/fe/core/helpers/MassEditHelper.ts +560 -289
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +50 -58
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +16 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +20 -16
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
- package/src/sap/fe/core/library.js +51 -3
- package/src/sap/fe/core/library.ts +47 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +151 -197
- package/src/sap/fe/core/messagebundle_ar.properties +36 -63
- package/src/sap/fe/core/messagebundle_bg.properties +36 -63
- package/src/sap/fe/core/messagebundle_ca.properties +36 -63
- package/src/sap/fe/core/messagebundle_cs.properties +36 -63
- package/src/sap/fe/core/messagebundle_cy.properties +36 -63
- package/src/sap/fe/core/messagebundle_da.properties +37 -64
- package/src/sap/fe/core/messagebundle_de.properties +36 -63
- package/src/sap/fe/core/messagebundle_el.properties +38 -65
- package/src/sap/fe/core/messagebundle_en.properties +37 -64
- package/src/sap/fe/core/messagebundle_en_GB.properties +37 -64
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +44 -73
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +37 -64
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +52 -81
- package/src/sap/fe/core/messagebundle_es.properties +36 -63
- package/src/sap/fe/core/messagebundle_es_MX.properties +36 -63
- package/src/sap/fe/core/messagebundle_et.properties +36 -63
- package/src/sap/fe/core/messagebundle_fi.properties +36 -63
- package/src/sap/fe/core/messagebundle_fr.properties +39 -66
- package/src/sap/fe/core/messagebundle_fr_CA.properties +36 -63
- package/src/sap/fe/core/messagebundle_hi.properties +36 -63
- package/src/sap/fe/core/messagebundle_hr.properties +36 -63
- package/src/sap/fe/core/messagebundle_hu.properties +35 -62
- package/src/sap/fe/core/messagebundle_id.properties +37 -64
- package/src/sap/fe/core/messagebundle_it.properties +54 -81
- package/src/sap/fe/core/messagebundle_iw.properties +36 -63
- package/src/sap/fe/core/messagebundle_ja.properties +36 -63
- package/src/sap/fe/core/messagebundle_kk.properties +36 -63
- package/src/sap/fe/core/messagebundle_ko.properties +36 -63
- package/src/sap/fe/core/messagebundle_lt.properties +36 -63
- package/src/sap/fe/core/messagebundle_lv.properties +36 -63
- package/src/sap/fe/core/messagebundle_ms.properties +37 -64
- package/src/sap/fe/core/messagebundle_nl.properties +37 -64
- package/src/sap/fe/core/messagebundle_no.properties +36 -63
- package/src/sap/fe/core/messagebundle_pl.properties +37 -64
- package/src/sap/fe/core/messagebundle_pt.properties +37 -64
- package/src/sap/fe/core/messagebundle_pt_PT.properties +36 -63
- package/src/sap/fe/core/messagebundle_ro.properties +36 -63
- package/src/sap/fe/core/messagebundle_ru.properties +36 -63
- package/src/sap/fe/core/messagebundle_sh.properties +36 -63
- package/src/sap/fe/core/messagebundle_sk.properties +36 -63
- package/src/sap/fe/core/messagebundle_sl.properties +38 -65
- package/src/sap/fe/core/messagebundle_sv.properties +36 -63
- package/src/sap/fe/core/messagebundle_th.properties +36 -63
- package/src/sap/fe/core/messagebundle_tr.properties +36 -63
- package/src/sap/fe/core/messagebundle_uk.properties +37 -64
- package/src/sap/fe/core/messagebundle_vi.properties +37 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +36 -63
- package/src/sap/fe/core/messagebundle_zh_TW.properties +37 -64
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +6 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +12 -10
- package/src/sap/fe/core/services/NavigationServiceFactory.js +54 -45
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +61 -49
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +63 -60
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +76 -73
- package/src/sap/fe/core/services/ShellServicesFactory.js +102 -71
- package/src/sap/fe/core/services/ShellServicesFactory.ts +109 -78
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +24 -18
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +53 -50
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +3 -4
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -15
- package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -18
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +12 -11
- package/src/sap/fe/core/templating/FilterHelper.ts +17 -16
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +79 -56
- package/src/sap/fe/core/templating/PropertyHelper.ts +41 -27
- package/src/sap/fe/core/templating/UIFormatters.js +163 -97
- package/src/sap/fe/core/templating/UIFormatters.ts +210 -129
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/AnnotationHelper.js +0 -331
- package/src/sap/fe/core/AnnotationHelper.ts +0 -321
- package/src/sap/fe/core/RouterProxy.js +0 -938
- package/src/sap/fe/core/TransactionHelper.js +0 -1577
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -406
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -264
- package/src/sap/fe/core/actions/draft.js +0 -665
- package/src/sap/fe/core/actions/messageHandling.js +0 -579
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/actions/sticky.ts +0 -119
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1729
|
@@ -1,37 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
2
|
+
import {
|
|
3
|
+
broadcastCollaborationMessage,
|
|
4
|
+
endCollaboration,
|
|
5
|
+
initializeCollaboration,
|
|
6
|
+
isCollaborationConnected
|
|
7
|
+
} from "sap/fe/core/controllerextensions/collaboration/ActivityBase";
|
|
8
|
+
import type { Message, User, UserActivity } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
9
|
+
import { Activity, CollaborationUtils } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
4
10
|
import MessageBox from "sap/m/MessageBox";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const CONNECTED = "/collaboration/connected";
|
|
13
|
-
const CONNECTION = "/collaboration/connection";
|
|
11
|
+
import type Control from "sap/ui/core/Control";
|
|
12
|
+
import type View from "sap/ui/core/mvc/View";
|
|
13
|
+
import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
14
|
+
import type Context from "sap/ui/model/odata/v4/Context";
|
|
15
|
+
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
16
|
+
|
|
14
17
|
const MYACTIVITY = "/collaboration/myActivity";
|
|
15
18
|
const ACTIVEUSERS = "/collaboration/activeUsers";
|
|
16
19
|
const ACTIVITIES = "/collaboration/activities";
|
|
17
20
|
|
|
18
21
|
export const isConnected = function (control: Control): boolean {
|
|
19
|
-
|
|
22
|
+
const internalModel = control.getModel("internal") as JSONModel;
|
|
23
|
+
return isCollaborationConnected(internalModel);
|
|
20
24
|
};
|
|
21
25
|
|
|
22
|
-
export const send = function (control: Control, action: Activity, content: string | string[] |
|
|
26
|
+
export const send = function (control: Control, action: Activity, content: string | string[] | undefined) {
|
|
23
27
|
if (isConnected(control)) {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
contentArray.forEach(function (c) {
|
|
27
|
-
if (c) {
|
|
28
|
-
clientContent += clientContent ? "|" : "";
|
|
29
|
-
clientContent += typeof c === "string" ? c : c.getPath();
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
const internalModel = control.getModel("internal") as any;
|
|
34
|
-
const webSocket = internalModel.getProperty(CONNECTION) as SapPcpWebSocket;
|
|
28
|
+
const internalModel = control.getModel("internal") as JSONModel;
|
|
29
|
+
const clientContent = Array.isArray(content) ? content.join("|") : content;
|
|
35
30
|
|
|
36
31
|
if (action === Activity.LiveChange) {
|
|
37
32
|
// To avoid unnecessary traffic we keep track of live changes and send it only once
|
|
@@ -46,14 +41,7 @@ export const send = function (control: Control, action: Activity, content: strin
|
|
|
46
41
|
internalModel.setProperty(MYACTIVITY, null);
|
|
47
42
|
}
|
|
48
43
|
|
|
49
|
-
|
|
50
|
-
clientAction: action,
|
|
51
|
-
clientContent: clientContent
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
if (action === Activity.Activate || action === Activity.Discard) {
|
|
55
|
-
disconnect(control);
|
|
56
|
-
}
|
|
44
|
+
broadcastCollaborationMessage(action, clientContent, internalModel);
|
|
57
45
|
}
|
|
58
46
|
};
|
|
59
47
|
|
|
@@ -67,12 +55,8 @@ export const isCollaborationEnabled = function (view: View): boolean {
|
|
|
67
55
|
};
|
|
68
56
|
|
|
69
57
|
export const connect = async function (view: View) {
|
|
70
|
-
const internalModel
|
|
58
|
+
const internalModel = view.getModel("internal") as JSONModel;
|
|
71
59
|
const me = CollaborationUtils.getMe(view);
|
|
72
|
-
if (internalModel.getProperty(CONNECTION)) {
|
|
73
|
-
// connection already established
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
60
|
|
|
77
61
|
// Retrieving ME from shell service
|
|
78
62
|
if (!me) {
|
|
@@ -80,8 +64,6 @@ export const connect = async function (view: View) {
|
|
|
80
64
|
return;
|
|
81
65
|
}
|
|
82
66
|
|
|
83
|
-
const activeUsers: any[] = [me];
|
|
84
|
-
internalModel.setProperty("/collaboration", { activeUsers: activeUsers, activities: {} });
|
|
85
67
|
const bindingContext = view.getBindingContext() as Context;
|
|
86
68
|
const webSocketBaseURL = getWebSocketBaseURL(bindingContext);
|
|
87
69
|
|
|
@@ -94,63 +76,17 @@ export const connect = async function (view: View) {
|
|
|
94
76
|
return;
|
|
95
77
|
}
|
|
96
78
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
webSocket.attachMessage(function (event: Event) {
|
|
100
|
-
const message: Message = event.getParameter("pcpFields");
|
|
101
|
-
messageReceive(message, view, webSocket);
|
|
79
|
+
initializeCollaboration(me, webSocketBaseURL, sDraftUUID, internalModel, (message: Message) => {
|
|
80
|
+
messageReceive(message, view);
|
|
102
81
|
});
|
|
103
82
|
};
|
|
104
83
|
|
|
105
84
|
export const disconnect = function (control: Control) {
|
|
106
|
-
const internalModel = control.getModel("internal") as
|
|
107
|
-
|
|
108
|
-
webSocket.close();
|
|
109
|
-
internalModel.setProperty(CONNECTION, null);
|
|
85
|
+
const internalModel = control.getModel("internal") as JSONModel;
|
|
86
|
+
endCollaboration(internalModel);
|
|
110
87
|
};
|
|
111
88
|
|
|
112
|
-
function
|
|
113
|
-
const internalModel: any = view.getModel("internal");
|
|
114
|
-
const hostLocation = window.location;
|
|
115
|
-
let socketURI;
|
|
116
|
-
|
|
117
|
-
// Support useBackendUrl for local testing
|
|
118
|
-
const useBackendUrl = UriParameters.fromQuery(window.location.search).get("useBackendUrl");
|
|
119
|
-
if (useBackendUrl) {
|
|
120
|
-
socketURI = useBackendUrl.replace("https", "wss");
|
|
121
|
-
} else {
|
|
122
|
-
socketURI = hostLocation.protocol === "https:" ? "wss:" : "ws:";
|
|
123
|
-
socketURI += "//" + hostLocation.host;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
socketURI += (socketBaseURL.startsWith("/") ? "" : "/") + socketBaseURL + "?draft=" + draftUUID;
|
|
127
|
-
|
|
128
|
-
const useFLPUser = UriParameters.fromQuery(window.location.search).get("useFLPUser");
|
|
129
|
-
if (useFLPUser === "true") {
|
|
130
|
-
const me = CollaborationUtils.getMe(view);
|
|
131
|
-
socketURI += "&userID=" + encodeURI(me.id) + "&userName=" + encodeURI(me.initialName || "");
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const webSocket = new SapPcpWebSocket(socketURI, ["v10.pcp.sap.com"]); // TODO: use enum
|
|
135
|
-
internalModel.setProperty(CONNECTION, webSocket);
|
|
136
|
-
|
|
137
|
-
webSocket.attachOpen(function () {
|
|
138
|
-
internalModel.setProperty(CONNECTED, true);
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
webSocket.attachError(function () {
|
|
142
|
-
Log.error("The connection to the websocket channel " + socketBaseURL + " could not be established");
|
|
143
|
-
internalModel.setProperty(CONNECTED, false);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
webSocket.attachClose(function () {
|
|
147
|
-
internalModel.setProperty(CONNECTED, false);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
return webSocket;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
function messageReceive(message: Message, view: View, webSocket: any) {
|
|
89
|
+
function messageReceive(message: Message, view: View) {
|
|
154
90
|
const internalModel: any = view.getModel("internal");
|
|
155
91
|
let activeUsers: User[] = internalModel.getProperty(ACTIVEUSERS);
|
|
156
92
|
let activities: UserActivity[];
|
|
@@ -165,6 +101,7 @@ function messageReceive(message: Message, view: View, webSocket: any) {
|
|
|
165
101
|
color: CollaborationUtils.getUserColor(message.userID, activeUsers, [])
|
|
166
102
|
};
|
|
167
103
|
|
|
104
|
+
// eslint-disable-next-line default-case
|
|
168
105
|
switch (message.userAction) {
|
|
169
106
|
case Activity.Join:
|
|
170
107
|
case Activity.JoinEcho:
|
|
@@ -175,18 +112,14 @@ function messageReceive(message: Message, view: View, webSocket: any) {
|
|
|
175
112
|
|
|
176
113
|
if (message.userAction === Activity.Join) {
|
|
177
114
|
// we echo our existence to the newly entered user and also send the current activity if there is any
|
|
178
|
-
|
|
179
|
-
clientAction: Activity.JoinEcho,
|
|
180
|
-
clientContent: internalModel.getProperty(MYACTIVITY)
|
|
181
|
-
});
|
|
182
|
-
// TODO: echo current activity
|
|
115
|
+
broadcastCollaborationMessage(Activity.JoinEcho, internalModel.getProperty(MYACTIVITY), internalModel);
|
|
183
116
|
}
|
|
184
117
|
|
|
185
118
|
if (message.userAction === Activity.JoinEcho) {
|
|
186
119
|
if (message.clientContent) {
|
|
187
120
|
// another user was already typing therefore I want to see his activity immediately. Calling me again as a live change
|
|
188
121
|
message.userAction = Activity.LiveChange;
|
|
189
|
-
messageReceive(message, view
|
|
122
|
+
messageReceive(message, view);
|
|
190
123
|
}
|
|
191
124
|
}
|
|
192
125
|
|
|
@@ -211,12 +144,23 @@ function messageReceive(message: Message, view: View, webSocket: any) {
|
|
|
211
144
|
break;
|
|
212
145
|
|
|
213
146
|
case Activity.Change:
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
internalModel.setProperty(ACTIVITIES + metaPath, currentActivities);
|
|
147
|
+
const metaPaths = message?.clientContent?.split("|").map((path) => {
|
|
148
|
+
return (view.getModel().getMetaModel() as ODataMetaModel).getMetaPath(path);
|
|
149
|
+
});
|
|
218
150
|
|
|
219
|
-
|
|
151
|
+
metaPaths.forEach((currentMetaPath, i) => {
|
|
152
|
+
const nesteedMessage = {
|
|
153
|
+
...message,
|
|
154
|
+
clientContent: message?.clientContent?.split("|")[i]
|
|
155
|
+
};
|
|
156
|
+
let currentActivities: any[] = internalModel.getProperty(ACTIVITIES + currentMetaPath) || [];
|
|
157
|
+
activityKey = getActivityKey(nesteedMessage.clientContent);
|
|
158
|
+
currentActivities = currentActivities?.filter && currentActivities.filter((activity) => activity.key !== activityKey);
|
|
159
|
+
if (currentActivities) {
|
|
160
|
+
internalModel.setProperty(ACTIVITIES + currentMetaPath, currentActivities);
|
|
161
|
+
update(view, nesteedMessage, currentMetaPath, Activity.Change);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
220
164
|
break;
|
|
221
165
|
case Activity.Create:
|
|
222
166
|
// For create we actually just need to refresh the table
|
|
@@ -252,14 +196,14 @@ function messageReceive(message: Message, view: View, webSocket: any) {
|
|
|
252
196
|
let initJSONModel: string = "";
|
|
253
197
|
const parts = metaPath.split("/");
|
|
254
198
|
for (let i = 1; i < parts.length - 1; i++) {
|
|
255
|
-
initJSONModel +=
|
|
199
|
+
initJSONModel += `/${parts[i]}`;
|
|
256
200
|
if (!internalModel.getProperty(ACTIVITIES + initJSONModel)) {
|
|
257
201
|
internalModel.setProperty(ACTIVITIES + initJSONModel, {});
|
|
258
202
|
}
|
|
259
203
|
}
|
|
260
204
|
|
|
261
205
|
activities = internalModel.getProperty(ACTIVITIES + metaPath);
|
|
262
|
-
activities = activities ? activities.slice() : [];
|
|
206
|
+
activities = activities?.slice ? activities.slice() : [];
|
|
263
207
|
activities.push(activity);
|
|
264
208
|
internalModel.setProperty(ACTIVITIES + metaPath, activities);
|
|
265
209
|
break;
|
|
@@ -279,7 +223,7 @@ function update(view: View, message: Message, metaPath: string, action: Activity
|
|
|
279
223
|
const appComponent = CollaborationUtils.getAppComponent(view);
|
|
280
224
|
const metaModel = view.getModel().getMetaModel() as ODataMetaModel;
|
|
281
225
|
const currentPage = getCurrentPage(view);
|
|
282
|
-
const sideEffectsService =
|
|
226
|
+
const sideEffectsService = appComponent.getSideEffectsService();
|
|
283
227
|
const currentContext = currentPage.getBindingContext();
|
|
284
228
|
const currentPath = currentContext.getPath();
|
|
285
229
|
const currentMetaPath = metaModel.getMetaPath(currentPath);
|
|
@@ -288,12 +232,13 @@ function update(view: View, message: Message, metaPath: string, action: Activity
|
|
|
288
232
|
if (action === Activity.Delete) {
|
|
289
233
|
// check if user currently displays one deleted object
|
|
290
234
|
const deletedObjects = message.clientContent.split("|");
|
|
291
|
-
|
|
235
|
+
const parentDeletedIndex = deletedObjects.findIndex((deletedObject) => currentPath.startsWith(deletedObject));
|
|
236
|
+
if (parentDeletedIndex > -1) {
|
|
292
237
|
// any other user deleted the object I'm currently looking at. Inform the user we will navigate to root now
|
|
293
238
|
MessageBox.information(CollaborationUtils.getText("C_COLLABORATIONDRAFT_DELETE", message.userDescription), {
|
|
294
239
|
onClose: function () {
|
|
295
|
-
|
|
296
|
-
|
|
240
|
+
const targetContext = view.getModel().bindContext(deletedObjects[parentDeletedIndex]).getBoundContext();
|
|
241
|
+
currentPage.getController()._routing.navigateBackFromContext(targetContext);
|
|
297
242
|
}
|
|
298
243
|
});
|
|
299
244
|
}
|
|
@@ -312,7 +257,7 @@ function update(view: View, message: Message, metaPath: string, action: Activity
|
|
|
312
257
|
}
|
|
313
258
|
];
|
|
314
259
|
const entityType = sideEffectsService.getEntityTypeFromContext(currentContext);
|
|
315
|
-
const entityTypeSideEffects = sideEffectsService.getODataEntitySideEffects(entityType);
|
|
260
|
+
const entityTypeSideEffects = sideEffectsService.getODataEntitySideEffects(entityType!);
|
|
316
261
|
// Poor man solution without checking source targets, just for POC, this is throw-way coding only
|
|
317
262
|
const object: any = Object; // just to overcome TS issues, will be anyway replaced
|
|
318
263
|
const relevantSideEffects = object.fromEntries(
|
|
@@ -344,9 +289,10 @@ function navigate(path: string, view: View) {
|
|
|
344
289
|
|
|
345
290
|
function getCurrentPage(view: View) {
|
|
346
291
|
const appComponent = CollaborationUtils.getAppComponent(view);
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
292
|
+
const rootViewController = appComponent.getRootViewController() as any;
|
|
293
|
+
return rootViewController.isFclEnabled()
|
|
294
|
+
? rootViewController.getRightmostView()
|
|
295
|
+
: CommonUtils.getTargetView((appComponent.getRootContainer() as any).getCurrentPage());
|
|
350
296
|
}
|
|
351
297
|
|
|
352
298
|
function getActivityKey(x: string): string {
|
package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.js
RENAMED
|
@@ -113,7 +113,7 @@ sap.ui.define(["sap/ui/core/Component", "sap/ui/core/Core"], function (Component
|
|
|
113
113
|
var me = {
|
|
114
114
|
initials: shellServiceHelper.getUser().getInitials(),
|
|
115
115
|
id: shellServiceHelper.getUser().getId(),
|
|
116
|
-
name: shellServiceHelper.getUser().getFullName()
|
|
116
|
+
name: "".concat(shellServiceHelper.getUser().getFullName(), " (").concat(getText("C_COLLABORATIONDRAFT_YOU"), ")"),
|
|
117
117
|
initialName: shellServiceHelper.getUser().getFullName(),
|
|
118
118
|
color: 6,
|
|
119
119
|
// same color as FLP...
|
|
@@ -143,4 +143,4 @@ sap.ui.define(["sap/ui/core/Component", "sap/ui/core/Core"], function (Component
|
|
|
143
143
|
_exports.CollaborationUtils = CollaborationUtils;
|
|
144
144
|
return _exports;
|
|
145
145
|
}, false);
|
|
146
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbGxhYm9yYXRpb25Db21tb24udHMiXSwibmFtZXMiOlsiUm9sZSIsIkFjdGl2aXR5IiwiZm9ybWF0SW5pdGlhbHMiLCJmdWxsTmFtZSIsImFjYWRlbWljVGl0bGVzIiwiZm9yRWFjaCIsImFjYWRlbWljVGl0bGUiLCJyZXBsYWNlIiwiaW5pdGlhbHMiLCJwYXJ0cyIsInRyaW1TdGFydCIsInNwbGl0IiwibGVuZ3RoIiwic2hpZnQiLCJjaGFyQXQiLCJwb3AiLCJzdWJzdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImdldFVzZXJDb2xvciIsIlVzZXJJRCIsImFjdGl2ZVVzZXJzIiwiaW52aXRlZFVzZXJzIiwidXNlciIsImZpbmQiLCJ1IiwiaWQiLCJjb2xvciIsImkiLCJmaW5kSW5kZXgiLCJnZXRBcHBDb21wb25lbnQiLCJvQ29udHJvbCIsImlzQSIsIm9Pd25lciIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwiZ2V0TWUiLCJ2aWV3Iiwic2hlbGxTZXJ2aWNlSGVscGVyIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImhhc1VTaGVsbCIsIm1lIiwiZ2V0VXNlciIsImdldEluaXRpYWxzIiwiZ2V0SWQiLCJuYW1lIiwiZ2V0RnVsbE5hbWUiLCJnZXRUZXh0IiwiaW5pdGlhbE5hbWUiLCJyb2xlIiwiT3duZXIiLCJ0ZXh0SWQiLCJvUmVzb3VyY2VNb2RlbCIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJhcmdzIiwiQ29sbGFib3JhdGlvblV0aWxzIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7TUFtQllBLEk7O2FBQUFBLEk7QUFBQUEsSUFBQUEsSTtBQUFBQSxJQUFBQSxJO0tBQUFBLEksS0FBQUEsSTs7O01BS0FDLFE7O2FBQUFBLFE7QUFBQUEsSUFBQUEsUTtBQUFBQSxJQUFBQSxRO0FBQUFBLElBQUFBLFE7QUFBQUEsSUFBQUEsUTtBQUFBQSxJQUFBQSxRO0FBQUFBLElBQUFBLFE7QUFBQUEsSUFBQUEsUTtB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LEtBSDBCO0FBSWpDTixJQUFBQSxlQUFlLEVBQUVBLGVBSmdCO0FBS2pDaUIsSUFBQUEsT0FBTyxFQUFFQTtBQUx3QixHQUEzQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29yZUV4IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcblxuZXhwb3J0IHR5cGUgVXNlciA9IHtcblx0aWQ6IHN0cmluZztcblx0aW5pdGlhbHM/OiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0cm9sZT86IFJvbGU7XG5cdGNvbG9yPzogbnVtYmVyO1xuXHR0cmFuc2llbnQ/OiBib29sZWFuO1xuXHRtZT86IGJvb2xlYW47XG5cdGluaXRpYWxOYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlckFjdGl2aXR5ID0gVXNlciAmIHtcblx0a2V5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGVudW0gUm9sZSB7XG5cdE93bmVyID0gXCJPXCIsXG5cdEVkaXQgPSBcIkVcIlxufVxuXG5leHBvcnQgZW51bSBBY3Rpdml0eSB7XG5cdEpvaW4gPSBcIkpPSU5cIixcblx0Sm9pbkVjaG8gPSBcIkpPSU5FQ0hPXCIsXG5cdExlYXZlID0gXCJMRUFWRVwiLFxuXHRDaGFuZ2UgPSBcIkNIQU5HRVwiLFxuXHRDcmVhdGUgPSBcIkNSRUFURVwiLFxuXHREZWxldGUgPSBcIkRFTEVURVwiLFxuXHRBY3Rpb24gPSBcIkFDVElPTlwiLFxuXHRMaXZlQ2hhbmdlID0gXCJMSVZFQ0hBTkdFXCIsXG5cdEFjdGl2YXRlID0gXCJBQ1RJVkFURVwiLFxuXHREaXNjYXJkID0gXCJESVNDQVJEXCIsXG5cdFVuZG8gPSBcIlVORE9cIlxufVxuXG5leHBvcnQgdHlwZSBNZXNzYWdlID0ge1xuXHR1c2VyRGVzY3JpcHRpb246IHN0cmluZztcblx0dXNlcklEOiBzdHJpbmc7XG5cdHVzZXJBY3Rpb246IHN0cmluZztcblx0Y2xpZW50QWN0aW9uOiBzdHJpbmc7XG5cdGNsaWVudENvbnRlbnQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdEluaXRpYWxzKGZ1bGxOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHQvLyByZW1vdmUgdGl0bGVzIC0gdGhvc2UgYXJlIHRoZSBvbmVzIGZyb20gUy80IHRvIGJlIGNoZWNrZWQgaWYgdGhlcmUgYXJlIG90aGVyc1xuXHRjb25zdCBhY2FkZW1pY1RpdGxlcyA9IFtcIkRyLlwiLCBcIlByb2YuXCIsIFwiUHJvZi4gRHIuXCIsIFwiQi5BLlwiLCBcIk1CQVwiLCBcIlBoLkQuXCJdO1xuXHRhY2FkZW1pY1RpdGxlcy5mb3JFYWNoKGZ1bmN0aW9uKGFjYWRlbWljVGl0bGUpIHtcblx0XHRmdWxsTmFtZSA9IGZ1bGxOYW1lLnJlcGxhY2UoYWNhZGVtaWNUaXRsZSwgXCJcIik7XG5cdH0pO1xuXG5cdGxldCBpbml0aWFsczogc3RyaW5nO1xuXHRjb25zdCBwYXJ0cyA9IGZ1bGxOYW1lLnRyaW1TdGFydCgpLnNwbGl0KFwiIFwiKTtcblxuXHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdGluaXRpYWxzID0gKHBhcnRzPy5zaGlmdCgpPy5jaGFyQXQoMCkgfHwgXCJcIikgKyBwYXJ0cy5wb3AoKT8uY2hhckF0KDApO1xuXHR9IGVsc2Uge1xuXHRcdGluaXRpYWxzID0gZnVsbE5hbWUuc3Vic3RyaW5nKDAsIDIpO1xuXHR9XG5cblx0cmV0dXJuIGluaXRpYWxzLnRvVXBwZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGdldFVzZXJDb2xvcihVc2VySUQ6IHN0cmluZywgYWN0aXZlVXNlcnM6IFVzZXJbXSwgaW52aXRlZFVzZXJzOiBVc2VyW10pIHtcblx0Ly8gc2VhcmNoIGlmIHVzZXIgaXMga25vd25cblx0Y29uc3QgdXNlciA9IGFjdGl2ZVVzZXJzLmZpbmQodSA9PiB1LmlkID09PSBVc2VySUQpO1xuXHRpZiAodXNlcikge1xuXHRcdHJldHVybiB1c2VyLmNvbG9yO1xuXHR9IGVsc2Uge1xuXHRcdC8vIHNlYXJjaCBmb3IgbmV4dCBmcmVlIGNvbG9yXG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPD0gMTA7IGkrKykge1xuXHRcdFx0aWYgKGFjdGl2ZVVzZXJzLmZpbmRJbmRleCh1ID0+IHUuY29sb3IgPT09IGkpID09PSAtMSAmJiBpbnZpdGVkVXNlcnMuZmluZEluZGV4KHUgPT4gdS5jb2xvciA9PT0gaSkgPT09IC0xKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyB0aGlzIHNlZW1zIHRvIGJlIGEgcG9wdWxhciBvYmplY3QgOikgZm9yIG5vdyBqdXN0IHJldHVybiAxMCBmb3IgYWxsLlxuXHRcdC8vIGZvciBpbnZpdGVkIHdlIHNob3VsZCBzdGFydCBmcm9tIDEgYWdhaW4gc28gdGhlIGNvbG9ycyBhcmUgZGlmZmVyZW50XG5cdFx0cmV0dXJuIDEwO1xuXHR9XG59XG5cbi8vIGNvcGllZCBmcm9tIENvbW1vblV0aWxzLiBEdWUgdG8gYSBjeWNsZSBkZXBlbmRlbmN5IEkgY2FuJ3QgdXNlIENvbW1vblV0aWxzIGhlcmUuXG4vLyBUaGF0J3MgdG8gYmUgZml4ZWQuIHRoZSBkaXNjYXJkIHBvcG92ZXIgdGhpbmd5IHNob3VsZG4ndCBiZSBpbiB0aGUgY29tbW9uIHV0aWxzIGF0IGFsbFxuZnVuY3Rpb24gZ2V0QXBwQ29tcG9uZW50KG9Db250cm9sOiBhbnkpOiBBcHBDb21wb25lbnQge1xuXHRpZiAob0NvbnRyb2wuaXNBKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIpKSB7XG5cdFx0cmV0dXJuIG9Db250cm9sO1xuXHR9XG5cdGNvbnN0IG9Pd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvQ29udHJvbCk7XG5cdGlmICghb093bmVyKSB7XG5cdFx0cmV0dXJuIG9Db250cm9sO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBnZXRBcHBDb21wb25lbnQob093bmVyKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRNZSh2aWV3OiBWaWV3KTogVXNlciB7XG5cdGNvbnN0IHNoZWxsU2VydmljZUhlbHBlciA9IGdldEFwcENvbXBvbmVudCh2aWV3KS5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdGlmICghc2hlbGxTZXJ2aWNlSGVscGVyIHx8ICFzaGVsbFNlcnZpY2VIZWxwZXIuaGFzVVNoZWxsKCkpIHtcblx0XHR0aHJvdyBcIk5vIFNoZWxsLi4uIE5vIFVzZXJcIjtcblx0fVxuXHRjb25zdCBtZTogVXNlciA9IHtcblx0XHRpbml0aWFsczogc2hlbGxTZXJ2aWNlSGVscGVyLmdldFVzZXIoKS5nZXRJbml0aWFscygpLFxuXHRcdGlkOiBzaGVsbFNlcnZpY2VIZWxwZXIuZ2V0VXNlcigpLmdldElkKCksXG5cdFx0bmFtZTogc2hlbGxTZXJ2aWNlSGVscGVyLmdldFVzZXIoKS5nZXRGdWxsTmFtZSgpICsgXCIgKFwiICsgZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1lPVVwiKSArIFwiKVwiLFxuXHRcdGluaXRpYWxOYW1lOiBzaGVsbFNlcnZpY2VIZWxwZXIuZ2V0VXNlcigpLmdldEZ1bGxOYW1lKCksXG5cdFx0Y29sb3I6IDYsIC8vICBzYW1lIGNvbG9yIGFzIEZMUC4uLlxuXHRcdHJvbGU6IFJvbGUuT3duZXIsXG5cdFx0bWU6IHRydWVcblx0fTtcblxuXHRyZXR1cm4gbWU7XG59XG5cbmZ1bmN0aW9uIGdldFRleHQodGV4dElkOiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nIHtcblx0Y29uc3Qgb1Jlc291cmNlTW9kZWwgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRyZXR1cm4gb1Jlc291cmNlTW9kZWwuZ2V0VGV4dCh0ZXh0SWQsIGFyZ3MpO1xufVxuXG5leHBvcnQgY29uc3QgQ29sbGFib3JhdGlvblV0aWxzID0ge1xuXHRmb3JtYXRJbml0aWFsczogZm9ybWF0SW5pdGlhbHMsXG5cdGdldFVzZXJDb2xvcjogZ2V0VXNlckNvbG9yLFxuXHRnZXRNZTogZ2V0TWUsXG5cdGdldEFwcENvbXBvbmVudDogZ2V0QXBwQ29tcG9uZW50LFxuXHRnZXRUZXh0OiBnZXRUZXh0XG59O1xuIl19
|
|
146
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbGxhYm9yYXRpb25Db21tb24udHMiXSwibmFtZXMiOlsiUm9sZSIsIkFjdGl2aXR5IiwiZm9ybWF0SW5pdGlhbHMiLCJmdWxsTmFtZSIsImFjYWRlbWljVGl0bGVzIiwiZm9yRWFjaCIsImFjYWRlbWljVGl0bGUiLCJyZXBsYWNlIiwiaW5pdGlhbHMiLCJwYXJ0cyIsInRyaW1TdGFydCIsInNwbGl0IiwibGVuZ3RoIiwic2hpZnQiLCJjaGFyQXQiLCJwb3AiLCJzdWJzdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImdldFVzZXJDb2xvciIsIlVzZXJJRCIsImFjdGl2ZVVzZXJzIiwiaW52aXRlZFVzZXJzIiwidXNlciIsImZpbmQiLCJ1IiwiaWQiLCJjb2xvciIsImkiLCJmaW5kSW5kZXgiLCJnZXRBcHBDb21wb25lbnQiLCJvQ29udHJvbCIsImlzQSIsIm9Pd25lciIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwiZ2V0TWUiLCJ2aWV3Iiwic2hlbGxTZXJ2aWNlSGVscGVyIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsImhhc1VTaGVsbCIsIm1lIiwiZ2V0VXNlciIsImdldEluaXRpYWxzIiwiZ2V0SWQiLCJuYW1lIiwiZ2V0RnVsbE5hbWUiLCJnZXRUZXh0IiwiaW5pdGlhbE5hbWUiLCJyb2xlIiwiT3duZXIiLCJ0ZXh0SWQiLCJvUmVzb3VyY2VNb2RlbCIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJhcmdzIiwiQ29sbGFib3JhdGlvblV0aWxzIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7TUFtQllBLEk7O2FBQUFBLEk7QUFBQUEsSUFBQUEsSTtBQUFBQSxJQUFBQSxJO0tBQUFBLEksS0FBQUEsSTs7O01BS0FDLFE7O2FBQUFBLFE7QUFBQUEsSUFBQUEsUTtBQUFBQSxJQUFBQSxRO0FBQUFBLElBQUFBLFE7QUFBQUEsSUFBQUEsUTtBQUFBQSxJQUFBQSxRO0FBQUFBLElBQUFBLFE7QUFBQUEsSUFBQUEsUTtB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LElBQUFBLGVBQWUsRUFBRUEsZUFKZ0I7QUFLakNpQixJQUFBQSxPQUFPLEVBQUVBO0FBTHdCLEdBQTNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBVc2VyID0ge1xuXHRpZDogc3RyaW5nO1xuXHRpbml0aWFscz86IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRyb2xlPzogUm9sZTtcblx0Y29sb3I/OiBudW1iZXI7XG5cdHRyYW5zaWVudD86IGJvb2xlYW47XG5cdG1lPzogYm9vbGVhbjtcblx0aW5pdGlhbE5hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBVc2VyQWN0aXZpdHkgPSBVc2VyICYge1xuXHRrZXk/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZW51bSBSb2xlIHtcblx0T3duZXIgPSBcIk9cIixcblx0RWRpdCA9IFwiRVwiXG59XG5cbmV4cG9ydCBlbnVtIEFjdGl2aXR5IHtcblx0Sm9pbiA9IFwiSk9JTlwiLFxuXHRKb2luRWNobyA9IFwiSk9JTkVDSE9cIixcblx0TGVhdmUgPSBcIkxFQVZFXCIsXG5cdENoYW5nZSA9IFwiQ0hBTkdFXCIsXG5cdENyZWF0ZSA9IFwiQ1JFQVRFXCIsXG5cdERlbGV0ZSA9IFwiREVMRVRFXCIsXG5cdEFjdGlvbiA9IFwiQUNUSU9OXCIsXG5cdExpdmVDaGFuZ2UgPSBcIkxJVkVDSEFOR0VcIixcblx0QWN0aXZhdGUgPSBcIkFDVElWQVRFXCIsXG5cdERpc2NhcmQgPSBcIkRJU0NBUkRcIixcblx0VW5kbyA9IFwiVU5ET1wiXG59XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2UgPSB7XG5cdHVzZXJEZXNjcmlwdGlvbjogc3RyaW5nO1xuXHR1c2VySUQ6IHN0cmluZztcblx0dXNlckFjdGlvbjogc3RyaW5nO1xuXHRjbGllbnRBY3Rpb246IHN0cmluZztcblx0Y2xpZW50Q29udGVudDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0SW5pdGlhbHMoZnVsbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8vIHJlbW92ZSB0aXRsZXMgLSB0aG9zZSBhcmUgdGhlIG9uZXMgZnJvbSBTLzQgdG8gYmUgY2hlY2tlZCBpZiB0aGVyZSBhcmUgb3RoZXJzXG5cdGNvbnN0IGFjYWRlbWljVGl0bGVzID0gW1wiRHIuXCIsIFwiUHJvZi5cIiwgXCJQcm9mLiBEci5cIiwgXCJCLkEuXCIsIFwiTUJBXCIsIFwiUGguRC5cIl07XG5cdGFjYWRlbWljVGl0bGVzLmZvckVhY2goZnVuY3Rpb24gKGFjYWRlbWljVGl0bGUpIHtcblx0XHRmdWxsTmFtZSA9IGZ1bGxOYW1lLnJlcGxhY2UoYWNhZGVtaWNUaXRsZSwgXCJcIik7XG5cdH0pO1xuXG5cdGxldCBpbml0aWFsczogc3RyaW5nO1xuXHRjb25zdCBwYXJ0cyA9IGZ1bGxOYW1lLnRyaW1TdGFydCgpLnNwbGl0KFwiIFwiKTtcblxuXHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdGluaXRpYWxzID0gKHBhcnRzPy5zaGlmdCgpPy5jaGFyQXQoMCkgfHwgXCJcIikgKyBwYXJ0cy5wb3AoKT8uY2hhckF0KDApO1xuXHR9IGVsc2Uge1xuXHRcdGluaXRpYWxzID0gZnVsbE5hbWUuc3Vic3RyaW5nKDAsIDIpO1xuXHR9XG5cblx0cmV0dXJuIGluaXRpYWxzLnRvVXBwZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGdldFVzZXJDb2xvcihVc2VySUQ6IHN0cmluZywgYWN0aXZlVXNlcnM6IFVzZXJbXSwgaW52aXRlZFVzZXJzOiBVc2VyW10pIHtcblx0Ly8gc2VhcmNoIGlmIHVzZXIgaXMga25vd25cblx0Y29uc3QgdXNlciA9IGFjdGl2ZVVzZXJzLmZpbmQoKHUpID0+IHUuaWQgPT09IFVzZXJJRCk7XG5cdGlmICh1c2VyKSB7XG5cdFx0cmV0dXJuIHVzZXIuY29sb3I7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gc2VhcmNoIGZvciBuZXh0IGZyZWUgY29sb3Jcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8PSAxMDsgaSsrKSB7XG5cdFx0XHRpZiAoYWN0aXZlVXNlcnMuZmluZEluZGV4KCh1KSA9PiB1LmNvbG9yID09PSBpKSA9PT0gLTEgJiYgaW52aXRlZFVzZXJzLmZpbmRJbmRleCgodSkgPT4gdS5jb2xvciA9PT0gaSkgPT09IC0xKSB7XG5cdFx0XHRcdHJldHVybiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyB0aGlzIHNlZW1zIHRvIGJlIGEgcG9wdWxhciBvYmplY3QgOikgZm9yIG5vdyBqdXN0IHJldHVybiAxMCBmb3IgYWxsLlxuXHRcdC8vIGZvciBpbnZpdGVkIHdlIHNob3VsZCBzdGFydCBmcm9tIDEgYWdhaW4gc28gdGhlIGNvbG9ycyBhcmUgZGlmZmVyZW50XG5cdFx0cmV0dXJuIDEwO1xuXHR9XG59XG5cbi8vIGNvcGllZCBmcm9tIENvbW1vblV0aWxzLiBEdWUgdG8gYSBjeWNsZSBkZXBlbmRlbmN5IEkgY2FuJ3QgdXNlIENvbW1vblV0aWxzIGhlcmUuXG4vLyBUaGF0J3MgdG8gYmUgZml4ZWQuIHRoZSBkaXNjYXJkIHBvcG92ZXIgdGhpbmd5IHNob3VsZG4ndCBiZSBpbiB0aGUgY29tbW9uIHV0aWxzIGF0IGFsbFxuZnVuY3Rpb24gZ2V0QXBwQ29tcG9uZW50KG9Db250cm9sOiBhbnkpOiBBcHBDb21wb25lbnQge1xuXHRpZiAob0NvbnRyb2wuaXNBKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIpKSB7XG5cdFx0cmV0dXJuIG9Db250cm9sO1xuXHR9XG5cdGNvbnN0IG9Pd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihvQ29udHJvbCk7XG5cdGlmICghb093bmVyKSB7XG5cdFx0cmV0dXJuIG9Db250cm9sO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBnZXRBcHBDb21wb25lbnQob093bmVyKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRNZSh2aWV3OiBWaWV3KTogVXNlciB7XG5cdGNvbnN0IHNoZWxsU2VydmljZUhlbHBlciA9IGdldEFwcENvbXBvbmVudCh2aWV3KS5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdGlmICghc2hlbGxTZXJ2aWNlSGVscGVyIHx8ICFzaGVsbFNlcnZpY2VIZWxwZXIuaGFzVVNoZWxsKCkpIHtcblx0XHR0aHJvdyBcIk5vIFNoZWxsLi4uIE5vIFVzZXJcIjtcblx0fVxuXHRjb25zdCBtZTogVXNlciA9IHtcblx0XHRpbml0aWFsczogc2hlbGxTZXJ2aWNlSGVscGVyLmdldFVzZXIoKS5nZXRJbml0aWFscygpLFxuXHRcdGlkOiBzaGVsbFNlcnZpY2VIZWxwZXIuZ2V0VXNlcigpLmdldElkKCksXG5cdFx0bmFtZTogYCR7c2hlbGxTZXJ2aWNlSGVscGVyLmdldFVzZXIoKS5nZXRGdWxsTmFtZSgpfSAoJHtnZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfWU9VXCIpfSlgLFxuXHRcdGluaXRpYWxOYW1lOiBzaGVsbFNlcnZpY2VIZWxwZXIuZ2V0VXNlcigpLmdldEZ1bGxOYW1lKCksXG5cdFx0Y29sb3I6IDYsIC8vICBzYW1lIGNvbG9yIGFzIEZMUC4uLlxuXHRcdHJvbGU6IFJvbGUuT3duZXIsXG5cdFx0bWU6IHRydWVcblx0fTtcblxuXHRyZXR1cm4gbWU7XG59XG5cbmZ1bmN0aW9uIGdldFRleHQodGV4dElkOiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nIHtcblx0Y29uc3Qgb1Jlc291cmNlTW9kZWwgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRyZXR1cm4gb1Jlc291cmNlTW9kZWwuZ2V0VGV4dCh0ZXh0SWQsIGFyZ3MpO1xufVxuXG5leHBvcnQgY29uc3QgQ29sbGFib3JhdGlvblV0aWxzID0ge1xuXHRmb3JtYXRJbml0aWFsczogZm9ybWF0SW5pdGlhbHMsXG5cdGdldFVzZXJDb2xvcjogZ2V0VXNlckNvbG9yLFxuXHRnZXRNZTogZ2V0TWUsXG5cdGdldEFwcENvbXBvbmVudDogZ2V0QXBwQ29tcG9uZW50LFxuXHRnZXRUZXh0OiBnZXRUZXh0XG59O1xuIl19
|
package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type AppComponent from "sap/fe/core/AppComponent";
|
|
2
2
|
import Component from "sap/ui/core/Component";
|
|
3
|
-
import AppComponent from "sap/fe/core/AppComponent";
|
|
4
|
-
import { CoreEx } from "../../../../../../../../types/extension_types";
|
|
5
3
|
import Core from "sap/ui/core/Core";
|
|
4
|
+
import type View from "sap/ui/core/mvc/View";
|
|
5
|
+
import type { CoreEx } from "../../../../../../../../types/extension_types";
|
|
6
6
|
|
|
7
7
|
export type User = {
|
|
8
8
|
id: string;
|
|
@@ -49,7 +49,7 @@ export type Message = {
|
|
|
49
49
|
function formatInitials(fullName: string): string {
|
|
50
50
|
// remove titles - those are the ones from S/4 to be checked if there are others
|
|
51
51
|
const academicTitles = ["Dr.", "Prof.", "Prof. Dr.", "B.A.", "MBA", "Ph.D."];
|
|
52
|
-
academicTitles.forEach(function(academicTitle) {
|
|
52
|
+
academicTitles.forEach(function (academicTitle) {
|
|
53
53
|
fullName = fullName.replace(academicTitle, "");
|
|
54
54
|
});
|
|
55
55
|
|
|
@@ -67,13 +67,13 @@ function formatInitials(fullName: string): string {
|
|
|
67
67
|
|
|
68
68
|
function getUserColor(UserID: string, activeUsers: User[], invitedUsers: User[]) {
|
|
69
69
|
// search if user is known
|
|
70
|
-
const user = activeUsers.find(u => u.id === UserID);
|
|
70
|
+
const user = activeUsers.find((u) => u.id === UserID);
|
|
71
71
|
if (user) {
|
|
72
72
|
return user.color;
|
|
73
73
|
} else {
|
|
74
74
|
// search for next free color
|
|
75
75
|
for (let i = 1; i <= 10; i++) {
|
|
76
|
-
if (activeUsers.findIndex(u => u.color === i) === -1 && invitedUsers.findIndex(u => u.color === i) === -1) {
|
|
76
|
+
if (activeUsers.findIndex((u) => u.color === i) === -1 && invitedUsers.findIndex((u) => u.color === i) === -1) {
|
|
77
77
|
return i;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -105,7 +105,7 @@ function getMe(view: View): User {
|
|
|
105
105
|
const me: User = {
|
|
106
106
|
initials: shellServiceHelper.getUser().getInitials(),
|
|
107
107
|
id: shellServiceHelper.getUser().getId(),
|
|
108
|
-
name: shellServiceHelper.getUser().getFullName()
|
|
108
|
+
name: `${shellServiceHelper.getUser().getFullName()} (${getText("C_COLLABORATIONDRAFT_YOU")})`,
|
|
109
109
|
initialName: shellServiceHelper.getUser().getFullName(),
|
|
110
110
|
color: 6, // same color as FLP...
|
|
111
111
|
role: Role.Owner,
|