@sapui5/sap.fe.core 1.102.2 → 1.104.1
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 +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +73 -30
- package/src/sap/fe/core/AppComponent.ts +65 -43
- package/src/sap/fe/core/AppStateHandler.js +82 -70
- package/src/sap/fe/core/AppStateHandler.ts +32 -37
- 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 +227 -126
- package/src/sap/fe/core/CommonUtils.ts +240 -163
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- 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/BuildingBlock.js +181 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
- package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
- 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 +101 -74
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
- 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 +9 -9
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- 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 +170 -139
- package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
- package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
- 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 +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- 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 +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- 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 +7 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
- 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 +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- 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 +49 -49
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
- 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 +64 -35
- package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
- 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 +58 -35
- package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
- 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 +30 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
- package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
- package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
- package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
- package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
- 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 +77 -73
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -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 +48 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +26 -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 -5
- 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 +55 -42
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- 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 +96 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- 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/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
- package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
- package/src/sap/fe/core/helpers/ClassSupport.ts +37 -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 +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- 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 +306 -280
- package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- 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 +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.ts +38 -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 +39 -63
- package/src/sap/fe/core/messagebundle_ar.properties +25 -39
- package/src/sap/fe/core/messagebundle_bg.properties +25 -39
- package/src/sap/fe/core/messagebundle_ca.properties +25 -39
- package/src/sap/fe/core/messagebundle_cs.properties +25 -39
- package/src/sap/fe/core/messagebundle_cy.properties +25 -39
- package/src/sap/fe/core/messagebundle_da.properties +25 -39
- package/src/sap/fe/core/messagebundle_de.properties +25 -39
- package/src/sap/fe/core/messagebundle_el.properties +26 -40
- package/src/sap/fe/core/messagebundle_en.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
- package/src/sap/fe/core/messagebundle_es.properties +27 -41
- package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
- package/src/sap/fe/core/messagebundle_et.properties +25 -39
- package/src/sap/fe/core/messagebundle_fi.properties +25 -39
- package/src/sap/fe/core/messagebundle_fr.properties +26 -40
- package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
- package/src/sap/fe/core/messagebundle_hi.properties +25 -39
- package/src/sap/fe/core/messagebundle_hr.properties +25 -39
- package/src/sap/fe/core/messagebundle_hu.properties +25 -39
- package/src/sap/fe/core/messagebundle_id.properties +25 -39
- package/src/sap/fe/core/messagebundle_it.properties +41 -55
- package/src/sap/fe/core/messagebundle_iw.properties +25 -39
- package/src/sap/fe/core/messagebundle_ja.properties +25 -39
- package/src/sap/fe/core/messagebundle_kk.properties +25 -39
- package/src/sap/fe/core/messagebundle_ko.properties +30 -44
- package/src/sap/fe/core/messagebundle_lt.properties +25 -39
- package/src/sap/fe/core/messagebundle_lv.properties +25 -39
- package/src/sap/fe/core/messagebundle_ms.properties +25 -39
- package/src/sap/fe/core/messagebundle_nl.properties +27 -41
- package/src/sap/fe/core/messagebundle_no.properties +25 -39
- package/src/sap/fe/core/messagebundle_pl.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
- package/src/sap/fe/core/messagebundle_ro.properties +25 -39
- package/src/sap/fe/core/messagebundle_ru.properties +25 -39
- package/src/sap/fe/core/messagebundle_sh.properties +25 -39
- package/src/sap/fe/core/messagebundle_sk.properties +25 -39
- package/src/sap/fe/core/messagebundle_sl.properties +25 -39
- package/src/sap/fe/core/messagebundle_sv.properties +25 -39
- package/src/sap/fe/core/messagebundle_th.properties +25 -39
- package/src/sap/fe/core/messagebundle_tr.properties +25 -39
- package/src/sap/fe/core/messagebundle_uk.properties +25 -39
- package/src/sap/fe/core/messagebundle_vi.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
- 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 +97 -69
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
- 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 +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
- 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 +224 -198
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
- 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 +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- 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 +16 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
- 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 +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +152 -95
- package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
- 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/helpers/BindingExpression.js +0 -1732
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "../../ManifestSettings", "./Chart", "./Table"], function (IssueManager, ManifestSettings, Chart, Table) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
|
-
var TemplateType = ManifestSettings.TemplateType;
|
|
10
|
-
var IssueCategory = IssueManager.IssueCategory;
|
|
11
|
-
var IssueSeverity = IssueManager.IssueSeverity;
|
|
12
|
-
var IssueType = IssueManager.IssueType;
|
|
13
|
-
var createChartVisualization = Chart.createChartVisualization;
|
|
14
9
|
var createTableVisualization = Table.createTableVisualization;
|
|
15
10
|
var createDefaultTableVisualization = Table.createDefaultTableVisualization;
|
|
11
|
+
var createChartVisualization = Chart.createChartVisualization;
|
|
12
|
+
var TemplateType = ManifestSettings.TemplateType;
|
|
13
|
+
var IssueType = IssueManager.IssueType;
|
|
14
|
+
var IssueSeverity = IssueManager.IssueSeverity;
|
|
15
|
+
var IssueCategory = IssueManager.IssueCategory;
|
|
16
16
|
|
|
17
17
|
var getVisualizationsFromPresentationVariant = function (presentationVariantAnnotation, visualizationPath, converterContext) {
|
|
18
18
|
var visualizationAnnotations = [];
|
|
@@ -162,10 +162,10 @@ sap.ui.define(["./Table", "./Chart", "sap/fe/core/converters/helpers/IssueManage
|
|
|
162
162
|
var selectionVariant;
|
|
163
163
|
|
|
164
164
|
if (selectionPresentationVariant) {
|
|
165
|
-
|
|
165
|
+
selectionVariant = selectionPresentationVariant.SelectionVariant;
|
|
166
166
|
|
|
167
|
-
if (
|
|
168
|
-
return
|
|
167
|
+
if (selectionVariant) {
|
|
168
|
+
return selectionVariant;
|
|
169
169
|
}
|
|
170
170
|
} else {
|
|
171
171
|
selectionVariant = getDefaultSelectionVariant(entityType);
|
|
@@ -175,50 +175,52 @@ sap.ui.define(["./Table", "./Chart", "sap/fe/core/converters/helpers/IssueManage
|
|
|
175
175
|
|
|
176
176
|
_exports.getSelectionVariant = getSelectionVariant;
|
|
177
177
|
|
|
178
|
-
function getDataVisualizationConfiguration(visualizationPath, isCondensedTableLayoutCompliant,
|
|
179
|
-
var resolvedTarget =
|
|
180
|
-
var
|
|
181
|
-
|
|
178
|
+
function getDataVisualizationConfiguration(visualizationPath, isCondensedTableLayoutCompliant, inConverterContext, viewConfiguration, doNotCheckApplySupported, associatedPresentationVariantPath) {
|
|
179
|
+
var resolvedTarget = inConverterContext.getEntityTypeAnnotation(visualizationPath);
|
|
180
|
+
var resolvedAssociatedPresentationVariant = associatedPresentationVariantPath ? inConverterContext.getEntityTypeAnnotation(associatedPresentationVariantPath) : null;
|
|
181
|
+
var resolvedVisualization = resolvedTarget.annotation;
|
|
182
|
+
inConverterContext = resolvedTarget.converterContext;
|
|
182
183
|
var visualizationAnnotations = [];
|
|
183
184
|
var presentationVariantAnnotation;
|
|
184
185
|
var presentationPath = "";
|
|
185
186
|
var chartVisualization, tableVisualization;
|
|
186
|
-
var sTerm =
|
|
187
|
+
var sTerm = resolvedVisualization === null || resolvedVisualization === void 0 ? void 0 : resolvedVisualization.term;
|
|
187
188
|
|
|
188
189
|
if (sTerm) {
|
|
189
190
|
switch (sTerm) {
|
|
190
191
|
case "com.sap.vocabularies.UI.v1.LineItem":
|
|
191
192
|
case "com.sap.vocabularies.UI.v1.Chart":
|
|
193
|
+
presentationVariantAnnotation = resolvedAssociatedPresentationVariant === null || resolvedAssociatedPresentationVariant === void 0 ? void 0 : resolvedAssociatedPresentationVariant.annotation;
|
|
192
194
|
visualizationAnnotations.push({
|
|
193
|
-
visualization:
|
|
195
|
+
visualization: resolvedVisualization,
|
|
194
196
|
annotationPath: visualizationPath,
|
|
195
|
-
converterContext:
|
|
197
|
+
converterContext: inConverterContext
|
|
196
198
|
});
|
|
197
199
|
break;
|
|
198
200
|
|
|
199
201
|
case "com.sap.vocabularies.UI.v1.PresentationVariant":
|
|
200
|
-
presentationVariantAnnotation =
|
|
201
|
-
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(
|
|
202
|
+
presentationVariantAnnotation = resolvedVisualization;
|
|
203
|
+
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(resolvedVisualization, visualizationPath, inConverterContext));
|
|
202
204
|
break;
|
|
203
205
|
|
|
204
206
|
case "com.sap.vocabularies.UI.v1.SelectionPresentationVariant":
|
|
205
|
-
presentationVariantAnnotation =
|
|
207
|
+
presentationVariantAnnotation = resolvedVisualization.PresentationVariant; // Presentation can be inline or outside the SelectionPresentationVariant
|
|
206
208
|
|
|
207
209
|
presentationPath = presentationVariantAnnotation.fullyQualifiedName;
|
|
208
210
|
|
|
209
211
|
if (!isPresentationCompliant(presentationVariantAnnotation)) {
|
|
210
|
-
var entityType =
|
|
212
|
+
var entityType = inConverterContext.getEntityType();
|
|
211
213
|
var defaultLineItemAnnotation = getDefaultLineItem(entityType);
|
|
212
214
|
|
|
213
215
|
if (defaultLineItemAnnotation) {
|
|
214
216
|
visualizationAnnotations.push({
|
|
215
217
|
visualization: defaultLineItemAnnotation,
|
|
216
|
-
annotationPath:
|
|
217
|
-
converterContext:
|
|
218
|
+
annotationPath: inConverterContext.getRelativeAnnotationPath(defaultLineItemAnnotation.fullyQualifiedName, entityType),
|
|
219
|
+
converterContext: inConverterContext
|
|
218
220
|
});
|
|
219
221
|
}
|
|
220
222
|
} else {
|
|
221
|
-
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(presentationVariantAnnotation, visualizationPath,
|
|
223
|
+
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(presentationVariantAnnotation, visualizationPath, inConverterContext));
|
|
222
224
|
}
|
|
223
225
|
|
|
224
226
|
break;
|
|
@@ -244,12 +246,12 @@ sap.ui.define(["./Table", "./Chart", "sap/fe/core/converters/helpers/IssueManage
|
|
|
244
246
|
}
|
|
245
247
|
});
|
|
246
248
|
} else {
|
|
247
|
-
tableVisualization = createDefaultTableVisualization(
|
|
248
|
-
|
|
249
|
+
tableVisualization = createDefaultTableVisualization(inConverterContext);
|
|
250
|
+
inConverterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Medium, IssueType.MISSING_LINEITEM);
|
|
249
251
|
}
|
|
250
252
|
|
|
251
253
|
var aVisualizations = [];
|
|
252
|
-
var sPath = sTerm === "com.sap.vocabularies.UI.v1.SelectionPresentationVariant" ? presentationPath :
|
|
254
|
+
var sPath = sTerm === "com.sap.vocabularies.UI.v1.SelectionPresentationVariant" ? presentationPath : resolvedVisualization && resolvedVisualization.fullyQualifiedName;
|
|
253
255
|
|
|
254
256
|
if (sPath === undefined) {
|
|
255
257
|
sPath = "/";
|
|
@@ -265,11 +267,11 @@ sap.ui.define(["./Table", "./Chart", "sap/fe/core/converters/helpers/IssueManage
|
|
|
265
267
|
|
|
266
268
|
return {
|
|
267
269
|
visualizations: aVisualizations,
|
|
268
|
-
annotationPath:
|
|
270
|
+
annotationPath: inConverterContext.getEntitySetBasedAnnotationPath(sPath)
|
|
269
271
|
};
|
|
270
272
|
}
|
|
271
273
|
|
|
272
274
|
_exports.getDataVisualizationConfiguration = getDataVisualizationConfiguration;
|
|
273
275
|
return _exports;
|
|
274
276
|
}, false);
|
|
275
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFWaXN1YWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbImdldFZpc3VhbGl6YXRpb25zRnJvbVByZXNlbnRhdGlvblZhcmlhbnQiLCJwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiIsInZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsInZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyIsInZpc3VhbGl6YXRpb25zIiwiVmlzdWFsaXphdGlvbnMiLCJiYXNlVmlzdWFsaXphdGlvblBhdGgiLCJzcGxpdCIsImhhc0xpbmVJdGVtIiwiaGFzQ2hhcnQiLCJoYXNWaXN1YWxpemF0aW9uIiwiYklzQUxQIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIkFuYWx5dGljYWxMaXN0UGFnZSIsImZvckVhY2giLCJ2aXN1YWxpemF0aW9uIiwiJHRhcmdldCIsInRlcm0iLCJwdXNoIiwiYW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsImdldFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQiLCJlbnRpdHlUeXBlIiwicmVzb2x2ZWRUYXJnZXQiLCJnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbiIsInNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQiLCJhbm5vdGF0aW9uIiwiRXJyb3IiLCJhbm5vdGF0aW9ucyIsIlVJIiwiU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCIsImlzU2VsZWN0aW9uUHJlc2VudGF0aW9uQ29tcGxpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudCIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJpc1ByZXNlbnRhdGlvbkNvbXBsaWFudCIsImJIYXNUYWJsZSIsImJIYXNDaGFydCIsImFWaXN1YWxpemF0aW9ucyIsIm9WaXN1YWxpemF0aW9uIiwiZmluZCIsImdldERlZmF1bHRMaW5lSXRlbSIsIkxpbmVJdGVtIiwiZ2V0RGVmYXVsdENoYXJ0IiwiQ2hhcnQiLCJnZXREZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsImdldERlZmF1bHRTZWxlY3Rpb25WYXJpYW50IiwiU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJnZXREZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aCIsInNlbGVjdGlvblZhcmlhbnQiLCJnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24iLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50Iiwidmlld0NvbmZpZ3VyYXRpb24iLCJkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQiLCJwcmVzZW50YXRpb25QYXRoIiwiY2hhcnRWaXN1YWxpemF0aW9uIiwidGFibGVWaXN1YWxpemF0aW9uIiwic1Rlcm0iLCJjb25jYXQiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJnZXRFbnRpdHlUeXBlIiwiZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbiIsImdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgiLCJ2aXN1YWxpemF0aW9uQW5ub3RhdGlvbiIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiIsImNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbiIsImNyZWF0ZURlZmF1bHRUYWJsZVZpc3VhbGl6YXRpb24iLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVUeXBlIiwiTUlTU0lOR19MSU5FSVRFTSIsInNQYXRoIiwidW5kZWZpbmVkIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQXFDQSxNQUFNQSx3Q0FBd0MsR0FBRyxVQUNoREMsNkJBRGdELEVBRWhEQyxpQkFGZ0QsRUFHaERDLGdCQUhnRCxFQUl2QjtBQUN6QixRQUFNQyx3QkFBZ0QsR0FBRyxFQUF6RDtBQUNBLFFBQU1DLGNBQWMs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VSwrQkFBK0IsQ0FBQ25FLGdCQUFELENBQXBEO0FBQ0FBLE1BQUFBLGdCQUFnQixDQUFDb0UsY0FBakIsR0FBa0NDLFFBQWxDLENBQTJDQyxhQUFhLENBQUNDLFVBQXpELEVBQXFFQyxhQUFhLENBQUNDLE1BQW5GLEVBQTJGQyxTQUFTLENBQUNDLGdCQUFyRztBQUNBOztBQUNELFFBQU1yQyxlQUFvQixHQUFHLEVBQTdCO0FBQ0EsUUFBSXNDLEtBQUssR0FDUmxCLEtBQUssOERBQUwsR0FBMkRILGdCQUEzRCxHQUE4RXZDLGFBQWEsSUFBSUEsYUFBYSxDQUFDNEMsa0JBRDlHOztBQUVBLFFBQUlnQixLQUFLLEtBQUtDLFNBQWQsRUFBeUI7QUFDeEJELE1BQUFBLEtBQUssR0FBRyxHQUFSO0FBQ0E7O0FBQ0QsUUFBSXBCLGtCQUFKLEVBQXdCO0FBQ3ZCbEIsTUFBQUEsZUFBZSxDQUFDbkIsSUFBaEIsQ0FBcUJxQyxrQkFBckI7QUFDQTs7QUFDRCxRQUFJQyxrQkFBSixFQUF3QjtBQUN2Qm5CLE1BQUFBLGVBQWUsQ0FBQ25CLElBQWhCLENBQXFCc0Msa0JBQXJCO0FBQ0E7O0FBQ0QsV0FBTztBQUNOdkQsTUFBQUEsY0FBYyxFQUFFb0MsZUFEVjtBQUVObEIsTUFBQUEsY0FBYyxFQUFFcEIsZ0JBQWdCLENBQUM4RSwrQkFBakIsQ0FBaURGLEtBQWpEO0FBRlYsS0FBUDtBQUlBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFydCxcblx0Q2hhcnREZWZpbml0aW9uVHlwZVR5cGVzLFxuXHRFbnRpdHlUeXBlLFxuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlcyxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlcyxcblx0U2VsZWN0aW9uVmFyaWFudFR5cGVUeXBlcyxcblx0VUlBbm5vdGF0aW9uVGVybXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRUYWJsZVZpc3VhbGl6YXRpb24sIGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbiwgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vVGFibGVcIjtcbmltcG9ydCB7IENoYXJ0VmlzdWFsaXphdGlvbiwgY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vQ2hhcnRcIjtcbmltcG9ydCB7IElzc3VlVHlwZSwgSXNzdWVTZXZlcml0eSwgSXNzdWVDYXRlZ29yeSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHsgVGVtcGxhdGVUeXBlLCBWaWV3UGF0aENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuXG5leHBvcnQgdHlwZSBEYXRhVmlzdWFsaXphdGlvbkFubm90YXRpb25zID1cblx0fCBMaW5lSXRlbVxuXHR8IENoYXJ0XG5cdHwgUHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlc1xuXHR8IFNlbGVjdGlvblZhcmlhbnRUeXBlVHlwZXNcblx0fCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50VHlwZVR5cGVzO1xuLy8gfCBDaGFydERlZmluaXRpb25UeXBlVHlwZXM7XG5cbmV4cG9ydCB0eXBlIEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IExpbmVJdGVtIHwgQ2hhcnREZWZpbml0aW9uVHlwZVR5cGVzO1xuXG50eXBlIFZpc3VhbGl6YXRpb25BbmRQYXRoID0ge1xuXHR2aXN1YWxpemF0aW9uOiBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnM7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0ge1xuXHR2aXN1YWxpemF0aW9uczogKFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbilbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcbn07XG5cbmNvbnN0IGdldFZpc3VhbGl6YXRpb25zRnJvbVByZXNlbnRhdGlvblZhcmlhbnQgPSBmdW5jdGlvbihcblx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnRUeXBlVHlwZXMsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10ge1xuXHRjb25zdCB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0Y29uc3QgdmlzdWFsaXphdGlvbnMgPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbi5WaXN1YWxpemF0aW9ucyB8fCBbXTtcblx0Y29uc3QgYmFzZVZpc3VhbGl6YXRpb25QYXRoID0gdmlzdWFsaXphdGlvblBhdGguc3BsaXQoXCJAXCIpWzBdO1xuXHRpZiAodmlzdWFsaXphdGlvbnMpIHtcblx0XHQvLyBPbmx5IGFsbG93IG9uZSBsaW5lIGl0ZW0gLyBjaGFydFxuXHRcdGxldCBoYXNMaW5lSXRlbSA9IGZhbHNlO1xuXHRcdGxldCBoYXNDaGFydCA9IGZhbHNlO1xuXHRcdGxldCBoYXNWaXN1YWxpemF0aW9uID0gZmFsc2U7IC8vIHVzZWQgdG8gYWxsb3cgb25seSBmaXJzdCB2aXN1YWxpemF0aW9uIGluIE9QXG5cdFx0Y29uc3QgYklzQUxQID1cblx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8XG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlO1xuXHRcdHZpc3VhbGl6YXRpb25zLmZvckVhY2godmlzdWFsaXphdGlvbiA9PiB7XG5cdFx0XHRzd2l0Y2ggKHZpc3VhbGl6YXRpb24uJHRhcmdldC50ZXJtKSB7XG5cdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW06XG5cdFx0XHRcdFx0aWYgKCFoYXNMaW5lSXRlbSAmJiAoYklzQUxQIHx8ICFoYXNWaXN1YWxpemF0aW9uKSkge1xuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uOiB2aXN1YWxpemF0aW9uLiR0YXJnZXQgYXMgQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7YmFzZVZpc3VhbGl6YXRpb25QYXRofSR7dmlzdWFsaXphdGlvbi52YWx1ZX1gLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGhhc0xpbmVJdGVtID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGhhc1Zpc3VhbGl6YXRpb24gPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5DaGFydDpcblx0XHRcdFx0XHRpZiAoIWhhc0NoYXJ0ICYmIChiSXNBTFAgfHwgIWhhc1Zpc3VhbGl6YXRpb24pKSB7XG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdHZpc3VhbGl6YXRpb246IHZpc3VhbGl6YXRpb24uJHRhcmdldCBhcyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtiYXNlVmlzdWFsaXphdGlvblBhdGh9JHt2aXN1YWxpemF0aW9uLnZhbHVlfWAsXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0aGFzQ2hhcnQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0aGFzVmlzdWFsaXphdGlvbiA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudChcblx0ZW50aXR5VHlwZTogRW50aXR5VHlwZSxcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogYW55IHtcblx0aWYgKGFubm90YXRpb25QYXRoKSB7XG5cdFx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGFubm90YXRpb25QYXRoKTtcblx0XHRjb25zdCBzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50ID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhcyBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50VHlwZVR5cGVzO1xuXHRcdGlmIChzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0XHRpZiAoc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudC50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0XHRcdHJldHVybiBzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJBbm5vdGF0aW9uIFBhdGggZm9yIHRoZSBTUFYgbWVudGlvbmVkIGluIHRoZSBtYW5pZmVzdCBpcyBub3QgZm91bmQsIFBsZWFzZSBhZGQgdGhlIFNQViBpbiB0aGUgYW5ub3RhdGlvblwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGlvblByZXNlbnRhdGlvbkNvbXBsaWFudChcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDogU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlcyxcblx0YklzQUxQOiBCb29sZWFuXG4pOiBCb29sZWFuIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgcHJlc2VudGF0aW9uVmFyaWFudCA9IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgJiYgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudC5QcmVzZW50YXRpb25WYXJpYW50O1xuXHRpZiAocHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdHJldHVybiBpc1ByZXNlbnRhdGlvbkNvbXBsaWFudChwcmVzZW50YXRpb25WYXJpYW50LCBiSXNBTFApO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlByZXNlbnRhdGlvbiBWYXJpYW50IGlzIG5vdCBwcmVzZW50IGluIHRoZSBTUFYgYW5ub3RhdGlvblwiKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmVzZW50YXRpb25Db21wbGlhbnQocHJlc2VudGF0aW9uVmFyaWFudDogUHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlcywgYklzQUxQPzogQm9vbGVhbik6IEJvb2xlYW4ge1xuXHRsZXQgYkhhc1RhYmxlID0gZmFsc2UsXG5cdFx0Ykhhc0NoYXJ0ID0gZmFsc2U7XG5cdGlmIChiSXNBTFApIHtcblx0XHRpZiAocHJlc2VudGF0aW9uVmFyaWFudCAmJiBwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRjb25zdCBhVmlzdWFsaXphdGlvbnMgPSBwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zO1xuXHRcdFx0YVZpc3VhbGl6YXRpb25zLmZvckVhY2gob1Zpc3VhbGl6YXRpb24gPT4ge1xuXHRcdFx0XHRpZiAob1Zpc3VhbGl6YXRpb24uJHRhcmdldC50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkge1xuXHRcdFx0XHRcdGJIYXNUYWJsZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9WaXN1YWxpemF0aW9uLiR0YXJnZXQudGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQpIHtcblx0XHRcdFx0XHRiSGFzQ2hhcnQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGJIYXNDaGFydCAmJiBiSGFzVGFibGU7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnQgJiZcblx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnQuVmlzdWFsaXphdGlvbnMgJiZcblx0XHRcdCEhcHJlc2VudGF0aW9uVmFyaWFudC5WaXN1YWxpemF0aW9ucy5maW5kKHZpc3VhbGl6YXRpb24gPT4ge1xuXHRcdFx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbi4kdGFyZ2V0LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtIHx8IHZpc3VhbGl6YXRpb24uJHRhcmdldC50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5DaGFydDtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdExpbmVJdGVtKGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5MaW5lSXRlbTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q2hhcnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IENoYXJ0IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkNoYXJ0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRQcmVzZW50YXRpb25WYXJpYW50KGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZVR5cGVzIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5QcmVzZW50YXRpb25WYXJpYW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IFNlbGVjdGlvblZhcmlhbnRUeXBlVHlwZXMgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LlNlbGVjdGlvblZhcmlhbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25WYXJpYW50KGVudGl0eVR5cGU6IEVudGl0eVR5cGUsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBTZWxlY3Rpb25WYXJpYW50VHlwZVR5cGVzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk7XG5cdGNvbnN0IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgPSBnZXRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KGVudGl0eVR5cGUsIGFubm90YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0bGV0IHNlbGVjdGlvblZhcmlhbnQ7XG5cdGlmIChzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0Y29uc3Qgc2VsZWN0aW9uVmFyaWFudCA9IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRpZiAoc2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0cmV0dXJuIHNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHNlbGVjdGlvblZhcmlhbnQgPSBnZXREZWZhdWx0U2VsZWN0aW9uVmFyaWFudChlbnRpdHlUeXBlKTtcblx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiBib29sZWFuLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHR2aWV3Q29uZmlndXJhdGlvbj86IFZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkPzogYm9vbGVhblxuKTogRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uIHtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgdmlzdWFsaXphdGlvbiA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb24gYXMgRGF0YVZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucztcblx0Y29udmVydGVyQ29udGV4dCA9IHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQ7XG5cdGxldCB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0bGV0IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZVR5cGVzO1xuXHRsZXQgcHJlc2VudGF0aW9uUGF0aDogc3RyaW5nID0gXCJcIjtcblx0bGV0IGNoYXJ0VmlzdWFsaXphdGlvbiwgdGFibGVWaXN1YWxpemF0aW9uO1xuXHRjb25zdCBzVGVybSA9IHZpc3VhbGl6YXRpb24/LnRlcm07XG5cdGlmIChzVGVybSkge1xuXHRcdHN3aXRjaCAoc1Rlcm0pIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW06XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0OlxuXHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0dmlzdWFsaXphdGlvbjogdmlzdWFsaXphdGlvbiBhcyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IHZpc3VhbGl6YXRpb25QYXRoLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50OlxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiA9IHZpc3VhbGl6YXRpb24gYXMgUHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlcztcblx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zID0gdmlzdWFsaXphdGlvbkFubm90YXRpb25zLmNvbmNhdChcblx0XHRcdFx0XHRnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50KFxuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbiBhcyBQcmVzZW50YXRpb25WYXJpYW50VHlwZVR5cGVzLFxuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gPSAodmlzdWFsaXphdGlvbiBhcyBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50VHlwZVR5cGVzKS5QcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdFx0XHQvLyBQcmVzZW50YXRpb24gY2FuIGJlIGlubGluZSBvciBvdXRzaWRlIHRoZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHRcdHByZXNlbnRhdGlvblBhdGggPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWU7XG5cblx0XHRcdFx0aWYgKCFpc1ByZXNlbnRhdGlvbkNvbXBsaWFudChwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbikpIHtcblx0XHRcdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRcdFx0Y29uc3QgZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbiA9IGdldERlZmF1bHRMaW5lSXRlbShlbnRpdHlUeXBlKSBhcyBMaW5lSXRlbTtcblx0XHRcdFx0XHRpZiAoZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uOiBkZWZhdWx0TGluZUl0ZW1Bbm5vdGF0aW9uLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRMaW5lSXRlbUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eVR5cGVcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogY29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucy5jb25jYXQoXG5cdFx0XHRcdFx0XHRnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50KHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucy5mb3JFYWNoKHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uID0+IHtcblx0XHRcdGNvbnN0IHsgdmlzdWFsaXphdGlvbiwgYW5ub3RhdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQgfSA9IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uO1xuXHRcdFx0c3dpdGNoICh2aXN1YWxpemF0aW9uLnRlcm0pIHtcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5DaGFydDpcblx0XHRcdFx0XHRjaGFydFZpc3VhbGl6YXRpb24gPSBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24oXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uIGFzIENoYXJ0RGVmaW5pdGlvblR5cGVUeXBlcyxcblx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW06XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dGFibGVWaXN1YWxpemF0aW9uID0gY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uKFxuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbiBhcyBMaW5lSXRlbSxcblx0XHRcdFx0XHRcdGFubm90YXRpb25QYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uLFxuXHRcdFx0XHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudCxcblx0XHRcdFx0XHRcdHZpZXdDb25maWd1cmF0aW9uXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR0YWJsZVZpc3VhbGl6YXRpb24gPSBjcmVhdGVEZWZhdWx0VGFibGVWaXN1YWxpemF0aW9uKGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0RGlhZ25vc3RpY3MoKS5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuTUlTU0lOR19MSU5FSVRFTSk7XG5cdH1cblx0Y29uc3QgYVZpc3VhbGl6YXRpb25zOiBhbnkgPSBbXTtcblx0bGV0IHNQYXRoID1cblx0XHRzVGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCA/IHByZXNlbnRhdGlvblBhdGggOiB2aXN1YWxpemF0aW9uICYmIHZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRpZiAoc1BhdGggPT09IHVuZGVmaW5lZCkge1xuXHRcdHNQYXRoID0gXCIvXCI7XG5cdH1cblx0aWYgKGNoYXJ0VmlzdWFsaXphdGlvbikge1xuXHRcdGFWaXN1YWxpemF0aW9ucy5wdXNoKGNoYXJ0VmlzdWFsaXphdGlvbik7XG5cdH1cblx0aWYgKHRhYmxlVmlzdWFsaXphdGlvbikge1xuXHRcdGFWaXN1YWxpemF0aW9ucy5wdXNoKHRhYmxlVmlzdWFsaXphdGlvbik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR2aXN1YWxpemF0aW9uczogYVZpc3VhbGl6YXRpb25zLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoc1BhdGgpXG5cdH07XG59XG4iXX0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFWaXN1YWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbImdldFZpc3VhbGl6YXRpb25zRnJvbVByZXNlbnRhdGlvblZhcmlhbnQiLCJwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiIsInZpc3VhbGl6YXRpb25QYXRoIiwiY29udmVydGVyQ29udGV4dCIsInZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyIsInZpc3VhbGl6YXRpb25zIiwiVmlzdWFsaXphdGlvbnMiLCJiYXNlVmlzdWFsaXphdGlvblBhdGgiLCJzcGxpdCIsImhhc0xpbmVJdGVtIiwiaGFzQ2hhcnQiLCJoYXNWaXN1YWxpemF0aW9uIiwiYklzQUxQIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIkFuYWx5dGljYWxMaXN0UGFnZSIsImZvckVhY2giLCJ2aXN1YWxpemF0aW9uIiwiJHRhcmdldCIsInRlcm0iLCJwdXNoIiwiYW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsImdldFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQiLCJlbnRpdHlUeXBlIiwicmVzb2x2ZWRUYXJnZXQiLCJnZXRFbnRpdHlUeXBlQW5ub3RhdGlvbiIsInNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQiLCJhbm5vdGF0aW9uIiwiRXJyb3IiLCJhbm5vdGF0aW9ucyIsIlVJIiwiU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCIsImlzU2VsZWN0aW9uUHJlc2VudGF0aW9uQ29tcGxpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudCIsIlByZXNlbnRhdGlvblZhcmlhbnQiLCJpc1ByZXNlbnRhdGlvbkNvbXBsaWFudCIsImJIYXNUYWJsZSIsImJIYXNDaGFydCIsImFWaXN1YWxpemF0aW9ucyIsIm9WaXN1YWxpemF0aW9uIiwiZmluZCIsImdldERlZmF1bHRMaW5lSXRlbSIsIkxpbmVJdGVtIiwiZ2V0RGVmYXVsdENoYXJ0IiwiQ2hhcnQiLCJnZXREZWZhdWx0UHJlc2VudGF0aW9uVmFyaWFudCIsImdldERlZmF1bHRTZWxlY3Rpb25WYXJpYW50IiwiU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJnZXREZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aCIsInNlbGVjdGlvblZhcmlhbnQiLCJnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24iLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwiaW5Db252ZXJ0ZXJDb250ZXh0Iiwidmlld0NvbmZpZ3VyYXRpb24iLCJkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQiLCJhc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudFBhdGgiLCJyZXNvbHZlZEFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50IiwicmVzb2x2ZWRWaXN1YWxpemF0aW9uIiwicHJlc2VudGF0aW9uUGF0aCIsImNoYXJ0VmlzdWFsaXphdGlvbiIsInRhYmxlVmlzdWFsaXphdGlvbiIsInNUZXJtIiwiY29uY2F0IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImRlZmF1bHRMaW5lSXRlbUFubm90YXRpb24iLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwidmlzdWFsaXphdGlvbkFubm90YXRpb24iLCJjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24iLCJjcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24iLCJjcmVhdGVEZWZhdWx0VGFibGVWaXN1YWxpemF0aW9uIiwiZ2V0RGlhZ25vc3RpY3MiLCJhZGRJc3N1ZSIsIklzc3VlQ2F0ZWdvcnkiLCJBbm5vdGF0aW9uIiwiSXNzdWVTZXZlcml0eSIsIk1lZGl1bSIsIklzc3VlVHlwZSIsIk1JU1NJTkdfTElORUlURU0iLCJzUGF0aCIsInVuZGVmaW5lZCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7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QW5EO0FBRlYsS0FBUDtBQUlBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0Q2hhcnQsXG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRQcmVzZW50YXRpb25WYXJpYW50VHlwZSxcblx0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCxcblx0U2VsZWN0aW9uVmFyaWFudFxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFZpZXdQYXRoQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZVR5cGUgfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwiLi9DaGFydFwiO1xuaW1wb3J0IHsgY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vVGFibGVcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRUYWJsZVZpc3VhbGl6YXRpb24sIGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL1RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgPSBMaW5lSXRlbSB8IENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50O1xuXG5leHBvcnQgdHlwZSBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgPSBMaW5lSXRlbSB8IENoYXJ0O1xuXG50eXBlIFZpc3VhbGl6YXRpb25BbmRQYXRoID0ge1xuXHR2aXN1YWxpemF0aW9uOiBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnM7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0ge1xuXHR2aXN1YWxpemF0aW9uczogKFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbilbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcbn07XG5cbmNvbnN0IGdldFZpc3VhbGl6YXRpb25zRnJvbVByZXNlbnRhdGlvblZhcmlhbnQgPSBmdW5jdGlvbiAoXG5cdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uOiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogVmlzdWFsaXphdGlvbkFuZFBhdGhbXSB7XG5cdGNvbnN0IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uczogVmlzdWFsaXphdGlvbkFuZFBhdGhbXSA9IFtdO1xuXHRjb25zdCB2aXN1YWxpemF0aW9ucyA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uLlZpc3VhbGl6YXRpb25zIHx8IFtdO1xuXHRjb25zdCBiYXNlVmlzdWFsaXphdGlvblBhdGggPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIilbMF07XG5cdGlmICh2aXN1YWxpemF0aW9ucykge1xuXHRcdC8vIE9ubHkgYWxsb3cgb25lIGxpbmUgaXRlbSAvIGNoYXJ0XG5cdFx0bGV0IGhhc0xpbmVJdGVtID0gZmFsc2U7XG5cdFx0bGV0IGhhc0NoYXJ0ID0gZmFsc2U7XG5cdFx0bGV0IGhhc1Zpc3VhbGl6YXRpb24gPSBmYWxzZTsgLy8gdXNlZCB0byBhbGxvdyBvbmx5IGZpcnN0IHZpc3VhbGl6YXRpb24gaW4gT1Bcblx0XHRjb25zdCBiSXNBTFAgPVxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKCkgfHxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5BbmFseXRpY2FsTGlzdFBhZ2U7XG5cdFx0dmlzdWFsaXphdGlvbnMuZm9yRWFjaCgodmlzdWFsaXphdGlvbikgPT4ge1xuXHRcdFx0c3dpdGNoICh2aXN1YWxpemF0aW9uLiR0YXJnZXQudGVybSkge1xuXHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtOlxuXHRcdFx0XHRcdGlmICghaGFzTGluZUl0ZW0gJiYgKGJJc0FMUCB8fCAhaGFzVmlzdWFsaXphdGlvbikpIHtcblx0XHRcdFx0XHRcdHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbjogdmlzdWFsaXphdGlvbi4kdGFyZ2V0IGFzIEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyxcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2Jhc2VWaXN1YWxpemF0aW9uUGF0aH0ke3Zpc3VhbGl6YXRpb24udmFsdWV9YCxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogY29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRoYXNMaW5lSXRlbSA9IHRydWU7XG5cdFx0XHRcdFx0XHRoYXNWaXN1YWxpemF0aW9uID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQ6XG5cdFx0XHRcdFx0aWYgKCFoYXNDaGFydCAmJiAoYklzQUxQIHx8ICFoYXNWaXN1YWxpemF0aW9uKSkge1xuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uOiB2aXN1YWxpemF0aW9uLiR0YXJnZXQgYXMgQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7YmFzZVZpc3VhbGl6YXRpb25QYXRofSR7dmlzdWFsaXphdGlvbi52YWx1ZX1gLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGhhc0NoYXJ0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGhhc1Zpc3VhbGl6YXRpb24gPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gdmlzdWFsaXphdGlvbkFubm90YXRpb25zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQoXG5cdGVudGl0eVR5cGU6IEVudGl0eVR5cGUsXG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IGFueSB7XG5cdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihhbm5vdGF0aW9uUGF0aCk7XG5cdFx0Y29uc3Qgc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb24gYXMgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDtcblx0XHRpZiAoc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0aWYgKHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQudGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRyZXR1cm4gc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQW5ub3RhdGlvbiBQYXRoIGZvciB0aGUgU1BWIG1lbnRpb25lZCBpbiB0aGUgbWFuaWZlc3QgaXMgbm90IGZvdW5kLCBQbGVhc2UgYWRkIHRoZSBTUFYgaW4gdGhlIGFubm90YXRpb25cIik7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3Rpb25QcmVzZW50YXRpb25Db21wbGlhbnQoXG5cdFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ6IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQsXG5cdGJJc0FMUDogQm9vbGVhblxuKTogQm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHByZXNlbnRhdGlvblZhcmlhbnQgPSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50ICYmIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQuUHJlc2VudGF0aW9uVmFyaWFudDtcblx0aWYgKHByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRyZXR1cm4gaXNQcmVzZW50YXRpb25Db21wbGlhbnQocHJlc2VudGF0aW9uVmFyaWFudCwgYklzQUxQKTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJQcmVzZW50YXRpb24gVmFyaWFudCBpcyBub3QgcHJlc2VudCBpbiB0aGUgU1BWIGFubm90YXRpb25cIik7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudGF0aW9uQ29tcGxpYW50KHByZXNlbnRhdGlvblZhcmlhbnQ6IFByZXNlbnRhdGlvblZhcmlhbnRUeXBlLCBiSXNBTFA/OiBCb29sZWFuKTogQm9vbGVhbiB7XG5cdGxldCBiSGFzVGFibGUgPSBmYWxzZSxcblx0XHRiSGFzQ2hhcnQgPSBmYWxzZTtcblx0aWYgKGJJc0FMUCkge1xuXHRcdGlmIChwcmVzZW50YXRpb25WYXJpYW50ICYmIHByZXNlbnRhdGlvblZhcmlhbnQuVmlzdWFsaXphdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFWaXN1YWxpemF0aW9ucyA9IHByZXNlbnRhdGlvblZhcmlhbnQuVmlzdWFsaXphdGlvbnM7XG5cdFx0XHRhVmlzdWFsaXphdGlvbnMuZm9yRWFjaCgob1Zpc3VhbGl6YXRpb24pID0+IHtcblx0XHRcdFx0aWYgKG9WaXN1YWxpemF0aW9uLiR0YXJnZXQudGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pIHtcblx0XHRcdFx0XHRiSGFzVGFibGUgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvVmlzdWFsaXphdGlvbi4kdGFyZ2V0LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0KSB7XG5cdFx0XHRcdFx0Ykhhc0NoYXJ0ID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBiSGFzQ2hhcnQgJiYgYkhhc1RhYmxlO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiAoXG5cdFx0XHRwcmVzZW50YXRpb25WYXJpYW50ICYmXG5cdFx0XHRwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zICYmXG5cdFx0XHQhIXByZXNlbnRhdGlvblZhcmlhbnQuVmlzdWFsaXphdGlvbnMuZmluZCgodmlzdWFsaXphdGlvbikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbi4kdGFyZ2V0LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtIHx8IHZpc3VhbGl6YXRpb24uJHRhcmdldC50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5DaGFydDtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdExpbmVJdGVtKGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5MaW5lSXRlbTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q2hhcnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IENoYXJ0IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkNoYXJ0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRQcmVzZW50YXRpb25WYXJpYW50KGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBQcmVzZW50YXRpb25WYXJpYW50IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5QcmVzZW50YXRpb25WYXJpYW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IFNlbGVjdGlvblZhcmlhbnQgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LlNlbGVjdGlvblZhcmlhbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25WYXJpYW50KGVudGl0eVR5cGU6IEVudGl0eVR5cGUsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBTZWxlY3Rpb25WYXJpYW50IHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk7XG5cdGNvbnN0IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgPSBnZXRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KGVudGl0eVR5cGUsIGFubm90YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0bGV0IHNlbGVjdGlvblZhcmlhbnQ7XG5cdGlmIChzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0c2VsZWN0aW9uVmFyaWFudCA9IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRpZiAoc2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0cmV0dXJuIHNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHNlbGVjdGlvblZhcmlhbnQgPSBnZXREZWZhdWx0U2VsZWN0aW9uVmFyaWFudChlbnRpdHlUeXBlKTtcblx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiBib29sZWFuLFxuXHRpbkNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHZpZXdDb25maWd1cmF0aW9uPzogVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQ/OiBib29sZWFuLFxuXHRhc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmdcbik6IERhdGFWaXN1YWxpemF0aW9uRGVmaW5pdGlvbiB7XG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gaW5Db252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKHZpc3VhbGl6YXRpb25QYXRoKTtcblx0Y29uc3QgcmVzb2x2ZWRBc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudCA9IGFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aFxuXHRcdD8gaW5Db252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aClcblx0XHQ6IG51bGw7XG5cdGNvbnN0IHJlc29sdmVkVmlzdWFsaXphdGlvbiA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb24gYXMgRGF0YVZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucztcblx0aW5Db252ZXJ0ZXJDb250ZXh0ID0gcmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dDtcblx0bGV0IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uczogVmlzdWFsaXphdGlvbkFuZFBhdGhbXSA9IFtdO1xuXHRsZXQgcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnRUeXBlO1xuXHRsZXQgcHJlc2VudGF0aW9uUGF0aDogc3RyaW5nID0gXCJcIjtcblx0bGV0IGNoYXJ0VmlzdWFsaXphdGlvbiwgdGFibGVWaXN1YWxpemF0aW9uO1xuXHRjb25zdCBzVGVybSA9IHJlc29sdmVkVmlzdWFsaXphdGlvbj8udGVybTtcblx0aWYgKHNUZXJtKSB7XG5cdFx0c3dpdGNoIChzVGVybSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQ6XG5cdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gcmVzb2x2ZWRBc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudD8uYW5ub3RhdGlvbjtcblx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHRcdHZpc3VhbGl6YXRpb246IHJlc29sdmVkVmlzdWFsaXphdGlvbiBhcyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IHZpc3VhbGl6YXRpb25QYXRoLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IGluQ29udmVydGVyQ29udGV4dFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQ6XG5cdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gcmVzb2x2ZWRWaXN1YWxpemF0aW9uO1xuXHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgPSB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMuY29uY2F0KFxuXHRcdFx0XHRcdGdldFZpc3VhbGl6YXRpb25zRnJvbVByZXNlbnRhdGlvblZhcmlhbnQocmVzb2x2ZWRWaXN1YWxpemF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgaW5Db252ZXJ0ZXJDb250ZXh0KVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gPSByZXNvbHZlZFZpc3VhbGl6YXRpb24uUHJlc2VudGF0aW9uVmFyaWFudDtcblx0XHRcdFx0Ly8gUHJlc2VudGF0aW9uIGNhbiBiZSBpbmxpbmUgb3Igb3V0c2lkZSB0aGUgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0XHRwcmVzZW50YXRpb25QYXRoID0gcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXG5cdFx0XHRcdGlmICghaXNQcmVzZW50YXRpb25Db21wbGlhbnQocHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24pKSB7XG5cdFx0XHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IGluQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRcdFx0Y29uc3QgZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbiA9IGdldERlZmF1bHRMaW5lSXRlbShlbnRpdHlUeXBlKSBhcyBMaW5lSXRlbTtcblx0XHRcdFx0XHRpZiAoZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uOiBkZWZhdWx0TGluZUl0ZW1Bbm5vdGF0aW9uLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogaW5Db252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0ZW50aXR5VHlwZVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBpbkNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgPSB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMuY29uY2F0KFxuXHRcdFx0XHRcdFx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tUHJlc2VudGF0aW9uVmFyaWFudChwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiwgdmlzdWFsaXphdGlvblBhdGgsIGluQ29udmVydGVyQ29udGV4dClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucy5mb3JFYWNoKCh2aXN1YWxpemF0aW9uQW5ub3RhdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgeyB2aXN1YWxpemF0aW9uLCBhbm5vdGF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCB9ID0gdmlzdWFsaXphdGlvbkFubm90YXRpb247XG5cdFx0XHRzd2l0Y2ggKHZpc3VhbGl6YXRpb24udGVybSkge1xuXHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0OlxuXHRcdFx0XHRcdGNoYXJ0VmlzdWFsaXphdGlvbiA9IGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbihcblx0XHRcdFx0XHRcdHZpc3VhbGl6YXRpb24sXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtOlxuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHRhYmxlVmlzdWFsaXphdGlvbiA9IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbihcblx0XHRcdFx0XHRcdHZpc3VhbGl6YXRpb24sXG5cdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aCxcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbixcblx0XHRcdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQsXG5cdFx0XHRcdFx0XHR2aWV3Q29uZmlndXJhdGlvblxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFibGVWaXN1YWxpemF0aW9uID0gY3JlYXRlRGVmYXVsdFRhYmxlVmlzdWFsaXphdGlvbihpbkNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGluQ29udmVydGVyQ29udGV4dC5nZXREaWFnbm9zdGljcygpLmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5NZWRpdW0sIElzc3VlVHlwZS5NSVNTSU5HX0xJTkVJVEVNKTtcblx0fVxuXHRjb25zdCBhVmlzdWFsaXphdGlvbnM6IGFueSA9IFtdO1xuXHRsZXQgc1BhdGggPVxuXHRcdHNUZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHQ/IHByZXNlbnRhdGlvblBhdGhcblx0XHRcdDogcmVzb2x2ZWRWaXN1YWxpemF0aW9uICYmIHJlc29sdmVkVmlzdWFsaXphdGlvbi5mdWxseVF1YWxpZmllZE5hbWU7XG5cdGlmIChzUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0c1BhdGggPSBcIi9cIjtcblx0fVxuXHRpZiAoY2hhcnRWaXN1YWxpemF0aW9uKSB7XG5cdFx0YVZpc3VhbGl6YXRpb25zLnB1c2goY2hhcnRWaXN1YWxpemF0aW9uKTtcblx0fVxuXHRpZiAodGFibGVWaXN1YWxpemF0aW9uKSB7XG5cdFx0YVZpc3VhbGl6YXRpb25zLnB1c2godGFibGVWaXN1YWxpemF0aW9uKTtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdHZpc3VhbGl6YXRpb25zOiBhVmlzdWFsaXphdGlvbnMsXG5cdFx0YW5ub3RhdGlvblBhdGg6IGluQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKHNQYXRoKVxuXHR9O1xufVxuIl19
|
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { EntityType } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import type {
|
|
2
3
|
Chart,
|
|
3
|
-
ChartDefinitionTypeTypes,
|
|
4
|
-
EntityType,
|
|
5
4
|
LineItem,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from "@sap-ux/vocabularies-types";
|
|
5
|
+
PresentationVariant,
|
|
6
|
+
PresentationVariantType,
|
|
7
|
+
SelectionPresentationVariant,
|
|
8
|
+
SelectionVariant
|
|
9
|
+
} from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
10
|
+
import { UIAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
11
|
+
import { IssueCategory, IssueSeverity, IssueType } from "sap/fe/core/converters/helpers/IssueManager";
|
|
12
|
+
import type ConverterContext from "../../ConverterContext";
|
|
13
|
+
import type { ViewPathConfiguration } from "../../ManifestSettings";
|
|
14
|
+
import { TemplateType } from "../../ManifestSettings";
|
|
15
|
+
import type { ChartVisualization } from "./Chart";
|
|
16
|
+
import { createChartVisualization } from "./Chart";
|
|
17
|
+
import type { TableVisualization } from "./Table";
|
|
18
|
+
import { createDefaultTableVisualization, createTableVisualization } from "./Table";
|
|
11
19
|
|
|
12
|
-
|
|
13
|
-
import { ChartVisualization, createChartVisualization } from "./Chart";
|
|
14
|
-
import { IssueType, IssueSeverity, IssueCategory } from "sap/fe/core/converters/helpers/IssueManager";
|
|
15
|
-
import ConverterContext from "../../ConverterContext";
|
|
16
|
-
import { TemplateType, ViewPathConfiguration } from "../../ManifestSettings";
|
|
20
|
+
export type DataVisualizationAnnotations = LineItem | Chart | PresentationVariant | SelectionVariant | SelectionPresentationVariant;
|
|
17
21
|
|
|
18
|
-
export type
|
|
19
|
-
| LineItem
|
|
20
|
-
| Chart
|
|
21
|
-
| PresentationVariantTypeTypes
|
|
22
|
-
| SelectionVariantTypeTypes
|
|
23
|
-
| SelectionPresentationVariantTypeTypes;
|
|
24
|
-
// | ChartDefinitionTypeTypes;
|
|
25
|
-
|
|
26
|
-
export type ActualVisualizationAnnotations = LineItem | ChartDefinitionTypeTypes;
|
|
22
|
+
export type ActualVisualizationAnnotations = LineItem | Chart;
|
|
27
23
|
|
|
28
24
|
type VisualizationAndPath = {
|
|
29
25
|
visualization: ActualVisualizationAnnotations;
|
|
@@ -37,8 +33,8 @@ export type DataVisualizationDefinition = {
|
|
|
37
33
|
annotationPath: string;
|
|
38
34
|
};
|
|
39
35
|
|
|
40
|
-
const getVisualizationsFromPresentationVariant = function(
|
|
41
|
-
presentationVariantAnnotation:
|
|
36
|
+
const getVisualizationsFromPresentationVariant = function (
|
|
37
|
+
presentationVariantAnnotation: PresentationVariantType,
|
|
42
38
|
visualizationPath: string,
|
|
43
39
|
converterContext: ConverterContext
|
|
44
40
|
): VisualizationAndPath[] {
|
|
@@ -53,7 +49,7 @@ const getVisualizationsFromPresentationVariant = function(
|
|
|
53
49
|
const bIsALP =
|
|
54
50
|
converterContext.getManifestWrapper().hasMultipleVisualizations() ||
|
|
55
51
|
converterContext.getTemplateType() === TemplateType.AnalyticalListPage;
|
|
56
|
-
visualizations.forEach(visualization => {
|
|
52
|
+
visualizations.forEach((visualization) => {
|
|
57
53
|
switch (visualization.$target.term) {
|
|
58
54
|
case UIAnnotationTerms.LineItem:
|
|
59
55
|
if (!hasLineItem && (bIsALP || !hasVisualization)) {
|
|
@@ -92,7 +88,7 @@ export function getSelectionPresentationVariant(
|
|
|
92
88
|
): any {
|
|
93
89
|
if (annotationPath) {
|
|
94
90
|
const resolvedTarget = converterContext.getEntityTypeAnnotation(annotationPath);
|
|
95
|
-
const selectionPresentationVariant = resolvedTarget.annotation as
|
|
91
|
+
const selectionPresentationVariant = resolvedTarget.annotation as SelectionPresentationVariant;
|
|
96
92
|
if (selectionPresentationVariant) {
|
|
97
93
|
if (selectionPresentationVariant.term === UIAnnotationTerms.SelectionPresentationVariant) {
|
|
98
94
|
return selectionPresentationVariant;
|
|
@@ -106,7 +102,7 @@ export function getSelectionPresentationVariant(
|
|
|
106
102
|
}
|
|
107
103
|
|
|
108
104
|
export function isSelectionPresentationCompliant(
|
|
109
|
-
SelectionPresentationVariant:
|
|
105
|
+
SelectionPresentationVariant: SelectionPresentationVariant,
|
|
110
106
|
bIsALP: Boolean
|
|
111
107
|
): Boolean | undefined {
|
|
112
108
|
const presentationVariant = SelectionPresentationVariant && SelectionPresentationVariant.PresentationVariant;
|
|
@@ -117,13 +113,13 @@ export function isSelectionPresentationCompliant(
|
|
|
117
113
|
}
|
|
118
114
|
}
|
|
119
115
|
|
|
120
|
-
export function isPresentationCompliant(presentationVariant:
|
|
116
|
+
export function isPresentationCompliant(presentationVariant: PresentationVariantType, bIsALP?: Boolean): Boolean {
|
|
121
117
|
let bHasTable = false,
|
|
122
118
|
bHasChart = false;
|
|
123
119
|
if (bIsALP) {
|
|
124
120
|
if (presentationVariant && presentationVariant.Visualizations) {
|
|
125
121
|
const aVisualizations = presentationVariant.Visualizations;
|
|
126
|
-
aVisualizations.forEach(oVisualization => {
|
|
122
|
+
aVisualizations.forEach((oVisualization) => {
|
|
127
123
|
if (oVisualization.$target.term === UIAnnotationTerms.LineItem) {
|
|
128
124
|
bHasTable = true;
|
|
129
125
|
}
|
|
@@ -137,7 +133,7 @@ export function isPresentationCompliant(presentationVariant: PresentationVariant
|
|
|
137
133
|
return (
|
|
138
134
|
presentationVariant &&
|
|
139
135
|
presentationVariant.Visualizations &&
|
|
140
|
-
!!presentationVariant.Visualizations.find(visualization => {
|
|
136
|
+
!!presentationVariant.Visualizations.find((visualization) => {
|
|
141
137
|
return visualization.$target.term === UIAnnotationTerms.LineItem || visualization.$target.term === UIAnnotationTerms.Chart;
|
|
142
138
|
})
|
|
143
139
|
);
|
|
@@ -150,20 +146,20 @@ export function getDefaultLineItem(entityType: EntityType): LineItem | undefined
|
|
|
150
146
|
export function getDefaultChart(entityType: EntityType): Chart | undefined {
|
|
151
147
|
return entityType.annotations.UI?.Chart;
|
|
152
148
|
}
|
|
153
|
-
export function getDefaultPresentationVariant(entityType: EntityType):
|
|
149
|
+
export function getDefaultPresentationVariant(entityType: EntityType): PresentationVariant | undefined {
|
|
154
150
|
return entityType.annotations?.UI?.PresentationVariant;
|
|
155
151
|
}
|
|
156
152
|
|
|
157
|
-
export function getDefaultSelectionVariant(entityType: EntityType):
|
|
153
|
+
export function getDefaultSelectionVariant(entityType: EntityType): SelectionVariant | undefined {
|
|
158
154
|
return entityType.annotations?.UI?.SelectionVariant;
|
|
159
155
|
}
|
|
160
156
|
|
|
161
|
-
export function getSelectionVariant(entityType: EntityType, converterContext: ConverterContext):
|
|
157
|
+
export function getSelectionVariant(entityType: EntityType, converterContext: ConverterContext): SelectionVariant | undefined {
|
|
162
158
|
const annotationPath = converterContext.getManifestWrapper().getDefaultTemplateAnnotationPath();
|
|
163
159
|
const selectionPresentationVariant = getSelectionPresentationVariant(entityType, annotationPath, converterContext);
|
|
164
160
|
let selectionVariant;
|
|
165
161
|
if (selectionPresentationVariant) {
|
|
166
|
-
|
|
162
|
+
selectionVariant = selectionPresentationVariant.SelectionVariant;
|
|
167
163
|
if (selectionVariant) {
|
|
168
164
|
return selectionVariant;
|
|
169
165
|
}
|
|
@@ -176,71 +172,72 @@ export function getSelectionVariant(entityType: EntityType, converterContext: Co
|
|
|
176
172
|
export function getDataVisualizationConfiguration(
|
|
177
173
|
visualizationPath: string,
|
|
178
174
|
isCondensedTableLayoutCompliant: boolean,
|
|
179
|
-
|
|
175
|
+
inConverterContext: ConverterContext,
|
|
180
176
|
viewConfiguration?: ViewPathConfiguration,
|
|
181
|
-
doNotCheckApplySupported?: boolean
|
|
177
|
+
doNotCheckApplySupported?: boolean,
|
|
178
|
+
associatedPresentationVariantPath?: string
|
|
182
179
|
): DataVisualizationDefinition {
|
|
183
|
-
const resolvedTarget =
|
|
184
|
-
const
|
|
185
|
-
|
|
180
|
+
const resolvedTarget = inConverterContext.getEntityTypeAnnotation(visualizationPath);
|
|
181
|
+
const resolvedAssociatedPresentationVariant = associatedPresentationVariantPath
|
|
182
|
+
? inConverterContext.getEntityTypeAnnotation(associatedPresentationVariantPath)
|
|
183
|
+
: null;
|
|
184
|
+
const resolvedVisualization = resolvedTarget.annotation as DataVisualizationAnnotations;
|
|
185
|
+
inConverterContext = resolvedTarget.converterContext;
|
|
186
186
|
let visualizationAnnotations: VisualizationAndPath[] = [];
|
|
187
|
-
let presentationVariantAnnotation:
|
|
187
|
+
let presentationVariantAnnotation: PresentationVariantType;
|
|
188
188
|
let presentationPath: string = "";
|
|
189
189
|
let chartVisualization, tableVisualization;
|
|
190
|
-
const sTerm =
|
|
190
|
+
const sTerm = resolvedVisualization?.term;
|
|
191
191
|
if (sTerm) {
|
|
192
192
|
switch (sTerm) {
|
|
193
193
|
case UIAnnotationTerms.LineItem:
|
|
194
194
|
case UIAnnotationTerms.Chart:
|
|
195
|
+
presentationVariantAnnotation = resolvedAssociatedPresentationVariant?.annotation;
|
|
195
196
|
visualizationAnnotations.push({
|
|
196
|
-
visualization:
|
|
197
|
+
visualization: resolvedVisualization as ActualVisualizationAnnotations,
|
|
197
198
|
annotationPath: visualizationPath,
|
|
198
|
-
converterContext:
|
|
199
|
+
converterContext: inConverterContext
|
|
199
200
|
});
|
|
200
201
|
break;
|
|
201
202
|
case UIAnnotationTerms.PresentationVariant:
|
|
202
|
-
presentationVariantAnnotation =
|
|
203
|
+
presentationVariantAnnotation = resolvedVisualization;
|
|
203
204
|
visualizationAnnotations = visualizationAnnotations.concat(
|
|
204
|
-
getVisualizationsFromPresentationVariant(
|
|
205
|
-
visualization as PresentationVariantTypeTypes,
|
|
206
|
-
visualizationPath,
|
|
207
|
-
converterContext
|
|
208
|
-
)
|
|
205
|
+
getVisualizationsFromPresentationVariant(resolvedVisualization, visualizationPath, inConverterContext)
|
|
209
206
|
);
|
|
210
207
|
break;
|
|
211
208
|
case UIAnnotationTerms.SelectionPresentationVariant:
|
|
212
|
-
presentationVariantAnnotation =
|
|
209
|
+
presentationVariantAnnotation = resolvedVisualization.PresentationVariant;
|
|
213
210
|
// Presentation can be inline or outside the SelectionPresentationVariant
|
|
214
211
|
presentationPath = presentationVariantAnnotation.fullyQualifiedName;
|
|
215
212
|
|
|
216
213
|
if (!isPresentationCompliant(presentationVariantAnnotation)) {
|
|
217
|
-
const entityType =
|
|
214
|
+
const entityType = inConverterContext.getEntityType();
|
|
218
215
|
const defaultLineItemAnnotation = getDefaultLineItem(entityType) as LineItem;
|
|
219
216
|
if (defaultLineItemAnnotation) {
|
|
220
217
|
visualizationAnnotations.push({
|
|
221
218
|
visualization: defaultLineItemAnnotation,
|
|
222
|
-
annotationPath:
|
|
219
|
+
annotationPath: inConverterContext.getRelativeAnnotationPath(
|
|
223
220
|
defaultLineItemAnnotation.fullyQualifiedName,
|
|
224
221
|
entityType
|
|
225
222
|
),
|
|
226
|
-
converterContext:
|
|
223
|
+
converterContext: inConverterContext
|
|
227
224
|
});
|
|
228
225
|
}
|
|
229
226
|
} else {
|
|
230
227
|
visualizationAnnotations = visualizationAnnotations.concat(
|
|
231
|
-
getVisualizationsFromPresentationVariant(presentationVariantAnnotation, visualizationPath,
|
|
228
|
+
getVisualizationsFromPresentationVariant(presentationVariantAnnotation, visualizationPath, inConverterContext)
|
|
232
229
|
);
|
|
233
230
|
}
|
|
234
231
|
break;
|
|
235
232
|
default:
|
|
236
233
|
break;
|
|
237
234
|
}
|
|
238
|
-
visualizationAnnotations.forEach(visualizationAnnotation => {
|
|
235
|
+
visualizationAnnotations.forEach((visualizationAnnotation) => {
|
|
239
236
|
const { visualization, annotationPath, converterContext } = visualizationAnnotation;
|
|
240
237
|
switch (visualization.term) {
|
|
241
238
|
case UIAnnotationTerms.Chart:
|
|
242
239
|
chartVisualization = createChartVisualization(
|
|
243
|
-
visualization
|
|
240
|
+
visualization,
|
|
244
241
|
annotationPath,
|
|
245
242
|
converterContext,
|
|
246
243
|
doNotCheckApplySupported
|
|
@@ -249,7 +246,7 @@ export function getDataVisualizationConfiguration(
|
|
|
249
246
|
case UIAnnotationTerms.LineItem:
|
|
250
247
|
default:
|
|
251
248
|
tableVisualization = createTableVisualization(
|
|
252
|
-
visualization
|
|
249
|
+
visualization,
|
|
253
250
|
annotationPath,
|
|
254
251
|
converterContext,
|
|
255
252
|
presentationVariantAnnotation,
|
|
@@ -260,12 +257,14 @@ export function getDataVisualizationConfiguration(
|
|
|
260
257
|
}
|
|
261
258
|
});
|
|
262
259
|
} else {
|
|
263
|
-
tableVisualization = createDefaultTableVisualization(
|
|
264
|
-
|
|
260
|
+
tableVisualization = createDefaultTableVisualization(inConverterContext);
|
|
261
|
+
inConverterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Medium, IssueType.MISSING_LINEITEM);
|
|
265
262
|
}
|
|
266
263
|
const aVisualizations: any = [];
|
|
267
264
|
let sPath =
|
|
268
|
-
sTerm === UIAnnotationTerms.SelectionPresentationVariant
|
|
265
|
+
sTerm === UIAnnotationTerms.SelectionPresentationVariant
|
|
266
|
+
? presentationPath
|
|
267
|
+
: resolvedVisualization && resolvedVisualization.fullyQualifiedName;
|
|
269
268
|
if (sPath === undefined) {
|
|
270
269
|
sPath = "/";
|
|
271
270
|
}
|
|
@@ -277,6 +276,6 @@ export function getDataVisualizationConfiguration(
|
|
|
277
276
|
}
|
|
278
277
|
return {
|
|
279
278
|
visualizations: aVisualizations,
|
|
280
|
-
annotationPath:
|
|
279
|
+
annotationPath: inConverterContext.getEntitySetBasedAnnotationPath(sPath)
|
|
281
280
|
};
|
|
282
281
|
}
|