@bcgov/nr-ngx-component-lib 0.0.56 → 0.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/components/icon/icon.component.d.ts +2 -0
  2. package/components/list-attachments/list-attachments.component.d.ts +1 -1
  3. package/components/list-event-history/list-event-history.component.d.ts +1 -1
  4. package/components/list-select/list-select.component.d.ts +1 -1
  5. package/components/resource-schedule/resource-schedule.component.d.ts +33 -0
  6. package/components/schedule/schedule.component.d.ts +83 -0
  7. package/components/tabs/tab/tab.component.d.ts +1 -1
  8. package/directives/pagination.base.d.ts +47 -0
  9. package/directives/row-list.base.d.ts +5 -36
  10. package/esm2022/components/icon/icon.component.mjs +12 -1
  11. package/esm2022/components/list-attachments/list-attachments.component.mjs +2 -2
  12. package/esm2022/components/list-event-history/list-event-history.component.mjs +2 -2
  13. package/esm2022/components/list-select/list-select.component.mjs +2 -2
  14. package/esm2022/components/resource-schedule/resource-schedule.component.mjs +47 -0
  15. package/esm2022/components/schedule/schedule.component.mjs +168 -0
  16. package/esm2022/components/tabs/tab/tab.component.mjs +1 -1
  17. package/esm2022/directives/pagination.base.mjs +88 -0
  18. package/esm2022/directives/row-list.base.mjs +22 -75
  19. package/esm2022/nr-ngx-component-lib.module.mjs +30 -8
  20. package/esm2022/public-api.mjs +4 -1
  21. package/fesm2022/bcgov-nr-ngx-component-lib.mjs +332 -71
  22. package/fesm2022/bcgov-nr-ngx-component-lib.mjs.map +1 -1
  23. package/nr-ngx-component-lib.module.d.ts +27 -25
  24. package/package.json +1 -1
  25. package/public-api.d.ts +3 -0
  26. package/styles/global.scss +19 -0
