@sapui5/sap.fe.core 1.93.3 → 1.97.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.
Files changed (193) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +8 -40
  4. package/src/sap/fe/core/BusyLocker.js +12 -0
  5. package/src/sap/fe/core/CommonUtils.js +224 -48
  6. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  7. package/src/sap/fe/core/PageController.js +13 -2
  8. package/src/sap/fe/core/RouterProxy.js +52 -64
  9. package/src/sap/fe/core/TemplateComponent.js +8 -2
  10. package/src/sap/fe/core/TransactionHelper.js +210 -180
  11. package/src/sap/fe/core/actions/draft.js +13 -1
  12. package/src/sap/fe/core/actions/messageHandling.js +80 -4
  13. package/src/sap/fe/core/actions/operations.js +207 -68
  14. package/src/sap/fe/core/controllerextensions/EditFlow.js +82 -55
  15. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +13 -6
  16. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +132 -23
  17. package/src/sap/fe/core/controllerextensions/InternalRouting.js +203 -214
  18. package/src/sap/fe/core/controllerextensions/KPIManagement.js +834 -170
  19. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +890 -189
  20. package/src/sap/fe/core/controllerextensions/MessageHandler.js +222 -102
  21. package/src/sap/fe/core/controllerextensions/PageReady.js +48 -33
  22. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -14
  23. package/src/sap/fe/core/controllerextensions/Paginator.js +150 -0
  24. package/src/sap/fe/core/controllerextensions/Placeholder.js +133 -270
  25. package/src/sap/fe/core/controllerextensions/Share.js +12 -9
  26. package/src/sap/fe/core/controllerextensions/SideEffects.js +5 -6
  27. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
  28. package/src/sap/fe/core/controllerextensions/ViewState.js +202 -8
  29. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
  30. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  31. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +1 -1
  32. package/src/sap/fe/core/controls/CustomQuickViewPage.js +109 -108
  33. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  34. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +15 -4
  35. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +250 -94
  36. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +129 -135
  37. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +325 -0
  38. package/src/sap/fe/core/controls/filterbar.d.js +8 -0
  39. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
  40. package/src/sap/fe/core/converters/ConverterContext.js +19 -5
  41. package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
  42. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  43. package/src/sap/fe/core/converters/ManifestSettings.ts +13 -3
  44. package/src/sap/fe/core/converters/ManifestWrapper.js +9 -9
  45. package/src/sap/fe/core/converters/MetaModelConverter.js +867 -871
  46. package/src/sap/fe/core/converters/MetaModelConverter.ts +772 -827
  47. package/src/sap/fe/core/converters/TemplateConverter.js +4 -4
  48. package/src/sap/fe/core/converters/annotations/DataField.js +57 -7
  49. package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
  50. package/src/sap/fe/core/converters/common/AnnotationConverter.js +146 -85
  51. package/src/sap/fe/core/converters/controls/Common/Action.js +61 -56
  52. package/src/sap/fe/core/converters/controls/Common/Action.ts +54 -39
  53. package/src/sap/fe/core/converters/controls/Common/Chart.js +101 -9
  54. package/src/sap/fe/core/converters/controls/Common/Chart.ts +100 -5
  55. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
  56. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
  57. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
  58. package/src/sap/fe/core/converters/controls/Common/Form.js +77 -29
  59. package/src/sap/fe/core/converters/controls/Common/Form.ts +79 -21
  60. package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
  61. package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
  62. package/src/sap/fe/core/converters/controls/Common/Table.js +521 -166
  63. package/src/sap/fe/core/converters/controls/Common/Table.ts +519 -115
  64. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +487 -0
  65. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +541 -0
  66. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +364 -0
  67. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +338 -0
  68. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
  69. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
  70. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +11 -11
  71. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +47 -35
  72. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +45 -29
  73. package/src/sap/fe/core/converters/helpers/Aggregation.js +31 -32
  74. package/src/sap/fe/core/converters/helpers/Aggregation.ts +26 -27
  75. package/src/sap/fe/core/converters/helpers/BindingHelper.js +27 -2
  76. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +22 -2
  77. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  78. package/src/sap/fe/core/converters/helpers/ID.js +9 -3
  79. package/src/sap/fe/core/converters/helpers/ID.ts +6 -3
  80. package/src/sap/fe/core/converters/helpers/IssueManager.js +5 -4
  81. package/src/sap/fe/core/converters/helpers/IssueManager.ts +4 -3
  82. package/src/sap/fe/core/converters/helpers/Key.js +3 -3
  83. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
  84. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
  85. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +18 -5
  86. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
  87. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +91 -20
  88. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +77 -5
  89. package/src/sap/fe/core/converters/templates/ListReportConverter.js +87 -714
  90. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +85 -812
  91. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -17
  92. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +121 -16
  93. package/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -1
  94. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  95. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  96. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  97. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  98. package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
  99. package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  100. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  101. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  102. package/src/sap/fe/core/fpm/Component.js +1 -1
  103. package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -3
  104. package/src/sap/fe/core/helpers/BindingExpression.js +6 -6
  105. package/src/sap/fe/core/helpers/ClassSupport.js +4 -4
  106. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +0 -2
  107. package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
  108. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  109. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
  110. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  111. package/src/sap/fe/core/helpers/ModelHelper.js +78 -0
  112. package/src/sap/fe/core/helpers/PasteHelper.js +6 -0
  113. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -2
  114. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  115. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  116. package/src/sap/fe/core/jsx-runtime/jsx.js +2 -2
  117. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  118. package/src/sap/fe/core/library.js +1 -1
  119. package/src/sap/fe/core/messagebundle.properties +45 -2
  120. package/src/sap/fe/core/messagebundle_ar.properties +53 -1
  121. package/src/sap/fe/core/messagebundle_bg.properties +52 -0
  122. package/src/sap/fe/core/messagebundle_ca.properties +54 -2
  123. package/src/sap/fe/core/messagebundle_cs.properties +52 -0
  124. package/src/sap/fe/core/messagebundle_cy.properties +52 -0
  125. package/src/sap/fe/core/messagebundle_da.properties +53 -1
  126. package/src/sap/fe/core/messagebundle_de.properties +55 -3
  127. package/src/sap/fe/core/messagebundle_el.properties +53 -1
  128. package/src/sap/fe/core/messagebundle_en.properties +52 -0
  129. package/src/sap/fe/core/messagebundle_en_GB.properties +53 -1
  130. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +49 -1
  131. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +53 -1
  132. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +53 -1
  133. package/src/sap/fe/core/messagebundle_es.properties +60 -8
  134. package/src/sap/fe/core/messagebundle_es_MX.properties +55 -3
  135. package/src/sap/fe/core/messagebundle_et.properties +52 -0
  136. package/src/sap/fe/core/messagebundle_fi.properties +52 -0
  137. package/src/sap/fe/core/messagebundle_fr.properties +61 -9
  138. package/src/sap/fe/core/messagebundle_fr_CA.properties +52 -0
  139. package/src/sap/fe/core/messagebundle_hi.properties +53 -1
  140. package/src/sap/fe/core/messagebundle_hr.properties +53 -1
  141. package/src/sap/fe/core/messagebundle_hu.properties +52 -0
  142. package/src/sap/fe/core/messagebundle_id.properties +54 -2
  143. package/src/sap/fe/core/messagebundle_it.properties +53 -1
  144. package/src/sap/fe/core/messagebundle_iw.properties +54 -2
  145. package/src/sap/fe/core/messagebundle_ja.properties +62 -10
  146. package/src/sap/fe/core/messagebundle_kk.properties +53 -1
  147. package/src/sap/fe/core/messagebundle_ko.properties +53 -1
  148. package/src/sap/fe/core/messagebundle_lt.properties +53 -1
  149. package/src/sap/fe/core/messagebundle_lv.properties +53 -1
  150. package/src/sap/fe/core/messagebundle_ms.properties +53 -1
  151. package/src/sap/fe/core/messagebundle_nl.properties +57 -5
  152. package/src/sap/fe/core/messagebundle_no.properties +54 -2
  153. package/src/sap/fe/core/messagebundle_pl.properties +53 -1
  154. package/src/sap/fe/core/messagebundle_pt.properties +54 -2
  155. package/src/sap/fe/core/messagebundle_pt_PT.properties +53 -1
  156. package/src/sap/fe/core/messagebundle_ro.properties +53 -1
  157. package/src/sap/fe/core/messagebundle_ru.properties +53 -1
  158. package/src/sap/fe/core/messagebundle_sh.properties +53 -1
  159. package/src/sap/fe/core/messagebundle_sk.properties +52 -0
  160. package/src/sap/fe/core/messagebundle_sl.properties +53 -1
  161. package/src/sap/fe/core/messagebundle_sv.properties +53 -1
  162. package/src/sap/fe/core/messagebundle_th.properties +52 -0
  163. package/src/sap/fe/core/messagebundle_tr.properties +52 -0
  164. package/src/sap/fe/core/messagebundle_uk.properties +52 -0
  165. package/src/sap/fe/core/messagebundle_vi.properties +53 -1
  166. package/src/sap/fe/core/messagebundle_zh_CN.properties +53 -1
  167. package/src/sap/fe/core/messagebundle_zh_TW.properties +53 -1
  168. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +5 -5
  169. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
  170. package/src/sap/fe/core/services/RoutingServiceFactory.js +154 -78
  171. package/src/sap/fe/core/services/ShellServicesFactory.js +9 -9
  172. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +11 -12
  173. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +12 -2
  174. package/src/sap/fe/core/support/AnnotationIssue.support.js +2 -4
  175. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +2 -4
  176. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -4
  177. package/src/sap/fe/core/support/CommonHelper.js +2 -4
  178. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  179. package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -4
  180. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
  181. package/src/sap/fe/core/templating/DataModelPathHelper.js +54 -6
  182. package/src/sap/fe/core/templating/DataModelPathHelper.ts +54 -4
  183. package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
  184. package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
  185. package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  186. package/src/sap/fe/core/templating/FilterHelper.js +23 -5
  187. package/src/sap/fe/core/templating/FilterHelper.ts +15 -1
  188. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  189. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  190. package/src/sap/fe/core/templating/PropertyHelper.js +8 -8
  191. package/src/sap/fe/core/templating/UIFormatters.js +72 -4
  192. package/src/sap/fe/core/templating/UIFormatters.ts +98 -3
  193. package/src/sap/fe/core/type/Email.js +1 -1
@@ -21,12 +21,12 @@ import {
21
21
  ConverterAction,
22
22
  CustomAction,
23
23
  getActionsFromManifest,
24
- getEnabledBinding,
25
24
  isActionNavigable,
26
25
  ButtonType,
27
26
  getSemanticObjectMapping,
28
27
  removeDuplicateActions,
29
- BaseAction
28
+ BaseAction,
29
+ getEnabledForAnnotationAction
30
30
  } from "sap/fe/core/converters/controls/Common/Action";
31
31
  import { KeyHelper } from "sap/fe/core/converters/helpers/Key";
