@sapui5/sap.fe.core 1.121.2 → 1.123.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +2 -2
- package/src/sap/fe/core/ActionRuntime.ts +1 -2
- package/src/sap/fe/core/CommonUtils.js +14 -171
- package/src/sap/fe/core/CommonUtils.ts +15 -221
- package/src/sap/fe/core/PageController.js +13 -1
- package/src/sap/fe/core/PageController.ts +16 -0
- package/src/sap/fe/core/TemplateComponent.js +6 -1
- package/src/sap/fe/core/TemplateComponent.ts +8 -0
- package/src/sap/fe/core/UIProvider.js +23 -0
- package/src/sap/fe/core/UIProvider.ts +38 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
- package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
- package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
- package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
- package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
- package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
- package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
- package/src/sap/fe/core/controllerextensions/Share.js +7 -7
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
- package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
- package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
- package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
- package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
- package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
- package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
- package/src/sap/fe/core/converters/ConverterContext.js +17 -9
- package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
- package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
- package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
- package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
- package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
- package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
- package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
- package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
- package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
- package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
- package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
- package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
- package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
- package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
- package/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
- package/src/sap/fe/core/converters/helpers/Key.js +2 -2
- package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
- package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
- package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
- package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
- package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
- package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
- package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
- package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
- package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
- package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
- package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
- package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
- package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
- package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
- package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
- package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
- package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
- package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
- package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
- package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
- package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
- package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
- package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
- package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
- package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +5 -2
- package/src/sap/fe/core/messagebundle_da.properties +1 -1
- package/src/sap/fe/core/messagebundle_en.properties +267 -2
- package/src/sap/fe/core/messagebundle_sl.properties +1 -1
- package/src/sap/fe/core/operationsHelper.js +2 -1
- package/src/sap/fe/core/operationsHelper.ts +1 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
- package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
- package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
- package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
- package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
- package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
- package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
- package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
- package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
- package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
- package/src/sap/fe/core/templating/FilterHelper.js +13 -10
- package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
- package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
- package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
- package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
- package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
- package/src/sap/fe/core/templating/UIFormatters.js +23 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
- package/src/sap/fe/core/type/EDM.js +1 -1
- package/src/sap/fe/core/type/EDM.ts +2 -2
- package/src/sap/fe/core/type/Email.js +1 -1
- package/src/sap/fe/core/type/Email.ts +1 -1
- package/src/sap/fe/core/type/FiscalDate.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.ts +2 -2
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
NavigationProperty,
|
|
7
7
|
Property,
|
|
8
8
|
PropertyPath,
|
|
9
|
+
ServiceObject,
|
|
9
10
|
Singleton
|
|
10
11
|
} from "@sap-ux/vocabularies-types";
|
|
11
12
|
import type { NavigationPropertyPath } from "@sap-ux/vocabularies-types/Edm";
|
|
@@ -18,29 +19,36 @@ import type {
|
|
|
18
19
|
EntityTypeAnnotations_Capabilities,
|
|
19
20
|
SingletonAnnotations_Capabilities
|
|
20
21
|
} from "@sap-ux/vocabularies-types/vocabularies/Capabilities_Edm";
|
|
22
|
+
import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
|
|
21
23
|
import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
22
24
|
import { constant, equal, getExpressionFromAnnotation, isConstant, unresolvableExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
23
25
|
import {
|
|
26
|
+
isAnnotationTerm,
|
|
24
27
|
isComplexType,
|
|
25
28
|
isEntitySet,
|
|
26
29
|
isEntityType,
|
|
27
30
|
isMultipleNavigationProperty,
|
|
28
31
|
isNavigationProperty,
|
|
29
32
|
isPathAnnotationExpression,
|
|
30
|
-
isProperty
|
|
33
|
+
isProperty,
|
|
34
|
+
isPropertyPathExpression,
|
|
35
|
+
isServiceObject
|
|
31
36
|
} from "sap/fe/core/helpers/TypeGuards";
|
|
32
37
|
import type { PropertyOrPath } from "sap/fe/core/templating/DisplayModeFormatter";
|
|
33
38
|
|
|
34
|
-
export type
|
|
39
|
+
export type DataModelObjectContext = {
|
|
35
40
|
startingEntitySet: Singleton | EntitySet;
|
|
36
|
-
contextLocation?: DataModelObjectPath;
|
|
37
41
|
navigationProperties: (NavigationProperty | Property)[];
|
|
38
42
|
targetEntitySet?: Singleton | EntitySet;
|
|
39
43
|
targetEntityType: EntityType;
|
|
40
|
-
targetObject: any;
|
|
41
44
|
convertedTypes: ConvertedMetadata;
|
|
42
45
|
};
|
|
43
46
|
|
|
47
|
+
export type DataModelObjectPath<T> = DataModelObjectContext & {
|
|
48
|
+
contextLocation?: DataModelObjectContext;
|
|
49
|
+
targetObject?: T;
|
|
50
|
+
};
|
|
51
|
+
|
|
44
52
|
type ExtractionParametersOnPath = {
|
|
45
53
|
propertyPath?: PropertyOrPath<Property>;
|
|
46
54
|
pathVisitor?: Function;
|
|
@@ -55,7 +63,7 @@ type ExtractionParametersOnPath = {
|
|
|
55
63
|
* @param skipCleanup Don't clean up circular navigation properties
|
|
56
64
|
* @returns The path from the root entity set
|
|
57
65
|
*/
|
|
58
|
-
export const getRelativePaths = function (contextPath: DataModelObjectPath, skipCleanup?: boolean): string[] {
|
|
66
|
+
export const getRelativePaths = function (contextPath: DataModelObjectPath<unknown> | undefined, skipCleanup?: boolean): string[] {
|
|
59
67
|
return getPathRelativeLocation(contextPath?.contextLocation, contextPath?.navigationProperties, skipCleanup).map((np) => np.name);
|
|
60
68
|
};
|
|
61
69
|
|
|
@@ -68,11 +76,11 @@ export const getRelativePaths = function (contextPath: DataModelObjectPath, skip
|
|
|
68
76
|
* @returns An array of navigation properties to reach the targeted navigation properties
|
|
69
77
|
*/
|
|
70
78
|
export const getPathRelativeLocation = function (
|
|
71
|
-
contextPath?:
|
|
79
|
+
contextPath?: DataModelObjectContext,
|
|
72
80
|
visitedNavProps: (NavigationProperty | Property)[] = [],
|
|
73
81
|
skipCleanup = false
|
|
74
82
|
): (NavigationProperty | Property)[] {
|
|
75
|
-
const cleanUpNavProp = (navProps: (NavigationProperty | Property)[]) => {
|
|
83
|
+
const cleanUpNavProp = (navProps: (NavigationProperty | Property)[]): (NavigationProperty | Property)[] => {
|
|
76
84
|
let currentIdx = 0;
|
|
77
85
|
while (navProps.length > 1 && currentIdx != navProps.length - 1) {
|
|
78
86
|
const currentNav = navProps[currentIdx];
|
|
@@ -90,7 +98,7 @@ export const getPathRelativeLocation = function (
|
|
|
90
98
|
referenceProps: (NavigationProperty | Property)[],
|
|
91
99
|
otherProps: (NavigationProperty | Property)[],
|
|
92
100
|
keepReference: boolean
|
|
93
|
-
) => {
|
|
101
|
+
): (NavigationProperty | Property)[] => {
|
|
94
102
|
const additionalNavProps: (NavigationProperty | Property)[] = [];
|
|
95
103
|
referenceProps.forEach((navProp, navIndex) => {
|
|
96
104
|
if (otherProps[navIndex] !== navProp) {
|
|
@@ -128,10 +136,10 @@ export const getPathRelativeLocation = function (
|
|
|
128
136
|
* @param propertyPath The property path or property to reach
|
|
129
137
|
* @returns A new dataModelObjectPath
|
|
130
138
|
*/
|
|
131
|
-
export const enhanceDataModelPath = function (
|
|
132
|
-
dataModelObjectPath: DataModelObjectPath,
|
|
139
|
+
export const enhanceDataModelPath = function <T>(
|
|
140
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | DataModelObjectContext,
|
|
133
141
|
propertyPath?: PropertyOrPath<Property>
|
|
134
|
-
): DataModelObjectPath {
|
|
142
|
+
): DataModelObjectPath<T> {
|
|
135
143
|
let sPropertyPath = "";
|
|
136
144
|
if (isPathAnnotationExpression(propertyPath)) {
|
|
137
145
|
sPropertyPath = propertyPath.path;
|
|
@@ -153,7 +161,7 @@ export const enhanceDataModelPath = function (
|
|
|
153
161
|
|
|
154
162
|
const pathSplits = sPropertyPath.split("/");
|
|
155
163
|
|
|
156
|
-
let newDataModelObjectPath = dataModelObjectPath
|
|
164
|
+
let newDataModelObjectPath: DataModelObjectPath<T> = dataModelObjectPath as DataModelObjectPath<T>;
|
|
157
165
|
for (const pathPart of pathSplits) {
|
|
158
166
|
newDataModelObjectPath = enhanceFromPath(newDataModelObjectPath, pathPart);
|
|
159
167
|
}
|
|
@@ -170,7 +178,7 @@ export const enhanceDataModelPath = function (
|
|
|
170
178
|
* @returns A new dataModelObjectPath
|
|
171
179
|
*/
|
|
172
180
|
|
|
173
|
-
const enhanceFromPath = function (dataModelObjectPath: DataModelObjectPath
|
|
181
|
+
const enhanceFromPath = function <T>(dataModelObjectPath: DataModelObjectPath<unknown>, path: string): DataModelObjectPath<T> {
|
|
174
182
|
let targetEntitySet: EntitySet | undefined;
|
|
175
183
|
let targetEntityType: EntityType | undefined;
|
|
176
184
|
const navigationProperties = dataModelObjectPath.navigationProperties.concat();
|
|
@@ -179,7 +187,7 @@ const enhanceFromPath = function (dataModelObjectPath: DataModelObjectPath, path
|
|
|
179
187
|
? navigationProperties[navigationIndex - 1].targetType
|
|
180
188
|
: dataModelObjectPath.targetEntityType;
|
|
181
189
|
if (!referenceEntityType) {
|
|
182
|
-
return dataModelObjectPath
|
|
190
|
+
return dataModelObjectPath as DataModelObjectPath<T>;
|
|
183
191
|
} else if (isEntityType(referenceEntityType) || isComplexType(referenceEntityType)) {
|
|
184
192
|
const currentEntitySet = dataModelObjectPath.targetEntitySet;
|
|
185
193
|
const potentialNavProp = referenceEntityType.navigationProperties.find((navProp) => navProp.name === path);
|
|
@@ -209,7 +217,7 @@ const enhanceFromPath = function (dataModelObjectPath: DataModelObjectPath, path
|
|
|
209
217
|
contextLocation: dataModelObjectPath.contextLocation,
|
|
210
218
|
targetEntitySet: targetEntitySet ?? dataModelObjectPath.targetEntitySet,
|
|
211
219
|
targetEntityType: targetEntityType ?? dataModelObjectPath.targetEntityType,
|
|
212
|
-
targetObject: dataModelObjectPath.targetObject,
|
|
220
|
+
targetObject: dataModelObjectPath.targetObject as T,
|
|
213
221
|
convertedTypes: dataModelObjectPath.convertedTypes
|
|
214
222
|
};
|
|
215
223
|
};
|
|
@@ -220,7 +228,7 @@ const enhanceFromPath = function (dataModelObjectPath: DataModelObjectPath, path
|
|
|
220
228
|
* @param dataModelObjectPath The dataModelObjectPath
|
|
221
229
|
* @returns Is there a complexType into the DataModelObjectPath.
|
|
222
230
|
*/
|
|
223
|
-
const containsAComplexType = function (dataModelObjectPath:
|
|
231
|
+
const containsAComplexType = function (dataModelObjectPath: DataModelObjectContext): boolean {
|
|
224
232
|
return dataModelObjectPath.navigationProperties.find((navigation) => isComplexType(navigation?.targetType)) !== undefined;
|
|
225
233
|
};
|
|
226
234
|
|
|
@@ -257,7 +265,7 @@ const getNavigationBindingFromPreviousEntitySet = function (navigationProperties
|
|
|
257
265
|
* @param dataModelObjectPath The dataModelObjectPath
|
|
258
266
|
* @returns The path.
|
|
259
267
|
*/
|
|
260
|
-
export const getTargetEntitySetPath = function (dataModelObjectPath: DataModelObjectPath): string {
|
|
268
|
+
export const getTargetEntitySetPath = function (dataModelObjectPath: DataModelObjectPath<unknown>): string {
|
|
261
269
|
const initialPath = `/${dataModelObjectPath.startingEntitySet.name}`;
|
|
262
270
|
let targetEntitySetPath = initialPath;
|
|
263
271
|
let currentEntitySet = dataModelObjectPath.startingEntitySet;
|
|
@@ -283,7 +291,7 @@ export const getTargetEntitySetPath = function (dataModelObjectPath: DataModelOb
|
|
|
283
291
|
* @returns The path.
|
|
284
292
|
*/
|
|
285
293
|
|
|
286
|
-
export const getTargetNavigationPath = function (dataModelObjectPath: DataModelObjectPath
|
|
294
|
+
export const getTargetNavigationPath = function (dataModelObjectPath: DataModelObjectPath<unknown>, bRelative = false): string {
|
|
287
295
|
let path = "";
|
|
288
296
|
if (!dataModelObjectPath.startingEntitySet) {
|
|
289
297
|
return "/";
|
|
@@ -305,19 +313,19 @@ export const getTargetNavigationPath = function (dataModelObjectPath: DataModelO
|
|
|
305
313
|
* @param bRelative
|
|
306
314
|
* @returns The path.
|
|
307
315
|
*/
|
|
308
|
-
export const getTargetObjectPath = function (dataModelObjectPath: DataModelObjectPath
|
|
316
|
+
export const getTargetObjectPath = function (dataModelObjectPath: DataModelObjectPath<unknown>, bRelative = false): string {
|
|
309
317
|
let path = getTargetNavigationPath(dataModelObjectPath, bRelative);
|
|
310
318
|
if (
|
|
311
|
-
dataModelObjectPath.targetObject
|
|
319
|
+
isServiceObject(dataModelObjectPath.targetObject) &&
|
|
312
320
|
!isNavigationProperty(dataModelObjectPath.targetObject) &&
|
|
313
321
|
!isEntityType(dataModelObjectPath.targetObject) &&
|
|
314
322
|
!isEntitySet(dataModelObjectPath.targetObject) &&
|
|
315
|
-
!isComplexType(dataModelObjectPath.targetObject?.targetType) &&
|
|
323
|
+
(!isProperty(dataModelObjectPath.targetObject) || !isComplexType(dataModelObjectPath.targetObject?.targetType)) &&
|
|
316
324
|
dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet
|
|
317
325
|
) {
|
|
318
326
|
path = setTrailingSlash(path);
|
|
319
327
|
path += `${dataModelObjectPath.targetObject.name}`;
|
|
320
|
-
} else if (dataModelObjectPath.targetObject && dataModelObjectPath.targetObject
|
|
328
|
+
} else if (dataModelObjectPath.targetObject && isAnnotationTerm(dataModelObjectPath.targetObject)) {
|
|
321
329
|
path = setTrailingSlash(path);
|
|
322
330
|
path += `@${dataModelObjectPath.targetObject.term}`;
|
|
323
331
|
if (dataModelObjectPath.targetObject.hasOwnProperty("qualifier") && !!dataModelObjectPath.targetObject.qualifier) {
|
|
@@ -328,7 +336,7 @@ export const getTargetObjectPath = function (dataModelObjectPath: DataModelObjec
|
|
|
328
336
|
};
|
|
329
337
|
|
|
330
338
|
export const getContextRelativeTargetObjectPath = function (
|
|
331
|
-
dataModelObjectPath: DataModelObjectPath
|
|
339
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
332
340
|
forBindingExpression = false,
|
|
333
341
|
forFilterConditionPath = false
|
|
334
342
|
): string | undefined {
|
|
@@ -339,7 +347,7 @@ export const getContextRelativeTargetObjectPath = function (
|
|
|
339
347
|
};
|
|
340
348
|
|
|
341
349
|
const _getContextRelativeTargetObjectPath = function (
|
|
342
|
-
dataModelObjectPath: DataModelObjectPath
|
|
350
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
343
351
|
forBindingExpression = false,
|
|
344
352
|
forFilterConditionPath = false
|
|
345
353
|
): string | undefined {
|
|
@@ -362,20 +370,19 @@ const _getContextRelativeTargetObjectPath = function (
|
|
|
362
370
|
: navProperties.map((navProp) => navProp.name).join("/");
|
|
363
371
|
|
|
364
372
|
if (
|
|
365
|
-
(dataModelObjectPath.targetObject.name ||
|
|
366
|
-
(dataModelObjectPath.targetObject
|
|
373
|
+
((isServiceObject(dataModelObjectPath.targetObject) && dataModelObjectPath.targetObject.name) ||
|
|
374
|
+
(isPropertyPathExpression(dataModelObjectPath.targetObject) && dataModelObjectPath.targetObject.value)) &&
|
|
367
375
|
!isNavigationProperty(dataModelObjectPath.targetObject) &&
|
|
368
376
|
!isEntityType(dataModelObjectPath.targetObject) &&
|
|
369
377
|
!isEntitySet(dataModelObjectPath.targetObject) &&
|
|
370
|
-
!isComplexType(dataModelObjectPath.targetObject?.targetType) &&
|
|
378
|
+
(!isProperty(dataModelObjectPath.targetObject) || !isComplexType(dataModelObjectPath.targetObject?.targetType)) &&
|
|
371
379
|
dataModelObjectPath.targetObject !== dataModelObjectPath.startingEntitySet
|
|
372
380
|
) {
|
|
373
381
|
path = setTrailingSlash(path);
|
|
374
|
-
path +=
|
|
375
|
-
dataModelObjectPath.targetObject.
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
} else if (dataModelObjectPath.targetObject.hasOwnProperty("term")) {
|
|
382
|
+
path += isPropertyPathExpression(dataModelObjectPath.targetObject)
|
|
383
|
+
? `${dataModelObjectPath.targetObject.value}`
|
|
384
|
+
: `${dataModelObjectPath.targetObject.name}`;
|
|
385
|
+
} else if (isAnnotationTerm(dataModelObjectPath.targetObject)) {
|
|
379
386
|
path = setTrailingSlash(path);
|
|
380
387
|
path += `@${dataModelObjectPath.targetObject.term}`;
|
|
381
388
|
if (dataModelObjectPath.targetObject.hasOwnProperty("qualifier") && !!dataModelObjectPath.targetObject.qualifier) {
|
|
@@ -394,7 +401,7 @@ const _getContextRelativeTargetObjectPath = function (
|
|
|
394
401
|
* @returns The properties.
|
|
395
402
|
*/
|
|
396
403
|
export const getContextPropertyRestriction = (
|
|
397
|
-
dataModelObjectPath: DataModelObjectPath
|
|
404
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
398
405
|
checkFunction: (
|
|
399
406
|
capabilities: EntitySetAnnotations_Capabilities | SingletonAnnotations_Capabilities | undefined
|
|
400
407
|
) => PropertyPath[] | undefined,
|
|
@@ -407,7 +414,7 @@ export const getContextPropertyRestriction = (
|
|
|
407
414
|
};
|
|
408
415
|
|
|
409
416
|
export const isPathUpdatable = function (
|
|
410
|
-
dataModelObjectPath: DataModelObjectPath | undefined,
|
|
417
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | undefined,
|
|
411
418
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
412
419
|
): BindingToolkitExpression<boolean> {
|
|
413
420
|
return checkOnPath(
|
|
@@ -427,7 +434,7 @@ export const isPathUpdatable = function (
|
|
|
427
434
|
* @returns The parent navigation property.
|
|
428
435
|
*/
|
|
429
436
|
export const getHierarchyParentNavigationPropertyPath = function (
|
|
430
|
-
dataModelObjectPath: DataModelObjectPath
|
|
437
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
431
438
|
hierarchyQualifier: string
|
|
432
439
|
): string | undefined {
|
|
433
440
|
return dataModelObjectPath.targetEntityType.annotations.Aggregation?.[`RecursiveHierarchy#${hierarchyQualifier}`]
|
|
@@ -440,15 +447,18 @@ export const getHierarchyParentNavigationPropertyPath = function (
|
|
|
440
447
|
* @param dataModelObjectPath The dataModelObjectPath
|
|
441
448
|
* @returns The navigation properties with the restriction.
|
|
442
449
|
*/
|
|
443
|
-
export const getNonUpdatableNavigationProperties = function (
|
|
450
|
+
export const getNonUpdatableNavigationProperties = function (
|
|
451
|
+
dataModelObjectPath: DataModelObjectPath<PageContextPathTarget>
|
|
452
|
+
): (string | undefined)[] | undefined {
|
|
444
453
|
// UpdateRestrictions.NonUpdatableNavigationProperties on the parent navigation:
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
454
|
+
// REVIEW: This is wrong ? the updateRestriction annotation needs to be on entityset but our test sometimes put it on the navigation property
|
|
455
|
+
const nonUpdatableNavigationProperties = (dataModelObjectPath.targetObject as EntitySet)?.annotations?.Capabilities?.UpdateRestrictions
|
|
456
|
+
?.NonUpdatableNavigationProperties;
|
|
457
|
+
if (nonUpdatableNavigationProperties && nonUpdatableNavigationProperties?.length > 0) {
|
|
448
458
|
return nonUpdatableNavigationProperties.map(
|
|
449
459
|
(nonUpdatableNavigationProperty: NavigationPropertyPath) =>
|
|
450
460
|
dataModelObjectPath.contextLocation &&
|
|
451
|
-
enhanceDataModelPath(dataModelObjectPath.contextLocation, nonUpdatableNavigationProperty.value).targetObject
|
|
461
|
+
enhanceDataModelPath<ServiceObject>(dataModelObjectPath.contextLocation, nonUpdatableNavigationProperty.value).targetObject!
|
|
452
462
|
.fullyQualifiedName
|
|
453
463
|
);
|
|
454
464
|
}
|
|
@@ -459,7 +469,7 @@ export const getNonUpdatableNavigationProperties = function (dataModelObjectPath
|
|
|
459
469
|
};
|
|
460
470
|
|
|
461
471
|
export const isPathSearchable = function (
|
|
462
|
-
dataModelObjectPath: DataModelObjectPath | undefined,
|
|
472
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | undefined,
|
|
463
473
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
464
474
|
): BindingToolkitExpression<boolean> {
|
|
465
475
|
return checkOnPath(
|
|
@@ -472,7 +482,7 @@ export const isPathSearchable = function (
|
|
|
472
482
|
};
|
|
473
483
|
|
|
474
484
|
export const isPathDeletable = function (
|
|
475
|
-
dataModelObjectPath: DataModelObjectPath | undefined,
|
|
485
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | undefined,
|
|
476
486
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
477
487
|
): BindingToolkitExpression<boolean> {
|
|
478
488
|
return checkOnPath(
|
|
@@ -485,7 +495,7 @@ export const isPathDeletable = function (
|
|
|
485
495
|
};
|
|
486
496
|
|
|
487
497
|
export const isPathInsertable = function (
|
|
488
|
-
dataModelObjectPath: DataModelObjectPath | undefined,
|
|
498
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | undefined,
|
|
489
499
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
490
500
|
): BindingToolkitExpression<boolean> {
|
|
491
501
|
return checkOnPath(
|
|
@@ -498,7 +508,7 @@ export const isPathInsertable = function (
|
|
|
498
508
|
};
|
|
499
509
|
|
|
500
510
|
export const isPathFilterable = function (
|
|
501
|
-
dataModelObjectPath: DataModelObjectPath | undefined,
|
|
511
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | undefined,
|
|
502
512
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
503
513
|
): BindingToolkitExpression<boolean> {
|
|
504
514
|
return checkOnPath(
|
|
@@ -511,7 +521,7 @@ export const isPathFilterable = function (
|
|
|
511
521
|
};
|
|
512
522
|
|
|
513
523
|
export const checkFilterExpressionRestrictions = function (
|
|
514
|
-
dataModelObjectPath: DataModelObjectPath
|
|
524
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
515
525
|
allowedExpression: (string | undefined)[]
|
|
516
526
|
): BindingToolkitExpression<boolean> {
|
|
517
527
|
return checkOnPath(
|
|
@@ -545,7 +555,7 @@ type EntityOrSingleton = Singleton | EntitySet | null;
|
|
|
545
555
|
* @returns The target entityset, its parent and the navigation path
|
|
546
556
|
*/
|
|
547
557
|
export const getTargetEntitySetInfo = (
|
|
548
|
-
dataModelObjectPath: DataModelObjectPath
|
|
558
|
+
dataModelObjectPath: DataModelObjectPath<unknown>
|
|
549
559
|
): {
|
|
550
560
|
parentEntitySet: EntityOrSingleton;
|
|
551
561
|
targetEntitySet: EntityOrSingleton;
|
|
@@ -596,7 +606,7 @@ export const getTargetEntitySetInfo = (
|
|
|
596
606
|
* @returns The binding expression.
|
|
597
607
|
*/
|
|
598
608
|
const checkOnParentNavigation = (
|
|
599
|
-
dataModelObjectPath: DataModelObjectPath
|
|
609
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
600
610
|
checkFunction: Function,
|
|
601
611
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
602
612
|
): BindingToolkitExpression<boolean> | undefined => {
|
|
@@ -647,7 +657,7 @@ const checkOnParentNavigation = (
|
|
|
647
657
|
* @returns The binding expression.
|
|
648
658
|
*/
|
|
649
659
|
const checkOnTarget = (
|
|
650
|
-
dataModelObjectPath: DataModelObjectPath
|
|
660
|
+
dataModelObjectPath: DataModelObjectPath<unknown>,
|
|
651
661
|
checkFunction: Function,
|
|
652
662
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
653
663
|
): BindingToolkitExpression<boolean> | undefined => {
|
|
@@ -681,7 +691,7 @@ const checkOnTarget = (
|
|
|
681
691
|
* @returns The binding expression.
|
|
682
692
|
*/
|
|
683
693
|
export const checkOnPath = function (
|
|
684
|
-
dataModelObjectPath: DataModelObjectPath | undefined,
|
|
694
|
+
dataModelObjectPath: DataModelObjectPath<unknown> | undefined,
|
|
685
695
|
checkFunction: Function,
|
|
686
696
|
extractionParametersOnPath?: ExtractionParametersOnPath
|
|
687
697
|
): BindingToolkitExpression<boolean> {
|
|
@@ -708,7 +718,7 @@ export const checkOnPath = function (
|
|
|
708
718
|
* @param path The path
|
|
709
719
|
* @returns The path with a trailing slash
|
|
710
720
|
*/
|
|
711
|
-
const setTrailingSlash = function (path: string) {
|
|
721
|
+
const setTrailingSlash = function (path: string): string {
|
|
712
722
|
if (path.length && !path.endsWith("/")) {
|
|
713
723
|
return `${path}/`;
|
|
714
724
|
}
|
|
@@ -718,7 +728,7 @@ const setTrailingSlash = function (path: string) {
|
|
|
718
728
|
// This helper method is used to add relative path location argument to singletonPathVisitorFunction i.e. pathVisitor
|
|
719
729
|
// pathVisitor method is used later to get the correct bindings for singleton entity
|
|
720
730
|
// method is invoked later in pathInModel() method to get the correct binding.
|
|
721
|
-
const getPathVisitorForSingleton = function (pathVisitor: Function, pathRelativeLocation: string[]) {
|
|
731
|
+
const getPathVisitorForSingleton = function (pathVisitor: Function, pathRelativeLocation: string[]): Function {
|
|
722
732
|
return function (path: string) {
|
|
723
733
|
return pathVisitor(path, pathRelativeLocation);
|
|
724
734
|
};
|
|
@@ -53,4 +53,4 @@ sap.ui.define(["sap/fe/core/helpers/TypeGuards"], function (TypeGuards) {
|
|
|
53
53
|
_exports.getDisplayMode = getDisplayMode;
|
|
54
54
|
return _exports;
|
|
55
55
|
}, false);
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPREFUQV9UWVBFX01BUFBJTkciLCJnZXREaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YU1vZGVsT2JqZWN0UGF0aCIsIm9Qcm9wZXJ0eSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiJHRhcmdldCIsIm9FbnRpdHlUeXBlIiwidGFyZ2V0RW50aXR5VHlwZSIsIm9UZXh0QW5ub3RhdGlvbiIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiVGV4dCIsIm9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uIiwiVUkiLCJUZXh0QXJyYW5nZW1lbnQiLCJ0b1N0cmluZyIsInNEaXNwbGF5VmFsdWUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRpc3BsYXlNb2RlRm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VwYXJhdGluZyB0aGVzZSBtZXRob2RzIGZyb20gdGhlIFVJRm9ybWF0dGVycyBhcyB0aGV5IGFyZSB1c2VkIGFsc28gaW4gdGhlIGNvbnZlcnRlci5cbiAqIFRoZXNlIG1ldGhvZHMgbXVzdCBOT1QgdXNlIGFueSBkZXBlbmRlbmN5IGZyb20gdGhlIFNBUCBVSTUgcnVudGltZS5cbiAqIFdoZW4gY29uc3VtZWQgb3V0c2lkZSBvZiBjb252ZXJ0ZXJzLCB5b3Ugc2hvdWxkIGNhbGwgdGhlbSB2aWEgVUlGb3JtYXR0ZXJzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uUGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHsgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgRGF0YVBvaW50VHlwZVR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgUHJvcGVydHlPclBhdGg8UD4gPSBzdHJpbmcgfCBQIHwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFA+IHwgQW5ub3RhdGlvblBhdGg8UD47XG5cbmV4cG9ydCBjb25zdCBPREFUQV9UWVBFX01BUFBJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQm9vbGVhblwiOiBcIkVkbS5Cb29sZWFuXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQnl0ZVwiOiBcIkVkbS5CeXRlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVwiOiBcIkVkbS5EYXRlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIjogXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EZWNpbWFsXCI6IFwiRWRtLkRlY2ltYWxcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIjogXCJFZG0uRG91YmxlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuR3VpZFwiOiBcIkVkbS5HdWlkXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50MTZcIjogXCJFZG0uSW50MTZcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQzMlwiOiBcIkVkbS5JbnQzMlwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDY0XCI6IFwiRWRtLkludDY0XCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU0J5dGVcIjogXCJFZG0uU0J5dGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TaW5nbGVcIjogXCJFZG0uU2luZ2xlXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyZWFtXCI6IFwiRWRtLlN0cmVhbVwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlRpbWVPZkRheVwiOiBcIkVkbS5UaW1lT2ZEYXlcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcIjogXCJFZG0uU3RyaW5nXCJcbn07XG5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gXCJWYWx1ZVwiIHwgXCJEZXNjcmlwdGlvblwiIHwgXCJEZXNjcmlwdGlvblZhbHVlXCIgfCBcIlZhbHVlRGVzY3JpcHRpb25cIjtcbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzPiB8IHVuZGVmaW5lZCxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcz5cbik6IERpc3BsYXlNb2RlIHtcblx0aWYgKCFvUHJvcGVydHlQYXRoIHx8IHR5cGVvZiBvUHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIFwiVmFsdWVcIjtcblx0fVxuXHRjb25zdCBvUHJvcGVydHkgPVxuXHRcdCgoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgfHwgaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8XG5cdFx0KG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCBvRW50aXR5VHlwZSA9IG9EYXRhTW9kZWxPYmplY3RQYXRoICYmIG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9XG5cdFx0KHR5cGVvZiBvVGV4dEFubm90YXRpb24gIT09IFwic3RyaW5nXCIgJiYgb1RleHRBbm5vdGF0aW9uPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkgfHxcblx0XHRvRW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCk7XG5cblx0bGV0IHNEaXNwbGF5VmFsdWUgPSBvVGV4dEFubm90YXRpb24gPyBcIkRlc2NyaXB0aW9uVmFsdWVcIiA6IFwiVmFsdWVcIjtcblx0aWYgKChvVGV4dEFubm90YXRpb24gJiYgb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24pIHx8IG9FbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkge1xuXHRcdGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRPbmx5XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIkRlc2NyaXB0aW9uXCI7XG5cdFx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRMYXN0XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlRGVzY3JpcHRpb25cIjtcblx0XHR9IGVsc2UgaWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uID09PSBcIlVJLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dFNlcGFyYXRlXCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vRGVmYXVsdCBzaG91bGQgYmUgVGV4dEZpcnN0IGlmIHRoZXJlIGlzIGEgVGV4dCBhbm5vdGF0aW9uIGFuZCBuZWl0aGVyIFRleHRPbmx5IG5vciBUZXh0TGFzdCBhcmUgc2V0XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJEZXNjcmlwdGlvblZhbHVlXCI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzRGlzcGxheVZhbHVlIGFzIERpc3BsYXlNb2RlO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7OztFQWNPLE1BQU1BLGtCQUEwQyxHQUFHO0lBQ3pELGlDQUFpQyxFQUFFLGFBQWE7SUFDaEQsOEJBQThCLEVBQUUsVUFBVTtJQUMxQyw4QkFBOEIsRUFBRSxVQUFVO0lBQzFDLHdDQUF3QyxFQUFFLG9CQUFvQjtJQUM5RCxpQ0FBaUMsRUFBRSxhQUFhO0lBQ2hELGdDQUFnQyxFQUFFLFlBQVk7SUFDOUMsOEJBQThCLEVBQUUsVUFBVTtJQUMxQywrQkFBK0IsRUFBRSxXQUFXO0lBQzVDLCtCQUErQixFQUFFLFdBQVc7SUFDNUMsK0JBQStCLEVBQUUsV0FBVztJQUM1QywrQkFBK0IsRUFBRSxXQUFXO0lBQzVDLGdDQUFnQyxFQUFFLFlBQVk7SUFDOUMsZ0NBQWdDLEVBQUUsWUFBWTtJQUM5QyxtQ0FBbUMsRUFBRSxlQUFlO0lBQ3BELGdDQUFnQyxFQUFFO0VBQ25DLENBQUM7RUFBQztFQUdLLE1BQU1DLGNBQWMsR0FBRyxVQUM3QkMsYUFBaUcsRUFDakdDLG9CQUFrRyxFQUNwRjtJQUFBO0lBQ2QsSUFBSSxDQUFDRCxhQUFhLElBQUksT0FBT0EsYUFBYSxLQUFLLFFBQVEsRUFBRTtNQUN4RCxPQUFPLE9BQU87SUFDZjtJQUNBLE1BQU1FLFNBQVMsR0FDYixDQUFDQywwQkFBMEIsQ0FBQ0gsYUFBYSxDQUFDLElBQUlJLHdCQUF3QixDQUFDSixhQUFhLENBQUMsS0FBS0EsYUFBYSxDQUFDSyxPQUFPLElBQy9HTCxhQUEwQjtJQUM1QixNQUFNTSxXQUFXLEdBQUdMLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ00sZ0JBQWdCO0lBQ2pGLE1BQU1DLGVBQWUsNEJBQUdOLFNBQVMsQ0FBQ08sV0FBVyxvRkFBckIsc0JBQXVCQyxNQUFNLDJEQUE3Qix1QkFBK0JDLElBQUk7SUFDM0QsTUFBTUMsMEJBQTBCLEdBQzlCLE9BQU9KLGVBQWUsS0FBSyxRQUFRLEtBQUlBLGVBQWUsYUFBZkEsZUFBZSxnREFBZkEsZUFBZSxDQUFFQyxXQUFXLG9GQUE1QixzQkFBOEJJLEVBQUUscUZBQWhDLHVCQUFrQ0MsZUFBZSwyREFBakQsdUJBQW1EQyxRQUFRLEVBQUUsTUFDckdULFdBQVcsYUFBWEEsV0FBVyxnREFBWEEsV0FBVyxDQUFFRyxXQUFXLG9GQUF4QixzQkFBMEJJLEVBQUUscUZBQTVCLHVCQUE4QkMsZUFBZSwyREFBN0MsdUJBQStDQyxRQUFRLEVBQUU7SUFFMUQsSUFBSUMsYUFBYSxHQUFHUixlQUFlLEdBQUcsa0JBQWtCLEdBQUcsT0FBTztJQUNsRSxJQUFLQSxlQUFlLElBQUlJLDBCQUEwQixJQUFLTixXQUFXLGFBQVhBLFdBQVcseUNBQVhBLFdBQVcsQ0FBRUcsV0FBVyw2RUFBeEIsdUJBQTBCSSxFQUFFLDZFQUE1Qix1QkFBOEJDLGVBQWUsbURBQTdDLHVCQUErQ0MsUUFBUSxFQUFFLEVBQUU7TUFDakgsSUFBSUgsMEJBQTBCLEtBQUssaUNBQWlDLEVBQUU7UUFDckVJLGFBQWEsR0FBRyxhQUFhO01BQzlCLENBQUMsTUFBTSxJQUFJSiwwQkFBMEIsS0FBSyxpQ0FBaUMsRUFBRTtRQUM1RUksYUFBYSxHQUFHLGtCQUFrQjtNQUNuQyxDQUFDLE1BQU0sSUFBSUosMEJBQTBCLEtBQUsscUNBQXFDLEVBQUU7UUFDaEZJLGFBQWEsR0FBRyxPQUFPO01BQ3hCLENBQUMsTUFBTTtRQUNOO1FBQ0FBLGFBQWEsR0FBRyxrQkFBa0I7TUFDbkM7SUFDRDtJQUNBLE9BQU9BLGFBQWE7RUFDckIsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9
|
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type { PathAnnotationExpression, Property } from "@sap-ux/vocabularies-types";
|
|
8
|
+
import type { AnnotationPath } from "@sap-ux/vocabularies-types/Edm";
|
|
9
|
+
import type { DataFieldAbstractTypes, DataPointTypeTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
8
10
|
import { isPathAnnotationExpression, isPropertyPathExpression } from "sap/fe/core/helpers/TypeGuards";
|
|
9
11
|
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
10
12
|
|
|
11
|
-
export type PropertyOrPath<P> = string | P | PathAnnotationExpression<P>;
|
|
13
|
+
export type PropertyOrPath<P> = string | P | PathAnnotationExpression<P> | AnnotationPath<P>;
|
|
12
14
|
|
|
13
|
-
export const ODATA_TYPE_MAPPING: Record<string,
|
|
15
|
+
export const ODATA_TYPE_MAPPING: Record<string, string> = {
|
|
14
16
|
"sap.ui.model.odata.type.Boolean": "Edm.Boolean",
|
|
15
17
|
"sap.ui.model.odata.type.Byte": "Edm.Byte",
|
|
16
18
|
"sap.ui.model.odata.type.Date": "Edm.Date",
|
|
@@ -29,7 +31,10 @@ export const ODATA_TYPE_MAPPING: Record<string, any> = {
|
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
export type DisplayMode = "Value" | "Description" | "DescriptionValue" | "ValueDescription";
|
|
32
|
-
export const getDisplayMode = function (
|
|
34
|
+
export const getDisplayMode = function (
|
|
35
|
+
oPropertyPath: PropertyOrPath<Property | DataFieldAbstractTypes | DataPointTypeTypes> | undefined,
|
|
36
|
+
oDataModelObjectPath?: DataModelObjectPath<Property | DataFieldAbstractTypes | DataPointTypeTypes>
|
|
37
|
+
): DisplayMode {
|
|
33
38
|
if (!oPropertyPath || typeof oPropertyPath === "string") {
|
|
34
39
|
return "Value";
|
|
35
40
|
}
|
|
@@ -45,4 +45,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/BindingToolkit"], function (
|
|
|
45
45
|
_exports.getTitleExpression = getTitleExpression;
|
|
46
46
|
return _exports;
|
|
47
47
|
}, false);
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRUaXRsZUV4cHJlc3Npb24iLCJlbnRpdHlUeXBlIiwiaGVhZGVySW5mb1RpdGxlIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhlYWRlckluZm8iLCJUaXRsZSIsIiRUeXBlIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiVmFsdWUiLCJMb2ciLCJlcnJvciIsIlR5cGVOYW1lIiwic2VtYW50aWNLZXlzIiwiQ29tbW9uIiwiU2VtYW50aWNLZXkiLCJjb25jYXQiLCJtYXAiLCJrZXkiLCJwYXRoSW5Nb2RlbCIsInZhbHVlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFbnRpdHlUeXBlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZEZvckFubm90YXRpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29uY2F0LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcblxuLy8gQ29sbGVjdGlvbiBvZiBoZWxwZXIgZnVuY3Rpb25zIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGZyb20gYW4gRW50aXR5VHlwZS5cblxuLy8gVGhpcyBpcyBzdGlsbCBhIHdvcmsgaW4gcHJvZ3Jlc3NcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHJlcXVpcmVkIHRvIGRpc3BsYXkgdGhlIHRpdGxlIG9mIGFuIGVudGl0eS5cbiAqXG4gKiBUaGlzIGlzIHVzdWFsbHkgZGVmaW5lZCBhczpcbiAqICAtIHRoZSBIZWFkZXJJbmZvLlRpdGxlIHZhbHVlXG4gKiAgLSB0aGUgU2VtYW50aWNLZXlzIHByb3BlcnRpZXNcbiAqICAtIHRoZSBrZXlzIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIGVudGl0eVR5cGUgVGhlIHRhcmdldCBlbnRpdHlUeXBlXG4gKiBAcmV0dXJucyBUaGUgdGl0bGUgYmluZGluZyBleHByZXNzaW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUaXRsZUV4cHJlc3Npb24gPSAoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjx1bmtub3duPiB8IHVuZGVmaW5lZCA9PiB7XG5cdC8vIEhlYWRlckluZm8gY2FuIGJlIGEgW0RhdGFGaWVsZF0gYW5kIGFueSBvZiBpdHMgY2hpbGRyZW4sIG9yIGEgW0RhdGFGaWVsZEZvckFubm90YXRpb25dIHRhcmdldGluZyBbQ29ubmVjdGVkRmllbGRzXSgjQ29ubmVjdGVkRmllbGRzKS5cblx0Y29uc3QgaGVhZGVySW5mb1RpdGxlID0gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckluZm8/LlRpdGxlIGFzIERhdGFGaWVsZCB8IERhdGFGaWVsZEZvckFubm90YXRpb247XG5cdGlmIChoZWFkZXJJbmZvVGl0bGUpIHtcblx0XHRzd2l0Y2ggKGhlYWRlckluZm9UaXRsZS4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQ6XG5cdFx0XHRcdHJldHVybiBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oaGVhZGVySW5mb1RpdGxlLlZhbHVlKTtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjpcblx0XHRcdFx0TG9nLmVycm9yKFwiRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiB3aXRoIGNvbm5lY3RlZCBmaWVsZHMgbm90IHN1cHBvcnRlZCBmb3IgSGVhZGVySW5mby5UaXRsZVwiKTtcblx0XHRcdFx0cmV0dXJuIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uSGVhZGVySW5mbz8uVHlwZU5hbWUpO1xuXHRcdH1cblx0fVxuXHRjb25zdCBzZW1hbnRpY0tleXMgPSBlbnRpdHlUeXBlLmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljS2V5O1xuXHRpZiAoc2VtYW50aWNLZXlzKSB7XG5cdFx0cmV0dXJuIGNvbmNhdCguLi5zZW1hbnRpY0tleXMubWFwKChrZXkpID0+IHBhdGhJbk1vZGVsKGtleS52YWx1ZSkpKTtcblx0fVxufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFPQTs7RUFFQTs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sTUFBTUEsa0JBQWtCLEdBQUlDLFVBQXNCLElBQW9EO0lBQUE7SUFDNUc7SUFDQSxNQUFNQyxlQUFlLDRCQUFHRCxVQUFVLENBQUNFLFdBQVcsb0ZBQXRCLHNCQUF3QkMsRUFBRSxxRkFBMUIsdUJBQTRCQyxVQUFVLDJEQUF0Qyx1QkFBd0NDLEtBQTJDO0lBQzNHLElBQUlKLGVBQWUsRUFBRTtNQUNwQixRQUFRQSxlQUFlLENBQUNLLEtBQUs7UUFDNUI7VUFDQyxPQUFPQywyQkFBMkIsQ0FBQ04sZUFBZSxDQUFDTyxLQUFLLENBQUM7UUFDMUQ7VUFDQ0MsR0FBRyxDQUFDQyxLQUFLLENBQUMsaUZBQWlGLENBQUM7VUFDNUYsT0FBT0gsMkJBQTJCLDJCQUFDUCxVQUFVLENBQUNFLFdBQVcscUZBQXRCLHVCQUF3QkMsRUFBRSxxRkFBMUIsdUJBQTRCQyxVQUFVLDJEQUF0Qyx1QkFBd0NPLFFBQVEsQ0FBQztNQUFDO0lBRXhGO0lBQ0EsTUFBTUMsWUFBWSw2QkFBR1osVUFBVSxDQUFDRSxXQUFXLHFGQUF0Qix1QkFBd0JXLE1BQU0sMkRBQTlCLHVCQUFnQ0MsV0FBVztJQUNoRSxJQUFJRixZQUFZLEVBQUU7TUFDakIsT0FBT0csTUFBTSxDQUFDLEdBQUdILFlBQVksQ0FBQ0ksR0FBRyxDQUFFQyxHQUFHLElBQUtDLFdBQVcsQ0FBQ0QsR0FBRyxDQUFDRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BFO0VBQ0QsQ0FBQztFQUFDO0VBQUE7QUFBQSJ9
|
|
@@ -20,7 +20,7 @@ import { concat, getExpressionFromAnnotation, pathInModel } from "sap/fe/core/he
|
|
|
20
20
|
* @param entityType The target entityType
|
|
21
21
|
* @returns The title binding expression
|
|
22
22
|
*/
|
|
23
|
-
export const getTitleExpression = (entityType: EntityType): BindingToolkitExpression<
|
|
23
|
+
export const getTitleExpression = (entityType: EntityType): BindingToolkitExpression<unknown> | undefined => {
|
|
24
24
|
// HeaderInfo can be a [DataField] and any of its children, or a [DataFieldForAnnotation] targeting [ConnectedFields](#ConnectedFields).
|
|
25
25
|
const headerInfoTitle = entityType.annotations?.UI?.HeaderInfo?.Title as DataField | DataFieldForAnnotation;
|
|
26
26
|
if (headerInfoTitle) {
|
|
@@ -83,7 +83,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "../converters/annotations/
|
|
|
83
83
|
_exports.hasFieldControlNotMandatory = hasFieldControlNotMandatory;
|
|
84
84
|
function isStaticallyMandatory(target) {
|
|
85
85
|
var _target$annotations, _target$annotations$C, _Value, _Value$$target, _Value$$target$annota, _Value$$target$annota2, _Value$$target$annota3;
|
|
86
|
-
const fieldFieldControl = (_target$annotations = target.annotations) === null || _target$annotations === void 0 ? void 0 : (_target$annotations$C = _target$annotations.Common) === null || _target$annotations$C === void 0 ? void 0 : _target$annotations$C.FieldControl;
|
|
86
|
+
const fieldFieldControl = target === null || target === void 0 ? void 0 : (_target$annotations = target.annotations) === null || _target$annotations === void 0 ? void 0 : (_target$annotations$C = _target$annotations.Common) === null || _target$annotations$C === void 0 ? void 0 : _target$annotations$C.FieldControl;
|
|
87
87
|
if (isProperty(target) || isDataFieldForAnnotation(target)) {
|
|
88
88
|
return (fieldFieldControl === null || fieldFieldControl === void 0 ? void 0 : fieldFieldControl.toString()) === "Common.FieldControlType/Mandatory";
|
|
89
89
|
}
|
|
@@ -111,7 +111,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "../converters/annotations/
|
|
|
111
111
|
_exports.isStaticallyMandatory = isStaticallyMandatory;
|
|
112
112
|
const isRequiredExpression = function (oTarget, relativePath) {
|
|
113
113
|
var _oTarget$annotations4, _oTarget$annotations5;
|
|
114
|
-
const oFieldControlValue = (_oTarget$annotations4 = oTarget.annotations) === null || _oTarget$annotations4 === void 0 ? void 0 : (_oTarget$annotations5 = _oTarget$annotations4.Common) === null || _oTarget$annotations5 === void 0 ? void 0 : _oTarget$annotations5.FieldControl;
|
|
114
|
+
const oFieldControlValue = oTarget === null || oTarget === void 0 ? void 0 : (_oTarget$annotations4 = oTarget.annotations) === null || _oTarget$annotations4 === void 0 ? void 0 : (_oTarget$annotations5 = _oTarget$annotations4.Common) === null || _oTarget$annotations5 === void 0 ? void 0 : _oTarget$annotations5.FieldControl;
|
|
115
115
|
const fieldControlValue = getExpressionFromAnnotation(oFieldControlValue, relativePath);
|
|
116
116
|
return _isRequiredExpression(fieldControlValue);
|
|
117
117
|
};
|
|
@@ -138,4 +138,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "../converters/annotations/
|
|
|
138
138
|
};
|
|
139
139
|
return _exports;
|
|
140
140
|
}, false);
|
|
141
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsIm9UYXJnZXQiLCJyZWxhdGl2ZVBhdGgiLCJmaWVsZENvbnRyb2xFeHByZXNzaW9uIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJGaWVsZENvbnRyb2wiLCJpc0NvbnN0YW50Iiwib3IiLCJlcXVhbCIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiaXNOb25FZGl0YWJsZUV4cHJlc3Npb24iLCJoYXNGaWVsZENvbnRyb2xOb3RNYW5kYXRvcnkiLCJkYXRhRmllbGRGb3JBbm5vdGF0aW9uIiwiZmllbGRDb250cm9sIiwidG9TdHJpbmciLCJpc1N0YXRpY2FsbHlNYW5kYXRvcnkiLCJ0YXJnZXQiLCJmaWVsZEZpZWxkQ29udHJvbCIsImlzUHJvcGVydHkiLCJpc0RhdGFGaWVsZEZvckFubm90YXRpb24iLCJpc0RhdGFGaWVsZCIsInVuZGVmaW5lZCIsIlZhbHVlIiwiJHRhcmdldCIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwib0ZpZWxkQ29udHJvbFZhbHVlIiwiZmllbGRDb250cm9sVmFsdWUiLCJfaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiIsImFjdGlvblBhcmFtZXRlciIsImFjdGlvblRhcmdldCIsImNvbnZlcnRlZFR5cGVzIiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiaXNCb3VuZCIsInBhcmFtZXRlcnMiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJmaWVsZENvbnRyb2xFeHAiLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRDb250cm9sSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBBY3Rpb25QYXJhbWV0ZXIsIENvbnZlcnRlZE1ldGFkYXRhLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZEZvckFubm90YXRpb24sIERhdGFQb2ludCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlzQ29uc3RhbnQsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGlzRGF0YUZpZWxkLCBpc0RhdGFGaWVsZEZvckFubm90YXRpb24gfSBmcm9tIFwiLi4vY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB7IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IgfSBmcm9tIFwiLi4vaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcIi4uL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyByZWFkIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVhZE9ubHlFeHByZXNzaW9uID0gZnVuY3Rpb24gKG9UYXJnZXQ6IFByb3BlcnR5IHwgdW5kZWZpbmVkLCByZWxhdGl2ZVBhdGg/OiBzdHJpbmdbXSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGZpZWxkQ29udHJvbEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sLCByZWxhdGl2ZVBhdGgpO1xuXHRpZiAoIWlzQ29uc3RhbnQoZmllbGRDb250cm9sRXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gb3IoZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgMSksIGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiMVwiKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG9yKFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9SZWFkT25seVwiKSxcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDEpLFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCIxXCIpXG5cdFx0KTtcblx0fVxufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgZGlzYWJsZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyBkaXNhYmxlZFxuICovXG5leHBvcnQgY29uc3QgaXNEaXNhYmxlZEV4cHJlc3Npb24gPSBmdW5jdGlvbiAob1RhcmdldDogUHJvcGVydHksIHJlbGF0aXZlUGF0aD86IHN0cmluZ1tdKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgZmllbGRDb250cm9sRXhwcmVzc2lvbiA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvVGFyZ2V0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5GaWVsZENvbnRyb2wsIHJlbGF0aXZlUGF0aCk7XG5cdGlmICghaXNDb25zdGFudChmaWVsZENvbnRyb2xFeHByZXNzaW9uKSkge1xuXHRcdHJldHVybiBvcihlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCAwKSwgZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCIwXCIpKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gb3IoXG5cdFx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL0luYXBwbGljYWJsZVwiKSxcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDApLFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCIwXCIpXG5cdFx0KTtcblx0fVxufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgZWRpdGFibGUgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyBub3QgZWRpdGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTm9uRWRpdGFibGVFeHByZXNzaW9uID0gZnVuY3Rpb24gKG9UYXJnZXQ6IFByb3BlcnR5LCByZWxhdGl2ZVBhdGg/OiBzdHJpbmdbXSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBvcihpc1JlYWRPbmx5RXhwcmVzc2lvbihvVGFyZ2V0LCByZWxhdGl2ZVBhdGgpLCBpc0Rpc2FibGVkRXhwcmVzc2lvbihvVGFyZ2V0LCByZWxhdGl2ZVBhdGgpKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBoYXMgYSBmaWVsZENvbnRyb2wgdGhhdCBpcyBub3Qgc2V0IHRvIE1hbmRhdG9yeS5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBUaGUgZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBiZWluZyBwcm9jZXNzZWRcbiAqIEByZXR1cm5zIFRydWUgaWYgaXQgaGFzIGEgZmllbGRDb250cm9sIHNldCBhbmQgbm90IE1hbmRhdG9yeS5cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZpZWxkQ29udHJvbE5vdE1hbmRhdG9yeSA9IGZ1bmN0aW9uIChkYXRhRmllbGRGb3JBbm5vdGF0aW9uOiBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKTogYm9vbGVhbiB7XG5cdGNvbnN0IGZpZWxkQ29udHJvbCA9IGRhdGFGaWVsZEZvckFubm90YXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRyZXR1cm4gZmllbGRDb250cm9sICYmIGZpZWxkQ29udHJvbC50b1N0cmluZygpICE9PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiID8gdHJ1ZSA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXJnZXQgaGFzIGEgZmllbGQgY29udHJvbCBhbm5vdGF0aW9uIHdpdGggc3RhdGljIHZhbHVlIG1hbmRhdG9yeSAuXG4gKlxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHRvIGJlIHByb2Nlc3NlZFxuICogQHJldHVybnMgVHJ1ZSBpZiBpdCBoYXMgYSBzdGF0aWMgbWFuZGF0b3J5IGZpZWxkIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY2FsbHlNYW5kYXRvcnkodGFyZ2V0OiBEYXRhRmllbGQgfCBEYXRhRmllbGRGb3JBbm5vdGF0aW9uIHwgRGF0YVBvaW50IHwgUHJvcGVydHkpOiBib29sZWFuIHtcblx0Y29uc3QgZmllbGRGaWVsZENvbnRyb2wgPSB0YXJnZXQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRpZiAoaXNQcm9wZXJ0eSh0YXJnZXQpIHx8IGlzRGF0YUZpZWxkRm9yQW5ub3RhdGlvbih0YXJnZXQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikpIHtcblx0XHRyZXR1cm4gZmllbGRGaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgPT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCI7XG5cdH1cblx0aWYgKGlzRGF0YUZpZWxkKHRhcmdldCkpIHtcblx0XHRpZiAoZmllbGRGaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgPT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoZmllbGRGaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGFyZ2V0Py5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gKHRhcmdldCBhcyBEYXRhUG9pbnQpPy5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiO1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyByZWFkIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVxdWlyZWRFeHByZXNzaW9uID0gZnVuY3Rpb24gKG9UYXJnZXQ6IFByb3BlcnR5LCByZWxhdGl2ZVBhdGg/OiBzdHJpbmdbXSk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IG9GaWVsZENvbnRyb2xWYWx1ZSA9IG9UYXJnZXQuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRjb25zdCBmaWVsZENvbnRyb2xWYWx1ZSA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvRmllbGRDb250cm9sVmFsdWUsIHJlbGF0aXZlUGF0aCk7XG5cdHJldHVybiBfaXNSZXF1aXJlZEV4cHJlc3Npb24oZmllbGRDb250cm9sVmFsdWUpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiBhY3Rpb24gcGFyYW1ldGVyIGlzIHJlcXVpcmVkLlxuICpcbiAqIEBwYXJhbSBhY3Rpb25QYXJhbWV0ZXIgQWN0aW9uIHBhcmFtZXRlclxuICogQHBhcmFtIGFjdGlvblRhcmdldCBBY3Rpb24gZGVmaW5pdGlvblxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIENvbnZlcnRlZCBNZXRhZGF0YVxuICogQHJldHVybnMgSXMgcmVxdWlyZWQgYmluZGluZyBleHByZXNzaW9uIGZvciBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0YWN0aW9uUGFyYW1ldGVyOiBBY3Rpb25QYXJhbWV0ZXIsXG5cdGFjdGlvblRhcmdldDogQWN0aW9uLFxuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGFcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSA9IGFjdGlvblRhcmdldC5pc0JvdW5kID8gYWN0aW9uVGFyZ2V0LnBhcmFtZXRlcnNbMF0/LmZ1bGx5UXVhbGlmaWVkTmFtZSA6IHVuZGVmaW5lZDtcblx0Y29uc3QgZmllbGRDb250cm9sVmFsdWUgPSBhY3Rpb25QYXJhbWV0ZXIuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRjb25zdCBmaWVsZENvbnRyb2xFeHAgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmllbGRDb250cm9sVmFsdWUsIFtdLCB1bmRlZmluZWQsIChwYXRoOiBzdHJpbmcpID0+XG5cdFx0YmluZGluZ0NvbnRleHRQYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZWRUeXBlcywgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lKVxuXHQpO1xuXG5cdHJldHVybiBfaXNSZXF1aXJlZEV4cHJlc3Npb24oZmllbGRDb250cm9sRXhwKTtcbn07XG5cbmNvbnN0IF9pc1JlcXVpcmVkRXhwcmVzc2lvbiA9IChmaWVsZENvbnRyb2xFeHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmcgfCBudW1iZXI+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0+IHtcblx0cmV0dXJuIG9yKFxuXHRcdGlzQ29uc3RhbnQoZmllbGRDb250cm9sRXhwKSAmJiBlcXVhbChmaWVsZENvbnRyb2xFeHAsIFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCIpLFxuXHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cCwgNyksXG5cdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwLCBcIjdcIilcblx0KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLE1BQU1BLG9CQUFvQixHQUFHLFVBQVVDLE9BQTZCLEVBQUVDLFlBQXVCLEVBQXFDO0lBQUE7SUFDeEksTUFBTUMsc0JBQXNCLEdBQUdDLDJCQUEyQixDQUFDSCxPQUFPLGFBQVBBLE9BQU8sK0NBQVBBLE9BQU8sQ0FBRUksV0FBVyxrRkFBcEIscUJBQXNCQyxNQUFNLDBEQUE1QixzQkFBOEJDLFlBQVksRUFBRUwsWUFBWSxDQUFDO0lBQ3BILElBQUksQ0FBQ00sVUFBVSxDQUFDTCxzQkFBc0IsQ0FBQyxFQUFFO01BQ3hDLE9BQU9NLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDUCxzQkFBc0IsRUFBRSxDQUFDLENBQUMsRUFBRU8sS0FBSyxDQUFDUCxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRixDQUFDLE1BQU07TUFDTixPQUFPTSxFQUFFLENBQ1JDLEtBQUssQ0FBQ1Asc0JBQXNCLEVBQUUsa0NBQWtDLENBQUMsRUFDakVPLEtBQUssQ0FBQ1Asc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQ2hDTyxLQUFLLENBQUNQLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUNs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
|
|
141
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsIm9UYXJnZXQiLCJyZWxhdGl2ZVBhdGgiLCJmaWVsZENvbnRyb2xFeHByZXNzaW9uIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJGaWVsZENvbnRyb2wiLCJpc0NvbnN0YW50Iiwib3IiLCJlcXVhbCIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiaXNOb25FZGl0YWJsZUV4cHJlc3Npb24iLCJoYXNGaWVsZENvbnRyb2xOb3RNYW5kYXRvcnkiLCJkYXRhRmllbGRGb3JBbm5vdGF0aW9uIiwiZmllbGRDb250cm9sIiwidG9TdHJpbmciLCJpc1N0YXRpY2FsbHlNYW5kYXRvcnkiLCJ0YXJnZXQiLCJmaWVsZEZpZWxkQ29udHJvbCIsImlzUHJvcGVydHkiLCJpc0RhdGFGaWVsZEZvckFubm90YXRpb24iLCJpc0RhdGFGaWVsZCIsInVuZGVmaW5lZCIsIlZhbHVlIiwiJHRhcmdldCIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwib0ZpZWxkQ29udHJvbFZhbHVlIiwiZmllbGRDb250cm9sVmFsdWUiLCJfaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiIsImFjdGlvblBhcmFtZXRlciIsImFjdGlvblRhcmdldCIsImNvbnZlcnRlZFR5cGVzIiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiaXNCb3VuZCIsInBhcmFtZXRlcnMiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJmaWVsZENvbnRyb2xFeHAiLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRDb250cm9sSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBBY3Rpb25QYXJhbWV0ZXIsIENvbnZlcnRlZE1ldGFkYXRhLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGQsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZEZvckFubm90YXRpb24sXG5cdERhdGFQb2ludCxcblx0RGF0YVBvaW50VHlwZSxcblx0RGF0YVBvaW50VHlwZVR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlzQ29uc3RhbnQsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGlzRGF0YUZpZWxkLCBpc0RhdGFGaWVsZEZvckFubm90YXRpb24gfSBmcm9tIFwiLi4vY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB7IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IgfSBmcm9tIFwiLi4vaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcIi4uL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyByZWFkIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVhZE9ubHlFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvVGFyZ2V0OiBQcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCB1bmRlZmluZWQsXG5cdHJlbGF0aXZlUGF0aD86IHN0cmluZ1tdXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBmaWVsZENvbnRyb2xFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbCwgcmVsYXRpdmVQYXRoKTtcblx0aWYgKCFpc0NvbnN0YW50KGZpZWxkQ29udHJvbEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDEpLCBlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIjFcIikpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBvcihcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvUmVhZE9ubHlcIiksXG5cdFx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCAxKSxcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiMVwiKVxuXHRcdCk7XG5cdH1cbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIGRpc2FibGVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHBhcmFtIHJlbGF0aXZlUGF0aCBBcnJheSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIGZpZWxkIGNvbnRyb2wgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3MgZGlzYWJsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvVGFyZ2V0OiBQcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCB1bmRlZmluZWQsXG5cdHJlbGF0aXZlUGF0aD86IHN0cmluZ1tdXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBmaWVsZENvbnRyb2xFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbCwgcmVsYXRpdmVQYXRoKTtcblx0aWYgKCFpc0NvbnN0YW50KGZpZWxkQ29udHJvbEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDApLCBlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIjBcIikpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBvcihcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvSW5hcHBsaWNhYmxlXCIpLFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgMCksXG5cdFx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIjBcIilcblx0XHQpO1xuXHR9XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyBlZGl0YWJsZSBvciBub3QuXG4gKlxuICogQHBhcmFtIG9UYXJnZXQgVGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhRmllbGRcbiAqIEBwYXJhbSByZWxhdGl2ZVBhdGggQXJyYXkgb2YgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIHBvaW50aW5nIHRvIHRoZSBsb2NhdGlvbiBvZiBmaWVsZCBjb250cm9sIHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlc29sdmluZyB0byBhIEJvb2xlYW4gYmVpbmcgdHJ1ZSBpZiBpdCdzIG5vdCBlZGl0YWJsZVxuICovXG5leHBvcnQgY29uc3QgaXNOb25FZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9UYXJnZXQ6IFByb3BlcnR5IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IHVuZGVmaW5lZCxcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBvcihpc1JlYWRPbmx5RXhwcmVzc2lvbihvVGFyZ2V0LCByZWxhdGl2ZVBhdGgpLCBpc0Rpc2FibGVkRXhwcmVzc2lvbihvVGFyZ2V0LCByZWxhdGl2ZVBhdGgpKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBoYXMgYSBmaWVsZENvbnRyb2wgdGhhdCBpcyBub3Qgc2V0IHRvIE1hbmRhdG9yeS5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBUaGUgZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBiZWluZyBwcm9jZXNzZWRcbiAqIEByZXR1cm5zIFRydWUgaWYgaXQgaGFzIGEgZmllbGRDb250cm9sIHNldCBhbmQgbm90IE1hbmRhdG9yeS5cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZpZWxkQ29udHJvbE5vdE1hbmRhdG9yeSA9IGZ1bmN0aW9uIChkYXRhRmllbGRGb3JBbm5vdGF0aW9uOiBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKTogYm9vbGVhbiB7XG5cdGNvbnN0IGZpZWxkQ29udHJvbCA9IGRhdGFGaWVsZEZvckFubm90YXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRyZXR1cm4gZmllbGRDb250cm9sICYmIGZpZWxkQ29udHJvbC50b1N0cmluZygpICE9PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiID8gdHJ1ZSA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXJnZXQgaGFzIGEgZmllbGQgY29udHJvbCBhbm5vdGF0aW9uIHdpdGggc3RhdGljIHZhbHVlIG1hbmRhdG9yeSAuXG4gKlxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHRvIGJlIHByb2Nlc3NlZFxuICogQHJldHVybnMgVHJ1ZSBpZiBpdCBoYXMgYSBzdGF0aWMgbWFuZGF0b3J5IGZpZWxkIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY2FsbHlNYW5kYXRvcnkodGFyZ2V0OiBEYXRhRmllbGQgfCBEYXRhRmllbGRGb3JBbm5vdGF0aW9uIHwgRGF0YVBvaW50IHwgUHJvcGVydHkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0Y29uc3QgZmllbGRGaWVsZENvbnRyb2wgPSB0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0aWYgKGlzUHJvcGVydHkodGFyZ2V0KSB8fCBpc0RhdGFGaWVsZEZvckFubm90YXRpb24odGFyZ2V0IGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pKSB7XG5cdFx0cmV0dXJuIGZpZWxkRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiO1xuXHR9XG5cdGlmIChpc0RhdGFGaWVsZCh0YXJnZXQpKSB7XG5cdFx0aWYgKGZpZWxkRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkRmllbGRDb250cm9sPy50b1N0cmluZygpICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRhcmdldD8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbD8udG9TdHJpbmcoKSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIjtcblx0XHR9XG5cdH1cblx0cmV0dXJuICh0YXJnZXQgYXMgRGF0YVBvaW50KT8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbD8udG9TdHJpbmcoKSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgcmVhZCBvbmx5IG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHBhcmFtIHJlbGF0aXZlUGF0aCBBcnJheSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIGZpZWxkIGNvbnRyb2wgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3MgcmVhZCBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBpc1JlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1RhcmdldDogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZSB8IHVuZGVmaW5lZCxcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IG9GaWVsZENvbnRyb2xWYWx1ZSA9IG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0Y29uc3QgZmllbGRDb250cm9sVmFsdWUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0ZpZWxkQ29udHJvbFZhbHVlLCByZWxhdGl2ZVBhdGgpO1xuXHRyZXR1cm4gX2lzUmVxdWlyZWRFeHByZXNzaW9uKGZpZWxkQ29udHJvbFZhbHVlKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgYWN0aW9uIHBhcmFtZXRlciBpcyByZXF1aXJlZC5cbiAqXG4gKiBAcGFyYW0gYWN0aW9uUGFyYW1ldGVyIEFjdGlvbiBwYXJhbWV0ZXJcbiAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQWN0aW9uIGRlZmluaXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZWRUeXBlcyBDb252ZXJ0ZWQgTWV0YWRhdGFcbiAqIEByZXR1cm5zIElzIHJlcXVpcmVkIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgcGFyYW1ldGVyLlxuICovXG5leHBvcnQgY29uc3QgaXNBY3Rpb25QYXJhbWV0ZXJSZXF1aXJlZEV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdGFjdGlvblBhcmFtZXRlcjogQWN0aW9uUGFyYW1ldGVyLFxuXHRhY3Rpb25UYXJnZXQ6IEFjdGlvbixcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUgPSBhY3Rpb25UYXJnZXQuaXNCb3VuZCA/IGFjdGlvblRhcmdldC5wYXJhbWV0ZXJzWzBdPy5mdWxseVF1YWxpZmllZE5hbWUgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IGZpZWxkQ29udHJvbFZhbHVlID0gYWN0aW9uUGFyYW1ldGVyLmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0Y29uc3QgZmllbGRDb250cm9sRXhwID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZpZWxkQ29udHJvbFZhbHVlLCBbXSwgdW5kZWZpbmVkLCAocGF0aDogc3RyaW5nKSA9PlxuXHRcdGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVkVHlwZXMsIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSlcblx0KTtcblxuXHRyZXR1cm4gX2lzUmVxdWlyZWRFeHByZXNzaW9uKGZpZWxkQ29udHJvbEV4cCk7XG59O1xuXG5jb25zdCBfaXNSZXF1aXJlZEV4cHJlc3Npb24gPSAoZmllbGRDb250cm9sRXhwOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nIHwgbnVtYmVyPik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9PiB7XG5cdHJldHVybiBvcihcblx0XHRpc0NvbnN0YW50KGZpZWxkQ29udHJvbEV4cCkgJiYgZXF1YWwoZmllbGRDb250cm9sRXhwLCBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiKSxcblx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHAsIDcpLFxuXHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cCwgXCI3XCIpXG5cdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNQSxvQkFBb0IsR0FBRyxVQUNuQ0MsT0FBMkUsRUFDM0VDLFlBQXVCLEVBQ2E7SUFBQTtJQUNwQyxNQUFNQyxzQkFBc0IsR0FBR0MsMkJBQTJCLENBQUNILE9BQU8sYUFBUEEsT0FBTywrQ0FBUEEsT0FBTyxDQUFFSSxXQUFXLGtGQUFwQixxQkFBc0JD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
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { Action, ActionParameter, ConvertedMetadata, Property } from "@sap-ux/vocabularies-types";
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
DataField,
|
|
4
|
+
DataFieldAbstractTypes,
|
|
5
|
+
DataFieldForAnnotation,
|
|
6
|
+
DataPoint,
|
|
7
|
+
DataPointType,
|
|
8
|
+
DataPointTypeTypes
|
|
9
|
+
} from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
3
10
|
import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
4
11
|
import { equal, getExpressionFromAnnotation, isConstant, or } from "sap/fe/core/helpers/BindingToolkit";
|
|
5
12
|
import { isDataField, isDataFieldForAnnotation } from "../converters/annotations/DataField";
|
|
@@ -13,7 +20,10 @@ import { isProperty } from "../helpers/TypeGuards";
|
|
|
13
20
|
* @param relativePath Array of navigation properties pointing to the location of field control property
|
|
14
21
|
* @returns The binding expression resolving to a Boolean being true if it's read only
|
|
15
22
|
*/
|
|
16
|
-
export const isReadOnlyExpression = function (
|
|
23
|
+
export const isReadOnlyExpression = function (
|
|
24
|
+
oTarget: Property | DataFieldAbstractTypes | DataPointTypeTypes | undefined,
|
|
25
|
+
relativePath?: string[]
|
|
26
|
+
): BindingToolkitExpression<boolean> {
|
|
17
27
|
const fieldControlExpression = getExpressionFromAnnotation(oTarget?.annotations?.Common?.FieldControl, relativePath);
|
|
18
28
|
if (!isConstant(fieldControlExpression)) {
|
|
19
29
|
return or(equal(fieldControlExpression, 1), equal(fieldControlExpression, "1"));
|
|
@@ -33,7 +43,10 @@ export const isReadOnlyExpression = function (oTarget: Property | undefined, rel
|
|
|
33
43
|
* @param relativePath Array of navigation properties pointing to the location of field control property
|
|
34
44
|
* @returns The binding expression resolving to a Boolean being true if it's disabled
|
|
35
45
|
*/
|
|
36
|
-
export const isDisabledExpression = function (
|
|
46
|
+
export const isDisabledExpression = function (
|
|
47
|
+
oTarget: Property | DataFieldAbstractTypes | DataPointTypeTypes | undefined,
|
|
48
|
+
relativePath?: string[]
|
|
49
|
+
): BindingToolkitExpression<boolean> {
|
|
37
50
|
const fieldControlExpression = getExpressionFromAnnotation(oTarget?.annotations?.Common?.FieldControl, relativePath);
|
|
38
51
|
if (!isConstant(fieldControlExpression)) {
|
|
39
52
|
return or(equal(fieldControlExpression, 0), equal(fieldControlExpression, "0"));
|
|
@@ -53,7 +66,10 @@ export const isDisabledExpression = function (oTarget: Property, relativePath?:
|
|
|
53
66
|
* @param relativePath Array of navigation properties pointing to the location of field control property
|
|
54
67
|
* @returns The binding expression resolving to a Boolean being true if it's not editable
|
|
55
68
|
*/
|
|
56
|
-
export const isNonEditableExpression = function (
|
|
69
|
+
export const isNonEditableExpression = function (
|
|
70
|
+
oTarget: Property | DataFieldAbstractTypes | DataPointTypeTypes | undefined,
|
|
71
|
+
relativePath?: string[]
|
|
72
|
+
): BindingToolkitExpression<boolean> {
|
|
57
73
|
return or(isReadOnlyExpression(oTarget, relativePath), isDisabledExpression(oTarget, relativePath));
|
|
58
74
|
};
|
|
59
75
|
|
|
@@ -74,8 +90,8 @@ export const hasFieldControlNotMandatory = function (dataFieldForAnnotation: Dat
|
|
|
74
90
|
* @param target The target to be processed
|
|
75
91
|
* @returns True if it has a static mandatory field control.
|
|
76
92
|
*/
|
|
77
|
-
export function isStaticallyMandatory(target: DataField | DataFieldForAnnotation | DataPoint | Property): boolean {
|
|
78
|
-
const fieldFieldControl = target
|
|
93
|
+
export function isStaticallyMandatory(target: DataField | DataFieldForAnnotation | DataPoint | Property | undefined): boolean {
|
|
94
|
+
const fieldFieldControl = target?.annotations?.Common?.FieldControl;
|
|
79
95
|
if (isProperty(target) || isDataFieldForAnnotation(target as DataFieldForAnnotation)) {
|
|
80
96
|
return fieldFieldControl?.toString() === "Common.FieldControlType/Mandatory";
|
|
81
97
|
}
|
|
@@ -99,8 +115,11 @@ export function isStaticallyMandatory(target: DataField | DataFieldForAnnotation
|
|
|
99
115
|
* @param relativePath Array of navigation properties pointing to the location of field control property
|
|
100
116
|
* @returns The binding expression resolving to a Boolean being true if it's read only
|
|
101
117
|
*/
|
|
102
|
-
export const isRequiredExpression = function (
|
|
103
|
-
|
|
118
|
+
export const isRequiredExpression = function (
|
|
119
|
+
oTarget: Property | DataFieldAbstractTypes | DataPointType | undefined,
|
|
120
|
+
relativePath?: string[]
|
|
121
|
+
): BindingToolkitExpression<boolean> {
|
|
122
|
+
const oFieldControlValue = oTarget?.annotations?.Common?.FieldControl;
|
|
104
123
|
const fieldControlValue = getExpressionFromAnnotation(oFieldControlValue, relativePath);
|
|
105
124
|
return _isRequiredExpression(fieldControlValue);
|
|
106
125
|
};
|