@sapui5/sap.fe.macros 1.141.2 → 1.143.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
- package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
- package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
- package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
- package/src/sap/fe/macros/Field.js +34 -17
- package/src/sap/fe/macros/Field.ts +64 -32
- package/src/sap/fe/macros/FooterContent.js +7 -3
- package/src/sap/fe/macros/FooterContent.tsx +8 -13
- package/src/sap/fe/macros/KPITag.js +6 -6
- package/src/sap/fe/macros/KPITag.tsx +8 -6
- package/src/sap/fe/macros/MacroAPI.js +4 -3
- package/src/sap/fe/macros/MacroAPI.ts +3 -3
- package/src/sap/fe/macros/MessageButton.js +4 -3
- package/src/sap/fe/macros/MessageButton.tsx +7 -3
- package/src/sap/fe/macros/MicroChart.js +12 -7
- package/src/sap/fe/macros/MicroChart.tsx +9 -3
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Share.js +7 -7
- package/src/sap/fe/macros/Share.tsx +9 -6
- package/src/sap/fe/macros/Status.js +39 -11
- package/src/sap/fe/macros/Status.tsx +25 -5
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
- package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
- package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
- package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
- package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
- package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
- package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
- package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
- package/src/sap/fe/macros/library.js +5 -6
- package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +13 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/messages/MessageButton.js +21 -12
- package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
- package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
- package/src/sap/fe/macros/quickView/QuickView.js +5 -4
- package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +21 -5
- package/src/sap/fe/macros/table/Action.ts +14 -4
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/Column.js +3 -2
- package/src/sap/fe/macros/table/Column.ts +1 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +74 -30
- package/src/sap/fe/macros/table/Table.block.tsx +77 -14
- package/src/sap/fe/macros/table/TableAPI.js +175 -132
- package/src/sap/fe/macros/table/TableAPI.ts +67 -30
- package/src/sap/fe/macros/table/TableDefinition.js +20 -3
- package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +25 -13
- package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/Utils.js +9 -3
- package/src/sap/fe/macros/table/Utils.ts +14 -8
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
- package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -301,7 +301,6 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
301
301
|
: "sap/fe/macros/form/FormElement.designtime";
|
|
302
302
|
|
|
303
303
|
getDataPointTemplate = xml`
|
|
304
|
-
<template:then>
|
|
305
304
|
<template:with path="formElements>0/annotationPath" var="dataPoint">
|
|
306
305
|
<f:FormElement
|
|
307
306
|
dt:designtime="${designtime}"
|
|
@@ -324,15 +323,12 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
324
323
|
</f:fields>
|
|
325
324
|
</f:FormElement>
|
|
326
325
|
</template:with>
|
|
327
|
-
|
|
326
|
+
|
|
328
327
|
`;
|
|
329
328
|
}
|
|
330
329
|
}
|
|
331
330
|
|
|
332
331
|
const getContactTemplate = xml`
|
|
333
|
-
<template:elseif
|
|
334
|
-
test="{= \${formElements>0/annotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Contact') > -1 }"
|
|
335
|
-
>
|
|
336
332
|
<template:with path="formElements>0/annotationPath" var="metaPath">
|
|
337
333
|
<f:FormElement
|
|
338
334
|
dt:designtime="{= \${metaPath>./@com.sap.vocabularies.UI.v1.AdaptationHidden} ? 'not-adaptable-tree' : 'sap/fe/macros/form/FormElement.designtime' }"
|
|
@@ -356,18 +352,22 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
356
352
|
/>
|
|
357
353
|
</f:fields>
|
|
358
354
|
</f:FormElement>
|
|
359
|
-
</template:with
|
|
360
|
-
</template:elseif>`;
|
|
355
|
+
</template:with>`;
|
|
361
356
|
|
|
362
357
|
return xml`
|
|
363
358
|
<template:if test="{= \${formElements>0/annotationPath}.indexOf('com.sap.vocabularies.UI.v1.DataPoint') > -1 }">
|
|
364
|
-
|
|
365
|
-
|
|
359
|
+
<template:then>
|
|
360
|
+
${getDataPointTemplate}
|
|
361
|
+
</template:then>
|
|
362
|
+
<template:elseif
|
|
363
|
+
test="{= \${formElements>0/annotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Contact') > -1 }"
|
|
364
|
+
>
|
|
365
|
+
${getContactTemplate}
|
|
366
|
+
</template:elseif>
|
|
366
367
|
<template:else>
|
|
367
368
|
${this.getDataFieldsForAnnotations()}
|
|
368
369
|
</template:else>
|
|
369
|
-
</template:if
|
|
370
|
-
`;
|
|
370
|
+
</template:if>`;
|
|
371
371
|
}
|
|
372
372
|
|
|
373
373
|
/**
|
|
@@ -378,19 +378,58 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
378
378
|
getConnectedFieldsFormElement(formElement: AnnotationFormElement): string {
|
|
379
379
|
let connectedFieldElements = "";
|
|
380
380
|
|
|
381
|
-
|
|
381
|
+
// Create a sorted copy of the connected fields based on the placeholder order in the template string.
|
|
382
|
+
// The template string is expected to look like "{FieldA} / {FieldB}" etc. We extract the placeholder
|
|
383
|
+
// sequence and sort the connected fields accordingly (falling back to original order for unmatched fields).
|
|
384
|
+
let sortedConnectedFields = formElement.connectedFields ? [...formElement.connectedFields] : [];
|
|
385
|
+
if (sortedConnectedFields.length > 1) {
|
|
386
|
+
const templateString = sortedConnectedFields[0].originalTemplate || "";
|
|
387
|
+
// Extract placeholders in the sequence defined by the template (e.g. "{FieldA} / {FieldB}")
|
|
388
|
+
const placeholders = Array.from(templateString.matchAll(/\{([^}]+)\}/g))
|
|
389
|
+
.map((m) => String(m[1]).trim())
|
|
390
|
+
.filter((p) => p.length > 0);
|
|
391
|
+
|
|
392
|
+
// Helper to derive the identifier from the connected field (last segment of fullyQualifiedName)
|
|
393
|
+
const getFieldIdentifier = (cf: (typeof sortedConnectedFields)[number]): string => {
|
|
394
|
+
const originalObject = cf.originalObject;
|
|
395
|
+
return originalObject?.fullyQualifiedName
|
|
396
|
+
? originalObject.fullyQualifiedName.substring(originalObject.fullyQualifiedName.lastIndexOf("/") + 1)
|
|
397
|
+
: "";
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
const fieldIds = sortedConnectedFields.map(getFieldIdentifier);
|
|
401
|
+
const uniquePlaceholders = new Set(placeholders);
|
|
402
|
+
|
|
403
|
+
// We only reorder if the template is perfectly annotated:
|
|
404
|
+
// 1. Same number of placeholders as connected fields
|
|
405
|
+
// 2. All placeholders are unique
|
|
406
|
+
// 3. Every connected field id is referenced exactly once
|
|
407
|
+
const isPerfectMatch =
|
|
408
|
+
placeholders.length === sortedConnectedFields.length &&
|
|
409
|
+
uniquePlaceholders.size === placeholders.length &&
|
|
410
|
+
fieldIds.every((id) => uniquePlaceholders.has(id));
|
|
411
|
+
|
|
412
|
+
// Review feedback: Do NOT "fix" badly annotated connected fields.
|
|
413
|
+
// If the annotation is not perfect, we keep the original order.
|
|
414
|
+
if (isPerfectMatch) {
|
|
415
|
+
const mapById = new Map(sortedConnectedFields.map((cf) => [getFieldIdentifier(cf), cf]));
|
|
416
|
+
sortedConnectedFields = placeholders.map((ph) => mapById.get(ph)!);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
for (const connectedField of sortedConnectedFields) {
|
|
382
421
|
const model = this.contextPath.getModel();
|
|
383
422
|
const tempName = connectedField.originalObject?.fullyQualifiedName;
|
|
384
423
|
const path = tempName?.substring(tempName.lastIndexOf("/") + 1);
|
|
385
424
|
const bindingContext = model.createBindingContext(formElement.annotationPath + "Target/$AnnotationPath/Data/" + path);
|
|
386
425
|
const delimiter = CommonHelper.getDelimiter(connectedField.originalTemplate ?? "");
|
|
387
426
|
const notLastIndexCondition =
|
|
388
|
-
|
|
427
|
+
sortedConnectedFields.indexOf(connectedField) !== sortedConnectedFields.length - 1
|
|
389
428
|
? xml`<Text
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
429
|
+
text="${delimiter}"
|
|
430
|
+
class="sapUiSmallMarginBeginEnd"
|
|
431
|
+
width="100%"
|
|
432
|
+
/>`
|
|
394
433
|
: "";
|
|
395
434
|
|
|
396
435
|
const computedIdPrefix = this.id
|
|
@@ -403,34 +442,51 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
403
442
|
: "";
|
|
404
443
|
const computedVhIdPrefix = this.id ? StableIDHelper.generate([this.id, formElement.key, "FieldValueHelp"]) : "";
|
|
405
444
|
|
|
406
|
-
|
|
445
|
+
// if there is a label on the connected field, we create an invisible text for aria-labelledby for proper screen reading
|
|
446
|
+
const connectedFieldPath = (connectedField.originalObject as DataField)?.Value?.path?.valueOf();
|
|
447
|
+
const connectedFieldLabel = (connectedField.originalObject as DataField)?.Value?.$target?.annotations?.Common?.Label?.valueOf();
|
|
448
|
+
let ariaLabelId = "";
|
|
449
|
+
let ariaLabelText = "";
|
|
450
|
+
if (this.id && connectedFieldPath && connectedFieldLabel) {
|
|
451
|
+
ariaLabelId = StableIDHelper.generate([this.id, "AriaText", formElement.key, connectedFieldPath]);
|
|
452
|
+
ariaLabelText = xml`
|
|
453
|
+
<core:InvisibleText
|
|
454
|
+
text="${connectedFieldLabel}"
|
|
455
|
+
id="${ariaLabelId}"
|
|
456
|
+
/>
|
|
457
|
+
`;
|
|
458
|
+
}
|
|
407
459
|
|
|
460
|
+
let connectedFieldElement = "";
|
|
408
461
|
connectedFieldElement = xml`
|
|
462
|
+
${ariaLabelText}
|
|
409
463
|
<macro:Field
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
464
|
+
idPrefix="${computedIdPrefix}"
|
|
465
|
+
vhIdPrefix="${computedVhIdPrefix}"
|
|
466
|
+
contextPath="${this.entitySet?.getPath()}"
|
|
467
|
+
metaPath="${bindingContext.getPath()}"
|
|
468
|
+
onChange="${this.onChange}"
|
|
469
|
+
ariaLabelledBy="${
|
|
470
|
+
this.id ? [StableIDHelper.generate([this.id, "SemanticFormElementLabel", formElement.key]), ariaLabelId] : ""
|
|
471
|
+
}"
|
|
472
|
+
>
|
|
473
|
+
<formatOptions
|
|
474
|
+
textLinesEdit="${formElement.formatOptions?.textLinesEdit}"
|
|
475
|
+
textMaxLines="${formElement.formatOptions?.textMaxLines}"
|
|
476
|
+
textMaxCharactersDisplay="${formElement.formatOptions?.textMaxCharactersDisplay}"
|
|
477
|
+
textMaxLength="${formElement.formatOptions?.textMaxLength}"
|
|
478
|
+
textExpandBehaviorDisplay="${formElement.formatOptions?.textExpandBehaviorDisplay}"
|
|
479
|
+
textAlignMode="Form"
|
|
480
|
+
showEmptyIndicator="true"
|
|
481
|
+
fieldEditStyle="${formElement.formatOptions?.fieldEditStyle}"
|
|
482
|
+
radioButtonsHorizontalLayout="${formElement.formatOptions?.radioButtonsHorizontalLayout}"
|
|
483
|
+
/>
|
|
484
|
+
<macro:layoutData>
|
|
485
|
+
<FlexItemData growFactor="{= %{ui>/isEditable} ? 1 : 0}" />
|
|
486
|
+
</macro:layoutData>
|
|
487
|
+
</macro:Field>
|
|
488
|
+
${notLastIndexCondition}
|
|
489
|
+
`;
|
|
434
490
|
|
|
435
491
|
connectedFieldElements += connectedFieldElement;
|
|
436
492
|
}
|
|
@@ -463,29 +519,29 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
463
519
|
)?.toString();
|
|
464
520
|
|
|
465
521
|
return xml`
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
522
|
+
<f:FormElement
|
|
523
|
+
xmlns:f="sap.ui.layout.form"
|
|
524
|
+
dt:designtime="${designtime}"
|
|
525
|
+
id="${formElementId}"
|
|
526
|
+
visible="${visibleExpression}"
|
|
527
|
+
${this.attr("binding", bindingString)}
|
|
528
|
+
>
|
|
529
|
+
<f:label>
|
|
530
|
+
<Label
|
|
531
|
+
text="${targetObject?.Label ?? formElement.label}"
|
|
532
|
+
id="${this.id ? StableIDHelper.generate([this.id, "SemanticFormElementLabel", formElement.key]) : ""}"
|
|
533
|
+
|
|
534
|
+
/>
|
|
535
|
+
</f:label>
|
|
480
536
|
<f:fields>
|
|
481
|
-
|
|
482
|
-
|
|
537
|
+
<controls:FieldWrapper required="${isRequired}">
|
|
538
|
+
<HBox wrap="Wrap">
|
|
483
539
|
${connectedFieldElements}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
540
|
+
</HBox>
|
|
541
|
+
</controls:FieldWrapper>
|
|
542
|
+
</f:fields>
|
|
543
|
+
</f:FormElement>
|
|
544
|
+
`;
|
|
489
545
|
}
|
|
490
546
|
|
|
491
547
|
/**
|
|
@@ -725,12 +781,13 @@ export default class FormContainerBlock extends BuildingBlockTemplatingBase {
|
|
|
725
781
|
? "not-adaptable-tree"
|
|
726
782
|
: "sap/fe/macros/form/FormElement.designtime";
|
|
727
783
|
const formElementKey = StableIDHelper.generate([this.id, formElement.key]);
|
|
784
|
+
|
|
728
785
|
return xml`
|
|
729
786
|
<f:FormElement
|
|
730
787
|
dt:designtime="${designtime}"
|
|
731
788
|
id="${formElementId}"
|
|
732
789
|
label="${formElement.label}"
|
|
733
|
-
visible
|
|
790
|
+
${this.attr("visible", formElement.visible)}
|
|
734
791
|
${this.attr("binding", bindingString)}
|
|
735
792
|
>
|
|
736
793
|
<f:fields>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/formatters/Scope", "sap/fe/core/helpers/SizeHelper", "sap/fe/macros/DelegateUtil", "sap/fe/macros/table/TableSizeHelper", "sap/ui/core/message/MessageType", "sap/ui/mdc/enums/FieldEditMode"], function (Log, CommonUtils, Scope, SizeHelper, DelegateUtil, TableSizeHelper, MessageType, FieldEditMode) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const getMessagetypeOrder = function (messageType) {
|
|
@@ -34,7 +34,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
34
34
|
return fieldValidityObject[key]["validity"];
|
|
35
35
|
});
|
|
36
36
|
};
|
|
37
|
-
validateCreationRowFields.__functionName = "
|
|
37
|
+
validateCreationRowFields.__functionName = "._formatters.TableFormatter#validateCreationRowFields";
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* @param this The object status control.
|
|
@@ -57,7 +57,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
57
57
|
}
|
|
58
58
|
return statusVisibility;
|
|
59
59
|
};
|
|
60
|
-
getErrorStatusTextVisibilityFormatter.__functionName = "
|
|
60
|
+
getErrorStatusTextVisibilityFormatter.__functionName = "._formatters.TableFormatter.bind($control)#getErrorStatusTextVisibilityFormatter";
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
63
|
* Method to calculate the row highlighting based on the criticality value and the messages.
|
|
@@ -119,7 +119,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
119
119
|
const isNewObject = !hasActiveEntity && !isActiveEntity && !isInactive;
|
|
120
120
|
return isDraftMode === "true" && isNewObject ? MessageType.Information : MessageType.None;
|
|
121
121
|
};
|
|
122
|
-
rowHighlighting.__functionName = "
|
|
122
|
+
rowHighlighting.__functionName = "._formatters.TableFormatter.bind($control)#rowHighlighting";
|
|
123
123
|
const navigatedRow = function (deepestPath) {
|
|
124
124
|
const sPath = this.getBindingContext()?.getPath();
|
|
125
125
|
if (sPath && deepestPath) {
|
|
@@ -128,7 +128,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
128
128
|
return false;
|
|
129
129
|
}
|
|
130
130
|
};
|
|
131
|
-
navigatedRow.__functionName = "
|
|
131
|
+
navigatedRow.__functionName = "._formatters.TableFormatter.bind($control)#navigatedRow";
|
|
132
132
|
|
|
133
133
|
/**
|
|
134
134
|
* Method to calculate the width of an MDCColumn based on the property definition.
|
|
@@ -182,7 +182,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
182
182
|
}
|
|
183
183
|
return columnWidth;
|
|
184
184
|
};
|
|
185
|
-
getColumnWidth.__functionName = "
|
|
185
|
+
getColumnWidth.__functionName = "._formatters.TableFormatter.bind($control)#getColumnWidth";
|
|
186
186
|
|
|
187
187
|
/**
|
|
188
188
|
* Method to calculate the width of an MDCColumn for valueHelp the table.
|
|
@@ -199,7 +199,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
199
199
|
const withUnit = !isSmallDevice;
|
|
200
200
|
return isSmallDevice && isTargetSmallDevice || !isSmallDevice && !isTargetSmallDevice ? tableFormatter.getColumnWidth.call(this, FieldEditMode.Display, isPropertiesCacheAvailable, propertyName, withUnit, widthIncludingColumnHeader) : null;
|
|
201
201
|
};
|
|
202
|
-
getColumnWidthForValueHelpTable.__functionName = "
|
|
202
|
+
getColumnWidthForValueHelpTable.__functionName = "._formatters.TableFormatter.bind($control)#getColumnWidthForValueHelpTable";
|
|
203
203
|
function isRatingIndicator(oControl) {
|
|
204
204
|
if (oControl.isA("sap.fe.macros.controls.FieldWrapper")) {
|
|
205
205
|
const vContentDisplay = Array.isArray(oControl.getContentDisplay()) ? oControl.getContentDisplay()[0] : oControl.getContentDisplay();
|
|
@@ -246,7 +246,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
246
246
|
}
|
|
247
247
|
return true;
|
|
248
248
|
}
|
|
249
|
-
getVBoxVisibility.__functionName = "
|
|
249
|
+
getVBoxVisibility.__functionName = "._formatters.TableFormatter.bind($control)#getVBoxVisibility";
|
|
250
250
|
|
|
251
251
|
// See https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters for more detail on this weird syntax
|
|
252
252
|
/**
|
|
@@ -274,7 +274,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
274
274
|
tableFormatter.isRatingIndicator = isRatingIndicator; // for unit tests
|
|
275
275
|
tableFormatter.getColumnWidth = getColumnWidth;
|
|
276
276
|
tableFormatter.getColumnWidthForValueHelpTable = getColumnWidthForValueHelpTable;
|
|
277
|
-
|
|
277
|
+
|
|
278
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
279
|
+
// @ts-ignore
|
|
280
|
+
Scope._formatters.TableFormatter = tableFormatter;
|
|
278
281
|
return tableFormatter;
|
|
279
282
|
}, false);
|
|
280
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRNZXNzYWdldHlwZU9yZGVyIiwibWVzc2FnZVR5cGUiLCJ2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzIiwiZmllbGRWYWxpZGl0eU9iamVjdCIsImZpZWxkS2V5cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJldmVyeSIsImtleSIsIl9fZnVuY3Rpb25OYW1lIiwiZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlciIsInNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IiLCJhRmlsdGVyZWRNZXNzYWdlcyIsImNvbHVtbk5hbWUiLCJpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIiwic3RhdHVzVmlzaWJpbGl0eSIsInNDdXJyZW50Q29udGV4dFBhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwib01lc3NhZ2UiLCJnZXRUeXBlIiwiZ2V0VGFyZ2V0cyIsImluZGV4T2YiLCJyb3dIaWdobGlnaHRpbmciLCJjcml0aWNhbGl0eVZhbHVlIiwiaGFzQWN0aXZlRW50aXR5IiwiaXNBY3RpdmVFbnRpdHkiLCJpc0RyYWZ0TW9kZSIsImNvbnRleHRQYXRoIiwiaXNJbmFjdGl2ZSIsImlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSIsIm1lc3NhZ2UiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsIkxvZyIsImVycm9yIiwiaXNOZXdPYmplY3QiLCJuYXZpZ2F0ZWRSb3ciLCJkZWVwZXN0UGF0aCIsInNQYXRoIiwiZ2V0Q29sdW1uV2lkdGgiLCJlZGl0TW9kZSIsImlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlIiwicHJvcGVydHlOYW1lIiwidXNlUmVtVW5pdCIsImFyZ3VtZW50cyIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaXNTb3J0YWJsZUNvbHVtbiIsImlzQ29sdW1uUmVxdWlyZWQiLCJtZGNUYWJsZSIsImdldFBhcmVudCIsInByb3BlcnRpZXMiLCJpc0EiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5IiwiZmluZCIsInByb3AiLCJjb2x1bW5XaWR0aCIsIlRhYmxlU2l6ZUhlbHBlciIsImdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5IiwidW5pdE9yVGltZXpvbmUiLCJleHBvcnRTZXR0aW5ncyIsInVuaXQiLCJ0aW1lem9uZSIsIlNpemVIZWxwZXIiLCJnZXRCdXR0b25XaWR0aCIsIkZpZWxkRWRpdE1vZGUiLCJFZGl0YWJsZSIsInVuaXRPckN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJ0eXBlQ29uZmlnIiwiYmFzZVR5cGUiLCJnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlIiwiaXNUYXJnZXRTbWFsbERldmljZSIsImlzU21hbGxEZXZpY2UiLCJDb21tb25VdGlscyIsIndpdGhVbml0IiwidGFibGVGb3JtYXR0ZXIiLCJjYWxsIiwiRGlzcGxheSIsImlzUmF0aW5nSW5kaWNhdG9yIiwib0NvbnRyb2wiLCJ2Q29udGVudERpc3BsYXkiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRDb250ZW50RGlzcGxheSIsIl91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yIiwiZmllbGRXcmFwcGVyIiwibGFzdCIsInZDb250ZW50RWRpdCIsImdldENvbnRlbnRFZGl0IiwiYWRkU3R5bGVDbGFzcyIsInJlbW92ZVN0eWxlQ2xhc3MiLCJnZXRWQm94VmlzaWJpbGl0eSIsImFJdGVtcyIsImdldEl0ZW1zIiwiYkxhc3RFbGVtZW50Rm91bmQiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJpbmRleCIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJfbGVuMiIsIm9BcmdzIiwiX2tleTIiLCJhcHBseSIsIk9iamVjdFBhdGgiLCJzZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlRm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IE9iamVjdFBhdGggZnJvbSBcInNhcC9iYXNlL3V0aWwvT2JqZWN0UGF0aFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFNpemVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU2l6ZUhlbHBlclwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlU2l6ZUhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZVNpemVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBGaWVsZEVkaXRNb2RlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0ZpZWxkRWRpdE1vZGVcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL3ZhbHVlaGVscC9jb250ZW50L01EQ1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBGaWVsZFdyYXBwZXIgZnJvbSBcIi4uL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuXG5jb25zdCBnZXRNZXNzYWdldHlwZU9yZGVyID0gZnVuY3Rpb24gKG1lc3NhZ2VUeXBlOiBzdHJpbmcpOiBudW1iZXIge1xuXHRzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7XG5cdFx0Y2FzZSBcIkVycm9yXCI6XG5cdFx0XHRyZXR1cm4gNDtcblx0XHRjYXNlIFwiV2FybmluZ1wiOlxuXHRcdFx0cmV0dXJuIDM7XG5cdFx0Y2FzZSBcIkluZm9ybWF0aW9uXCI6XG5cdFx0XHRyZXR1cm4gMjtcblx0XHRjYXNlIFwiTm9uZVwiOlxuXHRcdFx0cmV0dXJuIDE7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiAtMTtcblx0fVxufTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGl0eSBvZiBjcmVhdGlvbiByb3cgZmllbGRzLlxuICogQHBhcmFtIGZpZWxkVmFsaWRpdHlPYmplY3QgT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkc1xuICogQHJldHVybnMgYHRydWVgIGlmIGFsbCB0aGUgZmllbGRzIGluIHRoZSBjcmVhdGlvbiByb3cgYXJlIHZhbGlkLCBgZmFsc2VgIG90aGVyd2lzZVxuICovXG5jb25zdCB2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzID0gZnVuY3Rpb24gKGZpZWxkVmFsaWRpdHlPYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCB7IHZhbGlkaXR5OiBib29sZWFuIH0+KTogYm9vbGVhbiB7XG5cdGlmICghZmllbGRWYWxpZGl0eU9iamVjdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmaWVsZFZhbGlkaXR5T2JqZWN0KTtcblx0cmV0dXJuIChcblx0XHRmaWVsZEtleXMubGVuZ3RoID4gMCAmJlxuXHRcdGZpZWxkS2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gZmllbGRWYWxpZGl0eU9iamVjdFtrZXldW1widmFsaWRpdHlcIl07XG5cdFx0fSlcblx0KTtcbn07XG52YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjdmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkc1wiO1xuXG4vKipcbiAqIEBwYXJhbSB0aGlzIFRoZSBvYmplY3Qgc3RhdHVzIGNvbnRyb2wuXG4gKiBAcGFyYW0gc2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvciBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgZHJhZnQgaW5kaWNhdG9yLlxuICogQHBhcmFtIGFGaWx0ZXJlZE1lc3NhZ2VzIEFycmF5IG9mIG1lc3NhZ2VzLlxuICogQHBhcmFtIGNvbHVtbk5hbWVcbiAqIEBwYXJhbSBpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIEZsYWcgd2hpY2ggc2F5cyBpZiBzZW1hbnRpYyBrZXkgaXMgYSBwYXJ0IG9mIGZpZWxkIGdyb3VwLlxuICogQHJldHVybnMgVGhlIHZhbHVlIGZvciB0aGUgdmlzaWJpbGl0eSBwcm9wZXJ0eSBvZiB0aGUgb2JqZWN0IHN0YXR1c1xuICovXG5jb25zdCBnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBNYW5hZ2VkT2JqZWN0LFxuXHRzZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yOiBzdHJpbmcsXG5cdGFGaWx0ZXJlZE1lc3NhZ2VzOiBNZXNzYWdlW10sXG5cdGNvbHVtbk5hbWU6IHN0cmluZyxcblx0aXNTZW1hbnRpY0tleUluRmllbGRHcm91cD86IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRsZXQgc3RhdHVzVmlzaWJpbGl0eSA9IGZhbHNlO1xuXHRpZiAoYUZpbHRlcmVkTWVzc2FnZXMgJiYgYUZpbHRlcmVkTWVzc2FnZXMubGVuZ3RoID4gMCAmJiAoaXNTZW1hbnRpY0tleUluRmllbGRHcm91cCB8fCBjb2x1bW5OYW1lID09PSBzZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yKSkge1xuXHRcdGNvbnN0IHNDdXJyZW50Q29udGV4dFBhdGggPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KCkgPyB0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKSA6IHVuZGVmaW5lZDtcblx0XHRhRmlsdGVyZWRNZXNzYWdlcy5mb3JFYWNoKChvTWVzc2FnZSkgPT4ge1xuXHRcdFx0aWYgKG9NZXNzYWdlLmdldFR5cGUoKSA9PT0gXCJFcnJvclwiICYmIHNDdXJyZW50Q29udGV4dFBhdGggJiYgb01lc3NhZ2UuZ2V0VGFyZ2V0cygpWzBdLmluZGV4T2Yoc0N1cnJlbnRDb250ZXh0UGF0aCkgPT09IDApIHtcblx0XHRcdFx0c3RhdHVzVmlzaWJpbGl0eSA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBzdGF0dXNWaXNpYmlsaXR5O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBzdGF0dXNWaXNpYmlsaXR5O1xufTtcbmdldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXIuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyXCI7XG5cbi8qKlxuICogTWV0aG9kIHRvIGNhbGN1bGF0ZSB0aGUgcm93IGhpZ2hsaWdodGluZyBiYXNlZCBvbiB0aGUgY3JpdGljYWxpdHkgdmFsdWUgYW5kIHRoZSBtZXNzYWdlcy5cbiAqIEBwYXJhbSBjcml0aWNhbGl0eVZhbHVlXG4gKiBAcGFyYW0gYUZpbHRlcmVkTWVzc2FnZXNcbiAqIEBwYXJhbSBoYXNBY3RpdmVFbnRpdHlcbiAqIEBwYXJhbSBpc0FjdGl2ZUVudGl0eVxuICogQHBhcmFtIGlzRHJhZnRNb2RlXG4gKiBAcGFyYW0gY29udGV4dFBhdGhcbiAqIEBwYXJhbSBpc0luYWN0aXZlXG4gKi9cbmNvbnN0IHJvd0hpZ2hsaWdodGluZyA9IGZ1bmN0aW9uIChcblx0dGhpczogTWFuYWdlZE9iamVjdCxcblx0Y3JpdGljYWxpdHlWYWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuXHRhRmlsdGVyZWRNZXNzYWdlczogTWVzc2FnZVtdIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRoYXNBY3RpdmVFbnRpdHk6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGlzQWN0aXZlRW50aXR5OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRpc0RyYWZ0TW9kZTogc3RyaW5nLFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGNvbnRleHRQYXRoOiBzdHJpbmcsXG5cdGlzSW5hY3RpdmU6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWRcbik6IE1lc3NhZ2VUeXBlIHtcblx0Ly8gU2FuaXRpemUgc3RyaW5nIFwidW5kZWZpbmVkXCIgdmFsdWVzIHRvIGFjdHVhbCB1bmRlZmluZWRcblx0YUZpbHRlcmVkTWVzc2FnZXMgPSBhRmlsdGVyZWRNZXNzYWdlcyA9PT0gXCJ1bmRlZmluZWRcIiA/IHVuZGVmaW5lZCA6IGFGaWx0ZXJlZE1lc3NhZ2VzO1xuXHRoYXNBY3RpdmVFbnRpdHkgPSBoYXNBY3RpdmVFbnRpdHkgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBoYXNBY3RpdmVFbnRpdHk7XG5cdGlzQWN0aXZlRW50aXR5ID0gaXNBY3RpdmVFbnRpdHkgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBpc0FjdGl2ZUVudGl0eTtcblx0aXNJbmFjdGl2ZSA9IGlzSW5hY3RpdmUgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBpc0luYWN0aXZlO1xuXHRsZXQgaUhpZ2hlc3RDcml0aWNhbGl0eVZhbHVlID0gLTE7XG5cdGlmIChhRmlsdGVyZWRNZXNzYWdlcyAmJiBhRmlsdGVyZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRDb250ZXh0UGF0aCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdChhRmlsdGVyZWRNZXNzYWdlcyBhcyBNZXNzYWdlW10pLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0c0N1cnJlbnRDb250ZXh0UGF0aCAmJlxuXHRcdFx0XHRtZXNzYWdlLmdldFRhcmdldHMoKVswXS5pbmRleE9mKHNDdXJyZW50Q29udGV4dFBhdGgpID09PSAwICYmXG5cdFx0XHRcdGlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSA8IGdldE1lc3NhZ2V0eXBlT3JkZXIobWVzc2FnZS5nZXRUeXBlKCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0aUhpZ2hlc3RDcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZXR5cGVPcmRlcihtZXNzYWdlLmdldFR5cGUoKSk7XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRpZiAodHlwZW9mIGNyaXRpY2FsaXR5VmFsdWUgIT09IFwic3RyaW5nXCIpIHtcblx0XHRzd2l0Y2ggKGNyaXRpY2FsaXR5VmFsdWUpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLldhcm5pbmc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuU3VjY2Vzcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDU6XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIShPYmplY3QudmFsdWVzKE1lc3NhZ2VUeXBlKSBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoY3JpdGljYWxpdHlWYWx1ZSkpIHtcblx0XHRMb2cuZXJyb3IoYCcke2NyaXRpY2FsaXR5VmFsdWV9JyBpc24ndCBhIHZhbGlkIHZhbHVlIGZvciBhIHJvdyBoaWdobGlnaHQuYCk7XG5cdFx0cmV0dXJuIE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGNhbGN1bGF0ZWQgYSBjcml0aWNhbGl0eSA8PiBOb25lLCByZXR1cm4gaXRcblx0aWYgKGNyaXRpY2FsaXR5VmFsdWUgIT09IE1lc3NhZ2VUeXBlLk5vbmUpIHtcblx0XHRyZXR1cm4gY3JpdGljYWxpdHlWYWx1ZSBhcyBNZXNzYWdlVHlwZTtcblx0fVxuXG5cdC8vIElmIG5vdCwgd2Ugc2V0IGNyaXRpY2FsaXR5IHRvICdJbmZvcm1hdGlvbicgZm9yIG5ld2x5IGNyZWF0ZWQgcm93cyBpbiBEcmFmdCBtb2RlLCBhbmQga2VlcCAnTm9uZScgb3RoZXJ3aXNlXG5cdGNvbnN0IGlzTmV3T2JqZWN0ID0gIWhhc0FjdGl2ZUVudGl0eSAmJiAhaXNBY3RpdmVFbnRpdHkgJiYgIWlzSW5hY3RpdmU7XG5cdHJldHVybiBpc0RyYWZ0TW9kZSA9PT0gXCJ0cnVlXCIgJiYgaXNOZXdPYmplY3QgPyBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbiA6IE1lc3NhZ2VUeXBlLk5vbmU7XG59O1xucm93SGlnaGxpZ2h0aW5nLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjcm93SGlnaGxpZ2h0aW5nXCI7XG5cbmNvbnN0IG5hdmlnYXRlZFJvdyA9IGZ1bmN0aW9uICh0aGlzOiBNYW5hZ2VkT2JqZWN0LCBkZWVwZXN0UGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGNvbnN0IHNQYXRoID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdGlmIChzUGF0aCAmJiBkZWVwZXN0UGF0aCkge1xuXHRcdHJldHVybiBkZWVwZXN0UGF0aC5pbmRleE9mKHNQYXRoKSA9PT0gMDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5uYXZpZ2F0ZWRSb3cuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNuYXZpZ2F0ZWRSb3dcIjtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBhbiBNRENDb2x1bW4gYmFzZWQgb24gdGhlIHByb3BlcnR5IGRlZmluaXRpb24uXG4gKiBAcGFyYW0gdGhpcyBUaGUgTURDQ29sdW1uIG9iamVjdFxuICogQHBhcmFtIGVkaXRNb2RlIFRoZSBFZGl0TW9kZSBvZiB0aGUgdGFibGVcbiAqIEBwYXJhbSBpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSBJbmRpY2F0ZXMgaWYgdGhlIHByb3BlcnRpZXMgY2FjaGUgaXMgYXZhaWxhYmxlXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGhcbiAqIEBwYXJhbSB1c2VSZW1Vbml0IEluZGljYXRlcyBpZiB0aGUgcmVtIHVuaXQgbXVzdCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgY29sdW1uIHdpZHRoIHJlc3VsdFxuICogQHBhcmFtIHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cbiAqIEBwYXJhbSBpc1NvcnRhYmxlQ29sdW1uIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGlzIHNvcnRhYmxlXG4gKiBAcGFyYW0gaXNDb2x1bW5SZXF1aXJlZFxuICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBjb2x1bW5cbiAqL1xuY29uc3QgZ2V0Q29sdW1uV2lkdGggPSBmdW5jdGlvbiAoXG5cdHRoaXM6IENvbHVtbixcblx0ZWRpdE1vZGU6IEZpZWxkRWRpdE1vZGUsXG5cdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlOiBib29sZWFuLFxuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0dXNlUmVtVW5pdCA9IHRydWUsXG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyID0gZmFsc2UsXG5cdGlzU29ydGFibGVDb2x1bW4gPSBmYWxzZSxcblx0aXNDb2x1bW5SZXF1aXJlZCA9IGZhbHNlXG4pOiBzdHJpbmcgfCBudWxsIHwgbnVtYmVyIHtcblx0aWYgKCFpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG1kY1RhYmxlID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBNRENUYWJsZTtcblx0bGV0IHByb3BlcnRpZXM6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXTtcblx0aWYgKG1kY1RhYmxlPy5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLnVpLm1kYy52YWx1ZWhlbHAuY29udGVudC5NRENUYWJsZVwiKSkge1xuXHRcdHByb3BlcnRpZXMgPSBEZWxlZ2F0ZVV0aWwuZ2V0Q2FjaGVkUHJvcGVydGllcyh0aGlzLmdldFBhcmVudCgpIGFzIE1EQ1RhYmxlKSBhcyBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW107XG5cdH0gZWxzZSB7XG5cdFx0cHJvcGVydGllcyA9IChtZGNUYWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpO1xuXHR9XG5cdGlmICghcHJvcGVydGllcykgcmV0dXJuIG51bGw7XG5cdGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydGllcy5maW5kKChwcm9wKSA9PiBwcm9wLmtleSA9PT0gcHJvcGVydHlOYW1lKTtcblx0aWYgKCFwcm9wZXJ0eSkgcmV0dXJuIG51bGw7XG5cblx0bGV0IGNvbHVtbldpZHRoID0gVGFibGVTaXplSGVscGVyLmdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5KFxuXHRcdHByb3BlcnR5LFxuXHRcdHByb3BlcnRpZXMsXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0aXNTb3J0YWJsZUNvbHVtbixcblx0XHRpc0NvbHVtblJlcXVpcmVkXG5cdCk7XG5cdGNvbnN0IHVuaXRPclRpbWV6b25lID0gcHJvcGVydHkuZXhwb3J0U2V0dGluZ3M/LnVuaXQgfHwgcHJvcGVydHkuZXhwb3J0U2V0dGluZ3M/LnRpbWV6b25lO1xuXHRjb2x1bW5XaWR0aCArPSB1bml0T3JUaW1lem9uZSA/IFNpemVIZWxwZXIuZ2V0QnV0dG9uV2lkdGgodW5pdE9yVGltZXpvbmUpIDogMDtcblx0aWYgKGVkaXRNb2RlID09PSBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlKSB7XG5cdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lQcm9wZXJ0eSA9IHByb3BlcnR5LmV4cG9ydFNldHRpbmdzPy51bml0UHJvcGVydHk7IC8vIHRoZSB1bml0UHJvcGVydHkgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGN1cnJlbmN5IGFuZCB1bml0IG9uIHRoZSBleHBvcnQgc2V0dGluZ3Ncblx0XHRpZiAodW5pdE9yQ3VycmVuY3lQcm9wZXJ0eSkge1xuXHRcdFx0Y29sdW1uV2lkdGggKz0gMztcblx0XHR9XG5cdFx0c3dpdGNoIChwcm9wZXJ0eS50eXBlQ29uZmlnPy5iYXNlVHlwZSkge1xuXHRcdFx0Y2FzZSBcIkRhdGVcIjpcblx0XHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRjYXNlIFwiRGF0ZVRpbWVcIjpcblx0XHRcdFx0Y29sdW1uV2lkdGggKz0gMi44O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0fVxuXHR9XG5cdGlmICh1c2VSZW1Vbml0KSB7XG5cdFx0cmV0dXJuIGNvbHVtbldpZHRoICsgXCJyZW1cIjtcblx0fVxuXHRyZXR1cm4gY29sdW1uV2lkdGg7XG59O1xuZ2V0Q29sdW1uV2lkdGguX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRDb2x1bW5XaWR0aFwiO1xuXG4vKipcbiAqIE1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGFuIE1EQ0NvbHVtbiBmb3IgdmFsdWVIZWxwIHRoZSB0YWJsZS5cbiAqIEBwYXJhbSB0aGlzIFRoZSBNRENDb2x1bW4gb2JqZWN0XG4gKiBAcGFyYW0gaXNQcm9wZXJ0aWVzQ2FjaGVBdmFpbGFibGUgSW5kaWNhdGVzIGlmIHRoZSBwcm9wZXJ0aWVzIGNhY2hlIGlzIGF2YWlsYWJsZVxuICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoXG4gKiBAcGFyYW0gaXNUYXJnZXRTbWFsbERldmljZSBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIGhhcyBhIHNtYWxsIGRldmljZVxuICogQHBhcmFtIHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXG4gKiBAcmV0dXJucyBUaGUgd2lkdGggb2YgdGhlIGNvbHVtblxuICovXG5jb25zdCBnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBDb2x1bW4sXG5cdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlOiBib29sZWFuLFxuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0aXNUYXJnZXRTbWFsbERldmljZTogYm9vbGVhbixcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIgPSBmYWxzZVxuKTogbnVsbCB8IG51bWJlciB7XG5cdGNvbnN0IGlzU21hbGxEZXZpY2UgPSBDb21tb25VdGlscy5pc1NtYWxsRGV2aWNlKCk7XG5cdGNvbnN0IHdpdGhVbml0ID0gIWlzU21hbGxEZXZpY2U7XG5cblx0cmV0dXJuIChpc1NtYWxsRGV2aWNlICYmIGlzVGFyZ2V0U21hbGxEZXZpY2UpIHx8ICghaXNTbWFsbERldmljZSAmJiAhaXNUYXJnZXRTbWFsbERldmljZSlcblx0XHQ/ICh0YWJsZUZvcm1hdHRlci5nZXRDb2x1bW5XaWR0aC5jYWxsKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRGaWVsZEVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRcdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlLFxuXHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHdpdGhVbml0LFxuXHRcdFx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclxuXHRcdCAgKSBhcyBudWxsIHwgbnVtYmVyKVxuXHRcdDogbnVsbDtcbn07XG5cbmdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGUuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlXCI7XG5cbnR5cGUgRmllbGRXcmFwcGVyRml4ZWQgPSBGaWVsZFdyYXBwZXIgJiB7IGdldENvbnRlbnREaXNwbGF5OiBGdW5jdGlvbjsgZ2V0Q29udGVudEVkaXQ6IEZ1bmN0aW9uIH07XG5mdW5jdGlvbiBpc1JhdGluZ0luZGljYXRvcihvQ29udHJvbDogRmllbGRXcmFwcGVyRml4ZWQpOiBib29sZWFuIHtcblx0aWYgKG9Db250cm9sLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpKSB7XG5cdFx0Y29uc3QgdkNvbnRlbnREaXNwbGF5ID0gQXJyYXkuaXNBcnJheShvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpKVxuXHRcdFx0PyBvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpWzBdXG5cdFx0XHQ6IG9Db250cm9sLmdldENvbnRlbnREaXNwbGF5KCk7XG5cdFx0aWYgKHZDb250ZW50RGlzcGxheSAmJiB2Q29udGVudERpc3BsYXkuaXNBKFwic2FwLm0uUmF0aW5nSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBfdXBkYXRlU3R5bGVDbGFzc0ZvclJhdGluZ0luZGljYXRvcihmaWVsZFdyYXBwZXI6IEZpZWxkV3JhcHBlckZpeGVkLCBsYXN0OiBib29sZWFuKTogdm9pZCB7XG5cdGNvbnN0IHZDb250ZW50RGlzcGxheSA9IEFycmF5LmlzQXJyYXkoZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCkpXG5cdFx0PyBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudERpc3BsYXkoKVswXVxuXHRcdDogZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCk7XG5cdGNvbnN0IHZDb250ZW50RWRpdCA9IEFycmF5LmlzQXJyYXkoZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KCkpID8gZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KClbMF0gOiBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudEVkaXQoKTtcblxuXHRpZiAobGFzdCkge1xuXHRcdHZDb250ZW50RGlzcGxheS5hZGRTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpbkJvdHRvbVwiKTtcblx0XHR2Q29udGVudERpc3BsYXkuYWRkU3R5bGVDbGFzcyhcInNhcFVpTm9NYXJnaW5Ub3BcIik7XG5cdFx0dkNvbnRlbnRFZGl0LnJlbW92ZVN0eWxlQ2xhc3MoXCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIik7XG5cdH0gZWxzZSB7XG5cdFx0dkNvbnRlbnREaXNwbGF5LmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU5vTWFyZ2luQm90dG9tXCIpO1xuXHRcdHZDb250ZW50RGlzcGxheS5yZW1vdmVTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpblRvcFwiKTtcblx0XHR2Q29udGVudEVkaXQuYWRkU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0VkJveFZpc2liaWxpdHkodGhpczogVGFibGUsIC4uLmFyZ3M6IHVua25vd25bXSk6IGJvb2xlYW4ge1xuXHRjb25zdCBhSXRlbXMgPSB0aGlzLmdldEl0ZW1zKCkgYXMgdW5rbm93biBhcyBGaWVsZFdyYXBwZXJGaXhlZFtdO1xuXHRsZXQgYkxhc3RFbGVtZW50Rm91bmQgPSBmYWxzZTtcblx0Zm9yIChsZXQgaW5kZXggPSBhSXRlbXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuXHRcdGlmICghYkxhc3RFbGVtZW50Rm91bmQpIHtcblx0XHRcdGlmIChhcmdzW2luZGV4XSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRiTGFzdEVsZW1lbnRGb3VuZCA9IHRydWU7XG5cdFx0XHRcdGlmIChpc1JhdGluZ0luZGljYXRvcihhSXRlbXNbaW5kZXhdKSkge1xuXHRcdFx0XHRcdF91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0sIHRydWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFJdGVtc1tpbmRleF0ucmVtb3ZlU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaXNSYXRpbmdJbmRpY2F0b3IoYUl0ZW1zW2luZGV4XSkpIHtcblx0XHRcdF91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0sIGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YUl0ZW1zW2luZGV4XS5hZGRTdHlsZUNsYXNzKFwic2FwVWlUaW55TWFyZ2luQm90dG9tXCIpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cbmdldFZCb3hWaXNpYmlsaXR5Ll9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjZ2V0VkJveFZpc2liaWxpdHlcIjtcblxuLy8gU2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2Z1bmN0aW9ucy5odG1sI3RoaXMtcGFyYW1ldGVycyBmb3IgbW9yZSBkZXRhaWwgb24gdGhpcyB3ZWlyZCBzeW50YXhcbi8qKlxuICogQ29sbGVjdGlvbiBvZiB0YWJsZSBmb3JtYXR0ZXJzLlxuICogQHBhcmFtIHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIG9BcmdzIFRoZSBpbm5lciBmdW5jdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgZnJvbSB0aGUgaW5uZXIgZnVuY3Rpb25cbiAqL1xuY29uc3QgdGFibGVGb3JtYXR0ZXIgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG5cdGlmICh0YWJsZUZvcm1hdHRlci5oYXNPd25Qcm9wZXJ0eShzTmFtZSkpIHtcblx0XHRyZXR1cm4gKHRhYmxlRm9ybWF0dGVyIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG50YWJsZUZvcm1hdHRlci52YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzID0gdmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcztcbnRhYmxlRm9ybWF0dGVyLnJvd0hpZ2hsaWdodGluZyA9IHJvd0hpZ2hsaWdodGluZztcbnRhYmxlRm9ybWF0dGVyLm5hdmlnYXRlZFJvdyA9IG5hdmlnYXRlZFJvdztcbnRhYmxlRm9ybWF0dGVyLmdldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXIgPSBnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyO1xudGFibGVGb3JtYXR0ZXIuZ2V0VkJveFZpc2liaWxpdHkgPSBnZXRWQm94VmlzaWJpbGl0eTtcbnRhYmxlRm9ybWF0dGVyLmlzUmF0aW5nSW5kaWNhdG9yID0gaXNSYXRpbmdJbmRpY2F0b3I7IC8vIGZvciB1bml0IHRlc3RzXG50YWJsZUZvcm1hdHRlci5nZXRDb2x1bW5XaWR0aCA9IGdldENvbHVtbldpZHRoO1xudGFibGVGb3JtYXR0ZXIuZ2V0Q29sdW1uV2lkdGhGb3JWYWx1ZUhlbHBUYWJsZSA9IGdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGU7XG5cbk9iamVjdFBhdGguc2V0KFwic2FwLmZlLm1hY3Jvcy5mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyXCIsIHRhYmxlRm9ybWF0dGVyKTtcblxuZXhwb3J0IGRlZmF1bHQgdGFibGVGb3JtYXR0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFpQkEsTUFBTUEsbUJBQW1CLEdBQUcsU0FBQUEsQ0FBVUMsV0FBbUIsRUFBVTtJQUNsRSxRQUFRQSxXQUFXO01BQ2xCLEtBQUssT0FBTztRQUNYLE9BQU8sQ0FBQztNQUNULEtBQUssU0FBUztRQUNiLE9BQU8sQ0FBQztNQUNULEtBQUssYUFBYTtRQUNqQixPQUFPLENBQUM7TUFDVCxLQUFLLE1BQU07UUFDVixPQUFPLENBQUM7TUFDVDtRQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ1g7RUFDRCxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxTQUFBQSxDQUFVQyxtQkFBMkQsRUFBVztJQUNqSCxJQUFJLENBQUNBLG1CQUFtQixFQUFFO01BQ3pCLE9BQU8sS0FBSztJQUNiO0lBQ0EsTUFBTUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ0gsbUJBQW1CLENBQUM7SUFDbEQsT0FDQ0MsU0FBUyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxJQUNwQkgsU0FBUyxDQUFDSSxLQUFLLENBQUMsVUFBVUMsR0FBRyxFQUFFO01BQzlCLE9BQU9OLG1CQUFtQixDQUFDTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDNUMsQ0FBQyxD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
|
|
283
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRNZXNzYWdldHlwZU9yZGVyIiwibWVzc2FnZVR5cGUiLCJ2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzIiwiZmllbGRWYWxpZGl0eU9iamVjdCIsImZpZWxkS2V5cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJldmVyeSIsImtleSIsIl9fZnVuY3Rpb25OYW1lIiwiZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlciIsInNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IiLCJhRmlsdGVyZWRNZXNzYWdlcyIsImNvbHVtbk5hbWUiLCJpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIiwic3RhdHVzVmlzaWJpbGl0eSIsInNDdXJyZW50Q29udGV4dFBhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwib01lc3NhZ2UiLCJnZXRUeXBlIiwiZ2V0VGFyZ2V0cyIsImluZGV4T2YiLCJyb3dIaWdobGlnaHRpbmciLCJjcml0aWNhbGl0eVZhbHVlIiwiaGFzQWN0aXZlRW50aXR5IiwiaXNBY3RpdmVFbnRpdHkiLCJpc0RyYWZ0TW9kZSIsImNvbnRleHRQYXRoIiwiaXNJbmFjdGl2ZSIsImlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSIsIm1lc3NhZ2UiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsIkxvZyIsImVycm9yIiwiaXNOZXdPYmplY3QiLCJuYXZpZ2F0ZWRSb3ciLCJkZWVwZXN0UGF0aCIsInNQYXRoIiwiZ2V0Q29sdW1uV2lkdGgiLCJlZGl0TW9kZSIsImlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlIiwicHJvcGVydHlOYW1lIiwidXNlUmVtVW5pdCIsImFyZ3VtZW50cyIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaXNTb3J0YWJsZUNvbHVtbiIsImlzQ29sdW1uUmVxdWlyZWQiLCJtZGNUYWJsZSIsImdldFBhcmVudCIsInByb3BlcnRpZXMiLCJpc0EiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5IiwiZmluZCIsInByb3AiLCJjb2x1bW5XaWR0aCIsIlRhYmxlU2l6ZUhlbHBlciIsImdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5IiwidW5pdE9yVGltZXpvbmUiLCJleHBvcnRTZXR0aW5ncyIsInVuaXQiLCJ0aW1lem9uZSIsIlNpemVIZWxwZXIiLCJnZXRCdXR0b25XaWR0aCIsIkZpZWxkRWRpdE1vZGUiLCJFZGl0YWJsZSIsInVuaXRPckN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJ0eXBlQ29uZmlnIiwiYmFzZVR5cGUiLCJnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlIiwiaXNUYXJnZXRTbWFsbERldmljZSIsImlzU21hbGxEZXZpY2UiLCJDb21tb25VdGlscyIsIndpdGhVbml0IiwidGFibGVGb3JtYXR0ZXIiLCJjYWxsIiwiRGlzcGxheSIsImlzUmF0aW5nSW5kaWNhdG9yIiwib0NvbnRyb2wiLCJ2Q29udGVudERpc3BsYXkiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRDb250ZW50RGlzcGxheSIsIl91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yIiwiZmllbGRXcmFwcGVyIiwibGFzdCIsInZDb250ZW50RWRpdCIsImdldENvbnRlbnRFZGl0IiwiYWRkU3R5bGVDbGFzcyIsInJlbW92ZVN0eWxlQ2xhc3MiLCJnZXRWQm94VmlzaWJpbGl0eSIsImFJdGVtcyIsImdldEl0ZW1zIiwiYkxhc3RFbGVtZW50Rm91bmQiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJpbmRleCIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJfbGVuMiIsIm9BcmdzIiwiX2tleTIiLCJhcHBseSIsIlNjb3BlIiwiX2Zvcm1hdHRlcnMiLCJUYWJsZUZvcm1hdHRlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGFibGVGb3JtYXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgU2NvcGUgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvU2NvcGVcIjtcbmltcG9ydCBTaXplSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NpemVIZWxwZXJcIjtcbmltcG9ydCBEZWxlZ2F0ZVV0aWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlZEZFUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCBUYWJsZVNpemVIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVTaXplSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL20vVGFibGVcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgRmllbGRFZGl0TW9kZSBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9GaWVsZEVkaXRNb2RlXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC91aS9tZGMvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvY29udGVudC9NRENUYWJsZVwiO1xuaW1wb3J0IHR5cGUgRmllbGRXcmFwcGVyIGZyb20gXCIuLi9jb250cm9scy9GaWVsZFdyYXBwZXJcIjtcblxuY29uc3QgZ2V0TWVzc2FnZXR5cGVPcmRlciA9IGZ1bmN0aW9uIChtZXNzYWdlVHlwZTogc3RyaW5nKTogbnVtYmVyIHtcblx0c3dpdGNoIChtZXNzYWdlVHlwZSkge1xuXHRcdGNhc2UgXCJFcnJvclwiOlxuXHRcdFx0cmV0dXJuIDQ7XG5cdFx0Y2FzZSBcIldhcm5pbmdcIjpcblx0XHRcdHJldHVybiAzO1xuXHRcdGNhc2UgXCJJbmZvcm1hdGlvblwiOlxuXHRcdFx0cmV0dXJuIDI7XG5cdFx0Y2FzZSBcIk5vbmVcIjpcblx0XHRcdHJldHVybiAxO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gLTE7XG5cdH1cbn07XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsaWRpdHkgb2YgY3JlYXRpb24gcm93IGZpZWxkcy5cbiAqIEBwYXJhbSBmaWVsZFZhbGlkaXR5T2JqZWN0IE9iamVjdCBob2xkaW5nIHRoZSBmaWVsZHNcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhbGwgdGhlIGZpZWxkcyBpbiB0aGUgY3JlYXRpb24gcm93IGFyZSB2YWxpZCwgYGZhbHNlYCBvdGhlcndpc2VcbiAqL1xuY29uc3QgdmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcyA9IGZ1bmN0aW9uIChmaWVsZFZhbGlkaXR5T2JqZWN0PzogUmVjb3JkPHN0cmluZywgeyB2YWxpZGl0eTogYm9vbGVhbiB9Pik6IGJvb2xlYW4ge1xuXHRpZiAoIWZpZWxkVmFsaWRpdHlPYmplY3QpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgZmllbGRLZXlzID0gT2JqZWN0LmtleXMoZmllbGRWYWxpZGl0eU9iamVjdCk7XG5cdHJldHVybiAoXG5cdFx0ZmllbGRLZXlzLmxlbmd0aCA+IDAgJiZcblx0XHRmaWVsZEtleXMuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGZpZWxkVmFsaWRpdHlPYmplY3Rba2V5XVtcInZhbGlkaXR5XCJdO1xuXHRcdH0pXG5cdCk7XG59O1xudmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcy5fX2Z1bmN0aW9uTmFtZSA9IFwiLl9mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyI3ZhbGlkYXRlQ3JlYXRpb25Sb3dGaWVsZHNcIjtcblxuLyoqXG4gKiBAcGFyYW0gdGhpcyBUaGUgb2JqZWN0IHN0YXR1cyBjb250cm9sLlxuICogQHBhcmFtIHNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IgVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIGRyYWZ0IGluZGljYXRvci5cbiAqIEBwYXJhbSBhRmlsdGVyZWRNZXNzYWdlcyBBcnJheSBvZiBtZXNzYWdlcy5cbiAqIEBwYXJhbSBjb2x1bW5OYW1lXG4gKiBAcGFyYW0gaXNTZW1hbnRpY0tleUluRmllbGRHcm91cCBGbGFnIHdoaWNoIHNheXMgaWYgc2VtYW50aWMga2V5IGlzIGEgcGFydCBvZiBmaWVsZCBncm91cC5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmb3IgdGhlIHZpc2liaWxpdHkgcHJvcGVydHkgb2YgdGhlIG9iamVjdCBzdGF0dXNcbiAqL1xuY29uc3QgZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlciA9IGZ1bmN0aW9uIChcblx0dGhpczogTWFuYWdlZE9iamVjdCxcblx0c2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjogc3RyaW5nLFxuXHRhRmlsdGVyZWRNZXNzYWdlczogTWVzc2FnZVtdLFxuXHRjb2x1bW5OYW1lOiBzdHJpbmcsXG5cdGlzU2VtYW50aWNLZXlJbkZpZWxkR3JvdXA/OiBib29sZWFuXG4pOiBib29sZWFuIHtcblx0bGV0IHN0YXR1c1Zpc2liaWxpdHkgPSBmYWxzZTtcblx0aWYgKGFGaWx0ZXJlZE1lc3NhZ2VzICYmIGFGaWx0ZXJlZE1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgKGlzU2VtYW50aWNLZXlJbkZpZWxkR3JvdXAgfHwgY29sdW1uTmFtZSA9PT0gc2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcikpIHtcblx0XHRjb25zdCBzQ3VycmVudENvbnRleHRQYXRoID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpID8gdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCkgOiB1bmRlZmluZWQ7XG5cdFx0YUZpbHRlcmVkTWVzc2FnZXMuZm9yRWFjaCgob01lc3NhZ2UpID0+IHtcblx0XHRcdGlmIChvTWVzc2FnZS5nZXRUeXBlKCkgPT09IFwiRXJyb3JcIiAmJiBzQ3VycmVudENvbnRleHRQYXRoICYmIG9NZXNzYWdlLmdldFRhcmdldHMoKVswXS5pbmRleE9mKHNDdXJyZW50Q29udGV4dFBhdGgpID09PSAwKSB7XG5cdFx0XHRcdHN0YXR1c1Zpc2liaWxpdHkgPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gc3RhdHVzVmlzaWJpbGl0eTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gc3RhdHVzVmlzaWJpbGl0eTtcbn07XG5nZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyLl9fZnVuY3Rpb25OYW1lID0gXCIuX2Zvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIuYmluZCgkY29udHJvbCkjZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlclwiO1xuXG4vKipcbiAqIE1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIHJvdyBoaWdobGlnaHRpbmcgYmFzZWQgb24gdGhlIGNyaXRpY2FsaXR5IHZhbHVlIGFuZCB0aGUgbWVzc2FnZXMuXG4gKiBAcGFyYW0gY3JpdGljYWxpdHlWYWx1ZVxuICogQHBhcmFtIGFGaWx0ZXJlZE1lc3NhZ2VzXG4gKiBAcGFyYW0gaGFzQWN0aXZlRW50aXR5XG4gKiBAcGFyYW0gaXNBY3RpdmVFbnRpdHlcbiAqIEBwYXJhbSBpc0RyYWZ0TW9kZVxuICogQHBhcmFtIGNvbnRleHRQYXRoXG4gKiBAcGFyYW0gaXNJbmFjdGl2ZVxuICovXG5jb25zdCByb3dIaWdobGlnaHRpbmcgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IE1hbmFnZWRPYmplY3QsXG5cdGNyaXRpY2FsaXR5VmFsdWU6IHN0cmluZyB8IG51bWJlcixcblx0YUZpbHRlcmVkTWVzc2FnZXM6IE1lc3NhZ2VbXSB8IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0aGFzQWN0aXZlRW50aXR5OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRpc0FjdGl2ZUVudGl0eTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZCxcblx0aXNEcmFmdE1vZGU6IHN0cmluZyxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRjb250ZXh0UGF0aDogc3RyaW5nLFxuXHRpc0luYWN0aXZlOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBNZXNzYWdlVHlwZSB7XG5cdC8vIFNhbml0aXplIHN0cmluZyBcInVuZGVmaW5lZFwiIHZhbHVlcyB0byBhY3R1YWwgdW5kZWZpbmVkXG5cdGFGaWx0ZXJlZE1lc3NhZ2VzID0gYUZpbHRlcmVkTWVzc2FnZXMgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBhRmlsdGVyZWRNZXNzYWdlcztcblx0aGFzQWN0aXZlRW50aXR5ID0gaGFzQWN0aXZlRW50aXR5ID09PSBcInVuZGVmaW5lZFwiID8gdW5kZWZpbmVkIDogaGFzQWN0aXZlRW50aXR5O1xuXHRpc0FjdGl2ZUVudGl0eSA9IGlzQWN0aXZlRW50aXR5ID09PSBcInVuZGVmaW5lZFwiID8gdW5kZWZpbmVkIDogaXNBY3RpdmVFbnRpdHk7XG5cdGlzSW5hY3RpdmUgPSBpc0luYWN0aXZlID09PSBcInVuZGVmaW5lZFwiID8gdW5kZWZpbmVkIDogaXNJbmFjdGl2ZTtcblx0bGV0IGlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSA9IC0xO1xuXHRpZiAoYUZpbHRlcmVkTWVzc2FnZXMgJiYgYUZpbHRlcmVkTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuXHRcdGNvbnN0IHNDdXJyZW50Q29udGV4dFBhdGggPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKTtcblx0XHQoYUZpbHRlcmVkTWVzc2FnZXMgYXMgTWVzc2FnZVtdKS5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHNDdXJyZW50Q29udGV4dFBhdGggJiZcblx0XHRcdFx0bWVzc2FnZS5nZXRUYXJnZXRzKClbMF0uaW5kZXhPZihzQ3VycmVudENvbnRleHRQYXRoKSA9PT0gMCAmJlxuXHRcdFx0XHRpSGlnaGVzdENyaXRpY2FsaXR5VmFsdWUgPCBnZXRNZXNzYWdldHlwZU9yZGVyKG1lc3NhZ2UuZ2V0VHlwZSgpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSA9IGdldE1lc3NhZ2V0eXBlT3JkZXIobWVzc2FnZS5nZXRUeXBlKCkpO1xuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gbWVzc2FnZS5nZXRUeXBlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0aWYgKHR5cGVvZiBjcml0aWNhbGl0eVZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0c3dpdGNoIChjcml0aWNhbGl0eVZhbHVlKSB7XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5FcnJvcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5XYXJuaW5nO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMzpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLlN1Y2Nlc3M7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSA1OlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuSW5mb3JtYXRpb247XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLk5vbmU7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCEoT2JqZWN0LnZhbHVlcyhNZXNzYWdlVHlwZSkgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGNyaXRpY2FsaXR5VmFsdWUpKSB7XG5cdFx0TG9nLmVycm9yKGAnJHtjcml0aWNhbGl0eVZhbHVlfScgaXNuJ3QgYSB2YWxpZCB2YWx1ZSBmb3IgYSByb3cgaGlnaGxpZ2h0LmApO1xuXHRcdHJldHVybiBNZXNzYWdlVHlwZS5Ob25lO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBjYWxjdWxhdGVkIGEgY3JpdGljYWxpdHkgPD4gTm9uZSwgcmV0dXJuIGl0XG5cdGlmIChjcml0aWNhbGl0eVZhbHVlICE9PSBNZXNzYWdlVHlwZS5Ob25lKSB7XG5cdFx0cmV0dXJuIGNyaXRpY2FsaXR5VmFsdWUgYXMgTWVzc2FnZVR5cGU7XG5cdH1cblxuXHQvLyBJZiBub3QsIHdlIHNldCBjcml0aWNhbGl0eSB0byAnSW5mb3JtYXRpb24nIGZvciBuZXdseSBjcmVhdGVkIHJvd3MgaW4gRHJhZnQgbW9kZSwgYW5kIGtlZXAgJ05vbmUnIG90aGVyd2lzZVxuXHRjb25zdCBpc05ld09iamVjdCA9ICFoYXNBY3RpdmVFbnRpdHkgJiYgIWlzQWN0aXZlRW50aXR5ICYmICFpc0luYWN0aXZlO1xuXHRyZXR1cm4gaXNEcmFmdE1vZGUgPT09IFwidHJ1ZVwiICYmIGlzTmV3T2JqZWN0ID8gTWVzc2FnZVR5cGUuSW5mb3JtYXRpb24gOiBNZXNzYWdlVHlwZS5Ob25lO1xufTtcbnJvd0hpZ2hsaWdodGluZy5fX2Z1bmN0aW9uTmFtZSA9IFwiLl9mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyLmJpbmQoJGNvbnRyb2wpI3Jvd0hpZ2hsaWdodGluZ1wiO1xuXG5jb25zdCBuYXZpZ2F0ZWRSb3cgPSBmdW5jdGlvbiAodGhpczogTWFuYWdlZE9iamVjdCwgZGVlcGVzdFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRjb25zdCBzUGF0aCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRpZiAoc1BhdGggJiYgZGVlcGVzdFBhdGgpIHtcblx0XHRyZXR1cm4gZGVlcGVzdFBhdGguaW5kZXhPZihzUGF0aCkgPT09IDA7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xubmF2aWdhdGVkUm93Ll9fZnVuY3Rpb25OYW1lID0gXCIuX2Zvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIuYmluZCgkY29udHJvbCkjbmF2aWdhdGVkUm93XCI7XG5cbi8qKlxuICogTWV0aG9kIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgYW4gTURDQ29sdW1uIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uLlxuICogQHBhcmFtIHRoaXMgVGhlIE1EQ0NvbHVtbiBvYmplY3RcbiAqIEBwYXJhbSBlZGl0TW9kZSBUaGUgRWRpdE1vZGUgb2YgdGhlIHRhYmxlXG4gKiBAcGFyYW0gaXNQcm9wZXJ0aWVzQ2FjaGVBdmFpbGFibGUgSW5kaWNhdGVzIGlmIHRoZSBwcm9wZXJ0aWVzIGNhY2hlIGlzIGF2YWlsYWJsZVxuICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoXG4gKiBAcGFyYW0gdXNlUmVtVW5pdCBJbmRpY2F0ZXMgaWYgdGhlIHJlbSB1bml0IG11c3QgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlIGNvbHVtbiB3aWR0aCByZXN1bHRcbiAqIEBwYXJhbSB3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlciBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG4gKiBAcGFyYW0gaXNTb3J0YWJsZUNvbHVtbiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBpcyBzb3J0YWJsZVxuICogQHBhcmFtIGlzQ29sdW1uUmVxdWlyZWRcbiAqIEByZXR1cm5zIFRoZSB3aWR0aCBvZiB0aGUgY29sdW1uXG4gKi9cbmNvbnN0IGdldENvbHVtbldpZHRoID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBDb2x1bW4sXG5cdGVkaXRNb2RlOiBGaWVsZEVkaXRNb2RlLFxuXHRpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZTogYm9vbGVhbixcblx0cHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdHVzZVJlbVVuaXQgPSB0cnVlLFxuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlciA9IGZhbHNlLFxuXHRpc1NvcnRhYmxlQ29sdW1uID0gZmFsc2UsXG5cdGlzQ29sdW1uUmVxdWlyZWQgPSBmYWxzZVxuKTogc3RyaW5nIHwgbnVsbCB8IG51bWJlciB7XG5cdGlmICghaXNQcm9wZXJ0aWVzQ2FjaGVBdmFpbGFibGUpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRjb25zdCBtZGNUYWJsZSA9IHRoaXMuZ2V0UGFyZW50KCkgYXMgTURDVGFibGU7XG5cdGxldCBwcm9wZXJ0aWVzOiBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW107XG5cdGlmIChtZGNUYWJsZT8uZ2V0UGFyZW50KCk/LmlzQShcInNhcC51aS5tZGMudmFsdWVoZWxwLmNvbnRlbnQuTURDVGFibGVcIikpIHtcblx0XHRwcm9wZXJ0aWVzID0gRGVsZWdhdGVVdGlsLmdldENhY2hlZFByb3BlcnRpZXModGhpcy5nZXRQYXJlbnQoKSBhcyBNRENUYWJsZSkgYXMgRW5oYW5jZWRGRVByb3BlcnR5SW5mb1tdO1xuXHR9IGVsc2Uge1xuXHRcdHByb3BlcnRpZXMgPSAobWRjVGFibGUuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEkpLmdldEVuaGFuY2VkRmV0Y2hlZFByb3BlcnR5SW5mb3MoKTtcblx0fVxuXHRpZiAoIXByb3BlcnRpZXMpIHJldHVybiBudWxsO1xuXHRjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZCgocHJvcCkgPT4gcHJvcC5rZXkgPT09IHByb3BlcnR5TmFtZSk7XG5cdGlmICghcHJvcGVydHkpIHJldHVybiBudWxsO1xuXG5cdGxldCBjb2x1bW5XaWR0aCA9IFRhYmxlU2l6ZUhlbHBlci5nZXRNRENDb2x1bW5XaWR0aEZyb21Qcm9wZXJ0eShcblx0XHRwcm9wZXJ0eSxcblx0XHRwcm9wZXJ0aWVzLFxuXHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyLFxuXHRcdGlzU29ydGFibGVDb2x1bW4sXG5cdFx0aXNDb2x1bW5SZXF1aXJlZFxuXHQpO1xuXHRjb25zdCB1bml0T3JUaW1lem9uZSA9IHByb3BlcnR5LmV4cG9ydFNldHRpbmdzPy51bml0IHx8IHByb3BlcnR5LmV4cG9ydFNldHRpbmdzPy50aW1lem9uZTtcblx0Y29sdW1uV2lkdGggKz0gdW5pdE9yVGltZXpvbmUgPyBTaXplSGVscGVyLmdldEJ1dHRvbldpZHRoKHVuaXRPclRpbWV6b25lKSA6IDA7XG5cdGlmIChlZGl0TW9kZSA9PT0gRmllbGRFZGl0TW9kZS5FZGl0YWJsZSkge1xuXHRcdGNvbnN0IHVuaXRPckN1cnJlbmN5UHJvcGVydHkgPSBwcm9wZXJ0eS5leHBvcnRTZXR0aW5ncz8udW5pdFByb3BlcnR5OyAvLyB0aGUgdW5pdFByb3BlcnR5IGF0dHJpYnV0ZSBpcyB1c2VkIGZvciBjdXJyZW5jeSBhbmQgdW5pdCBvbiB0aGUgZXhwb3J0IHNldHRpbmdzXG5cdFx0aWYgKHVuaXRPckN1cnJlbmN5UHJvcGVydHkpIHtcblx0XHRcdGNvbHVtbldpZHRoICs9IDM7XG5cdFx0fVxuXHRcdHN3aXRjaCAocHJvcGVydHkudHlwZUNvbmZpZz8uYmFzZVR5cGUpIHtcblx0XHRcdGNhc2UgXCJEYXRlXCI6XG5cdFx0XHRjYXNlIFwiVGltZVwiOlxuXHRcdFx0Y2FzZSBcIkRhdGVUaW1lXCI6XG5cdFx0XHRcdGNvbHVtbldpZHRoICs9IDIuODtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdH1cblx0fVxuXHRpZiAodXNlUmVtVW5pdCkge1xuXHRcdHJldHVybiBjb2x1bW5XaWR0aCArIFwicmVtXCI7XG5cdH1cblx0cmV0dXJuIGNvbHVtbldpZHRoO1xufTtcbmdldENvbHVtbldpZHRoLl9fZnVuY3Rpb25OYW1lID0gXCIuX2Zvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIuYmluZCgkY29udHJvbCkjZ2V0Q29sdW1uV2lkdGhcIjtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBhbiBNRENDb2x1bW4gZm9yIHZhbHVlSGVscCB0aGUgdGFibGUuXG4gKiBAcGFyYW0gdGhpcyBUaGUgTURDQ29sdW1uIG9iamVjdFxuICogQHBhcmFtIGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlIEluZGljYXRlcyBpZiB0aGUgcHJvcGVydGllcyBjYWNoZSBpcyBhdmFpbGFibGVcbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aFxuICogQHBhcmFtIGlzVGFyZ2V0U21hbGxEZXZpY2UgSW5kaWNhdGVzIHRoZSBjdXJyZW50IGRldmljZSBoYXMgYSBzbWFsbCBkZXZpY2VcbiAqIEBwYXJhbSB3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclxuICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBjb2x1bW5cbiAqL1xuY29uc3QgZ2V0Q29sdW1uV2lkdGhGb3JWYWx1ZUhlbHBUYWJsZSA9IGZ1bmN0aW9uIChcblx0dGhpczogQ29sdW1uLFxuXHRpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZTogYm9vbGVhbixcblx0cHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdGlzVGFyZ2V0U21hbGxEZXZpY2U6IGJvb2xlYW4sXG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyID0gZmFsc2Vcbik6IG51bGwgfCBudW1iZXIge1xuXHRjb25zdCBpc1NtYWxsRGV2aWNlID0gQ29tbW9uVXRpbHMuaXNTbWFsbERldmljZSgpO1xuXHRjb25zdCB3aXRoVW5pdCA9ICFpc1NtYWxsRGV2aWNlO1xuXG5cdHJldHVybiAoaXNTbWFsbERldmljZSAmJiBpc1RhcmdldFNtYWxsRGV2aWNlKSB8fCAoIWlzU21hbGxEZXZpY2UgJiYgIWlzVGFyZ2V0U21hbGxEZXZpY2UpXG5cdFx0PyAodGFibGVGb3JtYXR0ZXIuZ2V0Q29sdW1uV2lkdGguY2FsbChcblx0XHRcdFx0dGhpcyxcblx0XHRcdFx0RmllbGRFZGl0TW9kZS5EaXNwbGF5LFxuXHRcdFx0XHRpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSxcblx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHR3aXRoVW5pdCxcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJcblx0XHQgICkgYXMgbnVsbCB8IG51bWJlcilcblx0XHQ6IG51bGw7XG59O1xuXG5nZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlLl9fZnVuY3Rpb25OYW1lID0gXCIuX2Zvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIuYmluZCgkY29udHJvbCkjZ2V0Q29sdW1uV2lkdGhGb3JWYWx1ZUhlbHBUYWJsZVwiO1xuXG50eXBlIEZpZWxkV3JhcHBlckZpeGVkID0gRmllbGRXcmFwcGVyICYgeyBnZXRDb250ZW50RGlzcGxheTogRnVuY3Rpb247IGdldENvbnRlbnRFZGl0OiBGdW5jdGlvbiB9O1xuZnVuY3Rpb24gaXNSYXRpbmdJbmRpY2F0b3Iob0NvbnRyb2w6IEZpZWxkV3JhcHBlckZpeGVkKTogYm9vbGVhbiB7XG5cdGlmIChvQ29udHJvbC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpZWxkV3JhcHBlclwiKSkge1xuXHRcdGNvbnN0IHZDb250ZW50RGlzcGxheSA9IEFycmF5LmlzQXJyYXkob0NvbnRyb2wuZ2V0Q29udGVudERpc3BsYXkoKSlcblx0XHRcdD8gb0NvbnRyb2wuZ2V0Q29udGVudERpc3BsYXkoKVswXVxuXHRcdFx0OiBvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpO1xuXHRcdGlmICh2Q29udGVudERpc3BsYXkgJiYgdkNvbnRlbnREaXNwbGF5LmlzQShcInNhcC5tLlJhdGluZ0luZGljYXRvclwiKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gX3VwZGF0ZVN0eWxlQ2xhc3NGb3JSYXRpbmdJbmRpY2F0b3IoZmllbGRXcmFwcGVyOiBGaWVsZFdyYXBwZXJGaXhlZCwgbGFzdDogYm9vbGVhbik6IHZvaWQge1xuXHRjb25zdCB2Q29udGVudERpc3BsYXkgPSBBcnJheS5pc0FycmF5KGZpZWxkV3JhcHBlci5nZXRDb250ZW50RGlzcGxheSgpKVxuXHRcdD8gZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KClbMF1cblx0XHQ6IGZpZWxkV3JhcHBlci5nZXRDb250ZW50RGlzcGxheSgpO1xuXHRjb25zdCB2Q29udGVudEVkaXQgPSBBcnJheS5pc0FycmF5KGZpZWxkV3JhcHBlci5nZXRDb250ZW50RWRpdCgpKSA/IGZpZWxkV3JhcHBlci5nZXRDb250ZW50RWRpdCgpWzBdIDogZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KCk7XG5cblx0aWYgKGxhc3QpIHtcblx0XHR2Q29udGVudERpc3BsYXkuYWRkU3R5bGVDbGFzcyhcInNhcFVpTm9NYXJnaW5Cb3R0b21cIik7XG5cdFx0dkNvbnRlbnREaXNwbGF5LmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU5vTWFyZ2luVG9wXCIpO1xuXHRcdHZDb250ZW50RWRpdC5yZW1vdmVTdHlsZUNsYXNzKFwic2FwVWlUaW55TWFyZ2luQm90dG9tXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHZDb250ZW50RGlzcGxheS5hZGRTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpbkJvdHRvbVwiKTtcblx0XHR2Q29udGVudERpc3BsYXkucmVtb3ZlU3R5bGVDbGFzcyhcInNhcFVpTm9NYXJnaW5Ub3BcIik7XG5cdFx0dkNvbnRlbnRFZGl0LmFkZFN0eWxlQ2xhc3MoXCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIik7XG5cdH1cbn1cbmZ1bmN0aW9uIGdldFZCb3hWaXNpYmlsaXR5KHRoaXM6IFRhYmxlLCAuLi5hcmdzOiB1bmtub3duW10pOiBib29sZWFuIHtcblx0Y29uc3QgYUl0ZW1zID0gdGhpcy5nZXRJdGVtcygpIGFzIHVua25vd24gYXMgRmllbGRXcmFwcGVyRml4ZWRbXTtcblx0bGV0IGJMYXN0RWxlbWVudEZvdW5kID0gZmFsc2U7XG5cdGZvciAobGV0IGluZGV4ID0gYUl0ZW1zLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcblx0XHRpZiAoIWJMYXN0RWxlbWVudEZvdW5kKSB7XG5cdFx0XHRpZiAoYXJnc1tpbmRleF0gIT09IHRydWUpIHtcblx0XHRcdFx0Ykxhc3RFbGVtZW50Rm91bmQgPSB0cnVlO1xuXHRcdFx0XHRpZiAoaXNSYXRpbmdJbmRpY2F0b3IoYUl0ZW1zW2luZGV4XSkpIHtcblx0XHRcdFx0XHRfdXBkYXRlU3R5bGVDbGFzc0ZvclJhdGluZ0luZGljYXRvcihhSXRlbXNbaW5kZXhdLCB0cnVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhSXRlbXNbaW5kZXhdLnJlbW92ZVN0eWxlQ2xhc3MoXCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGlzUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0pKSB7XG5cdFx0XHRfdXBkYXRlU3R5bGVDbGFzc0ZvclJhdGluZ0luZGljYXRvcihhSXRlbXNbaW5kZXhdLCBmYWxzZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFJdGVtc1tpbmRleF0uYWRkU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRydWU7XG59XG5nZXRWQm94VmlzaWJpbGl0eS5fX2Z1bmN0aW9uTmFtZSA9IFwiLl9mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyLmJpbmQoJGNvbnRyb2wpI2dldFZCb3hWaXNpYmlsaXR5XCI7XG5cbi8vIFNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9mdW5jdGlvbnMuaHRtbCN0aGlzLXBhcmFtZXRlcnMgZm9yIG1vcmUgZGV0YWlsIG9uIHRoaXMgd2VpcmQgc3ludGF4XG4vKipcbiAqIENvbGxlY3Rpb24gb2YgdGFibGUgZm9ybWF0dGVycy5cbiAqIEBwYXJhbSB0aGlzIFRoZSBjb250ZXh0XG4gKiBAcGFyYW0gc05hbWUgVGhlIGlubmVyIGZ1bmN0aW9uIG5hbWVcbiAqIEBwYXJhbSBvQXJncyBUaGUgaW5uZXIgZnVuY3Rpb24gcGFyYW1ldGVyc1xuICogQHJldHVybnMgVGhlIHZhbHVlIGZyb20gdGhlIGlubmVyIGZ1bmN0aW9uXG4gKi9cbmNvbnN0IHRhYmxlRm9ybWF0dGVyID0gZnVuY3Rpb24gKHRoaXM6IG9iamVjdCwgc05hbWU6IHN0cmluZywgLi4ub0FyZ3M6IHVua25vd25bXSk6IHVua25vd24ge1xuXHRpZiAodGFibGVGb3JtYXR0ZXIuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuICh0YWJsZUZvcm1hdHRlciBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPilbc05hbWVdLmFwcGx5KHRoaXMsIG9BcmdzKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxufTtcblxudGFibGVGb3JtYXR0ZXIudmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcyA9IHZhbGlkYXRlQ3JlYXRpb25Sb3dGaWVsZHM7XG50YWJsZUZvcm1hdHRlci5yb3dIaWdobGlnaHRpbmcgPSByb3dIaWdobGlnaHRpbmc7XG50YWJsZUZvcm1hdHRlci5uYXZpZ2F0ZWRSb3cgPSBuYXZpZ2F0ZWRSb3c7XG50YWJsZUZvcm1hdHRlci5nZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyID0gZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlcjtcbnRhYmxlRm9ybWF0dGVyLmdldFZCb3hWaXNpYmlsaXR5ID0gZ2V0VkJveFZpc2liaWxpdHk7XG50YWJsZUZvcm1hdHRlci5pc1JhdGluZ0luZGljYXRvciA9IGlzUmF0aW5nSW5kaWNhdG9yOyAvLyBmb3IgdW5pdCB0ZXN0c1xudGFibGVGb3JtYXR0ZXIuZ2V0Q29sdW1uV2lkdGggPSBnZXRDb2x1bW5XaWR0aDtcbnRhYmxlRm9ybWF0dGVyLmdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGUgPSBnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5TY29wZS5fZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciA9IHRhYmxlRm9ybWF0dGVyO1xuXG5leHBvcnQgZGVmYXVsdCB0YWJsZUZvcm1hdHRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQWlCQSxNQUFNQSxtQkFBbUIsR0FBRyxTQUFBQSxDQUFVQyxXQUFtQixFQUFVO0lBQ2xFLFFBQVFBLFdBQVc7TUFDbEIsS0FBSyxPQUFPO1FBQ1gsT0FBTyxDQUFDO01BQ1QsS0FBSyxTQUFTO1FBQ2IsT0FBTyxDQUFDO01BQ1QsS0FBSyxhQUFhO1FBQ2pCLE9BQU8sQ0FBQztNQUNULEtBQUssTUFBTTtRQUNWLE9BQU8sQ0FBQztNQUNUO1FBQ0MsT0FBTyxDQUFDLENBQUM7SUFDWDtFQUNELENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1DLHlCQUF5QixHQUFHLFNBQUFBLENBQVVDLG1CQUEyRCxFQUFXO0lBQ2pILElBQUksQ0FBQ0EsbUJBQW1CLEVBQUU7TUFDekIsT0FBTyxLQUFLO0lBQ2I7SUFDQSxNQUFNQyxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSCxtQkFBbUIsQ0FBQztJQUNsRCxPQUNDQyxTQUFTLENBQUNHLE1BQU0sR0FBRyxDQUFDLElBQ3BCSCxTQUFTLENBQUNJLEtBQUssQ0FBQyxV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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Log from "sap/base/Log";
|
|
2
|
-
import ObjectPath from "sap/base/util/ObjectPath";
|
|
3
2
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
3
|
+
import Scope from "sap/fe/core/formatters/Scope";
|
|
4
4
|
import SizeHelper from "sap/fe/core/helpers/SizeHelper";
|
|
5
5
|
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
6
6
|
import type TableAPI from "sap/fe/macros/table/TableAPI";
|
|
@@ -47,7 +47,7 @@ const validateCreationRowFields = function (fieldValidityObject?: Record<string,
|
|
|
47
47
|
})
|
|
48
48
|
);
|
|
49
49
|
};
|
|
50
|
-
validateCreationRowFields.__functionName = "
|
|
50
|
+
validateCreationRowFields.__functionName = "._formatters.TableFormatter#validateCreationRowFields";
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* @param this The object status control.
|
|
@@ -76,7 +76,7 @@ const getErrorStatusTextVisibilityFormatter = function (
|
|
|
76
76
|
}
|
|
77
77
|
return statusVisibility;
|
|
78
78
|
};
|
|
79
|
-
getErrorStatusTextVisibilityFormatter.__functionName = "
|
|
79
|
+
getErrorStatusTextVisibilityFormatter.__functionName = "._formatters.TableFormatter.bind($control)#getErrorStatusTextVisibilityFormatter";
|
|
80
80
|
|
|
81
81
|
/**
|
|
82
82
|
* Method to calculate the row highlighting based on the criticality value and the messages.
|
|
@@ -151,7 +151,7 @@ const rowHighlighting = function (
|
|
|
151
151
|
const isNewObject = !hasActiveEntity && !isActiveEntity && !isInactive;
|
|
152
152
|
return isDraftMode === "true" && isNewObject ? MessageType.Information : MessageType.None;
|
|
153
153
|
};
|
|
154
|
-
rowHighlighting.__functionName = "
|
|
154
|
+
rowHighlighting.__functionName = "._formatters.TableFormatter.bind($control)#rowHighlighting";
|
|
155
155
|
|
|
156
156
|
const navigatedRow = function (this: ManagedObject, deepestPath: string): boolean {
|
|
157
157
|
const sPath = this.getBindingContext()?.getPath();
|
|
@@ -161,7 +161,7 @@ const navigatedRow = function (this: ManagedObject, deepestPath: string): boolea
|
|
|
161
161
|
return false;
|
|
162
162
|
}
|
|
163
163
|
};
|
|
164
|
-
navigatedRow.__functionName = "
|
|
164
|
+
navigatedRow.__functionName = "._formatters.TableFormatter.bind($control)#navigatedRow";
|
|
165
165
|
|
|
166
166
|
/**
|
|
167
167
|
* Method to calculate the width of an MDCColumn based on the property definition.
|
|
@@ -227,7 +227,7 @@ const getColumnWidth = function (
|
|
|
227
227
|
}
|
|
228
228
|
return columnWidth;
|
|
229
229
|
};
|
|
230
|
-
getColumnWidth.__functionName = "
|
|
230
|
+
getColumnWidth.__functionName = "._formatters.TableFormatter.bind($control)#getColumnWidth";
|
|
231
231
|
|
|
232
232
|
/**
|
|
233
233
|
* Method to calculate the width of an MDCColumn for valueHelp the table.
|
|
@@ -260,7 +260,7 @@ const getColumnWidthForValueHelpTable = function (
|
|
|
260
260
|
: null;
|
|
261
261
|
};
|
|
262
262
|
|
|
263
|
-
getColumnWidthForValueHelpTable.__functionName = "
|
|
263
|
+
getColumnWidthForValueHelpTable.__functionName = "._formatters.TableFormatter.bind($control)#getColumnWidthForValueHelpTable";
|
|
264
264
|
|
|
265
265
|
type FieldWrapperFixed = FieldWrapper & { getContentDisplay: Function; getContentEdit: Function };
|
|
266
266
|
function isRatingIndicator(oControl: FieldWrapperFixed): boolean {
|
|
@@ -312,7 +312,7 @@ function getVBoxVisibility(this: Table, ...args: unknown[]): boolean {
|
|
|
312
312
|
}
|
|
313
313
|
return true;
|
|
314
314
|
}
|
|
315
|
-
getVBoxVisibility.__functionName = "
|
|
315
|
+
getVBoxVisibility.__functionName = "._formatters.TableFormatter.bind($control)#getVBoxVisibility";
|
|
316
316
|
|
|
317
317
|
// See https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters for more detail on this weird syntax
|
|
318
318
|
/**
|
|
@@ -339,6 +339,8 @@ tableFormatter.isRatingIndicator = isRatingIndicator; // for unit tests
|
|
|
339
339
|
tableFormatter.getColumnWidth = getColumnWidth;
|
|
340
340
|
tableFormatter.getColumnWidthForValueHelpTable = getColumnWidthForValueHelpTable;
|
|
341
341
|
|
|
342
|
-
|
|
342
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
343
|
+
// @ts-ignore
|
|
344
|
+
Scope._formatters.TableFormatter = tableFormatter;
|
|
343
345
|
|
|
344
346
|
export default tableFormatter;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/
|
|
5
|
+
sap.ui.define(["sap/fe/core/formatters/Scope"], function (Scope) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const formatScaleAndUOM = function (separator, uom, scale) {
|
|
@@ -13,7 +13,7 @@ sap.ui.define(["sap/base/util/ObjectPath"], function (ObjectPath) {
|
|
|
13
13
|
const onlyOneOfUOMOrScale = scale ? `${separator}${scale}` : onlyUOM;
|
|
14
14
|
return uom && scale ? UOMAndScale : onlyOneOfUOMOrScale;
|
|
15
15
|
};
|
|
16
|
-
formatScaleAndUOM.__functionName = "
|
|
16
|
+
formatScaleAndUOM.__functionName = "._formatters.VisualFilterFormatter#formatScaleAndUOM";
|
|
17
17
|
|
|
18
18
|
// See https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters for more detail on this weird syntax
|
|
19
19
|
/**
|
|
@@ -34,7 +34,9 @@ sap.ui.define(["sap/base/util/ObjectPath"], function (ObjectPath) {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
visualFilterFormatter.formatScaleAndUOM = formatScaleAndUOM;
|
|
37
|
-
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
Scope._formatters.VisualFilterFormatter = visualFilterFormatter;
|
|
38
40
|
return visualFilterFormatter;
|
|
39
41
|
}, false);
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXRTY2FsZUFuZFVPTSIsInNlcGFyYXRvciIsInVvbSIsInNjYWxlIiwiVU9NQW5kU2NhbGUiLCJvbmx5VU9NIiwib25seU9uZU9mVU9NT3JTY2FsZSIsIl9fZnVuY3Rpb25OYW1lIiwidmlzdWFsRmlsdGVyRm9ybWF0dGVyIiwic05hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJvQXJncyIsIkFycmF5IiwiX2tleSIsImFwcGx5IiwiU2NvcGUiLCJfZm9ybWF0dGVycyIsIlZpc3VhbEZpbHRlckZvcm1hdHRlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyRm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTY29wZSBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9TY29wZVwiO1xuXG5jb25zdCBmb3JtYXRTY2FsZUFuZFVPTSA9IGZ1bmN0aW9uIChzZXBhcmF0b3I6IHN0cmluZywgdW9tPzogc3RyaW5nLCBzY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG5cdHVvbSA9IHVvbSA9PT0gXCJ1bmRlZmluZWRcIiA/IFwiXCIgOiB1b207XG5cdHNjYWxlID0gc2NhbGUgPT09IFwidW5kZWZpbmVkXCIgPyBcIlwiIDogc2NhbGU7XG5cdGNvbnN0IFVPTUFuZFNjYWxlID0gYCR7c2VwYXJhdG9yfSR7c2NhbGV9ICR7dW9tfWA7XG5cdGNvbnN0IG9ubHlVT00gPSB1b20gPyBgJHtzZXBhcmF0b3J9JHt1b219YCA6IFwiXCI7XG5cdGNvbnN0IG9ubHlPbmVPZlVPTU9yU2NhbGUgPSBzY2FsZSA/IGAke3NlcGFyYXRvcn0ke3NjYWxlfWAgOiBvbmx5VU9NO1xuXHRyZXR1cm4gdW9tICYmIHNjYWxlID8gVU9NQW5kU2NhbGUgOiBvbmx5T25lT2ZVT01PclNjYWxlO1xufTtcbmZvcm1hdFNjYWxlQW5kVU9NLl9fZnVuY3Rpb25OYW1lID0gXCIuX2Zvcm1hdHRlcnMuVmlzdWFsRmlsdGVyRm9ybWF0dGVyI2Zvcm1hdFNjYWxlQW5kVU9NXCI7XG5cbi8vIFNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9mdW5jdGlvbnMuaHRtbCN0aGlzLXBhcmFtZXRlcnMgZm9yIG1vcmUgZGV0YWlsIG9uIHRoaXMgd2VpcmQgc3ludGF4XG4vKipcbiAqIENvbGxlY3Rpb24gb2YgVmlzdWFsRmlsdGVyIGZvcm1hdHRlcnMuXG4gKiBAcGFyYW0gdGhpcyBUaGUgY29udGV4dFxuICogQHBhcmFtIHNOYW1lIFRoZSBpbm5lciBmdW5jdGlvbiBuYW1lXG4gKiBAcGFyYW0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCB2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG5cdGlmICh2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuICh2aXN1YWxGaWx0ZXJGb3JtYXR0ZXIgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbj4pW3NOYW1lXS5hcHBseSh0aGlzLCBvQXJncyk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cbn07XG5cbnZpc3VhbEZpbHRlckZvcm1hdHRlci5mb3JtYXRTY2FsZUFuZFVPTSA9IGZvcm1hdFNjYWxlQW5kVU9NO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuU2NvcGUuX2Zvcm1hdHRlcnMuVmlzdWFsRmlsdGVyRm9ybWF0dGVyID0gdmlzdWFsRmlsdGVyRm9ybWF0dGVyO1xuZXhwb3J0IGRlZmF1bHQgdmlzdWFsRmlsdGVyRm9ybWF0dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBRUEsTUFBTUEsaUJBQWlCLEdBQUcsU0FBQUEsQ0FBVUMsU0FBaUIsRUFBRUMsR0FBWSxFQUFFQyxLQUFjLEVBQVU7SUFDNUZELEdBQUcsR0FBR0EsR0FBRyxLQUFLLFdBQVcsR0FBRyxFQUFFLEdBQUdBLEdBQUc7SUFDcENDLEtBQUssR0FBR0EsS0FBSyxLQUFLLFdBQVcsR0FBRyxFQUFFLEdBQUdBLEtBQUs7SUFDMUMsTUFBTUMsV0FBVyxHQUFHLEdBQUdILFNBQVMsR0FBR0UsS0FBSyxJQUFJRCxHQUFHLEVBQUU7SUFDakQsTUFBTUcsT0FBTyxHQUFHSCxHQUFHLEdBQUcsR0FBR0QsU0FBUyxHQUFHQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQy9DLE1BQU1JLG1CQUFtQixHQUFHSCxLQUFLLEdBQUcsR0FBR0YsU0FBUyxHQUFHRSxLQUFLLEVBQUUsR0FBR0UsT0FBTztJQUNwRSxPQUFPSCxHQUFHLElBQUlDLEtBQUssR0FBR0MsV0FBVyxHQUFHRSxtQkFBbUI7RUFDeEQsQ0FBQztFQUNETixpQkFBaUIsQ0FBQ08sY0FBYyxHQUFHLHNEQUFzRDs7RUFFekY7RUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1DLHFCQUFxQixHQUFHLFNBQUFBLENBQXdCQyxLQUFhLEVBQWdDO0lBQ2xHLElBQUlELHFCQUFxQixDQUFDRSxjQUFjLENBQUNELEtBQUssQ0FBQyxFQUFFO01BQUEsU0FBQUUsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFEc0JDLEtBQUssT0FBQUMsS0FBQSxDQUFBSixJQUFBLE9BQUFBLElBQUEsV0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtRQUFMRixLQUFLLENBQUFFLElBQUEsUUFBQUosU0FBQSxDQUFBSSxJQUFBO01BQUE7TUFFM0UsT0FBUVIscUJBQXFCLENBQXlDQyxLQUFLLENBQUMsQ0FBQ1EsS0FBSyxDQUFDLElBQUksRUFBRUgsS0FBSyxDQUFDO0lBQ2hHLENBQUMsTUFBTTtNQUNOLE9BQU8sRUFBRTtJQUNWO0VBQ0QsQ0FBQztFQUVETixxQkFBcUIsQ0FBQ1IsaUJBQWlCLEdBQUdBLGlCQUFpQjtFQUMzRDtFQUNBO0VBQ0FrQixLQUFLLENBQUNDLFdBQVcsQ0FBQ0MscUJBQXFCLEdBQUdaLHFCQUFxQjtFQUFDLE9BQ2pEQSxxQkFBcUI7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|