@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
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/DelegateUtil", "sap/ui/core/Core", "sap/ui/Device"], function (CommonUtils, DelegateUtil, Core, Device) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var system = Device.system;
|
|
9
|
+
|
|
10
|
+
function getLabels(aIgnoredFields, sEntityTypePath, oFilterControl, oResourceBundle) {
|
|
11
|
+
var oMetaModel = oFilterControl.getModel().getMetaModel(),
|
|
12
|
+
aIgnoredLabels = aIgnoredFields.map(function (sProperty) {
|
|
13
|
+
var oMacroResourceBundle = Core.getLibraryResourceBundle("sap.fe.macros");
|
|
14
|
+
|
|
15
|
+
if (sProperty === "$search") {
|
|
16
|
+
return oMacroResourceBundle ? oMacroResourceBundle.getText("M_FILTERBAR_SEARCH") : "";
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (sProperty === "$editState") {
|
|
20
|
+
return oResourceBundle ? oResourceBundle.getText("FILTERBAR_EDITING_STATUS") : "";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var sLabel = oMetaModel.getObject("".concat(sEntityTypePath).concat(sProperty, "@com.sap.vocabularies.Common.v1.Label"));
|
|
24
|
+
return DelegateUtil.getLocalizedText(sLabel, oFilterControl);
|
|
25
|
+
});
|
|
26
|
+
return aIgnoredLabels;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function getALPText(aIgnoredLabels, oFilterBar, bIsSearchIgnored) {
|
|
30
|
+
var sResourceKey = "";
|
|
31
|
+
var aParameters = [];
|
|
32
|
+
|
|
33
|
+
var oResourceBundle = _getResourceBundle();
|
|
34
|
+
|
|
35
|
+
if (!oResourceBundle) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var view = CommonUtils.getTargetView(oFilterBar);
|
|
40
|
+
var oChart = view.getController().getChartControl();
|
|
41
|
+
var bIsDraftSupported = oChart.data("draftSupported") === "true";
|
|
42
|
+
var oMacroResourceBundle = Core.getLibraryResourceBundle("sap.fe.macros");
|
|
43
|
+
bIsSearchIgnored = bIsSearchIgnored && aIgnoredLabels.includes(oMacroResourceBundle.getText("M_FILTERBAR_SEARCH"));
|
|
44
|
+
var sDefaultResourceKey = "C_LR_MULTIVIZ_CHART_".concat(_getArgumentSize(aIgnoredLabels), "_IGNORED_FILTER_").concat(_getSizeText());
|
|
45
|
+
|
|
46
|
+
if (bIsDraftSupported && (aIgnoredLabels.length === 2 && bIsSearchIgnored || aIgnoredLabels.length === 1)) {
|
|
47
|
+
sResourceKey = aIgnoredLabels.length === 1 ? "C_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA" : "C_LR_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA_AND_SEARCH";
|
|
48
|
+
} else {
|
|
49
|
+
sResourceKey = sDefaultResourceKey;
|
|
50
|
+
aParameters = [aIgnoredLabels.join(", ")];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return oResourceBundle.getText(sResourceKey, aParameters);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getText(aIgnoredLabels, oFilterBar, sTabTitle, fnGetLocalizedText) {
|
|
57
|
+
var oResourceBundle = _getResourceBundle();
|
|
58
|
+
|
|
59
|
+
return oResourceBundle ? oResourceBundle.getText("C_LR_MULTITABLES_".concat(_getArgumentSize(aIgnoredLabels), "_IGNORED_FILTER_").concat(_getSizeText()), [aIgnoredLabels.join(", "), fnGetLocalizedText(sTabTitle, oFilterBar)]) : "";
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _getSizeText() {
|
|
63
|
+
return system.desktop ? "LARGE" : "SMALL";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function _getArgumentSize(aIgnoredLabels) {
|
|
67
|
+
return aIgnoredLabels.length === 1 ? "SINGLE" : "MULTI";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function _getResourceBundle() {
|
|
71
|
+
return Core.getLibraryResourceBundle("sap.fe.templates");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
var MessageStripHelper = {
|
|
75
|
+
getALPText: getALPText,
|
|
76
|
+
getText: getText,
|
|
77
|
+
getLabels: getLabels
|
|
78
|
+
};
|
|
79
|
+
return MessageStripHelper;
|
|
80
|
+
}, false);
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VTdHJpcC50cyJdLCJuYW1lcyI6WyJnZXRMYWJlbHMiLCJhSWdub3JlZEZpZWxkcyIsInNFbnRpdHlUeXBlUGF0aCIsIm9GaWx0ZXJDb250cm9sIiwib1Jlc291cmNlQnVuZGxlIiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiYUlnbm9yZWRMYWJlbHMiLCJtYXAiLCJzUHJvcGVydHkiLCJvTWFjcm9SZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0Iiwic0xhYmVsIiwiZ2V0T2JqZWN0IiwiRGVsZWdhdGVVdGlsIiwiZ2V0TG9jYWxpemVkVGV4dCIsImdldEFMUFRleHQiLCJvRmlsdGVyQmFyIiwiYklzU2VhcmNoSWdub3JlZCIsInNSZXNvdXJjZUtleSIsImFQYXJhbWV0ZXJzIiwiX2dldFJlc291cmNlQnVuZGxlIiwidmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsIm9DaGFydCIsImdldENvbnRyb2xsZXIiLCJnZXRDaGFydENvbnRyb2wiLCJiSXNEcmFmdFN1cHBvcnRlZCIsImRhdGEiLCJpbmNsdWRlcyIsInNEZWZhdWx0UmVzb3VyY2VLZXkiLCJfZ2V0QXJndW1lbnRTaXplIiwiX2dldFNpemVUZXh0IiwibGVuZ3RoIiwiam9pbiIsInNUYWJUaXRsZSIsImZuR2V0TG9jYWxpemVkVGV4dCIsInN5c3RlbSIsImRlc2t0b3AiLCJNZXNzYWdlU3RyaXBIZWxwZXIiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUtBLFdBQVNBLFNBQVQsQ0FBbUJDLGNBQW5CLEVBQTZDQyxlQUE3QyxFQUFzRUMsY0FBdEUsRUFBK0ZDLGVBQS9GLEVBQTBJO0FBQ3pJLFFBQU1DLFVBQVUsR0FBR0YsY0FBYyxDQUFDRyxRQUFmLEdBQTBCQyxZQUExQixFQUFuQjtBQUFBLFFBQ0NDLGNBQWMsR0FBR1AsY0FBYyxDQUFDUSxHQUFmLENBQW1CLFVBQVVDLFNBQVYsRUFBcUI7QUFDeEQsVUFBTUMsb0JBQW9CLEdBQUdDLElBQUksQ0FBQ0Msd0JBQUwsQ0FBOEIsZUFBOUIsQ0FBN0I7O0FBQ0EsVUFBSUgsU0FBUyxLQUFLLFNBQWxCLEVBQTZCO0FBQzVCLGVBQU9DLG9CQUFvQixHQUFHQSxvQkFBb0IsQ0FBQ0csT0FBckIsQ0FBNkIsb0JBQTdCLENBQUgsR0FBd0QsRUFBbkY7QUFDQTs7QUFDRCxVQUFJSixTQUFTLEtBQUssWUFBbEIsRUFBZ0M7QUFDL0IsZUFBT04sZUFBZSxHQUFHQSxlQUFlLENBQUNVLE9BQWhCLENBQXdCLDBCQUF4QixDQUFILEdBQXlELEVBQS9FO0FBQ0E7O0FBQ0QsVUFBTUMsTUFBTSxHQUFHVixVQUFVLENBQUNXLFNBQVgsV0FBd0JkLGVBQXhCLFNBQTBDUSxTQUExQywyQ0FBZjtBQUNBLGFBQU9PLFlBQVksQ0FBQ0MsZ0JBQWIsQ0FBOEJILE1BQTlCLEVBQXNDWixjQUF0QyxDQUFQO0FBQ0EsS0FWZ0IsQ0FEbEI7QUFZQSxXQUFPSyxjQUFQO0FBQ0E7O0FBQ0QsV0FBU1csVUFBVCxDQUFvQlgsY0FBcEIsRUFBOENZLFVBQTlDLEVBQW1FQyxnQkFBbkUsRUFBOEY7QUFDN0YsUUFBSUMsWUFBWSxHQUFHLEVBQW5CO0FBQ0EsUUFBSUMsV0FBcUIsR0FBRyxFQUE1Qjs7QUFDQSxRQUFNbkIsZUFBZSxHQUFHb0Isa0JBQWtCLEVBQTFDOztBQUVBLFFBQUksQ0FBQ3BCLGVBQUwsRUFBc0I7QUFDckIsYUFBTyxFQUFQO0FBQ0E7O0FBRUQsUUFBTXFCLElBQUksR0FBR0MsV0FBVyxDQUFDQyxhQUFaLENBQTBCUCxVQUExQixDQUFiO0FBQ0EsUUFBTVEsTUFBTSxHQUFHSCxJQUFJLENBQUNJLGFBQUwsR0FBcUJDLGVBQXJCLEVBQWY7QUFDQSxRQUFNQyxpQkFBaUIsR0FBR0gsTUFBTSxDQUFDSSxJQUFQLENBQVksZ0JBQVosTUFBa0MsTUFBNUQ7QUFDQSxRQUFNckIsb0JBQW9CLEdBQUdDLElBQUksQ0FBQ0Msd0JBQUwsQ0FBOEIsZUFBOUIsQ0FBN0I7QUFDQVEsSUFBQUEsZ0JBQWdCLEdBQUdBLGdCQUFnQixJQUFJYixjQUFjLENBQUN5QixRQUFmLENBQXdCdEIsb0JBQW9CLENBQUNHLE9BQXJCLENBQTZCLG9CQUE3QixDQUF4QixDQUF2QztBQUNBLFFBQU1vQixtQkFBbUIsaUNBQTBCQyxnQkFBZ0IsQ0FBQzNCLGNBQUQsQ0FBMUMsNkJBQTZFNEIsWUFBWSxFQUF6RixDQUF6Qjs7QUFFQSxRQUFJTCxpQkFBaUIsS0FBTXZCLGNBQWMsQ0FBQzZCLE1BQWYsS0FBMEIsQ0FBMUIsSUFBK0JoQixnQkFBaEMsSUFBcURiLGNBQWMsQ0FBQzZCLE1BQWYsS0FBMEIsQ0FBcEYsQ0FBckIsRUFBNkc7QUFDNUdmLE1BQUFBLFlBQVksR0FDWGQsY0FBYyxDQUFDNkIsTUFBZixLQUEwQixDQUExQixHQUNHLDRDQURILEdBRUcsMERBSEo7QUFJQSxLQUxELE1BS087QUFDTmYsTUFBQUEsWUFBWSxHQUFHWSxtQkFBZjtBQUNBWCxNQUFBQSxXQUFXLEdBQUcsQ0FBQ2YsY0FBYyxDQUFDOEIsSUFBZixDQUFvQixJQUFwQixDQUFELENBQWQ7QUFDQTs7QUFDRCxXQUFPbEMsZUFBZSxDQUFDVSxPQUFoQixDQUF3QlEsWUFBeEIsRUFBc0NDLFdBQXRDLENBQVA7QUFDQTs7QUFFRCxXQUFTVCxPQUFULENBQWlCTixjQUFqQixFQUEyQ1ksVUFBM0MsRUFBZ0VtQixTQUFoRSxFQUFtRkMsa0JBQW5GLEVBQXlIO0FBQ3hILFFBQU1wQyxlQUFlLEdBQUdvQixrQkFBa0IsRUFBMUM7O0FBQ0EsV0FBT3BCLGVBQWUsR0FDbkJBLGVBQWUsQ0FBQ1UsT0FBaEIsNEJBQTRDcUIsZ0JBQWdCLENBQUMzQixjQUFELENBQTVELDZCQUErRjRCLFlBQVksRUFBM0csR0FBaUgsQ0FDakg1QixjQUFjLENBQUM4QixJQUFmLENBQW9CLElBQXBCLENBRGlILEVBRWpIRSxrQkFBa0IsQ0FBQ0QsU0FBRCxFQUFZbkIsVUFBWixDQUYrRixDQUFqSCxDQURtQixHQUtuQixFQUxIO0FBTUE7O0FBRUQsV0FBU2dCLFlBQVQsR0FBd0I7QUFDdkIsV0FBT0ssTUFBTSxDQUFDQyxPQUFQLEdBQWlCLE9BQWpCLEdBQTJCLE9BQWxDO0FBQ0E7O0FBRUQsV0FBU1AsZ0JBQVQsQ0FBMEIzQixjQUExQixFQUFpRDtBQUNoRCxXQUFPQSxjQUFjLENBQUM2QixNQUFmLEtBQTBCLENBQTFCLEdBQThCLFFBQTlCLEdBQXlDLE9BQWhEO0FBQ0E7O0FBRUQsV0FBU2Isa0JBQVQsR0FBMEQ7QUFDekQsV0FBT1osSUFBSSxDQUFDQyx3QkFBTCxDQUE4QixrQkFBOUIsQ0FBUDtBQUNBOztBQUVELE1BQU04QixrQkFBa0IsR0FBRztBQUMxQnhCLElBQUFBLFVBQVUsRUFBRUEsVUFEYztBQUUxQkwsSUFBQUEsT0FBTyxFQUFFQSxPQUZpQjtBQUcxQmQsSUFBQUEsU0FBUyxFQUFFQTtBQUhlLEdBQTNCO1NBTWUyQyxrQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgeyBzeXN0ZW0gfSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuXG5mdW5jdGlvbiBnZXRMYWJlbHMoYUlnbm9yZWRGaWVsZHM6IHN0cmluZ1tdLCBzRW50aXR5VHlwZVBhdGg6IHN0cmluZywgb0ZpbHRlckNvbnRyb2w6IENvbnRyb2wsIG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUpOiBzdHJpbmdbXSB7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBvRmlsdGVyQ29udHJvbC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdGFJZ25vcmVkTGFiZWxzID0gYUlnbm9yZWRGaWVsZHMubWFwKGZ1bmN0aW9uIChzUHJvcGVydHkpIHtcblx0XHRcdGNvbnN0IG9NYWNyb1Jlc291cmNlQnVuZGxlID0gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUubWFjcm9zXCIpIGFzIFJlc291cmNlQnVuZGxlO1xuXHRcdFx0aWYgKHNQcm9wZXJ0eSA9PT0gXCIkc2VhcmNoXCIpIHtcblx0XHRcdFx0cmV0dXJuIG9NYWNyb1Jlc291cmNlQnVuZGxlID8gb01hY3JvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRklMVEVSQkFSX1NFQVJDSFwiKSA6IFwiXCI7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc1Byb3BlcnR5ID09PSBcIiRlZGl0U3RhdGVcIikge1xuXHRcdFx0XHRyZXR1cm4gb1Jlc291cmNlQnVuZGxlID8gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJGSUxURVJCQVJfRURJVElOR19TVEFUVVNcIikgOiBcIlwiO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc0xhYmVsID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c0VudGl0eVR5cGVQYXRofSR7c1Byb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxgKTtcblx0XHRcdHJldHVybiBEZWxlZ2F0ZVV0aWwuZ2V0TG9jYWxpemVkVGV4dChzTGFiZWwsIG9GaWx0ZXJDb250cm9sKTtcblx0XHR9KTtcblx0cmV0dXJuIGFJZ25vcmVkTGFiZWxzO1xufVxuZnVuY3Rpb24gZ2V0QUxQVGV4dChhSWdub3JlZExhYmVsczogc3RyaW5nW10sIG9GaWx0ZXJCYXI6IENvbnRyb2wsIGJJc1NlYXJjaElnbm9yZWQ6IGJvb2xlYW4pIHtcblx0bGV0IHNSZXNvdXJjZUtleSA9IFwiXCI7XG5cdGxldCBhUGFyYW1ldGVyczogc3RyaW5nW10gPSBbXTtcblx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gX2dldFJlc291cmNlQnVuZGxlKCk7XG5cblx0aWYgKCFvUmVzb3VyY2VCdW5kbGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9GaWx0ZXJCYXIpO1xuXHRjb25zdCBvQ2hhcnQgPSB2aWV3LmdldENvbnRyb2xsZXIoKS5nZXRDaGFydENvbnRyb2woKTtcblx0Y29uc3QgYklzRHJhZnRTdXBwb3J0ZWQgPSBvQ2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIjtcblx0Y29uc3Qgb01hY3JvUmVzb3VyY2VCdW5kbGUgPSBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5tYWNyb3NcIikgYXMgUmVzb3VyY2VCdW5kbGU7XG5cdGJJc1NlYXJjaElnbm9yZWQgPSBiSXNTZWFyY2hJZ25vcmVkICYmIGFJZ25vcmVkTGFiZWxzLmluY2x1ZGVzKG9NYWNyb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0ZJTFRFUkJBUl9TRUFSQ0hcIikpO1xuXHRjb25zdCBzRGVmYXVsdFJlc291cmNlS2V5ID0gYENfTFJfTVVMVElWSVpfQ0hBUlRfJHtfZ2V0QXJndW1lbnRTaXplKGFJZ25vcmVkTGFiZWxzKX1fSUdOT1JFRF9GSUxURVJfJHtfZ2V0U2l6ZVRleHQoKX1gO1xuXG5cdGlmIChiSXNEcmFmdFN1cHBvcnRlZCAmJiAoKGFJZ25vcmVkTGFiZWxzLmxlbmd0aCA9PT0gMiAmJiBiSXNTZWFyY2hJZ25vcmVkKSB8fCBhSWdub3JlZExhYmVscy5sZW5ndGggPT09IDEpKSB7XG5cdFx0c1Jlc291cmNlS2V5ID1cblx0XHRcdGFJZ25vcmVkTGFiZWxzLmxlbmd0aCA9PT0gMVxuXHRcdFx0XHQ/IFwiQ19NVUxUSVZJWl9DSEFSVF9JR05PUkVEX0ZJTFRFUl9EUkFGVF9EQVRBXCJcblx0XHRcdFx0OiBcIkNfTFJfTVVMVElWSVpfQ0hBUlRfSUdOT1JFRF9GSUxURVJfRFJBRlRfREFUQV9BTkRfU0VBUkNIXCI7XG5cdH0gZWxzZSB7XG5cdFx0c1Jlc291cmNlS2V5ID0gc0RlZmF1bHRSZXNvdXJjZUtleTtcblx0XHRhUGFyYW1ldGVycyA9IFthSWdub3JlZExhYmVscy5qb2luKFwiLCBcIildO1xuXHR9XG5cdHJldHVybiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChzUmVzb3VyY2VLZXksIGFQYXJhbWV0ZXJzKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGV4dChhSWdub3JlZExhYmVsczogc3RyaW5nW10sIG9GaWx0ZXJCYXI6IENvbnRyb2wsIHNUYWJUaXRsZTogc3RyaW5nLCBmbkdldExvY2FsaXplZFRleHQ6IEZ1bmN0aW9uKTogc3RyaW5nIHtcblx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gX2dldFJlc291cmNlQnVuZGxlKCk7XG5cdHJldHVybiBvUmVzb3VyY2VCdW5kbGVcblx0XHQ/IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KGBDX0xSX01VTFRJVEFCTEVTXyR7X2dldEFyZ3VtZW50U2l6ZShhSWdub3JlZExhYmVscyl9X0lHTk9SRURfRklMVEVSXyR7X2dldFNpemVUZXh0KCl9YCwgW1xuXHRcdFx0XHRhSWdub3JlZExhYmVscy5qb2luKFwiLCBcIiksXG5cdFx0XHRcdGZuR2V0TG9jYWxpemVkVGV4dChzVGFiVGl0bGUsIG9GaWx0ZXJCYXIpXG5cdFx0ICBdKVxuXHRcdDogXCJcIjtcbn1cblxuZnVuY3Rpb24gX2dldFNpemVUZXh0KCkge1xuXHRyZXR1cm4gc3lzdGVtLmRlc2t0b3AgPyBcIkxBUkdFXCIgOiBcIlNNQUxMXCI7XG59XG5cbmZ1bmN0aW9uIF9nZXRBcmd1bWVudFNpemUoYUlnbm9yZWRMYWJlbHM6IGFueVtdKSB7XG5cdHJldHVybiBhSWdub3JlZExhYmVscy5sZW5ndGggPT09IDEgPyBcIlNJTkdMRVwiIDogXCJNVUxUSVwiO1xufVxuXG5mdW5jdGlvbiBfZ2V0UmVzb3VyY2VCdW5kbGUoKTogUmVzb3VyY2VCdW5kbGUgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUudGVtcGxhdGVzXCIpIGFzIFJlc291cmNlQnVuZGxlO1xufVxuXG5jb25zdCBNZXNzYWdlU3RyaXBIZWxwZXIgPSB7XG5cdGdldEFMUFRleHQ6IGdldEFMUFRleHQsXG5cdGdldFRleHQ6IGdldFRleHQsXG5cdGdldExhYmVsczogZ2V0TGFiZWxzXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlU3RyaXBIZWxwZXI7XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
2
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
3
|
+
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
4
|
+
import Control from "sap/ui/core/Control";
|
|
5
|
+
import Core from "sap/ui/core/Core";
|
|
6
|
+
import { system } from "sap/ui/Device";
|
|
7
|
+
|
|
8
|
+
function getLabels(aIgnoredFields: string[], sEntityTypePath: string, oFilterControl: Control, oResourceBundle: ResourceBundle): string[] {
|
|
9
|
+
const oMetaModel = oFilterControl.getModel().getMetaModel(),
|
|
10
|
+
aIgnoredLabels = aIgnoredFields.map(function (sProperty) {
|
|
11
|
+
const oMacroResourceBundle = Core.getLibraryResourceBundle("sap.fe.macros") as ResourceBundle;
|
|
12
|
+
if (sProperty === "$search") {
|
|
13
|
+
return oMacroResourceBundle ? oMacroResourceBundle.getText("M_FILTERBAR_SEARCH") : "";
|
|
14
|
+
}
|
|
15
|
+
if (sProperty === "$editState") {
|
|
16
|
+
return oResourceBundle ? oResourceBundle.getText("FILTERBAR_EDITING_STATUS") : "";
|
|
17
|
+
}
|
|
18
|
+
const sLabel = oMetaModel.getObject(`${sEntityTypePath}${sProperty}@com.sap.vocabularies.Common.v1.Label`);
|
|
19
|
+
return DelegateUtil.getLocalizedText(sLabel, oFilterControl);
|
|
20
|
+
});
|
|
21
|
+
return aIgnoredLabels;
|
|
22
|
+
}
|
|
23
|
+
function getALPText(aIgnoredLabels: string[], oFilterBar: Control, bIsSearchIgnored: boolean) {
|
|
24
|
+
let sResourceKey = "";
|
|
25
|
+
let aParameters: string[] = [];
|
|
26
|
+
const oResourceBundle = _getResourceBundle();
|
|
27
|
+
|
|
28
|
+
if (!oResourceBundle) {
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const view = CommonUtils.getTargetView(oFilterBar);
|
|
33
|
+
const oChart = view.getController().getChartControl();
|
|
34
|
+
const bIsDraftSupported = oChart.data("draftSupported") === "true";
|
|
35
|
+
const oMacroResourceBundle = Core.getLibraryResourceBundle("sap.fe.macros") as ResourceBundle;
|
|
36
|
+
bIsSearchIgnored = bIsSearchIgnored && aIgnoredLabels.includes(oMacroResourceBundle.getText("M_FILTERBAR_SEARCH"));
|
|
37
|
+
const sDefaultResourceKey = `C_LR_MULTIVIZ_CHART_${_getArgumentSize(aIgnoredLabels)}_IGNORED_FILTER_${_getSizeText()}`;
|
|
38
|
+
|
|
39
|
+
if (bIsDraftSupported && ((aIgnoredLabels.length === 2 && bIsSearchIgnored) || aIgnoredLabels.length === 1)) {
|
|
40
|
+
sResourceKey =
|
|
41
|
+
aIgnoredLabels.length === 1
|
|
42
|
+
? "C_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA"
|
|
43
|
+
: "C_LR_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA_AND_SEARCH";
|
|
44
|
+
} else {
|
|
45
|
+
sResourceKey = sDefaultResourceKey;
|
|
46
|
+
aParameters = [aIgnoredLabels.join(", ")];
|
|
47
|
+
}
|
|
48
|
+
return oResourceBundle.getText(sResourceKey, aParameters);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function getText(aIgnoredLabels: string[], oFilterBar: Control, sTabTitle: string, fnGetLocalizedText: Function): string {
|
|
52
|
+
const oResourceBundle = _getResourceBundle();
|
|
53
|
+
return oResourceBundle
|
|
54
|
+
? oResourceBundle.getText(`C_LR_MULTITABLES_${_getArgumentSize(aIgnoredLabels)}_IGNORED_FILTER_${_getSizeText()}`, [
|
|
55
|
+
aIgnoredLabels.join(", "),
|
|
56
|
+
fnGetLocalizedText(sTabTitle, oFilterBar)
|
|
57
|
+
])
|
|
58
|
+
: "";
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function _getSizeText() {
|
|
62
|
+
return system.desktop ? "LARGE" : "SMALL";
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function _getArgumentSize(aIgnoredLabels: any[]) {
|
|
66
|
+
return aIgnoredLabels.length === 1 ? "SINGLE" : "MULTI";
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function _getResourceBundle(): ResourceBundle | undefined {
|
|
70
|
+
return Core.getLibraryResourceBundle("sap.fe.templates") as ResourceBundle;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const MessageStripHelper = {
|
|
74
|
+
getALPText: getALPText,
|
|
75
|
+
getText: getText,
|
|
76
|
+
getLabels: getLabels
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export default MessageStripHelper;
|
|
@@ -12,8 +12,8 @@ sap.ui.define([], function () {
|
|
|
12
12
|
*
|
|
13
13
|
* @function
|
|
14
14
|
* @name isStickySessionSupported
|
|
15
|
-
* @param
|
|
16
|
-
* @returns
|
|
15
|
+
* @param oMetaModel ODataModelMetaModel to check for sticky enabled entity
|
|
16
|
+
* @returns Returns true if sticky, else false
|
|
17
17
|
*/
|
|
18
18
|
isStickySessionSupported: function (oMetaModel) {
|
|
19
19
|
var oEntityContainer = oMetaModel.getObject("/");
|
|
@@ -32,9 +32,9 @@ sap.ui.define([], function () {
|
|
|
32
32
|
*
|
|
33
33
|
* @function
|
|
34
34
|
* @name isDraftSupported
|
|
35
|
-
* @param
|
|
36
|
-
* @param
|
|
37
|
-
* @returns
|
|
35
|
+
* @param oMetaModel ODataModelMetaModel of the context for which draft support shall be checked
|
|
36
|
+
* @param sPath Path for which draft support shall be checked
|
|
37
|
+
* @returns Returns true if draft, else false
|
|
38
38
|
*/
|
|
39
39
|
isDraftSupported: function (oMetaModel, sPath) {
|
|
40
40
|
var oMetaContext = oMetaModel.getMetaContext(sPath);
|
|
@@ -47,7 +47,7 @@ sap.ui.define([], function () {
|
|
|
47
47
|
|
|
48
48
|
if (aParts.length) {
|
|
49
49
|
for (var i = aParts.length - 1; i >= 0; i--) {
|
|
50
|
-
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath("/"
|
|
50
|
+
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath("/".concat(aParts[i])));
|
|
51
51
|
|
|
52
52
|
if (oParentEntitySetContext.getObject("$kind") === "EntitySet") {
|
|
53
53
|
sTargetEntitySet = this.getTargetEntitySet(oParentEntitySetContext);
|
|
@@ -73,9 +73,9 @@ sap.ui.define([], function () {
|
|
|
73
73
|
*
|
|
74
74
|
* @function
|
|
75
75
|
* @name isCollaborationDraftSupported
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @returns
|
|
76
|
+
* @param metaObject MetaObject to be used for determination
|
|
77
|
+
* @param templateInterface API provided by UI5 templating if used
|
|
78
|
+
* @returns Returns true if the service supports collaboration draft, else false
|
|
79
79
|
*/
|
|
80
80
|
isCollaborationDraftSupported: function (metaObject, templateInterface) {
|
|
81
81
|
var _templateInterface$co;
|
|
@@ -84,7 +84,7 @@ sap.ui.define([], function () {
|
|
|
84
84
|
var oEntityContainer = oMetaModel.getObject("/");
|
|
85
85
|
|
|
86
86
|
for (var sEntitySet in oEntityContainer) {
|
|
87
|
-
if (oEntityContainer[sEntitySet].$kind === "EntitySet" && oMetaModel.getObject("/"
|
|
87
|
+
if (oEntityContainer[sEntitySet].$kind === "EntitySet" && oMetaModel.getObject("/".concat(sEntitySet, "@com.sap.vocabularies.Common.v1.DraftRoot/ShareAction"))) {
|
|
88
88
|
return true;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -97,8 +97,8 @@ sap.ui.define([], function () {
|
|
|
97
97
|
*
|
|
98
98
|
* @function
|
|
99
99
|
* @name getTargetEntitySet
|
|
100
|
-
* @param
|
|
101
|
-
* @returns
|
|
100
|
+
* @param oContext Context for which the target entity set shall be determined
|
|
101
|
+
* @returns Returns path to the target entity set
|
|
102
102
|
*/
|
|
103
103
|
getTargetEntitySet: function (oContext) {
|
|
104
104
|
var sPath = oContext.getPath();
|
|
@@ -108,7 +108,7 @@ sap.ui.define([], function () {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
var sEntitySetPath = ModelHelper.getEntitySetPath(sPath);
|
|
111
|
-
return "/"
|
|
111
|
+
return "/".concat(oContext.getObject(sEntitySetPath));
|
|
112
112
|
},
|
|
113
113
|
|
|
114
114
|
/**
|
|
@@ -116,11 +116,11 @@ sap.ui.define([], function () {
|
|
|
116
116
|
*
|
|
117
117
|
* @function
|
|
118
118
|
* @name getEntitySetPath
|
|
119
|
-
* @param
|
|
120
|
-
* @returns
|
|
119
|
+
* @param sPath Path for which complete entitySet path needs to be determined
|
|
120
|
+
* @returns Returns complete path to the entity set
|
|
121
121
|
*/
|
|
122
122
|
getEntitySetPath: function (sPath) {
|
|
123
|
-
return "/"
|
|
123
|
+
return "/".concat(sPath.split("/").filter(ModelHelper.filterOutNavPropBinding).join("/$NavigationPropertyBinding/"));
|
|
124
124
|
},
|
|
125
125
|
|
|
126
126
|
/**
|
|
@@ -128,8 +128,8 @@ sap.ui.define([], function () {
|
|
|
128
128
|
*
|
|
129
129
|
* @function
|
|
130
130
|
* @name getActionParameterItemsModelPath
|
|
131
|
-
* @param
|
|
132
|
-
* @returns
|
|
131
|
+
* @param oParameter Action Parameter
|
|
132
|
+
* @returns Returns the complete model path for the items property of MultiValueField parameters
|
|
133
133
|
*/
|
|
134
134
|
getActionParameterItemsModelPath: function (oParameter) {
|
|
135
135
|
return oParameter && oParameter.$Name ? "{path: 'mvfview>/".concat(oParameter.$Name, "'}") : undefined;
|
|
@@ -213,7 +213,7 @@ sap.ui.define([], function () {
|
|
|
213
213
|
* Returns whether filtering on the table is case sensitive.
|
|
214
214
|
*
|
|
215
215
|
* @param oMetaModel The instance of the meta model
|
|
216
|
-
* @returns
|
|
216
|
+
* @returns Returns 'false' if FilterFunctions annotation supports 'tolower', else 'true'
|
|
217
217
|
*/
|
|
218
218
|
isFilteringCaseSensitive: function (oMetaModel) {
|
|
219
219
|
if (!oMetaModel) {
|
|
@@ -228,8 +228,8 @@ sap.ui.define([], function () {
|
|
|
228
228
|
/**
|
|
229
229
|
* Get MetaPath for the context.
|
|
230
230
|
*
|
|
231
|
-
* @param
|
|
232
|
-
* @returns
|
|
231
|
+
* @param oContext Context to be used
|
|
232
|
+
* @returns Returns meta path for the context.
|
|
233
233
|
*/
|
|
234
234
|
getMetaPathForContext: function (oContext) {
|
|
235
235
|
var oModel = oContext.getModel(),
|
|
@@ -241,9 +241,9 @@ sap.ui.define([], function () {
|
|
|
241
241
|
/**
|
|
242
242
|
* Get MetaPath for the listbinding.
|
|
243
243
|
*
|
|
244
|
-
* @param
|
|
245
|
-
* @param
|
|
246
|
-
* @returns
|
|
244
|
+
* @param oView View of the control using listBinding
|
|
245
|
+
* @param vListBinding ODataListBinding object or the binding path for a temporary list binding
|
|
246
|
+
* @returns Returns meta path for the listbinding.
|
|
247
247
|
*/
|
|
248
248
|
getAbsoluteMetaPathForListBinding: function (oView, vListBinding) {
|
|
249
249
|
var oMetaModel = oView.getModel().getMetaModel();
|
|
@@ -280,4 +280,4 @@ sap.ui.define([], function () {
|
|
|
280
280
|
};
|
|
281
281
|
return ModelHelper;
|
|
282
282
|
}, false);
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGVsSGVscGVyLnRzIl0sIm5hbWVzIjpbIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIm9FbnRpdHlDb250YWluZXIiLCJnZXRPYmplY3QiLCJzRW50aXR5U2V0IiwiJGtpbmQiLCJpc0RyYWZ0U3VwcG9ydGVkIiwic1BhdGgiLCJvTWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsInNUYXJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXQiLCJvUGFyZW50RW50aXR5U2V0Q29udGV4dCIsImFQYXJ0cyIsImdldFByb3BlcnR5IiwiJENvbnRhaW5zVGFyZ2V0IiwiZ2V0TWV0YVBhdGgiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJpIiwib0VudGl0eUNvbnRleHQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIm1ldGFPYmplY3QiLCJ0ZW1wbGF0ZUludGVyZmFjZSIsImNvbnRleHQiLCJnZXRNb2RlbCIsIm9Db250ZXh0IiwiZ2V0UGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlck91dE5hdlByb3BCaW5kaW5nIiwiam9pbiIsImdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoIiwib1BhcmFtZXRlciIsIiROYW1lIiwidW5kZWZpbmVkIiwic1BhdGhQYXJ0IiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJmbkJpbmRDb250ZXh0IiwiYmluZENvbnRleHQiLCJtUGFyYW1ldGVycyIsImFyZ3MiLCJhcHBseSIsImZuR2V0Qm91bmRDb250ZXh0IiwiZ2V0Qm91bmRDb250ZXh0Iiwic3ViQXJncyIsIm9Cb3VuZENvbnRleHQiLCJzZXRQcm9wZXJ0eSIsInNTZXRQcm9wUGF0aCIsInZhbHVlIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwidWlNb2RlbCIsImxpYnJhcnkiLCJmblNldFByb3BlcnR5IiwiRWRpdE1vZGUiLCJFZGl0YWJsZSIsIkRpc3BsYXkiLCJpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUiLCJhRmlsdGVyRnVuY3Rpb25zIiwiaW5kZXhPZiIsImdldE1ldGFQYXRoRm9yQ29udGV4dCIsIm9Nb2RlbCIsImdldE1ldGFNb2RlbCIsImdldEFic29sdXRlTWV0YVBhdGhGb3JMaXN0QmluZGluZyIsIm9WaWV3Iiwidkxpc3RCaW5kaW5nIiwic01ldGFQYXRoIiwic3RhcnRzV2l0aCIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic1Jvb3RDb250ZXh0UGF0aCIsIm9CaW5kaW5nIiwib1Jvb3RCaW5kaW5nIiwiZ2V0Um9vdEJpbmRpbmciLCJzUm9vdEJpbmRpbmdQYXRoIiwic1JlbGF0aXZlUGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUZBO0FBTUEsTUFBTUEsV0FBVyxHQUFHO0FBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsSUFBQUEsd0JBQXdCLEVBQUUsVUFBVUMsVUFBVixFQUFzQztBQUMvRCxVQUFNQyxnQkFBZ0IsR0FBR0QsVUFBVSxDQUFDRSxTQUFYLENBQXFCLEdBQXJCLENBQXpCOztBQUNBLFdBQUssSUFBTUMsVUFBWCxJQUF5QkYsZ0JBQXpCLEVBQTJDO0FBQzFDLFlBQ0NBLGdCQUFnQixDQUFDRSxVQUFELENBQWhCLENBQTZCQyxLQUE3QixLQUF1QyxXQUF2QyxJQUNBSixVQUFVLENBQUNFLFNBQVgsWUFBeUJDLFVBQXpCLDZEQUZELEVBR0U7QUFDRCxpQkFBTyxJQUFQO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDQSxLQXBCa0I7O0FBc0JuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0UsSUFBQUEsZ0JBQWdCLEVBQUUsVUFBVUwsVUFBVixFQUEyQk0sS0FBM0IsRUFBMEM7QUFDM0QsVUFBTUMsWUFBWSxHQUFHUCxVQUFVLENB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LGNBQThDQyxhQUE5QyxFQUFaO0FBQ0E7QUFDRDs7QUFDRCxhQUFPVCxTQUFQO0FBQ0E7QUF6UGtCLEdBQXBCO1NBZ1FldEUsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyogVGhpcyBjbGFzcyBjb250YWlucyBoZWxwZXJzIHRvIGJlIHVzZWQgYXQgcnVudGltZSB0byByZXRyaWV2ZSBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBtb2RlbCAqL1xuaW1wb3J0IEJhc2VDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmNvbnN0IE1vZGVsSGVscGVyID0ge1xuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgc3RpY2t5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsfSBvTWV0YU1vZGVsIE9EYXRhTW9kZWxNZXRhTW9kZWwgdG8gY2hlY2sgZm9yIHN0aWNreSBlbmFibGVkIGVudGl0eVxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHN0aWNreSwgZWxzZSBmYWxzZVxuXHQgKi9cblx0aXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0XHRjb25zdCBvRW50aXR5Q29udGFpbmVyID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIpO1xuXHRcdGZvciAoY29uc3Qgc0VudGl0eVNldCBpbiBvRW50aXR5Q29udGFpbmVyKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9FbnRpdHlDb250YWluZXJbc0VudGl0eVNldF0uJGtpbmQgPT09IFwiRW50aXR5U2V0XCIgJiZcblx0XHRcdFx0b01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke3NFbnRpdHlTZXR9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZGApXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgZHJhZnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBpc0RyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk1ldGFNb2RlbH0gb01ldGFNb2RlbCBPRGF0YU1vZGVsTWV0YU1vZGVsIG9mIHRoZSBjb250ZXh0IGZvciB3aGljaCBkcmFmdCBzdXBwb3J0IHNoYWxsIGJlIGNoZWNrZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNQYXRoIFBhdGggZm9yIHdoaWNoIGRyYWZ0IHN1cHBvcnQgc2hhbGwgYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGRyYWZ0LCBlbHNlIGZhbHNlXG5cdCAqL1xuXHRpc0RyYWZ0U3VwcG9ydGVkOiBmdW5jdGlvbiAob01ldGFNb2RlbDogYW55LCBzUGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb01ldGFDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChzUGF0aCk7XG5cdFx0bGV0IHNUYXJnZXRFbnRpdHlTZXQgPSB0aGlzLmdldFRhcmdldEVudGl0eVNldChvTWV0YUNvbnRleHQpLFxuXHRcdFx0b1BhcmVudEVudGl0eVNldENvbnRleHQsXG5cdFx0XHRhUGFydHM7XG5cblx0XHRpZiAob01ldGFDb250ZXh0LmdldFByb3BlcnR5ICYmIG9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eSgpICYmIG9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eSgpLiRDb250YWluc1RhcmdldCA9PT0gdHJ1ZSkge1xuXHRcdFx0YVBhcnRzID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChzUGF0aCkuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTtcblx0XHRcdGlmIChhUGFydHMubGVuZ3RoKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBhUGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRvUGFyZW50RW50aXR5U2V0Q29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQob01ldGFNb2RlbC5nZXRNZXRhUGF0aChcIi9cIiArIGFQYXJ0c1tpXSkpO1xuXHRcdFx0XHRcdGlmIChvUGFyZW50RW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoXCIka2luZFwiKSA9PT0gXCJFbnRpdHlTZXRcIikge1xuXHRcdFx0XHRcdFx0c1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzVGFyZ2V0RW50aXR5U2V0ID0gdGhpcy5nZXRUYXJnZXRFbnRpdHlTZXQob01ldGFDb250ZXh0KTtcblx0XHR9XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNUYXJnZXRFbnRpdHlTZXQpO1xuXHRcdGlmIChcblx0XHRcdG9FbnRpdHlDb250ZXh0LmdldE9iamVjdChcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIpIHx8XG5cdFx0XHRvRW50aXR5Q29udGV4dC5nZXRPYmplY3QoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgc2VydmljZSwgc3VwcG9ydHMgY29sbGFib3JhdGlvbiBkcmFmdC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhT2JqZWN0IE1ldGFPYmplY3QgdG8gYmUgdXNlZCBmb3IgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0ge29iamVjdH0gdGVtcGxhdGVJbnRlcmZhY2UgQVBJIHByb3ZpZGVkIGJ5IFVJNSB0ZW1wbGF0aW5nIGlmIHVzZWRcblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VydmljZSBzdXBwb3J0cyBjb2xsYWJvcmF0aW9uIGRyYWZ0LCBlbHNlIGZhbHNlXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZDogZnVuY3Rpb24gKG1ldGFPYmplY3Q6IGFueSwgdGVtcGxhdGVJbnRlcmZhY2U/OiBhbnkpIHtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gKHRlbXBsYXRlSW50ZXJmYWNlPy5jb250ZXh0Py5nZXRNb2RlbCgpIHx8IG1ldGFPYmplY3QpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGNvbnN0IG9FbnRpdHlDb250YWluZXIgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIik7XG5cdFx0Zm9yIChjb25zdCBzRW50aXR5U2V0IGluIG9FbnRpdHlDb250YWluZXIpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0b0VudGl0eUNvbnRhaW5lcltzRW50aXR5U2V0XS4ka2luZCA9PT0gXCJFbnRpdHlTZXRcIiAmJlxuXHRcdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIiArIHNFbnRpdHlTZXQgKyBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L1NoYXJlQWN0aW9uXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyBwYXRoIHRvIHRoZSB0YXJnZXQgZW50aXR5IHNldCB2aWEgdXNpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0VGFyZ2V0RW50aXR5U2V0XG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHR9IG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSB0YXJnZXQgZW50aXR5IHNldCBzaGFsbCBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgcGF0aCB0byB0aGUgdGFyZ2V0IGVudGl0eSBzZXRcblx0ICovXG5cdGdldFRhcmdldEVudGl0eVNldDogZnVuY3Rpb24gKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3Qgc1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIgfHxcblx0XHRcdG9Db250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkFjdGlvblwiIHx8XG5cdFx0XHRvQ29udGV4dC5nZXRPYmplY3QoXCIwLyRraW5kXCIpID09PSBcIkFjdGlvblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gc1BhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzUGF0aCk7XG5cdFx0cmV0dXJuIFwiL1wiICsgb0NvbnRleHQuZ2V0T2JqZWN0KHNFbnRpdHlTZXRQYXRoKTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyBjb21wbGV0ZSBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0IHZpYSB1c2luZyBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRFbnRpdHlTZXRQYXRoXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUGF0aCBQYXRoIGZvciB3aGljaCBjb21wbGV0ZSBlbnRpdHlTZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgY29tcGxldGUgcGF0aCB0byB0aGUgZW50aXR5IHNldFxuXHQgKi9cblx0Z2V0RW50aXR5U2V0UGF0aDogZnVuY3Rpb24gKHNQYXRoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gXCIvXCIgKyBzUGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKE1vZGVsSGVscGVyLmZpbHRlck91dE5hdlByb3BCaW5kaW5nKS5qb2luKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGF0aCBmb3IgdGhlIGl0ZW1zIHByb3BlcnR5IG9mIE11bHRpVmFsdWVGaWVsZCBwYXJhbWV0ZXJzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0QWN0aW9uUGFyYW1ldGVySXRlbXNNb2RlbFBhdGhcblx0ICogQHBhcmFtIHtvYmplY3R9IG9QYXJhbWV0ZXIgQWN0aW9uIFBhcmFtZXRlclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb21wbGV0ZSBtb2RlbCBwYXRoIGZvciB0aGUgaXRlbXMgcHJvcGVydHkgb2YgTXVsdGlWYWx1ZUZpZWxkIHBhcmFtZXRlcnNcblx0ICovXG5cdGdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoOiBmdW5jdGlvbiAob1BhcmFtZXRlcjogYW55KSB7XG5cdFx0cmV0dXJuIG9QYXJhbWV0ZXIgJiYgb1BhcmFtZXRlci4kTmFtZSA/IGB7cGF0aDogJ212ZnZpZXc+LyR7b1BhcmFtZXRlci4kTmFtZX0nfWAgOiB1bmRlZmluZWQ7XG5cdH0sXG5cblx0ZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmc6IGZ1bmN0aW9uIChzUGF0aFBhcnQ6IGFueSkge1xuXHRcdHJldHVybiBzUGF0aFBhcnQgIT09IFwiXCIgJiYgc1BhdGhQYXJ0ICE9PSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZHMgYSBzZXRQcm9wZXJ0eSB0byB0aGUgY3JlYXRlZCBiaW5kaW5nIGNvbnRleHRzIG9mIHRoZSBpbnRlcm5hbCBKU09OIG1vZGVsLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZW5oYW5jZUludGVybmFsSlNPTk1vZGVsXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLmpzb24uSlNPTk1vZGVsfSBJbnRlcm5hbCBKU09OIE1vZGVsIHdoaWNoIGlzIGVuaGFuY2VkXG5cdCAqL1xuXG5cdGVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbDogZnVuY3Rpb24gKG9JbnRlcm5hbE1vZGVsOiBhbnkpIHtcblx0XHRjb25zdCBmbkJpbmRDb250ZXh0ID0gb0ludGVybmFsTW9kZWwuYmluZENvbnRleHQ7XG5cdFx0b0ludGVybmFsTW9kZWwuYmluZENvbnRleHQgPSBmdW5jdGlvbiAoc1BhdGg6IGFueSwgb0NvbnRleHQ6IGFueSwgbVBhcmFtZXRlcnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcblx0XHRcdG9Db250ZXh0ID0gZm5CaW5kQ29udGV4dC5hcHBseSh0aGlzLCBbc1BhdGgsIG9Db250ZXh0LCBtUGFyYW1ldGVycywgLi4uYXJnc10pO1xuXHRcdFx0Y29uc3QgZm5HZXRCb3VuZENvbnRleHQgPSBvQ29udGV4dC5nZXRCb3VuZENvbnRleHQ7XG5cblx0XHRcdG9Db250ZXh0LmdldEJvdW5kQ29udGV4dCA9IGZ1bmN0aW9uICguLi5zdWJBcmdzOiBhbnlbXSkge1xuXHRcdFx0XHRjb25zdCBvQm91bmRDb250ZXh0ID0gZm5HZXRCb3VuZENvbnRleHQuYXBwbHkodGhpcywgLi4uc3ViQXJncyk7XG5cdFx0XHRcdGlmIChvQm91bmRDb250ZXh0ICYmICFvQm91bmRDb250ZXh0LnNldFByb3BlcnR5KSB7XG5cdFx0XHRcdFx0b0JvdW5kQ29udGV4dC5zZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIChzU2V0UHJvcFBhdGg6IGFueSwgdmFsdWU6IGFueSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZ2V0T2JqZWN0KCkgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0XHQvLyBpbml0aWFsaXplXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0TW9kZWwoKS5zZXRQcm9wZXJ0eSh0aGlzLmdldFBhdGgoKSwge30pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNTZXRQcm9wUGF0aCwgdmFsdWUsIHRoaXMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9Cb3VuZENvbnRleHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0O1xuXHRcdH07XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gaGFuZGxlciBvbiBwcm9wZXJ0eUNoYW5nZS5cblx0ICogVGhlIHByb3BlcnR5IFwiL2VkaXRNb2RlXCIgaXMgY2hhbmdlZCBhY2NvcmRpbmcgdG8gcHJvcGVydHkgJy9pc0VkaXRhYmxlJyB3aGVuIHRoaXMgbGFzdCBvbmUgaXMgc2V0XG5cdCAqIGluIG9yZGVyIHRvIGJlIGNvbXBsaWFudCB3aXRoIGZvcm1lciB2ZXJzaW9ucyB3aGVyZSBidWlsZGluZyBibG9ja3MgdXNlIHRoZSBwcm9wZXJ0eSBcIi9lZGl0TW9kZVwiXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBlbmhhbmNlVWlKU09OTW9kZWxcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWx9IHVpTW9kZWwgSlNPTiBNb2RlbCB3aGljaCBpcyBlbmhhbmNlZFxuXHQgKiBAcGFyYW0ge29iamVjdH0gbGlicmFyeSBDb3JlIGxpYnJhcnkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzXG5cdCAqL1xuXG5cdGVuaGFuY2VVaUpTT05Nb2RlbDogZnVuY3Rpb24gKHVpTW9kZWw6IEpTT05Nb2RlbCwgbGlicmFyeTogYW55KSB7XG5cdFx0Y29uc3QgZm5TZXRQcm9wZXJ0eSA9IHVpTW9kZWwuc2V0UHJvcGVydHkgYXMgYW55O1xuXHRcdHVpTW9kZWwuc2V0UHJvcGVydHkgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gYXJnc1sxXTtcblx0XHRcdGlmIChhcmdzWzBdID09PSBcIi9pc0VkaXRhYmxlXCIpIHtcblx0XHRcdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eShcIi9lZGl0TW9kZVwiLCB2YWx1ZSA/IGxpYnJhcnkuRWRpdE1vZGUuRWRpdGFibGUgOiBsaWJyYXJ5LkVkaXRNb2RlLkRpc3BsYXkpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZuU2V0UHJvcGVydHkuYXBwbHkodGhpcywgWy4uLmFyZ3NdKTtcblx0XHR9O1xuXHR9LFxuXHQvKipcblx0ICogUmV0dXJucyB3aGV0aGVyIGZpbHRlcmluZyBvbiB0aGUgdGFibGUgaXMgY2FzZSBzZW5zaXRpdmUuXG5cdCAqXG5cdCAqIEBwYXJhbSBvTWV0YU1vZGVsIFRoZSBpbnN0YW5jZSBvZiB0aGUgbWV0YSBtb2RlbFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbnx1bmRlZmluZWR9IFJldHVybnMgJ2ZhbHNlJyBpZiBGaWx0ZXJGdW5jdGlvbnMgYW5ub3RhdGlvbiBzdXBwb3J0cyAndG9sb3dlcicsIGVsc2UgJ3RydWUnXG5cdCAqL1xuXHRpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmU6IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRpZiAoIW9NZXRhTW9kZWwpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IGFGaWx0ZXJGdW5jdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJGdW5jdGlvbnNcIik7XG5cdFx0Ly8gR2V0IGZpbHRlciBmdW5jdGlvbnMgZGVmaW5lZCBhdCBFbnRpdHlDb250YWluZXIgYW5kIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgJ3RvbG93ZXInXG5cdFx0cmV0dXJuIGFGaWx0ZXJGdW5jdGlvbnMgPyBhRmlsdGVyRnVuY3Rpb25zLmluZGV4T2YoXCJ0b2xvd2VyXCIpID09PSAtMSA6IHRydWU7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBNZXRhUGF0aCBmb3IgdGhlIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Q29udGV4dH0gb0NvbnRleHQgQ29udGV4dCB0byBiZSB1c2VkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFJldHVybnMgbWV0YSBwYXRoIGZvciB0aGUgY29udGV4dC5cblx0ICovXG5cdGdldE1ldGFQYXRoRm9yQ29udGV4dDogZnVuY3Rpb24gKG9Db250ZXh0OiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHNQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBvTWV0YU1vZGVsICYmIHNQYXRoICYmIG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoc1BhdGgpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgTWV0YVBhdGggZm9yIHRoZSBsaXN0YmluZGluZy5cblx0ICpcblx0ICogQHBhcmFtIHtWaWV3fSBvVmlldyBWaWV3IG9mIHRoZSBjb250cm9sIHVzaW5nIGxpc3RCaW5kaW5nXG5cdCAqIEBwYXJhbSB7T0RhdGFMaXN0QmluZGluZyB8IHN0cmluZ30gdkxpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0IG9yIHRoZSBiaW5kaW5nIHBhdGggZm9yIGEgdGVtcG9yYXJ5IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKi9cblx0Z2V0QWJzb2x1dGVNZXRhUGF0aEZvckxpc3RCaW5kaW5nOiBmdW5jdGlvbiAob1ZpZXc6IGFueSwgdkxpc3RCaW5kaW5nOiBhbnkpIHtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1ZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRsZXQgc01ldGFQYXRoO1xuXG5cdFx0aWYgKHR5cGVvZiB2TGlzdEJpbmRpbmcgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2TGlzdEJpbmRpbmcuc3RhcnRzV2l0aChcIi9cIikpIHtcblx0XHRcdFx0Ly8gYWJzb2x1dGUgcGF0aFxuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKHZMaXN0QmluZGluZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyByZWxhdGl2ZSBwYXRoXG5cdFx0XHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRcdGNvbnN0IHNSb290Q29udGV4dFBhdGggPSBvQmluZGluZ0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAke3NSb290Q29udGV4dFBhdGh9LyR7dkxpc3RCaW5kaW5nfWApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBhbHJlYWR5IGdldCBhIGxpc3QgYmluZGluZyB1c2UgdGhpcyBvbmVcblx0XHRcdGNvbnN0IG9CaW5kaW5nID0gdkxpc3RCaW5kaW5nO1xuXHRcdFx0Y29uc3Qgb1Jvb3RCaW5kaW5nID0gb0JpbmRpbmcuZ2V0Um9vdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvQmluZGluZyA9PT0gb1Jvb3RCaW5kaW5nKSB7XG5cdFx0XHRcdC8vIGFic29sdXRlIHBhdGhcblx0XHRcdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQmluZGluZy5nZXRQYXRoKCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gcmVsYXRpdmUgcGF0aFxuXHRcdFx0XHRjb25zdCBzUm9vdEJpbmRpbmdQYXRoID0gb1Jvb3RCaW5kaW5nLmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3Qgc1JlbGF0aXZlUGF0aCA9IG9CaW5kaW5nLmdldFBhdGgoKTtcblx0XHRcdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChgJHtzUm9vdEJpbmRpbmdQYXRofS8ke3NSZWxhdGl2ZVBhdGh9YCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzTWV0YVBhdGg7XG5cdH1cbn07XG5cbmV4cG9ydCB0eXBlIEludGVybmFsTW9kZWxDb250ZXh0ID0gQmFzZUNvbnRleHQgJiB7XG5cdHNldFByb3BlcnR5KHNQYXRoOiBzdHJpbmcsIHZWYWx1ZTogYW55KTogdm9pZDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVsSGVscGVyO1xuIl19
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGVsSGVscGVyLnRzIl0sIm5hbWVzIjpbIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIm9FbnRpdHlDb250YWluZXIiLCJnZXRPYmplY3QiLCJzRW50aXR5U2V0IiwiJGtpbmQiLCJpc0RyYWZ0U3VwcG9ydGVkIiwic1BhdGgiLCJvTWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsInNUYXJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXQiLCJvUGFyZW50RW50aXR5U2V0Q29udGV4dCIsImFQYXJ0cyIsImdldFByb3BlcnR5IiwiJENvbnRhaW5zVGFyZ2V0IiwiZ2V0TWV0YVBhdGgiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJpIiwib0VudGl0eUNvbnRleHQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIm1ldGFPYmplY3QiLCJ0ZW1wbGF0ZUludGVyZmFjZSIsImNvbnRleHQiLCJnZXRNb2RlbCIsIm9Db250ZXh0IiwiZ2V0UGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlck91dE5hdlByb3BCaW5kaW5nIiwiam9pbiIsImdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoIiwib1BhcmFtZXRlciIsIiROYW1lIiwidW5kZWZpbmVkIiwic1BhdGhQYXJ0IiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJmbkJpbmRDb250ZXh0IiwiYmluZENvbnRleHQiLCJtUGFyYW1ldGVycyIsImFyZ3MiLCJhcHBseSIsImZuR2V0Qm91bmRDb250ZXh0IiwiZ2V0Qm91bmRDb250ZXh0Iiwic3ViQXJncyIsIm9Cb3VuZENvbnRleHQiLCJzZXRQcm9wZXJ0eSIsInNTZXRQcm9wUGF0aCIsInZhbHVlIiwiZW5oYW5jZVVpSlNPTk1vZGVsIiwidWlNb2RlbCIsImxpYnJhcnkiLCJmblNldFByb3BlcnR5IiwiRWRpdE1vZGUiLCJFZGl0YWJsZSIsIkRpc3BsYXkiLCJpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmUiLCJhRmlsdGVyRnVuY3Rpb25zIiwiaW5kZXhPZiIsImdldE1ldGFQYXRoRm9yQ29udGV4dCIsIm9Nb2RlbCIsImdldE1ldGFNb2RlbCIsImdldEFic29sdXRlTWV0YVBhdGhGb3JMaXN0QmluZGluZyIsIm9WaWV3Iiwidkxpc3RCaW5kaW5nIiwic01ldGFQYXRoIiwic3RhcnRzV2l0aCIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic1Jvb3RDb250ZXh0UGF0aCIsIm9CaW5kaW5nIiwib1Jvb3RCaW5kaW5nIiwiZ2V0Um9vdEJpbmRpbmciLCJzUm9vdEJpbmRpbmdQYXRoIiwic1JlbGF0aXZlUGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUZBO0FBUUEsTUFBTUEsV0FBVyxHQUFHO0FBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsSUFBQUEsd0JBQXdCLEVBQUUsVUFBVUMsVUFBVixFQUFzQztBQUMvRCxVQUFNQyxnQkFBZ0IsR0FBR0QsVUFBVSxDQUFDRSxTQUFYLENBQXFCLEdBQXJCLENBQXpCOztBQUNBLFdBQUssSUFBTUMsVUFBWCxJQUF5QkYsZ0JBQXpCLEVBQTJDO0FBQzFDLFlBQ0NBLGdCQUFnQixDQUFDRSxVQUFELENBQWhCLENBQTZCQyxLQUE3QixLQUF1QyxXQUF2QyxJQUNBSixVQUFVLENBQUNFLFNBQVgsWUFBeUJDLFVBQXpCLDZEQUZELEVBR0U7QUFDRCxpQkFBTyxJQUFQO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDQSxLQXBCa0I7O0FBc0JuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0UsSUFBQUEsZ0JBQWdCLEVBQUUsVUFBVUwsVUFBVixFQUEyQk0sS0FBM0IsRUFBMEM7QUFDM0QsVUFBTUMsWUFBWSxHQUFHUCxVQUFVLENBQUNRLGNBQVgsQ0FBMEJGLEtBQTFCLENBQXJCO0FBQ0EsVUFBSUcsZ0JBQWdCLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JILFlBQXhCLENBQXZCO0FBQUEsVUFDQ0ksdUJBREQ7QUFBQSxVQUVDQyxNQUZEOztBQUlBLFVBQUlMLFlBQVksQ0FBQ00sV0FBYixJQUE0Qk4sWUFBWSxDQUFDTSxXQUFiLEVBQTVCLElBQTBETixZQUFZLENBQUNNLFdBQWIsR0FBMkJDLGVBQTNCLEtBQStDLElBQTdHLEVBQW1IO0FBQ2xIRixRQUFBQSxNQUFNLEdBQUdaLFVBQVUsQ0FBQ2UsV0FBWCxDQUF1QlQsS0FBdkIsRUFBOEJVLEtBQTlCLENBQW9DLEdBQXBDLEVBQXlDQyxNQUF6QyxDQUFnREMsT0FBaEQsQ0FBVDs7QUFDQSxZQUFJTixNQUFNLENBQUNPLE1BQVgsRUFBbUI7QUFDbEIsZUFBSyxJQUFJQyxDQUFDLEdBQUdSLE1BQU0sQ0FBQ08sTUFBUCxHQUFnQixDQUE3QixFQUFnQ0MsQ0FBQyxJQUFJLENBQXJDLEVBQXdDQSxDQUFDLEVBQXpDLEVBQTZDO0FBQzVDVCxZQUFBQSx1QkFBdUIsR0FBR1gsVUFBVSxDQUFDUSxjQUFYLENBQTBCUixVQUFVLENBQUNlLFdBQVgsWUFBMkJILE1BQU0sQ0FBQ1EsQ0FBRCxDQUFqQyxFQUExQixDQUExQjs7QUFDQSxnQkFBSVQsdUJBQXVCLENBQUNULFNBQXhCLENBQWtDLE9BQWxDLE1BQStDLFdBQW5ELEVBQWdFO0FBQy9ETyxjQUFBQSxnQkFBZ0IsR0FBRyxLQUFLQyxrQkFBTCxDQUF3QkMsdUJBQXhCLENBQW5CO0FBQ0E7QUFDQTtBQUNEO0FBQ0Q7QUFDRCxPQVhELE1BV087QUFDTkYsUUFBQUEsZ0JBQWdCLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JILFlBQXhCLENBQW5CO0FBQ0E7O0FBQ0QsVUFBTWMsY0FBYyxHQUFHckIsVUFBVSxDQUFDUSxjQUFYLENBQTBCQyxnQkFBMUIsQ0FBdkI7O0FBQ0EsVUFDQ1ksY0FBYyxDQUFDbkIsU0FBZixDQUF5QiwyQ0FBekIsS0FDQW1CLGNBQWMsQ0FBQ25CLFNBQWYsQ0FBeUIsMkNBQXpCLENBRkQsRUFHRTtBQUNELGVBQU8sSUFBUDtBQUNBOztBQUNELGFBQU8sS0FBUDtBQUNBLEtBM0RrQjs7QUE2RG5CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDb0IsSUFBQUEsNkJBQTZCLEVBQUUsVUFBVUMsVUFBVixFQUEyQkMsaUJBQTNCLEVBQW9EO0FBQUE7O0FBQ2xGLFVBQU14QixVQUFVLEdBQUksQ0FBQXdCLGlCQUFpQixTQUFqQixJQUFBQSxpQkFBaUIsV0FBakIscUNBQUFBLGlCQUFpQixDQUFFQyxPQUFuQixnRkFBNEJDLFFBQTVCLE9BQTBDSCxVQUE5RDtBQUNBLFVBQU10QixnQkFBZ0IsR0FBR0QsVUFBVSxDQUFDRSxTQUFYLENBQXFCLEdBQXJCLENBQXpCOztBQUNBLFdBQUssSUFBTUMsVUFBWCxJQUF5QkYsZ0JBQXpCLEVBQTJDO0FBQzFDLFlBQ0NBLGdCQUFnQixDQUFDRSxVQUFELENBQWhCLENBQTZCQyxLQUE3QixLQUF1QyxXQUF2QyxJQUNBSixVQUFVLENBQUNFLFNBQVgsWUFBeUJDLFVBQXpCLDJEQUZELEVBR0U7QUFDRCxpQkFBTyxJQUFQO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDQSxLQWxGa0I7O0FBb0ZuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NPLElBQUFBLGtCQUFrQixFQUFFLFVBQVVpQixRQUFWLEVBQTZCO0FBQ2hELFVBQU1yQixLQUFLLEdBQUdxQixRQUFRLENBQUNDLE9BQVQsRUFBZDs7QUFDQSxVQUNDRCxRQUFRLENBQUN6QixTQUFULENBQW1CLE9BQW5CLE1BQWdDLFdBQWhDLElBQ0F5QixRQUFRLENBQUN6QixTQUFULENBQW1CLE9BQW5CLE1BQWdDLFFBRGhDLElBRUF5QixRQUFRLENBQUN6QixTQUFULENBQW1CLFNBQW5CLE1BQWtDLFFBSG5DLEVBSUU7QUFDRCxlQUFPSSxLQUFQO0FBQ0E7O0FBQ0QsVUFBTXVCLGNBQWMsR0FBRy9CLFdBQVcsQ0FBQ2dDLGdCQUFaLENBQTZCeEIsS0FBN0IsQ0FBdkI7QUFDQSx3QkFBV3FCLFFBQVEsQ0FBQ3pCLFNBQVQsQ0FBbUIyQixjQUFuQixDQUFYO0FBQ0EsS0F2R2tCOztBQXlHbkI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDQyxJQUFBQSxnQkFBZ0IsRUFBRSxVQUFVeEIsS0FBVixFQUF5QjtBQUMxQyx3QkFBV0EsS0FBSyxDQUFDVSxLQUFOLENBQVksR0FBWixFQUFpQkMsTUFBakIsQ0FBd0JuQixXQUFXLENBQUNpQyx1QkFBcEMsRUFBNkRDLElBQTdELENBQWtFLDhCQUFsRSxDQUFYO0FBQ0EsS0FuSGtCOztBQXFIbkI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDQyxJQUFBQSxnQ0FBZ0MsRUFBRSxVQUFVQyxVQUFWLEVBQTJCO0FBQzVELGFBQU9BLFVBQVUsSUFBSUEsVUFBVSxDQUFDQyxLQUF6Qiw4QkFBcURELFVBQVUsQ0FBQ0MsS0FBaEUsVUFBNEVDLFNBQW5GO0FBQ0EsS0EvSGtCO0FBaUluQkwsSUFBQUEsdUJBQXVCLEVBQUUsVUFBVU0sU0FBVixFQUEwQjtBQUNsRCxhQUFPQSxTQUFTLEtBQUssRUFBZCxJQUFvQkEsU0FBUyxLQUFLLDRCQUF6QztBQUNBLEtBbklrQjs7QUFxSW5CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUNDLElBQUFBLHdCQUF3QixFQUFFLFVBQVVDLGNBQVYsRUFBK0I7QUFDeEQsVUFBTUMsYUFBYSxHQUFHRCxjQUFjLENBQUNFLFdBQXJDOztBQUNBRixNQUFBQSxjQUFjLENBQUNFLFdBQWYsR0FBNkIsVUFBVW5DLEtBQVYsRUFBc0JxQixRQUF0QixFQUFxQ2UsV0FBckMsRUFBdUU7QUFBQSwwQ0FBYkMsSUFBYTtBQUFiQSxVQUFBQSxJQUFhO0FBQUE7O0FBQ25HaEIsUUFBQUEsUUFBUSxHQUFHYSxhQUFhLENBQUNJLEtBQWQsQ0FBb0IsSUFBcEIsR0FBMkJ0QyxLQUEzQixFQUFrQ3FCLFFBQWxDLEVBQTRDZSxXQUE1QyxTQUE0REMsSUFBNUQsRUFBWDtBQUNBLFlBQU1FLGlCQUFpQixHQUFHbEIsUUFBUSxDQUFDbUIsZUFBbkM7O0FBRUFuQixRQUFBQSxRQUFRLENBQUNtQixlQUFULEdBQTJCLFlBQTZCO0FBQUEsNkNBQWhCQyxPQUFnQjtBQUFoQkEsWUFBQUEsT0FBZ0I7QUFBQTs7QUFDdkQsY0FBTUMsYUFBYSxHQUFHSCxpQkFBaUIsQ0FBQ0QsS0FBbEIsT0FBQUMsaUJBQWlCLEdBQU8sSUFBUCxTQUFnQkUsT0FBaEIsRUFBdkM7O0FBQ0EsY0FBSUMsYUFBYSxJQUFJLENBQUNBLGFBQWEsQ0FBQ0MsV0FBcEMsRUFBaUQ7QUFDaERELFlBQUFBLGFBQWEsQ0FBQ0MsV0FBZCxHQUE0QixVQUFVQyxZQUFWLEVBQTZCQyxLQUE3QixFQUF5QztBQUNwRSxrQkFBSSxLQUFLakQsU0FBTCxPQUFxQmtDLFNBQXpCLEVBQW9DO0FBQ25DO0FBQ0EscUJBQUtWLFFBQUwsR0FBZ0J1QixXQUFoQixDQUE0QixLQUFLckIsT0FBTCxFQUE1QixFQUE0QyxFQUE1QztBQUNBOztBQUNELG1CQUFLRixRQUFMLEdBQWdCdUIsV0FBaEIsQ0FBNEJDLFlBQTVCLEVBQTBDQyxLQUExQyxFQUFpRCxJQUFqRDtBQUNBLGFBTkQ7QUFPQTs7QUFDRCxpQkFBT0gsYUFBUDtBQUNBLFNBWkQ7O0FBYUEsZUFBT3JCLFFBQVA7QUFDQSxPQWxCRDtBQW1CQSxLQWxLa0I7O0FBb0tuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVDeUIsSUFBQUEsa0JBQWtCLEVBQUUsVUFBVUMsT0FBVixFQUE4QkMsT0FBOUIsRUFBNEM7QUFDL0QsVUFBTUMsYUFBYSxHQUFHRixPQUFPLENBQUNKLFdBQTlCOztBQUNBSSxNQUFBQSxPQUFPLENBQUNKLFdBQVIsR0FBc0IsWUFBMEI7QUFBQSwyQ0FBYk4sSUFBYTtBQUFiQSxVQUFBQSxJQUFhO0FBQUE7O0FBQy9DLFlBQU1RLEtBQUssR0FBR1IsSUFBSSxDQUFDLENBQUQsQ0FBbEI7O0FBQ0EsWUFBSUEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLGFBQWhCLEVBQStCO0FBQzlCVSxVQUFBQSxPQUFPLENBQUNKLFdBQVIsQ0FBb0IsV0FBcEIsRUFBaUNFLEtBQUssR0FBR0csT0FBTyxDQUFDRSxRQUFSLENBQWlCQyxRQUFwQixHQUErQkgsT0FBTyxDQUFDRSxRQUFSLENBQWlCRSxPQUF0RjtBQUNBOztBQUNELGVBQU9ILGFBQWEsQ0FBQ1gsS0FBZCxDQUFvQixJQUFwQixZQUE4QkQsSUFBOUIsRUFBUDtBQUNBLE9BTkQ7QUFPQSxLQXhMa0I7O0FBeUxuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ2dCLElBQUFBLHdCQUF3QixFQUFFLFVBQVUzRCxVQUFWLEVBQTJCO0FBQ3BELFVBQUksQ0FBQ0EsVUFBTCxFQUFpQjtBQUNoQixlQUFPb0MsU0FBUDtBQUNBOztBQUNELFVBQU13QixnQkFBZ0IsR0FBRzVELFVBQVUsQ0FBQ0UsU0FBWCxDQUFxQiw2Q0FBckIsQ0FBekIsQ0FKb0QsQ0FLcEQ7O0FBQ0EsYUFBTzBELGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUIsU0FBekIsTUFBd0MsQ0FBQyxDQUE1QyxHQUFnRCxJQUF2RTtBQUNBLEtBdE1rQjs7QUF3TW5CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDQyxJQUFBQSxxQkFBcUIsRUFBRSxVQUFVbkMsUUFBVixFQUF5QjtBQUMvQyxVQUFNb0MsTUFBTSxHQUFHcEMsUUFBUSxDQUFDRCxRQUFULEVBQWY7QUFBQSxVQUNDMUIsVUFBVSxHQUFHK0QsTUFBTSxDQUFDQyxZQUFQLEVBRGQ7QUFBQSxVQUVDMUQsS0FBSyxHQUFHcUIsUUFBUSxDQUFDQyxPQUFULEVBRlQ7QUFHQSxhQUFPNUIsVUFBVSxJQUFJTSxLQUFkLElBQXVCTixVQUFVLENBQUNlLFdBQVgsQ0FBdUJULEtBQXZCLENBQTlCO0FBQ0EsS0FuTmtCOztBQXFObkI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQzJELElBQUFBLGlDQUFpQyxFQUFFLFVBQVVDLEtBQVYsRUFBdUJDLFlBQXZCLEVBQWdFO0FBQ2xHLFVBQU1uRSxVQUFVLEdBQUdrRSxLQUFLLENBQUN4QyxRQUFOLEdBQWlCc0MsWUFBakIsRUFBbkI7QUFDQSxVQUFJSSxTQUFKOztBQUVBLFVBQUksT0FBT0QsWUFBUCxLQUF3QixRQUE1QixFQUFzQztBQUNyQyxZQUFJQSxZQUFZLENBQUNFLFVBQWIsQ0FBd0IsR0FBeEIsQ0FBSixFQUFrQztBQUNqQztBQUNBRCxVQUFBQSxTQUFTLEdBQUdwRSxVQUFVLENBQUNlLFdBQVgsQ0FBdUJvRCxZQUF2QixDQUFaO0FBQ0EsU0FIRCxNQUdPO0FBQ047QUFDQSxjQUFNRyxlQUFlLEdBQUdKLEtBQUssQ0FBQ0ssaUJBQU4sRUFBeEI7QUFDQSxjQUFNQyxnQkFBZ0IsR0FBR0YsZUFBZSxDQUFFMUMsT0FBakIsRUFBekI7QUFDQXdDLFVBQUFBLFNBQVMsR0FBR3BFLFVBQVUsQ0FBQ2UsV0FBWCxXQUEwQnlELGdCQUExQixjQUE4Q0wsWUFBOUMsRUFBWjtBQUNBO0FBQ0QsT0FWRCxNQVVPO0FBQ047QUFDQSxZQUFNTSxRQUFRLEdBQUdOLFlBQWpCO0FBQ0EsWUFBTU8sWUFBWSxHQUFHRCxRQUFRLENBQUNFLGNBQVQsRUFBckI7O0FBQ0EsWUFBSUYsUUFBUSxLQUFLQyxZQUFqQixFQUErQjtBQUM5QjtBQUNBTixVQUFBQSxTQUFTLEdBQUdwRSxVQUFVLENBQUNlLFdBQVgsQ0FBdUIwRCxRQUFRLENBQUM3QyxPQUFULEVBQXZCLENBQVo7QUFDQSxTQUhELE1BR087QUFDTjtBQUNBLGNBQU1nRCxnQkFBZ0IsR0FBR0YsWUFBWSxDQUFFOUMsT0FBZCxFQUF6QjtBQUNBLGNBQU1pRCxhQUFhLEdBQUdKLFFBQVEsQ0FBQzdDLE9BQVQsRUFBdEI7QUFDQXdDLFVBQUFBLFNBQVMsR0FBR3BFLFVBQVUsQ0FBQ2UsV0FBWCxXQUEwQjZELGdCQUExQixjQUE4Q0MsYUFBOUMsRUFBWjtBQUNBO0FBQ0Q7O0FBQ0QsYUFBT1QsU0FBUDtBQUNBO0FBelBrQixHQUFwQjtTQWdRZXRFLFciLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qIFRoaXMgY2xhc3MgY29udGFpbnMgaGVscGVycyB0byBiZSB1c2VkIGF0IHJ1bnRpbWUgdG8gcmV0cmlldmUgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kZWwgKi9cbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBCYXNlQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuY29uc3QgTW9kZWxIZWxwZXIgPSB7XG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBpcyBzdGlja3kuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWRcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgT0RhdGFNb2RlbE1ldGFNb2RlbCB0byBjaGVjayBmb3Igc3RpY2t5IGVuYWJsZWQgZW50aXR5XG5cdCAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiBzdGlja3ksIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZDogZnVuY3Rpb24gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRhaW5lciA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiKTtcblx0XHRmb3IgKGNvbnN0IHNFbnRpdHlTZXQgaW4gb0VudGl0eUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvRW50aXR5Q29udGFpbmVyW3NFbnRpdHlTZXRdLiRraW5kID09PSBcIkVudGl0eVNldFwiICYmXG5cdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0fUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWRgKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBkZXRlcm1pbmUgaWYgdGhlIHByb2dyYW1taW5nIG1vZGVsIGlzIGRyYWZ0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNEcmFmdFN1cHBvcnRlZFxuXHQgKiBAcGFyYW0gb01ldGFNb2RlbCBPRGF0YU1vZGVsTWV0YU1vZGVsIG9mIHRoZSBjb250ZXh0IGZvciB3aGljaCBkcmFmdCBzdXBwb3J0IHNoYWxsIGJlIGNoZWNrZWRcblx0ICogQHBhcmFtIHNQYXRoIFBhdGggZm9yIHdoaWNoIGRyYWZ0IHN1cHBvcnQgc2hhbGwgYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZHJhZnQsIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzRHJhZnRTdXBwb3J0ZWQ6IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBhbnksIHNQYXRoOiBzdHJpbmcpIHtcblx0XHRjb25zdCBvTWV0YUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNQYXRoKTtcblx0XHRsZXQgc1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9NZXRhQ29udGV4dCksXG5cdFx0XHRvUGFyZW50RW50aXR5U2V0Q29udGV4dCxcblx0XHRcdGFQYXJ0cztcblxuXHRcdGlmIChvTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkgJiYgb01ldGFDb250ZXh0LmdldFByb3BlcnR5KCkgJiYgb01ldGFDb250ZXh0LmdldFByb3BlcnR5KCkuJENvbnRhaW5zVGFyZ2V0ID09PSB0cnVlKSB7XG5cdFx0XHRhUGFydHMgPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xuXHRcdFx0aWYgKGFQYXJ0cy5sZW5ndGgpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGFQYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAvJHthUGFydHNbaV19YCkpO1xuXHRcdFx0XHRcdGlmIChvUGFyZW50RW50aXR5U2V0Q29udGV4dC5nZXRPYmplY3QoXCIka2luZFwiKSA9PT0gXCJFbnRpdHlTZXRcIikge1xuXHRcdFx0XHRcdFx0c1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzVGFyZ2V0RW50aXR5U2V0ID0gdGhpcy5nZXRUYXJnZXRFbnRpdHlTZXQob01ldGFDb250ZXh0KTtcblx0XHR9XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNUYXJnZXRFbnRpdHlTZXQpO1xuXHRcdGlmIChcblx0XHRcdG9FbnRpdHlDb250ZXh0LmdldE9iamVjdChcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290XCIpIHx8XG5cdFx0XHRvRW50aXR5Q29udGV4dC5nZXRPYmplY3QoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Tm9kZVwiKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgc2VydmljZSwgc3VwcG9ydHMgY29sbGFib3JhdGlvbiBkcmFmdC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSBtZXRhT2JqZWN0IE1ldGFPYmplY3QgdG8gYmUgdXNlZCBmb3IgZGV0ZXJtaW5hdGlvblxuXHQgKiBAcGFyYW0gdGVtcGxhdGVJbnRlcmZhY2UgQVBJIHByb3ZpZGVkIGJ5IFVJNSB0ZW1wbGF0aW5nIGlmIHVzZWRcblx0ICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBzZXJ2aWNlIHN1cHBvcnRzIGNvbGxhYm9yYXRpb24gZHJhZnQsIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkOiBmdW5jdGlvbiAobWV0YU9iamVjdDogYW55LCB0ZW1wbGF0ZUludGVyZmFjZT86IGFueSkge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSAodGVtcGxhdGVJbnRlcmZhY2U/LmNvbnRleHQ/LmdldE1vZGVsKCkgfHwgbWV0YU9iamVjdCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0Y29uc3Qgb0VudGl0eUNvbnRhaW5lciA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiKTtcblx0XHRmb3IgKGNvbnN0IHNFbnRpdHlTZXQgaW4gb0VudGl0eUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRvRW50aXR5Q29udGFpbmVyW3NFbnRpdHlTZXRdLiRraW5kID09PSBcIkVudGl0eVNldFwiICYmXG5cdFx0XHRcdG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnRSb290L1NoYXJlQWN0aW9uYClcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHBhdGggdG8gdGhlIHRhcmdldCBlbnRpdHkgc2V0IHZpYSB1c2luZyBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRUYXJnZXRFbnRpdHlTZXRcblx0ICogQHBhcmFtIG9Db250ZXh0IENvbnRleHQgZm9yIHdoaWNoIHRoZSB0YXJnZXQgZW50aXR5IHNldCBzaGFsbCBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIFJldHVybnMgcGF0aCB0byB0aGUgdGFyZ2V0IGVudGl0eSBzZXRcblx0ICovXG5cdGdldFRhcmdldEVudGl0eVNldDogZnVuY3Rpb24gKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3Qgc1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIgfHxcblx0XHRcdG9Db250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkFjdGlvblwiIHx8XG5cdFx0XHRvQ29udGV4dC5nZXRPYmplY3QoXCIwLyRraW5kXCIpID09PSBcIkFjdGlvblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gc1BhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzUGF0aCk7XG5cdFx0cmV0dXJuIGAvJHtvQ29udGV4dC5nZXRPYmplY3Qoc0VudGl0eVNldFBhdGgpfWA7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgY29tcGxldGUgcGF0aCB0byB0aGUgZW50aXR5IHNldCB2aWEgdXNpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZ2V0RW50aXR5U2V0UGF0aFxuXHQgKiBAcGFyYW0gc1BhdGggUGF0aCBmb3Igd2hpY2ggY29tcGxldGUgZW50aXR5U2V0IHBhdGggbmVlZHMgdG8gYmUgZGV0ZXJtaW5lZFxuXHQgKiBAcmV0dXJucyBSZXR1cm5zIGNvbXBsZXRlIHBhdGggdG8gdGhlIGVudGl0eSBzZXRcblx0ICovXG5cdGdldEVudGl0eVNldFBhdGg6IGZ1bmN0aW9uIChzUGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGAvJHtzUGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKE1vZGVsSGVscGVyLmZpbHRlck91dE5hdlByb3BCaW5kaW5nKS5qb2luKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiKX1gO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIGZvciB0aGUgaXRlbXMgcHJvcGVydHkgb2YgTXVsdGlWYWx1ZUZpZWxkIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRBY3Rpb25QYXJhbWV0ZXJJdGVtc01vZGVsUGF0aFxuXHQgKiBAcGFyYW0gb1BhcmFtZXRlciBBY3Rpb24gUGFyYW1ldGVyXG5cdCAqIEByZXR1cm5zIFJldHVybnMgdGhlIGNvbXBsZXRlIG1vZGVsIHBhdGggZm9yIHRoZSBpdGVtcyBwcm9wZXJ0eSBvZiBNdWx0aVZhbHVlRmllbGQgcGFyYW1ldGVyc1xuXHQgKi9cblx0Z2V0QWN0aW9uUGFyYW1ldGVySXRlbXNNb2RlbFBhdGg6IGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRyZXR1cm4gb1BhcmFtZXRlciAmJiBvUGFyYW1ldGVyLiROYW1lID8gYHtwYXRoOiAnbXZmdmlldz4vJHtvUGFyYW1ldGVyLiROYW1lfSd9YCA6IHVuZGVmaW5lZDtcblx0fSxcblxuXHRmaWx0ZXJPdXROYXZQcm9wQmluZGluZzogZnVuY3Rpb24gKHNQYXRoUGFydDogYW55KSB7XG5cdFx0cmV0dXJuIHNQYXRoUGFydCAhPT0gXCJcIiAmJiBzUGF0aFBhcnQgIT09IFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIjtcblx0fSxcblxuXHQvKipcblx0ICogQWRkcyBhIHNldFByb3BlcnR5IHRvIHRoZSBjcmVhdGVkIGJpbmRpbmcgY29udGV4dHMgb2YgdGhlIGludGVybmFsIEpTT04gbW9kZWwuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWxcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWx9IEludGVybmFsIEpTT04gTW9kZWwgd2hpY2ggaXMgZW5oYW5jZWRcblx0ICovXG5cblx0ZW5oYW5jZUludGVybmFsSlNPTk1vZGVsOiBmdW5jdGlvbiAob0ludGVybmFsTW9kZWw6IGFueSkge1xuXHRcdGNvbnN0IGZuQmluZENvbnRleHQgPSBvSW50ZXJuYWxNb2RlbC5iaW5kQ29udGV4dDtcblx0XHRvSW50ZXJuYWxNb2RlbC5iaW5kQ29udGV4dCA9IGZ1bmN0aW9uIChzUGF0aDogYW55LCBvQ29udGV4dDogYW55LCBtUGFyYW1ldGVyczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuXHRcdFx0b0NvbnRleHQgPSBmbkJpbmRDb250ZXh0LmFwcGx5KHRoaXMsIFtzUGF0aCwgb0NvbnRleHQsIG1QYXJhbWV0ZXJzLCAuLi5hcmdzXSk7XG5cdFx0XHRjb25zdCBmbkdldEJvdW5kQ29udGV4dCA9IG9Db250ZXh0LmdldEJvdW5kQ29udGV4dDtcblxuXHRcdFx0b0NvbnRleHQuZ2V0Qm91bmRDb250ZXh0ID0gZnVuY3Rpb24gKC4uLnN1YkFyZ3M6IGFueVtdKSB7XG5cdFx0XHRcdGNvbnN0IG9Cb3VuZENvbnRleHQgPSBmbkdldEJvdW5kQ29udGV4dC5hcHBseSh0aGlzLCAuLi5zdWJBcmdzKTtcblx0XHRcdFx0aWYgKG9Cb3VuZENvbnRleHQgJiYgIW9Cb3VuZENvbnRleHQuc2V0UHJvcGVydHkpIHtcblx0XHRcdFx0XHRvQm91bmRDb250ZXh0LnNldFByb3BlcnR5ID0gZnVuY3Rpb24gKHNTZXRQcm9wUGF0aDogYW55LCB2YWx1ZTogYW55KSB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5nZXRPYmplY3QoKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGluaXRpYWxpemVcblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHRoaXMuZ2V0UGF0aCgpLCB7fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc1NldFByb3BQYXRoLCB2YWx1ZSwgdGhpcyk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gb0JvdW5kQ29udGV4dDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gb0NvbnRleHQ7XG5cdFx0fTtcblx0fSxcblxuXHQvKipcblx0ICogQWRkcyBhbiBoYW5kbGVyIG9uIHByb3BlcnR5Q2hhbmdlLlxuXHQgKiBUaGUgcHJvcGVydHkgXCIvZWRpdE1vZGVcIiBpcyBjaGFuZ2VkIGFjY29yZGluZyB0byBwcm9wZXJ0eSAnL2lzRWRpdGFibGUnIHdoZW4gdGhpcyBsYXN0IG9uZSBpcyBzZXRcblx0ICogaW4gb3JkZXIgdG8gYmUgY29tcGxpYW50IHdpdGggZm9ybWVyIHZlcnNpb25zIHdoZXJlIGJ1aWxkaW5nIGJsb2NrcyB1c2UgdGhlIHByb3BlcnR5IFwiL2VkaXRNb2RlXCJcblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGVuaGFuY2VVaUpTT05Nb2RlbFxuXHQgKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5qc29uLkpTT05Nb2RlbH0gdWlNb2RlbCBKU09OIE1vZGVsIHdoaWNoIGlzIGVuaGFuY2VkXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBsaWJyYXJ5IENvcmUgbGlicmFyeSBvZiBTQVAgRmlvcmkgZWxlbWVudHNcblx0ICovXG5cblx0ZW5oYW5jZVVpSlNPTk1vZGVsOiBmdW5jdGlvbiAodWlNb2RlbDogSlNPTk1vZGVsLCBsaWJyYXJ5OiBhbnkpIHtcblx0XHRjb25zdCBmblNldFByb3BlcnR5ID0gdWlNb2RlbC5zZXRQcm9wZXJ0eSBhcyBhbnk7XG5cdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSBhcmdzWzFdO1xuXHRcdFx0aWYgKGFyZ3NbMF0gPT09IFwiL2lzRWRpdGFibGVcIikge1xuXHRcdFx0XHR1aU1vZGVsLnNldFByb3BlcnR5KFwiL2VkaXRNb2RlXCIsIHZhbHVlID8gbGlicmFyeS5FZGl0TW9kZS5FZGl0YWJsZSA6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZm5TZXRQcm9wZXJ0eS5hcHBseSh0aGlzLCBbLi4uYXJnc10pO1xuXHRcdH07XG5cdH0sXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgZmlsdGVyaW5nIG9uIHRoZSB0YWJsZSBpcyBjYXNlIHNlbnNpdGl2ZS5cblx0ICpcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIGluc3RhbmNlIG9mIHRoZSBtZXRhIG1vZGVsXG5cdCAqIEByZXR1cm5zIFJldHVybnMgJ2ZhbHNlJyBpZiBGaWx0ZXJGdW5jdGlvbnMgYW5ub3RhdGlvbiBzdXBwb3J0cyAndG9sb3dlcicsIGVsc2UgJ3RydWUnXG5cdCAqL1xuXHRpc0ZpbHRlcmluZ0Nhc2VTZW5zaXRpdmU6IGZ1bmN0aW9uIChvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRpZiAoIW9NZXRhTW9kZWwpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IGFGaWx0ZXJGdW5jdGlvbnMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJGdW5jdGlvbnNcIik7XG5cdFx0Ly8gR2V0IGZpbHRlciBmdW5jdGlvbnMgZGVmaW5lZCBhdCBFbnRpdHlDb250YWluZXIgYW5kIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgJ3RvbG93ZXInXG5cdFx0cmV0dXJuIGFGaWx0ZXJGdW5jdGlvbnMgPyBhRmlsdGVyRnVuY3Rpb25zLmluZGV4T2YoXCJ0b2xvd2VyXCIpID09PSAtMSA6IHRydWU7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBNZXRhUGF0aCBmb3IgdGhlIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IHRvIGJlIHVzZWRcblx0ICogQHJldHVybnMgUmV0dXJucyBtZXRhIHBhdGggZm9yIHRoZSBjb250ZXh0LlxuXHQgKi9cblx0Z2V0TWV0YVBhdGhGb3JDb250ZXh0OiBmdW5jdGlvbiAob0NvbnRleHQ6IGFueSkge1xuXHRcdGNvbnN0IG9Nb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCksXG5cdFx0XHRvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0c1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwgJiYgc1BhdGggJiYgb01ldGFNb2RlbC5nZXRNZXRhUGF0aChzUGF0aCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCBNZXRhUGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gb1ZpZXcgVmlldyBvZiB0aGUgY29udHJvbCB1c2luZyBsaXN0QmluZGluZ1xuXHQgKiBAcGFyYW0gdkxpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0IG9yIHRoZSBiaW5kaW5nIHBhdGggZm9yIGEgdGVtcG9yYXJ5IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKi9cblx0Z2V0QWJzb2x1dGVNZXRhUGF0aEZvckxpc3RCaW5kaW5nOiBmdW5jdGlvbiAob1ZpZXc6IFZpZXcsIHZMaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZyB8IHN0cmluZykge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvVmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGxldCBzTWV0YVBhdGg7XG5cblx0XHRpZiAodHlwZW9mIHZMaXN0QmluZGluZyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYgKHZMaXN0QmluZGluZy5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHQvLyBhYnNvbHV0ZSBwYXRoXG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgodkxpc3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHJlbGF0aXZlIHBhdGhcblx0XHRcdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdFx0Y29uc3Qgc1Jvb3RDb250ZXh0UGF0aCA9IG9CaW5kaW5nQ29udGV4dCEuZ2V0UGF0aCgpO1xuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAke3NSb290Q29udGV4dFBhdGh9LyR7dkxpc3RCaW5kaW5nfWApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyB3ZSBhbHJlYWR5IGdldCBhIGxpc3QgYmluZGluZyB1c2UgdGhpcyBvbmVcblx0XHRcdGNvbnN0IG9CaW5kaW5nID0gdkxpc3RCaW5kaW5nO1xuXHRcdFx0Y29uc3Qgb1Jvb3RCaW5kaW5nID0gb0JpbmRpbmcuZ2V0Um9vdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvQmluZGluZyA9PT0gb1Jvb3RCaW5kaW5nKSB7XG5cdFx0XHRcdC8vIGFic29sdXRlIHBhdGhcblx0XHRcdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQmluZGluZy5nZXRQYXRoKCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gcmVsYXRpdmUgcGF0aFxuXHRcdFx0XHRjb25zdCBzUm9vdEJpbmRpbmdQYXRoID0gb1Jvb3RCaW5kaW5nIS5nZXRQYXRoKCk7XG5cdFx0XHRcdGNvbnN0IHNSZWxhdGl2ZVBhdGggPSBvQmluZGluZy5nZXRQYXRoKCk7XG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoYCR7c1Jvb3RCaW5kaW5nUGF0aH0vJHtzUmVsYXRpdmVQYXRofWApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc01ldGFQYXRoO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBJbnRlcm5hbE1vZGVsQ29udGV4dCA9IEJhc2VDb250ZXh0ICYge1xuXHRzZXRQcm9wZXJ0eShzUGF0aDogc3RyaW5nLCB2VmFsdWU6IGFueSk6IHZvaWQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2RlbEhlbHBlcjtcbiJdfQ==
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/* This class contains helpers to be used at runtime to retrieve further information on the model */
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
2
|
+
import type View from "sap/ui/core/mvc/View";
|
|
3
|
+
import type BaseContext from "sap/ui/model/Context";
|
|
4
|
+
import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
5
|
+
import type Context from "sap/ui/model/odata/v4/Context";
|
|
6
|
+
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
7
|
+
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
6
8
|
|
|
7
9
|
const ModelHelper = {
|
|
8
10
|
/**
|
|
@@ -10,8 +12,8 @@ const ModelHelper = {
|
|
|
10
12
|
*
|
|
11
13
|
* @function
|
|
12
14
|
* @name isStickySessionSupported
|
|
13
|
-
* @param
|
|
14
|
-
* @returns
|
|
15
|
+
* @param oMetaModel ODataModelMetaModel to check for sticky enabled entity
|
|
16
|
+
* @returns Returns true if sticky, else false
|
|
15
17
|
*/
|
|
16
18
|
isStickySessionSupported: function (oMetaModel: ODataMetaModel) {
|
|
17
19
|
const oEntityContainer = oMetaModel.getObject("/");
|
|
@@ -31,9 +33,9 @@ const ModelHelper = {
|
|
|
31
33
|
*
|
|
32
34
|
* @function
|
|
33
35
|
* @name isDraftSupported
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
36
|
-
* @returns
|
|
36
|
+
* @param oMetaModel ODataModelMetaModel of the context for which draft support shall be checked
|
|
37
|
+
* @param sPath Path for which draft support shall be checked
|
|
38
|
+
* @returns Returns true if draft, else false
|
|
37
39
|
*/
|
|
38
40
|
isDraftSupported: function (oMetaModel: any, sPath: string) {
|
|
39
41
|
const oMetaContext = oMetaModel.getMetaContext(sPath);
|
|
@@ -45,7 +47,7 @@ const ModelHelper = {
|
|
|
45
47
|
aParts = oMetaModel.getMetaPath(sPath).split("/").filter(Boolean);
|
|
46
48
|
if (aParts.length) {
|
|
47
49
|
for (let i = aParts.length - 1; i >= 0; i--) {
|
|
48
|
-
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath(
|
|
50
|
+
oParentEntitySetContext = oMetaModel.getMetaContext(oMetaModel.getMetaPath(`/${aParts[i]}`));
|
|
49
51
|
if (oParentEntitySetContext.getObject("$kind") === "EntitySet") {
|
|
50
52
|
sTargetEntitySet = this.getTargetEntitySet(oParentEntitySetContext);
|
|
51
53
|
break;
|
|
@@ -70,9 +72,9 @@ const ModelHelper = {
|
|
|
70
72
|
*
|
|
71
73
|
* @function
|
|
72
74
|
* @name isCollaborationDraftSupported
|
|
73
|
-
* @param
|
|
74
|
-
* @param
|
|
75
|
-
* @returns
|
|
75
|
+
* @param metaObject MetaObject to be used for determination
|
|
76
|
+
* @param templateInterface API provided by UI5 templating if used
|
|
77
|
+
* @returns Returns true if the service supports collaboration draft, else false
|
|
76
78
|
*/
|
|
77
79
|
isCollaborationDraftSupported: function (metaObject: any, templateInterface?: any) {
|
|
78
80
|
const oMetaModel = (templateInterface?.context?.getModel() || metaObject) as ODataMetaModel;
|
|
@@ -80,7 +82,7 @@ const ModelHelper = {
|
|
|
80
82
|
for (const sEntitySet in oEntityContainer) {
|
|
81
83
|
if (
|
|
82
84
|
oEntityContainer[sEntitySet].$kind === "EntitySet" &&
|
|
83
|
-
oMetaModel.getObject(
|
|
85
|
+
oMetaModel.getObject(`/${sEntitySet}@com.sap.vocabularies.Common.v1.DraftRoot/ShareAction`)
|
|
84
86
|
) {
|
|
85
87
|
return true;
|
|
86
88
|
}
|
|
@@ -93,8 +95,8 @@ const ModelHelper = {
|
|
|
93
95
|
*
|
|
94
96
|
* @function
|
|
95
97
|
* @name getTargetEntitySet
|
|
96
|
-
* @param
|
|
97
|
-
* @returns
|
|
98
|
+
* @param oContext Context for which the target entity set shall be determined
|
|
99
|
+
* @returns Returns path to the target entity set
|
|
98
100
|
*/
|
|
99
101
|
getTargetEntitySet: function (oContext: Context) {
|
|
100
102
|
const sPath = oContext.getPath();
|
|
@@ -106,7 +108,7 @@ const ModelHelper = {
|
|
|
106
108
|
return sPath;
|
|
107
109
|
}
|
|
108
110
|
const sEntitySetPath = ModelHelper.getEntitySetPath(sPath);
|
|
109
|
-
return
|
|
111
|
+
return `/${oContext.getObject(sEntitySetPath)}`;
|
|
110
112
|
},
|
|
111
113
|
|
|
112
114
|
/**
|
|
@@ -114,11 +116,11 @@ const ModelHelper = {
|
|
|
114
116
|
*
|
|
115
117
|
* @function
|
|
116
118
|
* @name getEntitySetPath
|
|
117
|
-
* @param
|
|
118
|
-
* @returns
|
|
119
|
+
* @param sPath Path for which complete entitySet path needs to be determined
|
|
120
|
+
* @returns Returns complete path to the entity set
|
|
119
121
|
*/
|
|
120
122
|
getEntitySetPath: function (sPath: string) {
|
|
121
|
-
return
|
|
123
|
+
return `/${sPath.split("/").filter(ModelHelper.filterOutNavPropBinding).join("/$NavigationPropertyBinding/")}`;
|
|
122
124
|
},
|
|
123
125
|
|
|
124
126
|
/**
|
|
@@ -126,8 +128,8 @@ const ModelHelper = {
|
|
|
126
128
|
*
|
|
127
129
|
* @function
|
|
128
130
|
* @name getActionParameterItemsModelPath
|
|
129
|
-
* @param
|
|
130
|
-
* @returns
|
|
131
|
+
* @param oParameter Action Parameter
|
|
132
|
+
* @returns Returns the complete model path for the items property of MultiValueField parameters
|
|
131
133
|
*/
|
|
132
134
|
getActionParameterItemsModelPath: function (oParameter: any) {
|
|
133
135
|
return oParameter && oParameter.$Name ? `{path: 'mvfview>/${oParameter.$Name}'}` : undefined;
|
|
@@ -193,7 +195,7 @@ const ModelHelper = {
|
|
|
193
195
|
* Returns whether filtering on the table is case sensitive.
|
|
194
196
|
*
|
|
195
197
|
* @param oMetaModel The instance of the meta model
|
|
196
|
-
* @returns
|
|
198
|
+
* @returns Returns 'false' if FilterFunctions annotation supports 'tolower', else 'true'
|
|
197
199
|
*/
|
|
198
200
|
isFilteringCaseSensitive: function (oMetaModel: any) {
|
|
199
201
|
if (!oMetaModel) {
|
|
@@ -207,8 +209,8 @@ const ModelHelper = {
|
|
|
207
209
|
/**
|
|
208
210
|
* Get MetaPath for the context.
|
|
209
211
|
*
|
|
210
|
-
* @param
|
|
211
|
-
* @returns
|
|
212
|
+
* @param oContext Context to be used
|
|
213
|
+
* @returns Returns meta path for the context.
|
|
212
214
|
*/
|
|
213
215
|
getMetaPathForContext: function (oContext: any) {
|
|
214
216
|
const oModel = oContext.getModel(),
|
|
@@ -220,12 +222,12 @@ const ModelHelper = {
|
|
|
220
222
|
/**
|
|
221
223
|
* Get MetaPath for the listbinding.
|
|
222
224
|
*
|
|
223
|
-
* @param
|
|
224
|
-
* @param
|
|
225
|
-
* @returns
|
|
225
|
+
* @param oView View of the control using listBinding
|
|
226
|
+
* @param vListBinding ODataListBinding object or the binding path for a temporary list binding
|
|
227
|
+
* @returns Returns meta path for the listbinding.
|
|
226
228
|
*/
|
|
227
|
-
getAbsoluteMetaPathForListBinding: function (oView:
|
|
228
|
-
const oMetaModel = oView.getModel().getMetaModel();
|
|
229
|
+
getAbsoluteMetaPathForListBinding: function (oView: View, vListBinding: ODataListBinding | string) {
|
|
230
|
+
const oMetaModel = oView.getModel().getMetaModel() as ODataMetaModel;
|
|
229
231
|
let sMetaPath;
|
|
230
232
|
|
|
231
233
|
if (typeof vListBinding === "string") {
|
|
@@ -235,7 +237,7 @@ const ModelHelper = {
|
|
|
235
237
|
} else {
|
|
236
238
|
// relative path
|
|
237
239
|
const oBindingContext = oView.getBindingContext();
|
|
238
|
-
const sRootContextPath = oBindingContext
|
|
240
|
+
const sRootContextPath = oBindingContext!.getPath();
|
|
239
241
|
sMetaPath = oMetaModel.getMetaPath(`${sRootContextPath}/${vListBinding}`);
|
|
240
242
|
}
|
|
241
243
|
} else {
|
|
@@ -247,7 +249,7 @@ const ModelHelper = {
|
|
|
247
249
|
sMetaPath = oMetaModel.getMetaPath(oBinding.getPath());
|
|
248
250
|
} else {
|
|
249
251
|
// relative path
|
|
250
|
-
const sRootBindingPath = oRootBinding
|
|
252
|
+
const sRootBindingPath = oRootBinding!.getPath();
|
|
251
253
|
const sRelativePath = oBinding.getPath();
|
|
252
254
|
sMetaPath = oMetaModel.getMetaPath(`${sRootBindingPath}/${sRelativePath}`);
|
|
253
255
|
}
|