@@ -0,0 +1,47 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, numberAttribute, ViewChild } from "@angular/core";
2
+ import { ScheduleComponent } from "../schedule/schedule.component";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../schedule/schedule.component";
6
+ export class ResourceScheduleRowHeadingDirective {
7
+ constructor(template) {
8
+ this.template = template;
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleRowHeadingDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ResourceScheduleRowHeadingDirective, selector: "[nrclResourceScheduleRowHeading]", ngImport: i0 }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleRowHeadingDirective, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: '[nrclResourceScheduleRowHeading]'
17
+ }]
18
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
19
+ export class ResourceScheduleComponent {
20
+ constructor() {
21
+ this.weekStart = 0;
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: ResourceScheduleComponent, selector: "nrcl-resource-schedule", inputs: { provider: "provider", startDate: "startDate", weekStart: "weekStart", dayCount: ["dayCount", "dayCount", numberAttribute], menu: "menu" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ResourceScheduleRowHeadingDirective, descendants: true }], viewQueries: [{ propertyName: "scheduleComponent", first: true, predicate: ScheduleComponent, descendants: true }], ngImport: i0, template: "<nrcl-schedule #schedule\n [provider]=\"provider\"\n [startDate]=\"startDate\"\n [weekStart]=\"weekStart\"\n [dayCount]=\"dayCount\"\n [menu]=\"menu\"\n>\n <ng-content></ng-content>\n\n <ng-template nrclScheduleRowHeading let-item>\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\" \n ></ng-container>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"rostered\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"out-of-service\" let-data>\n <h1>Out of Svc</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-duty-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-standby-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-off-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-regular-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-duty-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-standby-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-off-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-regular-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n</nrcl-schedule>\n\n", styles: ["::ng-deep :root{--nrcl-resource-schedule-item-foregroud-color: black;--nrcl-resource-schedule-item-text-shadow: 1px 0px 5px #ffffffa0, -1px 0px 5px #ffffffa0, 0px 1px 5px #ffffffa0, 0px -1px 5px #ffffffa0;--nrcl-resource-schedule-item-regular-day-background-color: #0AA647;--nrcl-resource-schedule-item-off-day-background-color: #d4d2d2;--nrcl-resource-schedule-item-duty-day-background-color: #2f9fe0;--nrcl-resource-schedule-item-standby-day-background-color: #f6cf43;--nrcl-resource-schedule-item-out-of-service-background-color: #f55353;--nrcl-resource-schedule-item-rostered-background-color: #ba9ef7}:host{height:100%;display:block}.nrcl-schedule ::ng-deep .inner.item{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;color:var(--nrcl-resource-schedule-item-foregroud-color)}.nrcl-schedule ::ng-deep .inner.item h1,.nrcl-schedule ::ng-deep .inner.item h2,.nrcl-schedule ::ng-deep .inner.item h3{padding:0;margin:0;font-weight:200}.nrcl-schedule ::ng-deep .inner.item h1{font-size:15px;line-height:15px;text-align:center}.nrcl-schedule ::ng-deep .inner.item h2{flex-grow:1;font-size:14px;line-height:14px;text-align:center;display:flex;justify-content:center;align-items:center}.nrcl-schedule ::ng-deep .inner.item h3{font-size:14px;line-height:14px;text-align:center}.nrcl-schedule ::ng-deep .inner.item.item-out-of-service{background-color:var(--nrcl-resource-schedule-item-out-of-service-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-rostered{background-color:var(--nrcl-resource-schedule-item-rostered-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ScheduleComponent, selector: "nrcl-schedule", inputs: ["provider", "startDate", "weekStart", "dayCount", "menu"] }, { kind: "directive", type: i2.ScheduleItemDirective, selector: "[nrclScheduleItem]", inputs: ["nrclScheduleItem"] }, { kind: "directive", type: i2.ScheduleRowHeadingDirective, selector: "[nrclScheduleRowHeading]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: "nrcl-resource-schedule", changeDetection: ChangeDetectionStrategy.OnPush, template: "<nrcl-schedule #schedule\n [provider]=\"provider\"\n [startDate]=\"startDate\"\n [weekStart]=\"weekStart\"\n [dayCount]=\"dayCount\"\n [menu]=\"menu\"\n>\n <ng-content></ng-content>\n\n <ng-template nrclScheduleRowHeading let-item>\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\" \n ></ng-container>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"rostered\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"out-of-service\" let-data>\n <h1>Out of Svc</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-duty-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-standby-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-off-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-regular-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-duty-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-standby-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-off-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-regular-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n</nrcl-schedule>\n\n", styles: ["::ng-deep :root{--nrcl-resource-schedule-item-foregroud-color: black;--nrcl-resource-schedule-item-text-shadow: 1px 0px 5px #ffffffa0, -1px 0px 5px #ffffffa0, 0px 1px 5px #ffffffa0, 0px -1px 5px #ffffffa0;--nrcl-resource-schedule-item-regular-day-background-color: #0AA647;--nrcl-resource-schedule-item-off-day-background-color: #d4d2d2;--nrcl-resource-schedule-item-duty-day-background-color: #2f9fe0;--nrcl-resource-schedule-item-standby-day-background-color: #f6cf43;--nrcl-resource-schedule-item-out-of-service-background-color: #f55353;--nrcl-resource-schedule-item-rostered-background-color: #ba9ef7}:host{height:100%;display:block}.nrcl-schedule ::ng-deep .inner.item{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;color:var(--nrcl-resource-schedule-item-foregroud-color)}.nrcl-schedule ::ng-deep .inner.item h1,.nrcl-schedule ::ng-deep .inner.item h2,.nrcl-schedule ::ng-deep .inner.item h3{padding:0;margin:0;font-weight:200}.nrcl-schedule ::ng-deep .inner.item h1{font-size:15px;line-height:15px;text-align:center}.nrcl-schedule ::ng-deep .inner.item h2{flex-grow:1;font-size:14px;line-height:14px;text-align:center;display:flex;justify-content:center;align-items:center}.nrcl-schedule ::ng-deep .inner.item h3{font-size:14px;line-height:14px;text-align:center}.nrcl-schedule ::ng-deep .inner.item.item-out-of-service{background-color:var(--nrcl-resource-schedule-item-out-of-service-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-rostered{background-color:var(--nrcl-resource-schedule-item-rostered-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}\n"] }]
29
+ }], propDecorators: { provider: [{
30
+ type: Input
31
+ }], startDate: [{
32
+ type: Input
33
+ }], weekStart: [{
34
+ type: Input
35
+ }], dayCount: [{
36
+ type: Input,
37
+ args: [{ transform: numberAttribute }]
38
+ }], menu: [{
39
+ type: Input
40
+ }], scheduleComponent: [{
41
+ type: ViewChild,
42
+ args: [ScheduleComponent]
43
+ }], headerTemplate: [{
44
+ type: ContentChild,
45
+ args: [ResourceScheduleRowHeadingDirective]
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utc2NoZWR1bGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvcmVzb3VyY2Utc2NoZWR1bGUvcmVzb3VyY2Utc2NoZWR1bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvcmVzb3VyY2Utc2NoZWR1bGUvcmVzb3VyY2Utc2NoZWR1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzSixPQUFPLEVBQUUsaUJBQWlCLEVBQWtELE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFLbkgsTUFBTSxPQUFPLG1DQUFtQztJQUM1QyxZQUNXLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ25DLENBQUM7K0dBSE0sbUNBQW1DO21HQUFuQyxtQ0FBbUM7OzRGQUFuQyxtQ0FBbUM7a0JBSC9DLFNBQVM7bUJBQUU7b0JBQ1IsUUFBUSxFQUFFLGtDQUFrQztpQkFDL0M7O0FBd0NELE1BQU0sT0FBTyx5QkFBeUI7SUFOdEM7UUFTYSxjQUFTLEdBQUcsQ0FBQyxDQUFBO0tBT3pCOytHQVZZLHlCQUF5QjttR0FBekIseUJBQXlCLHlKQUliLGVBQWUsdUZBS3RCLG1DQUFtQyxtR0FGckMsaUJBQWlCLGdEQ3JEakMsODFFQTZFQTs7NEZEL0JhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNtQyxRQUFRO3NCQUFoRCxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDN0IsSUFBSTtzQkFBWixLQUFLO2dCQUUwQixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUUsaUJBQWlCO2dCQUVzQixjQUFjO3NCQUFoRSxZQUFZO3VCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBJbnB1dCwgbnVtYmVyQXR0cmlidXRlLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdE1lbnVQYW5lbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQgeyBTY2hlZHVsZUNvbXBvbmVudCwgU2NoZWR1bGVQcm92aWRlciwgU2NoZWR1bGVSb3csIFNjaGVkdWxlUm93SXRlbSB9IGZyb20gXCIuLi9zY2hlZHVsZS9zY2hlZHVsZS5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSgge1xuICAgIHNlbGVjdG9yOiAnW25yY2xSZXNvdXJjZVNjaGVkdWxlUm93SGVhZGluZ10nXG59IClcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVNjaGVkdWxlUm93SGVhZGluZ0RpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PlxuICAgICl7fVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVNjaGVkdWxlSXRlbVR5cGVzID0gXG4gICAgJ3Jvc3RlcmVkJyB8XG4gICAgJ291dC1vZi1zZXJ2aWNlJyB8XG4gICAgJ2F2YWlsYWJsZS1kdXR5LWRheScgfFxuICAgICdhdmFpbGFibGUtc3RhbmRieS1kYXknIHxcbiAgICAnYXZhaWxhYmxlLW9mZi1kYXknIHxcbiAgICAnYXZhaWxhYmxlLXJlZ3VsYXItZGF5JyB8XG4gICAgJ2Fzc2lnbmVkLWR1dHktZGF5JyB8XG4gICAgJ2Fzc2lnbmVkLXN0YW5kYnktZGF5JyB8XG4gICAgJ2Fzc2lnbmVkLW9mZi1kYXknIHxcbiAgICAnYXNzaWduZWQtcmVndWxhci1kYXknIFxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVNjaGVkdWxlUm93SXRlbSA9IFNjaGVkdWxlUm93SXRlbSAmIHtcbiAgICBuYW1lOiBSZXNvdXJjZVNjaGVkdWxlSXRlbVR5cGVzLFxuICAgIGFsbG9jYXRpb25UeXBlPzogc3RyaW5nLFxuICAgIHNoaWZ0VHlwZT86IHN0cmluZyxcbiAgICBhc3NpZ25tZW50TmFtZT86IHN0cmluZyxcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VTY2hlZHVsZVJvdyA9IFNjaGVkdWxlUm93ICYge1xuICAgIGl0ZW1zOiAoIFByb21pc2U8UmVzb3VyY2VTY2hlZHVsZVJvd0l0ZW1bXT4gKVxufVxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVNjaGVkdWxlID0gUmVzb3VyY2VTY2hlZHVsZVJvd1tdXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5yY2wtcmVzb3VyY2Utc2NoZWR1bGVcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3Jlc291cmNlLXNjaGVkdWxlLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9yZXNvdXJjZS1zY2hlZHVsZS5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlc291cmNlU2NoZWR1bGVDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHByb3ZpZGVyPzogU2NoZWR1bGVQcm92aWRlclxuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZT86IHN0cmluZ1xuICAgIEBJbnB1dCgpIHdlZWtTdGFydCA9IDBcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSApIGRheUNvdW50PzogbnVtYmVyXG4gICAgQElucHV0KCkgbWVudT86IE1hdE1lbnVQYW5lbFxuXG4gICAgQFZpZXdDaGlsZCggU2NoZWR1bGVDb21wb25lbnQgKSBzY2hlZHVsZUNvbXBvbmVudD86IFNjaGVkdWxlQ29tcG9uZW50XG5cbiAgICBAQ29udGVudENoaWxkKFJlc291cmNlU2NoZWR1bGVSb3dIZWFkaW5nRGlyZWN0aXZlKSBoZWFkZXJUZW1wbGF0ZSE6IFJlc291cmNlU2NoZWR1bGVSb3dIZWFkaW5nRGlyZWN0aXZlXG59XG4iLCI8bnJjbC1zY2hlZHVsZSAjc2NoZWR1bGVcbiAgICBbcHJvdmlkZXJdPVwicHJvdmlkZXJcIlxuICAgIFtzdGFydERhdGVdPVwic3RhcnREYXRlXCJcbiAgICBbd2Vla1N0YXJ0XT1cIndlZWtTdGFydFwiXG4gICAgW2RheUNvdW50XT1cImRheUNvdW50XCJcbiAgICBbbWVudV09XCJtZW51XCJcbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctdGVtcGxhdGUgbnJjbFNjaGVkdWxlUm93SGVhZGluZyBsZXQtaXRlbT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlLnRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCIgICAgICAgICAgICBcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbnJjbFNjaGVkdWxlSXRlbT1cInJvc3RlcmVkXCIgbGV0LWRhdGE+XG4gICAgICAgIDxoMT5BdmFpbGFibGU8L2gxPlxuICAgICAgICA8aDI+e3sgZGF0YS5hbGxvY2F0aW9uVHlwZSB9fTwvaDI+XG4gICAgICAgIDxoMz57eyBkYXRhLnNoaWZ0VHlwZSB9fTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBucmNsU2NoZWR1bGVJdGVtPVwib3V0LW9mLXNlcnZpY2VcIiBsZXQtZGF0YT5cbiAgICAgICAgPGgxPk91dCBvZiBTdmM8L2gxPlxuICAgICAgICA8aDI+e3sgZGF0YS5hbGxvY2F0aW9uVHlwZSB9fTwvaDI+XG4gICAgICAgIDxoMz57eyBkYXRhLnNoaWZ0VHlwZSB9fTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBucmNsU2NoZWR1bGVJdGVtPVwiYXZhaWxhYmxlLWR1dHktZGF5XCIgbGV0LWRhdGE+XG4gICAgICAgIDxoMT5BdmFpbGFibGU8L2gxPlxuICAgICAgICA8aDI+e3sgZGF0YS5hbGxvY2F0aW9uVHlwZSB9fTwvaDI+XG4gICAgICAgIDxoMz5EdXR5IERheTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBucmNsU2NoZWR1bGVJdGVtPVwiYXZhaWxhYmxlLXN0YW5kYnktZGF5XCIgbGV0LWRhdGE+XG4gICAgICAgIDxoMT5BdmFpbGFibGU8L2gxPlxuICAgICAgICA8aDI+e3sgZGF0YS5hbGxvY2F0aW9uVHlwZSB9fTwvaDI+XG4gICAgICAgIDxoMz5TdGFuZGJ5IERheTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBucmNsU2NoZWR1bGVJdGVtPVwiYXZhaWxhYmxlLW9mZi1kYXlcIiBsZXQtZGF0YT5cbiAgICAgICAgPGgxPkF2YWlsYWJsZTwvaDE+XG4gICAgICAgIDxoMj57eyBkYXRhLmFsbG9jYXRpb25UeXBlIH19PC9oMj5cbiAgICAgICAgPGgzPkRheSBPZmY8L2gzPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbnJjbFNjaGVkdWxlSXRlbT1cImF2YWlsYWJsZS1yZWd1bGFyLWRheVwiIGxldC1kYXRhPlxuICAgICAgICA8aDE+QXZhaWxhYmxlPC9oMT5cbiAgICAgICAgPGgyPnt7IGRhdGEuYWxsb2NhdGlvblR5cGUgfX08L2gyPlxuICAgICAgICA8aDM+UmVndWxhciBEYXk8L2gzPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbnJjbFNjaGVkdWxlSXRlbT1cImFzc2lnbmVkLWR1dHktZGF5XCIgbGV0LWRhdGE+XG4gICAgICAgIDwhLS0gPGgxPjwvaDE+IC0tPlxuICAgICAgICA8aDI+e3sgZGF0YS5hc3NpZ25tZW50TmFtZSB9fTwvaDI+XG4gICAgICAgIDxoMz5EdXR5IERheTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBucmNsU2NoZWR1bGVJdGVtPVwiYXNzaWduZWQtc3RhbmRieS1kYXlcIiBsZXQtZGF0YT5cbiAgICAgICAgPCEtLSA8aDE+PC9oMT4gLS0+XG4gICAgICAgIDxoMj57eyBkYXRhLmFzc2lnbm1lbnROYW1lIH19PC9oMj5cbiAgICAgICAgPGgzPlN0YW5kYnkgRGF5PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG5yY2xTY2hlZHVsZUl0ZW09XCJhc3NpZ25lZC1vZmYtZGF5XCIgbGV0LWRhdGE+XG4gICAgICAgIDwhLS0gPGgxPjwvaDE+IC0tPlxuICAgICAgICA8aDI+e3sgZGF0YS5hc3NpZ25tZW50TmFtZSB9fTwvaDI+XG4gICAgICAgIDxoMz5EYXkgT2ZmPC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlIG5yY2xTY2hlZHVsZUl0ZW09XCJhc3NpZ25lZC1yZWd1bGFyLWRheVwiIGxldC1kYXRhPlxuICAgICAgICA8IS0tIDxoMT48L2gxPiAtLT5cbiAgICAgICAgPGgyPnt7IGRhdGEuYXNzaWdubWVudE5hbWUgfX08L2gyPlxuICAgICAgICA8aDM+UmVndWxhciBEYXk8L2gzPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25yY2wtc2NoZWR1bGU+XG5cbiJdfQ==
@@ -0,0 +1,168 @@
1
+ import { Component, ContentChild, ContentChildren, Directive, Input, numberAttribute } from '@angular/core';
2
+ import moment from 'moment';
3
+ import { RowListBase } from '../../directives/row-list.base';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/material/menu";
7
+ import * as i3 from "@angular/material/core";
8
+ import * as i4 from "@angular/material/tooltip";
9
+ import * as i5 from "../gap/gap.component";
10
+ import * as i6 from "../row-list-pagination/row-list-pagination.component";
11
+ import * as i7 from "../icon/icon.component";
12
+ import * as i8 from "ngx-pagination";
13
+ export class ScheduleRowHeadingDirective {
14
+ constructor(template) {
15
+ this.template = template;
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleRowHeadingDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScheduleRowHeadingDirective, selector: "[nrclScheduleRowHeading]", ngImport: i0 }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleRowHeadingDirective, decorators: [{
21
+ type: Directive,
22
+ args: [{
23
+ selector: '[nrclScheduleRowHeading]'
24
+ }]
25
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
26
+ // ================================================================================
27
+ export class ScheduleItemDirective {
28
+ constructor(template) {
29
+ this.template = template;
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
32
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScheduleItemDirective, selector: "[nrclScheduleItem]", inputs: { name: ["nrclScheduleItem", "name"] }, ngImport: i0 }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleItemDirective, decorators: [{
35
+ type: Directive,
36
+ args: [{
37
+ selector: '[nrclScheduleItem]'
38
+ }]
39
+ }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { name: [{
40
+ type: Input,
41
+ args: ['nrclScheduleItem']
42
+ }] } });
43
+ // --------------------------------------------------------------------------------
44
+ export class ScheduleComponent extends RowListBase {
45
+ constructor() {
46
+ super(...arguments);
47
+ this.weekStart = 0;
48
+ this._days = [];
49
+ this._weeks = [];
50
+ this._templates = [];
51
+ }
52
+ ngOnChanges(changes) {
53
+ this.refreshRowList();
54
+ }
55
+ ngAfterViewInit() {
56
+ setTimeout(() => {
57
+ super.ngAfterViewInit();
58
+ });
59
+ }
60
+ fetchRowListPage() {
61
+ if (!this.provider?.fetchSchedule)
62
+ throw Error('ScheduleComponent.provider.fetchSchedule not set');
63
+ return this.provider.fetchSchedule({
64
+ pageNumber: this.pageNumber,
65
+ pageSize: this.pageSize,
66
+ sortActive: this.sortActive,
67
+ sortDirection: this.sortDirection,
68
+ });
69
+ }
70
+ parseRows(res) {
71
+ if (!this.provider?.parseSchedule)
72
+ throw Error('ResourceScheduleComponent.provider.parseSchedule not set');
73
+ let rows = this.provider.parseSchedule(res);
74
+ return this.makeRows(rows);
75
+ }
76
+ getInitialPageState() {
77
+ if (!this.provider?.getInitialPageState)
78
+ throw Error('ResourceScheduleComponent.provider.getInitialPageState not set');
79
+ return this.provider.getInitialPageState();
80
+ }
81
+ onSamePageFilterChange(ev) {
82
+ this.filter = ev;
83
+ }
84
+ makeRows(schedule) {
85
+ let start = moment(this.startDate);
86
+ let today = moment();
87
+ this._weeks = Array.from({ length: this.dayCount }).reduce((a, x, i) => {
88
+ let m = start.clone().add(i, 'day');
89
+ let date = m.format('MMM D');
90
+ let day = m.day();
91
+ if (a.length == 0)
92
+ return a.concat({
93
+ start: date,
94
+ end: date,
95
+ span: 1
96
+ });
97
+ let prev = a[a.length - 1];
98
+ if (day == this.weekStart)
99
+ return a.concat({
100
+ start: date,
101
+ end: date,
102
+ span: 1
103
+ });
104
+ prev.end = date;
105
+ prev.span += 1;
106
+ return a;
107
+ }, []);
108
+ this._days = Array.from({ length: this.dayCount }).map((x, i) => {
109
+ let d = start.clone().add(i, 'day');
110
+ return {
111
+ dayName: d.format('ddd'),
112
+ monthDay: d.date(),
113
+ date: d.format('Y-MM-DD'),
114
+ isFirst: d.date() == 1,
115
+ isWeekend: d.day() == 0 || d.day() == 6,
116
+ isToday: d.isSame(today, 'day'),
117
+ };
118
+ });
119
+ this._templates = Array.from({ length: schedule.length });
120
+ return schedule.map((row, i) => {
121
+ this._templates[i] = Array.from({ length: this.dayCount });
122
+ return {
123
+ id: row.id ?? String(i),
124
+ heading: row.heading,
125
+ items: row.items
126
+ .then(rowItems => {
127
+ return Array.from({ length: this.dayCount }).map((x, j) => {
128
+ let rowItem = rowItems[j];
129
+ if (rowItem == null)
130
+ return {
131
+ id: String(j),
132
+ name: 'empty'
133
+ };
134
+ this._templates[i][j] = this.itemTemplates?.find(i => i.name == rowItem?.name)?.template;
135
+ return rowItem;
136
+ });
137
+ })
138
+ };
139
+ }) || [];
140
+ }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScheduleComponent, selector: "nrcl-schedule", inputs: { provider: "provider", startDate: "startDate", weekStart: ["weekStart", "weekStart", numberAttribute], dayCount: ["dayCount", "dayCount", numberAttribute], menu: "menu" }, host: { properties: { "style.--nrcl-schedule-day-count": "this.dayCount" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ScheduleRowHeadingDirective, descendants: true }, { propertyName: "itemTemplates", predicate: ScheduleItemDirective }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"schedule\">\n <div class=\"upper-left\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"row weeks\">\n @for ( week of _weeks; track $index ) {\n @if ( week.span == 1 ) {\n <div class=\"week\">\n {{ week.start }}\n </div>\n }\n @else {\n <div class=\"week\" [style.grid-column]=\"'span ' + week.span\">\n {{ week.start }} - {{ week.end }}\n </div>\n }\n }\n </div>\n\n <div class=\"row days\"> \n @for ( day of _days; track $index ) {\n <div class=\"day\"\n [class.weekend]=\"day.isWeekend\"\n [class.today]=\"day.isToday\"\n [class.first]=\"day.isFirst\"\n >\n <div class=\"day-name\">{{ day.dayName }}</div>\n <div class=\"date\">{{ day.monthDay }}</div>\n </div>\n }\n </div>\n\n @for ( row of rows | paginate: paginateState( 'nrcl-schedule' ); track row.id; let rowIndex = $index ) {\n <div class=\"row items\">\n <div class=\"outer heading\">\n <div class=\"inner heading\">\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate?.template\" \n [ngTemplateOutletContext]=\"{ $implicit: row.heading }\" \n ></ng-container>\n </div>\n </div> \n\n @if ( row.items | async; as rowItems ) {\n @for ( item of rowItems; track item.id; let colIndex = $index ) {\n <div class=\"outer item\"\n [class.menu-open]=\"itemMenu.menuOpen\"\n >\n <div class=\"inner item\" #itemMenu=\"matMenuTrigger\"\n [class]=\"'item-' + item.name\" \n matRipple\n [matMenuTriggerFor]=\"menu\"\n [matMenuTriggerData]=\"{ $implicit: { item: item, heading: row.heading } }\"\n [matTooltip]=\"item?.tooltip?.()\"\n matTooltipClass=\"nrcl-schedule-multiline\"\n [class.travel]=\"item?.travel\"\n >\n <ng-container \n [ngTemplateOutlet]=\"_templates[ rowIndex ][ colIndex ] || empty\" \n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n \n @let icons = item?.icons?.();\n @if ( icons && icons.length > 0 ) {\n <div class=\"icons\">\n @for ( icon of icons; track icon ) {\n <nrcl-icon small>{{ icon }}</nrcl-icon>\n } \n </div>\n }\n </div>\n </div>\n }\n }\n @else {\n @for ( day of _days; track day ) {\n <div class=\"item item-loading\"></div>\n }\n }\n </div>\n }\n</div>\n\n<nrcl-gap/>\n\n<nrcl-row-list-pagination\n paginationId=\"nrcl-schedule\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n></nrcl-row-list-pagination>\n\n<ng-template #empty>\n <div class=\"empty\">(empty)</div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-schedule-border-color: #c6c8cb;--nrcl-schedule-background-color: white;--nrcl-schedule-alternate-background-color: #f2f2f2;--nrcl-schedule-hover-background-color: #d7d7d7;--nrcl-schedule-row-weeks-height: 30px;--nrcl-schedule-row-weeks-font-size: 15px;--nrcl-schedule-row-weeks-font-weight: bold;--nrcl-schedule-row-weeks-foreground-color: black;--nrcl-schedule-row-days-height: 45px;--nrcl-schedule-row-days-font-size: 15px;--nrcl-schedule-row-days-font-weight: normal;--nrcl-schedule-row-days-foreground-color: black;--nrcl-schedule-row-days-weekend-background-color: #e0f8fc;--nrcl-schedule-row-days-today-background-color: #fcf8d9;--nrcl-schedule-row-schedule-height: 70px;--nrcl-schedule-heading-width: 300px;--nrcl-schedule-item-width: 100px}:host{display:flex;flex-direction:column;font-family:var(--nrcl-font-family);height:100%}:host .schedule{display:grid;grid-template-columns:var(--nrcl-schedule-heading-width) repeat(var(--nrcl-schedule-day-count),var(--nrcl-schedule-item-width));overflow:auto;height:100%;flex-grow:1}:host .schedule .upper-left{grid-row:1/span 2;grid-column:1;border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color);position:sticky;top:0;left:0;z-index:2;background:var(--nrcl-schedule-background-color)}:host .schedule .row{display:contents}:host .schedule .row.weeks>*{height:var(--nrcl-schedule-row-weeks-height)}:host .schedule .row.days>*{height:var(--nrcl-schedule-row-days-height)}:host .schedule .row .outer.heading,:host .schedule .row .day,:host .schedule .row .week{border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.heading{border-left:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.item:last-child{border-right:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row:last-child .outer.item{border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .week{border-top:1px solid var(--nrcl-schedule-border-color);display:flex;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-weeks-font-size);font-weight:var(--nrcl-schedule-row-weeks-font-weight);color:var(--nrcl-schedule-row-weeks-foreground-color);position:sticky;top:0;background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day{display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-days-font-size);font-weight:var(--nrcl-schedule-row-days-font-weight);color:var(--nrcl-schedule-row-days-foreground-color);position:sticky;top:calc(var(--nrcl-schedule-row-weeks-height) + 2px);background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day .day-name{font-size:13px}:host .schedule .row .day.weekend{background-color:var(--nrcl-schedule-row-days-weekend-background-color)}:host .schedule .row .day.today{background-color:var(--nrcl-schedule-row-days-today-background-color)}:host .schedule .row .day.first:after{content:\"\";position:absolute;top:0;left:0;bottom:0;border-left:2px solid black}:host .schedule .row.items .outer.item{padding:2px;box-sizing:border-box;height:var(--nrcl-schedule-row-schedule-height);display:flex;flex-direction:column;justify-content:stretch;align-items:stretch}:host .schedule .row.items .outer.item.menu-open,:host .schedule .row.items .outer.item:hover{background-color:#000;border-radius:6px}:host .schedule .row.items .outer.item .item{flex-grow:1;cursor:pointer;border-radius:4px;position:relative;padding:4px 4px 8px}:host .schedule .row.items .outer.item .item .icons{position:absolute;right:2px;bottom:2px;display:flex;flex-direction:column;gap:2px;background-color:#f1ebe4;border-radius:4px;padding:3px}:host .schedule .row.items .outer.item .item.travel{position:relative}:host .schedule .row.items .outer.item .item.travel:after{content:\"\";position:absolute;inset:0 0 2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAABAQMAAAD+YPzoAAAABlBMVEX///8AAABVwtN+AAAAAnRSTlP/AOW3MEoAAAAMSURBVHicY+BwEgAAALAAW97nJhUAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:calc(100% - 8px) 3px;background-position:bottom}:host .schedule .row.items .outer.item .item.travel:hover:after{filter:brightness(0)}:host .schedule .row.items .outer.heading{box-sizing:border-box;cursor:default;position:sticky;left:0;z-index:1;height:var(--nrcl-schedule-row-schedule-height)}:host .schedule .row.items .outer.heading .heading{flex-grow:1;cursor:default;height:100%}:host .schedule .row:nth-child(odd) .outer{background-color:var(--nrcl-schedule-background-color)}:host .schedule .row:nth-child(2n) .outer{background-color:var(--nrcl-schedule-alternate-background-color)}:host .schedule .row:hover .outer{background-color:var(--nrcl-schedule-hover-background-color)}.empty{height:100%;display:flex;justify-content:center;align-items:center;color:#aaa}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i6.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "component", type: i7.IconComponent, selector: "nrcl-icon", inputs: ["small", "large"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.PaginatePipe, name: "paginate" }] }); }
143
+ }
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleComponent, decorators: [{
145
+ type: Component,
146
+ args: [{ selector: 'nrcl-schedule', host: {
147
+ '[style.--nrcl-schedule-day-count]': 'this.dayCount'
148
+ }, template: "<div class=\"schedule\">\n <div class=\"upper-left\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"row weeks\">\n @for ( week of _weeks; track $index ) {\n @if ( week.span == 1 ) {\n <div class=\"week\">\n {{ week.start }}\n </div>\n }\n @else {\n <div class=\"week\" [style.grid-column]=\"'span ' + week.span\">\n {{ week.start }} - {{ week.end }}\n </div>\n }\n }\n </div>\n\n <div class=\"row days\"> \n @for ( day of _days; track $index ) {\n <div class=\"day\"\n [class.weekend]=\"day.isWeekend\"\n [class.today]=\"day.isToday\"\n [class.first]=\"day.isFirst\"\n >\n <div class=\"day-name\">{{ day.dayName }}</div>\n <div class=\"date\">{{ day.monthDay }}</div>\n </div>\n }\n </div>\n\n @for ( row of rows | paginate: paginateState( 'nrcl-schedule' ); track row.id; let rowIndex = $index ) {\n <div class=\"row items\">\n <div class=\"outer heading\">\n <div class=\"inner heading\">\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate?.template\" \n [ngTemplateOutletContext]=\"{ $implicit: row.heading }\" \n ></ng-container>\n </div>\n </div> \n\n @if ( row.items | async; as rowItems ) {\n @for ( item of rowItems; track item.id; let colIndex = $index ) {\n <div class=\"outer item\"\n [class.menu-open]=\"itemMenu.menuOpen\"\n >\n <div class=\"inner item\" #itemMenu=\"matMenuTrigger\"\n [class]=\"'item-' + item.name\" \n matRipple\n [matMenuTriggerFor]=\"menu\"\n [matMenuTriggerData]=\"{ $implicit: { item: item, heading: row.heading } }\"\n [matTooltip]=\"item?.tooltip?.()\"\n matTooltipClass=\"nrcl-schedule-multiline\"\n [class.travel]=\"item?.travel\"\n >\n <ng-container \n [ngTemplateOutlet]=\"_templates[ rowIndex ][ colIndex ] || empty\" \n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n \n @let icons = item?.icons?.();\n @if ( icons && icons.length > 0 ) {\n <div class=\"icons\">\n @for ( icon of icons; track icon ) {\n <nrcl-icon small>{{ icon }}</nrcl-icon>\n } \n </div>\n }\n </div>\n </div>\n }\n }\n @else {\n @for ( day of _days; track day ) {\n <div class=\"item item-loading\"></div>\n }\n }\n </div>\n }\n</div>\n\n<nrcl-gap/>\n\n<nrcl-row-list-pagination\n paginationId=\"nrcl-schedule\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n></nrcl-row-list-pagination>\n\n<ng-template #empty>\n <div class=\"empty\">(empty)</div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-schedule-border-color: #c6c8cb;--nrcl-schedule-background-color: white;--nrcl-schedule-alternate-background-color: #f2f2f2;--nrcl-schedule-hover-background-color: #d7d7d7;--nrcl-schedule-row-weeks-height: 30px;--nrcl-schedule-row-weeks-font-size: 15px;--nrcl-schedule-row-weeks-font-weight: bold;--nrcl-schedule-row-weeks-foreground-color: black;--nrcl-schedule-row-days-height: 45px;--nrcl-schedule-row-days-font-size: 15px;--nrcl-schedule-row-days-font-weight: normal;--nrcl-schedule-row-days-foreground-color: black;--nrcl-schedule-row-days-weekend-background-color: #e0f8fc;--nrcl-schedule-row-days-today-background-color: #fcf8d9;--nrcl-schedule-row-schedule-height: 70px;--nrcl-schedule-heading-width: 300px;--nrcl-schedule-item-width: 100px}:host{display:flex;flex-direction:column;font-family:var(--nrcl-font-family);height:100%}:host .schedule{display:grid;grid-template-columns:var(--nrcl-schedule-heading-width) repeat(var(--nrcl-schedule-day-count),var(--nrcl-schedule-item-width));overflow:auto;height:100%;flex-grow:1}:host .schedule .upper-left{grid-row:1/span 2;grid-column:1;border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color);position:sticky;top:0;left:0;z-index:2;background:var(--nrcl-schedule-background-color)}:host .schedule .row{display:contents}:host .schedule .row.weeks>*{height:var(--nrcl-schedule-row-weeks-height)}:host .schedule .row.days>*{height:var(--nrcl-schedule-row-days-height)}:host .schedule .row .outer.heading,:host .schedule .row .day,:host .schedule .row .week{border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.heading{border-left:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.item:last-child{border-right:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row:last-child .outer.item{border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .week{border-top:1px solid var(--nrcl-schedule-border-color);display:flex;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-weeks-font-size);font-weight:var(--nrcl-schedule-row-weeks-font-weight);color:var(--nrcl-schedule-row-weeks-foreground-color);position:sticky;top:0;background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day{display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-days-font-size);font-weight:var(--nrcl-schedule-row-days-font-weight);color:var(--nrcl-schedule-row-days-foreground-color);position:sticky;top:calc(var(--nrcl-schedule-row-weeks-height) + 2px);background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day .day-name{font-size:13px}:host .schedule .row .day.weekend{background-color:var(--nrcl-schedule-row-days-weekend-background-color)}:host .schedule .row .day.today{background-color:var(--nrcl-schedule-row-days-today-background-color)}:host .schedule .row .day.first:after{content:\"\";position:absolute;top:0;left:0;bottom:0;border-left:2px solid black}:host .schedule .row.items .outer.item{padding:2px;box-sizing:border-box;height:var(--nrcl-schedule-row-schedule-height);display:flex;flex-direction:column;justify-content:stretch;align-items:stretch}:host .schedule .row.items .outer.item.menu-open,:host .schedule .row.items .outer.item:hover{background-color:#000;border-radius:6px}:host .schedule .row.items .outer.item .item{flex-grow:1;cursor:pointer;border-radius:4px;position:relative;padding:4px 4px 8px}:host .schedule .row.items .outer.item .item .icons{position:absolute;right:2px;bottom:2px;display:flex;flex-direction:column;gap:2px;background-color:#f1ebe4;border-radius:4px;padding:3px}:host .schedule .row.items .outer.item .item.travel{position:relative}:host .schedule .row.items .outer.item .item.travel:after{content:\"\";position:absolute;inset:0 0 2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAABAQMAAAD+YPzoAAAABlBMVEX///8AAABVwtN+AAAAAnRSTlP/AOW3MEoAAAAMSURBVHicY+BwEgAAALAAW97nJhUAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:calc(100% - 8px) 3px;background-position:bottom}:host .schedule .row.items .outer.item .item.travel:hover:after{filter:brightness(0)}:host .schedule .row.items .outer.heading{box-sizing:border-box;cursor:default;position:sticky;left:0;z-index:1;height:var(--nrcl-schedule-row-schedule-height)}:host .schedule .row.items .outer.heading .heading{flex-grow:1;cursor:default;height:100%}:host .schedule .row:nth-child(odd) .outer{background-color:var(--nrcl-schedule-background-color)}:host .schedule .row:nth-child(2n) .outer{background-color:var(--nrcl-schedule-alternate-background-color)}:host .schedule .row:hover .outer{background-color:var(--nrcl-schedule-hover-background-color)}.empty{height:100%;display:flex;justify-content:center;align-items:center;color:#aaa}\n"] }]
149
+ }], propDecorators: { provider: [{
150
+ type: Input
151
+ }], startDate: [{
152
+ type: Input
153
+ }], weekStart: [{
154
+ type: Input,
155
+ args: [{ transform: numberAttribute }]
156
+ }], dayCount: [{
157
+ type: Input,
158
+ args: [{ transform: numberAttribute }]
159
+ }], menu: [{
160
+ type: Input
161
+ }], itemTemplates: [{
162
+ type: ContentChildren,
163
+ args: [ScheduleItemDirective]
164
+ }], headerTemplate: [{
165
+ type: ContentChild,
166
+ args: [ScheduleRowHeadingDirective]
167
+ }] } });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGUvc2NoZWR1bGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGUvc2NoZWR1bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFvRCxNQUFNLGVBQWUsQ0FBQztBQUU5SixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7O0FBSzdELE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsWUFDVyxRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUNuQyxDQUFDOytHQUhNLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFFO29CQUNSLFFBQVEsRUFBRSwwQkFBMEI7aUJBQ3ZDOztBQU9ELG1GQUFtRjtBQUtuRixNQUFNLE9BQU8scUJBQXFCO0lBRzlCLFlBQ1csUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFDbkMsQ0FBQzsrR0FMTSxxQkFBcUI7bUdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBRTtvQkFDUixRQUFRLEVBQUUsb0JBQW9CO2lCQUNqQztnRkFFZ0MsSUFBSTtzQkFBaEMsS0FBSzt1QkFBRSxrQkFBa0I7O0FBMkQ5QixtRkFBbUY7QUFVbkYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQTJCO0lBUmxFOztR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dkQ7OEJBR1EsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNtQyxTQUFTO3NCQUFqRCxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRyxRQUFRO3NCQUFoRCxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDN0IsSUFBSTtzQkFBWixLQUFLO2dCQUVrQyxhQUFhO3NCQUFwRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDSyxjQUFjO3NCQUF4RCxZQUFZO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIG51bWJlckF0dHJpYnV0ZSwgT25DaGFuZ2VzLCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51UGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhZ2luYXRpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5iYXNlJztcbmltcG9ydCB7IFJvd0xpc3RCYXNlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb3ctbGlzdC5iYXNlJztcblxuQERpcmVjdGl2ZSgge1xuICAgIHNlbGVjdG9yOiAnW25yY2xTY2hlZHVsZVJvd0hlYWRpbmddJ1xufSApXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVSb3dIZWFkaW5nRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+XG4gICAgKXt9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBEaXJlY3RpdmUoIHtcbiAgICBzZWxlY3RvcjogJ1tucmNsU2NoZWR1bGVJdGVtXSdcbn0gKVxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlSXRlbURpcmVjdGl2ZSB7XG4gICAgQElucHV0KCAnbnJjbFNjaGVkdWxlSXRlbScgKSBuYW1lPzogc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+XG4gICAgKXt9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFNjaGVkdWxlUm93SXRlbSA9IHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBpY29ucz86ICgpID0+IHN0cmluZ1tdLFxuICAgIHRvb2x0aXA/OiAoKSA9PiBzdHJpbmcsXG4gICAgdHJhdmVsPzogYm9vbGVhbixcbn1cblxuZXhwb3J0IHR5cGUgU2NoZWR1bGVSb3cgPSB7XG4gICAgaWQ/OiBzdHJpbmcsXG4gICAgaGVhZGluZzogYW55LFxuICAgIGl0ZW1zOiBQcm9taXNlPFNjaGVkdWxlUm93SXRlbVtdPlxufVxuXG5leHBvcnQgdHlwZSBTY2hlZHVsZSA9IFNjaGVkdWxlUm93W11cblxudHlwZSBEYXkgPSB7XG4gICAgZGF5TmFtZTogc3RyaW5nLFxuICAgIG1vbnRoRGF5OiBudW1iZXIsXG4gICAgZGF0ZTogc3RyaW5nLFxuICAgIGlzV2Vla2VuZDogYm9vbGVhbixcbiAgICBpc1RvZGF5OiBib29sZWFuLFxuICAgIGlzRmlyc3Q6IGJvb2xlYW5cbn1cblxudHlwZSBXZWVrID0ge1xuICAgIHN0YXJ0OiBzdHJpbmcsXG4gICAgZW5kOiBzdHJpbmcsXG4gICAgc3BhbjogbnVtYmVyXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIEZldGNoU2NoZWR1bGVQYXJhbWV0ZXJzID0ge1xuICAgIHBhZ2VOdW1iZXI6IG51bWJlclxuICAgIHBhZ2VTaXplOiBudW1iZXJcbiAgICBzb3J0QWN0aXZlOiBzdHJpbmdcbiAgICBzb3J0RGlyZWN0aW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hTY2hlZHVsZVJvd1BhcmFtZXRlcnMgPSB7XG4gICAgcmVzb3VyY2VJZDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVQcm92aWRlciB7XG4gICAgZmV0Y2hTY2hlZHVsZSggeDogRmV0Y2hTY2hlZHVsZVBhcmFtZXRlcnMgKTogT2JzZXJ2YWJsZTxhbnk+XG4gICAgcGFyc2VTY2hlZHVsZSggcmVzOiBhbnkgKTogU2NoZWR1bGVcbiAgICBnZXRJbml0aWFsUGFnZVN0YXRlKCk6IFBhZ2luYXRpb25TdGF0ZTx7fT5cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQENvbXBvbmVudCgge1xuICAgIHNlbGVjdG9yOiAnbnJjbC1zY2hlZHVsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjaGVkdWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2NoZWR1bGUuY29tcG9uZW50LnNjc3MnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tzdHlsZS4tLW5yY2wtc2NoZWR1bGUtZGF5LWNvdW50XSc6ICd0aGlzLmRheUNvdW50J1xuICAgIH1cbn0gKVxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlQ29tcG9uZW50IGV4dGVuZHMgUm93TGlzdEJhc2U8e30sU2NoZWR1bGVSb3c+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwcm92aWRlcj86IFNjaGVkdWxlUHJvdmlkZXJcbiAgICBASW5wdXQoKSBzdGFydERhdGU/OiBzdHJpbmdcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSApIHdlZWtTdGFydCA9IDBcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSApIGRheUNvdW50PzogbnVtYmVyXG4gICAgQElucHV0KCkgbWVudT86IE1hdE1lbnVQYW5lbFxuXG4gICAgQENvbnRlbnRDaGlsZHJlbihTY2hlZHVsZUl0ZW1EaXJlY3RpdmUpIGl0ZW1UZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8U2NoZWR1bGVJdGVtRGlyZWN0aXZlPjtcbiAgICBAQ29udGVudENoaWxkKFNjaGVkdWxlUm93SGVhZGluZ0RpcmVjdGl2ZSkgaGVhZGVyVGVtcGxhdGUhOiBTY2hlZHVsZVJvd0hlYWRpbmdEaXJlY3RpdmVcblxuICAgIHByb3RlY3RlZCBfZGF5czogRGF5W10gPSBbXVxuICAgIHByb3RlY3RlZCBfd2Vla3M6IFdlZWtbXSA9IFtdXG4gICAgcHJvdGVjdGVkIF90ZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXVtdID0gW11cblxuICAgIG5nT25DaGFuZ2VzKCBjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzICk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2hSb3dMaXN0KClcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmV0Y2hSb3dMaXN0UGFnZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoICF0aGlzLnByb3ZpZGVyPy5mZXRjaFNjaGVkdWxlICkgdGhyb3cgRXJyb3IoICdTY2hlZHVsZUNvbXBvbmVudC5wcm92aWRlci5mZXRjaFNjaGVkdWxlIG5vdCBzZXQnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5mZXRjaFNjaGVkdWxlKCB7XG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHNvcnRBY3RpdmU6IHRoaXMuc29ydEFjdGl2ZSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgICAgfSApXG4gICAgfVxuXG4gICAgcGFyc2VSb3dzKCByZXM6IGFueSApOiBTY2hlZHVsZVJvd1tdIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wcm92aWRlcj8ucGFyc2VTY2hlZHVsZSApIHRocm93IEVycm9yKCAnUmVzb3VyY2VTY2hlZHVsZUNvbXBvbmVudC5wcm92aWRlci5wYXJzZVNjaGVkdWxlIG5vdCBzZXQnIClcblxuICAgICAgICBsZXQgcm93cyA9IHRoaXMucHJvdmlkZXIucGFyc2VTY2hlZHVsZSggcmVzIClcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZVJvd3MoIHJvd3MgKVxuICAgIH1cblxuICAgIGdldEluaXRpYWxQYWdlU3RhdGUoKTogUGFnaW5hdGlvblN0YXRlPHt9PiB7XG4gICAgICAgIGlmICggIXRoaXMucHJvdmlkZXI/LmdldEluaXRpYWxQYWdlU3RhdGUgKSB0aHJvdyBFcnJvciggJ1Jlc291cmNlU2NoZWR1bGVDb21wb25lbnQucHJvdmlkZXIuZ2V0SW5pdGlhbFBhZ2VTdGF0ZSBub3Qgc2V0JyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0SW5pdGlhbFBhZ2VTdGF0ZSgpXG4gICAgfVxuXG4gICAgb25TYW1lUGFnZUZpbHRlckNoYW5nZSggZXY6IHt9ICk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlciA9IGV2XG4gICAgfVxuXG4gICAgbWFrZVJvd3MoIHNjaGVkdWxlOiBTY2hlZHVsZSApOiBTY2hlZHVsZSB7XG4gICAgICAgIGxldCBzdGFydCA9IG1vbWVudCggdGhpcy5zdGFydERhdGUgKVxuICAgICAgICBsZXQgdG9kYXkgPSBtb21lbnQoKVxuXG4gICAgICAgIHRoaXMuX3dlZWtzID0gQXJyYXkuZnJvbSggeyBsZW5ndGg6IHRoaXMuZGF5Q291bnQhIH0gKS5yZWR1Y2U8V2Vla1tdPiggKCBhLCB4LCBpICkgPT4ge1xuICAgICAgICAgICAgbGV0IG0gPSBzdGFydC5jbG9uZSgpLmFkZCggaSwgJ2RheScgKVxuICAgICAgICAgICAgbGV0IGRhdGUgPSBtLmZvcm1hdCggJ01NTSBEJyApXG4gICAgICAgICAgICBsZXQgZGF5ID0gbS5kYXkoKVxuXG4gICAgICAgICAgICBpZiAoIGEubGVuZ3RoID09IDAgKSByZXR1cm4gYS5jb25jYXQoIHtcbiAgICAgICAgICAgICAgICBzdGFydDogZGF0ZSxcbiAgICAgICAgICAgICAgICBlbmQ6IGRhdGUsXG4gICAgICAgICAgICAgICAgc3BhbjogMVxuICAgICAgICAgICAgfSApXG5cbiAgICAgICAgICAgIGxldCBwcmV2ID0gYVsgYS5sZW5ndGggLSAxIF1cblxuICAgICAgICAgICAgaWYgKCBkYXkgPT0gdGhpcy53ZWVrU3RhcnQgKSByZXR1cm4gYS5jb25jYXQoIHtcbiAgICAgICAgICAgICAgICBzdGFydDogZGF0ZSxcbiAgICAgICAgICAgICAgICBlbmQ6IGRhdGUsXG4gICAgICAgICAgICAgICAgc3BhbjogMVxuICAgICAgICAgICAgfSApXG5cbiAgICAgICAgICAgIHByZXYuZW5kID0gZGF0ZVxuICAgICAgICAgICAgcHJldi5zcGFuICs9IDFcbiAgICAgICAgICAgIHJldHVybiBhXG4gICAgICAgIH0sIFtdIClcblxuICAgICAgICB0aGlzLl9kYXlzID0gQXJyYXkuZnJvbSggeyBsZW5ndGg6IHRoaXMuZGF5Q291bnQhIH0gKS5tYXAoICggeCwgaSApID0+IHtcbiAgICAgICAgICAgIGxldCBkID0gc3RhcnQuY2xvbmUoKS5hZGQoIGksICdkYXknIClcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF5TmFtZTogZC5mb3JtYXQoICdkZGQnICksXG4gICAgICAgICAgICAgICAgbW9udGhEYXk6IGQuZGF0ZSgpLFxuICAgICAgICAgICAgICAgIGRhdGU6IGQuZm9ybWF0KCAnWS1NTS1ERCcgKSxcbiAgICAgICAgICAgICAgICBpc0ZpcnN0OiBkLmRhdGUoKSA9PSAxLFxuICAgICAgICAgICAgICAgIGlzV2Vla2VuZDogZC5kYXkoKSA9PSAwIHx8IGQuZGF5KCkgPT0gNixcbiAgICAgICAgICAgICAgICBpc1RvZGF5OiBkLmlzU2FtZSggdG9kYXksICdkYXknICksXG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSApXG5cbiAgICAgICAgdGhpcy5fdGVtcGxhdGVzID0gQXJyYXkuZnJvbSggeyBsZW5ndGg6IHNjaGVkdWxlLmxlbmd0aCB9IClcblxuICAgICAgICByZXR1cm4gc2NoZWR1bGUubWFwKCAoIHJvdywgaSApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlc1sgaSBdID0gQXJyYXkuZnJvbSggeyBsZW5ndGg6IHRoaXMuZGF5Q291bnQhIH0gKVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiByb3cuaWQgPz8gU3RyaW5nKCBpICksXG4gICAgICAgICAgICAgICAgaGVhZGluZzogcm93LmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHJvdy5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAudGhlbiggcm93SXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oIHsgbGVuZ3RoOiB0aGlzLmRheUNvdW50ISB9ICkubWFwKCAoIHgsIGogKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvd0l0ZW0gPSByb3dJdGVtc1sgaiBdXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJvd0l0ZW0gPT0gbnVsbCApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFN0cmluZyggaiApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VtcHR5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVzWyBpIF1bIGogXSA9IHRoaXMuaXRlbVRlbXBsYXRlcz8uZmluZCggaSA9PiBpLm5hbWUgPT0gcm93SXRlbT8ubmFtZSAgKT8udGVtcGxhdGUhXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm93SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICAgICAgICAgIH0gKVxuICAgICAgICAgICAgfVxuICAgICAgICB9ICkgfHwgW11cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2NoZWR1bGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidXBwZXItbGVmdFwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHdlZWtzXCI+XG4gICAgICAgIEBmb3IgKCB3ZWVrIG9mIF93ZWVrczsgdHJhY2sgJGluZGV4ICkge1xuICAgICAgICAgICAgQGlmICggd2Vlay5zcGFuID09IDEgKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWtcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgd2Vlay5zdGFydCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyB3ZWVrLnNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgd2Vlay5zdGFydCB9fSAtIHt7IHdlZWsuZW5kIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZGF5c1wiPiAgICBcbiAgICAgICAgQGZvciAoIGRheSBvZiBfZGF5czsgdHJhY2sgJGluZGV4ICkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLndlZWtlbmRdPVwiZGF5LmlzV2Vla2VuZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImRheS5pc1RvZGF5XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmlyc3RdPVwiZGF5LmlzRmlyc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktbmFtZVwiPnt7IGRheS5kYXlOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVcIj57eyBkYXkubW9udGhEYXkgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAZm9yICggcm93IG9mIHJvd3MgfCBwYWdpbmF0ZTogcGFnaW5hdGVTdGF0ZSggJ25yY2wtc2NoZWR1bGUnICk7IHRyYWNrIHJvdy5pZDsgbGV0IHJvd0luZGV4ID0gJGluZGV4ICkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGl0ZW1zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXIgaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lciBoZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZT8udGVtcGxhdGVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LmhlYWRpbmcgfVwiICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAgICBcblxuICAgICAgICAgICAgQGlmICggcm93Lml0ZW1zIHwgYXN5bmM7IGFzIHJvd0l0ZW1zICkge1xuICAgICAgICAgICAgICAgIEBmb3IgKCBpdGVtIG9mIHJvd0l0ZW1zOyB0cmFjayBpdGVtLmlkOyBsZXQgY29sSW5kZXggPSAkaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRlciBpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZW51LW9wZW5dPVwiaXRlbU1lbnUubWVudU9wZW5cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXIgaXRlbVwiICNpdGVtTWVudT1cIm1hdE1lbnVUcmlnZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2l0ZW0tJyArIGl0ZW0ubmFtZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJEYXRhXT1cInsgJGltcGxpY2l0OiB7IGl0ZW06IGl0ZW0sIGhlYWRpbmc6IHJvdy5oZWFkaW5nIH0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbT8udG9vbHRpcD8uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cIm5yY2wtc2NoZWR1bGUtbXVsdGlsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudHJhdmVsXT1cIml0ZW0/LnRyYXZlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3RlbXBsYXRlc1sgcm93SW5kZXggXVsgY29sSW5kZXggXSB8fCBlbXB0eVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgaWNvbnMgPSBpdGVtPy5pY29ucz8uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICggaWNvbnMgJiYgaWNvbnMubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICggaWNvbiBvZiBpY29uczsgdHJhY2sgaWNvbiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1pY29uIHNtYWxsPnt7IGljb24gfX08L25yY2wtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBmb3IgKCBkYXkgb2YgX2RheXM7IHRyYWNrIGRheSApIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gaXRlbS1sb2FkaW5nXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cblxuPG5yY2wtZ2FwLz5cblxuPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgIHBhZ2luYXRpb25JZD1cIm5yY2wtc2NoZWR1bGVcIlxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgW3Jvd0NvdW50XT1cInRvdGFsUm93Q291bnRcIlxuICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gICAgPGRpdiBjbGFzcz1cImVtcHR5XCI+KGVtcHR5KTwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
59
59
  type: ViewChild,
60
60
  args: ['content', { static: true }]
61
61
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL3RhYnMvdGFiL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy90YWJzL3RhYi90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFDVyxRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUNuQyxDQUFDOytHQUhNLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFFO29CQUNSLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzdCOztBQU9ELG1GQUFtRjtBQUtuRixNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLFlBQ1csUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFDbkMsQ0FBQzsrR0FITSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBRTtvQkFDUixRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjs7QUFPRCxtRkFBbUY7QUFPbkYsTUFBTSxPQUFPLFlBQWEsU0FBUSxRQUFRO0lBTDFDOztRQU1JLGVBQVUsR0FBRyxNQUFNLENBQUUsVUFBVSxDQUFFLENBQUE7UUFDakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFFLGlCQUFpQixDQUFFLENBQUE7UUFJTCxhQUFRLEdBQUcsS0FBSyxDQUFBO0tBSzdEOytHQVhZLFlBQVk7bUdBQVosWUFBWSxtR0FNQSxnQkFBZ0Isd0VBRXRCLGlCQUFpQixrRkFDakIsbUJBQW1CLHlMQ3ZDdEMsMEtBT0E7OzRGRHVCYSxZQUFZO2tCQUx4QixTQUFTOytCQUNJLFVBQVU7OEJBUVgsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDb0MsUUFBUTtzQkFBakQsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFSixhQUFhO3NCQUEvQyxZQUFZO3VCQUFFLGlCQUFpQjtnQkFDSyxlQUFlO3NCQUFuRCxZQUFZO3VCQUFFLG1CQUFtQjtnQkFDUSxPQUFPO3NCQUFoRCxTQUFTO3VCQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnJjbEJhc2UgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL25yY2wuYmFzZSc7XG5cbkBEaXJlY3RpdmUoIHtcbiAgICBzZWxlY3RvcjogJ1tucmNsVGFiTGFiZWxdJ1xufSApXG5leHBvcnQgY2xhc3MgVGFiTGFiZWxEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT5cbiAgICApe31cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQERpcmVjdGl2ZSgge1xuICAgIHNlbGVjdG9yOiAnW25yY2xUYWJDb250ZW50XSdcbn0gKVxuZXhwb3J0IGNsYXNzIFRhYkNvbnRlbnREaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT5cbiAgICApe31cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQENvbXBvbmVudCgge1xuICAgIHNlbGVjdG9yOiAnbnJjbC10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi90YWIuY29tcG9uZW50LnNjc3MnLFxufSApXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IGV4dGVuZHMgTnJjbEJhc2Uge1xuICAgIGVsZW1lbnRSZWYgPSBpbmplY3QoIEVsZW1lbnRSZWYgKVxuICAgIGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KCBDaGFuZ2VEZXRlY3RvclJlZiApXG5cbiAgICBASW5wdXQoKSBuYW1lPzogc3RyaW5nXG4gICAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmdcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0gKSBkaXNhYmxlZCA9IGZhbHNlXG5cbiAgICBAQ29udGVudENoaWxkKCBUYWJMYWJlbERpcmVjdGl2ZSApIGxhYmVsVGVtcGxhdGU/OiBUYWJMYWJlbERpcmVjdGl2ZVxuICAgIEBDb250ZW50Q2hpbGQoIFRhYkNvbnRlbnREaXJlY3RpdmUgKSBjb250ZW50VGVtcGxhdGU/OiBUYWJMYWJlbERpcmVjdGl2ZVxuICAgIEBWaWV3Q2hpbGQoICdjb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSApIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+XG59XG4iLCI8bmctdGVtcGxhdGUgI2xhYmVsPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltucmNsVGFiTGFiZWxdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL3RhYnMvdGFiL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy90YWJzL3RhYi90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS3pELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFDVyxRQUEwQjtRQUExQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUNuQyxDQUFDOytHQUhNLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFFO29CQUNSLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzdCOztBQU9ELG1GQUFtRjtBQUtuRixNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLFlBQ1csUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFDbkMsQ0FBQzsrR0FITSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBRTtvQkFDUixRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjs7QUFPRCxtRkFBbUY7QUFPbkYsTUFBTSxPQUFPLFlBQWEsU0FBUSxRQUFRO0lBTDFDOztRQU1JLGVBQVUsR0FBRyxNQUFNLENBQUUsVUFBVSxDQUFFLENBQUE7UUFDakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFFLGlCQUFpQixDQUFFLENBQUE7UUFJTCxhQUFRLEdBQUcsS0FBSyxDQUFBO0tBSzdEOytHQVhZLFlBQVk7bUdBQVosWUFBWSxtR0FNQSxnQkFBZ0Isd0VBRXRCLGlCQUFpQixrRkFDakIsbUJBQW1CLHlMQ3ZDdEMsMEtBT0E7OzRGRHVCYSxZQUFZO2tCQUx4QixTQUFTOytCQUNJLFVBQVU7OEJBUVgsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDb0MsUUFBUTtzQkFBakQsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFSixhQUFhO3NCQUEvQyxZQUFZO3VCQUFFLGlCQUFpQjtnQkFDSyxlQUFlO3NCQUFuRCxZQUFZO3VCQUFFLG1CQUFtQjtnQkFDUSxPQUFPO3NCQUFoRCxTQUFTO3VCQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnJjbEJhc2UgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL25yY2wuYmFzZSc7XG5cbkBEaXJlY3RpdmUoIHtcbiAgICBzZWxlY3RvcjogJ1tucmNsVGFiTGFiZWxdJ1xufSApXG5leHBvcnQgY2xhc3MgVGFiTGFiZWxEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT5cbiAgICApe31cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQERpcmVjdGl2ZSgge1xuICAgIHNlbGVjdG9yOiAnW25yY2xUYWJDb250ZW50XSdcbn0gKVxuZXhwb3J0IGNsYXNzIFRhYkNvbnRlbnREaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT5cbiAgICApe31cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQENvbXBvbmVudCgge1xuICAgIHNlbGVjdG9yOiAnbnJjbC10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi90YWIuY29tcG9uZW50LnNjc3MnLFxufSApXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IGV4dGVuZHMgTnJjbEJhc2Uge1xuICAgIGVsZW1lbnRSZWYgPSBpbmplY3QoIEVsZW1lbnRSZWYgKVxuICAgIGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KCBDaGFuZ2VEZXRlY3RvclJlZiApXG5cbiAgICBASW5wdXQoKSBuYW1lPzogc3RyaW5nXG4gICAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmdcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0gKSBkaXNhYmxlZCA9IGZhbHNlXG5cbiAgICBAQ29udGVudENoaWxkKCBUYWJMYWJlbERpcmVjdGl2ZSApIGxhYmVsVGVtcGxhdGU/OiBUYWJMYWJlbERpcmVjdGl2ZVxuICAgIEBDb250ZW50Q2hpbGQoIFRhYkNvbnRlbnREaXJlY3RpdmUgKSBjb250ZW50VGVtcGxhdGU/OiBUYWJDb250ZW50RGlyZWN0aXZlXG4gICAgQFZpZXdDaGlsZCggJ2NvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9ICkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT5cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbGFiZWw+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW25yY2xUYWJMYWJlbF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,88 @@
1
+ import { ChangeDetectorRef, Directive, inject } from "@angular/core";
2
+ import { PageStateService } from "../services/page-state.service";
3
+ import { NrclBase } from "./nrcl.base";
4
+ import * as i0 from "@angular/core";
5
+ export class PaginationBase extends NrclBase {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.pageStateService = inject(PageStateService);
9
+ this.changeDetectorRef = inject(ChangeDetectorRef);
10
+ this._totalRowCount = 0;
11
+ this._pageConfig = {
12
+ pageSize: 0,
13
+ pageNumber: 1,
14
+ sortActive: '',
15
+ sortDirection: 'asc'
16
+ };
17
+ }
18
+ get totalRowCount() { return this._totalRowCount; }
19
+ get pageSize() { return this._pageConfig.pageSize; }
20
+ get pageNumber() { return this._pageConfig.pageNumber; }
21
+ get sortActive() { return this._pageConfig.sortActive; }
22
+ get sortDirection() { return this._pageConfig.sortDirection; }
23
+ get filter() {
24
+ return this._filter;
25
+ }
26
+ set filter(f) {
27
+ this._filter = this.clone(f);
28
+ }
29
+ ngAfterViewInit() {
30
+ this.loadPageState();
31
+ }
32
+ clone(obj) {
33
+ return JSON.parse(JSON.stringify(obj));
34
+ }
35
+ onFilterChange(ev) {
36
+ this.filter = ev;
37
+ this.onPageNumberChange(1);
38
+ }
39
+ onSortChange(ev) {
40
+ this._pageConfig.sortActive = ev.active;
41
+ this._pageConfig.sortDirection = ev.direction;
42
+ this.onPageNumberChange(1);
43
+ }
44
+ onPageSizeChange(ev) {
45
+ this._pageConfig.pageSize = ev;
46
+ this.onPageNumberChange(1);
47
+ }
48
+ onPageNumberChange(ev) {
49
+ this._pageConfig.pageNumber = ev;
50
+ }
51
+ get initialPageState() {
52
+ return this.getInitialPageState();
53
+ }
54
+ loadPageState() {
55
+ let state = this.pageStateService.getPageState(this.constructor, () => this.initialPageState);
56
+ this.filter = state.filter;
57
+ this._pageConfig.pageSize = state.pageConfig.pageSize;
58
+ this._pageConfig.pageNumber = state.pageConfig.pageNumber;
59
+ this._pageConfig.sortActive = state.pageConfig.sortActive;
60
+ this._pageConfig.sortDirection = state.pageConfig.sortDirection;
61
+ }
62
+ savePageState() {
63
+ let state = this.clone({
64
+ filter: this.filter,
65
+ pageConfig: {
66
+ pageSize: this._pageConfig.pageSize,
67
+ pageNumber: this._pageConfig.pageNumber,
68
+ sortActive: this._pageConfig.sortActive,
69
+ sortDirection: this._pageConfig.sortDirection,
70
+ }
71
+ });
72
+ this.pageStateService.setPageState(this.constructor, state);
73
+ }
74
+ paginateState(id) {
75
+ return {
76
+ id,
77
+ itemsPerPage: this._pageConfig.pageSize,
78
+ currentPage: this._pageConfig.pageNumber,
79
+ totalItems: this._totalRowCount
80
+ };
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginationBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
83
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: PaginationBase, usesInheritance: true, ngImport: i0 }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginationBase, decorators: [{
86
+ type: Directive
87
+ }] });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2RpcmVjdGl2ZXMvcGFnaW5hdGlvbi5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQVl2QyxNQUFNLE9BQWdCLGNBQWtCLFNBQVEsUUFBUTtJQUR4RDs7UUFFSSxxQkFBZ0IsR0FBRyxNQUFNLENBQUUsZ0JBQWdCLENBQUUsQ0FBQTtRQUM3QyxzQkFBaUIsR0FBRyxNQUFNLENBQUUsaUJBQWlCLENBQUUsQ0FBQTtRQUVyQyxtQkFBYyxHQUFXLENBQUMsQ0FBQTtRQUc1QixnQkFBVyxHQUFxQjtZQUNwQyxRQUFRLEVBQVEsQ0FBQztZQUNqQixVQUFVLEVBQU0sQ0FBQztZQUNqQixVQUFVLEVBQU0sRUFBRTtZQUNsQixhQUFhLEVBQUcsS0FBSztTQUN4QixDQUFBO0tBZ0ZKO0lBdkZHLElBQUksYUFBYSxLQUFhLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQSxDQUFDLENBQUM7SUFRMUQsSUFBSSxRQUFRLEtBQTBCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBQ3hFLElBQUksVUFBVSxLQUF3QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQztJQUMxRSxJQUFJLFVBQVUsS0FBd0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQSxDQUFDLENBQUM7SUFDMUUsSUFBSSxhQUFhLEtBQXFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxh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LElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTtZQUN4QyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDbEMsQ0FBQTtJQUNMLENBQUM7K0dBM0ZpQixjQUFjO21HQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRG5DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XG5pbXBvcnQgeyBQYWdlU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3BhZ2Utc3RhdGUuc2VydmljZVwiO1xuaW1wb3J0IHsgTnJjbEJhc2UgfSBmcm9tIFwiLi9ucmNsLmJhc2VcIjtcblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvbkNvbmZpZyA9IHsgICAgXG4gICAgcGFnZVNpemU6IG51bWJlclxuICAgIHBhZ2VOdW1iZXI6IG51bWJlclxuICAgIHNvcnRBY3RpdmU6IHN0cmluZyBcbiAgICBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uXG59XG5cbmV4cG9ydCB0eXBlIFBhZ2luYXRpb25TdGF0ZTxGPiA9IHsgcGFnZUNvbmZpZzogUGFnaW5hdGlvbkNvbmZpZywgZmlsdGVyOiBGIH1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnaW5hdGlvbkJhc2U8Rj4gZXh0ZW5kcyBOcmNsQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHBhZ2VTdGF0ZVNlcnZpY2UgPSBpbmplY3QoIFBhZ2VTdGF0ZVNlcnZpY2UgKVxuICAgIGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KCBDaGFuZ2VEZXRlY3RvclJlZiApXG5cbiAgICBwcm90ZWN0ZWQgX3RvdGFsUm93Q291bnQ6IG51bWJlciA9IDBcbiAgICBnZXQgdG90YWxSb3dDb3VudCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fdG90YWxSb3dDb3VudCB9XG5cbiAgICBwcml2YXRlIF9wYWdlQ29uZmlnOiBQYWdpbmF0aW9uQ29uZmlnID0ge1xuICAgICAgICBwYWdlU2l6ZTogICAgICAgMCxcbiAgICAgICAgcGFnZU51bWJlcjogICAgIDEsXG4gICAgICAgIHNvcnRBY3RpdmU6ICAgICAnJyxcbiAgICAgICAgc29ydERpcmVjdGlvbjogICdhc2MnXG4gICAgfVxuICAgIGdldCBwYWdlU2l6ZSgpOiBudW1iZXIgICAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMuX3BhZ2VDb25maWcucGFnZVNpemUgfVxuICAgIGdldCBwYWdlTnVtYmVyKCk6IG51bWJlciAgICAgICAgICAgIHsgcmV0dXJuIHRoaXMuX3BhZ2VDb25maWcucGFnZU51bWJlciB9XG4gICAgZ2V0IHNvcnRBY3RpdmUoKTogc3RyaW5nICAgICAgICAgICAgeyByZXR1cm4gdGhpcy5fcGFnZUNvbmZpZy5zb3J0QWN0aXZlIH1cbiAgICBnZXQgc29ydERpcmVjdGlvbigpOiBTb3J0RGlyZWN0aW9uICB7IHJldHVybiB0aGlzLl9wYWdlQ29uZmlnLnNvcnREaXJlY3Rpb24gfVxuXG4gICAgcHJpdmF0ZSBfZmlsdGVyPzogRlxuICAgIGdldCBmaWx0ZXIoKTogRiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXIgYXMgRlxuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGZpbHRlciggZjogRiApIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyID0gdGhpcy5jbG9uZSggZiApXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRQYWdlU3RhdGUoKSAgICAgICAgXG4gICAgfVxuXG4gICAgY2xvbmUoIG9iajogYW55ICkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSggSlNPTi5zdHJpbmdpZnkoIG9iaiApICkgXG4gICAgfVxuXG4gICAgb25GaWx0ZXJDaGFuZ2UoIGV2OiBGICkge1xuICAgICAgICB0aGlzLmZpbHRlciA9IGV2IFxuICAgICAgICB0aGlzLm9uUGFnZU51bWJlckNoYW5nZSggMSApXG4gICAgfVxuXG4gICAgb25Tb3J0Q2hhbmdlKCBldjogU29ydCApIHtcbiAgICAgICAgdGhpcy5fcGFnZUNvbmZpZy5zb3J0QWN0aXZlID0gZXYuYWN0aXZlXG4gICAgICAgIHRoaXMuX3BhZ2VDb25maWcuc29ydERpcmVjdGlvbiA9IGV2LmRpcmVjdGlvblxuICAgICAgICB0aGlzLm9uUGFnZU51bWJlckNoYW5nZSggMSApXG4gICAgfVxuXG4gICAgb25QYWdlU2l6ZUNoYW5nZSggZXY6IG51bWJlciApIHtcbiAgICAgICAgdGhpcy5fcGFnZUNvbmZpZy5wYWdlU2l6ZSA9IGV2IFxuICAgICAgICB0aGlzLm9uUGFnZU51bWJlckNoYW5nZSggMSApXG4gICAgfVxuXG4gICAgb25QYWdlTnVtYmVyQ2hhbmdlKCBldjogbnVtYmVyICkge1xuICAgICAgICB0aGlzLl9wYWdlQ29uZmlnLnBhZ2VOdW1iZXIgPSBldlxuICAgIH1cblxuICAgIGdldCBpbml0aWFsUGFnZVN0YXRlKCk6IFBhZ2luYXRpb25TdGF0ZTxGPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEluaXRpYWxQYWdlU3RhdGUoKVxuICAgIH1cblxuICAgIGFic3RyYWN0IGdldEluaXRpYWxQYWdlU3RhdGUoKTogUGFnaW5hdGlvblN0YXRlPEY+XG5cbiAgICBsb2FkUGFnZVN0YXRlKCkge1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLnBhZ2VTdGF0ZVNlcnZpY2UuZ2V0UGFnZVN0YXRlPFBhZ2luYXRpb25TdGF0ZTxGPj4oIHRoaXMuY29uc3RydWN0b3IsICgpID0+IHRoaXMuaW5pdGlhbFBhZ2VTdGF0ZSApXG5cbiAgICAgICAgdGhpcy5maWx0ZXIgPSBzdGF0ZS5maWx0ZXJcbiAgICAgICAgdGhpcy5fcGFnZUNvbmZpZy5wYWdlU2l6ZSA9IHN0YXRlLnBhZ2VDb25maWcucGFnZVNpemVcbiAgICAgICAgdGhpcy5fcGFnZUNvbmZpZy5wYWdlTnVtYmVyID0gc3RhdGUucGFnZUNvbmZpZy5wYWdlTnVtYmVyXG4gICAgICAgIHRoaXMuX3BhZ2VDb25maWcuc29ydEFjdGl2ZSA9IHN0YXRlLnBhZ2VDb25maWcuc29ydEFjdGl2ZVxuICAgICAgICB0aGlzLl9wYWdlQ29uZmlnLnNvcnREaXJlY3Rpb24gPSBzdGF0ZS5wYWdlQ29uZmlnLnNvcnREaXJlY3Rpb25cbiAgICB9XG5cbiAgICBzYXZlUGFnZVN0YXRlKCkge1xuICAgICAgICBsZXQgc3RhdGU6IFBhZ2luYXRpb25TdGF0ZTxGPiA9IHRoaXMuY2xvbmUoIHsgICAgICAgICAgICBcbiAgICAgICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXIsXG4gICAgICAgICAgICBwYWdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMuX3BhZ2VDb25maWcucGFnZVNpemUsXG4gICAgICAgICAgICAgICAgcGFnZU51bWJlcjogdGhpcy5fcGFnZUNvbmZpZy5wYWdlTnVtYmVyLFxuICAgICAgICAgICAgICAgIHNvcnRBY3RpdmU6IHRoaXMuX3BhZ2VDb25maWcuc29ydEFjdGl2ZSxcbiAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLl9wYWdlQ29uZmlnLnNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKSBcbiAgICAgICAgXG4gICAgICAgIHRoaXMucGFnZVN0YXRlU2VydmljZS5zZXRQYWdlU3RhdGU8UGFnaW5hdGlvblN0YXRlPEY+PiggdGhpcy5jb25zdHJ1Y3Rvciwgc3RhdGUgKVxuICAgIH1cblxuICAgIHBhZ2luYXRlU3RhdGUoIGlkOiBzdHJpbmcgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5fcGFnZUNvbmZpZy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLl9wYWdlQ29uZmlnLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiB0aGlzLl90b3RhbFJvd0NvdW50XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=