@sapui5/sap.fe.core 1.95.0 → 1.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +3 -3
- package/src/sap/fe/core/AppComponent.js +9 -44
- package/src/sap/fe/core/AppStateHandler.js +2 -2
- package/src/sap/fe/core/BaseController.js +1 -1
- package/src/sap/fe/core/BusyLocker.js +13 -1
- package/src/sap/fe/core/CommonUtils.js +129 -219
- package/src/sap/fe/core/ExtensionAPI.js +14 -6
- package/src/sap/fe/core/PageController.js +9 -35
- package/src/sap/fe/core/RouterProxy.js +79 -75
- package/src/sap/fe/core/Synchronization.js +1 -1
- package/src/sap/fe/core/TemplateComponent.js +16 -7
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TransactionHelper.js +183 -65
- package/src/sap/fe/core/actions/draft.js +50 -23
- package/src/sap/fe/core/actions/messageHandling.js +86 -7
- package/src/sap/fe/core/actions/nonDraft.js +1 -1
- package/src/sap/fe/core/actions/operations.js +75 -33
- package/src/sap/fe/core/actions/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +276 -122
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +14 -6
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +90 -46
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +234 -232
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +539 -209
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +550 -213
- package/src/sap/fe/core/controllerextensions/MassEdit.js +79 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +227 -103
- package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -7
- package/src/sap/fe/core/controllerextensions/Paginator.js +38 -12
- package/src/sap/fe/core/controllerextensions/Placeholder.js +16 -19
- package/src/sap/fe/core/controllerextensions/Routing.js +17 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +20 -7
- package/src/sap/fe/core/controllerextensions/SideEffects.js +8 -9
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +19 -17
- package/src/sap/fe/core/controllerextensions/ViewState.js +54 -9
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +40 -34
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.js +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +110 -109
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +7 -4
- package/src/sap/fe/core/controls/FieldWrapper.js +10 -4
- package/src/sap/fe/core/controls/FilterBar.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -6
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +78 -0
- package/src/sap/fe/core/converters/ConverterContext.js +13 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +10 -0
- package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +7 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +18 -7
- package/src/sap/fe/core/converters/ManifestWrapper.ts +15 -6
- package/src/sap/fe/core/converters/MetaModelConverter.js +920 -882
- package/src/sap/fe/core/converters/MetaModelConverter.ts +829 -853
- package/src/sap/fe/core/converters/annotations/DataField.js +54 -4
- package/src/sap/fe/core/converters/annotations/DataField.ts +53 -3
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +83 -48
- package/src/sap/fe/core/converters/controls/Common/Action.js +15 -3
- package/src/sap/fe/core/converters/controls/Common/Action.ts +12 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -2
- package/src/sap/fe/core/converters/controls/Common/Form.js +68 -21
- package/src/sap/fe/core/converters/controls/Common/Form.ts +60 -16
- package/src/sap/fe/core/converters/controls/Common/KPI.js +331 -248
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +355 -287
- package/src/sap/fe/core/converters/controls/Common/Table.js +426 -332
- package/src/sap/fe/core/converters/controls/Common/Table.ts +516 -383
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +468 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +609 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +30 -13
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +31 -12
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +15 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +27 -6
- package/src/sap/fe/core/converters/helpers/Aggregation.js +8 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +9 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +2 -2
- package/src/sap/fe/core/converters/helpers/ID.js +9 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +6 -2
- package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -5
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +2 -2
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +34 -4
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -7
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -2
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
- package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
- package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
- package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
- package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -3
- package/src/sap/fe/core/fpm/Component.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +388 -0
- package/src/sap/fe/core/helpers/BindingExpression.js +199 -111
- package/src/sap/fe/core/helpers/BindingExpression.ts +193 -102
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -3
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +678 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +64 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +7 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
- package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
- package/src/sap/fe/core/library.js +28 -2
- package/src/sap/fe/core/library.support.js +10 -4
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
- package/src/sap/fe/core/messagebundle.properties +67 -3
- package/src/sap/fe/core/messagebundle_ar.properties +40 -3
- package/src/sap/fe/core/messagebundle_bg.properties +40 -3
- package/src/sap/fe/core/messagebundle_ca.properties +41 -4
- package/src/sap/fe/core/messagebundle_cs.properties +41 -4
- package/src/sap/fe/core/messagebundle_cy.properties +40 -3
- package/src/sap/fe/core/messagebundle_da.properties +40 -3
- package/src/sap/fe/core/messagebundle_de.properties +40 -3
- package/src/sap/fe/core/messagebundle_el.properties +40 -3
- package/src/sap/fe/core/messagebundle_en.properties +37 -0
- package/src/sap/fe/core/messagebundle_en_GB.properties +37 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +37 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +46 -2
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -0
- package/src/sap/fe/core/messagebundle_es.properties +40 -3
- package/src/sap/fe/core/messagebundle_es_MX.properties +41 -4
- package/src/sap/fe/core/messagebundle_et.properties +40 -3
- package/src/sap/fe/core/messagebundle_fi.properties +40 -3
- package/src/sap/fe/core/messagebundle_fr.properties +41 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +40 -3
- package/src/sap/fe/core/messagebundle_hi.properties +40 -3
- package/src/sap/fe/core/messagebundle_hr.properties +40 -3
- package/src/sap/fe/core/messagebundle_hu.properties +41 -4
- package/src/sap/fe/core/messagebundle_id.properties +42 -5
- package/src/sap/fe/core/messagebundle_it.properties +40 -3
- package/src/sap/fe/core/messagebundle_iw.properties +40 -3
- package/src/sap/fe/core/messagebundle_ja.properties +49 -12
- package/src/sap/fe/core/messagebundle_kk.properties +40 -3
- package/src/sap/fe/core/messagebundle_ko.properties +40 -3
- package/src/sap/fe/core/messagebundle_lt.properties +40 -3
- package/src/sap/fe/core/messagebundle_lv.properties +40 -3
- package/src/sap/fe/core/messagebundle_ms.properties +40 -3
- package/src/sap/fe/core/messagebundle_nl.properties +40 -3
- package/src/sap/fe/core/messagebundle_no.properties +40 -3
- package/src/sap/fe/core/messagebundle_pl.properties +40 -3
- package/src/sap/fe/core/messagebundle_pt.properties +42 -5
- package/src/sap/fe/core/messagebundle_pt_PT.properties +40 -3
- package/src/sap/fe/core/messagebundle_ro.properties +40 -3
- package/src/sap/fe/core/messagebundle_ru.properties +40 -3
- package/src/sap/fe/core/messagebundle_sh.properties +40 -3
- package/src/sap/fe/core/messagebundle_sk.properties +40 -3
- package/src/sap/fe/core/messagebundle_sl.properties +40 -3
- package/src/sap/fe/core/messagebundle_sv.properties +41 -4
- package/src/sap/fe/core/messagebundle_th.properties +40 -3
- package/src/sap/fe/core/messagebundle_tr.properties +40 -3
- package/src/sap/fe/core/messagebundle_uk.properties +40 -3
- package/src/sap/fe/core/messagebundle_vi.properties +40 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +40 -3
- package/src/sap/fe/core/messagebundle_zh_TW.properties +40 -3
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -0
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +98 -328
- package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +30 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +8 -5
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +11 -6
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +14 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -37
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +13 -33
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
- package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
- package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
- package/src/sap/fe/core/templating/FilterHelper.js +10 -7
- package/src/sap/fe/core/templating/FilterHelper.ts +8 -6
- package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +47 -107
- package/src/sap/fe/core/templating/UIFormatters.ts +76 -72
|
@@ -2,15 +2,21 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../helpers/Key", "sap/fe/core/converters/annotations/DataField", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/StableIdHelper"], function (ConfigurableObject, ID, Key, DataField, DataModelPathHelper, StableIdHelper) {
|
|
5
|
+
sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../helpers/Key", "../../ManifestSettings", "sap/fe/core/converters/annotations/DataField", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/StableIdHelper", "sap/fe/core/helpers/BindingExpression"], function (ConfigurableObject, ID, Key, ManifestSettings, DataField, DataModelPathHelper, StableIdHelper, BindingExpression) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
|
+
var not = BindingExpression.not;
|
|
10
|
+
var equal = BindingExpression.equal;
|
|
11
|
+
var compileBinding = BindingExpression.compileBinding;
|
|
12
|
+
var annotationExpression = BindingExpression.annotationExpression;
|
|
9
13
|
var generate = StableIdHelper.generate;
|
|
10
14
|
var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
|
|
11
15
|
var getTargetEntitySetPath = DataModelPathHelper.getTargetEntitySetPath;
|
|
12
16
|
var getSemanticObjectPath = DataField.getSemanticObjectPath;
|
|
17
|
+
var ActionType = ManifestSettings.ActionType;
|
|
13
18
|
var KeyHelper = Key.KeyHelper;
|
|
19
|
+
var FormStandardActionButtonID = ID.FormStandardActionButtonID;
|
|
14
20
|
var FormID = ID.FormID;
|
|
15
21
|
var Placement = ConfigurableObject.Placement;
|
|
16
22
|
var insertCustomElements = ConfigurableObject.insertCustomElements;
|
|
@@ -41,35 +47,51 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
41
47
|
};
|
|
42
48
|
}
|
|
43
49
|
|
|
50
|
+
function isFieldPartOfPreview(field, formPartOfPreview) {
|
|
51
|
+
var _field$annotations, _field$annotations$UI, _field$annotations2, _field$annotations2$U;
|
|
52
|
+
|
|
53
|
+
// Both each form and field can have the PartOfPreview annotation. Only if the form is not hidden (not partOfPreview) we allow toggling on field level
|
|
54
|
+
return formPartOfPreview === false || ((_field$annotations = field.annotations) === null || _field$annotations === void 0 ? void 0 : (_field$annotations$UI = _field$annotations.UI) === null || _field$annotations$UI === void 0 ? void 0 : _field$annotations$UI.PartOfPreview) === undefined || ((_field$annotations2 = field.annotations) === null || _field$annotations2 === void 0 ? void 0 : (_field$annotations2$U = _field$annotations2.UI) === null || _field$annotations2$U === void 0 ? void 0 : _field$annotations2$U.PartOfPreview) === true;
|
|
55
|
+
}
|
|
56
|
+
|
|
44
57
|
function getFormElementsFromAnnotations(facetDefinition, converterContext) {
|
|
45
58
|
var formElements = [];
|
|
46
59
|
var resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
47
60
|
var formAnnotation = resolvedTarget.annotation;
|
|
48
61
|
converterContext = resolvedTarget.converterContext;
|
|
49
62
|
|
|
50
|
-
function getDataFieldsFromAnnotations(field) {
|
|
51
|
-
var _field$
|
|
63
|
+
function getDataFieldsFromAnnotations(field, formPartOfPreview) {
|
|
64
|
+
var _field$annotations3, _field$annotations3$U, _field$annotations3$U2;
|
|
52
65
|
|
|
53
66
|
var semanticObjectAnnotationPath = getSemanticObjectPath(converterContext, field);
|
|
54
67
|
|
|
55
|
-
if (field.$Type !== "com.sap.vocabularies.UI.v1.DataFieldForAction" && field.$Type !== "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation" && ((_field$
|
|
68
|
+
if (field.$Type !== "com.sap.vocabularies.UI.v1.DataFieldForAction" && field.$Type !== "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation" && ((_field$annotations3 = field.annotations) === null || _field$annotations3 === void 0 ? void 0 : (_field$annotations3$U = _field$annotations3.UI) === null || _field$annotations3$U === void 0 ? void 0 : (_field$annotations3$U2 = _field$annotations3$U.Hidden) === null || _field$annotations3$U2 === void 0 ? void 0 : _field$annotations3$U2.valueOf()) !== true) {
|
|
56
69
|
formElements.push({
|
|
57
70
|
key: KeyHelper.generateKeyFromDataField(field),
|
|
58
71
|
type: FormElementType.Annotation,
|
|
59
72
|
annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName) + "/",
|
|
60
73
|
semanticObjectPath: semanticObjectAnnotationPath,
|
|
61
|
-
formatOptions: getDefaultFormatOptionsForForm()
|
|
74
|
+
formatOptions: getDefaultFormatOptionsForForm(),
|
|
75
|
+
isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
|
|
62
76
|
});
|
|
63
77
|
}
|
|
64
78
|
}
|
|
65
79
|
|
|
66
80
|
switch (formAnnotation === null || formAnnotation === void 0 ? void 0 : formAnnotation.term) {
|
|
67
81
|
case "com.sap.vocabularies.UI.v1.FieldGroup":
|
|
68
|
-
formAnnotation.Data.forEach(
|
|
82
|
+
formAnnotation.Data.forEach(function (field) {
|
|
83
|
+
var _facetDefinition$anno, _facetDefinition$anno2;
|
|
84
|
+
|
|
85
|
+
return getDataFieldsFromAnnotations(field, (_facetDefinition$anno = facetDefinition.annotations) === null || _facetDefinition$anno === void 0 ? void 0 : (_facetDefinition$anno2 = _facetDefinition$anno.UI) === null || _facetDefinition$anno2 === void 0 ? void 0 : _facetDefinition$anno2.PartOfPreview);
|
|
86
|
+
});
|
|
69
87
|
break;
|
|
70
88
|
|
|
71
89
|
case "com.sap.vocabularies.UI.v1.Identification":
|
|
72
|
-
formAnnotation.forEach(
|
|
90
|
+
formAnnotation.forEach(function (field) {
|
|
91
|
+
var _facetDefinition$anno3, _facetDefinition$anno4;
|
|
92
|
+
|
|
93
|
+
return getDataFieldsFromAnnotations(field, (_facetDefinition$anno3 = facetDefinition.annotations) === null || _facetDefinition$anno3 === void 0 ? void 0 : (_facetDefinition$anno4 = _facetDefinition$anno3.UI) === null || _facetDefinition$anno4 === void 0 ? void 0 : _facetDefinition$anno4.PartOfPreview);
|
|
94
|
+
});
|
|
73
95
|
break;
|
|
74
96
|
|
|
75
97
|
case "com.sap.vocabularies.UI.v1.DataPoint":
|
|
@@ -124,10 +146,15 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
124
146
|
_exports.getFormElementsFromManifest = getFormElementsFromManifest;
|
|
125
147
|
|
|
126
148
|
function getFormContainer(facetDefinition, converterContext, actions) {
|
|
127
|
-
var _resolvedTarget$conve;
|
|
149
|
+
var _facetDefinition$anno5, _facetDefinition$anno6, _resolvedTarget$conve, _facetDefinition$anno7, _facetDefinition$anno8;
|
|
128
150
|
|
|
129
151
|
//TODO form container id
|
|
152
|
+
var sFormContainerId = generate([{
|
|
153
|
+
Facet: facetDefinition
|
|
154
|
+
}]);
|
|
155
|
+
var sAnnotationPath = "/" + facetDefinition.fullyQualifiedName;
|
|
130
156
|
var resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
157
|
+
var isVisible = compileBinding(not(equal(true, annotationExpression((_facetDefinition$anno5 = facetDefinition.annotations) === null || _facetDefinition$anno5 === void 0 ? void 0 : (_facetDefinition$anno6 = _facetDefinition$anno5.UI) === null || _facetDefinition$anno6 === void 0 ? void 0 : _facetDefinition$anno6.Hidden))));
|
|
131
158
|
var sEntitySetPath; // resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
|
|
132
159
|
|
|
133
160
|
if (resolvedTarget.converterContext.getEntitySet() && resolvedTarget.converterContext.getEntitySet() !== converterContext.getEntitySet()) {
|
|
@@ -136,6 +163,9 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
136
163
|
sEntitySetPath = getTargetObjectPath(resolvedTarget.converterContext.getDataModelObjectPath(), false);
|
|
137
164
|
}
|
|
138
165
|
|
|
166
|
+
var aFormElements = insertCustomElements(getFormElementsFromAnnotations(facetDefinition, converterContext), getFormElementsFromManifest(facetDefinition, converterContext), {
|
|
167
|
+
formatOptions: "overwrite"
|
|
168
|
+
});
|
|
139
169
|
actions = actions !== undefined ? actions.filter(function (action) {
|
|
140
170
|
return action.facetName == facetDefinition.fullyQualifiedName;
|
|
141
171
|
}) : [];
|
|
@@ -144,14 +174,29 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
144
174
|
actions = undefined;
|
|
145
175
|
}
|
|
146
176
|
|
|
177
|
+
var oActionShowDetails = {
|
|
178
|
+
id: FormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
|
|
179
|
+
key: "StandardAction::ShowHideDetails",
|
|
180
|
+
text: "{sap.fe.i18n>T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS}",
|
|
181
|
+
type: ActionType.ShowFormDetails,
|
|
182
|
+
press: "FormContainerRuntime.toggleDetails"
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
if (((_facetDefinition$anno7 = facetDefinition.annotations) === null || _facetDefinition$anno7 === void 0 ? void 0 : (_facetDefinition$anno8 = _facetDefinition$anno7.UI) === null || _facetDefinition$anno8 === void 0 ? void 0 : _facetDefinition$anno8.PartOfPreview) !== false && aFormElements.some(function (oFormElement) {
|
|
186
|
+
return oFormElement.isPartOfPreview === false;
|
|
187
|
+
})) {
|
|
188
|
+
if (actions !== undefined) {
|
|
189
|
+
actions.push(oActionShowDetails);
|
|
190
|
+
} else {
|
|
191
|
+
actions = [oActionShowDetails];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
147
195
|
return {
|
|
148
|
-
id:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
formatOptions: "overwrite"
|
|
153
|
-
}),
|
|
154
|
-
annotationPath: "/" + facetDefinition.fullyQualifiedName,
|
|
196
|
+
id: sFormContainerId,
|
|
197
|
+
formElements: aFormElements,
|
|
198
|
+
annotationPath: sAnnotationPath,
|
|
199
|
+
isVisible: isVisible,
|
|
155
200
|
entitySet: sEntitySetPath,
|
|
156
201
|
actions: actions
|
|
157
202
|
};
|
|
@@ -181,8 +226,8 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
181
226
|
|
|
182
227
|
_exports.isReferenceFacet = isReferenceFacet;
|
|
183
228
|
|
|
184
|
-
function createFormDefinition(facetDefinition, converterContext, actions) {
|
|
185
|
-
var _facetDefinition$
|
|
229
|
+
function createFormDefinition(facetDefinition, isVisible, converterContext, actions) {
|
|
230
|
+
var _facetDefinition$anno9, _facetDefinition$anno10, _facetDefinition$anno11;
|
|
186
231
|
|
|
187
232
|
switch (facetDefinition.$Type) {
|
|
188
233
|
case "com.sap.vocabularies.UI.v1.CollectionFacet":
|
|
@@ -197,7 +242,8 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
197
242
|
|
|
198
243
|
return ((_childFacet$annotatio = childFacet.annotations) === null || _childFacet$annotatio === void 0 ? void 0 : (_childFacet$annotatio2 = _childFacet$annotatio.UI) === null || _childFacet$annotatio2 === void 0 ? void 0 : (_childFacet$annotatio3 = _childFacet$annotatio2.PartOfPreview) === null || _childFacet$annotatio3 === void 0 ? void 0 : _childFacet$annotatio3.valueOf()) === false;
|
|
199
244
|
}),
|
|
200
|
-
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions)
|
|
245
|
+
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
|
|
246
|
+
isVisible: isVisible
|
|
201
247
|
};
|
|
202
248
|
return formCollectionDefinition;
|
|
203
249
|
|
|
@@ -207,8 +253,9 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
207
253
|
Facet: facetDefinition
|
|
208
254
|
}),
|
|
209
255
|
useFormContainerLabels: false,
|
|
210
|
-
hasFacetsNotPartOfPreview: ((_facetDefinition$
|
|
211
|
-
formContainers: [getFormContainer(facetDefinition, converterContext, actions)]
|
|
256
|
+
hasFacetsNotPartOfPreview: ((_facetDefinition$anno9 = facetDefinition.annotations) === null || _facetDefinition$anno9 === void 0 ? void 0 : (_facetDefinition$anno10 = _facetDefinition$anno9.UI) === null || _facetDefinition$anno10 === void 0 ? void 0 : (_facetDefinition$anno11 = _facetDefinition$anno10.PartOfPreview) === null || _facetDefinition$anno11 === void 0 ? void 0 : _facetDefinition$anno11.valueOf()) === false,
|
|
257
|
+
formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
|
|
258
|
+
isVisible: isVisible
|
|
212
259
|
};
|
|
213
260
|
return formDefinition;
|
|
214
261
|
|
|
@@ -220,4 +267,4 @@ sap.ui.define(["../../helpers/ConfigurableObject", "../../helpers/ID", "../../he
|
|
|
220
267
|
_exports.createFormDefinition = createFormDefinition;
|
|
221
268
|
return _exports;
|
|
222
269
|
}, false);
|
|
223
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImdldEZvcm1FbGVtZW50c0Zyb21Bbm5vdGF0aW9ucyIsImZhY2V0RGVmaW5pdGlvbiIsImNvbnZlcnRlckNvbnRleHQiLCJmb3JtRWxlbWVudHMiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiVGFyZ2V0IiwidmFsdWUiLCJmb3JtQW5ub3RhdGlvbiIsImFubm90YXRpb24iLCJnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zIiwiZmllbGQiLCJzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoIiwiZ2V0U2VtYW50aWNPYmplY3RQYXRoIiwiJFR5cGUiLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwidmFsdWVPZiIsInB1c2giLCJrZXkiLCJLZXlIZWxwZXIiLCJnZW5lcmF0ZUtleUZyb21EYXRhRmllbGQiLCJ0eXBlIiwiQW5ub3RhdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbWFudGljT2JqZWN0UGF0aCIsImZvcm1hdE9wdGlvbnMiLCJ0ZXJtIiwiRGF0YSIsImZvckVhY2giLCJxdWFsaWZpZXIiLCJnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QiLCJtYW5pZmVzdFdyYXBwZXIiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJtYW5pZmVzdEZvcm1Db250YWluZXIiLCJnZXRGb3JtQ29udGFpbmVyIiwiZmllbGRzIiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkSWQiLCJpZCIsIkRlZmF1bHQiLCJ0ZW1wbGF0ZSIsImxhYmVsIiwicG9zaXRpb24iLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnQiLCJBZnRlciIsImFjdGlvbnMiLCJzRW50aXR5U2V0UGF0aCIsImdldEVudGl0eVNldCIsImdldFRhcmdldEVudGl0eVNldFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0T2JqZWN0IiwiY29udGFpbnNUYXJnZXQiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwidW5kZWZpbmVkIiwiZmlsdGVyIiwiYWN0aW9uIiwiZmFjZXROYW1lIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJGYWNldCIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiZW50aXR5U2V0IiwiZ2V0Rm9ybUNvbnRhaW5lcnNGb3JDb2xsZWN0aW9uIiwiZm9ybUNvbnRhaW5lcnMiLCJGYWNldHMiLCJmYWNldCIsImlzUmVmZXJlbmNlRmFjZXQiLCJjcmVhdGVGb3JtRGVmaW5pdGlvbiIsImZvcm1Db2xsZWN0aW9uRGVmaW5pdGlvbiIsIkZvcm1JRCIsInVzZUZvcm1Db250YWluZXJMYWJlbHMiLCJoYXNGYWNldHNOb3RQYXJ0T2ZQcmV2aWV3Iiwic29tZSIsImNoaWxkRmFjZXQiLCJQYXJ0T2ZQcmV2aWV3IiwiZm9ybURlZmluaXRpb24iLCJFcnJvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUEyQllBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0tBQUFBLGUsS0FBQUEsZTs7OztBQXFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBU0MsOEJBQVQsR0FBNkQ7QUFDNUQsV0FBTztBQUNOQyxNQUFBQSxhQUFhLEVBQUU7QUFEVCxLQUFQO0FBR0E7O0FBRUQsV0FBU0MsOEJBQVQsQ0FBd0NDLGVBQXhDLEVBQThFQyxnQkFBOUUsRUFBMkk7QUFDMUksUUFBTUMsWUFBcUMsR0FBRyxFQUE5QztBQUNBLFFBQU1DLGNBQWMsR0FBR0YsZ0JBQWdCLENBQUNHLHVCQUFqQixDQUF5Q0osZUFBZSxDQUFDSyxNQUFoQixDQUF1QkMsS0FBaEUsQ0FBdkI7QUFDQSxRQUFNQyxjQUEyRSxHQUFHSixjQUFjLENBQUNLLFVBQW5HO0FBR0FQLElB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QUNDLFlBQU1PLGNBQWMsR0FBRztBQUN0QnRDLFVBQUFBLEVBQUUsRUFBRWdDLE1BQU0sQ0FBQztBQUFFVixZQUFBQSxLQUFLLEVBQUVoRTtBQUFULFdBQUQsQ0FEWTtBQUV0QjJFLFVBQUFBLHNCQUFzQixFQUFFLEtBRkY7QUFHdEJDLFVBQUFBLHlCQUF5QixFQUFFLDBCQUFBNUUsZUFBZSxDQUFDYyxXQUFoQiwwR0FBNkJDLEVBQTdCLDRHQUFpQ2dFLGFBQWpDLGtGQUFnRDlELE9BQWhELFFBQThELEtBSG5FO0FBSXRCbUQsVUFBQUEsY0FBYyxFQUFFLENBQUMvQixnQkFBZ0IsQ0FBQ3JDLGVBQUQsRUFBa0JDLGdCQUFsQixFQUFvQ2lELE9BQXBDLENBQWpCO0FBSk0sU0FBdkI7QUFNQSxlQUFPOEIsY0FBUDs7QUFDRDtBQUNDLGNBQU0sSUFBSUMsS0FBSixDQUFVLCtDQUFWLENBQU47QUFyQkY7QUF1QkEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFubm90YXRpb25UZXJtLFxuXHRDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0Q29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcyxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RmFjZXRUeXBlcyxcblx0RmllbGRHcm91cCxcblx0SWRlbnRpZmljYXRpb24sXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdFVJQW5ub3RhdGlvblRlcm1zLFxuXHRVSUFubm90YXRpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IEJpbmRpbmdFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgRm9ybUlEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHsgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiwgRm9ybWF0T3B0aW9uc1R5cGUgfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0U2VtYW50aWNPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IEJhc2VBY3Rpb24sIENvbnZlcnRlckFjdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIHtGb3JtYXRPcHRpb25zVHlwZX0gQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBmb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUFubm90YXRpb246IEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPiB8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+ID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhc1xuXHRcdHwgQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+XG5cdFx0fCBBbm5vdGF0aW9uVGVybTxGaWVsZEdyb3VwPjtcblx0Y29udmVydGVyQ29udGV4dCA9IHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQ7XG5cblx0ZnVuY3Rpb24gZ2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykge1xuXHRcdGNvbnN0IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGggPSBnZXRTZW1hbnRpY09iamVjdFBhdGgoY29udmVydGVyQ29udGV4dCwgZmllbGQpO1xuXHRcdGlmIChcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb24gJiZcblx0XHRcdGZpZWxkLiRUeXBlICE9PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gJiZcblx0XHRcdGZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkgIT09IHRydWVcblx0XHQpIHtcblx0XHRcdGZvcm1FbGVtZW50cy5wdXNoKHtcblx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGZpZWxkKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiLFxuXHRcdFx0XHRzZW1hbnRpY09iamVjdFBhdGg6IHNlbWFudGljT2JqZWN0QW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRzd2l0Y2ggKGZvcm1Bbm5vdGF0aW9uPy50ZXJtKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwOlxuXHRcdFx0KGZvcm1Bbm5vdGF0aW9uIGFzIEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+KS5EYXRhLmZvckVhY2goZ2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0KGZvcm1Bbm5vdGF0aW9uIGFzIEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPikuZm9yRWFjaChnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiRGF0YVBvaW50OjpcIiArIChmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwiKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiQ29udGFjdDo6XCIgKyAoZm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIiksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgKyBcIi9cIlxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goZmllbGRJZCA9PiB7XG5cdFx0XHRmb3JtRWxlbWVudHNbZmllbGRJZF0gPSB7XG5cdFx0XHRcdGtleTogZmllbGRJZCxcblx0XHRcdFx0aWQ6IFwiQ3VzdG9tRm9ybUVsZW1lbnQ6OlwiICsgZmllbGRJZCxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkRlZmF1bHQsXG5cdFx0XHRcdHRlbXBsYXRlOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLnRlbXBsYXRlLFxuXHRcdFx0XHRsYWJlbDogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5sYWJlbCxcblx0XHRcdFx0cG9zaXRpb246IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0ucG9zaXRpb24gfHwge1xuXHRcdFx0XHRcdHBsYWNlbWVudDogUGxhY2VtZW50LkFmdGVyXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IHtcblx0XHRcdFx0XHQuLi5nZXREZWZhdWx0Rm9ybWF0T3B0aW9uc0ZvckZvcm0oKSxcblx0XHRcdFx0XHQuLi5tYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmZvcm1hdE9wdGlvbnNcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZm9ybUVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUNvbnRhaW5lcihcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zOiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXSB8IHVuZGVmaW5lZFxuKTogRm9ybUNvbnRhaW5lciB7XG5cdC8vVE9ETyBmb3JtIGNvbnRhaW5lciBpZFxuXHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSk7XG5cdGxldCBzRW50aXR5U2V0UGF0aCE6IHN0cmluZztcblx0Ly8gcmVzb2x2ZWRUYXJnZXQgZG9lc24ndCBoYXZlIGEgZW50aXR5U2V0IGluIGNhc2UgQ29udGFpbm1lbnRzIGFuZCBQYXJhbXRlcml6ZWQgc2VydmljZXMuXG5cdGlmIChcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICYmXG5cdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKSAhPT0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKVxuXHQpIHtcblx0XHRzRW50aXR5U2V0UGF0aCA9IGdldFRhcmdldEVudGl0eVNldFBhdGgocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpO1xuXHR9IGVsc2UgaWYgKHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnRhcmdldE9iamVjdD8uY29udGFpbnNUYXJnZXQgPT09IHRydWUpIHtcblx0XHRzRW50aXR5U2V0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksIGZhbHNlKTtcblx0fVxuXHRhY3Rpb25zID0gYWN0aW9ucyAhPT0gdW5kZWZpbmVkID8gYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbi5mYWNldE5hbWUgPT0gZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgOiBbXTtcblx0aWYgKGFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG5cdFx0YWN0aW9ucyA9IHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdGlkOiBnZW5lcmF0ZShbeyBGYWNldDogZmFjZXREZWZpbml0aW9uIH1dKSxcblx0XHRmb3JtRWxlbWVudHM6IGluc2VydEN1c3RvbUVsZW1lbnRzKFxuXHRcdFx0Z2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdHsgZm9ybWF0T3B0aW9uczogXCJvdmVyd3JpdGVcIiB9XG5cdFx0KSxcblx0XHRhbm5vdGF0aW9uUGF0aDogXCIvXCIgKyBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdGVudGl0eVNldDogc0VudGl0eVNldFBhdGgsXG5cdFx0YWN0aW9uczogYWN0aW9uc1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oXG5cdGZhY2V0RGVmaW5pdGlvbjogQ29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtQ29udGFpbmVyW10ge1xuXHRjb25zdCBmb3JtQ29udGFpbmVyczogRm9ybUNvbnRhaW5lcltdID0gW107XG5cdC8vVE9ETyBjb2xsIGZhY2V0IGluc2lkZSBjb2xsIGZhY2V0P1xuXHRmYWNldERlZmluaXRpb24uRmFjZXRzPy5mb3JFYWNoKGZhY2V0ID0+IHtcblx0XHQvLyBJZ25vcmUgbGV2ZWwgMyBjb2xsZWN0aW9uIGZhY2V0XG5cdFx0aWYgKGZhY2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Zm9ybUNvbnRhaW5lcnMucHVzaChnZXRGb3JtQ29udGFpbmVyKGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpKTtcblx0fSk7XG5cdHJldHVybiBmb3JtQ29udGFpbmVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlRmFjZXQoZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzKTogZmFjZXREZWZpbml0aW9uIGlzIFJlZmVyZW5jZUZhY2V0VHlwZXMge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1EZWZpbml0aW9uKFxuXHRmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXSB8IENvbnZlcnRlckFjdGlvbltdXG4pOiBGb3JtRGVmaW5pdGlvbiB7XG5cdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHQvLyBLZWVwIG9ubHkgdmFsaWQgY2hpbGRyZW5cblx0XHRcdGNvbnN0IGZvcm1Db2xsZWN0aW9uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0aWQ6IEZvcm1JRCh7IEZhY2V0OiBmYWNldERlZmluaXRpb24gfSksXG5cdFx0XHRcdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IHRydWUsXG5cdFx0XHRcdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuc29tZShcblx0XHRcdFx0XHRjaGlsZEZhY2V0ID0+IGNoaWxkRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3Py52YWx1ZU9mKCkgPT09IGZhbHNlXG5cdFx0XHRcdCksXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0LCBhY3Rpb25zKVxuXHRcdFx0fTtcblx0XHRcdHJldHVybiBmb3JtQ29sbGVjdGlvbkRlZmluaXRpb247XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdGNvbnN0IGZvcm1EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRpZDogRm9ybUlEKHsgRmFjZXQ6IGZhY2V0RGVmaW5pdGlvbiB9KSxcblx0XHRcdFx0dXNlRm9ybUNvbnRhaW5lckxhYmVsczogZmFsc2UsXG5cdFx0XHRcdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSA9PT0gZmFsc2UsXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBbZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpXVxuXHRcdFx0fTtcblx0XHRcdHJldHVybiBmb3JtRGVmaW5pdGlvbjtcblx0XHRkZWZhdWx0OlxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNyZWF0ZSBmb3JtIGJhc2VkIG9uIFJlZmVyZW5jZVVSTEZhY2V0XCIpO1xuXHR9XG59XG4iXX0=
|
|
270
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZvcm0udHMiXSwibmFtZXMiOlsiRm9ybUVsZW1lbnRUeXBlIiwiZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnNGb3JGb3JtIiwidGV4dExpbmVzRWRpdCIsImlzRmllbGRQYXJ0T2ZQcmV2aWV3IiwiZmllbGQiLCJmb3JtUGFydE9mUHJldmlldyIsImFubm90YXRpb25zIiwiVUkiLCJQYXJ0T2ZQcmV2aWV3IiwidW5kZWZpbmVkIiwiZ2V0Rm9ybUVsZW1lbnRzRnJvbUFubm90YXRpb25zIiwiZmFjZXREZWZpbml0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImZvcm1FbGVtZW50cyIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJUYXJnZXQiLCJ2YWx1ZSIsImZvcm1Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbiIsImdldERhdGFGaWVsZHNGcm9tQW5ub3RhdGlvbnMiLCJzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoIiwiZ2V0U2VtYW50aWNPYmplY3RQYXRoIiwiJFR5cGUiLCJIaWRkZW4iLCJ2YWx1ZU9mIiwicHVzaCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsInR5cGUiLCJBbm5vdGF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2VtYW50aWNPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImlzUGFydE9mUHJldmlldyIsInRlcm0iLCJEYXRhIiwiZm9yRWFjaCIsInF1YWxpZmllciIsImdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0V3JhcHBlciIsImdldE1hbmlmZXN0V3JhcHBlciIsIm1hbmlmZXN0Rm9ybUNvbnRhaW5lciIsImdldEZvcm1Db250YWluZXIiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRJZCIsImlkIiwiRGVmYXVsdCIsInRlbXBsYXRlIiwibGFiZWwiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwiYWN0aW9ucyIsInNGb3JtQ29udGFpbmVySWQiLCJnZW5lcmF0ZSIsIkZhY2V0Iiwic0Fubm90YXRpb25QYXRoIiwiaXNWaXNpYmxlIiwiY29tcGlsZUJpbmRpbmciLCJub3QiLCJlcXVhbCIsImFubm90YXRpb25FeHByZXNzaW9uIiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldE9iamVjdCIsImNvbnRhaW5zVGFyZ2V0IiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImFGb3JtRWxlbWVudHMiLCJpbnNlcnRDdXN0b21FbGVtZW50cyIsImZpbHRlciIsImFjdGlvbiIsImZhY2V0TmFtZSIsImxlbmd0aCIsIm9BY3Rpb25TaG93RGV0YWlscyIsIkZvcm1TdGFuZGFyZEFjdGlvbkJ1dHRvbklEIiwidGV4dCIsIkFjdGlvblR5cGUiLCJTaG93Rm9ybURldGFpbHMiLCJwcmVzcyIsInNvbWUiLCJvRm9ybUVsZW1lbnQiLCJlbnRpdHlTZXQiLCJnZXRGb3JtQ29udGFpbmVyc0ZvckNvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVycyIsIkZhY2V0cyIsImZhY2V0IiwiaXNSZWZlcmVuY2VGYWNldCIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiZm9ybUNvbGxlY3Rpb25EZWZpbml0aW9uIiwiRm9ybUlEIiwidXNlRm9ybUNvbnRhaW5lckxhYmVscyIsImhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXciLCJjaGlsZEZhY2V0IiwiZm9ybURlZmluaXRpb24iLCJFcnJvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUE0QllBLGU7O2FBQUFBLGU7QUFBQUEsSUFBQUEsZTtBQUFBQSxJQUFBQSxlO0tBQUFBLGUsS0FBQUEsZTs7OztBQXVDWjtBQUNBO0FB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LFlBQUFBLEtBQUssRUFBRW5EO0FBQVQsV0FBRCxDQURZO0FBRXRCd0YsVUFBQUEsc0JBQXNCLEVBQUUsS0FGRjtBQUd0QkMsVUFBQUEseUJBQXlCLEVBQUUsMkJBQUF6RixlQUFlLENBQUNMLFdBQWhCLDZHQUE2QkMsRUFBN0IsK0dBQWlDQyxhQUFqQyxvRkFBZ0RpQixPQUFoRCxRQUE4RCxLQUhuRTtBQUl0Qm1FLFVBQUFBLGNBQWMsRUFBRSxDQUFDOUMsZ0JBQWdCLENBQUNuQyxlQUFELEVBQWtCQyxnQkFBbEIsRUFBb0MrQyxPQUFwQyxDQUFqQixDQUpNO0FBS3RCSyxVQUFBQSxTQUFTLEVBQUVBO0FBTFcsU0FBdkI7QUFPQSxlQUFPc0MsY0FBUDs7QUFDRDtBQUNDLGNBQU0sSUFBSUMsS0FBSixDQUFVLCtDQUFWLENBQU47QUF2QkY7QUF5QkEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFubm90YXRpb25UZXJtLFxuXHRDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0Q29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcyxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RmFjZXRUeXBlcyxcblx0RmllbGRHcm91cCxcblx0SWRlbnRpZmljYXRpb24sXG5cdFBhcnRPZlByZXZpZXcsXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXMsXG5cdFVJQW5ub3RhdGlvblRlcm1zLFxuXHRVSUFubm90YXRpb25UeXBlc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbmZpZ3VyYWJsZU9iamVjdCwgQ3VzdG9tRWxlbWVudCwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgRm9ybUlELCBGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIEZvcm1hdE9wdGlvbnNUeXBlLCBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldFNlbWFudGljT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHsgZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCwgZ2V0VGFyZ2V0T2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBCYXNlQWN0aW9uLCBDb252ZXJ0ZXJBY3Rpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBhbm5vdGF0aW9uRXhwcmVzc2lvbiwgQmluZGluZ0V4cHJlc3Npb24sIGNvbXBpbGVCaW5kaW5nLCBlcXVhbCwgbm90IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcblxuZXhwb3J0IHR5cGUgRm9ybURlZmluaXRpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM6IGJvb2xlYW47XG5cdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZW51bSBGb3JtRWxlbWVudFR5cGUge1xuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEFubm90YXRpb24gPSBcIkFubm90YXRpb25cIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlRm9ybUVsZW1lbnQgPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0eXBlOiBGb3JtRWxlbWVudFR5cGU7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25Gb3JtRWxlbWVudCA9IEJhc2VGb3JtRWxlbWVudCAmIHtcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRpc1ZhbHVlTXVsdGlsaW5lVGV4dD86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0UGF0aD86IHN0cmluZztcblx0aXNQYXJ0T2ZQcmV2aWV3PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUZvcm1FbGVtZW50ID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUZvcm1FbGVtZW50ICYge1xuXHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5EZWZhdWx0O1xuXHRcdHRlbXBsYXRlOiBzdHJpbmc7XG5cdH1cbj47XG5cbmV4cG9ydCB0eXBlIEZvcm1FbGVtZW50ID0gQ3VzdG9tRm9ybUVsZW1lbnQgfCBBbm5vdGF0aW9uRm9ybUVsZW1lbnQ7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHtcblx0aWQ/OiBzdHJpbmc7XG5cdGZvcm1FbGVtZW50czogRm9ybUVsZW1lbnRbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aXNWaXNpYmxlOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW50aXR5U2V0Pzogc3RyaW5nO1xuXHRhY3Rpb25zPzogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG59O1xuXG4vKipcbiAqIFJldHVybnMgZGVmYXVsdCBmb3JtYXQgb3B0aW9ucyBmb3IgdGV4dCBmaWVsZHMgb24gYSBmb3JtLlxuICpcbiAqIEByZXR1cm5zIHtGb3JtYXRPcHRpb25zVHlwZX0gQ29sbGVjdGlvbiBvZiBmb3JtYXQgb3B0aW9ucyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHRGb3JtYXRPcHRpb25zRm9yRm9ybSgpOiBGb3JtYXRPcHRpb25zVHlwZSB7XG5cdHJldHVybiB7XG5cdFx0dGV4dExpbmVzRWRpdDogNFxuXHR9O1xufVxuXG5mdW5jdGlvbiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc6IFBhcnRPZlByZXZpZXcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0Ly8gQm90aCBlYWNoIGZvcm0gYW5kIGZpZWxkIGNhbiBoYXZlIHRoZSBQYXJ0T2ZQcmV2aWV3IGFubm90YXRpb24uIE9ubHkgaWYgdGhlIGZvcm0gaXMgbm90IGhpZGRlbiAobm90IHBhcnRPZlByZXZpZXcpIHdlIGFsbG93IHRvZ2dsaW5nIG9uIGZpZWxkIGxldmVsXG5cdHJldHVybiAoXG5cdFx0Zm9ybVBhcnRPZlByZXZpZXcgPT09IGZhbHNlIHx8IGZpZWxkLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldyA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldyA9PT0gdHJ1ZVxuXHQpO1xufVxuXG5mdW5jdGlvbiBnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQW5ub3RhdGlvbkZvcm1FbGVtZW50W10ge1xuXHRjb25zdCBmb3JtRWxlbWVudHM6IEFubm90YXRpb25Gb3JtRWxlbWVudFtdID0gW107XG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUFubm90YXRpb246IEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPiB8IEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+ID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhc1xuXHRcdHwgQW5ub3RhdGlvblRlcm08SWRlbnRpZmljYXRpb24+XG5cdFx0fCBBbm5vdGF0aW9uVGVybTxGaWVsZEdyb3VwPjtcblx0Y29udmVydGVyQ29udGV4dCA9IHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQ7XG5cblx0ZnVuY3Rpb24gZ2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcywgZm9ybVBhcnRPZlByZXZpZXc6IFBhcnRPZlByZXZpZXcgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoID0gZ2V0U2VtYW50aWNPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQsIGZpZWxkKTtcblx0XHRpZiAoXG5cdFx0XHRmaWVsZC4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uICYmXG5cdFx0XHRmaWVsZC4kVHlwZSAhPT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uICYmXG5cdFx0XHRmaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpICE9PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHRmb3JtRWxlbWVudHMucHVzaCh7XG5cdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChmaWVsZCksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZpZWxkLmZ1bGx5UXVhbGlmaWVkTmFtZSkgKyBcIi9cIixcblx0XHRcdFx0c2VtYW50aWNPYmplY3RQYXRoOiBzZW1hbnRpY09iamVjdEFubm90YXRpb25QYXRoLFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zOiBnZXREZWZhdWx0Rm9ybWF0T3B0aW9uc0ZvckZvcm0oKSxcblx0XHRcdFx0aXNQYXJ0T2ZQcmV2aWV3OiBpc0ZpZWxkUGFydE9mUHJldmlldyhmaWVsZCwgZm9ybVBhcnRPZlByZXZpZXcpXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRzd2l0Y2ggKGZvcm1Bbm5vdGF0aW9uPy50ZXJtKSB7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwOlxuXHRcdFx0KGZvcm1Bbm5vdGF0aW9uIGFzIEFubm90YXRpb25UZXJtPEZpZWxkR3JvdXA+KS5EYXRhLmZvckVhY2goZmllbGQgPT5cblx0XHRcdFx0Z2V0RGF0YUZpZWxkc0Zyb21Bbm5vdGF0aW9ucyhmaWVsZCwgZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldylcblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0KGZvcm1Bbm5vdGF0aW9uIGFzIEFubm90YXRpb25UZXJtPElkZW50aWZpY2F0aW9uPikuZm9yRWFjaChmaWVsZCA9PlxuXHRcdFx0XHRnZXREYXRhRmllbGRzRnJvbUFubm90YXRpb25zKGZpZWxkLCBmYWNldERlZmluaXRpb24uYW5ub3RhdGlvbnM/LlVJPy5QYXJ0T2ZQcmV2aWV3KVxuXHRcdFx0KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRGF0YVBvaW50OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiRGF0YVBvaW50OjpcIiArIChmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgPyBmb3JtQW5ub3RhdGlvbi5xdWFsaWZpZXIgOiBcIlwiKSxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZm9ybUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSArIFwiL1wiXG5cdFx0XHR9KTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0Zm9ybUVsZW1lbnRzLnB1c2goe1xuXHRcdFx0XHQvLyBrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZm9ybUFubm90YXRpb24pLFxuXHRcdFx0XHRrZXk6IFwiQ29udGFjdDo6XCIgKyAoZm9ybUFubm90YXRpb24ucXVhbGlmaWVyID8gZm9ybUFubm90YXRpb24ucXVhbGlmaWVyIDogXCJcIiksXG5cdFx0XHRcdHR5cGU6IEZvcm1FbGVtZW50VHlwZS5Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGZvcm1Bbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSkgKyBcIi9cIlxuXHRcdFx0fSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1FbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1FbGVtZW50c0Zyb21NYW5pZmVzdChcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRjb25zdCBtYW5pZmVzdEZvcm1Db250YWluZXI6IEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBtYW5pZmVzdFdyYXBwZXIuZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlKTtcblx0Y29uc3QgZm9ybUVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21Gb3JtRWxlbWVudD4gPSB7fTtcblx0aWYgKG1hbmlmZXN0Rm9ybUNvbnRhaW5lcj8uZmllbGRzKSB7XG5cdFx0T2JqZWN0LmtleXMobWFuaWZlc3RGb3JtQ29udGFpbmVyPy5maWVsZHMpLmZvckVhY2goZmllbGRJZCA9PiB7XG5cdFx0XHRmb3JtRWxlbWVudHNbZmllbGRJZF0gPSB7XG5cdFx0XHRcdGtleTogZmllbGRJZCxcblx0XHRcdFx0aWQ6IFwiQ3VzdG9tRm9ybUVsZW1lbnQ6OlwiICsgZmllbGRJZCxcblx0XHRcdFx0dHlwZTogRm9ybUVsZW1lbnRUeXBlLkRlZmF1bHQsXG5cdFx0XHRcdHRlbXBsYXRlOiBtYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLnRlbXBsYXRlLFxuXHRcdFx0XHRsYWJlbDogbWFuaWZlc3RGb3JtQ29udGFpbmVyLmZpZWxkc1tmaWVsZElkXS5sYWJlbCxcblx0XHRcdFx0cG9zaXRpb246IG1hbmlmZXN0Rm9ybUNvbnRhaW5lci5maWVsZHNbZmllbGRJZF0ucG9zaXRpb24gfHwge1xuXHRcdFx0XHRcdHBsYWNlbWVudDogUGxhY2VtZW50LkFmdGVyXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZvcm1hdE9wdGlvbnM6IHtcblx0XHRcdFx0XHQuLi5nZXREZWZhdWx0Rm9ybWF0T3B0aW9uc0ZvckZvcm0oKSxcblx0XHRcdFx0XHQuLi5tYW5pZmVzdEZvcm1Db250YWluZXIuZmllbGRzW2ZpZWxkSWRdLmZvcm1hdE9wdGlvbnNcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZm9ybUVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUNvbnRhaW5lcihcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRhY3Rpb25zOiBCYXNlQWN0aW9uW10gfCBDb252ZXJ0ZXJBY3Rpb25bXSB8IHVuZGVmaW5lZFxuKTogRm9ybUNvbnRhaW5lciB7XG5cdC8vVE9ETyBmb3JtIGNvbnRhaW5lciBpZFxuXHRjb25zdCBzRm9ybUNvbnRhaW5lcklkID0gZ2VuZXJhdGUoW3sgRmFjZXQ6IGZhY2V0RGVmaW5pdGlvbiB9XSk7XG5cdGNvbnN0IHNBbm5vdGF0aW9uUGF0aCA9IFwiL1wiICsgZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUpO1xuXHRjb25zdCBpc1Zpc2libGUgPSBjb21waWxlQmluZGluZyhub3QoZXF1YWwodHJ1ZSwgYW5ub3RhdGlvbkV4cHJlc3Npb24oZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuKSkpKTtcblx0bGV0IHNFbnRpdHlTZXRQYXRoITogc3RyaW5nO1xuXHQvLyByZXNvbHZlZFRhcmdldCBkb2Vzbid0IGhhdmUgYSBlbnRpdHlTZXQgaW4gY2FzZSBDb250YWlubWVudHMgYW5kIFBhcmFtdGVyaXplZCBzZXJ2aWNlcy5cblx0aWYgKFxuXHRcdHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCkgJiZcblx0XHRyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpICE9PSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpXG5cdCkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSk7XG5cdH0gZWxzZSBpZiAocmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkudGFyZ2V0T2JqZWN0Py5jb250YWluc1RhcmdldCA9PT0gdHJ1ZSkge1xuXHRcdHNFbnRpdHlTZXRQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aChyZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwgZmFsc2UpO1xuXHR9XG5cdGNvbnN0IGFGb3JtRWxlbWVudHMgPSBpbnNlcnRDdXN0b21FbGVtZW50cyhcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tQW5ub3RhdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRnZXRGb3JtRWxlbWVudHNGcm9tTWFuaWZlc3QoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHR7IGZvcm1hdE9wdGlvbnM6IFwib3ZlcndyaXRlXCIgfVxuXHQpO1xuXG5cdGFjdGlvbnMgPSBhY3Rpb25zICE9PSB1bmRlZmluZWQgPyBhY3Rpb25zLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLmZhY2V0TmFtZSA9PSBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSA6IFtdO1xuXHRpZiAoYWN0aW9ucy5sZW5ndGggPT09IDApIHtcblx0XHRhY3Rpb25zID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0Y29uc3Qgb0FjdGlvblNob3dEZXRhaWxzOiBCYXNlQWN0aW9uID0ge1xuXHRcdGlkOiBGb3JtU3RhbmRhcmRBY3Rpb25CdXR0b25JRChzRm9ybUNvbnRhaW5lcklkLCBcIlNob3dIaWRlRGV0YWlsc1wiKSxcblx0XHRrZXk6IFwiU3RhbmRhcmRBY3Rpb246OlNob3dIaWRlRGV0YWlsc1wiLFxuXHRcdHRleHQ6IFwie3NhcC5mZS5pMThuPlRfQ09NTU9OX09CSkVDVF9QQUdFX1NIT1dfRk9STV9DT05UQUlORVJfREVUQUlMU31cIixcblx0XHR0eXBlOiBBY3Rpb25UeXBlLlNob3dGb3JtRGV0YWlscyxcblx0XHRwcmVzczogXCJGb3JtQ29udGFpbmVyUnVudGltZS50b2dnbGVEZXRhaWxzXCJcblx0fTtcblxuXHRpZiAoXG5cdFx0ZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uUGFydE9mUHJldmlldyAhPT0gZmFsc2UgJiZcblx0XHRhRm9ybUVsZW1lbnRzLnNvbWUob0Zvcm1FbGVtZW50ID0+IG9Gb3JtRWxlbWVudC5pc1BhcnRPZlByZXZpZXcgPT09IGZhbHNlKVxuXHQpIHtcblx0XHRpZiAoYWN0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRhY3Rpb25zLnB1c2gob0FjdGlvblNob3dEZXRhaWxzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YWN0aW9ucyA9IFtvQWN0aW9uU2hvd0RldGFpbHNdO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0aWQ6IHNGb3JtQ29udGFpbmVySWQsXG5cdFx0Zm9ybUVsZW1lbnRzOiBhRm9ybUVsZW1lbnRzLFxuXHRcdGFubm90YXRpb25QYXRoOiBzQW5ub3RhdGlvblBhdGgsXG5cdFx0aXNWaXNpYmxlOiBpc1Zpc2libGUsXG5cdFx0ZW50aXR5U2V0OiBzRW50aXR5U2V0UGF0aCxcblx0XHRhY3Rpb25zOiBhY3Rpb25zXG5cdH07XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBDb2xsZWN0aW9uRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9uczogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1Db250YWluZXJbXSB7XG5cdGNvbnN0IGZvcm1Db250YWluZXJzOiBGb3JtQ29udGFpbmVyW10gPSBbXTtcblx0Ly9UT0RPIGNvbGwgZmFjZXQgaW5zaWRlIGNvbGwgZmFjZXQ/XG5cdGZhY2V0RGVmaW5pdGlvbi5GYWNldHM/LmZvckVhY2goZmFjZXQgPT4ge1xuXHRcdC8vIElnbm9yZSBsZXZlbCAzIGNvbGxlY3Rpb24gZmFjZXRcblx0XHRpZiAoZmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3JtQ29udGFpbmVycy5wdXNoKGdldEZvcm1Db250YWluZXIoZmFjZXQgYXMgUmVmZXJlbmNlRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucykpO1xuXHR9KTtcblx0cmV0dXJuIGZvcm1Db250YWluZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZlcmVuY2VGYWNldChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMpOiBmYWNldERlZmluaXRpb24gaXMgUmVmZXJlbmNlRmFjZXRUeXBlcyB7XG5cdHJldHVybiBmYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybURlZmluaXRpb24oXG5cdGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcyxcblx0aXNWaXNpYmxlOiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9uczogQmFzZUFjdGlvbltdIHwgQ29udmVydGVyQWN0aW9uW11cbik6IEZvcm1EZWZpbml0aW9uIHtcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdC8vIEtlZXAgb25seSB2YWxpZCBjaGlsZHJlblxuXHRcdFx0Y29uc3QgZm9ybUNvbGxlY3Rpb25EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRpZDogRm9ybUlEKHsgRmFjZXQ6IGZhY2V0RGVmaW5pdGlvbiB9KSxcblx0XHRcdFx0dXNlRm9ybUNvbnRhaW5lckxhYmVsczogdHJ1ZSxcblx0XHRcdFx0aGFzRmFjZXRzTm90UGFydE9mUHJldmlldzogZmFjZXREZWZpbml0aW9uLkZhY2V0cy5zb21lKFxuXHRcdFx0XHRcdGNoaWxkRmFjZXQgPT4gY2hpbGRGYWNldC5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSA9PT0gZmFsc2Vcblx0XHRcdFx0KSxcblx0XHRcdFx0Zm9ybUNvbnRhaW5lcnM6IGdldEZvcm1Db250YWluZXJzRm9yQ29sbGVjdGlvbihmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpLFxuXHRcdFx0XHRpc1Zpc2libGU6IGlzVmlzaWJsZVxuXHRcdFx0fTtcblx0XHRcdHJldHVybiBmb3JtQ29sbGVjdGlvbkRlZmluaXRpb247XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdGNvbnN0IGZvcm1EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRpZDogRm9ybUlEKHsgRmFjZXQ6IGZhY2V0RGVmaW5pdGlvbiB9KSxcblx0XHRcdFx0dXNlRm9ybUNvbnRhaW5lckxhYmVsczogZmFsc2UsXG5cdFx0XHRcdGhhc0ZhY2V0c05vdFBhcnRPZlByZXZpZXc6IGZhY2V0RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uVUk/LlBhcnRPZlByZXZpZXc/LnZhbHVlT2YoKSA9PT0gZmFsc2UsXG5cdFx0XHRcdGZvcm1Db250YWluZXJzOiBbZ2V0Rm9ybUNvbnRhaW5lcihmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQsIGFjdGlvbnMpXSxcblx0XHRcdFx0aXNWaXNpYmxlOiBpc1Zpc2libGVcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gZm9ybURlZmluaXRpb247XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZm9ybSBiYXNlZCBvbiBSZWZlcmVuY2VVUkxGYWNldFwiKTtcblx0fVxufVxuIl19
|
|
@@ -6,20 +6,21 @@ import {
|
|
|
6
6
|
FacetTypes,
|
|
7
7
|
FieldGroup,
|
|
8
8
|
Identification,
|
|
9
|
+
PartOfPreview,
|
|
9
10
|
ReferenceFacetTypes,
|
|
10
11
|
UIAnnotationTerms,
|
|
11
12
|
UIAnnotationTypes
|
|
12
13
|
} from "@sap-ux/vocabularies-types";
|
|
13
|
-
import { BindingExpression } from "sap/fe/core/helpers/BindingExpression";
|
|
14
14
|
import { ConfigurableObject, CustomElement, insertCustomElements, Placement } from "../../helpers/ConfigurableObject";
|
|
15
|
-
import { FormID } from "../../helpers/ID";
|
|
15
|
+
import { FormID, FormStandardActionButtonID } from "../../helpers/ID";
|
|
16
16
|
import { KeyHelper } from "../../helpers/Key";
|
|
17
|
-
import {
|
|
17
|
+
import { ActionType, FormatOptionsType, FormManifestConfiguration } from "../../ManifestSettings";
|
|
18
18
|
import { getSemanticObjectPath } from "sap/fe/core/converters/annotations/DataField";
|
|
19
19
|
import { getTargetEntitySetPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
20
20
|
import { generate } from "../../../helpers/StableIdHelper";
|
|
21
21
|
import ConverterContext from "../../ConverterContext";
|
|
22
22
|
import { BaseAction, ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
23
|
+
import { annotationExpression, BindingExpression, compileBinding, equal, not } from "sap/fe/core/helpers/BindingExpression";
|
|
23
24
|
|
|
24
25
|
export type FormDefinition = {
|
|
25
26
|
id: string;
|
|
@@ -45,6 +46,7 @@ export type AnnotationFormElement = BaseFormElement & {
|
|
|
45
46
|
annotationPath?: string;
|
|
46
47
|
isValueMultilineText?: boolean;
|
|
47
48
|
semanticObjectPath?: string;
|
|
49
|
+
isPartOfPreview?: boolean;
|
|
48
50
|
};
|
|
49
51
|
|
|
50
52
|
export type CustomFormElement = CustomElement<
|
|
@@ -60,6 +62,7 @@ type FormContainer = {
|
|
|
60
62
|
id?: string;
|
|
61
63
|
formElements: FormElement[];
|
|
62
64
|
annotationPath: string;
|
|
65
|
+
isVisible: BindingExpression<boolean>;
|
|
63
66
|
entitySet?: string;
|
|
64
67
|
actions?: ConverterAction[] | BaseAction[];
|
|
65
68
|
};
|
|
@@ -75,6 +78,13 @@ function getDefaultFormatOptionsForForm(): FormatOptionsType {
|
|
|
75
78
|
};
|
|
76
79
|
}
|
|
77
80
|
|
|
81
|
+
function isFieldPartOfPreview(field: DataFieldAbstractTypes, formPartOfPreview: PartOfPreview | undefined): boolean {
|
|
82
|
+
// Both each form and field can have the PartOfPreview annotation. Only if the form is not hidden (not partOfPreview) we allow toggling on field level
|
|
83
|
+
return (
|
|
84
|
+
formPartOfPreview === false || field.annotations?.UI?.PartOfPreview === undefined || field.annotations?.UI?.PartOfPreview === true
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
78
88
|
function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, converterContext: ConverterContext): AnnotationFormElement[] {
|
|
79
89
|
const formElements: AnnotationFormElement[] = [];
|
|
80
90
|
const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
@@ -83,7 +93,7 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
|
|
|
83
93
|
| AnnotationTerm<FieldGroup>;
|
|
84
94
|
converterContext = resolvedTarget.converterContext;
|
|
85
95
|
|
|
86
|
-
function getDataFieldsFromAnnotations(field: DataFieldAbstractTypes) {
|
|
96
|
+
function getDataFieldsFromAnnotations(field: DataFieldAbstractTypes, formPartOfPreview: PartOfPreview | undefined) {
|
|
87
97
|
const semanticObjectAnnotationPath = getSemanticObjectPath(converterContext, field);
|
|
88
98
|
if (
|
|
89
99
|
field.$Type !== UIAnnotationTypes.DataFieldForAction &&
|
|
@@ -95,17 +105,22 @@ function getFormElementsFromAnnotations(facetDefinition: ReferenceFacetTypes, co
|
|
|
95
105
|
type: FormElementType.Annotation,
|
|
96
106
|
annotationPath: converterContext.getEntitySetBasedAnnotationPath(field.fullyQualifiedName) + "/",
|
|
97
107
|
semanticObjectPath: semanticObjectAnnotationPath,
|
|
98
|
-
formatOptions: getDefaultFormatOptionsForForm()
|
|
108
|
+
formatOptions: getDefaultFormatOptionsForForm(),
|
|
109
|
+
isPartOfPreview: isFieldPartOfPreview(field, formPartOfPreview)
|
|
99
110
|
});
|
|
100
111
|
}
|
|
101
112
|
}
|
|
102
113
|
|
|
103
114
|
switch (formAnnotation?.term) {
|
|
104
115
|
case UIAnnotationTerms.FieldGroup:
|
|
105
|
-
(formAnnotation as AnnotationTerm<FieldGroup>).Data.forEach(
|
|
116
|
+
(formAnnotation as AnnotationTerm<FieldGroup>).Data.forEach(field =>
|
|
117
|
+
getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
|
|
118
|
+
);
|
|
106
119
|
break;
|
|
107
120
|
case UIAnnotationTerms.Identification:
|
|
108
|
-
(formAnnotation as AnnotationTerm<Identification>).forEach(
|
|
121
|
+
(formAnnotation as AnnotationTerm<Identification>).forEach(field =>
|
|
122
|
+
getDataFieldsFromAnnotations(field, facetDefinition.annotations?.UI?.PartOfPreview)
|
|
123
|
+
);
|
|
109
124
|
break;
|
|
110
125
|
case UIAnnotationTerms.DataPoint:
|
|
111
126
|
formElements.push({
|
|
@@ -163,7 +178,10 @@ export function getFormContainer(
|
|
|
163
178
|
actions: BaseAction[] | ConverterAction[] | undefined
|
|
164
179
|
): FormContainer {
|
|
165
180
|
//TODO form container id
|
|
181
|
+
const sFormContainerId = generate([{ Facet: facetDefinition }]);
|
|
182
|
+
const sAnnotationPath = "/" + facetDefinition.fullyQualifiedName;
|
|
166
183
|
const resolvedTarget = converterContext.getEntityTypeAnnotation(facetDefinition.Target.value);
|
|
184
|
+
const isVisible = compileBinding(not(equal(true, annotationExpression(facetDefinition.annotations?.UI?.Hidden))));
|
|
167
185
|
let sEntitySetPath!: string;
|
|
168
186
|
// resolvedTarget doesn't have a entitySet in case Containments and Paramterized services.
|
|
169
187
|
if (
|
|
@@ -174,18 +192,41 @@ export function getFormContainer(
|
|
|
174
192
|
} else if (resolvedTarget.converterContext.getDataModelObjectPath().targetObject?.containsTarget === true) {
|
|
175
193
|
sEntitySetPath = getTargetObjectPath(resolvedTarget.converterContext.getDataModelObjectPath(), false);
|
|
176
194
|
}
|
|
195
|
+
const aFormElements = insertCustomElements(
|
|
196
|
+
getFormElementsFromAnnotations(facetDefinition, converterContext),
|
|
197
|
+
getFormElementsFromManifest(facetDefinition, converterContext),
|
|
198
|
+
{ formatOptions: "overwrite" }
|
|
199
|
+
);
|
|
200
|
+
|
|
177
201
|
actions = actions !== undefined ? actions.filter(action => action.facetName == facetDefinition.fullyQualifiedName) : [];
|
|
178
202
|
if (actions.length === 0) {
|
|
179
203
|
actions = undefined;
|
|
180
204
|
}
|
|
205
|
+
|
|
206
|
+
const oActionShowDetails: BaseAction = {
|
|
207
|
+
id: FormStandardActionButtonID(sFormContainerId, "ShowHideDetails"),
|
|
208
|
+
key: "StandardAction::ShowHideDetails",
|
|
209
|
+
text: "{sap.fe.i18n>T_COMMON_OBJECT_PAGE_SHOW_FORM_CONTAINER_DETAILS}",
|
|
210
|
+
type: ActionType.ShowFormDetails,
|
|
211
|
+
press: "FormContainerRuntime.toggleDetails"
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
if (
|
|
215
|
+
facetDefinition.annotations?.UI?.PartOfPreview !== false &&
|
|
216
|
+
aFormElements.some(oFormElement => oFormElement.isPartOfPreview === false)
|
|
217
|
+
) {
|
|
218
|
+
if (actions !== undefined) {
|
|
219
|
+
actions.push(oActionShowDetails);
|
|
220
|
+
} else {
|
|
221
|
+
actions = [oActionShowDetails];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
181
225
|
return {
|
|
182
|
-
id:
|
|
183
|
-
formElements:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
{ formatOptions: "overwrite" }
|
|
187
|
-
),
|
|
188
|
-
annotationPath: "/" + facetDefinition.fullyQualifiedName,
|
|
226
|
+
id: sFormContainerId,
|
|
227
|
+
formElements: aFormElements,
|
|
228
|
+
annotationPath: sAnnotationPath,
|
|
229
|
+
isVisible: isVisible,
|
|
189
230
|
entitySet: sEntitySetPath,
|
|
190
231
|
actions: actions
|
|
191
232
|
};
|
|
@@ -214,6 +255,7 @@ export function isReferenceFacet(facetDefinition: FacetTypes): facetDefinition i
|
|
|
214
255
|
|
|
215
256
|
export function createFormDefinition(
|
|
216
257
|
facetDefinition: FacetTypes,
|
|
258
|
+
isVisible: BindingExpression<boolean>,
|
|
217
259
|
converterContext: ConverterContext,
|
|
218
260
|
actions: BaseAction[] | ConverterAction[]
|
|
219
261
|
): FormDefinition {
|
|
@@ -226,7 +268,8 @@ export function createFormDefinition(
|
|
|
226
268
|
hasFacetsNotPartOfPreview: facetDefinition.Facets.some(
|
|
227
269
|
childFacet => childFacet.annotations?.UI?.PartOfPreview?.valueOf() === false
|
|
228
270
|
),
|
|
229
|
-
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions)
|
|
271
|
+
formContainers: getFormContainersForCollection(facetDefinition, converterContext, actions),
|
|
272
|
+
isVisible: isVisible
|
|
230
273
|
};
|
|
231
274
|
return formCollectionDefinition;
|
|
232
275
|
case UIAnnotationTypes.ReferenceFacet:
|
|
@@ -234,7 +277,8 @@ export function createFormDefinition(
|
|
|
234
277
|
id: FormID({ Facet: facetDefinition }),
|
|
235
278
|
useFormContainerLabels: false,
|
|
236
279
|
hasFacetsNotPartOfPreview: facetDefinition.annotations?.UI?.PartOfPreview?.valueOf() === false,
|
|
237
|
-
formContainers: [getFormContainer(facetDefinition, converterContext, actions)]
|
|
280
|
+
formContainers: [getFormContainer(facetDefinition, converterContext, actions)],
|
|
281
|
+
isVisible: isVisible
|
|
238
282
|
};
|
|
239
283
|
return formDefinition;
|
|
240
284
|
default:
|