barsa-sap-ui 2.0.95 → 2.0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +2 -2
- package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +3 -3
- package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +10 -4
- package/esm2022/lib/table-th.directive.mjs +7 -2
- package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +3 -3
- package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +3 -3
- package/fesm2022/barsa-sap-ui.mjs +23 -12
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-table-row/barsa-table-row.component.d.ts +3 -2
- package/lib/table-th.directive.d.ts +2 -1
- package/package.json +1 -1
|
@@ -43,7 +43,7 @@ export class BarsaPishnamayeshPayamComponent extends FieldBaseComponent {
|
|
|
43
43
|
useFactory: getDateService,
|
|
44
44
|
deps: [LogService]
|
|
45
45
|
}
|
|
46
|
-
], usesInheritance: true, ngImport: i0, template: "@if (data) {\n<ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: data,\n primary: !data?.$details?.length,\n isFirst: true\n }\n \"\n>\n</ng-container>\n}\n<ng-template #showPayamClass let-data let-primary=\"primary\" let-isFirst=\"isFirst\">\n <ng-container\n *ngTemplateOutlet=\"\n namayeshPayam;\n context: {\n $implicit: data.payam.Subject,\n mailNoText: data.payam.MailNoText,\n fromText: data.payam.FromText,\n toText: data.$toText,\n importance: data.$importance,\n readDate: data.$readDate,\n sendDate: data.$sendDate,\n ccText: data.$ccText,\n bccText: data.$bccText,\n accessLevel: data.$accessLevel,\n content: data.$content,\n fromPhoto: data.$fromPhoto,\n details: data.$details,\n attachments: data.$attachments,\n todo: data.$todo,\n customText: data.payam.CustomText,\n primary: primary,\n isFirst: isFirst\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template\n #namayeshPayam\n let-subject\n let-mailNoText=\"mailNoText\"\n let-content=\"content\"\n let-fromText=\"fromText\"\n let-toText=\"toText\"\n let-importance=\"importance\"\n let-readDate=\"readDate\"\n let-sendDate=\"sendDate\"\n let-ccText=\"ccText\"\n let-bccText=\"bccText\"\n let-fromPhoto=\"fromPhoto\"\n let-details=\"details\"\n let-accessLevel=\"accessLevel\"\n let-primary=\"primary\"\n let-isFirst=\"isFirst\"\n let-attachments=\"attachments\"\n let-todo=\"todo\"\n let-customText=\"customText\"\n>\n <fd-card cardType=\"object\">\n <fd-card-header>\n <fd-card-main-header>\n <fd-avatar\n [image]=\"fromPhoto\"\n [circle]=\"true\"\n size=\"s\"\n [ariaLabel]=\"fromText\"\n [label]=\"fromText\"\n [title]=\"fromText\"\n ></fd-avatar>\n <div fd-card-title class=\"header-fields\">\n <h5 fd-title>\n <a fd-link [emphasized]=\"true\" aria-label=\"Sender\"> {{ fromText }}</a>\n </h5>\n <fd-object-identifier [description]=\"'(' + sendDate + ')'\"> </fd-object-identifier>\n </div>\n <div fd-card-subtitle>\n <h5 fd-title>\n {{ subject }} @if(mailNoText){ <span>({{ mailNoText }})</span>}\n </h5>\n <fd-popover>\n <fd-popover-control>\n <button fd-button fdType=\"transparent\" [fdMenu]=\"true\">\n {{ 'Recievers' | bbbTranslate }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n @for (rec of toText; track rec) {\n <li fd-list-item>\n <a fd-list-link>{{ rec }}</a>\n </li>\n }\n </ul>\n </fd-popover-body>\n </fd-popover>\n </div>\n </fd-card-main-header>\n </fd-card-header>\n <fd-card-content>\n <fd-panel [expanded]=\"isFirst\">\n <div fd-panel-title id=\"panel-expandable-title-1\">\n <h5 fd-title>{{ '\u0645\u062D\u062A\u0648\u0627\u06CC \u067E\u06CC\u0627\u0645' | bbbTranslate }}</h5>\n <div class=\"payamIcons\">\n @if (importance.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + importance.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ importance.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (accessLevel.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + accessLevel.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ accessLevel.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (todo) {\n <fd-info-label [label]=\"todo.text\" [color]=\"todo.color\" [title]=\"todo.text\"></fd-info-label>\n }\n </div>\n </div>\n <div fd-panel-content>\n @if (customText) {\n <div>\n <fd-message-strip type=\"information\" [noIcon]=\"true\" [dismissible]=\"false\">\n {{ customText }}\n </fd-message-strip>\n </div>\n }\n <div [innerHtml]=\"content\" [disable]=\"!primary || attachments?.length\"></div>\n\n @if (attachments?.length) {\n <div class=\"file-viewer-attachments\">\n @for (file of attachments; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [file]=\"file\"\n [files]=\"attachments\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n ></bsu-file-viewer-popover>\n } } @if (attachments.length > 1) {\n <button\n fd-button\n [title]=\"'Download' | bbbTranslate\"\n [glyph]=\"'download'\"\n downloadFiles\n [files]=\"attachments\"\n ></button>\n }\n </div>\n }\n <div class=\"readAt\">\n @if (readDate) {\n <fd-object-identifier [description]=\"('ReadAt' | bbbTranslate) + ': (' + readDate + ')'\">\n </fd-object-identifier>\n }\n </div>\n </div>\n </fd-panel>\n </fd-card-content>\n <!-- <fd-card-footer>\n <button *fdCardFooterActionItem fd-button fdCompact>Assign to Project</button>\n </fd-card-footer> -->\n </fd-card>\n @for (detail of details; track detail) {\n <ng-contianer>\n <ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: detail\n }\n \"\n >\n </ng-container>\n </ng-contianer>\n }\n</ng-template>\n", styles: [":host{display:block;position:relative;width:100%;height:100%}:host ::ng-deep .fd-panel__content{border-bottom:none;padding-bottom:5px}:host ::ng-deep .fd-card__subtitle{display:flex;align-items:center;column-gap:5px;justify-content:start;height:auto;max-height:initial}:host ::ng-deep .fd-card__subtitle h5{white-space:initial!important}:host ::ng-deep .fd-object-identifier__text{margin-top:0}:host ::ng-deep .fd-panel__header{border-bottom:none}fd-card-header{cursor:default;border-bottom:none!important}fd-card-header:before{position:relative!important;display:none!important}fd-card-header:hover{background:var(--fdCard_Background_Color)!important}.readAt{padding-top:2rem}.readAt ::ng-deep p{color:var(--sapButton_BorderColor)!important}.payamIcons{display:flex;column-gap:5px}.payamIcons img{width:16px}@media (max-width: 410px){h5{max-width:210px}}@media (max-width: 1040px){.h5{max-width:600px}}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i5.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i5.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i5.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i5.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i5.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6.InfoLabelComponent, selector: "fd-info-label", inputs: ["class", "type", "glyph", "font", "color", "label", "title", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i8.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i9.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "width", "minWidth", "marginBottom", "indicationColor"], outputs: ["onDismiss"] }, { kind: "component", type: i10.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i11.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded"], outputs: ["expandedChange"] }, { kind: "directive", type: i11.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "id"] }, { kind: "directive", type: i11.PanelTitleDirective, selector: "[fd-panel-title]", inputs: ["id"] }, { kind: "component", type: i12.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i12.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i12.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i13.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i14.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
46
|
+
], usesInheritance: true, ngImport: i0, template: "@if (data) {\n<ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: data,\n primary: !data?.$details?.length,\n isFirst: true\n }\n \"\n>\n</ng-container>\n}\n<ng-template #showPayamClass let-data let-primary=\"primary\" let-isFirst=\"isFirst\">\n <ng-container\n *ngTemplateOutlet=\"\n namayeshPayam;\n context: {\n $implicit: data.payam.Subject,\n mailNoText: data.payam.MailNoText,\n fromText: data.payam.FromText,\n toText: data.$toText,\n importance: data.$importance,\n readDate: data.$readDate,\n sendDate: data.$sendDate,\n ccText: data.$ccText,\n bccText: data.$bccText,\n accessLevel: data.$accessLevel,\n content: data.$content,\n fromPhoto: data.$fromPhoto,\n details: data.$details,\n attachments: data.$attachments,\n todo: data.$todo,\n customText: data.payam.CustomText,\n primary: primary,\n isFirst: isFirst\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template\n #namayeshPayam\n let-subject\n let-mailNoText=\"mailNoText\"\n let-content=\"content\"\n let-fromText=\"fromText\"\n let-toText=\"toText\"\n let-importance=\"importance\"\n let-readDate=\"readDate\"\n let-sendDate=\"sendDate\"\n let-ccText=\"ccText\"\n let-bccText=\"bccText\"\n let-fromPhoto=\"fromPhoto\"\n let-details=\"details\"\n let-accessLevel=\"accessLevel\"\n let-primary=\"primary\"\n let-isFirst=\"isFirst\"\n let-attachments=\"attachments\"\n let-todo=\"todo\"\n let-customText=\"customText\"\n>\n <fd-card cardType=\"object\">\n <fd-card-header>\n <fd-card-main-header>\n <fd-avatar\n [image]=\"fromPhoto\"\n [circle]=\"true\"\n size=\"s\"\n [ariaLabel]=\"fromText\"\n [label]=\"fromText\"\n [title]=\"fromText\"\n ></fd-avatar>\n <div fd-card-title class=\"header-fields\">\n <h5 fd-title>\n <a fd-link [emphasized]=\"true\" aria-label=\"Sender\"> {{ fromText }}</a>\n </h5>\n <fd-object-identifier [description]=\"'(' + sendDate + ')'\"> </fd-object-identifier>\n </div>\n <div fd-card-subtitle>\n <h5 fd-title>\n {{ subject }} @if(mailNoText){ <span>({{ mailNoText }})</span>}\n </h5>\n <fd-popover>\n <fd-popover-control>\n <button fd-button fdType=\"transparent\" [fdMenu]=\"true\">\n {{ 'Recievers' | bbbTranslate }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n @for (rec of toText; track rec) {\n <li fd-list-item>\n <a fd-list-link>{{ rec }}</a>\n </li>\n }\n </ul>\n </fd-popover-body>\n </fd-popover>\n </div>\n </fd-card-main-header>\n </fd-card-header>\n <fd-card-content>\n <fd-panel [expanded]=\"isFirst\">\n <div fd-panel-title id=\"panel-expandable-title-1\">\n <h5 fd-title>{{ '\u0645\u062D\u062A\u0648\u0627\u06CC \u067E\u06CC\u0627\u0645' | bbbTranslate }}</h5>\n <div class=\"payamIcons\">\n @if (importance.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + importance.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ importance.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (accessLevel.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + accessLevel.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ accessLevel.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (todo) {\n <fd-info-label [label]=\"todo.text\" [color]=\"todo.color\" [title]=\"todo.text\"></fd-info-label>\n }\n </div>\n </div>\n <div fd-panel-content>\n @if (customText) {\n <div>\n <fd-message-strip type=\"information\" [noIcon]=\"true\" [dismissible]=\"false\">\n {{ customText }}\n </fd-message-strip>\n </div>\n }\n <div [innerHtml]=\"content\" [disable]=\"!primary || attachments?.length\"></div>\n\n @if (attachments?.length) {\n <div class=\"file-viewer-attachments\">\n @for (file of attachments; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [file]=\"file\"\n [files]=\"attachments\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n ></bsu-file-viewer-popover>\n } } @if (attachments.length > 1) {\n <button\n fd-button\n [title]=\"'Download' | bbbTranslate\"\n [glyph]=\"'download'\"\n downloadFiles\n [files]=\"attachments\"\n ></button>\n }\n </div>\n }\n <div class=\"readAt\">\n @if (readDate) {\n <fd-object-identifier [description]=\"('ReadAt' | bbbTranslate) + ': (' + readDate + ')'\">\n </fd-object-identifier>\n }\n </div>\n </div>\n </fd-panel>\n </fd-card-content>\n <!-- <fd-card-footer>\n <button *fdCardFooterActionItem fd-button fdCompact>Assign to Project</button>\n </fd-card-footer> -->\n </fd-card>\n @for (detail of details; track detail) {\n <ng-contianer>\n <ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: detail\n }\n \"\n >\n </ng-container>\n </ng-contianer>\n }\n</ng-template>\n", styles: [":host{display:block;position:relative;width:100%;height:100%}:host ::ng-deep .fd-panel__content{border-bottom:none;padding-bottom:5px}:host ::ng-deep .fd-card__subtitle{display:flex;align-items:center;column-gap:5px;justify-content:start;height:auto;max-height:initial}:host ::ng-deep .fd-card__subtitle h5{white-space:initial!important}:host ::ng-deep .fd-object-identifier__text{margin-top:0}:host ::ng-deep .fd-panel__header{border-bottom:none}:host ::ng-deep ol{list-style:auto;margin:unset;padding:revert}fd-card-header{cursor:default;border-bottom:none!important}fd-card-header:before{position:relative!important;display:none!important}fd-card-header:hover{background:var(--fdCard_Background_Color)!important}.readAt{padding-top:2rem}.readAt ::ng-deep p{color:var(--sapButton_BorderColor)!important}.payamIcons{display:flex;column-gap:5px}.payamIcons img{width:16px}@media (max-width: 410px){h5{max-width:210px}}@media (max-width: 1040px){.h5{max-width:600px}}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i5.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i5.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i5.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i5.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i5.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i6.InfoLabelComponent, selector: "fd-info-label", inputs: ["class", "type", "glyph", "font", "color", "label", "title", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i7.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i7.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i7.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i8.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i9.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "width", "minWidth", "marginBottom", "indicationColor"], outputs: ["onDismiss"] }, { kind: "component", type: i10.ObjectIdentifierComponent, selector: "fd-object-identifier", inputs: ["description", "bold", "medium"] }, { kind: "component", type: i11.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded"], outputs: ["expandedChange"] }, { kind: "directive", type: i11.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "id"] }, { kind: "directive", type: i11.PanelTitleDirective, selector: "[fd-panel-title]", inputs: ["id"] }, { kind: "component", type: i12.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i12.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i12.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i13.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i14.DownloadFilesDirective, selector: "[downloadFiles]", inputs: ["files"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
47
|
}
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaPishnamayeshPayamComponent, decorators: [{
|
|
49
49
|
type: Component,
|
|
@@ -53,7 +53,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
53
53
|
useFactory: getDateService,
|
|
54
54
|
deps: [LogService]
|
|
55
55
|
}
|
|
56
|
-
], template: "@if (data) {\n<ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: data,\n primary: !data?.$details?.length,\n isFirst: true\n }\n \"\n>\n</ng-container>\n}\n<ng-template #showPayamClass let-data let-primary=\"primary\" let-isFirst=\"isFirst\">\n <ng-container\n *ngTemplateOutlet=\"\n namayeshPayam;\n context: {\n $implicit: data.payam.Subject,\n mailNoText: data.payam.MailNoText,\n fromText: data.payam.FromText,\n toText: data.$toText,\n importance: data.$importance,\n readDate: data.$readDate,\n sendDate: data.$sendDate,\n ccText: data.$ccText,\n bccText: data.$bccText,\n accessLevel: data.$accessLevel,\n content: data.$content,\n fromPhoto: data.$fromPhoto,\n details: data.$details,\n attachments: data.$attachments,\n todo: data.$todo,\n customText: data.payam.CustomText,\n primary: primary,\n isFirst: isFirst\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template\n #namayeshPayam\n let-subject\n let-mailNoText=\"mailNoText\"\n let-content=\"content\"\n let-fromText=\"fromText\"\n let-toText=\"toText\"\n let-importance=\"importance\"\n let-readDate=\"readDate\"\n let-sendDate=\"sendDate\"\n let-ccText=\"ccText\"\n let-bccText=\"bccText\"\n let-fromPhoto=\"fromPhoto\"\n let-details=\"details\"\n let-accessLevel=\"accessLevel\"\n let-primary=\"primary\"\n let-isFirst=\"isFirst\"\n let-attachments=\"attachments\"\n let-todo=\"todo\"\n let-customText=\"customText\"\n>\n <fd-card cardType=\"object\">\n <fd-card-header>\n <fd-card-main-header>\n <fd-avatar\n [image]=\"fromPhoto\"\n [circle]=\"true\"\n size=\"s\"\n [ariaLabel]=\"fromText\"\n [label]=\"fromText\"\n [title]=\"fromText\"\n ></fd-avatar>\n <div fd-card-title class=\"header-fields\">\n <h5 fd-title>\n <a fd-link [emphasized]=\"true\" aria-label=\"Sender\"> {{ fromText }}</a>\n </h5>\n <fd-object-identifier [description]=\"'(' + sendDate + ')'\"> </fd-object-identifier>\n </div>\n <div fd-card-subtitle>\n <h5 fd-title>\n {{ subject }} @if(mailNoText){ <span>({{ mailNoText }})</span>}\n </h5>\n <fd-popover>\n <fd-popover-control>\n <button fd-button fdType=\"transparent\" [fdMenu]=\"true\">\n {{ 'Recievers' | bbbTranslate }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n @for (rec of toText; track rec) {\n <li fd-list-item>\n <a fd-list-link>{{ rec }}</a>\n </li>\n }\n </ul>\n </fd-popover-body>\n </fd-popover>\n </div>\n </fd-card-main-header>\n </fd-card-header>\n <fd-card-content>\n <fd-panel [expanded]=\"isFirst\">\n <div fd-panel-title id=\"panel-expandable-title-1\">\n <h5 fd-title>{{ '\u0645\u062D\u062A\u0648\u0627\u06CC \u067E\u06CC\u0627\u0645' | bbbTranslate }}</h5>\n <div class=\"payamIcons\">\n @if (importance.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + importance.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ importance.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (accessLevel.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + accessLevel.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ accessLevel.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (todo) {\n <fd-info-label [label]=\"todo.text\" [color]=\"todo.color\" [title]=\"todo.text\"></fd-info-label>\n }\n </div>\n </div>\n <div fd-panel-content>\n @if (customText) {\n <div>\n <fd-message-strip type=\"information\" [noIcon]=\"true\" [dismissible]=\"false\">\n {{ customText }}\n </fd-message-strip>\n </div>\n }\n <div [innerHtml]=\"content\" [disable]=\"!primary || attachments?.length\"></div>\n\n @if (attachments?.length) {\n <div class=\"file-viewer-attachments\">\n @for (file of attachments; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [file]=\"file\"\n [files]=\"attachments\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n ></bsu-file-viewer-popover>\n } } @if (attachments.length > 1) {\n <button\n fd-button\n [title]=\"'Download' | bbbTranslate\"\n [glyph]=\"'download'\"\n downloadFiles\n [files]=\"attachments\"\n ></button>\n }\n </div>\n }\n <div class=\"readAt\">\n @if (readDate) {\n <fd-object-identifier [description]=\"('ReadAt' | bbbTranslate) + ': (' + readDate + ')'\">\n </fd-object-identifier>\n }\n </div>\n </div>\n </fd-panel>\n </fd-card-content>\n <!-- <fd-card-footer>\n <button *fdCardFooterActionItem fd-button fdCompact>Assign to Project</button>\n </fd-card-footer> -->\n </fd-card>\n @for (detail of details; track detail) {\n <ng-contianer>\n <ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: detail\n }\n \"\n >\n </ng-container>\n </ng-contianer>\n }\n</ng-template>\n", styles: [":host{display:block;position:relative;width:100%;height:100%}:host ::ng-deep .fd-panel__content{border-bottom:none;padding-bottom:5px}:host ::ng-deep .fd-card__subtitle{display:flex;align-items:center;column-gap:5px;justify-content:start;height:auto;max-height:initial}:host ::ng-deep .fd-card__subtitle h5{white-space:initial!important}:host ::ng-deep .fd-object-identifier__text{margin-top:0}:host ::ng-deep .fd-panel__header{border-bottom:none}fd-card-header{cursor:default;border-bottom:none!important}fd-card-header:before{position:relative!important;display:none!important}fd-card-header:hover{background:var(--fdCard_Background_Color)!important}.readAt{padding-top:2rem}.readAt ::ng-deep p{color:var(--sapButton_BorderColor)!important}.payamIcons{display:flex;column-gap:5px}.payamIcons img{width:16px}@media (max-width: 410px){h5{max-width:210px}}@media (max-width: 1040px){.h5{max-width:600px}}\n"] }]
|
|
56
|
+
], template: "@if (data) {\n<ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: data,\n primary: !data?.$details?.length,\n isFirst: true\n }\n \"\n>\n</ng-container>\n}\n<ng-template #showPayamClass let-data let-primary=\"primary\" let-isFirst=\"isFirst\">\n <ng-container\n *ngTemplateOutlet=\"\n namayeshPayam;\n context: {\n $implicit: data.payam.Subject,\n mailNoText: data.payam.MailNoText,\n fromText: data.payam.FromText,\n toText: data.$toText,\n importance: data.$importance,\n readDate: data.$readDate,\n sendDate: data.$sendDate,\n ccText: data.$ccText,\n bccText: data.$bccText,\n accessLevel: data.$accessLevel,\n content: data.$content,\n fromPhoto: data.$fromPhoto,\n details: data.$details,\n attachments: data.$attachments,\n todo: data.$todo,\n customText: data.payam.CustomText,\n primary: primary,\n isFirst: isFirst\n }\n \"\n >\n </ng-container>\n</ng-template>\n\n<ng-template\n #namayeshPayam\n let-subject\n let-mailNoText=\"mailNoText\"\n let-content=\"content\"\n let-fromText=\"fromText\"\n let-toText=\"toText\"\n let-importance=\"importance\"\n let-readDate=\"readDate\"\n let-sendDate=\"sendDate\"\n let-ccText=\"ccText\"\n let-bccText=\"bccText\"\n let-fromPhoto=\"fromPhoto\"\n let-details=\"details\"\n let-accessLevel=\"accessLevel\"\n let-primary=\"primary\"\n let-isFirst=\"isFirst\"\n let-attachments=\"attachments\"\n let-todo=\"todo\"\n let-customText=\"customText\"\n>\n <fd-card cardType=\"object\">\n <fd-card-header>\n <fd-card-main-header>\n <fd-avatar\n [image]=\"fromPhoto\"\n [circle]=\"true\"\n size=\"s\"\n [ariaLabel]=\"fromText\"\n [label]=\"fromText\"\n [title]=\"fromText\"\n ></fd-avatar>\n <div fd-card-title class=\"header-fields\">\n <h5 fd-title>\n <a fd-link [emphasized]=\"true\" aria-label=\"Sender\"> {{ fromText }}</a>\n </h5>\n <fd-object-identifier [description]=\"'(' + sendDate + ')'\"> </fd-object-identifier>\n </div>\n <div fd-card-subtitle>\n <h5 fd-title>\n {{ subject }} @if(mailNoText){ <span>({{ mailNoText }})</span>}\n </h5>\n <fd-popover>\n <fd-popover-control>\n <button fd-button fdType=\"transparent\" [fdMenu]=\"true\">\n {{ 'Recievers' | bbbTranslate }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n @for (rec of toText; track rec) {\n <li fd-list-item>\n <a fd-list-link>{{ rec }}</a>\n </li>\n }\n </ul>\n </fd-popover-body>\n </fd-popover>\n </div>\n </fd-card-main-header>\n </fd-card-header>\n <fd-card-content>\n <fd-panel [expanded]=\"isFirst\">\n <div fd-panel-title id=\"panel-expandable-title-1\">\n <h5 fd-title>{{ '\u0645\u062D\u062A\u0648\u0627\u06CC \u067E\u06CC\u0627\u0645' | bbbTranslate }}</h5>\n <div class=\"payamIcons\">\n @if (importance.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + importance.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ importance.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (accessLevel.icon) {\n <fd-popover>\n <fd-popover-control>\n <img [src]=\"'/Customization/Mail/' + accessLevel.icon\" />\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>{{ accessLevel.text }}</li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @if (todo) {\n <fd-info-label [label]=\"todo.text\" [color]=\"todo.color\" [title]=\"todo.text\"></fd-info-label>\n }\n </div>\n </div>\n <div fd-panel-content>\n @if (customText) {\n <div>\n <fd-message-strip type=\"information\" [noIcon]=\"true\" [dismissible]=\"false\">\n {{ customText }}\n </fd-message-strip>\n </div>\n }\n <div [innerHtml]=\"content\" [disable]=\"!primary || attachments?.length\"></div>\n\n @if (attachments?.length) {\n <div class=\"file-viewer-attachments\">\n @for (file of attachments; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [file]=\"file\"\n [files]=\"attachments\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n ></bsu-file-viewer-popover>\n } } @if (attachments.length > 1) {\n <button\n fd-button\n [title]=\"'Download' | bbbTranslate\"\n [glyph]=\"'download'\"\n downloadFiles\n [files]=\"attachments\"\n ></button>\n }\n </div>\n }\n <div class=\"readAt\">\n @if (readDate) {\n <fd-object-identifier [description]=\"('ReadAt' | bbbTranslate) + ': (' + readDate + ')'\">\n </fd-object-identifier>\n }\n </div>\n </div>\n </fd-panel>\n </fd-card-content>\n <!-- <fd-card-footer>\n <button *fdCardFooterActionItem fd-button fdCompact>Assign to Project</button>\n </fd-card-footer> -->\n </fd-card>\n @for (detail of details; track detail) {\n <ng-contianer>\n <ng-container\n *ngTemplateOutlet=\"\n showPayamClass;\n context: {\n $implicit: detail\n }\n \"\n >\n </ng-container>\n </ng-contianer>\n }\n</ng-template>\n", styles: [":host{display:block;position:relative;width:100%;height:100%}:host ::ng-deep .fd-panel__content{border-bottom:none;padding-bottom:5px}:host ::ng-deep .fd-card__subtitle{display:flex;align-items:center;column-gap:5px;justify-content:start;height:auto;max-height:initial}:host ::ng-deep .fd-card__subtitle h5{white-space:initial!important}:host ::ng-deep .fd-object-identifier__text{margin-top:0}:host ::ng-deep .fd-panel__header{border-bottom:none}:host ::ng-deep ol{list-style:auto;margin:unset;padding:revert}fd-card-header{cursor:default;border-bottom:none!important}fd-card-header:before{position:relative!important;display:none!important}fd-card-header:hover{background:var(--fdCard_Background_Color)!important}.readAt{padding-top:2rem}.readAt ::ng-deep p{color:var(--sapButton_BorderColor)!important}.payamIcons{display:flex;column-gap:5px}.payamIcons img{width:16px}@media (max-width: 410px){h5{max-width:210px}}@media (max-width: 1040px){.h5{max-width:600px}}\n"] }]
|
|
57
57
|
}] });
|
|
58
58
|
class PayamClassType {
|
|
59
59
|
constructor(payam, _domSanitizer, _dateService) {
|
|
@@ -115,11 +115,11 @@ export class BarsaTableHeaderComponent extends BaseComponent {
|
|
|
115
115
|
return `${column.Name}${index}`;
|
|
116
116
|
}
|
|
117
117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTableHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: { allChecked: "allChecked", isCheckList: "isCheckList", columns: "columns", fitWidth: "fitWidth", contextMenuItems: "contextMenuItems", contextMenuWidth: "contextMenuWidth", showViewButton: "showViewButton", hasSelected: "hasSelected", hideOpenIcon: "hideOpenIcon", disableOverflowContextMenu: "disableOverflowContextMenu", inlineEditMode: "inlineEditMode", hideHeader: "hideHeader", showDetailsInRow: "showDetailsInRow", viewSetting: "viewSetting", tableWidth: "tableWidth", resizedByUser: "resizedByUser", disableResponsive: "disableResponsive", actionList: "actionList", rowIndicator: "rowIndicator", rtl: "rtl", sticky: "sticky", showRowNumber: "showRowNumber", disableResize: "disableResize", disableHeaderContextMenu: "disableHeaderContextMenu", deviceSize: "deviceSize", tableHeaderMode: "tableHeaderMode" }, outputs: { allCheckbox: "allCheckbox", columnResize: "columnResize", columnResizing: "columnResizing", fitToContent: "fitToContent", fitToContainer: "fitToContainer", freeColumnSize: "freeColumnSize", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", resetGridSettings: "resetGridSettings", headerRender: "headerRender" }, viewQueries: [{ propertyName: "theadRef", first: true, predicate: ["theadRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "thList", predicate: ["thRef"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [style.position]=\"sticky ? 'sticky' : null\"\n #theadRef\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator #rowIndicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) {\n <th\n #thRef\n tableth\n fd-table-cell\n resizable\n [index]=\"i\"\n [last]=\"last\"\n [column]=\"column\"\n [tableHeaderMode]=\"tableHeaderMode\"\n [rtl]=\"rtl\"\n [caption]=\"column.Caption | bbbTranslate\"\n [name]=\"column.Name\"\n [icon]=\"column.Icon\"\n [colClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [displayType]=\"column.Extra?.IconDisplayTypeEnum\"\n [isImageOrIcon]=\"(column | thImageOrIcon) === true\"\n [disableResize]=\"disableResize || (tableHeaderMode === 2 && last) || (column | thImageOrIcon) === true\"\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\n [disableResponsive]=\"disableResponsive\"\n (sortAscending)=\"sortAscending.emit(column)\"\n (sortDescending)=\"sortDescending.emit(column)\"\n (filter)=\"filter.emit(column)\"\n (resetGridSettings)=\"resetGridSettings.emit()\"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n >\n @if(!disableHeaderContextMenu){\n <fd-popover #menu>\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onFitToContent(column, i)\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContainer.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"freeColumnSize.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onResetColumnsSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"reset\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ 'GridSettingBase' | bbbTranslate }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @else{\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n }\n </th>\n } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow ) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? '44px' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"36 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n<ng-template #headerValue let-column>\n <div style=\"display: flex\">\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) && column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n</ng-template>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\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: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i5.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i5.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i5.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i7.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i8.TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "component", type: i3.ResizableComponent, selector: "th[resizable]", inputs: ["disableResize", "rtl"], outputs: ["widthChange", "widthChanging"] }, { kind: "directive", type: i9.TableThDirective, selector: "[tableth]", inputs: ["fieldTypeId", "caption", "icon", "inlineEditMode", "isImageOrIcon", "tableWidth", "last", "rtl", "column", "disableResponsive", "disableResize", "disableHeaderContextMenu", "tableHeaderMode", "colClass", "displayType", "name", "index"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.ThImageOrIconePipe, name: "thImageOrIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTableHeaderComponent, selector: "bsu-barsa-table-header", inputs: { allChecked: "allChecked", isCheckList: "isCheckList", columns: "columns", fitWidth: "fitWidth", contextMenuItems: "contextMenuItems", contextMenuWidth: "contextMenuWidth", showViewButton: "showViewButton", hasSelected: "hasSelected", hideOpenIcon: "hideOpenIcon", disableOverflowContextMenu: "disableOverflowContextMenu", inlineEditMode: "inlineEditMode", hideHeader: "hideHeader", showDetailsInRow: "showDetailsInRow", viewSetting: "viewSetting", tableWidth: "tableWidth", resizedByUser: "resizedByUser", disableResponsive: "disableResponsive", actionList: "actionList", rowIndicator: "rowIndicator", rtl: "rtl", sticky: "sticky", showRowNumber: "showRowNumber", disableResize: "disableResize", disableHeaderContextMenu: "disableHeaderContextMenu", deviceSize: "deviceSize", tableHeaderMode: "tableHeaderMode" }, outputs: { allCheckbox: "allCheckbox", columnResize: "columnResize", columnResizing: "columnResizing", fitToContent: "fitToContent", fitToContainer: "fitToContainer", freeColumnSize: "freeColumnSize", sortAscending: "sortAscending", sortDescending: "sortDescending", filter: "filter", resetGridSettings: "resetGridSettings", headerRender: "headerRender" }, viewQueries: [{ propertyName: "theadRef", first: true, predicate: ["theadRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "thList", predicate: ["thRef"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [style.position]=\"sticky ? 'sticky' : null\"\n #theadRef\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator #rowIndicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) {\n <th\n #thRef\n tableth\n fd-table-cell\n resizable\n [index]=\"i\"\n [last]=\"last\"\n [columnsLength]=\"columns.length\"\n [column]=\"column\"\n [tableHeaderMode]=\"tableHeaderMode\"\n [rtl]=\"rtl\"\n [caption]=\"column.Caption | bbbTranslate\"\n [name]=\"column.Name\"\n [icon]=\"column.Icon\"\n [colClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [displayType]=\"column.Extra?.IconDisplayTypeEnum\"\n [isImageOrIcon]=\"(column | thImageOrIcon) === true\"\n [disableResize]=\"disableResize || (tableHeaderMode === 2 && last) || (column | thImageOrIcon) === true\"\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\n [disableResponsive]=\"disableResponsive\"\n (sortAscending)=\"sortAscending.emit(column)\"\n (sortDescending)=\"sortDescending.emit(column)\"\n (filter)=\"filter.emit(column)\"\n (resetGridSettings)=\"resetGridSettings.emit()\"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n >\n @if(!disableHeaderContextMenu){\n <fd-popover #menu>\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onFitToContent(column, i)\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContainer.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"freeColumnSize.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onResetColumnsSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"reset\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ 'GridSettingBase' | bbbTranslate }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @else{\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n }\n </th>\n } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow && !inlineEditMode) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? '44px' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"36 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n<ng-template #headerValue let-column>\n <div style=\"display: flex\">\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) && column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n</ng-template>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\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: "directive", type: i3.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i5.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i5.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i5.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i5.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "directive", type: i5.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i6.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "component", type: i7.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i7.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i8.TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "component", type: i3.ResizableComponent, selector: "th[resizable]", inputs: ["disableResize", "rtl"], outputs: ["widthChange", "widthChanging"] }, { kind: "directive", type: i9.TableThDirective, selector: "[tableth]", inputs: ["fieldTypeId", "caption", "icon", "inlineEditMode", "isImageOrIcon", "columnsLength", "tableWidth", "last", "rtl", "column", "disableResponsive", "disableResize", "disableHeaderContextMenu", "tableHeaderMode", "colClass", "displayType", "name", "index"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i3.ThImageOrIconePipe, name: "thImageOrIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
119
119
|
}
|
|
120
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTableHeaderComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
|
-
args: [{ selector: 'bsu-barsa-table-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [style.position]=\"sticky ? 'sticky' : null\"\n #theadRef\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator #rowIndicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) {\n <th\n #thRef\n tableth\n fd-table-cell\n resizable\n [index]=\"i\"\n [last]=\"last\"\n [column]=\"column\"\n [tableHeaderMode]=\"tableHeaderMode\"\n [rtl]=\"rtl\"\n [caption]=\"column.Caption | bbbTranslate\"\n [name]=\"column.Name\"\n [icon]=\"column.Icon\"\n [colClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [displayType]=\"column.Extra?.IconDisplayTypeEnum\"\n [isImageOrIcon]=\"(column | thImageOrIcon) === true\"\n [disableResize]=\"disableResize || (tableHeaderMode === 2 && last) || (column | thImageOrIcon) === true\"\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\n [disableResponsive]=\"disableResponsive\"\n (sortAscending)=\"sortAscending.emit(column)\"\n (sortDescending)=\"sortDescending.emit(column)\"\n (filter)=\"filter.emit(column)\"\n (resetGridSettings)=\"resetGridSettings.emit()\"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n >\n @if(!disableHeaderContextMenu){\n <fd-popover #menu>\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onFitToContent(column, i)\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContainer.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"freeColumnSize.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onResetColumnsSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"reset\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ 'GridSettingBase' | bbbTranslate }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @else{\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n }\n </th>\n } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow ) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? '44px' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"36 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n<ng-template #headerValue let-column>\n <div style=\"display: flex\">\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) && column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n</ng-template>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\n"] }]
|
|
122
|
+
args: [{ selector: 'bsu-barsa-table-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thead\n fd-table-header\n [class.inline-edit]=\"inlineEditMode\"\n [class.smallColumns]=\"columnsSmallerThanTableWidth\"\n [style.position]=\"sticky ? 'sticky' : null\"\n #theadRef\n>\n <tr fd-table-row>\n @if (!hideHeader) { @if (rowIndicator) {\n <th fd-table-cell fd-table-status-indicator #rowIndicator></th>\n } @if (showRowNumber) {\n <th fd-table-cell style=\"width: 40px; max-width: 40px\"></th>\n } @if (isCheckList) {\n <th fd-table-cell>\n <fd-checkbox\n name=\"allCheckbox\"\n [ngModel]=\"allChecked\"\n (ngModelChange)=\"onAllCheckbox($event)\"\n ></fd-checkbox>\n </th>\n } @if (!isCheckList && !showRowNumber) {\n <th fd-table-cell class=\"single-select\"></th>\n } @for (column of columns; track _trackByColumn(i, column); let i = $index; let last = $last) {\n <th\n #thRef\n tableth\n fd-table-cell\n resizable\n [index]=\"i\"\n [last]=\"last\"\n [columnsLength]=\"columns.length\"\n [column]=\"column\"\n [tableHeaderMode]=\"tableHeaderMode\"\n [rtl]=\"rtl\"\n [caption]=\"column.Caption | bbbTranslate\"\n [name]=\"column.Name\"\n [icon]=\"column.Icon\"\n [colClass]=\"column.$CSSClassName + ' column__' + column.Caption\"\n [displayType]=\"column.Extra?.IconDisplayTypeEnum\"\n [isImageOrIcon]=\"(column | thImageOrIcon) === true\"\n [disableResize]=\"disableResize || (tableHeaderMode === 2 && last) || (column | thImageOrIcon) === true\"\n [disableHeaderContextMenu]=\"disableHeaderContextMenu\"\n [disableResponsive]=\"disableResponsive\"\n (sortAscending)=\"sortAscending.emit(column)\"\n (sortDescending)=\"sortDescending.emit(column)\"\n (filter)=\"filter.emit(column)\"\n (resetGridSettings)=\"resetGridSettings.emit()\"\n (widthChange)=\"onColumnWidthChange(column)\"\n (widthChanging)=\"onColumnWidthChanging(i, column, $event)\"\n >\n @if(!disableHeaderContextMenu){\n <fd-popover #menu>\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortAscending(column, menu)\">\n <fd-menu-addon position=\"before\" glyph=\"sort-ascending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Ascending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onSortDescending(column, menu)\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort-descending\" fd-list-icon></fd-menu-addon>\n <span fd-list-title\n >{{ ('Sort' | bbbTranslate) + ' ' }} {{ 'Descending' | bbbTranslate }}</span\n >\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onFitToContent(column, i)\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Fit Column To Content' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"fitToContainer.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('All Columns In Page' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"freeColumnSize.emit()\" bodyClick>\n <fd-menu-addon position=\"before\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ ('Free Columns Size' | bbbTranslate) + ' ' }}</span>\n </a>\n </li>\n <li fd-list-item>\n <a fd-list-link (click)=\"onResetColumnsSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"reset\" fd-list-icon></fd-menu-addon>\n <span fd-list-title>{{ 'GridSettingBase' | bbbTranslate }}</span>\n </a>\n </li>\n </ul>\n </fd-popover-body>\n </fd-popover>\n } @else{\n <ng-container *ngTemplateOutlet=\"headerValue; context: { $implicit: column }\"></ng-container>\n }\n </th>\n } @if (contextMenuItems && contextMenuItems.length > 0 && !inlineEditMode) {\n <th\n class=\"col-header col-context-menu\"\n fd-table-cell\n [fitContent]=\"disableOverflowContextMenu\"\n [style.width.px]=\"contextMenuWidth\"\n ></th>\n } @if (showDetailsInRow && !inlineEditMode) {\n <th class=\"col-header col-details\" [style.width]=\"deviceSize === 's' ? '44px' : '120px'\" fd-table-cell></th>\n } @if (showViewButton) {\n <th class=\"col-header col-view\" [style.width.px]=\"36 * (actionList?.length ?? 0) + 8\" fd-table-cell></th>\n } }\n </tr>\n</thead>\n<ng-template #headerValue let-column>\n <div style=\"display: flex\">\n @if ( (column.Extra?.IconDisplayTypeEnum === 'Image' || column.FieldTypeId === 42) && column.Icon) {\n <img [src]=\"column.Icon\" />\n } @else {\n {{ column.Caption | bbbTranslate }}\n }\n </div>\n</ng-template>\n", styles: [":host{display:contents;width:100%}:host.has-toolbar thead{border-top:none!important}\n"] }]
|
|
123
123
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], propDecorators: { thList: [{
|
|
124
124
|
type: ViewChildren,
|
|
125
125
|
args: ['thRef', { read: ElementRef }]
|
|
@@ -201,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
201
201
|
}], headerRender: [{
|
|
202
202
|
type: Output
|
|
203
203
|
}] } });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFFTixZQUFZLEVBQ1osVUFBVSxFQUVWLFNBQVMsRUFFVCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFJYixvQkFBb0IsRUFDcEIsZUFBZSxFQUNsQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBYTtJQTZDeEQ7O09BRUc7SUFDSCxZQUFvQixJQUF1QixFQUFVLFVBQXFCO1FBQ3RFLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFXO1FBakNqRSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFjeEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDNUQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBK0MsQ0FBQztRQUNqRixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUE2RCxDQUFDO1FBQzdGLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMxQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENB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YztzQkFBdkIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgUmVuZGVyZXIyLFxuICAgIGluamVjdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIENvbHVtblJlc2l6ZWRBcmdzLFxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlLFxuICAgIHNldFRhYmxlVGhXaWR0aFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGFibGUtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZHJlbigndGhSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgdGhMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHRoZWFkUmVmOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIGFsbENoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNDaGVja0xpc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xuICAgIEBJbnB1dCgpIGZpdFdpZHRoOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51SXRlbXM6IGFueVtdO1xuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51V2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBzaG93Vmlld0J1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoYXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZUhlYWRlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93RGV0YWlsc0luUm93ID0gZmFsc2U7XG4gICAgQElucHV0KCkgdmlld1NldHRpbmc6IFVpVGFibGVWaWV3U2V0dGluZztcbiAgICBASW5wdXQoKSB0YWJsZVdpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgcmVzaXplZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzcG9uc2l2ZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhY3Rpb25MaXN0OiBhbnlbXTtcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHN0aWNreTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93Um93TnVtYmVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNpemU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZUhlYWRlckNvbnRleHRNZW51OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSB0YWJsZUhlYWRlck1vZGU6IFRhYmxlSGVhZGVyV2lkdGhNb2RlO1xuICAgIEBPdXRwdXQoKSBhbGxDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uUmVzaXplID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxDb2x1bW5SZXNpemVkQXJncz4+KCk7XG4gICAgQE91dHB1dCgpIGNvbHVtblJlc2l6aW5nID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9PigpO1xuICAgIEBPdXRwdXQoKSBmaXRUb0NvbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfT4oKTtcbiAgICBAT3V0cHV0KCkgZml0VG9Db250YWluZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGZyZWVDb2x1bW5TaXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0QXNjZW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNvcnREZXNjZW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0Vmlld0NvbHVtbj4oKTtcbiAgICBAT3V0cHV0KCkgcmVzZXRHcmlkU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGhlYWRlclJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG4gICAgY29sdW1uc1NtYWxsZXJUaGFuVGFibGVXaWR0aDogYm9vbGVhbjtcblxuICAgIHN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgICByZXNpemVIZWFkZXIgPSBmYWxzZTtcbiAgICBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIGdldCB0aEFycigpOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhMaXN0LnRvQXJyYXkoKS5tYXAoKGMpID0+IGMubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmhlYWRlclJlbmRlci5lbWl0KHRoaXMudGhlYWRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIC8vIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCB0aGlzLmNvbHVtbnMsIHRydWUpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IHRhYmxlSGVhZGVyTW9kZSwgY29sdW1ucyB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKHRhYmxlSGVhZGVyTW9kZSAmJiAhdGFibGVIZWFkZXJNb2RlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBzZXRUYWJsZVRoV2lkdGgodGFibGVIZWFkZXJNb2RlLmN1cnJlbnRWYWx1ZSwgdGhpcy5jb2x1bW5zLCB0aGlzLnRoQXJyLCB0aGlzLl9yZW5kZXJlcjIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2x1bW5zICYmICFjb2x1bW5zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1lbnUpIHtcbiAgICAgICAgICAgIG1lbnUuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcuZW1pdChjb2x1bW4pO1xuICAgIH1cbiAgICBvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc29ydERlc2NlbmRpbmcuZW1pdChjb2x1bW4pO1xuICAgIH1cbiAgICBvbkZpbHRlcihtZW51KTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51KSB7XG4gICAgICAgICAgICBtZW51LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXIuZW1pdCgpO1xuICAgIH1cbiAgICBvbkZpdFRvQ29udGVudChjb2x1bW4sIGk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgPSB0aGlzLnRoQXJyW2ldO1xuICAgICAgICB0aGlzLmZpdFRvQ29udGVudC5lbWl0KHsgY29sdW1uLCB0aERvbSB9KTtcbiAgICB9XG4gICAgb25SZXNldENvbHVtbnNTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldEdyaWRTZXR0aW5ncy5lbWl0KCk7XG4gICAgfVxuICAgIG9uQ29sdW1uV2lkdGhDaGFuZ2luZyhpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4sIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVIZWFkZXIgPSB0cnVlO1xuICAgICAgICBjb2x1bW4uV2lkdGggPSB3aWR0aDtcbiAgICAgICAgY29uc3QgdGhMaXN0ID0gdGhpcy50aEFycjtcblxuICAgICAgICBpZiAoaW5kZXggPCB0aExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9PT0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RUaCA9IHRoTGlzdFt0aExpc3QubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUobGFzdFRoLCAnd2lkdGgnLCBgJHtsYXN0VGgub2Zmc2V0V2lkdGh9cHhgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbHVtblJlc2l6aW5nLmVtaXQoeyBjb2x1bW4sIHdpZHRoIH0pO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2luZyBudW1iZXI6Jywgd2lkdGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbldpZHRoQ2hhbmdlKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnMuZmluZCgoYykgPT4gYy5OYW1lID09PSBjb2x1bW4uTmFtZSk7XG4gICAgICAgIGlmICghY29sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2l0aDIgPSBNYXRoLnJvdW5kKGNvbHVtbi5XaWR0aCk7XG4gICAgICAgIGNvbC5XaWR0aCA9IHdpdGgyO1xuICAgICAgICBjb25zdCB0aExpc3QgPSB0aGlzLnRoQXJyO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjLCBpKSA9PiB7XG4gICAgICAgICAgICBjLldpZHRoID0gdGhMaXN0W2ldLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuY29sdW1ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoTGlzdFtpXSwgJ3dpZHRoJywgYCR7Yy5XaWR0aH1weGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoTGlzdFt0aExpc3QubGVuZ3RoIC0gMV0sICd3aWR0aCcsICcxMDAlJyk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplLmVtaXQodGhpcy5jb2x1bW5zLm1hcCgoYywgaSkgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCwgdGhEb206IHRoTGlzdFtpXSB9KSkpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2UnKTtcbiAgICB9XG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgcHVibGljIFJlZnJlc2hUYWJsZVRoV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHNldFRhYmxlVGhXaWR0aCh0aGlzLnRhYmxlSGVhZGVyTW9kZSwgdGhpcy5jb2x1bW5zLCB0aGlzLnRoQXJyLCB0aGlzLl9yZW5kZXJlcjIpO1xuICAgIH1cbiAgICBfdHJhY2tCeUNvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7Y29sdW1uLk5hbWV9JHtpbmRleH1gO1xuICAgIH1cbn1cbiIsIjx0aGVhZFxuICAgIGZkLXRhYmxlLWhlYWRlclxuICAgIFtjbGFzcy5pbmxpbmUtZWRpdF09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgW2NsYXNzLnNtYWxsQ29sdW1uc109XCJjb2x1bW5zU21hbGxlclRoYW5UYWJsZVdpZHRoXCJcbiAgICBbc3R5bGUucG9zaXRpb25dPVwic3RpY2t5ID8gJ3N0aWNreScgOiBudWxsXCJcbiAgICAjdGhlYWRSZWZcbj5cbiAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICBAaWYgKCFoaWRlSGVhZGVyKSB7IEBpZiAocm93SW5kaWNhdG9yKSB7XG4gICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3IgI3Jvd0luZGljYXRvcj48L3RoPlxuICAgICAgICB9IEBpZiAoc2hvd1Jvd051bWJlcikge1xuICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBzdHlsZT1cIndpZHRoOiA0MHB4OyBtYXgtd2lkdGg6IDQwcHhcIj48L3RoPlxuICAgICAgICB9IEBpZiAoaXNDaGVja0xpc3QpIHtcbiAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGw+XG4gICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBuYW1lPVwiYWxsQ2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImFsbENoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfSBAaWYgKCFpc0NoZWNrTGlzdCAmJiAhc2hvd1Jvd051bWJlcikge1xuICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBjbGFzcz1cInNpbmdsZS1zZWxlY3RcIj48L3RoPlxuICAgICAgICB9IEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBfdHJhY2tCeUNvbHVtbihpLCBjb2x1bW4pOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICA8dGhcbiAgICAgICAgICAgICN0aFJlZlxuICAgICAgICAgICAgdGFibGV0aFxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICBbbGFzdF09XCJsYXN0XCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgIFt0YWJsZUhlYWRlck1vZGVdPVwidGFibGVIZWFkZXJNb2RlXCJcbiAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgIFtjYXB0aW9uXT1cImNvbHVtbi5DYXB0aW9uIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cImNvbHVtbi5OYW1lXCJcbiAgICAgICAgICAgIFtpY29uXT1cImNvbHVtbi5JY29uXCJcbiAgICAgICAgICAgIFtjb2xDbGFzc109XCJjb2x1bW4uJENTU0NsYXNzTmFtZSArICcgY29sdW1uX18nICsgY29sdW1uLkNhcHRpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXlUeXBlXT1cImNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bVwiXG4gICAgICAgICAgICBbaXNJbWFnZU9ySWNvbl09XCIoY29sdW1uIHwgdGhJbWFnZU9ySWNvbikgPT09IHRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVSZXNpemVdPVwiZGlzYWJsZVJlc2l6ZSB8fCAodGFibGVIZWFkZXJNb2RlID09PSAyICYmIGxhc3QpIHx8IChjb2x1bW4gfCB0aEltYWdlT3JJY29uKSA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XT1cImRpc2FibGVIZWFkZXJDb250ZXh0TWVudVwiXG4gICAgICAgICAgICBbZGlzYWJsZVJlc3BvbnNpdmVdPVwiZGlzYWJsZVJlc3BvbnNpdmVcIlxuICAgICAgICAgICAgKHNvcnRBc2NlbmRpbmcpPVwic29ydEFzY2VuZGluZy5lbWl0KGNvbHVtbilcIlxuICAgICAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cInNvcnREZXNjZW5kaW5nLmVtaXQoY29sdW1uKVwiXG4gICAgICAgICAgICAoZmlsdGVyKT1cImZpbHRlci5lbWl0KGNvbHVtbilcIlxuICAgICAgICAgICAgKHJlc2V0R3JpZFNldHRpbmdzKT1cInJlc2V0R3JpZFNldHRpbmdzLmVtaXQoKVwiXG4gICAgICAgICAgICAod2lkdGhDaGFuZ2UpPVwib25Db2x1bW5XaWR0aENoYW5nZShjb2x1bW4pXCJcbiAgICAgICAgICAgICh3aWR0aENoYW5naW5nKT1cIm9uQ29sdW1uV2lkdGhDaGFuZ2luZyhpLCBjb2x1bW4sICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYoIWRpc2FibGVIZWFkZXJDb250ZXh0TWVudSl7XG4gICAgICAgICAgICA8ZmQtcG9wb3ZlciAjbWVudT5cbiAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBmZC1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWFzY2VuZGluZ1wiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAoJ1NvcnQnIHwgYmJiVHJhbnNsYXRlKSArICcgJyB9fSB7eyAnQXNjZW5kaW5nJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSlcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWRlc2NlbmRpbmdcIiBmZC1saXN0LWljb24+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgKCdTb3J0JyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX0ge3sgJ0Rlc2NlbmRpbmcnIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uRml0VG9Db250ZW50KGNvbHVtbiwgaSlcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZmQtbGlzdC1pY29uPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0ZpdCBDb2x1bW4gVG8gQ29udGVudCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwiZml0VG9Db250YWluZXIuZW1pdCgpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgKCdBbGwgQ29sdW1ucyBJbiBQYWdlJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJmcmVlQ29sdW1uU2l6ZS5lbWl0KClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZmQtbGlzdC1pY29uPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0ZyZWUgQ29sdW1ucyBTaXplJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblJlc2V0Q29sdW1uc1NldHRpbmdzKClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJyZXNldFwiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ0dyaWRTZXR0aW5nQmFzZScgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgICAgIH0gQGVsc2V7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3RoPlxuICAgICAgICB9IEBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDAgJiYgIWlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgIDx0aFxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtaGVhZGVyIGNvbC1jb250ZXh0LW1lbnVcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZpdENvbnRlbnRdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRleHRNZW51V2lkdGhcIlxuICAgICAgICA+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dEZXRhaWxzSW5Sb3cgKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cImNvbC1oZWFkZXIgY29sLWRldGFpbHNcIiBbc3R5bGUud2lkdGhdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnID8gJzQ0cHgnIDogJzEyMHB4J1wiIGZkLXRhYmxlLWNlbGw+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dWaWV3QnV0dG9uKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cImNvbC1oZWFkZXIgY29sLXZpZXdcIiBbc3R5bGUud2lkdGgucHhdPVwiMzYgKiAoYWN0aW9uTGlzdD8ubGVuZ3RoID8/IDApICsgOFwiIGZkLXRhYmxlLWNlbGw+PC90aD5cbiAgICAgICAgfSB9XG4gICAgPC90cj5cbjwvdGhlYWQ+XG48bmctdGVtcGxhdGUgI2hlYWRlclZhbHVlIGxldC1jb2x1bW4+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgQGlmICggKGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSA9PT0gJ0ltYWdlJyB8fCBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDQyKSAmJiBjb2x1bW4uSWNvbikge1xuICAgICAgICA8aW1nIFtzcmNdPVwiY29sdW1uLkljb25cIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgY29sdW1uLkNhcHRpb24gfCBiYmJUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGFibGUtaGVhZGVyL2JhcnNhLXRhYmxlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFFTixZQUFZLEVBQ1osVUFBVSxFQUVWLFNBQVMsRUFFVCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGFBQWEsRUFJYixvQkFBb0IsRUFDcEIsZUFBZSxFQUNsQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztBQVM5QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsYUFBYTtJQTZDeEQ7O09BRUc7SUFDSCxZQUFvQixJQUF1QixFQUFVLFVBQXFCO1FBQ3RFLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFXO1FBakNqRSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFjeEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDNUQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBK0MsQ0FBQztRQUNqRixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUE2RCxDQUFDO1FBQzdGLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMxQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENB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YztzQkFBdkIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgUmVuZGVyZXIyLFxuICAgIGluamVjdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIENvbHVtblJlc2l6ZWRBcmdzLFxuICAgIFRhYmxlSGVhZGVyV2lkdGhNb2RlLFxuICAgIHNldFRhYmxlVGhXaWR0aFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGFibGUtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZHJlbigndGhSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgdGhMaXN0OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxhbnk+PjtcbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHRoZWFkUmVmOiBFbGVtZW50UmVmO1xuICAgIEBJbnB1dCgpIGFsbENoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNDaGVja0xpc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdO1xuICAgIEBJbnB1dCgpIGZpdFdpZHRoOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51SXRlbXM6IGFueVtdO1xuICAgIEBJbnB1dCgpIGNvbnRleHRNZW51V2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBzaG93Vmlld0J1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoYXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZUhlYWRlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93RGV0YWlsc0luUm93ID0gZmFsc2U7XG4gICAgQElucHV0KCkgdmlld1NldHRpbmc6IFVpVGFibGVWaWV3U2V0dGluZztcbiAgICBASW5wdXQoKSB0YWJsZVdpZHRoOiBudW1iZXI7XG4gICAgQElucHV0KCkgcmVzaXplZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzcG9uc2l2ZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhY3Rpb25MaXN0OiBhbnlbXTtcbiAgICBASW5wdXQoKSByb3dJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHN0aWNreTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzaG93Um93TnVtYmVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRpc2FibGVSZXNpemU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGlzYWJsZUhlYWRlckNvbnRleHRNZW51OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSB0YWJsZUhlYWRlck1vZGU6IFRhYmxlSGVhZGVyV2lkdGhNb2RlO1xuICAgIEBPdXRwdXQoKSBhbGxDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uUmVzaXplID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxDb2x1bW5SZXNpemVkQXJncz4+KCk7XG4gICAgQE91dHB1dCgpIGNvbHVtblJlc2l6aW5nID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9PigpO1xuICAgIEBPdXRwdXQoKSBmaXRUb0NvbnRlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfT4oKTtcbiAgICBAT3V0cHV0KCkgZml0VG9Db250YWluZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGZyZWVDb2x1bW5TaXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0QXNjZW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNvcnREZXNjZW5kaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0Vmlld0NvbHVtbj4oKTtcbiAgICBAT3V0cHV0KCkgcmVzZXRHcmlkU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGhlYWRlclJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG4gICAgY29sdW1uc1NtYWxsZXJUaGFuVGFibGVXaWR0aDogYm9vbGVhbjtcblxuICAgIHN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgICByZXNpemVIZWFkZXIgPSBmYWxzZTtcbiAgICBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIGdldCB0aEFycigpOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhMaXN0LnRvQXJyYXkoKS5tYXAoKGMpID0+IGMubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmhlYWRlclJlbmRlci5lbWl0KHRoaXMudGhlYWRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIC8vIHRoaXMuX3ByZXBhcmVDb2x1bW5zV2lkdGgodGhpcy50YWJsZVdpZHRoLCB0aGlzLmNvbHVtbnMsIHRydWUpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IHRhYmxlSGVhZGVyTW9kZSwgY29sdW1ucyB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKHRhYmxlSGVhZGVyTW9kZSAmJiAhdGFibGVIZWFkZXJNb2RlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBzZXRUYWJsZVRoV2lkdGgodGFibGVIZWFkZXJNb2RlLmN1cnJlbnRWYWx1ZSwgdGhpcy5jb2x1bW5zLCB0aGlzLnRoQXJyLCB0aGlzLl9yZW5kZXJlcjIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2x1bW5zICYmICFjb2x1bW5zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1lbnUpIHtcbiAgICAgICAgICAgIG1lbnUuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNvcnRBc2NlbmRpbmcuZW1pdChjb2x1bW4pO1xuICAgIH1cbiAgICBvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSk6IHZvaWQge1xuICAgICAgICBpZiAobWVudSkge1xuICAgICAgICAgICAgbWVudS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc29ydERlc2NlbmRpbmcuZW1pdChjb2x1bW4pO1xuICAgIH1cbiAgICBvbkZpbHRlcihtZW51KTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51KSB7XG4gICAgICAgICAgICBtZW51LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXIuZW1pdCgpO1xuICAgIH1cbiAgICBvbkZpdFRvQ29udGVudChjb2x1bW4sIGk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgPSB0aGlzLnRoQXJyW2ldO1xuICAgICAgICB0aGlzLmZpdFRvQ29udGVudC5lbWl0KHsgY29sdW1uLCB0aERvbSB9KTtcbiAgICB9XG4gICAgb25SZXNldENvbHVtbnNTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldEdyaWRTZXR0aW5ncy5lbWl0KCk7XG4gICAgfVxuICAgIG9uQ29sdW1uV2lkdGhDaGFuZ2luZyhpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4sIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVIZWFkZXIgPSB0cnVlO1xuICAgICAgICBjb2x1bW4uV2lkdGggPSB3aWR0aDtcbiAgICAgICAgY29uc3QgdGhMaXN0ID0gdGhpcy50aEFycjtcblxuICAgICAgICBpZiAoaW5kZXggPCB0aExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9PT0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RUaCA9IHRoTGlzdFt0aExpc3QubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUobGFzdFRoLCAnd2lkdGgnLCBgJHtsYXN0VGgub2Zmc2V0V2lkdGh9cHhgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbHVtblJlc2l6aW5nLmVtaXQoeyBjb2x1bW4sIHdpZHRoIH0pO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2luZyBudW1iZXI6Jywgd2lkdGgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbldpZHRoQ2hhbmdlKGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnMuZmluZCgoYykgPT4gYy5OYW1lID09PSBjb2x1bW4uTmFtZSk7XG4gICAgICAgIGlmICghY29sKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2l0aDIgPSBNYXRoLnJvdW5kKGNvbHVtbi5XaWR0aCk7XG4gICAgICAgIGNvbC5XaWR0aCA9IHdpdGgyO1xuICAgICAgICBjb25zdCB0aExpc3QgPSB0aGlzLnRoQXJyO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjLCBpKSA9PiB7XG4gICAgICAgICAgICBjLldpZHRoID0gdGhMaXN0W2ldLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuY29sdW1ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoTGlzdFtpXSwgJ3dpZHRoJywgYCR7Yy5XaWR0aH1weGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoTGlzdFt0aExpc3QubGVuZ3RoIC0gMV0sICd3aWR0aCcsICcxMDAlJyk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplLmVtaXQodGhpcy5jb2x1bW5zLm1hcCgoYywgaSkgPT4gKHsgbmFtZTogYy5OYW1lLCB3aWR0aDogYy5XaWR0aCwgdGhEb206IHRoTGlzdFtpXSB9KSkpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY29sdW1uV2lkdGhDaGFuZ2UnKTtcbiAgICB9XG4gICAgb25BbGxDaGVja2JveChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsQ2hlY2tib3guZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgcHVibGljIFJlZnJlc2hUYWJsZVRoV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHNldFRhYmxlVGhXaWR0aCh0aGlzLnRhYmxlSGVhZGVyTW9kZSwgdGhpcy5jb2x1bW5zLCB0aGlzLnRoQXJyLCB0aGlzLl9yZW5kZXJlcjIpO1xuICAgIH1cbiAgICBfdHJhY2tCeUNvbHVtbihpbmRleDogbnVtYmVyLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7Y29sdW1uLk5hbWV9JHtpbmRleH1gO1xuICAgIH1cbn1cbiIsIjx0aGVhZFxuICAgIGZkLXRhYmxlLWhlYWRlclxuICAgIFtjbGFzcy5pbmxpbmUtZWRpdF09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgW2NsYXNzLnNtYWxsQ29sdW1uc109XCJjb2x1bW5zU21hbGxlclRoYW5UYWJsZVdpZHRoXCJcbiAgICBbc3R5bGUucG9zaXRpb25dPVwic3RpY2t5ID8gJ3N0aWNreScgOiBudWxsXCJcbiAgICAjdGhlYWRSZWZcbj5cbiAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICBAaWYgKCFoaWRlSGVhZGVyKSB7IEBpZiAocm93SW5kaWNhdG9yKSB7XG4gICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIGZkLXRhYmxlLXN0YXR1cy1pbmRpY2F0b3IgI3Jvd0luZGljYXRvcj48L3RoPlxuICAgICAgICB9IEBpZiAoc2hvd1Jvd051bWJlcikge1xuICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBzdHlsZT1cIndpZHRoOiA0MHB4OyBtYXgtd2lkdGg6IDQwcHhcIj48L3RoPlxuICAgICAgICB9IEBpZiAoaXNDaGVja0xpc3QpIHtcbiAgICAgICAgPHRoIGZkLXRhYmxlLWNlbGw+XG4gICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBuYW1lPVwiYWxsQ2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImFsbENoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgfSBAaWYgKCFpc0NoZWNrTGlzdCAmJiAhc2hvd1Jvd051bWJlcikge1xuICAgICAgICA8dGggZmQtdGFibGUtY2VsbCBjbGFzcz1cInNpbmdsZS1zZWxlY3RcIj48L3RoPlxuICAgICAgICB9IEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBfdHJhY2tCeUNvbHVtbihpLCBjb2x1bW4pOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICA8dGhcbiAgICAgICAgICAgICN0aFJlZlxuICAgICAgICAgICAgdGFibGV0aFxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICBbbGFzdF09XCJsYXN0XCJcbiAgICAgICAgICAgIFtjb2x1bW5zTGVuZ3RoXT1cImNvbHVtbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgIFt0YWJsZUhlYWRlck1vZGVdPVwidGFibGVIZWFkZXJNb2RlXCJcbiAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgIFtjYXB0aW9uXT1cImNvbHVtbi5DYXB0aW9uIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cImNvbHVtbi5OYW1lXCJcbiAgICAgICAgICAgIFtpY29uXT1cImNvbHVtbi5JY29uXCJcbiAgICAgICAgICAgIFtjb2xDbGFzc109XCJjb2x1bW4uJENTU0NsYXNzTmFtZSArICcgY29sdW1uX18nICsgY29sdW1uLkNhcHRpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXlUeXBlXT1cImNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bVwiXG4gICAgICAgICAgICBbaXNJbWFnZU9ySWNvbl09XCIoY29sdW1uIHwgdGhJbWFnZU9ySWNvbikgPT09IHRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVSZXNpemVdPVwiZGlzYWJsZVJlc2l6ZSB8fCAodGFibGVIZWFkZXJNb2RlID09PSAyICYmIGxhc3QpIHx8IChjb2x1bW4gfCB0aEltYWdlT3JJY29uKSA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XT1cImRpc2FibGVIZWFkZXJDb250ZXh0TWVudVwiXG4gICAgICAgICAgICBbZGlzYWJsZVJlc3BvbnNpdmVdPVwiZGlzYWJsZVJlc3BvbnNpdmVcIlxuICAgICAgICAgICAgKHNvcnRBc2NlbmRpbmcpPVwic29ydEFzY2VuZGluZy5lbWl0KGNvbHVtbilcIlxuICAgICAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cInNvcnREZXNjZW5kaW5nLmVtaXQoY29sdW1uKVwiXG4gICAgICAgICAgICAoZmlsdGVyKT1cImZpbHRlci5lbWl0KGNvbHVtbilcIlxuICAgICAgICAgICAgKHJlc2V0R3JpZFNldHRpbmdzKT1cInJlc2V0R3JpZFNldHRpbmdzLmVtaXQoKVwiXG4gICAgICAgICAgICAod2lkdGhDaGFuZ2UpPVwib25Db2x1bW5XaWR0aENoYW5nZShjb2x1bW4pXCJcbiAgICAgICAgICAgICh3aWR0aENoYW5naW5nKT1cIm9uQ29sdW1uV2lkdGhDaGFuZ2luZyhpLCBjb2x1bW4sICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYoIWRpc2FibGVIZWFkZXJDb250ZXh0TWVudSl7XG4gICAgICAgICAgICA8ZmQtcG9wb3ZlciAjbWVudT5cbiAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBmZC1saXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uU29ydEFzY2VuZGluZyhjb2x1bW4sIG1lbnUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWFzY2VuZGluZ1wiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAoJ1NvcnQnIHwgYmJiVHJhbnNsYXRlKSArICcgJyB9fSB7eyAnQXNjZW5kaW5nJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblNvcnREZXNjZW5kaW5nKGNvbHVtbiwgbWVudSlcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0LWRlc2NlbmRpbmdcIiBmZC1saXN0LWljb24+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgKCdTb3J0JyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX0ge3sgJ0Rlc2NlbmRpbmcnIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uRml0VG9Db250ZW50KGNvbHVtbiwgaSlcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZmQtbGlzdC1pY29uPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0ZpdCBDb2x1bW4gVG8gQ29udGVudCcgfCBiYmJUcmFuc2xhdGUpICsgJyAnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwiZml0VG9Db250YWluZXIuZW1pdCgpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgKCdBbGwgQ29sdW1ucyBJbiBQYWdlJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJmcmVlQ29sdW1uU2l6ZS5lbWl0KClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZmQtbGlzdC1pY29uPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAoJ0ZyZWUgQ29sdW1ucyBTaXplJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIChjbGljayk9XCJvblJlc2V0Q29sdW1uc1NldHRpbmdzKClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJyZXNldFwiIGZkLWxpc3QtaWNvbj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ0dyaWRTZXR0aW5nQmFzZScgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgICAgIH0gQGVsc2V7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3RoPlxuICAgICAgICB9IEBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiBjb250ZXh0TWVudUl0ZW1zLmxlbmd0aCA+IDAgJiYgIWlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgIDx0aFxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtaGVhZGVyIGNvbC1jb250ZXh0LW1lbnVcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgW2ZpdENvbnRlbnRdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRleHRNZW51V2lkdGhcIlxuICAgICAgICA+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dEZXRhaWxzSW5Sb3cgJiYgIWlubGluZUVkaXRNb2RlKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cImNvbC1oZWFkZXIgY29sLWRldGFpbHNcIiBbc3R5bGUud2lkdGhdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnID8gJzQ0cHgnIDogJzEyMHB4J1wiIGZkLXRhYmxlLWNlbGw+PC90aD5cbiAgICAgICAgfSBAaWYgKHNob3dWaWV3QnV0dG9uKSB7XG4gICAgICAgIDx0aCBjbGFzcz1cImNvbC1oZWFkZXIgY29sLXZpZXdcIiBbc3R5bGUud2lkdGgucHhdPVwiMzYgKiAoYWN0aW9uTGlzdD8ubGVuZ3RoID8/IDApICsgOFwiIGZkLXRhYmxlLWNlbGw+PC90aD5cbiAgICAgICAgfSB9XG4gICAgPC90cj5cbjwvdGhlYWQ+XG48bmctdGVtcGxhdGUgI2hlYWRlclZhbHVlIGxldC1jb2x1bW4+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgQGlmICggKGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSA9PT0gJ0ltYWdlJyB8fCBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDQyKSAmJiBjb2x1bW4uSWNvbikge1xuICAgICAgICA8aW1nIFtzcmNdPVwiY29sdW1uLkljb25cIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgY29sdW1uLkNhcHRpb24gfCBiYmJUcmFuc2xhdGUgfX1cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|