barsa-sap-ui 2.2.4 → 2.2.6

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.
@@ -22,7 +22,7 @@ export class BarsaReportCardFlexViewComponent extends ReportViewBaseComponent {
22
22
  });
23
23
  }
24
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaReportCardFlexViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaReportCardFlexViewComponent, selector: "bsu-barsa-report-card-flex-view", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tw-flex tw-flex-col tw-border tw-border-gray-200 tw-bg-white tw-rounded-md\">\r\n <div class=\"tw-px-4 tw-py-2 tw-border-b tw-border-gray-200 tw-text-lg\">{{ title }}</div>\r\n <div\r\n class=\"tw-flex tw-flex-wrap\"\r\n [ngClass]=\"{\r\n 'tw-px-4 tw-py-3': !viewSetting.NoContentPadding,\r\n 'tw-flex-col': viewSetting.FlexCol,\r\n 'tw-gap-2': viewSetting.RowOlgo.Selector\r\n }\"\r\n >\r\n @for (mo of moDataList; track mo; let index = $index) { @if (viewSetting?.RowOlgo.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"mo.Id | rowNumber: pagingSetting:moDataList\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns\"\r\n [columns]=\"columns\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n } @else {\r\n <div\r\n class=\"tw-group hover:tw-bg-[#fdfdfd] tw-px-4 tw-py-2 tw-transition-all hover:tw-cursor-pointer\"\r\n (click)=\"onRowClick({mo, index})\"\r\n >\r\n <a fd-link class=\"tw-block group-hover:tw-text-black !tw-no-underline\">\r\n <div\r\n class=\"tw-inline-block tw-w-8 tw-h-5 tw-p-.5 tw-text-small tw-text-center tw-rounded-md tw-border tw-border-gray-400 tw-text-gray-400\"\r\n [class.!text-green-500]=\"\r\n ('\u062A\u0639\u062F\u0627\u062F \u067E\u0627\u0633\u062E \u0647\u0627' | rval: mo:allColumns) > 0 && !('\u067E\u0627\u0633\u062E \u0635\u062D\u06CC\u062D' | rval: mo:allColumns)\r\n \"\r\n [class.!tw-border-green-500]=\"('\u062A\u0639\u062F\u0627\u062F \u067E\u0627\u0633\u062E \u0647\u0627' | rval: mo:allColumns) > 0\"\r\n [class.!tw-bg-green-500]=\"'\u067E\u0627\u0633\u062E \u0635\u062D\u06CC\u062D' | rval: mo:allColumns\"\r\n [class.!tw-text-white]=\"'\u067E\u0627\u0633\u062E \u0635\u062D\u06CC\u062D' | rval: mo:allColumns\"\r\n >\r\n {{ '\u0645\u062C\u0645\u0648\u0639 \u0631\u0627\u06CC \u0647\u0627' | rval: mo:allColumns:true }}\r\n </div>\r\n {{ mo.$Caption }}\r\n </a>\r\n </div>\r\n } }\r\n </div>\r\n @if (!viewSetting.HideShowAllButton) {\r\n <div class=\"tw-px-4 tw-py-2 tw-border-t tw-border-gray-200 tw-flex tw-justify-center\">\r\n @for (button of toolbarButtons; track button) { @if (!button.Command?.IsBuiltin) {\r\n <a fd-link [ulvCommandHandler]=\"button\">{{ button.text }}</a>\r\n } }\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.UlvCommandDirective, selector: "[ulvCommandHandler]", inputs: ["ulvCommandHandler", "disable"], outputs: ["commandClick"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.RowNumberPipe, name: "rowNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaReportCardFlexViewComponent, selector: "bsu-barsa-report-card-flex-view", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tw-flex tw-flex-col tw-border tw-border-gray-200 tw-bg-white tw-rounded-md\">\r\n <div class=\"tw-px-4 tw-py-2 tw-border-b tw-border-gray-200 tw-text-lg\">{{ title }}</div>\r\n <div\r\n class=\"tw-flex tw-flex-wrap\"\r\n [ngClass]=\"{\r\n 'tw-px-4 tw-py-3': !viewSetting.NoContentPadding,\r\n 'tw-flex-col': viewSetting.FlexCol,\r\n 'tw-gap-2': viewSetting.RowOlgo.Selector\r\n }\"\r\n >\r\n @for (mo of moDataList; track mo; let index = $index) { @if (viewSetting?.RowOlgo.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [hideOpenIcon]=\"hideOpenIcon\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [rowNumber]=\"mo.Id | rowNumber: pagingSetting:moDataList\"\r\n [columnComponents]=\"viewSetting?.ColumnComponents || null\"\r\n [cartableMo]=\"mo.RelatedMo\"\r\n [cartableWorkflowData]=\"mo.SerializedWorkflowData\"\r\n [serializedRelatedMo]=\"mo.SerializedRelatedMo\"\r\n [detailsText]=\"viewSetting?.DetailsSetting?.ButtonText\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [visibility]=\"mo.$Visibility\"\r\n [expanded]=\"mo.$Expanded\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [level]=\"mo.$Level\"\r\n [parentExpanded]=\"mo.$Parent?.$Expanded\"\r\n [typeDefId]=\"typeDefId\"\r\n [extraRelation]=\"extraRelation\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"index\"\r\n [setting]=\"viewSetting\"\r\n [secondaryColumns]=\"secondaryColumns\"\r\n [columns]=\"columns\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [access]=\"access\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n } @else {\r\n <div\r\n class=\"tw-group hover:tw-bg-[#fdfdfd] tw-px-4 tw-py-2 tw-transition-all hover:tw-cursor-pointer\"\r\n (click)=\"onRowClick({mo, index})\"\r\n >\r\n <a fd-link class=\"tw-block group-hover:tw-text-black !tw-no-underline\">\r\n <div\r\n class=\"tw-inline-block tw-w-8 tw-h-5 tw-p-.5 tw-text-small tw-text-center tw-rounded-md tw-border tw-border-gray-400 tw-text-gray-400\"\r\n [class.!text-green-500]=\"\r\n ('\u062A\u0639\u062F\u0627\u062F \u067E\u0627\u0633\u062E \u0647\u0627' | rval: mo:allColumns) > 0 && !('\u067E\u0627\u0633\u062E \u0635\u062D\u06CC\u062D' | rval: mo:allColumns)\r\n \"\r\n [class.!tw-border-green-500]=\"('\u062A\u0639\u062F\u0627\u062F \u067E\u0627\u0633\u062E \u0647\u0627' | rval: mo:allColumns) > 0\"\r\n [class.!tw-bg-green-500]=\"'\u067E\u0627\u0633\u062E \u0635\u062D\u06CC\u062D' | rval: mo:allColumns\"\r\n [class.!tw-text-white]=\"'\u067E\u0627\u0633\u062E \u0635\u062D\u06CC\u062D' | rval: mo:allColumns\"\r\n >\r\n {{ '\u0645\u062C\u0645\u0648\u0639 \u0631\u0627\u06CC \u0647\u0627' | rval: mo:allColumns:true }}\r\n </div>\r\n {{ mo.$Caption }}\r\n </a>\r\n </div>\r\n } }\r\n </div>\r\n @if (!viewSetting.HideShowAllButton) {\r\n <div class=\"tw-px-4 tw-py-2 tw-border-t tw-border-gray-200 tw-flex tw-justify-center\">\r\n @for (button of toolbarButtons; track button) { @if (!button.Command?.IsBuiltin) {\r\n <a fd-link [ulvCommandHandler]=\"button\">{{ button.text }}</a>\r\n } }\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.UlvCommandDirective, selector: "[ulvCommandHandler]", inputs: ["ulvCommandHandler", "disable"], outputs: ["commandClick"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i2.MoReportValuePipe, name: "rval" }, { kind: "pipe", type: i2.RowNumberPipe, name: "rowNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaReportCardFlexViewComponent, decorators: [{
28
28
  type: Component,
@@ -16,7 +16,7 @@ export class BarsaTableColumnComponent extends BaseColumnPropsComponent {
16
16
  }
17
17
  }
18
18
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTableColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: { disableEllapsis: "disableEllapsis", fdTextMode: "fdTextMode" }, providers: [FormPanelService, ColumnService], usesInheritance: true, ngImport: i0, template: "<div\r\n [class.editMode]=\"editMode\"\r\n [class.isdirty]=\"isdirty\"\r\n #divDom\r\n style=\"display: flex; width: 100%\"\r\n [style.column-gap]=\"column.$MergedFieldsToColumn?.length ? '0.2rem' : null\"\r\n>\r\n @if (customComponent && customComponent.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"customComponent\"\r\n [mo]=\"mo\"\r\n [isChecked]=\"isChecked\"\r\n [setting]=\"detailsComponentSetting\"\r\n [parameters]=\"customComponent.Settings\"\r\n [column]=\"column\"\r\n [value]=\"value\"\r\n [disableEllapsis]=\"disableEllapsis\"\r\n [fdTextMode]=\"fdTextMode\"\r\n [icon]=\"icon\"\r\n [editMode]=\"editMode\"\r\n [rtl]=\"rtl\"\r\n [isMobile]=\"isMobile\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [containerDom]=\"divDom\"\r\n ></bnrc-dynamic-item-component>\r\n } @else {\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [containerDom]=\"divDom\"\r\n [allColumns]=\"allColumns\"\r\n [column]=\"column\"\r\n [disableEllapsis]=\"disableEllapsis\"\r\n [fdTextMode]=\"fdTextMode\"\r\n [value]=\"value | bbbTranslate\"\r\n [icon]=\"icon\"\r\n [editMode]=\"editMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [isMobile]=\"isMobile\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\r\n (keyup.control.enter)=\"save.emit($event)\"\r\n (keyup.esc)=\"cancel.emit($event)\"\r\n (keydown.Tab)=\"tab.emit($event)\"\r\n ></bsu-column-renderer>\r\n } @if (editMode) { @for (fieldCaption of column.$MergedFieldsToColumn; track fieldCaption) { @if (fieldCaption |\r\n controlUi: layout94; as layoutConfig) {\r\n <bsu-layout-control\r\n [caption]=\"fieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n (keyup.control.enter)=\"save.emit($event)\"\r\n (keyup.esc)=\"cancel.emit($event)\"\r\n (keydown.Tab)=\"tab.emit($event)\"\r\n ></bsu-layout-control>\r\n } } }\r\n</div>\r\n", styles: [":host{display:contents;width:100%}:host>div.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .editMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .editMode bsu-ui-simple-combo{margin:0!important}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}td{vertical-align:middle}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.showdetails-on td{border-bottom:none!important}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}\n"], dependencies: [{ kind: "component", type: i1.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "component", type: i2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i3.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "allColumns", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "isMobile", "fdTextMode", "deviceName", "deviceSize", "value", "icon"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: { disableEllapsis: "disableEllapsis", fdTextMode: "fdTextMode" }, providers: [FormPanelService, ColumnService], usesInheritance: true, ngImport: i0, template: "<div\r\n [class.editMode]=\"editMode\"\r\n [class.isdirty]=\"isdirty\"\r\n #divDom\r\n style=\"display: flex; width: 100%\"\r\n [style.column-gap]=\"column.$MergedFieldsToColumn?.length ? '0.2rem' : null\"\r\n>\r\n @if (customComponent && customComponent.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"customComponent\"\r\n [mo]=\"mo\"\r\n [isChecked]=\"isChecked\"\r\n [setting]=\"detailsComponentSetting\"\r\n [parameters]=\"customComponent.Settings\"\r\n [column]=\"column\"\r\n [value]=\"value\"\r\n [disableEllapsis]=\"disableEllapsis\"\r\n [fdTextMode]=\"fdTextMode\"\r\n [icon]=\"icon\"\r\n [editMode]=\"editMode\"\r\n [rtl]=\"rtl\"\r\n [isMobile]=\"isMobile\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [containerDom]=\"divDom\"\r\n ></bnrc-dynamic-item-component>\r\n } @else {\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [containerDom]=\"divDom\"\r\n [allColumns]=\"allColumns\"\r\n [column]=\"column\"\r\n [disableEllapsis]=\"disableEllapsis\"\r\n [fdTextMode]=\"fdTextMode\"\r\n [value]=\"value | bbbTranslate\"\r\n [icon]=\"icon\"\r\n [editMode]=\"editMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [isMobile]=\"isMobile\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [formLayoutShowLabel]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\r\n (keyup.control.enter)=\"save.emit($event)\"\r\n (keyup.esc)=\"cancel.emit($event)\"\r\n (keydown.Tab)=\"tab.emit($event)\"\r\n ></bsu-column-renderer>\r\n } @if (editMode) { @for (fieldCaption of column.$MergedFieldsToColumn; track fieldCaption) { @if (fieldCaption |\r\n controlUi: layout94; as layoutConfig) {\r\n <bsu-layout-control\r\n [caption]=\"fieldCaption\"\r\n [config]=\"layoutConfig\"\r\n [showLabel]=\"false\"\r\n [inlineEdit]=\"true\"\r\n (keyup.control.enter)=\"save.emit($event)\"\r\n (keyup.esc)=\"cancel.emit($event)\"\r\n (keydown.Tab)=\"tab.emit($event)\"\r\n ></bsu-layout-control>\r\n } } }\r\n</div>\r\n", styles: [":host{display:contents;width:100%}:host>div.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .editMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .editMode bsu-ui-simple-combo{margin:0!important}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}td{vertical-align:middle}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.showdetails-on td{border-bottom:none!important}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}\n"], dependencies: [{ kind: "component", type: i1.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "component", type: i2.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i3.ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: ["column", "allColumns", "mo", "index", "editMode", "customRowHeight", "controlUi", "formLayoutShowLabel", "isChecked", "isNewInlineMo", "containerDom", "disableEllapsis", "rtl", "isMobile", "fdTextMode", "deviceName", "deviceSize", "value", "icon"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i1.ControlUiPipe, name: "controlUi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
20
  }
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTableColumnComponent, decorators: [{
22
22
  type: Component,
@@ -63,7 +63,7 @@ export class BarsaTableRowComponent extends BaseViewItemPropsComponent {
63
63
  this._cdr.detectChanges();
64
64
  }
65
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTableRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: { showDetailsInRow: "showDetailsInRow", previewColumn: "previewColumn", columnComponents: "columnComponents", dirtyColumns: "dirtyColumns", detailsCollapsed: "detailsCollapsed" }, outputs: { columnSummary: "columnSummary" }, providers: [FormPanelService], viewQueries: [{ propertyName: "detailsFormItems", first: true, predicate: ["detailsFormItems"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "@if ((!mo.$Parent || parentExpanded) && visibility !== false) {\r\n<tr\r\n [class.row-error]=\"hasError\"\r\n [class.showdetails-on]=\"!detailsCollapsed && (detailsComponent?.Selector || detailsColumns?.length)\"\r\n [class.hasForm]=\"formSetting\"\r\n [class.hasCartable]=\"!!cartableParams\"\r\n #trEl\r\n fd-table-row\r\n [activable]=\"false\"\r\n [hoverable]=\"true\"\r\n [main]=\"true\"\r\n [focusable]=\"true\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"trEl\"\r\n [attr.aria-selected]=\"isChecked\"\r\n [class.has-preview-column]=\"!!previewColumn\"\r\n [class.brule-message]=\"bruleActionMessage || workflowState?.error\"\r\n [class.workflow-pending]=\"workflowState?.state === 'Pending'\"\r\n [style.background-color]=\"isOdd && !isChecked ? 'var(--sapList_Hover_Background)' : null\"\r\n>\r\n @if (mo.$Group || mo.$Group === '') {\r\n <td\r\n [style.padding-right]=\"rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\r\n [style.padding-left]=\"!rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\r\n fd-table-cell\r\n style=\"font-weight: bold; font-size: 1rem\"\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n class=\"row-group\"\r\n [class.mobile-mode]=\"secondaryColumns?.length\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 0\"\r\n >\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"expanded !== false ? 'navigation-down-arrow' : 'navigation-left-arrow'\"\r\n class=\"cell-expand\"\r\n (click)=\"onExpandClick()\"\r\n ></button>\r\n {{ mo.$Group === 'undefined' ? '' : mo.$Group }}\r\n </td>\r\n } @else {\r\n\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n @if (isCheckList) {\r\n <td fd-table-cell [style.width]=\"checkboxComponent ? '60px' : null\">\r\n @if (workflowState?.state === 'Pending') {\r\n <div style=\"position: absolute; left: 0; right: 0; bottom: 0; top: 0\">\r\n <bsu-mask [top]=\"'20px'\" [size]=\"'s'\"></bsu-mask>\r\n </div>\r\n } @if (checkboxComponent?.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"checkboxComponent\"\r\n [mo]=\"mo\"\r\n [isChecked]=\"isChecked\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [setting]=\"setting\"\r\n [parameters]=\"checkboxComponent.Parameters\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [value]=\"isChecked\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [typeDefId]=\"typeDefId\"\r\n (events)=\"onRowCheck()\"\r\n ></bnrc-dynamic-item-component>\r\n } @else {\r\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\r\n }\r\n </td>\r\n } @if (!isCheckList && !showRowNumber) {\r\n <td\r\n fd-table-cell\r\n class=\"single-select\"\r\n (click)=\"!isCheckList && onRowCheck()\"\r\n style=\"padding: 0; text-align: center\"\r\n >\r\n @if (inlineEditMode && allowInlineEdit && (hasError || saving || saved)) { @if (hasError) {\r\n <fd-icon class=\"save-error\" glyph=\"error\"></fd-icon>\r\n } @if (saving) {\r\n <fd-busy-indicator [loading]=\"true\" [size]=\"'s'\" title=\"record saving\"></fd-busy-indicator>\r\n } @if (saved) {\r\n <fd-icon class=\"save-success\" glyph=\"accept\"></fd-icon>\r\n } } @else { @if (mo.$State === 'New' && !isChecked) {\r\n <fd-icon glyph=\"favorite\"></fd-icon>\r\n } @if (inlineEditMode && allowInlineEdit && isChecked) {\r\n <fd-icon glyph=\"edit\"></fd-icon>\r\n } }\r\n </td>\r\n }\r\n <ng-container *ngTemplateOutlet=\"rowNumberTemplate\"></ng-container>\r\n @for (column of columns; track column.Name; let columnIndex = $index) {\r\n <td\r\n class=\"rep-column\"\r\n [attr.dbName]=\"column.Name\"\r\n #tdEl\r\n fd-table-cell\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"tdEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"column.Name\"\r\n [focusable]=\"false\"\r\n (click)=\"onColumnClick()\"\r\n (dblclick)=\"onRowClick()\"\r\n [hoverable]=\"inlineEditMode && allowInlineEdit\"\r\n [class.control-readonly]=\"column.IsReadonly\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: column,\r\n mo: mo,\r\n index: columnIndex,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n } @if (contextMenuItems.length ) {\r\n <td class=\"col-context-menu\" fd-table-cell>\r\n <bsu-ulv-context-menu\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [mo]=\"mo\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n [menuItems]=\"contextMenuItems\"\r\n [allColumns]=\"allColumns\"\r\n ></bsu-ulv-context-menu>\r\n </td>\r\n } @if (showDetailsInRow && (!inlineEditMode || !allowInlineEdit)) {\r\n <td class=\"col-details\" fd-table-cell [fitContent]=\"true\">\r\n @if ((detailsComponent?.Selector || detailsColumns?.length || cartableParams?.moId ) && !hideDetailsText) {\r\n <div class=\"tw-flex tw-justify-end tw-w-full\">\r\n <button\r\n fd-button\r\n [label]=\"(detailsCollapsed ? detailsText : 'Hide') | bbbTranslate\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onRowDetails()\"\r\n ></button>\r\n </div>\r\n }\r\n </td>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <td class=\"col-view\" [class.rtl]=\"rtl\" fd-table-cell [fitContent]=\"true\">\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n </td>\r\n } }\r\n</tr>\r\n} @if (secondaryColumns?.length && !mo.$Group && (!mo.$Parent || parentExpanded) && visibility !== false) {\r\n<tr\r\n #trEl\r\n fd-table-row\r\n [secondary]=\"true\"\r\n class=\"secondary-row\"\r\n [class.no-edit-mode]=\"!inlineEditMode\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"trEl\"\r\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\" (click)=\"onRowCheck()\"></td>\r\n }\r\n <td fd-table-cell colspan=\"100%\" (click)=\"onRowCheck()\" class=\"secondary p-wrapper\">\r\n <div style=\"display: flex; flex-direction: column\">\r\n @for (column of secondaryColumns; track _trackByColumn(columnIndex, column); let columnIndex = $index) {\r\n <p\r\n #pEl\r\n fd-table-text\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"pEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"column.Name\"\r\n style=\"font-family: 'BARSAFONT Medium'\"\r\n >\r\n <label fd-form-label>{{ column.Caption }} :</label>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: column,\r\n mo: mo,\r\n index: columnIndex,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n </p>\r\n }\r\n </div>\r\n </td>\r\n</tr>\r\n} @if (cartableParams?.moId) {\r\n<tr\r\n [class.detailCollapsed]=\"detailsCollapsed\"\r\n fd-table-row\r\n class=\"showdetails cartable\"\r\n [attr.aria-selected]=\"isChecked\"\r\n [class.has-preview-column]=\"!!previewColumn\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n (click)=\"onRowCheck()\"\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? 1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n <ng-container>\r\n <bnrc-form\r\n #cartableFormRef\r\n class=\"cartable-template\"\r\n [inlineEditInReport]=\"true\"\r\n [params]=\"cartableParams\"\r\n (beforeTransition)=\"onCartableBeforeTansition()\"\r\n (afterTransition)=\"onCartableAfterTansition($event)\"\r\n (bruleAction)=\"onCartableBruleAction($event)\"\r\n (click)=\"OnCartableFormClick($event)\"\r\n (formClose)=\"onCartableFormClosed()\"\r\n ></bnrc-form>\r\n </ng-container>\r\n </td>\r\n</tr>\r\n} @if (!detailsCollapsed && (detailsComponent?.Selector|| detailsColumns?.length)) {\r\n<tr fd-table-row class=\"showdetails\" [attr.aria-selected]=\"isChecked\" [class.has-preview-column]=\"!!previewColumn\">\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n (click)=\"onRowCheck()\"\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n detailsColumnsTemplate;\r\n context: { mo: mo, inlineEditMode: inlineEditMode, layout94: layout$ | async }\r\n \"\r\n ></ng-container>\r\n @if (detailsComponent && detailsComponent.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"detailsComponent\"\r\n [mo]=\"mo\"\r\n [isChecked]=\"isChecked\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [setting]=\"detailsComponentSetting\"\r\n [parameters]=\"detailsComponent.Settings\"\r\n [editMode]=\"inlineEditMode\"\r\n [formSetting]=\"formSetting\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [typeDefId]=\"typeDefId\"\r\n ></bnrc-dynamic-item-component>\r\n }\r\n </td>\r\n</tr>\r\n} @if(previewColumn){\r\n<tr\r\n #trEl\r\n fd-table-row\r\n [secondary]=\"true\"\r\n class=\"preview-column\"\r\n [class.no-edit-mode]=\"!inlineEditMode\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"trEl\"\r\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n (click)=\"onRowCheck()\"\r\n >\r\n <div style=\"display: flex; flex-direction: column\">\r\n <p\r\n #pEl\r\n fd-table-text\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"pEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"previewColumn.Name\"\r\n style=\"color: var(--sapAccentColor6)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: previewColumn,\r\n mo: mo,\r\n index: columns.length,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n </p>\r\n </div>\r\n </td>\r\n</tr>\r\n} @if(isLastChildGroup && groupSummary){\r\n<tr #trEl fd-table-row class=\"group-summary-row\" [class.no-edit-mode]=\"true\" [attr.aria-selected]=\"false\">\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\"></td>\r\n } @for (column of columns; track _trackByColumn(columnIndex, column); let columnIndex = $index) {\r\n <td fd-table-cell>\r\n <label #summaryRef>{{ reCalculateColumnSummary(summaryRef, column) }}</label>\r\n </td>\r\n } @if (contextMenuItems.length) {\r\n <td class=\"col-context-menu\" fd-table-cell></td>\r\n } @if (showDetailsInRow && (!inlineEditMode || !allowInlineEdit)) {\r\n <td class=\"col-details\" fd-table-cell [fitContent]=\"true\"></td>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <td class=\"col-view\" fd-table-cell [fitContent]=\"true\"></td>\r\n }\r\n</tr>\r\n} @if (bruleActionMessage && inlineEditMode) {\r\n<tr fd-table-row>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n @if (bruleActionMessage.MessageType === 2) {\r\n <fd-message-strip [type]=\"bruleActionMessage.MessageType === 2 ? 'error' : 'information'\" [dismissible]=\"false\">\r\n {{ bruleActionMessage.MessageExpression }}\r\n </fd-message-strip>\r\n }\r\n </td>\r\n</tr>\r\n} @if (workflowState?.state === 'Finish' && workflowState?.error) {\r\n<tr fd-table-row>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n <fd-message-strip type=\"error\" [dismissible]=\"true\" (onDismiss)=\"onResetWorkflowState()\">\r\n {{ workflowState.error?.Text || workflowState.error?.MessageExpression }}\r\n </fd-message-strip>\r\n </td>\r\n</tr>\r\n}\r\n<ng-template #detailsColumnsTemplate let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout94=\"layout94\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n detailsFormItems;\r\n context: {\r\n $implicit: detailsColumns,\r\n mo: this.mo,\r\n inlineEditMode: this.inlineEditMode,\r\n layout94: layout94\r\n }\r\n \"\r\n ></ng-container>\r\n</ng-template>\r\n<ng-template\r\n #detailsFormItems\r\n let-detailsColumns\r\n let-mo=\"mo\"\r\n let-inlineEditMode=\"inlineEditMode\"\r\n let-layout94=\"layout94\"\r\n>\r\n <div class=\"form-items\">\r\n @for (column of detailsColumns; track column; let columnIndex = $index) {\r\n <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">{{ column.Caption }}</label>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: column,\r\n mo: mo,\r\n index: columnIndex,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout94\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #columnTemplate\r\n let-column\r\n let-mo=\"mo\"\r\n let-index=\"index\"\r\n let-inlineEditMode=\"inlineEditMode\"\r\n let-layout94=\"layout94\"\r\n>\r\n <bsu-barsa-table-column\r\n [mo]=\"mo\"\r\n [allColumns]=\"allColumns\"\r\n [column]=\"column\"\r\n [isdirty]=\"dirtyColumns && dirtyColumns[column.Name]\"\r\n [value]=\"column | columnValue: mo\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [customComponent]=\"column.$CustomComponent\"\r\n [column]=\"column\"\r\n [disableEllapsis]=\"secondaryColumns?.length || disableEllapsis\"\r\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [formSetting]=\"formSetting\"\r\n [rtl]=\"rtl\"\r\n [isMobile]=\"isMobile\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [layout94]=\"layout94\"\r\n (save)=\"onEditFormPanelSave(null)\"\r\n (cancel)=\"onEditFormPanelCancel(null)\"\r\n (tab)=\"onTabKeyDown($event, index)\"\r\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\r\n >\r\n </bsu-barsa-table-column>\r\n</ng-template>\r\n<ng-template #statusIndicator>\r\n @if (rowIndicator) {\r\n <bsu-barsa-column-indicator [hideBorderBottom]=\"!detailsCollapsed\" [backColor]=\"rowIndicatorColor\">\r\n </bsu-barsa-column-indicator>\r\n }\r\n</ng-template>\r\n<ng-template #rowNumberTemplate>\r\n @if (showRowNumber) {\r\n <td fd-table-cell bsu-barsa-column-rownumber [rowNumber]=\"rowNumber\" (click)=\"!isCheckList && onRowCheck()\"></td>\r\n }\r\n</ng-template>\r\n<tr fd-table-row style=\"pointer-events: none\"></tr>\r\n", styles: [":host{display:contents;width:100%}:host bnrc-form.cartable-template ::ng-deep bsu-ly-layout-container-of-root{padding-bottom:1rem}:host.has-preview-column .secondary-row td{border-bottom:none}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .inlineEditMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .inlineEditMode bsu-ui-simple-combo{margin:0!important}:host ::ng-deep .secondary.p-wrapper p{display:flex;align-items:center}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}tr.group-summary-row td{border:none;background-color:#dde5f0;border-right:none!important;font-weight:700}tr.group-summary-row td label{font-weight:700}tr.group-summary-row td label.NaN{display:none}td{vertical-align:middle}td.control-readonly{background-color:var(--sapList_HeaderBackground)}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}.workflow-pending{opacity:.5;pointer-events:none;position:relative}.detailCollapsed{height:0;display:none}tr td.rep-column:first-child{position:sticky;right:0}tr:not([aria-selected=true]).preview-column td{border-bottom:var(--sapList_BorderWidth) var(--fdTable_Cell_Horizontal_Border_Style, solid) var(--sapList_BorderColor)}tr[aria-selected=true].has-preview-column td,tr.showdetails-on.hasCartable td,tr.showdetails-on.hasForm td{border-bottom:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: i3.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i3.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "width", "minWidth", "marginBottom", "indicationColor"], outputs: ["onDismiss"] }, { kind: "directive", type: i10.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i10.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i10.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: i11.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i12.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: i13.BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: ["disableEllapsis", "fdTextMode"] }, { kind: "component", type: i14.BarsaColumnIndicatorComponent, selector: "bsu-barsa-column-indicator", inputs: ["backColor", "hideBorderBottom"] }, { kind: "component", type: i15.BarsaColumnRowNumberComponent, selector: "td[bsu-barsa-column-rownumber],bsu-barsa-column-rownumber", inputs: ["rowNumber"] }, { kind: "component", type: i16.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i17.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i3.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTableRowComponent, selector: "bsu-barsa-table-row", inputs: { showDetailsInRow: "showDetailsInRow", previewColumn: "previewColumn", columnComponents: "columnComponents", dirtyColumns: "dirtyColumns", detailsCollapsed: "detailsCollapsed" }, outputs: { columnSummary: "columnSummary" }, providers: [FormPanelService], viewQueries: [{ propertyName: "detailsFormItems", first: true, predicate: ["detailsFormItems"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "@if ((!mo.$Parent || parentExpanded) && visibility !== false) {\r\n<tr\r\n [class.row-error]=\"hasError\"\r\n [class.showdetails-on]=\"!detailsCollapsed && (detailsComponent?.Selector || detailsColumns?.length)\"\r\n [class.hasForm]=\"formSetting\"\r\n [class.hasCartable]=\"!!cartableParams\"\r\n #trEl\r\n fd-table-row\r\n [activable]=\"false\"\r\n [hoverable]=\"true\"\r\n [main]=\"true\"\r\n [focusable]=\"true\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"trEl\"\r\n [attr.aria-selected]=\"isChecked\"\r\n [class.has-preview-column]=\"!!previewColumn\"\r\n [class.brule-message]=\"bruleActionMessage || workflowState?.error\"\r\n [class.workflow-pending]=\"workflowState?.state === 'Pending'\"\r\n [style.background-color]=\"isOdd && !isChecked ? 'var(--sapList_Hover_Background)' : null\"\r\n>\r\n @if (mo.$Group || mo.$Group === '') {\r\n <td\r\n [style.padding-right]=\"rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\r\n [style.padding-left]=\"!rtl ? 'calc( 1rem + ' + level * 12 + 'px' + ' )' : 'inherit'\"\r\n fd-table-cell\r\n style=\"font-weight: bold; font-size: 1rem\"\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n class=\"row-group\"\r\n [class.mobile-mode]=\"secondaryColumns?.length\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 0\"\r\n >\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"expanded !== false ? 'navigation-down-arrow' : 'navigation-left-arrow'\"\r\n class=\"cell-expand\"\r\n (click)=\"onExpandClick()\"\r\n ></button>\r\n {{ mo.$Group === 'undefined' ? '' : mo.$Group }}\r\n </td>\r\n } @else {\r\n\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n @if (isCheckList) {\r\n <td fd-table-cell [style.width]=\"checkboxComponent ? '60px' : null\">\r\n @if (workflowState?.state === 'Pending') {\r\n <div style=\"position: absolute; left: 0; right: 0; bottom: 0; top: 0\">\r\n <bsu-mask [top]=\"'20px'\" [size]=\"'s'\"></bsu-mask>\r\n </div>\r\n } @if (checkboxComponent?.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"checkboxComponent\"\r\n [mo]=\"mo\"\r\n [isChecked]=\"isChecked\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [setting]=\"setting\"\r\n [parameters]=\"checkboxComponent.Parameters\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [value]=\"isChecked\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [typeDefId]=\"typeDefId\"\r\n (events)=\"onRowCheck()\"\r\n ></bnrc-dynamic-item-component>\r\n } @else {\r\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\r\n }\r\n </td>\r\n } @if (!isCheckList && !showRowNumber) {\r\n <td\r\n fd-table-cell\r\n class=\"single-select\"\r\n (click)=\"!isCheckList && onRowCheck()\"\r\n style=\"padding: 0; text-align: center\"\r\n >\r\n @if (inlineEditMode && allowInlineEdit && (hasError || saving || saved)) { @if (hasError) {\r\n <fd-icon class=\"save-error\" glyph=\"error\"></fd-icon>\r\n } @if (saving) {\r\n <fd-busy-indicator [loading]=\"true\" [size]=\"'s'\" title=\"record saving\"></fd-busy-indicator>\r\n } @if (saved) {\r\n <fd-icon class=\"save-success\" glyph=\"accept\"></fd-icon>\r\n } } @else { @if (mo.$State === 'New' && !isChecked) {\r\n <fd-icon glyph=\"favorite\"></fd-icon>\r\n } @if (inlineEditMode && allowInlineEdit && isChecked) {\r\n <fd-icon glyph=\"edit\"></fd-icon>\r\n } }\r\n </td>\r\n }\r\n <ng-container *ngTemplateOutlet=\"rowNumberTemplate\"></ng-container>\r\n @for (column of columns; track column.Name; let columnIndex = $index) {\r\n <td\r\n class=\"rep-column\"\r\n [attr.dbName]=\"column.Name\"\r\n #tdEl\r\n fd-table-cell\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"tdEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"column.Name\"\r\n [focusable]=\"false\"\r\n (click)=\"onColumnClick()\"\r\n (dblclick)=\"onRowClick()\"\r\n [hoverable]=\"inlineEditMode && allowInlineEdit\"\r\n [class.control-readonly]=\"column.IsReadonly\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: column,\r\n mo: mo,\r\n index: columnIndex,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n } @if (contextMenuItems.length ) {\r\n <td class=\"col-context-menu\" fd-table-cell>\r\n <bsu-ulv-context-menu\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [mo]=\"mo\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n [menuItems]=\"contextMenuItems\"\r\n [allColumns]=\"allColumns\"\r\n ></bsu-ulv-context-menu>\r\n </td>\r\n } @if (showDetailsInRow && (!inlineEditMode || !allowInlineEdit)) {\r\n <td class=\"col-details\" fd-table-cell [fitContent]=\"true\">\r\n @if ((detailsComponent?.Selector || detailsColumns?.length || cartableParams?.moId ) && !hideDetailsText) {\r\n <div class=\"tw-flex tw-justify-end tw-w-full\">\r\n <button\r\n fd-button\r\n [label]=\"(detailsCollapsed ? detailsText : 'Hide') | bbbTranslate\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onRowDetails()\"\r\n ></button>\r\n </div>\r\n }\r\n </td>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <td class=\"col-view\" [class.rtl]=\"rtl\" fd-table-cell [fitContent]=\"true\">\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n </td>\r\n } }\r\n</tr>\r\n} @if (secondaryColumns?.length && !mo.$Group && (!mo.$Parent || parentExpanded) && visibility !== false) {\r\n<tr\r\n #trEl\r\n fd-table-row\r\n [secondary]=\"true\"\r\n class=\"secondary-row\"\r\n [class.no-edit-mode]=\"!inlineEditMode\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"trEl\"\r\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\" (click)=\"onRowCheck()\"></td>\r\n }\r\n <td fd-table-cell colspan=\"100%\" (click)=\"onRowCheck()\" class=\"secondary p-wrapper\">\r\n <div style=\"display: flex; flex-direction: column\">\r\n @for (column of secondaryColumns; track _trackByColumn(columnIndex, column); let columnIndex = $index) {\r\n <p\r\n #pEl\r\n fd-table-text\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"pEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"column.Name\"\r\n style=\"font-family: 'BARSAFONT Medium'\"\r\n >\r\n <label fd-form-label>{{ column.Caption }} :</label>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: column,\r\n mo: mo,\r\n index: columnIndex,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n </p>\r\n }\r\n </div>\r\n </td>\r\n</tr>\r\n} @if (cartableParams?.moId) {\r\n<tr\r\n [class.detailCollapsed]=\"detailsCollapsed\"\r\n fd-table-row\r\n class=\"showdetails cartable\"\r\n [attr.aria-selected]=\"isChecked\"\r\n [class.has-preview-column]=\"!!previewColumn\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n (click)=\"onRowCheck()\"\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? 1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n <ng-container>\r\n <bnrc-form\r\n #cartableFormRef\r\n class=\"cartable-template\"\r\n [inlineEditInReport]=\"true\"\r\n [params]=\"cartableParams\"\r\n (beforeTransition)=\"onCartableBeforeTansition()\"\r\n (afterTransition)=\"onCartableAfterTansition($event)\"\r\n (bruleAction)=\"onCartableBruleAction($event)\"\r\n (click)=\"OnCartableFormClick($event)\"\r\n (formClose)=\"onCartableFormClosed()\"\r\n ></bnrc-form>\r\n </ng-container>\r\n </td>\r\n</tr>\r\n} @if (!detailsCollapsed && (detailsComponent?.Selector|| detailsColumns?.length)) {\r\n<tr fd-table-row class=\"showdetails\" [attr.aria-selected]=\"isChecked\" [class.has-preview-column]=\"!!previewColumn\">\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n (click)=\"onRowCheck()\"\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n detailsColumnsTemplate;\r\n context: { mo: mo, inlineEditMode: inlineEditMode, layout94: layout$ | async }\r\n \"\r\n ></ng-container>\r\n @if (detailsComponent && detailsComponent.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"detailsComponent\"\r\n [mo]=\"mo\"\r\n [isChecked]=\"isChecked\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [setting]=\"detailsComponentSetting\"\r\n [parameters]=\"detailsComponent.Settings\"\r\n [editMode]=\"inlineEditMode\"\r\n [formSetting]=\"formSetting\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [allColumns]=\"allColumns\"\r\n [typeDefId]=\"typeDefId\"\r\n ></bnrc-dynamic-item-component>\r\n }\r\n </td>\r\n</tr>\r\n} @if(previewColumn){\r\n<tr\r\n #trEl\r\n fd-table-row\r\n [secondary]=\"true\"\r\n class=\"preview-column\"\r\n [class.no-edit-mode]=\"!inlineEditMode\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"trEl\"\r\n [attr.aria-selected]=\"isChecked && !inlineEditMode ? true : false\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n (click)=\"onRowCheck()\"\r\n >\r\n <div style=\"display: flex; flex-direction: column\">\r\n <p\r\n #pEl\r\n fd-table-text\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [hostEl]=\"pEl\"\r\n [styleIndex]=\"styleIndex\"\r\n [dbName]=\"previewColumn.Name\"\r\n style=\"color: var(--sapAccentColor6)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: previewColumn,\r\n mo: mo,\r\n index: columns.length,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout$ | async\r\n }\r\n \"\r\n ></ng-container>\r\n </p>\r\n </div>\r\n </td>\r\n</tr>\r\n} @if(isLastChildGroup && groupSummary){\r\n<tr #trEl fd-table-row class=\"group-summary-row\" [class.no-edit-mode]=\"true\" [attr.aria-selected]=\"false\">\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n @if (!isCheckList) {\r\n <td fd-table-cell class=\"single-select\"></td>\r\n } @for (column of columns; track _trackByColumn(columnIndex, column); let columnIndex = $index) {\r\n <td fd-table-cell>\r\n <label #summaryRef>{{ reCalculateColumnSummary(summaryRef, column) }}</label>\r\n </td>\r\n } @if (contextMenuItems.length) {\r\n <td class=\"col-context-menu\" fd-table-cell></td>\r\n } @if (showDetailsInRow && (!inlineEditMode || !allowInlineEdit)) {\r\n <td class=\"col-details\" fd-table-cell [fitContent]=\"true\"></td>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <td class=\"col-view\" fd-table-cell [fitContent]=\"true\"></td>\r\n }\r\n</tr>\r\n} @if (bruleActionMessage && inlineEditMode) {\r\n<tr fd-table-row>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n @if (bruleActionMessage.MessageType === 2) {\r\n <fd-message-strip [type]=\"bruleActionMessage.MessageType === 2 ? 'error' : 'information'\" [dismissible]=\"false\">\r\n {{ bruleActionMessage.MessageExpression }}\r\n </fd-message-strip>\r\n }\r\n </td>\r\n</tr>\r\n} @if (workflowState?.state === 'Finish' && workflowState?.error) {\r\n<tr fd-table-row>\r\n <ng-container *ngTemplateOutlet=\"statusIndicator\"></ng-container>\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"\r\n columns.length +\r\n 1 +\r\n (rowIndicator ? -1 : 0) +\r\n (contextMenuItems && contextMenuItems.length > 0 ? 1 : 0) +\r\n (showViewButton ? 1 : 0) +\r\n (showDetailsInRow && !inlineEditMode ? 1 : 0)\r\n \"\r\n >\r\n <fd-message-strip type=\"error\" [dismissible]=\"true\" (onDismiss)=\"onResetWorkflowState()\">\r\n {{ workflowState.error?.Text || workflowState.error?.MessageExpression }}\r\n </fd-message-strip>\r\n </td>\r\n</tr>\r\n}\r\n<ng-template #detailsColumnsTemplate let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout94=\"layout94\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n detailsFormItems;\r\n context: {\r\n $implicit: detailsColumns,\r\n mo: this.mo,\r\n inlineEditMode: this.inlineEditMode,\r\n layout94: layout94\r\n }\r\n \"\r\n ></ng-container>\r\n</ng-template>\r\n<ng-template\r\n #detailsFormItems\r\n let-detailsColumns\r\n let-mo=\"mo\"\r\n let-inlineEditMode=\"inlineEditMode\"\r\n let-layout94=\"layout94\"\r\n>\r\n <div class=\"form-items\">\r\n @for (column of detailsColumns; track column; let columnIndex = $index) {\r\n <div fd-form-item>\r\n <label fd-form-label for=\"input-2\">{{ column.Caption }}</label>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplate;\r\n context: {\r\n $implicit: column,\r\n mo: mo,\r\n index: columnIndex,\r\n inlineEditMode: inlineEditMode,\r\n layout94: layout94\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #columnTemplate\r\n let-column\r\n let-mo=\"mo\"\r\n let-index=\"index\"\r\n let-inlineEditMode=\"inlineEditMode\"\r\n let-layout94=\"layout94\"\r\n>\r\n <bsu-barsa-table-column\r\n [mo]=\"mo\"\r\n [allColumns]=\"allColumns\"\r\n [column]=\"column\"\r\n [isdirty]=\"dirtyColumns && dirtyColumns[column.Name]\"\r\n [value]=\"column | columnValue: mo\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [customComponent]=\"column.$CustomComponent\"\r\n [column]=\"column\"\r\n [disableEllapsis]=\"secondaryColumns?.length || disableEllapsis\"\r\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"isChecked\"\r\n [index]=\"index\"\r\n [formSetting]=\"formSetting\"\r\n [rtl]=\"rtl\"\r\n [isMobile]=\"isMobile\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [layout94]=\"layout94\"\r\n (save)=\"onEditFormPanelSave(null)\"\r\n (cancel)=\"onEditFormPanelCancel(null)\"\r\n (tab)=\"onTabKeyDown($event, index)\"\r\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\r\n >\r\n </bsu-barsa-table-column>\r\n</ng-template>\r\n<ng-template #statusIndicator>\r\n @if (rowIndicator) {\r\n <bsu-barsa-column-indicator [hideBorderBottom]=\"!detailsCollapsed\" [backColor]=\"rowIndicatorColor\">\r\n </bsu-barsa-column-indicator>\r\n }\r\n</ng-template>\r\n<ng-template #rowNumberTemplate>\r\n @if (showRowNumber) {\r\n <td fd-table-cell bsu-barsa-column-rownumber [rowNumber]=\"rowNumber\" (click)=\"!isCheckList && onRowCheck()\"></td>\r\n }\r\n</ng-template>\r\n<tr fd-table-row style=\"pointer-events: none\"></tr>\r\n", styles: [":host{display:contents;width:100%}:host bnrc-form.cartable-template ::ng-deep bsu-ly-layout-container-of-root{padding-bottom:1rem}:host.has-preview-column .secondary-row td{border-bottom:none}:host ::ng-deep .row-group.mobile-mode{border-bottom:var(--sapList_BorderWidth, .0625rem) solid var(--sapList_BorderColor, #e4e4e4)!important}:host ::ng-deep .inlineEditMode bnrc-field-ui{padding:0;margin:0}:host ::ng-deep .inlineEditMode bsu-ui-simple-combo{margin:0!important}:host ::ng-deep .secondary.p-wrapper p{display:flex;align-items:center}bsu-layout-control:not(.hide-form-item){align-items:center;height:100%;min-width:auto;width:auto}tr.group-summary-row td{border:none;background-color:#dde5f0;border-right:none!important;font-weight:700}tr.group-summary-row td label{font-weight:700}tr.group-summary-row td label.NaN{display:none}td{vertical-align:middle}td.control-readonly{background-color:var(--sapList_HeaderBackground)}tr.brule-message td{border:0}.row-group{background-color:var(--sapBackgroundColor, \"#f7f7ff\")}.cell-expand{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;font-size:.75rem;color:#0854a0;color:var(--sapContent_IconColor, #0854a0);min-width:2rem;max-width:2rem}.save-error{color:var(--sapField_InvalidColor)}.save-success{color:var(--sapField_SuccessColor)}.flow{max-width:100%}.flow-item{display:flex}.flow-item fd-micro-process-flow-icon{width:1.375rem;height:1.375rem}.flow-item h5{padding-right:.3rem}.cartable-template{padding:.5rem 0}.workflow-pending{opacity:.5;pointer-events:none;position:relative}.detailCollapsed{height:0;display:none}tr td.rep-column:first-child{position:sticky;right:0}tr:not([aria-selected=true]).preview-column td{border-bottom:var(--sapList_BorderWidth) var(--fdTable_Cell_Horizontal_Border_Style, solid) var(--sapList_BorderColor)}tr[aria-selected=true].has-preview-column td,tr.showdetails-on.hasCartable td,tr.showdetails-on.hasForm td{border-bottom:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.FormComponent, selector: "bnrc-form", inputs: ["params", "customFormPanelUi", "formPanelCtrl", "UlvMainCtrlr", "formPanelCtrlId", "saveOnChange", "inlineEditInReport"], outputs: ["titleChanged", "moChanged", "formClose", "uiComponent", "formRendered", "bruleAction", "beforeTransition", "afterTransition"] }, { kind: "component", type: i3.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i3.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i7.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i7.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "allowWrap", "inlineHelpLabel", "id"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "width", "minWidth", "marginBottom", "indicationColor"], outputs: ["onDismiss"] }, { kind: "directive", type: i10.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i10.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i10.TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: i11.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i12.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: i13.BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: ["disableEllapsis", "fdTextMode"] }, { kind: "component", type: i14.BarsaColumnIndicatorComponent, selector: "bsu-barsa-column-indicator", inputs: ["backColor", "hideBorderBottom"] }, { kind: "component", type: i15.BarsaColumnRowNumberComponent, selector: "td[bsu-barsa-column-rownumber],bsu-barsa-column-rownumber", inputs: ["rowNumber"] }, { kind: "component", type: i16.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i17.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i3.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
67
  }
68
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTableRowComponent, decorators: [{
69
69
  type: Component,
@@ -51,7 +51,7 @@ export class BarsaTagCategoriesComponent extends ReportViewBaseComponent {
51
51
  this._cdr.detectChanges();
52
52
  }
53
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTagCategoriesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTagCategoriesComponent, selector: "bsu-barsa-tag-categories", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@for (category of groupedTags; track category) {\r\n<p class=\"tw-w-full tw-border-b tw-border-gray-300 tw-py-2 tw-text-xl\">{{ category.title }}</p>\r\n<div class=\"tw-grid tw-grid-cols-4 tw-gap-4 tw-items-stretch tw-py-4\">\r\n @for (mo of category.items; track mo) {\r\n <div\r\n class=\"tw-col-span-1 tw-flex tw-flex-col tw-gap-2 tw-p-2 tw-bg-white tw-border tw-border-transparent hover:tw-border-gray-200 tw-transition-all tw-rounded-md\"\r\n >\r\n @if (viewSetting.RowOlgo.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [typeDefId]=\"typeDefId\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"mo.index\"\r\n [setting]=\"viewSetting\"\r\n [columns]=\"columns\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n } @else {\r\n <div class=\"tw-flex tw-justify-between tw-items-center\">\r\n <bsu-barsa-chip\r\n #Chip\r\n [title]=\"mo.$Caption\"\r\n [canCheck]=\"true\"\r\n (checkedChange)=\"rowCheck.emit({ mo: mo, index: mo.index })\"\r\n (mouseenter)=\"Chip.isChecked = true\"\r\n (mouseleave)=\"Chip.isChecked = false\"\r\n ></bsu-barsa-chip>\r\n <span class=\"tw-text-gray-400\">\r\n {{ mo.QuestionsCount | number: '1.0-0' }}\r\n \u0633\u0648\u0627\u0644\r\n </span>\r\n </div>\r\n <p class=\"tw-line-clamp-3 tw-text-xs\">{{ mo.Description }}</p>\r\n }\r\n </div>\r\n }\r\n</div>\r\n}\r\n", styles: [":root{--sapBackgroundColor: #fdfdfd}\n"], dependencies: [{ kind: "component", type: i1.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "component", type: i2.BarsaChipComponent, selector: "bsu-barsa-chip", inputs: ["title", "moreInfo", "canCheck", "isChecked"], outputs: ["checkedChange"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTagCategoriesComponent, selector: "bsu-barsa-tag-categories", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@for (category of groupedTags; track category) {\r\n<p class=\"tw-w-full tw-border-b tw-border-gray-300 tw-py-2 tw-text-xl\">{{ category.title }}</p>\r\n<div class=\"tw-grid tw-grid-cols-4 tw-gap-4 tw-items-stretch tw-py-4\">\r\n @for (mo of category.items; track mo) {\r\n <div\r\n class=\"tw-col-span-1 tw-flex tw-flex-col tw-gap-2 tw-p-2 tw-bg-white tw-border tw-border-transparent hover:tw-border-gray-200 tw-transition-all tw-rounded-md\"\r\n >\r\n @if (viewSetting.RowOlgo.Selector) {\r\n <bnrc-dynamic-item-component\r\n [component]=\"viewSetting.RowOlgo\"\r\n [mo]=\"mo\"\r\n [UlvMainCtrlr]=\"UlvMainCtrlr\"\r\n [moDataList]=\"moDataList\"\r\n [showRowNumber]=\"contextView?.Grid_ShowRowNumber\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [typeDefId]=\"typeDefId\"\r\n [formSetting]=\"formSetting\"\r\n [index]=\"mo.index\"\r\n [setting]=\"viewSetting\"\r\n [columns]=\"columns\"\r\n [isNewInlineMo]=\"mo.$NewInlineMo\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [allowInlineEdit]=\"allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (events)=\"onOlgoEvents($event)\"\r\n >\r\n </bnrc-dynamic-item-component>\r\n } @else {\r\n <div class=\"tw-flex tw-justify-between tw-items-center\">\r\n <bsu-barsa-chip\r\n #Chip\r\n [title]=\"mo.$Caption\"\r\n [canCheck]=\"true\"\r\n (checkedChange)=\"rowCheck.emit({ mo: mo, index: mo.index })\"\r\n (mouseenter)=\"Chip.isChecked = true\"\r\n (mouseleave)=\"Chip.isChecked = false\"\r\n ></bsu-barsa-chip>\r\n <span class=\"tw-text-gray-400\">\r\n {{ mo.QuestionsCount | number: '1.0-0' }}\r\n \u0633\u0648\u0627\u0644\r\n </span>\r\n </div>\r\n <p class=\"tw-line-clamp-3 tw-text-xs\">{{ mo.Description }}</p>\r\n }\r\n </div>\r\n }\r\n</div>\r\n}\r\n", styles: [":root{--sapBackgroundColor: #fdfdfd}\n"], dependencies: [{ kind: "component", type: i1.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "component", type: i2.BarsaChipComponent, selector: "bsu-barsa-chip", inputs: ["title", "moreInfo", "canCheck", "isChecked"], outputs: ["checkedChange"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTagCategoriesComponent, decorators: [{
57
57
  type: Component,
@@ -96,11 +96,11 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
96
96
  this.dragMoved.emit($event);
97
97
  }
98
98
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTreeItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span class=\"ellapsis\" #spanEl [style.color]=\"color\" [class.haschildren]=\"hasChildren\">{{ text }}</span>\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i9.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i9.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "component", type: i12.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i13.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span\r\n class=\"ellapsis\"\r\n #spanEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n [class.haschildren]=\"hasChildren\"\r\n >{{ text }}</span\r\n >\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i9.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i9.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "contextMenuOverflowText", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "component", type: i12.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i13.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
100
  }
101
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTreeItemComponent, decorators: [{
102
102
  type: Component,
103
- args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span class=\"ellapsis\" #spanEl [style.color]=\"color\" [class.haschildren]=\"hasChildren\">{{ text }}</span>\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"] }]
103
+ args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<li\r\n fd-list-item\r\n #liEl\r\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"liEl\"\r\n [focusable]=\"true\"\r\n [attr.level]=\"level\"\r\n [class.root-group]=\"level === 1\"\r\n [interactive]=\"true\"\r\n [selected]=\"isChecked\"\r\n (dblclick)=\"onNodeViewClick()\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"!enableNodeReordering\"\r\n [cdkDragData]=\"node.Data.Id\"\r\n [class.isdirty]=\"isdirty\"\r\n (cdkDragMoved)=\"onDragMoved($event)\"\r\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\r\n>\r\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\r\n @if (enableNodeReordering && !isHetro) {\r\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\r\n } @if (inDialog && isMultiSelect) {\r\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\r\n }\r\n\r\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\r\n <div style=\"display: flex; flex: 1; gap: 3px\">\r\n @if (hasArrowIcon) { @if (hasChildren) {\r\n <div class=\"arrow-container\">\r\n <button\r\n [attr.rtl]=\"rtl\"\r\n fd-button\r\n fdType=\"transparent\"\r\n class=\"arrow-children\"\r\n [fdCompact]\r\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\r\n (click)=\"onLoadChildren($event)\"\r\n (dblclick)=\"onExpandDblClick($event)\"\r\n ></button>\r\n </div>\r\n } @else { @if (!parentNode?.hasOneDepthLevel) {\r\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\r\n <button fd-button></button>\r\n </div>\r\n } } @if (loading) {\r\n <fd-busy-indicator\r\n style=\"display: flex; align-items: center; width: 2rem\"\r\n size=\"s\"\r\n [loading]=\"true\"\r\n ></fd-busy-indicator>\r\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\r\n <i\r\n [style.color]=\"appComponentIconColor || color\"\r\n class=\"icon-item\"\r\n fd-list-icon\r\n [glyph]=\"appComponentIcon || icon\"\r\n ></i>\r\n }@else {\r\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\r\n <img [src]=\"node.icon\" width=\"16px\" />\r\n </i>\r\n } } }\r\n <div\r\n style=\"display: flex; flex: unset; align-items: center\"\r\n fd-list-title\r\n [focusable]=\"true\"\r\n #divEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\r\n >\r\n <span\r\n class=\"ellapsis\"\r\n #spanEl\r\n [style.color]=\"styleIndex ? 'inherit' : color\"\r\n [class.haschildren]=\"hasChildren\"\r\n >{{ text }}</span\r\n >\r\n @if (children) {\r\n <span>{{ ' ( ' + children.length + ' )' }}</span>\r\n }\r\n </div>\r\n </div>\r\n @if (contextMenuItems && contextMenuItems.length > 0) {\r\n <i\r\n ulvContextMenu\r\n [allColumns]=\"allColumns\"\r\n [menuItems]=\"contextMenuItems\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [mo]=\"node.Data\"\r\n [index]=\"index\"\r\n (commandClick)=\"onUlvCommand()\"\r\n [deviceName]=\"deviceName\"\r\n ></i>\r\n } @if (access?.Add !== false && !inDialog) {\r\n <bsu-htree-create-new\r\n [node]=\"node\"\r\n [relationList]=\"relationList\"\r\n (createNew)=\"onCreateNew($event)\"\r\n ></bsu-htree-create-new>\r\n }\r\n </div>\r\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\r\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\r\n } @if (actionList?.length && !inlineEditMode) {\r\n <bsu-barsa-row-inline-actionlist\r\n [actionList]=\"actionList\"\r\n (btnClick)=\"actionListClick.emit($event)\"\r\n ></bsu-barsa-row-inline-actionlist>\r\n }\r\n\r\n <bsu-barsa-tree-item\r\n *cdkDragPreview\r\n [node]=\"node\"\r\n [rtl]=\"rtl\"\r\n [selectedNode]=\"selectedNode\"\r\n [hasArrowIcon]=\"false\"\r\n ></bsu-barsa-tree-item>\r\n</li>\r\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"] }]
104
104
  }], propDecorators: { node: [{
105
105
  type: Input
106
106
  }], selectedNode: [{
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
150
150
  }], dragMoved: [{
151
151
  type: Output
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFJSCwwQkFBMEIsRUFDMUIsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMEJBQTBCO0lBUHRFOztRQVlhLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBZTdCLG9CQUFvQjtRQUNWLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBRy9CLENBQUM7UUFDSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUlwQyxDQUFDO1FBQ0ssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBQ0ssaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFDNUMsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztRQUNGLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FvRWxDO0lBbkVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDekQsSUFBSSxFQUNKLHdDQUF3QyxFQUN4QyxJQUFJLENBQ1AsQ0FBQztRQUNGLDRDQUE0QztRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSTtJQUNSLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLE1BQW1CLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsV0FBVyxDQUFDLFdBQW1CO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBbEhRLHNCQUFzQjttR0FBdEIsc0JBQXNCLHFzQkMzQm5DLDIvSkFxSEEsaWxJRDFGYSxzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHUixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUlHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgVHJlZU5vZGVPYmosXHJcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxyXG4gICAgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQsXHJcbiAgICBCYXJzYUFwaVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdHJlZS1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYVRyZWVJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgcmVsYXRpb25MaXN0OiBSZWxhdGlvbkl0ZW1UeXBlW107XHJcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoYXNBcnJvd0ljb24gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGFzQ2hpbGRyZW46IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBsZWFmQ3Vyc29yUG9pbnRlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2hpbGRyZW46IFRyZWVOb2RlT2JqW107XHJcbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZU9iajtcclxuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW5hYmxlTm9kZVJlb3JkZXJpbmc6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlSWNvbjogYm9vbGVhbjtcclxuXHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25JdGVtVHlwZT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgICAgICBub2RlOiBUcmVlTm9kZU9iajtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBjaGVja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xyXG4gICAgICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICAgICAgY2hlY2tlZDogYm9vbGVhbjtcclxuICAgIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgbm9kZTogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBsb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgZHJhZ01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgYXBwQ29tcG9uZW50SWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBhcHBDb21wb25lbnRJY29uQ29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcm93QnRucyA9IFtcclxuICAgICAgICB7IEljb246ICdhZGQnLCBBY3Rpb246ICdjb25zb2xlLmxvZyhcImFkZCBidG4gY2xpY2tlZFwiKScgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxyXG4gICAgICAgICAgICBBY3Rpb246ICdjb25zb2xlLmxvZyhcImRlbGV0ZSBidG4gY2xpY2tlZFwiKSdcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgX3JlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmFwcENvbXBvbmVudEljb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLCAnbm9kZS5EYXRhLkNvbXBvbmVudC5TZXR0aW5ncy5JY29uJywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5hcHBDb21wb25lbnRJY29uQ29sb3IgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgJ25vZGUuRGF0YS5Db21wb25lbnQuU2V0dGluZ3MuSWNvbkNvbG9yJyxcclxuICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLm5vZGUuaWNvbi5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5oaWRlSWNvbiA9IHRydWU7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgb25WaXNpYmlsaXR5Q2hhbmdlKGRpdkVsOiBIVE1MRWxlbWVudCwgc3BhbkVsOiBIVE1MRWxlbWVudCwgZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGhUZXh0ID0gZGl2RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShzcGFuRWwsICdtYXgtd2lkdGgnLCBtYXhXaWR0aFRleHQgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgZSkge1xyXG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ2hhbmdlLmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4LCBjaGVja2VkIH0pO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbkRpYWxvZyAmJiB0aGlzLmlzTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTG9hZENoaWxkcmVuKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbi5lbWl0KHRoaXMubm9kZS5EYXRhKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkV4cGFuZERibENsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIG9uQ3JlYXRlTmV3KGUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xyXG4gICAgfVxyXG4gICAgb25Sb3dBY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xyXG4gICAgICAgIGNvbW1hbmQoKTtcclxuICAgIH1cclxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSGV0cm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGxpXHJcbiAgICBmZC1saXN0LWl0ZW1cclxuICAgICNsaUVsXHJcbiAgICBbY2xhc3MuIXR3LWN1cnNvci1wb2ludGVyXT1cImxlYWZDdXJzb3JQb2ludGVyXCJcclxuICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXHJcbiAgICBbaG9zdEVsXT1cImxpRWxcIlxyXG4gICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcclxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcclxuICAgIFtjbGFzcy5yb290LWdyb3VwXT1cImxldmVsID09PSAxXCJcclxuICAgIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCJcclxuICAgIFtzZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcclxuICAgIGNka0RyYWdcclxuICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVuYWJsZU5vZGVSZW9yZGVyaW5nXCJcclxuICAgIFtjZGtEcmFnRGF0YV09XCJub2RlLkRhdGEuSWRcIlxyXG4gICAgW2NsYXNzLmlzZGlydHldPVwiaXNkaXJ0eVwiXHJcbiAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5PbkNsaWNrID8gb25Ob2RlVmlld0NsaWNrKCkgOiBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgJGV2ZW50KVwiXHJcbj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XHJcbiAgICBAaWYgKGVuYWJsZU5vZGVSZW9yZGVyaW5nICYmICFpc0hldHJvKSB7XHJcbiAgICA8ZmQtaWNvbiBnbHlwaD1cImdyaXBcIiBmb250PVwiQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9sc1wiIGNka0RyYWdIYW5kbGU+PC9mZC1pY29uPlxyXG4gICAgfSBAaWYgKGluRGlhbG9nICYmIGlzTXVsdGlTZWxlY3QpIHtcclxuICAgIDxmZC1jaGVja2JveCBbbmFtZV09XCJub2RlLkRhdGEuJENhcHRpb25cIiBbbmdNb2RlbF09XCJpc0NoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94KCRldmVudClcIj48L2ZkLWNoZWNrYm94PlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4OiAxOyBnYXA6IDNweFwiPlxyXG4gICAgICAgICAgICBAaWYgKGhhc0Fycm93SWNvbikgeyBAaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcnJvdy1jaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29tcGFjdF1cclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiaGFzQ2hpbGRyZW4gPyAoaXNFeHBhbmQgPyAnc2xpbS1hcnJvdy1kb3duJyA6IGNvbGxhcHNlSWNvbikgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZENoaWxkcmVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7IEBpZiAoIXBhcmVudE5vZGU/Lmhhc09uZURlcHRoTGV2ZWwpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWNvbnRhaW5lclwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSB9IEBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICB9IEBpZighaGlkZUljb24gfHwgYXBwQ29tcG9uZW50SWNvbil7IEBpZihpY29uIHx8IGFwcENvbXBvbmVudEljb24pe1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImFwcENvbXBvbmVudEljb25Db2xvciB8fCBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWljb25cclxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJhcHBDb21wb25lbnRJY29uIHx8IGljb25cIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gY2xhc3M9XCJpY29uLWl0ZW1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibm9kZS5pY29uXCIgd2lkdGg9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9IH0gfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIGZkLWxpc3QtdGl0bGVcclxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAjZGl2RWxcclxuICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyXHJcbiAgICAgICAgICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXHJcbiAgICAgICAgICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblZpc2liaWxpdHlDaGFuZ2UoZGl2RWwsIHNwYW5FbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWxsYXBzaXNcIiAjc3BhbkVsIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiIFtjbGFzcy5oYXNjaGlsZHJlbl09XCJoYXNDaGlsZHJlblwiPnt7IHRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnICggJyArIGNoaWxkcmVuLmxlbmd0aCArICcgKScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8aVxyXG4gICAgICAgICAgICB1bHZDb250ZXh0TWVudVxyXG4gICAgICAgICAgICBbYWxsQ29sdW1uc109XCJhbGxDb2x1bW5zXCJcclxuICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgICAgICAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcclxuICAgICAgICAgICAgW21vXT1cIm5vZGUuRGF0YVwiXHJcbiAgICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXHJcbiAgICAgICAgICAgIChjb21tYW5kQ2xpY2spPVwib25VbHZDb21tYW5kKClcIlxyXG4gICAgICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcclxuICAgICAgICA+PC9pPlxyXG4gICAgICAgIH0gQGlmIChhY2Nlc3M/LkFkZCAhPT0gZmFsc2UgJiYgIWluRGlhbG9nKSB7XHJcbiAgICAgICAgPGJzdS1odHJlZS1jcmVhdGUtbmV3XHJcbiAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXHJcbiAgICAgICAgICAgIChjcmVhdGVOZXcpPVwib25DcmVhdGVOZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYnN1LWh0cmVlLWNyZWF0ZS1uZXc+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKGFjY2Vzcz8uVmlldyAmJiAhc2hvd09rQ2FuY2VsQnV0dG9ucyAmJiBkZXZpY2VOYW1lICE9PSAnZGVza3RvcCcgJiYgIWhpZGVPcGVuSWNvbikge1xyXG4gICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIm5hdmlnYXRpb25BcnJvd1wiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCI+PC9idXR0b24+XHJcbiAgICB9IEBpZiAoYWN0aW9uTGlzdD8ubGVuZ3RoICYmICFpbmxpbmVFZGl0TW9kZSkge1xyXG4gICAgPGJzdS1iYXJzYS1yb3ctaW5saW5lLWFjdGlvbmxpc3RcclxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcclxuICAgICAgICAoYnRuQ2xpY2spPVwiYWN0aW9uTGlzdENsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+PC9ic3UtYmFyc2Etcm93LWlubGluZS1hY3Rpb25saXN0PlxyXG4gICAgfVxyXG5cclxuICAgIDxic3UtYmFyc2EtdHJlZS1pdGVtXHJcbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcclxuICAgICAgICBbaGFzQXJyb3dJY29uXT1cImZhbHNlXCJcclxuICAgID48L2JzdS1iYXJzYS10cmVlLWl0ZW0+XHJcbjwvbGk+XHJcbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFJSCwwQkFBMEIsRUFDMUIsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMEJBQTBCO0lBUHRFOztRQVlhLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBZTdCLG9CQUFvQjtRQUNWLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBRy9CLENBQUM7UUFDSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUlwQyxDQUFDO1FBQ0ssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBQ0ssaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFDNUMsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztRQUNGLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FvRWxDO0lBbkVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDekQsSUFBSSxFQUNKLHdDQUF3QyxFQUN4QyxJQUFJLENBQ1AsQ0FBQztRQUNGLDRDQUE0QztRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSTtJQUNSLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLE1BQW1CLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsV0FBVyxDQUFDLFdBQW1CO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBbEhRLHNCQUFzQjttR0FBdEIsc0JBQXNCLHFzQkMzQm5DLGd1S0E0SEEsaWxJRGpHYSxzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs4QkFHUixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBSUcsV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUlHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgVHJlZU5vZGVPYmosXHJcbiAgICBSZWxhdGlvbkl0ZW1UeXBlLFxyXG4gICAgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQsXHJcbiAgICBCYXJzYUFwaVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdHJlZS1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXJzYVRyZWVJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZE5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsO1xyXG4gICAgQElucHV0KCkgcmVsYXRpb25MaXN0OiBSZWxhdGlvbkl0ZW1UeXBlW107XHJcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoYXNBcnJvd0ljb24gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgY29sbGFwc2VJY29uOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGFzQ2hpbGRyZW46IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBsZWFmQ3Vyc29yUG9pbnRlcjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2hpbGRyZW46IFRyZWVOb2RlT2JqW107XHJcbiAgICBASW5wdXQoKSBwYXJlbnROb2RlOiBUcmVlTm9kZU9iajtcclxuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW5hYmxlTm9kZVJlb3JkZXJpbmc6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBoaWRlSWNvbjogYm9vbGVhbjtcclxuXHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVsYXRpb25JdGVtVHlwZT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgICAgICBub2RlOiBUcmVlTm9kZU9iajtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBjaGVja0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIG5vZGU6IFRyZWVOb2RlT2JqO1xyXG4gICAgICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICAgICAgY2hlY2tlZDogYm9vbGVhbjtcclxuICAgIH0+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgbm9kZTogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgICAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgfT4oKTtcclxuICAgIEBPdXRwdXQoKSBsb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgZHJhZ01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgYXBwQ29tcG9uZW50SWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBhcHBDb21wb25lbnRJY29uQ29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcm93QnRucyA9IFtcclxuICAgICAgICB7IEljb246ICdhZGQnLCBBY3Rpb246ICdjb25zb2xlLmxvZyhcImFkZCBidG4gY2xpY2tlZFwiKScgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxyXG4gICAgICAgICAgICBBY3Rpb246ICdjb25zb2xlLmxvZyhcImRlbGV0ZSBidG4gY2xpY2tlZFwiKSdcclxuICAgICAgICB9XHJcbiAgICBdO1xyXG4gICAgX3JlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmFwcENvbXBvbmVudEljb24gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLCAnbm9kZS5EYXRhLkNvbXBvbmVudC5TZXR0aW5ncy5JY29uJywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5hcHBDb21wb25lbnRJY29uQ29sb3IgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgJ25vZGUuRGF0YS5Db21wb25lbnQuU2V0dGluZ3MuSWNvbkNvbG9yJyxcclxuICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLm5vZGUuaWNvbi5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5oaWRlSWNvbiA9IHRydWU7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgb25WaXNpYmlsaXR5Q2hhbmdlKGRpdkVsOiBIVE1MRWxlbWVudCwgc3BhbkVsOiBIVE1MRWxlbWVudCwgZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGhUZXh0ID0gZGl2RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShzcGFuRWwsICdtYXgtd2lkdGgnLCBtYXhXaWR0aFRleHQgKyAncHgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgZSkge1xyXG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ2hhbmdlLmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4LCBjaGVja2VkIH0pO1xyXG4gICAgfVxyXG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbkRpYWxvZyAmJiB0aGlzLmlzTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVsdkNvbW1hbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTG9hZENoaWxkcmVuKGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbi5lbWl0KHRoaXMubm9kZS5EYXRhKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkV4cGFuZERibENsaWNrKGUpOiB2b2lkIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIG9uQ3JlYXRlTmV3KGUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xyXG4gICAgfVxyXG4gICAgb25Sb3dBY3Rpb24oY29tbWFuZEJvZHk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xyXG4gICAgICAgIGNvbW1hbmQoKTtcclxuICAgIH1cclxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSGV0cm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGxpXHJcbiAgICBmZC1saXN0LWl0ZW1cclxuICAgICNsaUVsXHJcbiAgICBbY2xhc3MuIXR3LWN1cnNvci1wb2ludGVyXT1cImxlYWZDdXJzb3JQb2ludGVyXCJcclxuICAgIFthcHBseUNvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxyXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXHJcbiAgICBbaG9zdEVsXT1cImxpRWxcIlxyXG4gICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcclxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcclxuICAgIFtjbGFzcy5yb290LWdyb3VwXT1cImxldmVsID09PSAxXCJcclxuICAgIFtpbnRlcmFjdGl2ZV09XCJ0cnVlXCJcclxuICAgIFtzZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxyXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcclxuICAgIGNka0RyYWdcclxuICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVuYWJsZU5vZGVSZW9yZGVyaW5nXCJcclxuICAgIFtjZGtEcmFnRGF0YV09XCJub2RlLkRhdGEuSWRcIlxyXG4gICAgW2NsYXNzLmlzZGlydHldPVwiaXNkaXJ0eVwiXHJcbiAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5PbkNsaWNrID8gb25Ob2RlVmlld0NsaWNrKCkgOiBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgJGV2ZW50KVwiXHJcbj5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XHJcbiAgICBAaWYgKGVuYWJsZU5vZGVSZW9yZGVyaW5nICYmICFpc0hldHJvKSB7XHJcbiAgICA8ZmQtaWNvbiBnbHlwaD1cImdyaXBcIiBmb250PVwiQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9sc1wiIGNka0RyYWdIYW5kbGU+PC9mZC1pY29uPlxyXG4gICAgfSBAaWYgKGluRGlhbG9nICYmIGlzTXVsdGlTZWxlY3QpIHtcclxuICAgIDxmZC1jaGVja2JveCBbbmFtZV09XCJub2RlLkRhdGEuJENhcHRpb25cIiBbbmdNb2RlbF09XCJpc0NoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94KCRldmVudClcIj48L2ZkLWNoZWNrYm94PlxyXG4gICAgfVxyXG5cclxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4OiAxOyBnYXA6IDNweFwiPlxyXG4gICAgICAgICAgICBAaWYgKGhhc0Fycm93SWNvbikgeyBAaWYgKGhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcnJvdy1jaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29tcGFjdF1cclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiaGFzQ2hpbGRyZW4gPyAoaXNFeHBhbmQgPyAnc2xpbS1hcnJvdy1kb3duJyA6IGNvbGxhcHNlSWNvbikgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZENoaWxkcmVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7IEBpZiAoIXBhcmVudE5vZGU/Lmhhc09uZURlcHRoTGV2ZWwpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LWNvbnRhaW5lclwiIChjbGljayk9XCJvblJvd0NoZWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSB9IEBpZiAobG9hZGluZykge1xyXG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxyXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICB9IEBpZighaGlkZUljb24gfHwgYXBwQ29tcG9uZW50SWNvbil7IEBpZihpY29uIHx8IGFwcENvbXBvbmVudEljb24pe1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImFwcENvbXBvbmVudEljb25Db2xvciB8fCBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWljb25cclxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJhcHBDb21wb25lbnRJY29uIHx8IGljb25cIlxyXG4gICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICB9QGVsc2Uge1xyXG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gY2xhc3M9XCJpY29uLWl0ZW1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwibm9kZS5pY29uXCIgd2lkdGg9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9IH0gfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIGZkLWxpc3QtdGl0bGVcclxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAjZGl2RWxcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZUluZGV4ID8gJ2luaGVyaXQnIDogY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcclxuICAgICAgICAgICAgICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC4xXCJcclxuICAgICAgICAgICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uVmlzaWJpbGl0eUNoYW5nZShkaXZFbCwgc3BhbkVsLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsbGFwc2lzXCJcclxuICAgICAgICAgICAgICAgICAgICAjc3BhbkVsXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlSW5kZXggPyAnaW5oZXJpdCcgOiBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhc2NoaWxkcmVuXT1cImhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgdGV4dCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgICAgdWx2Q29udGV4dE1lbnVcclxuICAgICAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXHJcbiAgICAgICAgICAgIFttZW51SXRlbXNdPVwiY29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICAgICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudV09XCJkaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgIFttb109XCJub2RlLkRhdGFcIlxyXG4gICAgICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxyXG4gICAgICAgICAgICAoY29tbWFuZENsaWNrKT1cIm9uVWx2Q29tbWFuZCgpXCJcclxuICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXHJcbiAgICAgICAgPjwvaT5cclxuICAgICAgICB9IEBpZiAoYWNjZXNzPy5BZGQgIT09IGZhbHNlICYmICFpbkRpYWxvZykge1xyXG4gICAgICAgIDxic3UtaHRyZWUtY3JlYXRlLW5ld1xyXG4gICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgICAgICAgW3JlbGF0aW9uTGlzdF09XCJyZWxhdGlvbkxpc3RcIlxyXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxyXG4gICAgICAgID48L2JzdS1odHJlZS1jcmVhdGUtbmV3PlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChhY2Nlc3M/LlZpZXcgJiYgIXNob3dPa0NhbmNlbEJ1dHRvbnMgJiYgZGV2aWNlTmFtZSAhPT0gJ2Rlc2t0b3AnICYmICFoaWRlT3Blbkljb24pIHtcclxuICAgIDxidXR0b24gZmQtYnV0dG9uIFtnbHlwaF09XCJuYXZpZ2F0aW9uQXJyb3dcIiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIChjbGljayk9XCJvbk5vZGVWaWV3Q2xpY2soKVwiPjwvYnV0dG9uPlxyXG4gICAgfSBAaWYgKGFjdGlvbkxpc3Q/Lmxlbmd0aCAmJiAhaW5saW5lRWRpdE1vZGUpIHtcclxuICAgIDxic3UtYmFyc2Etcm93LWlubGluZS1hY3Rpb25saXN0XHJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXHJcbiAgICAgICAgKGJ0bkNsaWNrKT1cImFjdGlvbkxpc3RDbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvYnN1LWJhcnNhLXJvdy1pbmxpbmUtYWN0aW9ubGlzdD5cclxuICAgIH1cclxuXHJcbiAgICA8YnN1LWJhcnNhLXRyZWUtaXRlbVxyXG4gICAgICAgICpjZGtEcmFnUHJldmlld1xyXG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgIFtydGxdPVwicnRsXCJcclxuICAgICAgICBbc2VsZWN0ZWROb2RlXT1cInNlbGVjdGVkTm9kZVwiXHJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXHJcbiAgICA+PC9ic3UtYmFyc2EtdHJlZS1pdGVtPlxyXG48L2xpPlxyXG4iXX0=