32
32
  import {
@@ -78,6 +78,7 @@ type BaseSubSection = {
78
78
  flexSettings?: FlexSettings;
79
79
  stashed?: boolean;
80
80
  level: number;
81
+ content?: Array<ObjectPageSubSection>;
81
82
  sideContent?: SideContentDef;
82
83
  };
83
84
 
@@ -132,6 +133,7 @@ type SideContentDef = {
132
133
  sideContentFallDown?: string;
133
134
  containerQuery?: string;
134
135
  visible?: boolean;
136
+ equalSplit?: boolean;
135
137
  };
136
138
 
137
139
  export type CustomObjectPageSection = CustomElement<ObjectPageSection>;
@@ -152,10 +154,10 @@ const hasTable = (facets: any[] = []) => {
152
154
  /**
153
155
  * Create subsections based on facet definition.
154
156
  *
155
- * @param facetCollection
156
- * @param converterContext
157
- * @param isHeaderSection
158
- * @returns {ObjectPageSubSection[]} The current subections
157
+ * @param {FacetTypes[]} facetCollection Collection of facets
158
+ * @param {ConverterContext} converterContext The converter context
159
+ * @param {boolean} isHeaderSection True if header section is generated in this iteration
160
+ * @returns {ObjectPageSubSection[]} The current subsections
159
161
  */
160
162
  export function createSubSections(
161
163
  facetCollection: FacetTypes[],
@@ -193,8 +195,8 @@ export function createSubSections(
193
195
  /**
194
196
  * Creates subsections based on the definition of the custom header facet.
195
197
  *
196
- * @param converterContext The converter context
197
- * @returns {ObjectPageSubSection[]} The current subections
198
+ * @param {ConverterContext} converterContext The converter context
199
+ * @returns {ObjectPageSubSection[]} The current subsections
198
200
  */
199
201
  export function createCustomHeaderFacetSubSections(converterContext: ConverterContext): ObjectPageSubSection[] {
200
202
  const customHeaderFacets: Record<string, CustomObjectPageHeaderFacet> = getHeaderFacetsFromManifest(
@@ -304,14 +306,14 @@ function getButtonType(Emphasized: Emphasized): ButtonType | string {
304
306
  }
305
307
 
306
308
  /**
307
- * Create a subsection based on a FacetTypes.
309
+ * Create a subsection based on FacetTypes.
308
310
  * @param facetDefinition
309
311
  * @param facetsToCreate
310
312
  * @param converterContext
311
313
  * @param level
312
314
  * @param hasSingleContent
313
315
  * @param isHeaderSection
314
- * @returns {ObjectPageSubSection} A sub section definition
316
+ * @returns {ObjectPageSubSection} A subsection definition
315
317
  */
316
318
  export function createSubSection(
317
319
  facetDefinition: FacetTypes,
@@ -373,13 +375,14 @@ export function createSubSection(
373
375
  };
374
376
  return mixedSubSection;
375
377
  } else {
376
- const formCollectionSubSection: FormSubSection = {
377
- ...subSection,
378
- type: SubSectionType.Form,
379
- formDefinition: createFormDefinition(facetDefinition, converterContext),
380
- level: level,
381
- actions: getFacetActions(facetDefinition, converterContext)
382
- };
378
+ const actions = getFacetActions(facetDefinition, converterContext),
379
+ formCollectionSubSection: FormSubSection = {
380
+ ...subSection,
381
+ type: SubSectionType.Form,
382
+ formDefinition: createFormDefinition(facetDefinition, converterContext, actions),
383
+ level: level,
384
+ actions: actions.filter(action => action.facetName === undefined)
385
+ };
383
386
  return formCollectionSubSection;
384
387
  }
385
388
  case UIAnnotationTypes.ReferenceFacet:
@@ -415,13 +418,14 @@ export function createSubSection(
415
418
  case UIAnnotationTerms.StatusInfo:
416
419
  case CommunicationAnnotationTerms.Contact:
417
420
  // All those element belong to a form facet
418
- const formElementSubSection: FormSubSection = {
419
- ...subSection,
420
- type: SubSectionType.Form,
421
- level: level,
422
- formDefinition: createFormDefinition(facetDefinition, converterContext),
423
- actions: getFacetActions(facetDefinition, converterContext)
424
- };
421
+ const actions = getFacetActions(facetDefinition, converterContext),
422
+ formElementSubSection: FormSubSection = {
423
+ ...subSection,
424
+ type: SubSectionType.Form,
425
+ level: level,
426
+ formDefinition: createFormDefinition(facetDefinition, converterContext, actions),
427
+ actions: actions.filter(action => action.facetName === undefined)
428
+ };
425
429
  return formElementSubSection;
426
430
 
427
431
  default:
@@ -473,7 +477,12 @@ function createFormActionReducer(
473
477
  dataFieldCollection = (referenceTarget as FieldGroup).Data;
474
478
  manifestActions = getActionsFromManifest(
475
479
  converterContext.getManifestControlConfiguration(referenceTarget).actions,
476
- converterContext
480
+ converterContext,
481
+ undefined,
482
+ undefined,
483
+ undefined,
484
+ undefined,
485
+ facetDefinition.fullyQualifiedName as string
477
486
  );
478
487
  break;
479
488
  case UIAnnotationTerms.Identification:
@@ -499,6 +508,11 @@ function createFormActionReducer(
499
508
  .getDiagnostics()
500
509
  .addIssue(IssueCategory.Annotation, IssueSeverity.Low, IssueType.MALFORMED_DATAFIELD_FOR_IBN.INLINE);
501
510
  }
511
+ if (dataField.Determining?.valueOf() === true) {
512
+ converterContext
513
+ .getDiagnostics()
514
+ .addIssue(IssueCategory.Annotation, IssueSeverity.Low, IssueType.MALFORMED_DATAFIELD_FOR_IBN.DETERMINING);
515
+ }
502
516
  const mNavigationParameters: any = {};
503
517
  if (dataField.Mapping) {
504
518
  mNavigationParameters.semanticObjectMapping = getSemanticObjectMapping(dataField.Mapping);
@@ -537,7 +551,7 @@ function createFormActionReducer(
537
551
  key: key,
538
552
  text: dataField.Label?.toString(),
539
553
  annotationPath: "",
540
- enabled: getEnabledBinding(dataField.ActionTarget),
554
+ enabled: getEnabledForAnnotationAction(converterContext, dataField.ActionTarget),
541
555
  binding: navigationPropertyPath ? "{ 'path' : '" + navigationPropertyPath + "'}" : undefined,
542
556
  visible: compileBinding(not(equal(annotationExpression(dataField.annotations?.UI?.Hidden?.valueOf()), true))),
543
557
  requiresDialog: isDialog(dataField.ActionTarget),
@@ -561,7 +575,8 @@ function createFormActionReducer(
561
575
  ],
562
576
  ref(".editFlow")
563
577
  )
564
- )
578
+ ),
579
+ facetName: dataField.Inline ? (facetDefinition.fullyQualifiedName as string) : undefined
565
580
  });
566
581
  break;
567
582
  }
@@ -604,7 +619,8 @@ export function createCustomSubSection(
604
619
  ? {
605
620
  template: manifestSubSection.sideContent.template,
606
621
  id: SideContentID(subSectionKey),
607
- visible: false
622
+ visible: false,
623
+ equalSplit: manifestSubSection.sideContent.equalSplit
608
624
  }
609
625
  : undefined;
610
626
  let position = manifestSubSection.position;
@@ -621,7 +637,7 @@ export function createCustomSubSection(
621
637
  title: manifestSubSection.title,
622
638
  level: 1,
623
639
  position: position,
624
- visible: manifestSubSection.visible,
640
+ visible: manifestSubSection.visible !== undefined ? manifestSubSection.visible : true,
625
641
  sideContent: sideContent
626
642
  };
627
643
  if (manifestSubSection.template || manifestSubSection.name) {
@@ -24,35 +24,35 @@ sap.ui.define([], function () {
24
24
  * @param converterContext The ConverterContext
25
25
  */
26
26
  function AggregationHelper(entityType, converterContext) {
27
- var _this$_oAggregationAn, _this$_oAggregationAn4, _this$_oAggregationAn7, _oTargetAggregationAn;
27
+ var _this$_oAggregationAn, _this$_oAggregationAn4, _this$_oAggregationAn7, _this$oTargetAggregat;
28
28
 
29
29
  _classCallCheck(this, AggregationHelper);
30
30
 
31
31
  this._entityType = entityType;
32
32
  this._converterContext = converterContext;
33
33
  this._oAggregationAnnotationTarget = this._determineAggregationAnnotationTarget();
34
- var oTargetAggregationAnnotations;
35
34
 
36
35
  if (((_this$_oAggregationAn = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn === void 0 ? void 0 : _this$_oAggregationAn._type) === "NavigationProperty") {
37
36
  var _this$_oAggregationAn2, _this$_oAggregationAn3;
38
37
 
39
- oTargetAggregationAnnotations = (_this$_oAggregationAn2 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn2 === void 0 ? void 0 : (_this$_oAggregationAn3 = _this$_oAggregationAn2.annotations) === null || _this$_oAggregationAn3 === void 0 ? void 0 : _this$_oAggregationAn3.Aggregation;
38
+ this.oTargetAggregationAnnotations = (_this$_oAggregationAn2 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn2 === void 0 ? void 0 : (_this$_oAggregationAn3 = _this$_oAggregationAn2.annotations) === null || _this$_oAggregationAn3 === void 0 ? void 0 : _this$_oAggregationAn3.Aggregation;
40
39
  } else if (((_this$_oAggregationAn4 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn4 === void 0 ? void 0 : _this$_oAggregationAn4._type) === "EntityType") {
41
40
  var _this$_oAggregationAn5, _this$_oAggregationAn6;
42
41
 
43
- oTargetAggregationAnnotations = (_this$_oAggregationAn5 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn5 === void 0 ? void 0 : (_this$_oAggregationAn6 = _this$_oAggregationAn5.annotations) === null || _this$_oAggregationAn6 === void 0 ? void 0 : _this$_oAggregationAn6.Aggregation;
42
+ this.oTargetAggregationAnnotations = (_this$_oAggregationAn5 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn5 === void 0 ? void 0 : (_this$_oAggregationAn6 = _this$_oAggregationAn5.annotations) === null || _this$_oAggregationAn6 === void 0 ? void 0 : _this$_oAggregationAn6.Aggregation;
44
43
  } else if (((_this$_oAggregationAn7 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn7 === void 0 ? void 0 : _this$_oAggregationAn7._type) === "EntitySet") {
45
44
  var _this$_oAggregationAn8, _this$_oAggregationAn9;
46
45
 
47
- oTargetAggregationAnnotations = (_this$_oAggregationAn8 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn8 === void 0 ? void 0 : (_this$_oAggregationAn9 = _this$_oAggregationAn8.annotations) === null || _this$_oAggregationAn9 === void 0 ? void 0 : _this$_oAggregationAn9.Aggregation;
46
+ this.oTargetAggregationAnnotations = (_this$_oAggregationAn8 = this._oAggregationAnnotationTarget) === null || _this$_oAggregationAn8 === void 0 ? void 0 : (_this$_oAggregationAn9 = _this$_oAggregationAn8.annotations) === null || _this$_oAggregationAn9 === void 0 ? void 0 : _this$_oAggregationAn9.Aggregation;
48
47
  }
49
48
 
50
- this._bApplySupported = ((_oTargetAggregationAn = oTargetAggregationAnnotations) === null || _oTargetAggregationAn === void 0 ? void 0 : _oTargetAggregationAn.ApplySupported) ? true : false;
49
+ this._bApplySupported = (_this$oTargetAggregat = this.oTargetAggregationAnnotations) !== null && _this$oTargetAggregat !== void 0 && _this$oTargetAggregat.ApplySupported ? true : false;
51
50
 
52
51
  if (this._bApplySupported) {
53
- var _oTargetAggregationAn2, _oTargetAggregationAn3;
52
+ var _this$oTargetAggregat2, _this$oTargetAggregat3, _this$oTargetAggregat4, _this$oTargetAggregat5;
54
53
 
55
- this._aGroupableProperties = (_oTargetAggregationAn2 = oTargetAggregationAnnotations) === null || _oTargetAggregationAn2 === void 0 ? void 0 : (_oTargetAggregationAn3 = _oTargetAggregationAn2.ApplySupported) === null || _oTargetAggregationAn3 === void 0 ? void 0 : _oTargetAggregationAn3.GroupableProperties;
54
+ this._aGroupableProperties = (_this$oTargetAggregat2 = this.oTargetAggregationAnnotations) === null || _this$oTargetAggregat2 === void 0 ? void 0 : (_this$oTargetAggregat3 = _this$oTargetAggregat2.ApplySupported) === null || _this$oTargetAggregat3 === void 0 ? void 0 : _this$oTargetAggregat3.GroupableProperties;
55
+ this._aAggregatableProperties = (_this$oTargetAggregat4 = this.oTargetAggregationAnnotations) === null || _this$oTargetAggregat4 === void 0 ? void 0 : (_this$oTargetAggregat5 = _this$oTargetAggregat4.ApplySupported) === null || _this$oTargetAggregat5 === void 0 ? void 0 : _this$oTargetAggregat5.AggregatableProperties;
56
56
  }
57
57
  }
58
58
  /**
@@ -69,7 +69,7 @@ sap.ui.define([], function () {
69
69
  value: function _determineAggregationAnnotationTarget() {
70
70
  var _this$_converterConte, _this$_converterConte2, _this$_converterConte3, _this$_converterConte4, _this$_converterConte5;
71
71
 
72
- var bIsParameterized = ((_this$_converterConte = this._converterContext.getDataModelObjectPath()) === null || _this$_converterConte === void 0 ? void 0 : (_this$_converterConte2 = _this$_converterConte.targetEntitySet) === null || _this$_converterConte2 === void 0 ? void 0 : (_this$_converterConte3 = _this$_converterConte2.entityType) === null || _this$_converterConte3 === void 0 ? void 0 : (_this$_converterConte4 = _this$_converterConte3.annotations) === null || _this$_converterConte4 === void 0 ? void 0 : (_this$_converterConte5 = _this$_converterConte4.Common) === null || _this$_converterConte5 === void 0 ? void 0 : _this$_converterConte5.ResultContext) ? true : false;
72
+ var bIsParameterized = (_this$_converterConte = this._converterContext.getDataModelObjectPath()) !== null && _this$_converterConte !== void 0 && (_this$_converterConte2 = _this$_converterConte.targetEntitySet) !== null && _this$_converterConte2 !== void 0 && (_this$_converterConte3 = _this$_converterConte2.entityType) !== null && _this$_converterConte3 !== void 0 && (_this$_converterConte4 = _this$_converterConte3.annotations) !== null && _this$_converterConte4 !== void 0 && (_this$_converterConte5 = _this$_converterConte4.Common) !== null && _this$_converterConte5 !== void 0 && _this$_converterConte5.ResultContext ? true : false;
73
73
  var oAggregationAnnotationSource; // find ApplySupported
74
74
 
75
75
  if (bIsParameterized) {
@@ -83,9 +83,9 @@ sap.ui.define([], function () {
83
83
  var oNavigationPropertyObject = oDataModelObjectPath === null || oDataModelObjectPath === void 0 ? void 0 : oDataModelObjectPath.targetObject;
84
84
  var oEntityTypeObject = oDataModelObjectPath === null || oDataModelObjectPath === void 0 ? void 0 : oDataModelObjectPath.targetEntityType;
85
85
 
86
- if (oNavigationPropertyObject === null || oNavigationPropertyObject === void 0 ? void 0 : (_oNavigationPropertyO = oNavigationPropertyObject.annotations) === null || _oNavigationPropertyO === void 0 ? void 0 : (_oNavigationPropertyO2 = _oNavigationPropertyO.Aggregation) === null || _oNavigationPropertyO2 === void 0 ? void 0 : _oNavigationPropertyO2.ApplySupported) {
86
+ if (oNavigationPropertyObject !== null && oNavigationPropertyObject !== void 0 && (_oNavigationPropertyO = oNavigationPropertyObject.annotations) !== null && _oNavigationPropertyO !== void 0 && (_oNavigationPropertyO2 = _oNavigationPropertyO.Aggregation) !== null && _oNavigationPropertyO2 !== void 0 && _oNavigationPropertyO2.ApplySupported) {
87
87
  oAggregationAnnotationSource = oNavigationPropertyObject;
88
- } else if (oEntityTypeObject === null || oEntityTypeObject === void 0 ? void 0 : (_oEntityTypeObject$an = oEntityTypeObject.annotations) === null || _oEntityTypeObject$an === void 0 ? void 0 : (_oEntityTypeObject$an2 = _oEntityTypeObject$an.Aggregation) === null || _oEntityTypeObject$an2 === void 0 ? void 0 : _oEntityTypeObject$an2.ApplySupported) {
88
+ } else if (oEntityTypeObject !== null && oEntityTypeObject !== void 0 && (_oEntityTypeObject$an = oEntityTypeObject.annotations) !== null && _oEntityTypeObject$an !== void 0 && (_oEntityTypeObject$an2 = _oEntityTypeObject$an.Aggregation) !== null && _oEntityTypeObject$an2 !== void 0 && _oEntityTypeObject$an2.ApplySupported) {
89
89
  oAggregationAnnotationSource = oEntityTypeObject;
90
90
  }
91
91
  } else {
@@ -149,6 +149,23 @@ sap.ui.define([], function () {
149
149
  });
150
150
  }
151
151
  }
152
+ }, {
153
+ key: "getGroupableProperties",
154
+ value: function getGroupableProperties() {
155
+ return this._aGroupableProperties;
156
+ }
157
+ }, {
158
+ key: "getAggregatableProperties",
159
+ value: function getAggregatableProperties() {
160
+ return this._aAggregatableProperties;
161
+ }
162
+ }, {
163
+ key: "getTransAggregations",
164
+ value: function getTransAggregations() {
165
+ var aTransAggregationAnnotations = this._converterContext.getAnnotationsByTerm("Analytics", "com.sap.vocabularies.Analytics.v1.AggregatedProperties", [this._converterContext.getEntityContainer(), this._converterContext.getEntityType()]);
166
+
167
+ return aTransAggregationAnnotations;
168
+ }
152
169
  /**
153
170
  * Returns the list of custom aggregate definitions for the entity type.
154
171
  *
@@ -159,28 +176,10 @@ sap.ui.define([], function () {
159
176
  }, {
160
177
  key: "getCustomAggregateDefinitions",
161
178
  value: function getCustomAggregateDefinitions() {
162
- var _this = this;
163
-
164
- var mDefinitions = {}; // Get the custom aggregates
165
-
179
+ // Get the custom aggregates
166
180
  var aCustomAggregateAnnotations = this._converterContext.getAnnotationsByTerm("Aggregation", "Org.OData.Aggregation.V1.CustomAggregate", [this._oAggregationAnnotationTarget]);
167
181
 
168
- aCustomAggregateAnnotations.forEach(function (annotation) {
169
- // Check if there's a property with the same name as the custom aggregate
170
- var oAggregatedProperty = _this._entityType.entityProperties.find(function (oProperty) {
171
- return oProperty.name === annotation.qualifier;
172
- });
173
-
174
- if (oAggregatedProperty) {
175
- var _annotation$annotatio, _annotation$annotatio2;
176
-
177
- var aContextDefiningProperties = (_annotation$annotatio = annotation.annotations) === null || _annotation$annotatio === void 0 ? void 0 : (_annotation$annotatio2 = _annotation$annotatio.Aggregation) === null || _annotation$annotatio2 === void 0 ? void 0 : _annotation$annotatio2.ContextDefiningProperties;
178
- mDefinitions[oAggregatedProperty.name] = aContextDefiningProperties ? aContextDefiningProperties.map(function (oCtxDefProperty) {
179
- return oCtxDefProperty.value;
180
- }) : [];
181
- }
182
- });
183
- return mDefinitions;
182
+ return aCustomAggregateAnnotations;
184
183
  }
185
184
  }]);
186
185
 
@@ -190,4 +189,4 @@ sap.ui.define([], function () {
190
189
  _exports.AggregationHelper = AggregationHelper;
191
190
  return _exports;
192
191
  }, false);
193
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFnZ3JlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZW50aXR5VHlwZSIsImNvbnZlcnRlckNvbnRleHQiLCJfZW50aXR5VHlwZSIsIl9jb252ZXJ0ZXJDb250ZXh0IiwiX29BZ2dyZWdhdGlvbkFubm90YXRpb25UYXJnZXQiLCJfZGV0ZXJtaW5lQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0Iiwib1RhcmdldEFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnMiLCJfdHlwZSIsImFubm90YXRpb25zIiwiQWdncmVnYXRpb24iLCJfYkFwcGx5U3VwcG9ydGVkIiwiQXBwbHlTdXBwb3J0ZWQiLCJfYUdyb3VwYWJsZVByb3BlcnRpZXMiLCJHcm91cGFibGVQcm9wZXJ0aWVzIiwiYklzUGFyYW1ldGVyaXplZCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJSZXN1bHRDb250ZXh0Iiwib0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZSIsIm9EYXRhTW9kZWxPYmplY3RQYXRoIiwib05hdmlnYXRpb25Qcm9wZXJ0eU9iamVjdCIsInRhcmdldE9iamVjdCIsIm9FbnRpdHlUeXBlT2JqZWN0IiwidGFyZ2V0RW50aXR5VHlwZSIsImdldEVudGl0eVNldCIsInByb3BlcnR5IiwidW5kZWZpbmVkIiwibGVuZ3RoIiwiZmluZEluZGV4IiwicGF0aCIsIiR0YXJnZXQiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJhQ3VzdG9tQWdncmVnYXRlQW5ub3RhdGlvbnMiLCJnZXRBbm5vdGF0aW9uc0J5VGVybSIsInNvbWUiLCJhbm5vdGF0aW9uIiwibmFtZSIsInF1YWxpZmllciIsIm1EZWZpbml0aW9ucyIsImZvckVhY2giLCJvQWdncmVnYXRlZFByb3BlcnR5IiwiZW50aXR5UHJvcGVydGllcyIsImZpbmQiLCJvUHJvcGVydHkiLCJhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyIsIkNvbnRleHREZWZpbmlu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QW9DLFVBQUFKLFVBQVUsRUFBSTtBQUNqRDtBQUNBLGNBQU1LLG1CQUFtQixHQUFHLEtBQUksQ0FBQ3ZDLFdBQUwsQ0FBaUJ3QyxnQkFBakIsQ0FBa0NDLElBQWxDLENBQXVDLFVBQUFDLFNBQVMsRUFBSTtBQUMvRSxtQkFBT0EsU0FBUyxDQUFDUCxJQUFWLEtBQW1CRCxVQUFVLENBQUNFLFNBQXJDO0FBQ0EsV0FGMkIsQ0FBNUI7O0FBR0EsY0FBSUcsbUJBQUosRUFBeUI7QUFBQTs7QUFDeEIsZ0JBQU1JLDBCQUEwQiw0QkFBR1QsVUFBVSxDQUFDNUIsV0FBZCxvRkFBRyxzQkFBd0JDLFdBQTNCLDJEQUFHLHVCQUFxQ3FDLHlCQUF4RTtBQUVBUCxZQUFBQSxZQUFZLENBQUNFLG1CQUFtQixDQUFDSixJQUFyQixDQUFaLEdBQXlDUSwwQkFBMEIsR0FDaEVBLDBCQUEwQixDQUFDRSxHQUEzQixDQUErQixVQUFBQyxlQUFlLEVBQUk7QUFDbEQscUJBQU9BLGVBQWUsQ0FBQ0MsS0FBdkI7QUFDQyxhQUZELENBRGdFLEdBSWhFLEVBSkg7QUFLQTtBQUNELFNBZEQ7QUFnQkEsZUFBT1YsWUFBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlUeXBlLCBQcm9wZXJ0eSwgRW50aXR5U2V0LCBOYXZpZ2F0aW9uUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgQW5ub3RhdGlvblRlcm0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uQW5ub3RhdGlvblRlcm1zLCBDdXN0b21BZ2dyZWdhdGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L0VkbVwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7XG5cdENvbGxlY3Rpb25Bbm5vdGF0aW9uc19BZ2dyZWdhdGlvbixcblx0RW50aXR5VHlwZUFubm90YXRpb25zX0FnZ3JlZ2F0aW9uLFxuXHRFbnRpdHlTZXRBbm5vdGF0aW9uc19BZ2dyZWdhdGlvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvZ2VuZXJhdGVkL0FnZ3JlZ2F0aW9uX0VkbVwiO1xuXG4vKipcbiAqIGhlbHBlciBjbGFzcyBmb3IgQWdncmVnYXRpb24gYW5ub3RhdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBZ2dyZWdhdGlvbkhlbHBlciB7XG5cdF9lbnRpdHlUeXBlOiBFbnRpdHlUeXBlO1xuXHRfY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDtcblx0X2JBcHBseVN1cHBvcnRlZDogYm9vbGVhbjtcblx0X2FHcm91cGFibGVQcm9wZXJ0aWVzPzogUHJvcGVydHlQYXRoW107XG5cdF9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0OiBFbnRpdHlUeXBlIHwgRW50aXR5U2V0IHwgTmF2aWdhdGlvblByb3BlcnR5O1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgaGVscGVyIGZvciBhIHNwZWNpZmljIGVudGl0eSB0eXBlIGFuZCBhIGNvbnZlcnRlciBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gZW50aXR5VHlwZSBUaGUgRW50aXR5VHlwZVxuXHQgKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgQ29udmVydGVyQ29udGV4dFxuXHQgKi9cblx0Y29uc3RydWN0b3IoZW50aXR5VHlwZTogRW50aXR5VHlwZSwgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCkge1xuXHRcdHRoaXMuX2VudGl0eVR5cGUgPSBlbnRpdHlUeXBlO1xuXHRcdHRoaXMuX2NvbnZlcnRlckNvbnRleHQgPSBjb252ZXJ0ZXJDb250ZXh0O1xuXG5cdFx0dGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldCA9IHRoaXMuX2RldGVybWluZUFnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldCgpO1xuXHRcdGxldCBvVGFyZ2V0QWdncmVnYXRpb25Bbm5vdGF0aW9ucztcblx0XHRpZiAodGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldD8uX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdG9UYXJnZXRBZ2dyZWdhdGlvbkFubm90YXRpb25zID0gdGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldD8uYW5ub3RhdGlvbnNcblx0XHRcdFx0Py5BZ2dyZWdhdGlvbiBhcyBDb2xsZWN0aW9uQW5ub3RhdGlvbnNfQWdncmVnYXRpb247XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0Py5fdHlwZSA9PT0gXCJFbnRpdHlUeXBlXCIpIHtcblx0XHRcdG9UYXJnZXRBZ2dyZWdhdGlvbkFubm90YXRpb25zID0gdGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldD8uYW5ub3RhdGlvbnNcblx0XHRcdFx0Py5BZ2dyZWdhdGlvbiBhcyBFbnRpdHlUeXBlQW5ub3RhdGlvbnNfQWdncmVnYXRpb247XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0Py5fdHlwZSA9PT0gXCJFbnRpdHlTZXRcIikge1xuXHRcdFx0b1RhcmdldEFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnMgPSB0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0Py5hbm5vdGF0aW9uc1xuXHRcdFx0XHQ/LkFnZ3JlZ2F0aW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0FnZ3JlZ2F0aW9uO1xuXHRcdH1cblx0XHR0aGlzLl9iQXBwbHlTdXBwb3J0ZWQgPSBvVGFyZ2V0QWdncmVnYXRpb25Bbm5vdGF0aW9ucz8uQXBwbHlTdXBwb3J0ZWQgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRpZiAodGhpcy5fYkFwcGx5U3VwcG9ydGVkKSB7XG5cdFx0XHR0aGlzLl9hR3JvdXBhYmxlUHJvcGVydGllcyA9IG9UYXJnZXRBZ2dyZWdhdGlvbkFubm90YXRpb25zPy5BcHBseVN1cHBvcnRlZD8uR3JvdXBhYmxlUHJvcGVydGllcyBhcyBQcm9wZXJ0eVBhdGhbXTtcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIERldGVybWluZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSB0YXJnZXQgZm9yIHRoZSBhZ2dyZWdhdGlvbiBhbm5vdGF0aW9ucy5cblx0ICpcblx0ICogQHJldHVybnMgIEVudGl0eVR5cGUgfCBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHkgd2hlcmUgYWdncmVnYXRpb24gYW5ub3RhdGlvbnMgc2hvdWxkIGJlIGZvdW5kLlxuXHQgKi9cblx0cHJpdmF0ZSBfZGV0ZXJtaW5lQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0KCk6IEVudGl0eVR5cGUgfCBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHkge1xuXHRcdGNvbnN0IGJJc1BhcmFtZXRlcml6ZWQgPSB0aGlzLl9jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKT8udGFyZ2V0RW50aXR5U2V0Py5lbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uQ29tbW9uXG5cdFx0XHQ/LlJlc3VsdENvbnRleHRcblx0XHRcdD8gdHJ1ZVxuXHRcdFx0OiBmYWxzZTtcblx0XHRsZXQgb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZTtcblxuXHRcdC8vIGZpbmQgQXBwbHlTdXBwb3J0ZWRcblx0XHRpZiAoYklzUGFyYW1ldGVyaXplZCkge1xuXHRcdFx0Ly8gaWYgdGhpcyBpcyBhIHBhcmFtZXRlcml6ZWQgdmlldyB0aGVuIGFwcGx5c3VwcG9ydGVkIGNhbiBiZSBmb3VuZCBhdCBlaXRoZXIgdGhlIG5hdlByb3AgcG9pbnRpbmcgdG8gdGhlIHJlc3VsdCBzZXQgb3IgZW50aXR5VHlwZS5cblx0XHRcdC8vIElmIGFwcGx5U3VwcG9ydGVkIGlzIHByZXNlbnQgYXQgYm90aCB0aGUgbmF2UHJvcCBhbmQgdGhlIGVudGl0eVR5cGUgdGhlbiBuYXZQcm9wIGlzIG1vcmUgc3BlY2lmaWMgc28gdGFrZSBhbm5vdGF0aW9ucyBmcm9tIHRoZXJlXG5cdFx0XHQvLyB0YXJnZXRPYmplY3QgaW4gdGhlIGNvbnZlcnRlciBjb250ZXh0IGZvciBhIHBhcmFtZXRlcml6ZWQgdmlldyBpcyB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0eSBwb2ludGluZyB0byB0aCByZXN1bHQgc2V0XG5cdFx0XHRjb25zdCBvRGF0YU1vZGVsT2JqZWN0UGF0aCA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRcdFx0Y29uc3Qgb05hdmlnYXRpb25Qcm9wZXJ0eU9iamVjdCA9IG9EYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q7XG5cdFx0XHRjb25zdCBvRW50aXR5VHlwZU9iamVjdCA9IG9EYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlO1xuXHRcdFx0aWYgKG9OYXZpZ2F0aW9uUHJvcGVydHlPYmplY3Q/LmFubm90YXRpb25zPy5BZ2dyZWdhdGlvbj8uQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRcdFx0b0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZSA9IG9OYXZpZ2F0aW9uUHJvcGVydHlPYmplY3Q7XG5cdFx0XHR9IGVsc2UgaWYgKG9FbnRpdHlUeXBlT2JqZWN0Py5hbm5vdGF0aW9ucz8uQWdncmVnYXRpb24/LkFwcGx5U3VwcG9ydGVkKSB7XG5cdFx0XHRcdG9BZ2dyZWdhdGlvbkFubm90YXRpb25Tb3VyY2UgPSBvRW50aXR5VHlwZU9iamVjdDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gRm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBpZ25vcmUgYW5ub3RhdGlvbnMgYXQgdGhlIGNvbnRhaW5lciBsZXZlbCwgdW50aWwgdGhlIHZvY2FidWxhcnkgaXMgc3RhYmlsaXplZFxuXHRcdFx0b0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZSA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdFx0fVxuXHRcdHJldHVybiBvQWdncmVnYXRpb25Bbm5vdGF0aW9uU291cmNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZW50aXR5IHN1cHBvcnRzIGFuYWx5dGljYWwgcXVlcmllcy5cblx0ICpcblx0ICogQHJldHVybnMgYHRydWVgIGlmIGFuYWx5dGljYWwgcXVlcmllcyBhcmUgc3VwcG9ydGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgaXNBbmFseXRpY3NTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2JBcHBseVN1cHBvcnRlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYSBwcm9wZXJ0eSBpcyBncm91cGFibGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcblx0ICogQHJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGVudGl0eSBkb2Vzbid0IHN1cHBvcnQgYW5hbHl0aWNhbCBxdWVyaWVzLCB0cnVlIG9yIGZhbHNlIG90aGVyd2lzZVxuXHQgKi9cblx0cHVibGljIGlzUHJvcGVydHlHcm91cGFibGUocHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCF0aGlzLl9iQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIGlmICghdGhpcy5fYUdyb3VwYWJsZVByb3BlcnRpZXMgfHwgdGhpcy5fYUdyb3VwYWJsZVByb3BlcnRpZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBObyBncm91cGFibGVQcm9wZXJ0aWVzIC0tPiBhbGwgcHJvcGVydGllcyBhcmUgZ3JvdXBhYmxlXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2FHcm91cGFibGVQcm9wZXJ0aWVzLmZpbmRJbmRleChwYXRoID0+IHBhdGguJHRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUgPT09IHByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZSkgPj0gMDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGEgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBlbnRpdHkgZG9lc24ndCBzdXBwb3J0IGFuYWx5dGljYWwgcXVlcmllcywgdHJ1ZSBvciBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdHB1YmxpYyBpc1Byb3BlcnR5QWdncmVnYXRhYmxlKHByb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5fYkFwcGx5U3VwcG9ydGVkKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBHZXQgdGhlIGN1c3RvbSBhZ2dyZWdhdGVzXG5cdFx0XHRjb25zdCBhQ3VzdG9tQWdncmVnYXRlQW5ub3RhdGlvbnM6IEFubm90YXRpb25UZXJtPFxuXHRcdFx0XHRDdXN0b21BZ2dyZWdhdGVcblx0XHRcdD5bXSA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXCJBZ2dyZWdhdGlvblwiLCBBZ2dyZWdhdGlvbkFubm90YXRpb25UZXJtcy5DdXN0b21BZ2dyZWdhdGUsIFtcblx0XHRcdFx0dGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldFxuXHRcdFx0XSk7XG5cblx0XHRcdC8vIENoZWNrIGlmIGEgY3VzdG9tIGFnZ3JlZ2F0ZSBoYXMgYSBxdWFsaWZpZXIgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcHJvcGVydHkgbmFtZVxuXHRcdFx0cmV0dXJuIGFDdXN0b21BZ2dyZWdhdGVBbm5vdGF0aW9ucy5zb21lKGFubm90YXRpb24gPT4ge1xuXHRcdFx0XHRyZXR1cm4gcHJvcGVydHkubmFtZSA9PT0gYW5ub3RhdGlvbi5xdWFsaWZpZXI7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbGlzdCBvZiBjdXN0b20gYWdncmVnYXRlIGRlZmluaXRpb25zIGZvciB0aGUgZW50aXR5IHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEEgbWFwIChwcm9wZXJ0eU5hbWUgLS0+IGFycmF5IG9mIGNvbnRleHQtZGVmaW5pbmcgcHJvcGVydHkgbmFtZXMpIGZvciBlYWNoIGN1c3RvbSBhZ2dyZWdhdGUgY29ycmVzcG9uZGluZyB0byBhIHByb3BlcnR5LiBUaGUgYXJyYXkgb2Zcblx0ICogY29udGV4dC1kZWZpbmluZyBwcm9wZXJ0eSBuYW1lcyBpcyBlbXB0eSBpZiB0aGUgY3VzdG9tIGFnZ3JlZ2F0ZSBkb2Vzbid0IGhhdmUgYW55IGNvbnRleHQtZGVmaW5pbmcgcHJvcGVydHkuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+IHtcblx0XHRjb25zdCBtRGVmaW5pdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG5cdFx0Ly8gR2V0IHRoZSBjdXN0b20gYWdncmVnYXRlc1xuXHRcdGNvbnN0IGFDdXN0b21BZ2dyZWdhdGVBbm5vdGF0aW9uczogQW5ub3RhdGlvblRlcm08Q3VzdG9tQWdncmVnYXRlPltdID0gdGhpcy5fY29udmVydGVyQ29udGV4dC5nZXRBbm5vdGF0aW9uc0J5VGVybShcblx0XHRcdFwiQWdncmVnYXRpb25cIixcblx0XHRcdEFnZ3JlZ2F0aW9uQW5ub3RhdGlvblRlcm1zLkN1c3RvbUFnZ3JlZ2F0ZSxcblx0XHRcdFt0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0XVxuXHRcdCk7XG5cblx0XHRhQ3VzdG9tQWdncmVnYXRlQW5ub3RhdGlvbnMuZm9yRWFjaChhbm5vdGF0aW9uID0+IHtcblx0XHRcdC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGN1c3RvbSBhZ2dyZWdhdGVcblx0XHRcdGNvbnN0IG9BZ2dyZWdhdGVkUHJvcGVydHkgPSB0aGlzLl9lbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMuZmluZChvUHJvcGVydHkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gb1Byb3BlcnR5Lm5hbWUgPT09IGFubm90YXRpb24ucXVhbGlmaWVyO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAob0FnZ3JlZ2F0ZWRQcm9wZXJ0eSkge1xuXHRcdFx0XHRjb25zdCBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyA9IGFubm90YXRpb24uYW5ub3RhdGlvbnM/LkFnZ3JlZ2F0aW9uPy5Db250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzO1xuXG5cdFx0XHRcdG1EZWZpbml0aW9uc1tvQWdncmVnYXRlZFByb3BlcnR5Lm5hbWVdID0gYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXNcblx0XHRcdFx0XHQ/IGFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzLm1hcChvQ3R4RGVmUHJvcGVydHkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb0N0eERlZlByb3BlcnR5LnZhbHVlO1xuXHRcdFx0XHRcdCAgfSlcblx0XHRcdFx0XHQ6IFtdO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIG1EZWZpbml0aW9ucztcblx0fVxufVxuIl19
192
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFnZ3JlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbIkFnZ3JlZ2F0aW9uSGVscGVyIiwiZW50aXR5VHlwZSIsImNvbnZlcnRlckNvbnRleHQiLCJfZW50aXR5VHlwZSIsIl9jb252ZXJ0ZXJDb250ZXh0IiwiX29BZ2dyZWdhdGlvbkFubm90YXRpb25UYXJnZXQiLCJfZGV0ZXJtaW5lQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0IiwiX3R5cGUiLCJvVGFyZ2V0QWdncmVnYXRpb25Bbm5vdGF0aW9ucyIsImFubm90YXRpb25zIiwiQWdncmVnYXRpb24iLCJfYkFwcGx5U3VwcG9ydGVkIiwiQXBwbHlTdXBwb3J0ZWQiLCJfYUdyb3VwYWJsZVByb3BlcnRpZXMiLCJHcm91cGFibGVQcm9wZXJ0aWVzIiwiX2FBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIiwiQWdncmVnYXRhYmxlUHJvcGVydGllcyIsImJJc1BhcmFtZXRlcml6ZWQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0RW50aXR5U2V0IiwiQ29tbW9uIiwiUmVzdWx0Q29udGV4dCIsIm9BZ2dyZWdhdGlvbkFubm90YXRpb25Tb3VyY2UiLCJvRGF0YU1vZGVsT2JqZWN0UGF0aCIsIm9OYXZpZ2F0aW9uUHJvcGVydHlPYmplY3QiLCJ0YXJnZXRPYmplY3QiLCJvRW50aXR5VHlwZU9iamVjdCIsInRhcmdldEVudGl0eVR5cGUiLCJnZXRFbnRpdHlTZXQiLCJwcm9wZXJ0eSIsInVuZGVmaW5lZCIsImxlbmd0aCIsImZpbmRJbmRleCIsInBhdGgiLCIkdGFyZ2V0IiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiYUN1c3RvbUFnZ3JlZ2F0ZUFubm90YXRpb25zIiwiZ2V0QW5ub3RhdGlvbnNCeVRlcm0iLCJzb21lIiwiYW5ub3RhdGlvbiIsIm5hbWUiLCJxdWFsaWZpZXIiLCJhVHJhbnNBZ2dyZWdhdGlvbkFubm90YXRpb25zIiwiZ2V0RW50aXR5Q29udGFpbmVyIiwiZ2V0RW50aXR5VHlwZSJdLCJtYXBwaW5n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RCxxQ0FBbUM7QUFDbEMsZUFBTyxLQUFLRSx3QkFBWjtBQUNBOzs7YUFFRCxnQ0FBOEI7QUFDN0IsWUFBTTJCLDRCQUE0QixHQUFHLEtBQUt0QyxpQkFBTCxDQUF1QmlDLG9CQUF2QixDQUNwQyxXQURvQyxFQUVwQyx3REFGb0MsRUFHcEMsQ0FBQyxLQUFLakMsaUJBQUwsQ0FBdUJ1QyxrQkFBdkIsRUFBRCxFQUE4QyxLQUFLdkMsaUJBQUwsQ0FBdUJ3QyxhQUF2QixFQUE5QyxDQUhvQyxDQUFyQzs7QUFLQSxlQUFPRiw0QkFBUDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MseUNBQXVDO0FBQ3RDO0FBQ0EsWUFBTU4sMkJBQThELEdBQUcsS0FBS2hDLGlCQUFMLENBQXVCaUMsb0JBQXZCLENBQ3RFLGFBRHNFLDhDQUd0RSxDQUFDLEtBQUtoQyw2QkFBTixDQUhzRSxDQUF2RTs7QUFNQSxlQUFPK0IsMkJBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5VHlwZSwgUHJvcGVydHksIEVudGl0eVNldCwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IEFubm90YXRpb25UZXJtIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkFubm90YXRpb25UZXJtcywgQ3VzdG9tQWdncmVnYXRlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9FZG1cIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQge1xuXHRDb2xsZWN0aW9uQW5ub3RhdGlvbnNfQWdncmVnYXRpb24sXG5cdEVudGl0eVR5cGVBbm5vdGF0aW9uc19BZ2dyZWdhdGlvbixcblx0RW50aXR5U2V0QW5ub3RhdGlvbnNfQWdncmVnYXRpb25cbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3R5cGVzL2dlbmVyYXRlZC9BZ2dyZWdhdGlvbl9FZG1cIjtcblxuLyoqXG4gKiBoZWxwZXIgY2xhc3MgZm9yIEFnZ3JlZ2F0aW9uIGFubm90YXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQWdncmVnYXRpb25IZWxwZXIge1xuXHRfZW50aXR5VHlwZTogRW50aXR5VHlwZTtcblx0X2NvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ7XG5cdF9iQXBwbHlTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cdF9hR3JvdXBhYmxlUHJvcGVydGllcz86IFByb3BlcnR5UGF0aFtdO1xuXHRfYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM/O1xuXHRfb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldDogRW50aXR5VHlwZSB8IEVudGl0eVNldCB8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0b1RhcmdldEFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnM6IGFueTtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBoZWxwZXIgZm9yIGEgc3BlY2lmaWMgZW50aXR5IHR5cGUgYW5kIGEgY29udmVydGVyIGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSBlbnRpdHlUeXBlIFRoZSBFbnRpdHlUeXBlXG5cdCAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBDb252ZXJ0ZXJDb250ZXh0XG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KSB7XG5cdFx0dGhpcy5fZW50aXR5VHlwZSA9IGVudGl0eVR5cGU7XG5cdFx0dGhpcy5fY29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQ7XG5cblx0XHR0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0ID0gdGhpcy5fZGV0ZXJtaW5lQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0KCk7XG5cdFx0aWYgKHRoaXMuX29BZ2dyZWdhdGlvbkFubm90YXRpb25UYXJnZXQ/Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHR0aGlzLm9UYXJnZXRBZ2dyZWdhdGlvbkFubm90YXRpb25zID0gdGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldD8uYW5ub3RhdGlvbnNcblx0XHRcdFx0Py5BZ2dyZWdhdGlvbiBhcyBDb2xsZWN0aW9uQW5ub3RhdGlvbnNfQWdncmVnYXRpb247XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0Py5fdHlwZSA9PT0gXCJFbnRpdHlUeXBlXCIpIHtcblx0XHRcdHRoaXMub1RhcmdldEFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnMgPSB0aGlzLl9vQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0Py5hbm5vdGF0aW9uc1xuXHRcdFx0XHQ/LkFnZ3JlZ2F0aW9uIGFzIEVudGl0eVR5cGVBbm5vdGF0aW9uc19BZ2dyZWdhdGlvbjtcblx0XHR9IGVsc2UgaWYgKHRoaXMuX29BZ2dyZWdhdGlvbkFubm90YXRpb25UYXJnZXQ/Ll90eXBlID09PSBcIkVudGl0eVNldFwiKSB7XG5cdFx0XHR0aGlzLm9UYXJnZXRBZ2dyZWdhdGlvbkFubm90YXRpb25zID0gdGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldD8uYW5ub3RhdGlvbnNcblx0XHRcdFx0Py5BZ2dyZWdhdGlvbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19BZ2dyZWdhdGlvbjtcblx0XHR9XG5cdFx0dGhpcy5fYkFwcGx5U3VwcG9ydGVkID0gdGhpcy5vVGFyZ2V0QWdncmVnYXRpb25Bbm5vdGF0aW9ucz8uQXBwbHlTdXBwb3J0ZWQgPyB0cnVlIDogZmFsc2U7XG5cblx0XHRpZiAodGhpcy5fYkFwcGx5U3VwcG9ydGVkKSB7XG5cdFx0XHR0aGlzLl9hR3JvdXBhYmxlUHJvcGVydGllcyA9IHRoaXMub1RhcmdldEFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnM/LkFwcGx5U3VwcG9ydGVkPy5Hcm91cGFibGVQcm9wZXJ0aWVzIGFzIFByb3BlcnR5UGF0aFtdO1xuXHRcdFx0dGhpcy5fYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgPSB0aGlzLm9UYXJnZXRBZ2dyZWdhdGlvbkFubm90YXRpb25zPy5BcHBseVN1cHBvcnRlZD8uQWdncmVnYXRhYmxlUHJvcGVydGllcztcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIERldGVybWluZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSB0YXJnZXQgZm9yIHRoZSBhZ2dyZWdhdGlvbiBhbm5vdGF0aW9ucy5cblx0ICpcblx0ICogQHJldHVybnMgIEVudGl0eVR5cGUgfCBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHkgd2hlcmUgYWdncmVnYXRpb24gYW5ub3RhdGlvbnMgc2hvdWxkIGJlIGZvdW5kLlxuXHQgKi9cblx0cHJpdmF0ZSBfZGV0ZXJtaW5lQWdncmVnYXRpb25Bbm5vdGF0aW9uVGFyZ2V0KCk6IEVudGl0eVR5cGUgfCBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHkge1xuXHRcdGNvbnN0IGJJc1BhcmFtZXRlcml6ZWQgPSB0aGlzLl9jb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKT8udGFyZ2V0RW50aXR5U2V0Py5lbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uQ29tbW9uXG5cdFx0XHQ/LlJlc3VsdENvbnRleHRcblx0XHRcdD8gdHJ1ZVxuXHRcdFx0OiBmYWxzZTtcblx0XHRsZXQgb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZTtcblxuXHRcdC8vIGZpbmQgQXBwbHlTdXBwb3J0ZWRcblx0XHRpZiAoYklzUGFyYW1ldGVyaXplZCkge1xuXHRcdFx0Ly8gaWYgdGhpcyBpcyBhIHBhcmFtZXRlcml6ZWQgdmlldyB0aGVuIGFwcGx5c3VwcG9ydGVkIGNhbiBiZSBmb3VuZCBhdCBlaXRoZXIgdGhlIG5hdlByb3AgcG9pbnRpbmcgdG8gdGhlIHJlc3VsdCBzZXQgb3IgZW50aXR5VHlwZS5cblx0XHRcdC8vIElmIGFwcGx5U3VwcG9ydGVkIGlzIHByZXNlbnQgYXQgYm90aCB0aGUgbmF2UHJvcCBhbmQgdGhlIGVudGl0eVR5cGUgdGhlbiBuYXZQcm9wIGlzIG1vcmUgc3BlY2lmaWMgc28gdGFrZSBhbm5vdGF0aW9ucyBmcm9tIHRoZXJlXG5cdFx0XHQvLyB0YXJnZXRPYmplY3QgaW4gdGhlIGNvbnZlcnRlciBjb250ZXh0IGZvciBhIHBhcmFtZXRlcml6ZWQgdmlldyBpcyB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0eSBwb2ludGluZyB0byB0aCByZXN1bHQgc2V0XG5cdFx0XHRjb25zdCBvRGF0YU1vZGVsT2JqZWN0UGF0aCA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRcdFx0Y29uc3Qgb05hdmlnYXRpb25Qcm9wZXJ0eU9iamVjdCA9IG9EYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q7XG5cdFx0XHRjb25zdCBvRW50aXR5VHlwZU9iamVjdCA9IG9EYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlO1xuXHRcdFx0aWYgKG9OYXZpZ2F0aW9uUHJvcGVydHlPYmplY3Q/LmFubm90YXRpb25zPy5BZ2dyZWdhdGlvbj8uQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRcdFx0b0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZSA9IG9OYXZpZ2F0aW9uUHJvcGVydHlPYmplY3Q7XG5cdFx0XHR9IGVsc2UgaWYgKG9FbnRpdHlUeXBlT2JqZWN0Py5hbm5vdGF0aW9ucz8uQWdncmVnYXRpb24/LkFwcGx5U3VwcG9ydGVkKSB7XG5cdFx0XHRcdG9BZ2dyZWdhdGlvbkFubm90YXRpb25Tb3VyY2UgPSBvRW50aXR5VHlwZU9iamVjdDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gRm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBpZ25vcmUgYW5ub3RhdGlvbnMgYXQgdGhlIGNvbnRhaW5lciBsZXZlbCwgdW50aWwgdGhlIHZvY2FidWxhcnkgaXMgc3RhYmlsaXplZFxuXHRcdFx0b0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblNvdXJjZSA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdFx0fVxuXHRcdHJldHVybiBvQWdncmVnYXRpb25Bbm5vdGF0aW9uU291cmNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZW50aXR5IHN1cHBvcnRzIGFuYWx5dGljYWwgcXVlcmllcy5cblx0ICpcblx0ICogQHJldHVybnMgYHRydWVgIGlmIGFuYWx5dGljYWwgcXVlcmllcyBhcmUgc3VwcG9ydGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAqL1xuXHRwdWJsaWMgaXNBbmFseXRpY3NTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2JBcHBseVN1cHBvcnRlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgYSBwcm9wZXJ0eSBpcyBncm91cGFibGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcblx0ICogQHJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGVudGl0eSBkb2Vzbid0IHN1cHBvcnQgYW5hbHl0aWNhbCBxdWVyaWVzLCB0cnVlIG9yIGZhbHNlIG90aGVyd2lzZVxuXHQgKi9cblx0cHVibGljIGlzUHJvcGVydHlHcm91cGFibGUocHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCF0aGlzLl9iQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIGlmICghdGhpcy5fYUdyb3VwYWJsZVByb3BlcnRpZXMgfHwgdGhpcy5fYUdyb3VwYWJsZVByb3BlcnRpZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBObyBncm91cGFibGVQcm9wZXJ0aWVzIC0tPiBhbGwgcHJvcGVydGllcyBhcmUgZ3JvdXBhYmxlXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2FHcm91cGFibGVQcm9wZXJ0aWVzLmZpbmRJbmRleChwYXRoID0+IHBhdGguJHRhcmdldC5mdWxseVF1YWxpZmllZE5hbWUgPT09IHByb3BlcnR5LmZ1bGx5UXVhbGlmaWVkTmFtZSkgPj0gMDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGEgcHJvcGVydHkgaXMgYWdncmVnYXRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBlbnRpdHkgZG9lc24ndCBzdXBwb3J0IGFuYWx5dGljYWwgcXVlcmllcywgdHJ1ZSBvciBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdHB1YmxpYyBpc1Byb3BlcnR5QWdncmVnYXRhYmxlKHByb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5fYkFwcGx5U3VwcG9ydGVkKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBHZXQgdGhlIGN1c3RvbSBhZ2dyZWdhdGVzXG5cdFx0XHRjb25zdCBhQ3VzdG9tQWdncmVnYXRlQW5ub3RhdGlvbnM6IEFubm90YXRpb25UZXJtPFxuXHRcdFx0XHRDdXN0b21BZ2dyZWdhdGVcblx0XHRcdD5bXSA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXCJBZ2dyZWdhdGlvblwiLCBBZ2dyZWdhdGlvbkFubm90YXRpb25UZXJtcy5DdXN0b21BZ2dyZWdhdGUsIFtcblx0XHRcdFx0dGhpcy5fb0FnZ3JlZ2F0aW9uQW5ub3RhdGlvblRhcmdldFxuXHRcdFx0XSk7XG5cblx0XHRcdC8vIENoZWNrIGlmIGEgY3VzdG9tIGFnZ3JlZ2F0ZSBoYXMgYSBxdWFsaWZpZXIgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcHJvcGVydHkgbmFtZVxuXHRcdFx0cmV0dXJuIGFDdXN0b21BZ2dyZWdhdGVBbm5vdGF0aW9ucy5zb21lKGFubm90YXRpb24gPT4ge1xuXHRcdFx0XHRyZXR1cm4gcHJvcGVydHkubmFtZSA9PT0gYW5ub3RhdGlvbi5xdWFsaWZpZXI7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fYUdyb3VwYWJsZVByb3BlcnRpZXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VHJhbnNBZ2dyZWdhdGlvbnMoKSB7XG5cdFx0Y29uc3QgYVRyYW5zQWdncmVnYXRpb25Bbm5vdGF0aW9ucyA9IHRoaXMuX2NvbnZlcnRlckNvbnRleHQuZ2V0QW5ub3RhdGlvbnNCeVRlcm0oXG5cdFx0XHRcIkFuYWx5dGljc1wiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuQWdncmVnYXRlZFByb3BlcnRpZXNcIixcblx0XHRcdFt0aGlzLl9jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eUNvbnRhaW5lcigpLCB0aGlzLl9jb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKV1cblx0XHQpO1xuXHRcdHJldHVybiBhVHJhbnNBZ2dyZWdhdGlvbkFubm90YXRpb25zO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGN1c3RvbSBhZ2dyZWdhdGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBlbnRpdHkgdHlwZS5cblx0ICpcblx0ICogQHJldHVybnMgQSBtYXAgKHByb3BlcnR5TmFtZSAtLT4gYXJyYXkgb2YgY29udGV4dC1kZWZpbmluZyBwcm9wZXJ0eSBuYW1lcykgZm9yIGVhY2ggY3VzdG9tIGFnZ3JlZ2F0ZSBjb3JyZXNwb25kaW5nIHRvIGEgcHJvcGVydHkuIFRoZSBhcnJheSBvZlxuXHQgKiBjb250ZXh0LWRlZmluaW5nIHByb3BlcnR5IG5hbWVzIGlzIGVtcHR5IGlmIHRoZSBjdXN0b20gYWdncmVnYXRlIGRvZXNuJ3QgaGF2ZSBhbnkgY29udGV4dC1kZWZpbmluZyBwcm9wZXJ0eS5cblx0ICovXG5cdHB1YmxpYyBnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucygpIHtcblx0XHQvLyBHZXQgdGhlIGN1c3RvbSBhZ2dyZWdhdGVzXG5cdFx0Y29uc3QgYUN1c3RvbUFnZ3JlZ2F0ZUFubm90YXRpb25zOiBBbm5vdGF0aW9uVGVybTxDdXN0b21BZ2dyZWdhdGU+W10gPSB0aGlzLl9jb252ZXJ0ZXJDb250ZXh0LmdldEFubm90YXRpb25zQnlUZXJtKFxuXHRcdFx0XCJBZ2dyZWdhdGlvblwiLFxuXHRcdFx0QWdncmVnYXRpb25Bbm5vdGF0aW9uVGVybXMuQ3VzdG9tQWdncmVnYXRlLFxuXHRcdFx0W3RoaXMuX29BZ2dyZWdhdGlvbkFubm90YXRpb25UYXJnZXRdXG5cdFx0KTtcblxuXHRcdHJldHVybiBhQ3VzdG9tQWdncmVnYXRlQW5ub3RhdGlvbnM7XG5cdH1cbn1cbiJdfQ==
@@ -17,8 +17,9 @@ export class AggregationHelper {
17
17
  _converterContext: ConverterContext;
18
18
  _bApplySupported: boolean;
19
19
  _aGroupableProperties?: PropertyPath[];
20
+ _aAggregatableProperties?;
20
21
  _oAggregationAnnotationTarget: EntityType | EntitySet | NavigationProperty;
21
-
22
+ oTargetAggregationAnnotations: any;
22
23
  /**
23
24
  * Creates a helper for a specific entity type and a converter context.
24
25
  *
@@ -30,21 +31,21 @@ export class AggregationHelper {
30
31
  this._converterContext = converterContext;
31
32
 
32
33
  this._oAggregationAnnotationTarget = this._determineAggregationAnnotationTarget();
33
- let oTargetAggregationAnnotations;
34
34
  if (this._oAggregationAnnotationTarget?._type === "NavigationProperty") {
35
- oTargetAggregationAnnotations = this._oAggregationAnnotationTarget?.annotations
35
+ this.oTargetAggregationAnnotations = this._oAggregationAnnotationTarget?.annotations
36
36
  ?.Aggregation as CollectionAnnotations_Aggregation;
37
37
  } else if (this._oAggregationAnnotationTarget?._type === "EntityType") {
38
- oTargetAggregationAnnotations = this._oAggregationAnnotationTarget?.annotations
38
+ this.oTargetAggregationAnnotations = this._oAggregationAnnotationTarget?.annotations
39
39
  ?.Aggregation as EntityTypeAnnotations_Aggregation;
40
40
  } else if (this._oAggregationAnnotationTarget?._type === "EntitySet") {
41
- oTargetAggregationAnnotations = this._oAggregationAnnotationTarget?.annotations
41
+ this.oTargetAggregationAnnotations = this._oAggregationAnnotationTarget?.annotations
42
42
  ?.Aggregation as EntitySetAnnotations_Aggregation;
43
43
  }
44
- this._bApplySupported = oTargetAggregationAnnotations?.ApplySupported ? true : false;
44
+ this._bApplySupported = this.oTargetAggregationAnnotations?.ApplySupported ? true : false;
45
45
 
46
46
  if (this._bApplySupported) {
47
- this._aGroupableProperties = oTargetAggregationAnnotations?.ApplySupported?.GroupableProperties as PropertyPath[];
47
+ this._aGroupableProperties = this.oTargetAggregationAnnotations?.ApplySupported?.GroupableProperties as PropertyPath[];
48
+ this._aAggregatableProperties = this.oTargetAggregationAnnotations?.ApplySupported?.AggregatableProperties;
48
49
  }
49
50
  }
50
51
  /**
@@ -129,15 +130,29 @@ export class AggregationHelper {
129
130
  }
130
131
  }
131
132
 
133
+ public getGroupableProperties() {
134
+ return this._aGroupableProperties;
135
+ }
136
+
137
+ public getAggregatableProperties() {
138
+ return this._aAggregatableProperties;
139
+ }
140
+
141
+ public getTransAggregations() {
142
+ const aTransAggregationAnnotations = this._converterContext.getAnnotationsByTerm(
143
+ "Analytics",
144
+ "com.sap.vocabularies.Analytics.v1.AggregatedProperties",
145
+ [this._converterContext.getEntityContainer(), this._converterContext.getEntityType()]
146
+ );
147
+ return aTransAggregationAnnotations;
148
+ }
132
149
  /**
133
150
  * Returns the list of custom aggregate definitions for the entity type.
134
151
  *
135
152
  * @returns A map (propertyName --> array of context-defining property names) for each custom aggregate corresponding to a property. The array of
136
153
  * context-defining property names is empty if the custom aggregate doesn't have any context-defining property.
137
154
  */
138
- public getCustomAggregateDefinitions(): Record<string, string[]> {
139
- const mDefinitions: Record<string, string[]> = {};
140
-
155
+ public getCustomAggregateDefinitions() {
141
156
  // Get the custom aggregates
142
157
  const aCustomAggregateAnnotations: AnnotationTerm<CustomAggregate>[] = this._converterContext.getAnnotationsByTerm(
143
158
  "Aggregation",
@@ -145,22 +160,6 @@ export class AggregationHelper {
145
160
  [this._oAggregationAnnotationTarget]
146
161
  );
147
162
 
148
- aCustomAggregateAnnotations.forEach(annotation => {
149
- // Check if there's a property with the same name as the custom aggregate
150
- const oAggregatedProperty = this._entityType.entityProperties.find(oProperty => {
151
- return oProperty.name === annotation.qualifier;
152
- });
153
- if (oAggregatedProperty) {
154
- const aContextDefiningProperties = annotation.annotations?.Aggregation?.ContextDefiningProperties;
155
-
156
- mDefinitions[oAggregatedProperty.name] = aContextDefiningProperties
157
- ? aContextDefiningProperties.map(oCtxDefProperty => {
158
- return oCtxDefProperty.value;
159
- })
160
- : [];
161
- }
162
- });
163
-
164
- return mDefinitions;
163
+ return aCustomAggregateAnnotations;
165
164
  }
166
165
  }
@@ -27,9 +27,10 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
27
27
  HasActive: bindingExpression("HasActiveEntity"),
28
28
  IsActive: bindingExpression("IsActiveEntity")
29
29
  };
30
+ _exports.Entity = Entity;
30
31
  var Draft = {
31
32
  IsNewObject: and(not(Entity.HasActive), not(Entity.IsActive)),
32
- HasNoDraftForCurrentUser: or(not(Entity.HasDraft), and(Entity.HasDraft, not(bindingExpression("DraftAdministrativeData/DraftIsProcessedByMe"))))
33
+ HasNoDraftForCurrentUser: or(not(Entity.HasDraft), and(Entity.HasDraft, not(bindingExpression("DraftAdministrativeData/DraftIsCreatedByMe"))))
33
34
  };
34
35
  /**
35
36
  * Function to adjust singleton paths in the annotation.
@@ -65,8 +66,32 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression"], function (BindingExpres
65
66
 
66
67
  return path;
67
68
  };
69
+ /**
70
+ * Function to adjust property paths defined in the binding of an action.
71
+ *
72
+ * The binding parameter name needs to be removed. Singleton paths need to be resolved.
73
+ *
74
+ * @param {string} path The path configured in the annotation
75
+ * @param {ConverterContext} converterContext The instance of the converter context
76
+ * @param {string} bindingParameterFullName The fully qualified name of the binding parameter
77
+ * @returns {string} The adjusted property path
78
+ */
79
+
68
80
 
69
81
  _exports.singletonPathVisitor = singletonPathVisitor;
82
+
83
+ function bindingContextPathVisitor(path, converterContext, bindingParameterFullName) {
84
+ var bindingParameterPrefix = (bindingParameterFullName === null || bindingParameterFullName === void 0 ? void 0 : bindingParameterFullName.substring(bindingParameterFullName.lastIndexOf("/") + 1)) + "/"; // Strip the binding parameter name from OperationAvailable path
85
+ // For e.g. _it/property1 --> property1
86
+
87
+ if (path.startsWith(bindingParameterPrefix)) {
88
+ return path.substring(bindingParameterPrefix.length);
89
+ }
90
+
91
+ return singletonPathVisitor(path, converterContext, []);
92
+ }
93
+
94
+ _exports.bindingContextPathVisitor = bindingContextPathVisitor;
70
95
  return _exports;
71
96
  }, false);
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJpbmRpbmdIZWxwZXIudHMiXSwibmFtZXMiOlsiVUkiLCJJc0NyZWF0ZU1vZGUiLCJiaW5kaW5nRXhwcmVzc2lvbiIsIklzQ3JlYXRlTW9kZVN0aWNreSIsIklzRWRpdGFibGUiLCJJc1RyYW5zaWVudEJpbmRpbmciLCJlcXVhbCIsIklzVG90YWwiLCJJc0V4cGFuZGVkIiwiTm9kZUxldmVsIiwiRW50aXR5IiwiSGFzRHJhZnQiLCJIYXNBY3RpdmUiLCJJc0FjdGl2ZSIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJhbmQiLCJub3QiLCJIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXIiLCJvciIsInNpbmdsZXRvblBhdGhWaXNpdG9yIiwicGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicHJvcGVydHlOYW1lIiwicG9wIiwiZW50aXR5U2V0TmFtZSIsImpvaW4iLCJzaW5nbGV0b24iLCJnZXRTaW5nbGV0b24iLCJuYW1lIiwibG9jYWxQYXRoIiwiY29uY2F0IiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHTyxNQUFNQSxFQUFFLEdBQUc7QUFDakJDLElBQUFBLFlBQVksRUFBRUMsaUJBQWlCLENBQUMsWUFBRCxFQUFlLElBQWYsQ0FEZDtBQUVqQkMsSUFBQUEsa0JBQWtCLEVBQUVELGlCQUFpQixDQUFDLGtCQUFELEVBQXFCLElBQXJCLENBRnBCO0FBR2pCRSxJQUFBQSxVQUFVLEVBQUVGLGlCQUFpQixDQUFDLGFBQUQsRUFBZ0IsSUFBaEIsQ0FIWjtBQUlqQkcsSUFBQUEsa0JBQWtCLEVBQUVDLEtBQUssQ0FBQ0osaUJBQWlCLENBQUMsMkJBQUQsQ0FBbEIsRUFBaUQsSUFBakQsQ0FKUjtBQUtqQkssSUFBQUEsT0FBTyxFQUFFRCxLQUFLLENBQUNKLGlCQUFpQixDQUFDLG9CQUFELENBQWxCLEVBQTBDLElBQTFDLENBTEc7QUFNakJNLElBQUFBLFVBQVUsRUFBRUYsS0FBSyxDQUFDSixpQkFBaUIsQ0FBQyx1QkFBRCxDQUFsQixFQUE2QyxJQUE3QyxDQU5BO0FBT2pCTyxJQUFBQSxTQUFTLEVBQUVQLGlCQUFpQixDQUFDLGtCQUFEO0FBUFgsR0FBWDs7QUFVUCxNQUFNUSxNQUFNLEdBQUc7QUFDZEMsSUFBQUEsUUFBUSxFQUFFVCxpQkFBaUIsQ0FBQyxnQkFBRCxDQURiO0FBRWRVLElBQUFBLFNBQVMsRUFBRVYsaUJBQWlCLENBQUMsaUJBQUQsQ0FGZDtBQUdkVyxJQUFBQSxRQUFRLEVBQUVYLGlCQUFpQixDQUFDLGdCQUFEO0FBSGIsR0FBZjtBQU1PLE1BQU1ZLEtBQUssR0FBRztBQUNwQkMsSUFBQUEsV0FBVyxFQUFFQyxHQUFHLENBQUNDLEdBQUcsQ0FBQ1AsTUFBTSxDQUFDRSxTQUFSLENBQUosRUFBd0JLLEdBQUcsQ0FBQ1AsTUFBTSxDQUFDRyxRQUFSLENBQTNCLENBREk7QUFFcEJLLElBQUFBLHdCQUF3QixFQUFFQyxFQUFFLENBQzNCRixHQUFHLENBQUNQLE1BQU0sQ0FBQ0MsUUFBUixDQUR3QixFQUUzQkssR0FBRyxDQUFDTixNQUFNLENBQUNDLFFBQVIsRUFBa0JNLEdBQUcsQ0FBQ2YsaUJBQWlCLENBQUMsOENBQUQsQ0FBbEIsQ0FBckIsQ0FGd0I7QUFGUixHQUFkO0FBUVA7Ozs7Ozs7Ozs7OztBQVNPLE1BQU1rQixvQkFBb0IsR0FBRyxVQUFTQyxJQUFULEVBQXVCQyxnQkFBdkIsRUFBMkRDLHNCQUEzRCxFQUFxRztBQUN4STtBQUNBLFFBQUlGLElBQUksQ0FBQ0csT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBMUIsRUFBNkI7QUFDNUIsVUFBTUMsS0FBSyxHQUFHSixJQUFJLENBQUNLLEtBQUwsQ0FBVyxHQUFYLEVBQWdCQyxNQUFoQixDQUF1QkMsT0FBdkIsQ0FBZDtBQUFBLFVBQ0NDLFlBQVksR0FBR0osS0FBSyxDQUFDSyxHQUFOLEVBRGhCO0FBQUEsVUFFQ0MsYUFBYSxHQUFHTixLQUFLLENBQUNPLElBQU4sQ0FBVyxHQUFYLENBRmpCO0FBQUEsVUFHQ0MsU0FBUyxHQUFHWCxnQkFBZ0IsQ0FBQ1ksWUFBakIsQ0FBOEJILGFBQTlCLENBSGI7O0FBSUEsVUFBSUUsU0FBSixFQUFlO0FBQ2Q7QUFDQVosUUFBQUEsSUFBSSxHQUFHLE1BQU1ZLFNBQVMsQ0FBQ0UsSUFBaEIsR0FBdUIsR0FBdkIsR0FBNkJOLFlBQXBDO0FBQ0E7QUFDRCxLQVRELE1BU087QUFDTjtBQUNBO0FBQ0EsVUFBTU8sU0FBUyxHQUFHYixzQkFBc0IsQ0FBQ2MsTUFBdkIsRUFBbEI7QUFDQUQsTUFBQUEsU0FBUyxDQUFDRSxJQUFWLENBQWVqQixJQUFmO0FBQ0FBLE1BQUFBLElBQUksR0FBR2UsU0FBUyxDQUFDSixJQUFWLENBQWUsR0FBZixDQUFQO0FBQ0E7O0FBQ0QsV0FBT1gsSUFBUDtBQUNBLEdBbkJNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmQsIGJpbmRpbmdFeHByZXNzaW9uLCBlcXVhbCwgRXhwcmVzc2lvbiwgbm90LCBvciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBVSSA9IHtcblx0SXNDcmVhdGVNb2RlOiBiaW5kaW5nRXhwcmVzc2lvbihcImNyZWF0ZU1vZGVcIiwgXCJ1aVwiKSBhcyBFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRJc0NyZWF0ZU1vZGVTdGlja3k6IGJpbmRpbmdFeHByZXNzaW9uKFwiY3JlYXRlTW9kZVN0aWNreVwiLCBcInVpXCIpIGFzIEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzRWRpdGFibGU6IGJpbmRpbmdFeHByZXNzaW9uKFwiL2lzRWRpdGFibGVcIiwgXCJ1aVwiKSBhcyBFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRJc1RyYW5zaWVudEJpbmRpbmc6IGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiQCR1aTUuY29udGV4dC5pc1RyYW5zaWVudFwiKSwgdHJ1ZSksXG5cdElzVG90YWw6IGVxdWFsKGJpbmRpbmdFeHByZXNzaW9uKFwiQCR1aTUubm9kZS5pc1RvdGFsXCIpLCB0cnVlKSxcblx0SXNFeHBhbmRlZDogZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIiksIHRydWUpLFxuXHROb2RlTGV2ZWw6IGJpbmRpbmdFeHByZXNzaW9uKFwiQCR1aTUubm9kZS5sZXZlbFwiKVxufTtcblxuY29uc3QgRW50aXR5ID0ge1xuXHRIYXNEcmFmdDogYmluZGluZ0V4cHJlc3Npb24oXCJIYXNEcmFmdEVudGl0eVwiKSxcblx0SGFzQWN0aXZlOiBiaW5kaW5nRXhwcmVzc2lvbihcIkhhc0FjdGl2ZUVudGl0eVwiKSxcblx0SXNBY3RpdmU6IGJpbmRpbmdFeHByZXNzaW9uKFwiSXNBY3RpdmVFbnRpdHlcIilcbn07XG5cbmV4cG9ydCBjb25zdCBEcmFmdCA9IHtcblx0SXNOZXdPYmplY3Q6IGFuZChub3QoRW50aXR5Lkhhc0FjdGl2ZSksIG5vdChFbnRpdHkuSXNBY3RpdmUpKSxcblx0SGFzTm9EcmFmdEZvckN1cnJlbnRVc2VyOiBvcihcblx0XHRub3QoRW50aXR5Lkhhc0RyYWZ0KSxcblx0XHRhbmQoRW50aXR5Lkhhc0RyYWZ0LCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdElzUHJvY2Vzc2VkQnlNZVwiKSBhcyBFeHByZXNzaW9uPGJvb2xlYW4+KSlcblx0KVxufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBhZGp1c3Qgc2luZ2xldG9uIHBhdGhzIGluIHRoZSBhbm5vdGF0aW9uLlxuICogVGhlIGFic29sdXRlIHBhdGggdmlhIEVudGl0eUNvbnRhaW5lciBuZWVkcyB0byBiZSBzaG9ydGVuZWQgdG8gL1NpbmdsZXRvbk5hbWUvUHJvcGVydHlOYW1lLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGNvbmZpZ3VyZWQgaW4gdGhlIGFubm90YXRpb25cbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSB2aXNpdGVkTmF2aWdhdGlvblBhdGhzIFRoZSBhcnJheSBvZiB2aXNpdGVkIG5hdmlnYXRpb24gcGF0aHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhZGp1c3RlZCBwYXRoIGZvciB0aGUgcmVmZXJlbmNlIG9mIHRoZSBzaW5nbGV0b24gcHJvcGVydHksIG90aGVyd2lzZSB0aGUgaW5wdXQgcGF0aCBpdHNlbGYuXG4gKi9cbmV4cG9ydCBjb25zdCBzaW5nbGV0b25QYXRoVmlzaXRvciA9IGZ1bmN0aW9uKHBhdGg6IHN0cmluZywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCwgdmlzaXRlZE5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuXHQvLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgcGF0aCBpcyBhYnNvbHV0ZSBhbmQgd2hldGhlciBpdCBwb2ludHMgdG8gYSBzaW5nbGV0b24uXG5cdGlmIChwYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0Y29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbiksXG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBwYXJ0cy5wb3AoKSxcblx0XHRcdGVudGl0eVNldE5hbWUgPSBwYXJ0cy5qb2luKFwiL1wiKSxcblx0XHRcdHNpbmdsZXRvbiA9IGNvbnZlcnRlckNvbnRleHQuZ2V0U2luZ2xldG9uKGVudGl0eVNldE5hbWUpO1xuXHRcdGlmIChzaW5nbGV0b24pIHtcblx0XHRcdC8vIFNldCB0aGUgYWJzb2x1dGUgYmluZGluZyBwYXRoIHRvIGFjY2VzcyB0aGUgc2luZ2xldG9uIHByb3BlcnR5XG5cdFx0XHRwYXRoID0gXCIvXCIgKyBzaW5nbGV0b24ubmFtZSArIFwiL1wiICsgcHJvcGVydHlOYW1lO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHQvLyBOb3QgYSBzaW5nbGV0b24gcmVmZXJlbmNlLlxuXHRcdC8vIFByZWZpeCB0aGUgbmF2aWdhdGlvbiBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBwYXRoXG5cdFx0Y29uc3QgbG9jYWxQYXRoID0gdmlzaXRlZE5hdmlnYXRpb25QYXRocy5jb25jYXQoKTtcblx0XHRsb2NhbFBhdGgucHVzaChwYXRoKTtcblx0XHRwYXRoID0gbG9jYWxQYXRoLmpvaW4oXCIvXCIpO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJpbmRpbmdIZWxwZXIudHMiXSwibmFtZXMiOlsiVUkiLCJJc0NyZWF0ZU1vZGUiLCJiaW5kaW5nRXhwcmVzc2lvbiIsIklzQ3JlYXRlTW9kZVN0aWNreSIsIklzRWRpdGFibGUiLCJJc1RyYW5zaWVudEJpbmRpbmciLCJlcXVhbCIsIklzVG90YWwiLCJJc0V4cGFuZGVkIiwiTm9kZUxldmVsIiwiRW50aXR5IiwiSGFzRHJhZnQiLCJIYXNBY3RpdmUiLCJJc0FjdGl2ZSIsIkRyYWZ0IiwiSXNOZXdPYmplY3QiLCJhbmQiLCJub3QiLCJIYXNOb0RyYWZ0Rm9yQ3VycmVudFVzZXIiLCJvciIsInNpbmdsZXRvblBhdGhWaXNpdG9yIiwicGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicHJvcGVydHlOYW1lIiwicG9wIiwiZW50aXR5U2V0TmFtZSIsImpvaW4iLCJzaW5nbGV0b24iLCJnZXRTaW5nbGV0b24iLCJuYW1lIiwibG9jYWxQYXRoIiwiY29uY2F0IiwicHVzaCIsImJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IiLCJiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUiLCJiaW5kaW5nUGFyYW1ldGVyUHJlZml4Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJzdGFydHNXaXRoIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQUNPLE1BQU1BLEVBQUUsR0FBRztBQUNqQkMsSUFBQUEsWUFBWSxFQUFFQyxpQkFBaUIsQ0FBQyxZQUFELEVBQWUsSUFBZixDQURkO0FBRWpCQyxJQUFBQSxrQkFBa0IsRUFBRUQsaUJBQWlCLENBQUMsa0JBQUQsRUFBcUIsSUFBckIsQ0FGcEI7QUFHakJFLElBQUFBLFVBQVUsRUFBRUYsaUJBQWlCLENBQUMsYUFBRCxFQUFnQixJQUFoQixDQUhaO0FBSWpCRyxJQUFB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O0FBQzVDLGFBQU9wQixJQUFJLENBQUNxQixTQUFMLENBQWVELHNCQUFzQixDQUFDSSxNQUF0QyxDQUFQO0FBQ0E7O0FBQ0QsV0FBT3pCLG9CQUFvQixDQUFDQyxJQUFELEVBQU9DLGdCQUFQLEVBQXlCLEVBQXpCLENBQTNCO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuZCwgYmluZGluZ0V4cHJlc3Npb24sIGVxdWFsLCBFeHByZXNzaW9uLCBub3QsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IFVJID0ge1xuXHRJc0NyZWF0ZU1vZGU6IGJpbmRpbmdFeHByZXNzaW9uKFwiY3JlYXRlTW9kZVwiLCBcInVpXCIpIGFzIEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzQ3JlYXRlTW9kZVN0aWNreTogYmluZGluZ0V4cHJlc3Npb24oXCJjcmVhdGVNb2RlU3RpY2t5XCIsIFwidWlcIikgYXMgRXhwcmVzc2lvbjxib29sZWFuPixcblx0SXNFZGl0YWJsZTogYmluZGluZ0V4cHJlc3Npb24oXCIvaXNFZGl0YWJsZVwiLCBcInVpXCIpIGFzIEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdElzVHJhbnNpZW50QmluZGluZzogZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJAJHVpNS5jb250ZXh0LmlzVHJhbnNpZW50XCIpLCB0cnVlKSxcblx0SXNUb3RhbDogZXF1YWwoYmluZGluZ0V4cHJlc3Npb24oXCJAJHVpNS5ub2RlLmlzVG90YWxcIiksIHRydWUpLFxuXHRJc0V4cGFuZGVkOiBlcXVhbChiaW5kaW5nRXhwcmVzc2lvbihcIkAkdWk1Lm5vZGUuaXNFeHBhbmRlZFwiKSwgdHJ1ZSksXG5cdE5vZGVMZXZlbDogYmluZGluZ0V4cHJlc3Npb24oXCJAJHVpNS5ub2RlLmxldmVsXCIpXG59O1xuXG5leHBvcnQgY29uc3QgRW50aXR5ID0ge1xuXHRIYXNEcmFmdDogYmluZGluZ0V4cHJlc3Npb24oXCJIYXNEcmFmdEVudGl0eVwiKSxcblx0SGFzQWN0aXZlOiBiaW5kaW5nRXhwcmVzc2lvbihcIkhhc0FjdGl2ZUVudGl0eVwiKSxcblx0SXNBY3RpdmU6IGJpbmRpbmdFeHByZXNzaW9uKFwiSXNBY3RpdmVFbnRpdHlcIilcbn07XG5cbmV4cG9ydCBjb25zdCBEcmFmdCA9IHtcblx0SXNOZXdPYmplY3Q6IGFuZChub3QoRW50aXR5Lkhhc0FjdGl2ZSksIG5vdChFbnRpdHkuSXNBY3RpdmUpKSxcblx0SGFzTm9EcmFmdEZvckN1cnJlbnRVc2VyOiBvcihcblx0XHRub3QoRW50aXR5Lkhhc0RyYWZ0KSxcblx0XHRhbmQoRW50aXR5Lkhhc0RyYWZ0LCBub3QoYmluZGluZ0V4cHJlc3Npb24oXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdElzQ3JlYXRlZEJ5TWVcIikgYXMgRXhwcmVzc2lvbjxib29sZWFuPikpXG5cdClcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gYWRqdXN0IHNpbmdsZXRvbiBwYXRocyBpbiB0aGUgYW5ub3RhdGlvbi5cbiAqIFRoZSBhYnNvbHV0ZSBwYXRoIHZpYSBFbnRpdHlDb250YWluZXIgbmVlZHMgdG8gYmUgc2hvcnRlbmVkIHRvIC9TaW5nbGV0b25OYW1lL1Byb3BlcnR5TmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBjb25maWd1cmVkIGluIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0ge0NvbnZlcnRlckNvbnRleHR9IGNvbnZlcnRlckNvbnRleHQgVGhlIGluc3RhbmNlIG9mIHRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIHtzdHJpbmdbXX0gdmlzaXRlZE5hdmlnYXRpb25QYXRocyBUaGUgYXJyYXkgb2YgdmlzaXRlZCBuYXZpZ2F0aW9uIHBhdGhzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYWRqdXN0ZWQgcGF0aCBmb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgc2luZ2xldG9uIHByb3BlcnR5LCBvdGhlcndpc2UgdGhlIGlucHV0IHBhdGggaXRzZWxmLlxuICovXG5leHBvcnQgY29uc3Qgc2luZ2xldG9uUGF0aFZpc2l0b3IgPSBmdW5jdGlvbihwYXRoOiBzdHJpbmcsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcblx0Ly8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHBhdGggaXMgYWJzb2x1dGUgYW5kIHdoZXRoZXIgaXQgcG9pbnRzIHRvIGEgc2luZ2xldG9uLlxuXHRpZiAocGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLFxuXHRcdFx0cHJvcGVydHlOYW1lID0gcGFydHMucG9wKCksXG5cdFx0XHRlbnRpdHlTZXROYW1lID0gcGFydHMuam9pbihcIi9cIiksXG5cdFx0XHRzaW5nbGV0b24gPSBjb252ZXJ0ZXJDb250ZXh0LmdldFNpbmdsZXRvbihlbnRpdHlTZXROYW1lKTtcblx0XHRpZiAoc2luZ2xldG9uKSB7XG5cdFx0XHQvLyBTZXQgdGhlIGFic29sdXRlIGJpbmRpbmcgcGF0aCB0byBhY2Nlc3MgdGhlIHNpbmdsZXRvbiBwcm9wZXJ0eVxuXHRcdFx0cGF0aCA9IFwiL1wiICsgc2luZ2xldG9uLm5hbWUgKyBcIi9cIiArIHByb3BlcnR5TmFtZTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gTm90IGEgc2luZ2xldG9uIHJlZmVyZW5jZS5cblx0XHQvLyBQcmVmaXggdGhlIG5hdmlnYXRpb24gcGF0aCB0byB0aGUgcHJvcGVydHkgcGF0aFxuXHRcdGNvbnN0IGxvY2FsUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMuY29uY2F0KCk7XG5cdFx0bG9jYWxQYXRoLnB1c2gocGF0aCk7XG5cdFx0cGF0aCA9IGxvY2FsUGF0aC5qb2luKFwiL1wiKTtcblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gYWRqdXN0IHByb3BlcnR5IHBhdGhzIGRlZmluZWQgaW4gdGhlIGJpbmRpbmcgb2YgYW4gYWN0aW9uLlxuICpcbiAqIFRoZSBiaW5kaW5nIHBhcmFtZXRlciBuYW1lIG5lZWRzIHRvIGJlIHJlbW92ZWQuIFNpbmdsZXRvbiBwYXRocyBuZWVkIHRvIGJlIHJlc29sdmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGNvbmZpZ3VyZWQgaW4gdGhlIGFubm90YXRpb25cbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYmluZGluZyBwYXJhbWV0ZXJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhZGp1c3RlZCBwcm9wZXJ0eSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGg6IHN0cmluZywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCwgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lOiBzdHJpbmcpIHtcblx0Y29uc3QgYmluZGluZ1BhcmFtZXRlclByZWZpeCA9IGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZT8uc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZS5sYXN0SW5kZXhPZihcIi9cIikgKyAxKSArIFwiL1wiO1xuXHQvLyBTdHJpcCB0aGUgYmluZGluZyBwYXJhbWV0ZXIgbmFtZSBmcm9tIE9wZXJhdGlvbkF2YWlsYWJsZSBwYXRoXG5cdC8vIEZvciBlLmcuIF9pdC9wcm9wZXJ0eTEgLS0+IHByb3BlcnR5MVxuXHRpZiAocGF0aC5zdGFydHNXaXRoKGJpbmRpbmdQYXJhbWV0ZXJQcmVmaXgpKSB7XG5cdFx0cmV0dXJuIHBhdGguc3Vic3RyaW5nKGJpbmRpbmdQYXJhbWV0ZXJQcmVmaXgubGVuZ3RoKTtcblx0fVxuXHRyZXR1cm4gc2luZ2xldG9uUGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dCwgW10pO1xufVxuIl19
@@ -11,7 +11,7 @@ export const UI = {
11
11
  NodeLevel: bindingExpression("@$ui5.node.level")
12
12
  };
13
13
 
14
- const Entity = {
14
+ export const Entity = {
15
15
  HasDraft: bindingExpression("HasDraftEntity"),
16
16
  HasActive: bindingExpression("HasActiveEntity"),
17
17
  IsActive: bindingExpression("IsActiveEntity")
@@ -21,7 +21,7 @@ export const Draft = {
21
21
  IsNewObject: and(not(Entity.HasActive), not(Entity.IsActive)),
22
22
  HasNoDraftForCurrentUser: or(
23
23
  not(Entity.HasDraft),
24
- and(Entity.HasDraft, not(bindingExpression("DraftAdministrativeData/DraftIsProcessedByMe") as Expression<boolean>))
24
+ and(Entity.HasDraft, not(bindingExpression("DraftAdministrativeData/DraftIsCreatedByMe") as Expression<boolean>))
25
25
  )
26
26
  };
27
27
 
@@ -54,3 +54,23 @@ export const singletonPathVisitor = function(path: string, converterContext: Con
54
54
  }
55
55
  return path;
56
56
  };
57
+
58
+ /**
59
+ * Function to adjust property paths defined in the binding of an action.
60
+ *
61
+ * The binding parameter name needs to be removed. Singleton paths need to be resolved.
62
+ *
63
+ * @param {string} path The path configured in the annotation
64
+ * @param {ConverterContext} converterContext The instance of the converter context
65
+ * @param {string} bindingParameterFullName The fully qualified name of the binding parameter
66
+ * @returns {string} The adjusted property path
67
+ */
68
+ export function bindingContextPathVisitor(path: string, converterContext: ConverterContext, bindingParameterFullName: string) {
69
+ const bindingParameterPrefix = bindingParameterFullName?.substring(bindingParameterFullName.lastIndexOf("/") + 1) + "/";
70
+ // Strip the binding parameter name from OperationAvailable path
71
+ // For e.g. _it/property1 --> property1
72
+ if (path.startsWith(bindingParameterPrefix)) {
73
+ return path.substring(bindingParameterPrefix.length);
74
+ }
75
+ return singletonPathVisitor(path, converterContext, []);
76
+ }