@sapui5/sap.fe.core 1.108.2 → 1.110.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/package.json +11 -9
- package/src/.eslintrc +7 -0
- package/src/sap/fe/core/.library +39 -37
- package/src/sap/fe/core/.supportrc +3 -3
- package/src/sap/fe/core/ActionRuntime.js +72 -27
- package/src/sap/fe/core/ActionRuntime.ts +104 -21
- package/src/sap/fe/core/AppComponent.js +102 -120
- package/src/sap/fe/core/AppComponent.ts +148 -45
- package/src/sap/fe/core/AppStateHandler.js +105 -91
- package/src/sap/fe/core/AppStateHandler.ts +85 -23
- package/src/sap/fe/core/BaseController.js +5 -20
- package/src/sap/fe/core/BaseController.ts +11 -2
- package/src/sap/fe/core/CommonUtils.js +770 -1079
- package/src/sap/fe/core/CommonUtils.ts +750 -491
- package/src/sap/fe/core/ExtensionAPI.js +69 -96
- package/src/sap/fe/core/ExtensionAPI.ts +15 -17
- package/src/sap/fe/core/PageController.js +21 -46
- package/src/sap/fe/core/PageController.ts +11 -2
- package/src/sap/fe/core/TemplateComponent.js +6 -51
- package/src/sap/fe/core/TemplateComponent.ts +27 -16
- package/src/sap/fe/core/TemplateModel.js +18 -24
- package/src/sap/fe/core/TemplateModel.ts +25 -6
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +8 -23
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +5 -4
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +146 -180
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +144 -57
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +43 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +11 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +436 -556
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +288 -157
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +215 -202
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +93 -51
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +11 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +407 -596
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +163 -56
- package/src/sap/fe/core/controllerextensions/Feedback.js +70 -0
- package/src/sap/fe/core/controllerextensions/Feedback.ts +64 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +12 -23
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +127 -182
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +65 -32
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +96 -198
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +4 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +134 -291
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +21 -12
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +111 -214
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +44 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.js +24 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +39 -52
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +26 -7
- package/src/sap/fe/core/controllerextensions/PageReady.js +81 -119
- package/src/sap/fe/core/controllerextensions/PageReady.ts +36 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +16 -51
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.js +7 -33
- package/src/sap/fe/core/controllerextensions/Routing.js +24 -32
- package/src/sap/fe/core/controllerextensions/Routing.ts +6 -1
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +53 -98
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -3
- package/src/sap/fe/core/controllerextensions/SideEffects.js +103 -174
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +37 -22
- package/src/sap/fe/core/controllerextensions/ViewState.js +341 -276
- package/src/sap/fe/core/controllerextensions/ViewState.ts +236 -84
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +6 -22
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +66 -88
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +64 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +28 -34
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +22 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +69 -65
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +31 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +15 -13
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +273 -906
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +142 -420
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +49 -115
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +12 -7
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +70 -89
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +313 -320
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +582 -683
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +507 -386
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +111 -102
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -79
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +689 -154
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +866 -31
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +24 -101
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +5 -5
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +91 -217
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +3 -20
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +1 -0
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +46 -46
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +4 -26
- package/src/sap/fe/core/controls/ConditionalWrapper.js +16 -33
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +16 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +41 -94
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +5 -34
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +5 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +7 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +56 -58
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +53 -33
- package/src/sap/fe/core/controls/FieldWrapper.js +6 -49
- package/src/sap/fe/core/controls/FileWrapper.js +51 -136
- package/src/sap/fe/core/controls/FileWrapper.ts +25 -29
- package/src/sap/fe/core/controls/FilterBar.js +19 -54
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -22
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -5
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +2 -2
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +24 -46
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +14 -41
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +4 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +26 -67
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -20
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +12 -48
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +17 -46
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -3
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +1 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +6 -78
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +4 -4
- package/src/sap/fe/core/converters/ConverterContext.js +44 -98
- package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -20
- package/src/sap/fe/core/converters/ManifestSettings.ts +16 -9
- package/src/sap/fe/core/converters/ManifestWrapper.js +97 -158
- package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +28 -167
- package/src/sap/fe/core/converters/MetaModelConverter.ts +9 -3
- package/src/sap/fe/core/converters/TemplateConverter.js +10 -22
- package/src/sap/fe/core/converters/TemplateConverter.ts +10 -7
- package/src/sap/fe/core/converters/annotations/DataField.js +88 -132
- package/src/sap/fe/core/converters/annotations/DataField.ts +90 -38
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +57 -379
- package/src/sap/fe/core/converters/controls/Common/Action.js +45 -115
- package/src/sap/fe/core/converters/controls/Common/Action.ts +17 -5
- package/src/sap/fe/core/converters/controls/Common/Chart.js +20 -73
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +21 -14
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -9
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +40 -94
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +44 -31
- package/src/sap/fe/core/converters/controls/Common/Form.js +26 -63
- package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -10
- package/src/sap/fe/core/converters/controls/Common/KPI.js +13 -63
- package/src/sap/fe/core/converters/controls/Common/Table.js +368 -707
- package/src/sap/fe/core/converters/controls/Common/Table.ts +308 -197
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +54 -109
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +15 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +69 -210
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -16
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -80
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +3 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -19
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +45 -136
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +10 -10
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +82 -173
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +48 -22
- package/src/sap/fe/core/converters/helpers/Aggregation.js +24 -66
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -7
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +9 -19
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +0 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +20 -48
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +5 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +12 -51
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +13 -11
- package/src/sap/fe/core/converters/helpers/ID.js +3 -17
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -6
- package/src/sap/fe/core/converters/helpers/Key.js +10 -19
- package/src/sap/fe/core/converters/helpers/Key.ts +3 -3
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +2 -20
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +2 -37
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +126 -131
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +112 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +67 -131
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +58 -27
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -183
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +73 -104
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +74 -67
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +77 -69
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +20 -29
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +21 -0
- package/src/sap/fe/core/formatters/FPMFormatter.js +3 -7
- package/src/sap/fe/core/formatters/KPIFormatter.js +5 -13
- package/src/sap/fe/core/formatters/StandardFormatter.js +3 -18
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +87 -53
- package/src/sap/fe/core/formatters/TableFormatter.ts +96 -9
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -4
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -37
- package/src/sap/fe/core/fpm/Component.js +2 -17
- package/src/sap/fe/core/helpers/AnnotationEnum.js +10 -20
- package/src/sap/fe/core/helpers/AnnotationEnum.ts +6 -6
- package/src/sap/fe/core/helpers/AppStartupHelper.js +16 -52
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js +106 -364
- package/src/sap/fe/core/helpers/BindingToolkit.ts +30 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +16 -97
- package/src/sap/fe/core/helpers/ClassSupport.ts +7 -4
- package/src/sap/fe/core/helpers/DeleteHelper.js +621 -0
- package/src/sap/fe/core/helpers/DeleteHelper.ts +796 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -12
- package/src/sap/fe/core/helpers/EditState.js +2 -5
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -10
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -8
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +8 -38
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -5
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -7
- package/src/sap/fe/core/helpers/MassEditHelper.js +177 -289
- package/src/sap/fe/core/helpers/MassEditHelper.ts +124 -91
- package/src/sap/fe/core/helpers/MessageStrip.js +12 -28
- package/src/sap/fe/core/helpers/MessageStrip.ts +7 -7
- package/src/sap/fe/core/helpers/ModelHelper.js +62 -103
- package/src/sap/fe/core/helpers/ModelHelper.ts +58 -20
- package/src/sap/fe/core/helpers/PasteHelper.js +28 -51
- package/src/sap/fe/core/helpers/PasteHelper.ts +10 -9
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +112 -136
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +111 -111
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +5 -11
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +26 -32
- package/src/sap/fe/core/helpers/StableIdHelper.js +166 -218
- package/src/sap/fe/core/helpers/StableIdHelper.ts +175 -191
- package/src/sap/fe/core/helpers/Synchronization.js +1 -8
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -4
- package/src/sap/fe/core/helpers/TypeGuards.js +22 -0
- package/src/sap/fe/core/helpers/TypeGuards.ts +9 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +1 -3
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +2 -1
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +4 -16
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +2 -5
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +4 -27
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library.js +9 -48
- package/src/sap/fe/core/library.support.js +3 -2
- package/src/sap/fe/core/library.support.ts +3 -1
- package/src/sap/fe/core/library.ts +3 -8
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +74 -39
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +71 -26
- package/src/sap/fe/core/messagebundle.properties +113 -67
- package/src/sap/fe/core/messagebundle_ar.properties +20 -3
- package/src/sap/fe/core/messagebundle_bg.properties +22 -5
- package/src/sap/fe/core/messagebundle_ca.properties +21 -4
- package/src/sap/fe/core/messagebundle_cs.properties +21 -4
- package/src/sap/fe/core/messagebundle_cy.properties +22 -5
- package/src/sap/fe/core/messagebundle_da.properties +20 -3
- package/src/sap/fe/core/messagebundle_de.properties +38 -21
- package/src/sap/fe/core/messagebundle_el.properties +20 -3
- package/src/sap/fe/core/messagebundle_en.properties +38 -21
- package/src/sap/fe/core/messagebundle_en_GB.properties +20 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -28
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +41 -24
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -29
- package/src/sap/fe/core/messagebundle_es.properties +40 -23
- package/src/sap/fe/core/messagebundle_es_MX.properties +20 -3
- package/src/sap/fe/core/messagebundle_et.properties +20 -3
- package/src/sap/fe/core/messagebundle_fi.properties +20 -3
- package/src/sap/fe/core/messagebundle_fr.properties +21 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -5
- package/src/sap/fe/core/messagebundle_hi.properties +20 -3
- package/src/sap/fe/core/messagebundle_hr.properties +22 -5
- package/src/sap/fe/core/messagebundle_hu.properties +20 -3
- package/src/sap/fe/core/messagebundle_id.properties +20 -3
- package/src/sap/fe/core/messagebundle_it.properties +23 -6
- package/src/sap/fe/core/messagebundle_iw.properties +20 -3
- package/src/sap/fe/core/messagebundle_ja.properties +22 -5
- package/src/sap/fe/core/messagebundle_kk.properties +21 -4
- package/src/sap/fe/core/messagebundle_ko.properties +20 -3
- package/src/sap/fe/core/messagebundle_lt.properties +20 -3
- package/src/sap/fe/core/messagebundle_lv.properties +20 -3
- package/src/sap/fe/core/messagebundle_ms.properties +20 -3
- package/src/sap/fe/core/messagebundle_nl.properties +20 -3
- package/src/sap/fe/core/messagebundle_no.properties +20 -3
- package/src/sap/fe/core/messagebundle_pl.properties +21 -4
- package/src/sap/fe/core/messagebundle_pt.properties +20 -3
- package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -3
- package/src/sap/fe/core/messagebundle_ro.properties +20 -3
- package/src/sap/fe/core/messagebundle_ru.properties +20 -3
- package/src/sap/fe/core/messagebundle_sh.properties +20 -3
- package/src/sap/fe/core/messagebundle_sk.properties +20 -3
- package/src/sap/fe/core/messagebundle_sl.properties +26 -9
- package/src/sap/fe/core/messagebundle_sv.properties +20 -3
- package/src/sap/fe/core/messagebundle_th.properties +21 -4
- package/src/sap/fe/core/messagebundle_tr.properties +20 -3
- package/src/sap/fe/core/messagebundle_uk.properties +23 -6
- package/src/sap/fe/core/messagebundle_vi.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -3
- package/src/sap/fe/core/operationsHelper.js +74 -101
- package/src/sap/fe/core/operationsHelper.ts +113 -44
- package/src/sap/fe/core/rootView/Fcl.controller.js +151 -228
- package/src/sap/fe/core/rootView/Fcl.controller.ts +90 -15
- package/src/sap/fe/core/rootView/Fcl.view.xml +1 -8
- package/src/sap/fe/core/rootView/NavContainer.controller.js +41 -78
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +32 -38
- package/src/sap/fe/core/rootView/RootViewBaseController.js +110 -181
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +37 -17
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -18
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +13 -52
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -22
- package/src/sap/fe/core/services/NavigationServiceFactory.js +45 -87
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +17 -10
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -28
- package/src/sap/fe/core/services/RoutingServiceFactory.js +92 -250
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -12
- package/src/sap/fe/core/services/ShellServicesFactory.js +122 -251
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +188 -273
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +143 -154
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +37 -135
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +59 -94
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -16
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/support/AnnotationIssue.support.js +6 -9
- package/src/sap/fe/core/support/AnnotationIssue.support.ts +4 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +3 -3
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +3 -3
- package/src/sap/fe/core/support/CommonHelper.js +7 -16
- package/src/sap/fe/core/support/Diagnostics.js +1 -10
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +6 -9
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +3 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -15
- package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -20
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -20
- package/src/sap/fe/core/templating/DataModelPathHelper.js +49 -121
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +41 -31
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +8 -15
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.js +6 -31
- package/src/sap/fe/core/templating/FieldControlHelper.js +4 -21
- package/src/sap/fe/core/templating/FieldControlHelper.ts +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +40 -111
- package/src/sap/fe/core/templating/FilterHelper.ts +20 -16
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -19
- package/src/sap/fe/core/templating/FilterTemplating.ts +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -34
- package/src/sap/fe/core/templating/PropertyHelper.js +120 -163
- package/src/sap/fe/core/templating/PropertyHelper.ts +69 -33
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +46 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +34 -0
- package/src/sap/fe/core/templating/UIFormatters.js +40 -180
- package/src/sap/fe/core/templating/UIFormatters.ts +37 -43
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -14
- package/src/sap/fe/core/type/Email.js +1 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -11
- package/ui5.yaml +0 -1
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +0 -35
- package/src/sap/fe/core/helpers/LRMessageStrip.js +0 -234
- package/src/sap/fe/core/helpers/LRMessageStrip.ts +0 -216
|
@@ -6,22 +6,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
|
|
9
|
-
|
|
10
9
|
var property = ClassSupport.property;
|
|
11
10
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
12
|
-
|
|
13
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 }); }
|
|
14
|
-
|
|
15
12
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
16
|
-
|
|
17
13
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
18
|
-
|
|
19
14
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
20
|
-
|
|
21
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; }
|
|
22
|
-
|
|
23
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.'); }
|
|
24
|
-
|
|
25
17
|
/**
|
|
26
18
|
* Common Extension API for all pages of SAP Fiori elements for OData V4.
|
|
27
19
|
*
|
|
@@ -39,7 +31,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
39
31
|
type: "sap/fe/core/controllerextensions/IntentBasedNavigation"
|
|
40
32
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_BaseObject) {
|
|
41
33
|
_inheritsLoose(ExtensionAPI, _BaseObject);
|
|
42
|
-
|
|
43
34
|
/**
|
|
44
35
|
* A controller extension offering hooks into the edit flow of the application.
|
|
45
36
|
*
|
|
@@ -57,17 +48,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
57
48
|
*
|
|
58
49
|
* @public
|
|
59
50
|
*/
|
|
51
|
+
|
|
60
52
|
function ExtensionAPI(oController, sId) {
|
|
61
53
|
var _this;
|
|
62
|
-
|
|
63
54
|
_this = _BaseObject.call(this) || this;
|
|
64
|
-
|
|
65
55
|
_initializerDefineProperty(_this, "editFlow", _descriptor, _assertThisInitialized(_this));
|
|
66
|
-
|
|
67
56
|
_initializerDefineProperty(_this, "routing", _descriptor2, _assertThisInitialized(_this));
|
|
68
|
-
|
|
69
57
|
_initializerDefineProperty(_this, "intentBasedNavigation", _descriptor3, _assertThisInitialized(_this));
|
|
70
|
-
|
|
71
58
|
_this._controller = oController;
|
|
72
59
|
_this._view = oController.getView();
|
|
73
60
|
_this.extension = _this._controller.extension;
|
|
@@ -78,47 +65,44 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
78
65
|
_this._prefix = sId;
|
|
79
66
|
return _this;
|
|
80
67
|
}
|
|
81
|
-
|
|
82
68
|
var _proto = ExtensionAPI.prototype;
|
|
83
|
-
|
|
84
|
-
|
|
69
|
+
_proto.destroy = function destroy() {
|
|
70
|
+
// delete this._controller;
|
|
85
71
|
// delete this._view;
|
|
86
72
|
// delete this.editFlow._controller;
|
|
87
73
|
// delete this.intentBasedNavigation._controller;
|
|
88
74
|
}
|
|
75
|
+
|
|
89
76
|
/**
|
|
90
77
|
* Retrieves the editFlow controller extension for this page.
|
|
91
78
|
*
|
|
92
79
|
* @public
|
|
93
80
|
* @returns The editFlow controller extension
|
|
94
|
-
|
|
95
|
-
;
|
|
96
|
-
|
|
81
|
+
*/;
|
|
97
82
|
_proto.getEditFlow = function getEditFlow() {
|
|
98
83
|
return this.editFlow;
|
|
99
84
|
}
|
|
85
|
+
|
|
100
86
|
/**
|
|
101
87
|
* Retrieves the routing controller extension for this page.
|
|
102
88
|
*
|
|
103
89
|
* @public
|
|
104
90
|
* @returns The routing controller extension
|
|
105
|
-
|
|
106
|
-
;
|
|
107
|
-
|
|
91
|
+
*/;
|
|
108
92
|
_proto.getRouting = function getRouting() {
|
|
109
93
|
return this.routing;
|
|
110
94
|
}
|
|
95
|
+
|
|
111
96
|
/**
|
|
112
97
|
* Retrieves the intentBasedNavigation controller extension for this page.
|
|
113
98
|
*
|
|
114
99
|
* @public
|
|
115
100
|
* @returns The intentBasedNavigation controller extension
|
|
116
|
-
|
|
117
|
-
;
|
|
118
|
-
|
|
101
|
+
*/;
|
|
119
102
|
_proto.getIntentBasedNavigation = function getIntentBasedNavigation() {
|
|
120
103
|
return this.intentBasedNavigation;
|
|
121
104
|
}
|
|
105
|
+
|
|
122
106
|
/**
|
|
123
107
|
* Access any control by ID.
|
|
124
108
|
*
|
|
@@ -128,21 +112,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
128
112
|
* the same context (like in the same section). You can use the prefix for SAP Fiori elements to also access other controls located in different sections.
|
|
129
113
|
* @returns The requested control, if found in the view.
|
|
130
114
|
* @private
|
|
131
|
-
|
|
132
|
-
;
|
|
133
|
-
|
|
115
|
+
*/;
|
|
134
116
|
_proto.byId = function byId(sId) {
|
|
135
117
|
var oControl = this._view.byId(sId);
|
|
136
|
-
|
|
137
118
|
if (!oControl && this._prefix) {
|
|
138
119
|
// give it a try with the prefix
|
|
139
120
|
oControl = this._view.byId("".concat(this._prefix, "--").concat(sId));
|
|
140
121
|
}
|
|
141
|
-
|
|
142
|
-
if (oControl) {
|
|
143
|
-
return oControl;
|
|
144
|
-
}
|
|
122
|
+
return oControl;
|
|
145
123
|
}
|
|
124
|
+
|
|
146
125
|
/**
|
|
147
126
|
* Get access to models managed by SAP Fiori elements.<br>
|
|
148
127
|
* The following models can be accessed:
|
|
@@ -162,47 +141,41 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
162
141
|
* @param sModelName Name of the model
|
|
163
142
|
* @returns The required model
|
|
164
143
|
* @public
|
|
165
|
-
|
|
166
|
-
;
|
|
167
|
-
|
|
144
|
+
*/;
|
|
168
145
|
_proto.getModel = function getModel(sModelName) {
|
|
169
146
|
var oAppComponent;
|
|
170
|
-
|
|
171
147
|
if (sModelName && sModelName !== "ui") {
|
|
172
148
|
oAppComponent = CommonUtils.getAppComponent(this._view);
|
|
173
|
-
|
|
174
149
|
if (!oAppComponent.getManifestEntry("sap.ui5").models[sModelName]) {
|
|
175
150
|
// don't allow access to our internal models
|
|
176
151
|
return undefined;
|
|
177
152
|
}
|
|
178
153
|
}
|
|
179
|
-
|
|
180
154
|
return this._view.getModel(sModelName);
|
|
181
155
|
}
|
|
156
|
+
|
|
182
157
|
/**
|
|
183
158
|
* Add any control as a dependent control to this SAP Fiori elements page.
|
|
184
159
|
*
|
|
185
160
|
* @alias sap.fe.core.ExtensionAPI#addDependent
|
|
186
161
|
* @param oControl Control to be added as a dependent control
|
|
187
162
|
* @public
|
|
188
|
-
|
|
189
|
-
;
|
|
190
|
-
|
|
163
|
+
*/;
|
|
191
164
|
_proto.addDependent = function addDependent(oControl) {
|
|
192
165
|
this._view.addDependent(oControl);
|
|
193
166
|
}
|
|
167
|
+
|
|
194
168
|
/**
|
|
195
169
|
* Remove a dependent control from this SAP Fiori elements page.
|
|
196
170
|
*
|
|
197
171
|
* @alias sap.fe.core.ExtensionAPI#removeDependent
|
|
198
172
|
* @param oControl Control to be added as a dependent control
|
|
199
173
|
* @public
|
|
200
|
-
|
|
201
|
-
;
|
|
202
|
-
|
|
174
|
+
*/;
|
|
203
175
|
_proto.removeDependent = function removeDependent(oControl) {
|
|
204
176
|
this._view.removeDependent(oControl);
|
|
205
177
|
}
|
|
178
|
+
|
|
206
179
|
/**
|
|
207
180
|
* Navigate to another target.
|
|
208
181
|
*
|
|
@@ -210,12 +183,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
210
183
|
* @param sTarget Name of the target route
|
|
211
184
|
* @param [oContext] Context instance
|
|
212
185
|
* @public
|
|
213
|
-
|
|
214
|
-
;
|
|
215
|
-
|
|
186
|
+
*/;
|
|
216
187
|
_proto.navigateToTarget = function navigateToTarget(sTarget, oContext) {
|
|
217
188
|
this._controller._routing.navigateToTarget(oContext, sTarget);
|
|
218
189
|
}
|
|
190
|
+
|
|
219
191
|
/**
|
|
220
192
|
* Load a fragment and go through the template preprocessor with the current page context.
|
|
221
193
|
*
|
|
@@ -228,51 +200,49 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
228
200
|
* @param mSettings.initialBindingContext The initial binding context
|
|
229
201
|
* @returns The fragment definition
|
|
230
202
|
* @public
|
|
231
|
-
|
|
232
|
-
;
|
|
233
|
-
|
|
203
|
+
*/;
|
|
234
204
|
_proto.loadFragment = function loadFragment(mSettings) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
var mViewData = oTemplateComponent.getViewData();
|
|
244
|
-
var oViewDataModel = new JSONModel(mViewData),
|
|
205
|
+
try {
|
|
206
|
+
var _this3$getModel;
|
|
207
|
+
var _this3 = this;
|
|
208
|
+
var oTemplateComponent = Component.getOwnerComponentFor(_this3._view);
|
|
209
|
+
var oPageModel = _this3._view.getModel("_pageModel");
|
|
210
|
+
var oMetaModel = (_this3$getModel = _this3.getModel()) === null || _this3$getModel === void 0 ? void 0 : _this3$getModel.getMetaModel();
|
|
211
|
+
var mViewData = oTemplateComponent.getViewData();
|
|
212
|
+
var oViewDataModel = new JSONModel(mViewData),
|
|
245
213
|
oPreprocessorSettings = {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
214
|
+
bindingContexts: {
|
|
215
|
+
contextPath: oMetaModel === null || oMetaModel === void 0 ? void 0 : oMetaModel.createBindingContext(mSettings.contextPath || "/".concat(oTemplateComponent.getEntitySet())),
|
|
216
|
+
converterContext: oPageModel.createBindingContext("/", undefined, {
|
|
217
|
+
noResolve: true
|
|
218
|
+
}),
|
|
219
|
+
viewData: mViewData ? oViewDataModel.createBindingContext("/") : null
|
|
220
|
+
},
|
|
221
|
+
models: {
|
|
222
|
+
contextPath: oMetaModel,
|
|
223
|
+
converterContext: oPageModel,
|
|
224
|
+
metaModel: oMetaModel,
|
|
225
|
+
viewData: oViewDataModel
|
|
226
|
+
},
|
|
227
|
+
appComponent: CommonUtils.getAppComponent(_this3._view)
|
|
228
|
+
};
|
|
229
|
+
var oTemplatePromise = CommonUtils.templateControlFragment(mSettings.name, oPreprocessorSettings, {
|
|
230
|
+
controller: mSettings.controller || _this3,
|
|
231
|
+
isXML: false,
|
|
232
|
+
id: mSettings.id
|
|
233
|
+
});
|
|
234
|
+
oTemplatePromise.then(function (oFragment) {
|
|
235
|
+
if (mSettings.initialBindingContext !== undefined) {
|
|
236
|
+
oFragment.setBindingContext(mSettings.initialBindingContext);
|
|
237
|
+
}
|
|
238
|
+
_this3.addDependent(oFragment);
|
|
239
|
+
}).catch(function (oError) {
|
|
240
|
+
Log.error(oError);
|
|
241
|
+
});
|
|
242
|
+
return Promise.resolve(oTemplatePromise);
|
|
243
|
+
} catch (e) {
|
|
244
|
+
return Promise.reject(e);
|
|
245
|
+
}
|
|
276
246
|
}
|
|
277
247
|
/**
|
|
278
248
|
* Triggers an update of the app state.
|
|
@@ -283,11 +253,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
283
253
|
* @public
|
|
284
254
|
*/
|
|
285
255
|
;
|
|
286
|
-
|
|
287
256
|
_proto.updateAppState = function updateAppState() {
|
|
288
|
-
|
|
257
|
+
try {
|
|
258
|
+
var _this5 = this;
|
|
259
|
+
return Promise.resolve(_this5._controller.getAppComponent().getAppStateHandler().createAppState());
|
|
260
|
+
} catch (e) {
|
|
261
|
+
return Promise.reject(e);
|
|
262
|
+
}
|
|
289
263
|
};
|
|
290
|
-
|
|
291
264
|
return ExtensionAPI;
|
|
292
265
|
}(BaseObject), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "editFlow", [_dec2], {
|
|
293
266
|
configurable: true,
|
|
@@ -307,4 +280,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/ui/base/Object",
|
|
|
307
280
|
})), _class2)) || _class);
|
|
308
281
|
return ExtensionAPI;
|
|
309
282
|
}, false);
|
|
310
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJkZWZpbmVVSTVDbGFzcyIsInByb3BlcnR5IiwidHlwZSIsIm9Db250cm9sbGVyIiwic0lkIiwiX2NvbnRyb2xsZXIiLCJfdmlldyIsImdldFZpZXciLCJleHRlbnNpb24iLCJlZGl0RmxvdyIsInJvdXRpbmciLCJfcm91dGluZyIsImludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9wcmVmaXgiLCJkZXN0cm95IiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsIm9Db250cm9sIiwiZ2V0TW9kZWwiLCJzTW9kZWxOYW1lIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TWFuaWZlc3RFbnRyeSIsIm1vZGVscyIsInVuZGVmaW5lZCIsImFkZERlcGVuZGVudCIsInJlbW92ZURlcGVuZGVudCIsIm5hdmlnYXRlVG9UYXJnZXQiLCJzVGFyZ2V0Iiwib0NvbnRleHQiLCJsb2FkRnJhZ21lbnQiLCJtU2V0dGluZ3MiLCJvVGVtcGxhdGVDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9QYWdlTW9kZWwiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibVZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udGV4dFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiY29udHJvbGxlciIsImlzWE1MIiwiaWQiLCJ0aGVuIiwib0ZyYWdtZW50IiwiaW5pdGlhbEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwidXBkYXRlQXBwU3RhdGUiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCIuL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwiLi9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuXG4vKipcbiAqIENvbW1vbiBFeHRlbnNpb24gQVBJIGZvciBhbGwgcGFnZXMgb2YgU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJXG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBzYXAudWkuYmFzZS5PYmplY3RcbiAqIEBzaW5jZSAxLjc5LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJXCIpXG5jbGFzcyBFeHRlbnNpb25BUEkgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgZWRpdCBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiIH0pXG5cdGVkaXRGbG93OiBFZGl0Rmxvdztcblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblx0LyoqXG5cdCAqIEV4dGVuc2lvbkFQSSBmb3IgaW50ZW50LWJhc2VkIG5hdmlnYXRpb25cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB9KVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb246IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRwcm90ZWN0ZWQgX2NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyO1xuXHRwcm90ZWN0ZWQgX3ZpZXc6IFZpZXc7XG5cdHByaXZhdGUgX3JvdXRpbmc6IEludGVybmFsUm91dGluZztcblx0cHJpdmF0ZSBfcHJlZml4Pzogc3RyaW5nO1xuXHRwcml2YXRlIGV4dGVuc2lvbjogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc0lkPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLl9jb250cm9sbGVyID0gb0NvbnRyb2xsZXI7XG5cdFx0dGhpcy5fdmlldyA9IG9Db250cm9sbGVyLmdldFZpZXcoKTtcblx0XHR0aGlzLmV4dGVuc2lvbiA9ICh0aGlzLl9jb250cm9sbGVyIGFzIGFueSkuZXh0ZW5zaW9uO1xuXHRcdHRoaXMuZWRpdEZsb3cgPSB0aGlzLl9jb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdHRoaXMucm91dGluZyA9IHRoaXMuX2NvbnRyb2xsZXIucm91dGluZztcblx0XHR0aGlzLl9yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5fcm91dGluZztcblx0XHR0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbiA9IHRoaXMuX2NvbnRyb2xsZXIuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHRcdHRoaXMuX3ByZWZpeCA9IHNJZDtcblx0fVxuXHRkZXN0cm95KCkge1xuXHRcdC8vIGRlbGV0ZSB0aGlzLl9jb250cm9sbGVyO1xuXHRcdC8vIGRlbGV0ZSB0aGlzLl92aWV3O1xuXHRcdC8vIGRlbGV0ZSB0aGlzLmVkaXRGbG93Ll9jb250cm9sbGVyO1xuXHRcdC8vIGRlbGV0ZSB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbi5fY29udHJvbGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdCAqL1xuXHRnZXRFZGl0RmxvdygpIHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBY2Nlc3MgYW55IGNvbnRyb2wgYnkgSUQuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkjYnlJZFxuXHQgKiBAcGFyYW0gc0lkIElEIG9mIHRoZSBjb250cm9sIHdpdGhvdXQgdGhlIHZpZXcgcHJlZml4LiBFaXRoZXIgdGhlIElEIHByZWZpeGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50c1xuXHQgKiAoZm9yIGV4YW1wbGUgd2l0aCB0aGUgc2VjdGlvbikgb3IgdGhlIGNvbnRyb2wgSUQgb25seS4gVGhlIGxhdHRlciB3b3JrcyBvbmx5IGZvciBhbiBleHRlbnNpb24gcnVubmluZyBpblxuXHQgKiB0aGUgc2FtZSBjb250ZXh0IChsaWtlIGluIHRoZSBzYW1lIHNlY3Rpb24pLiBZb3UgY2FuIHVzZSB0aGUgcHJlZml4IGZvciBTQVAgRmlvcmkgZWxlbWVudHMgdG8gYWxzbyBhY2Nlc3Mgb3RoZXIgY29udHJvbHMgbG9jYXRlZCBpbiBkaWZmZXJlbnQgc2VjdGlvbnMuXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1ZXN0ZWQgY29udHJvbCwgaWYgZm91bmQgaW4gdGhlIHZpZXcuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRieUlkKHNJZDogc3RyaW5nKSB7XG5cdFx0bGV0IG9Db250cm9sID0gdGhpcy5fdmlldy5ieUlkKHNJZCk7XG5cblx0XHRpZiAoIW9Db250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdG9Db250cm9sID0gdGhpcy5fdmlldy5ieUlkKGAke3RoaXMuX3ByZWZpeH0tLSR7c0lkfWApO1xuXHRcdH1cblxuXHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0cmV0dXJuIG9Db250cm9sO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWNjZXNzIHRvIG1vZGVscyBtYW5hZ2VkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cy48YnI+XG5cdCAqIFRoZSBmb2xsb3dpbmcgbW9kZWxzIGNhbiBiZSBhY2Nlc3NlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+dW5kZWZpbmVkOiB0aGUgdW5kZWZpbmVkIG1vZGVsIHJldHVybnMgdGhlIFNBUFVJNSBPRGF0YSBWNCBtb2RlbCBib3VuZCB0byB0aGlzIHBhZ2U8L2xpPlxuXHQgKiA8bGk+aTE4biAvIGZ1cnRoZXIgZGF0YSBtb2RlbHMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Q8L2xpPlxuXHQgKiA8bGk+dWk6IHJldHVybnMgYSBTQVBVSTUgSlNPTiBtb2RlbCBjb250YWluaW5nIFVJIGluZm9ybWF0aW9uLlxuXHQgKiBPbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcHVibGljIGFuZCBzdXBwb3J0ZWQ6XG5cdCAqIFx0PHVsPlxuXHQgKiAgICAgPGxpPmlzRWRpdGFibGU6IHNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBpbiBlZGl0IG1vZGU8L2xpPlxuXHQgKiAgPC91bD5cblx0ICogPC9saT5cblx0ICogPC91bD4uXG5cdCAqIGVkaXRNb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhbnltb3JlLiBVc2UgaXNFZGl0YWJsZSBpbnN0ZWFkLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJI2dldE1vZGVsXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkjYWRkRGVwZW5kZW50XG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKSB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSNyZW1vdmVEZXBlbmRlbnRcblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkjbmF2aWdhdGVUb1RhcmdldFxuXHQgKiBAcGFyYW0gc1RhcmdldCBOYW1lIG9mIHRoZSB0YXJnZXQgcm91dGVcblx0ICogQHBhcmFtIFtvQ29udGV4dF0gQ29udGV4dCBpbnN0YW5jZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRuYXZpZ2F0ZVRvVGFyZ2V0KHNUYXJnZXQ6IHN0cmluZywgb0NvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJI2xvYWRGcmFnbWVudFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyOiBvYmplY3Q7XG5cdFx0Y29udGV4dFBhdGg6IHN0cmluZztcblx0XHRpbml0aWFsQmluZGluZ0NvbnRleHQ6IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPEVsZW1lbnQgfCBFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGNvbnN0IG9QYWdlTW9kZWwgPSB0aGlzLl92aWV3LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtVmlld0RhdGEgPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCBvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKSxcblx0XHRcdG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0XCJjb250ZXh0UGF0aFwiOiBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuY29udGV4dFBhdGggfHwgYC8ke29UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKX1gKSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEgPyBvVmlld0RhdGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdFwiY29udGV4dFBhdGhcIjogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldylcblx0XHRcdH07XG5cdFx0Y29uc3Qgb1RlbXBsYXRlUHJvbWlzZSA9IENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KG1TZXR0aW5ncy5uYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHtcblx0XHRcdGNvbnRyb2xsZXI6IG1TZXR0aW5ncy5jb250cm9sbGVyIHx8IHRoaXMsXG5cdFx0XHRpc1hNTDogZmFsc2UsXG5cdFx0XHRpZDogbVNldHRpbmdzLmlkXG5cdFx0fSk7XG5cdFx0b1RlbXBsYXRlUHJvbWlzZVxuXHRcdFx0LnRoZW4oKG9GcmFnbWVudDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRvRnJhZ21lbnQuc2V0QmluZGluZ0NvbnRleHQobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQob0ZyYWdtZW50KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZVByb21pc2U7XG5cdH1cblxuXHQvKipcblx0ICogVHJpZ2dlcnMgYW4gdXBkYXRlIG9mIHRoZSBhcHAgc3RhdGUuXG5cdCAqIFNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIHN0YXRlIG9mIGEgY29udHJvbCwgb3IgYW55IG90aGVyIHN0YXRlLXJlbGV2YW50IGluZm9ybWF0aW9uLCB3YXMgY2hhbmdlZC5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSN1cGRhdGVBcHBTdGF0ZVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYXBwIHN0YXRlIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dXBkYXRlQXBwU3RhdGUoKTogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX2NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuY3JlYXRlQXBwU3RhdGUoKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7TUFFTUEsWSxXQURMQyxjQUFjLENBQUMsMEJBQUQsQyxVQU9iQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVIsQ0FBRCxDLFVBT1JELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUixDQUFELEMsVUFPUkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFSLENBQUQsQzs7O0lBbkJUO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0lBR0M7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7SUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBVUMsc0JB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
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJkZWZpbmVVSTVDbGFzcyIsInByb3BlcnR5IiwidHlwZSIsIm9Db250cm9sbGVyIiwic0lkIiwiX2NvbnRyb2xsZXIiLCJfdmlldyIsImdldFZpZXciLCJleHRlbnNpb24iLCJlZGl0RmxvdyIsInJvdXRpbmciLCJfcm91dGluZyIsImludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9wcmVmaXgiLCJkZXN0cm95IiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsIm9Db250cm9sIiwiZ2V0TW9kZWwiLCJzTW9kZWxOYW1lIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TWFuaWZlc3RFbnRyeSIsIm1vZGVscyIsInVuZGVmaW5lZCIsImFkZERlcGVuZGVudCIsInJlbW92ZURlcGVuZGVudCIsIm5hdmlnYXRlVG9UYXJnZXQiLCJzVGFyZ2V0Iiwib0NvbnRleHQiLCJsb2FkRnJhZ21lbnQiLCJtU2V0dGluZ3MiLCJvVGVtcGxhdGVDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9QYWdlTW9kZWwiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibVZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNvbnRleHRQYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRFbnRpdHlTZXQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiY29udHJvbGxlciIsImlzWE1MIiwiaWQiLCJ0aGVuIiwib0ZyYWdtZW50IiwiaW5pdGlhbEJpbmRpbmdDb250ZXh0Iiwic2V0QmluZGluZ0NvbnRleHQiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwidXBkYXRlQXBwU3RhdGUiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwiLi9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcIi4vaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcblxuLyoqXG4gKiBDb21tb24gRXh0ZW5zaW9uIEFQSSBmb3IgYWxsIHBhZ2VzIG9mIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKlxuICogQGFsaWFzIHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMgc2FwLnVpLmJhc2UuT2JqZWN0XG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIHJvdXRpbmcgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiIH0pXG5cdHJvdXRpbmc6IFJvdXRpbmc7XG5cdC8qKlxuXHQgKiBFeHRlbnNpb25BUEkgZm9yIGludGVudC1iYXNlZCBuYXZpZ2F0aW9uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIgfSlcblx0aW50ZW50QmFzZWROYXZpZ2F0aW9uOiBJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0cHJvdGVjdGVkIF9jb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcjtcblx0cHJvdGVjdGVkIF92aWV3OiBWaWV3O1xuXHRwcml2YXRlIF9yb3V0aW5nOiBJbnRlcm5hbFJvdXRpbmc7XG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblx0cHJpdmF0ZSBleHRlbnNpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc0lkPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLl9jb250cm9sbGVyID0gb0NvbnRyb2xsZXI7XG5cdFx0dGhpcy5fdmlldyA9IG9Db250cm9sbGVyLmdldFZpZXcoKTtcblx0XHR0aGlzLmV4dGVuc2lvbiA9IHRoaXMuX2NvbnRyb2xsZXIuZXh0ZW5zaW9uO1xuXHRcdHRoaXMuZWRpdEZsb3cgPSB0aGlzLl9jb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdHRoaXMucm91dGluZyA9IHRoaXMuX2NvbnRyb2xsZXIucm91dGluZztcblx0XHR0aGlzLl9yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5fcm91dGluZztcblx0XHR0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbiA9IHRoaXMuX2NvbnRyb2xsZXIuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHRcdHRoaXMuX3ByZWZpeCA9IHNJZDtcblx0fVxuXHRkZXN0cm95KCkge1xuXHRcdC8vIGRlbGV0ZSB0aGlzLl9jb250cm9sbGVyO1xuXHRcdC8vIGRlbGV0ZSB0aGlzLl92aWV3O1xuXHRcdC8vIGRlbGV0ZSB0aGlzLmVkaXRGbG93Ll9jb250cm9sbGVyO1xuXHRcdC8vIGRlbGV0ZSB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbi5fY29udHJvbGxlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdCAqL1xuXHRnZXRFZGl0RmxvdygpIHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCkge1xuXHRcdHJldHVybiB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBY2Nlc3MgYW55IGNvbnRyb2wgYnkgSUQuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkjYnlJZFxuXHQgKiBAcGFyYW0gc0lkIElEIG9mIHRoZSBjb250cm9sIHdpdGhvdXQgdGhlIHZpZXcgcHJlZml4LiBFaXRoZXIgdGhlIElEIHByZWZpeGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50c1xuXHQgKiAoZm9yIGV4YW1wbGUgd2l0aCB0aGUgc2VjdGlvbikgb3IgdGhlIGNvbnRyb2wgSUQgb25seS4gVGhlIGxhdHRlciB3b3JrcyBvbmx5IGZvciBhbiBleHRlbnNpb24gcnVubmluZyBpblxuXHQgKiB0aGUgc2FtZSBjb250ZXh0IChsaWtlIGluIHRoZSBzYW1lIHNlY3Rpb24pLiBZb3UgY2FuIHVzZSB0aGUgcHJlZml4IGZvciBTQVAgRmlvcmkgZWxlbWVudHMgdG8gYWxzbyBhY2Nlc3Mgb3RoZXIgY29udHJvbHMgbG9jYXRlZCBpbiBkaWZmZXJlbnQgc2VjdGlvbnMuXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1ZXN0ZWQgY29udHJvbCwgaWYgZm91bmQgaW4gdGhlIHZpZXcuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRieUlkKHNJZDogc3RyaW5nKSB7XG5cdFx0bGV0IG9Db250cm9sID0gdGhpcy5fdmlldy5ieUlkKHNJZCk7XG5cblx0XHRpZiAoIW9Db250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdG9Db250cm9sID0gdGhpcy5fdmlldy5ieUlkKGAke3RoaXMuX3ByZWZpeH0tLSR7c0lkfWApO1xuXHRcdH1cblx0XHRyZXR1cm4gb0NvbnRyb2w7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjY2VzcyB0byBtb2RlbHMgbWFuYWdlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMuPGJyPlxuXHQgKiBUaGUgZm9sbG93aW5nIG1vZGVscyBjYW4gYmUgYWNjZXNzZWQ6XG5cdCAqIDx1bD5cblx0ICogPGxpPnVuZGVmaW5lZDogdGhlIHVuZGVmaW5lZCBtb2RlbCByZXR1cm5zIHRoZSBTQVBVSTUgT0RhdGEgVjQgbW9kZWwgYm91bmQgdG8gdGhpcyBwYWdlPC9saT5cblx0ICogPGxpPmkxOG4gLyBmdXJ0aGVyIGRhdGEgbW9kZWxzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0PC9saT5cblx0ICogPGxpPnVpOiByZXR1cm5zIGEgU0FQVUk1IEpTT04gbW9kZWwgY29udGFpbmluZyBVSSBpbmZvcm1hdGlvbi5cblx0ICogT25seSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgYXJlIHB1YmxpYyBhbmQgc3VwcG9ydGVkOlxuXHQgKiBcdDx1bD5cblx0ICogICAgIDxsaT5pc0VkaXRhYmxlOiBzZXQgdG8gdHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaXMgaW4gZWRpdCBtb2RlPC9saT5cblx0ICogIDwvdWw+XG5cdCAqIDwvbGk+XG5cdCAqIDwvdWw+LlxuXHQgKiBlZGl0TW9kZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlIGlzRWRpdGFibGUgaW5zdGVhZC5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSNnZXRNb2RlbFxuXHQgKiBAcGFyYW0gc01vZGVsTmFtZSBOYW1lIG9mIHRoZSBtb2RlbFxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWlyZWQgbW9kZWxcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Z2V0TW9kZWwoc01vZGVsTmFtZT86IHN0cmluZyk6IE1vZGVsIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgb0FwcENvbXBvbmVudDtcblxuXHRcdGlmIChzTW9kZWxOYW1lICYmIHNNb2RlbE5hbWUgIT09IFwidWlcIikge1xuXHRcdFx0b0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KTtcblx0XHRcdGlmICghb0FwcENvbXBvbmVudC5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpNVwiKS5tb2RlbHNbc01vZGVsTmFtZV0pIHtcblx0XHRcdFx0Ly8gZG9uJ3QgYWxsb3cgYWNjZXNzIHRvIG91ciBpbnRlcm5hbCBtb2RlbHNcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5fdmlldy5nZXRNb2RlbChzTW9kZWxOYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgYW55IGNvbnRyb2wgYXMgYSBkZXBlbmRlbnQgY29udHJvbCB0byB0aGlzIFNBUCBGaW9yaSBlbGVtZW50cyBwYWdlLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJI2FkZERlcGVuZGVudFxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgQ29udHJvbCB0byBiZSBhZGRlZCBhcyBhIGRlcGVuZGVudCBjb250cm9sXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFkZERlcGVuZGVudChvQ29udHJvbDogQ29udHJvbCkge1xuXHRcdHRoaXMuX3ZpZXcuYWRkRGVwZW5kZW50KG9Db250cm9sKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgYSBkZXBlbmRlbnQgY29udHJvbCBmcm9tIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkjcmVtb3ZlRGVwZW5kZW50XG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cmVtb3ZlRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKSB7XG5cdFx0dGhpcy5fdmlldy5yZW1vdmVEZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlIHRvIGFub3RoZXIgdGFyZ2V0LlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJI25hdmlnYXRlVG9UYXJnZXRcblx0ICogQHBhcmFtIHNUYXJnZXQgTmFtZSBvZiB0aGUgdGFyZ2V0IHJvdXRlXG5cdCAqIEBwYXJhbSBbb0NvbnRleHRdIENvbnRleHQgaW5zdGFuY2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGVUb1RhcmdldChzVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0dGhpcy5fY29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZVRvVGFyZ2V0KG9Db250ZXh0LCBzVGFyZ2V0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkIGEgZnJhZ21lbnQgYW5kIGdvIHRocm91Z2ggdGhlIHRlbXBsYXRlIHByZXByb2Nlc3NvciB3aXRoIHRoZSBjdXJyZW50IHBhZ2UgY29udGV4dC5cblx0ICpcblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSNsb2FkRnJhZ21lbnRcblx0ICogQHBhcmFtIG1TZXR0aW5ncyBUaGUgc2V0dGluZ3Mgb2JqZWN0XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuaWQgVGhlIElEIG9mIHRoZSBmcmFnbWVudCBpdHNlbGZcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5uYW1lIFRoZSBuYW1lIG9mIHRoZSBmcmFnbWVudCB0byBiZSBsb2FkZWRcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5jb250cm9sbGVyIFRoZSBjb250cm9sbGVyIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSBmcmFnbWVudFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRleHRQYXRoIFRoZSBjb250ZXh0UGF0aCB0byBiZSB1c2VkIGZvciB0aGUgdGVtcGxhdGluZyBwcm9jZXNzXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0IFRoZSBpbml0aWFsIGJpbmRpbmcgY29udGV4dFxuXHQgKiBAcmV0dXJucyBUaGUgZnJhZ21lbnQgZGVmaW5pdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBsb2FkRnJhZ21lbnQobVNldHRpbmdzOiB7XG5cdFx0aWQ6IHN0cmluZztcblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0Y29udHJvbGxlcjogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoOiBzdHJpbmc7XG5cdFx0aW5pdGlhbEJpbmRpbmdDb250ZXh0OiBDb250ZXh0O1xuXHR9KTogUHJvbWlzZTxVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdPiB7XG5cdFx0Y29uc3Qgb1RlbXBsYXRlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuX3ZpZXcpIGFzIEVuaGFuY2VXaXRoVUk1PFRlbXBsYXRlQ29tcG9uZW50Pjtcblx0XHRjb25zdCBvUGFnZU1vZGVsID0gdGhpcy5fdmlldy5nZXRNb2RlbChcIl9wYWdlTW9kZWxcIik7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgbVZpZXdEYXRhID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldFZpZXdEYXRhKCk7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhTW9kZWwgPSBuZXcgSlNPTk1vZGVsKG1WaWV3RGF0YSksXG5cdFx0XHRvUHJlcHJvY2Vzc29yU2V0dGluZ3MgPSB7XG5cdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuY29udGV4dFBhdGggfHwgYC8ke29UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKX1gKSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEgPyBvVmlld0RhdGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwsXG5cdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBvVmlld0RhdGFNb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhcHBDb21wb25lbnQ6IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KVxuXHRcdFx0fTtcblx0XHRjb25zdCBvVGVtcGxhdGVQcm9taXNlID0gQ29tbW9uVXRpbHMudGVtcGxhdGVDb250cm9sRnJhZ21lbnQobVNldHRpbmdzLm5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywge1xuXHRcdFx0Y29udHJvbGxlcjogKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIENvbnRyb2xsZXIpIHx8IHRoaXMsXG5cdFx0XHRpc1hNTDogZmFsc2UsXG5cdFx0XHRpZDogbVNldHRpbmdzLmlkXG5cdFx0fSkgYXMgUHJvbWlzZTxDb250cm9sPjtcblx0XHRvVGVtcGxhdGVQcm9taXNlXG5cdFx0XHQudGhlbigob0ZyYWdtZW50OiBDb250cm9sKSA9PiB7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRvRnJhZ21lbnQuc2V0QmluZGluZ0NvbnRleHQobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQob0ZyYWdtZW50KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9KTtcblx0XHRyZXR1cm4gb1RlbXBsYXRlUHJvbWlzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhbiB1cGRhdGUgb2YgdGhlIGFwcCBzdGF0ZS5cblx0ICogU2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgc3RhdGUgb2YgYSBjb250cm9sLCBvciBhbnkgb3RoZXIgc3RhdGUtcmVsZXZhbnQgaW5mb3JtYXRpb24sIHdhcyBjaGFuZ2VkLlxuXHQgKlxuXHQgKiBAYWxpYXMgc2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJI3VwZGF0ZUFwcFN0YXRlXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhcHAgc3RhdGUgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCB7IGFwcFN0YXRlOiBvYmplY3QgfT4ge1xuXHRcdHJldHVybiB0aGlzLl9jb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmNyZWF0ZUFwcFN0YXRlKCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRXh0ZW5zaW9uQVBJO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLFlBQVksV0FEakJDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxVQU96Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUE0QyxDQUFDLENBQUMsVUFPL0RELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBMkMsQ0FBQyxDQUFD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
|
|
@@ -9,7 +9,8 @@ import type TemplateComponent from "sap/fe/core/TemplateComponent";
|
|
|
9
9
|
import BaseObject from "sap/ui/base/Object";
|
|
10
10
|
import Component from "sap/ui/core/Component";
|
|
11
11
|
import type Control from "sap/ui/core/Control";
|
|
12
|
-
import type
|
|
12
|
+
import type UI5Element from "sap/ui/core/Element";
|
|
13
|
+
import type Controller from "sap/ui/core/mvc/Controller";
|
|
13
14
|
import type View from "sap/ui/core/mvc/View";
|
|
14
15
|
import type Context from "sap/ui/model/Context";
|
|
15
16
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
@@ -54,13 +55,13 @@ class ExtensionAPI extends BaseObject {
|
|
|
54
55
|
protected _view: View;
|
|
55
56
|
private _routing: InternalRouting;
|
|
56
57
|
private _prefix?: string;
|
|
57
|
-
private extension:
|
|
58
|
+
private extension: Record<string, unknown>;
|
|
58
59
|
|
|
59
60
|
constructor(oController: PageController, sId?: string) {
|
|
60
61
|
super();
|
|
61
62
|
this._controller = oController;
|
|
62
63
|
this._view = oController.getView();
|
|
63
|
-
this.extension =
|
|
64
|
+
this.extension = this._controller.extension;
|
|
64
65
|
this.editFlow = this._controller.editFlow;
|
|
65
66
|
this.routing = this._controller.routing;
|
|
66
67
|
this._routing = this._controller._routing;
|
|
@@ -121,10 +122,7 @@ class ExtensionAPI extends BaseObject {
|
|
|
121
122
|
// give it a try with the prefix
|
|
122
123
|
oControl = this._view.byId(`${this._prefix}--${sId}`);
|
|
123
124
|
}
|
|
124
|
-
|
|
125
|
-
if (oControl) {
|
|
126
|
-
return oControl;
|
|
127
|
-
}
|
|
125
|
+
return oControl;
|
|
128
126
|
}
|
|
129
127
|
|
|
130
128
|
/**
|
|
@@ -208,13 +206,13 @@ class ExtensionAPI extends BaseObject {
|
|
|
208
206
|
* @returns The fragment definition
|
|
209
207
|
* @public
|
|
210
208
|
*/
|
|
211
|
-
loadFragment(mSettings: {
|
|
209
|
+
async loadFragment(mSettings: {
|
|
212
210
|
id: string;
|
|
213
211
|
name: string;
|
|
214
212
|
controller: object;
|
|
215
213
|
contextPath: string;
|
|
216
214
|
initialBindingContext: Context;
|
|
217
|
-
}): Promise<
|
|
215
|
+
}): Promise<UI5Element | UI5Element[]> {
|
|
218
216
|
const oTemplateComponent = Component.getOwnerComponentFor(this._view) as EnhanceWithUI5<TemplateComponent>;
|
|
219
217
|
const oPageModel = this._view.getModel("_pageModel");
|
|
220
218
|
const oMetaModel = this.getModel()?.getMetaModel();
|
|
@@ -222,12 +220,12 @@ class ExtensionAPI extends BaseObject {
|
|
|
222
220
|
const oViewDataModel = new JSONModel(mViewData),
|
|
223
221
|
oPreprocessorSettings = {
|
|
224
222
|
bindingContexts: {
|
|
225
|
-
|
|
223
|
+
contextPath: oMetaModel?.createBindingContext(mSettings.contextPath || `/${oTemplateComponent.getEntitySet()}`),
|
|
226
224
|
converterContext: oPageModel.createBindingContext("/", undefined, { noResolve: true }),
|
|
227
225
|
viewData: mViewData ? oViewDataModel.createBindingContext("/") : null
|
|
228
226
|
},
|
|
229
227
|
models: {
|
|
230
|
-
|
|
228
|
+
contextPath: oMetaModel,
|
|
231
229
|
converterContext: oPageModel,
|
|
232
230
|
metaModel: oMetaModel,
|
|
233
231
|
viewData: oViewDataModel
|
|
@@ -235,19 +233,19 @@ class ExtensionAPI extends BaseObject {
|
|
|
235
233
|
appComponent: CommonUtils.getAppComponent(this._view)
|
|
236
234
|
};
|
|
237
235
|
const oTemplatePromise = CommonUtils.templateControlFragment(mSettings.name, oPreprocessorSettings, {
|
|
238
|
-
controller: mSettings.controller || this,
|
|
236
|
+
controller: (mSettings.controller as Controller) || this,
|
|
239
237
|
isXML: false,
|
|
240
238
|
id: mSettings.id
|
|
241
|
-
})
|
|
239
|
+
}) as Promise<Control>;
|
|
242
240
|
oTemplatePromise
|
|
243
|
-
.then((oFragment:
|
|
241
|
+
.then((oFragment: Control) => {
|
|
244
242
|
if (mSettings.initialBindingContext !== undefined) {
|
|
245
243
|
oFragment.setBindingContext(mSettings.initialBindingContext);
|
|
246
244
|
}
|
|
247
245
|
this.addDependent(oFragment);
|
|
248
246
|
})
|
|
249
|
-
.catch(function (oError:
|
|
250
|
-
Log.error(oError);
|
|
247
|
+
.catch(function (oError: unknown) {
|
|
248
|
+
Log.error(oError as string);
|
|
251
249
|
});
|
|
252
250
|
return oTemplatePromise;
|
|
253
251
|
}
|
|
@@ -260,7 +258,7 @@ class ExtensionAPI extends BaseObject {
|
|
|
260
258
|
* @returns A promise that resolves with the new app state object.
|
|
261
259
|
* @public
|
|
262
260
|
*/
|
|
263
|
-
updateAppState(): Promise<void
|
|
261
|
+
async updateAppState(): Promise<void | { appState: object }> {
|
|
264
262
|
return this._controller.getAppComponent().getAppStateHandler().createAppState();
|
|
265
263
|
}
|
|
266
264
|
}
|