@rivet-health/design-system 23.0.0 → 23.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/content-toggle/toggle/toggle.component.mjs +32 -0
- package/esm2020/lib/modal/menu/menu.component.mjs +8 -5
- package/esm2020/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +43 -0
- package/esm2020/lib/navigation/views/state.mjs +119 -20
- package/esm2020/lib/navigation/views/view-menu/view-menu.component.mjs +30 -0
- package/esm2020/lib/navigation/views/views/views.component.mjs +17 -17
- package/esm2020/lib/riv.module.mjs +18 -3
- package/esm2020/lib/table/table-column-settings/table-column-settings-side-sheet.component.mjs +1 -1
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/rivet-health-design-system.mjs +191 -31
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +228 -30
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/content-toggle/toggle/toggle.component.d.ts +13 -0
- package/lib/modal/menu/menu.component.d.ts +3 -1
- package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +14 -0
- package/lib/navigation/views/state.d.ts +34 -5
- package/lib/navigation/views/view-menu/view-menu.component.d.ts +13 -0
- package/lib/navigation/views/views/views.component.d.ts +3 -3
- package/lib/riv.module.d.ts +86 -83
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../../icon/icon.component";
|
|
5
|
+
export class ToggleComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.open = false;
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.openChange = new EventEmitter();
|
|
10
|
+
}
|
|
11
|
+
toggleOpen() {
|
|
12
|
+
const newOpenState = !this.open;
|
|
13
|
+
this.open = newOpenState;
|
|
14
|
+
this.openChange.emit(newOpenState);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
ToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ToggleComponent, selector: "riv-toggle", inputs: { open: "open", disabled: "disabled" }, outputs: { openChange: "openChange" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }], ngImport: i0, template: "<button\n type=\"button\"\n class=\"toggle-button\"\n [attr.disabled]=\"disabled ? true : null\"\n (click)=\"toggleOpen()\"\n>\n <div *ngIf=\"triggerTemplate; let tpl\" class=\"content\">\n <ng-container\n *ngTemplateOutlet=\"tpl; context: { open: open }\"\n ></ng-container>\n </div>\n <riv-icon [class.open]=\"open\" [name]=\"'ChevronDown'\" [size]=\"24\"></riv-icon>\n</button>\n\n<ng-container *ngIf=\"open\">\n <ng-content></ng-content>\n</ng-container>\n", styles: [".toggle-button{display:flex;align-items:center;justify-content:space-between;width:100%;border:none;background:none;padding:var(--size-xsmall);font:var(--input-medium);text-align:left;border-radius:var(--border-radius-medium);color:inherit;gap:var(--size-small);cursor:pointer;transition:background-color var(--short-transition)}.toggle-button:hover:not(:disabled){background-color:var(--surface-light-1)}.toggle-button:active:not(:disabled){background-color:var(--surface-light-2)}.toggle-button:disabled{cursor:default;color:var(--type-light-disabled)}.toggle-button .content{flex-grow:1}riv-icon{transition:transform var(--medium-transition)}riv-icon.open{transform:rotate(-180deg)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
20
|
+
type: Component,
|
|
21
|
+
args: [{ selector: 'riv-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"toggle-button\"\n [attr.disabled]=\"disabled ? true : null\"\n (click)=\"toggleOpen()\"\n>\n <div *ngIf=\"triggerTemplate; let tpl\" class=\"content\">\n <ng-container\n *ngTemplateOutlet=\"tpl; context: { open: open }\"\n ></ng-container>\n </div>\n <riv-icon [class.open]=\"open\" [name]=\"'ChevronDown'\" [size]=\"24\"></riv-icon>\n</button>\n\n<ng-container *ngIf=\"open\">\n <ng-content></ng-content>\n</ng-container>\n", styles: [".toggle-button{display:flex;align-items:center;justify-content:space-between;width:100%;border:none;background:none;padding:var(--size-xsmall);font:var(--input-medium);text-align:left;border-radius:var(--border-radius-medium);color:inherit;gap:var(--size-small);cursor:pointer;transition:background-color var(--short-transition)}.toggle-button:hover:not(:disabled){background-color:var(--surface-light-1)}.toggle-button:active:not(:disabled){background-color:var(--surface-light-2)}.toggle-button:disabled{cursor:default;color:var(--type-light-disabled)}.toggle-button .content{flex-grow:1}riv-icon{transition:transform var(--medium-transition)}riv-icon.open{transform:rotate(-180deg)}\n"] }]
|
|
22
|
+
}], propDecorators: { open: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], disabled: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], openChange: [{
|
|
27
|
+
type: Output
|
|
28
|
+
}], triggerTemplate: [{
|
|
29
|
+
type: ContentChild,
|
|
30
|
+
args: ['trigger']
|
|
31
|
+
}] } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2NvbnRlbnQtdG9nZ2xlL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvY29udGVudC10b2dnbGUvdG9nZ2xlL3RvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkIsTUFBTSxPQUFPLGVBQWU7SUFONUI7UUFRRSxTQUFJLEdBQVksS0FBSyxDQUFDO1FBR3RCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsZUFBVSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0tBVWpFO0lBTEMsVUFBVTtRQUNSLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs0R0FqQlUsZUFBZTtnR0FBZixlQUFlLGlQQ2hCNUIsaWVBaUJBOzJGRERhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9nZ2xlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBvcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQENvbnRlbnRDaGlsZCgndHJpZ2dlcicpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgb3BlbjogYm9vbGVhbiB9PjtcblxuICB0b2dnbGVPcGVuKCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld09wZW5TdGF0ZSA9ICF0aGlzLm9wZW47XG4gICAgdGhpcy5vcGVuID0gbmV3T3BlblN0YXRlO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KG5ld09wZW5TdGF0ZSk7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgdHlwZT1cImJ1dHRvblwiXG4gIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiXG4gIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAoY2xpY2spPVwidG9nZ2xlT3BlbigpXCJcbj5cbiAgPGRpdiAqbmdJZj1cInRyaWdnZXJUZW1wbGF0ZTsgbGV0IHRwbFwiIGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsOyBjb250ZXh0OiB7IG9wZW46IG9wZW4gfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPHJpdi1pY29uIFtjbGFzcy5vcGVuXT1cIm9wZW5cIiBbbmFtZV09XCInQ2hldnJvbkRvd24nXCIgW3NpemVdPVwiMjRcIj48L3Jpdi1pY29uPlxuPC9idXR0b24+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJvcGVuXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, ViewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, Input, ViewChild, } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
@@ -8,6 +8,7 @@ import * as i4 from "../overlay.directive";
|
|
|
8
8
|
export class MenuComponent {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.open = new BehaviorSubject(false);
|
|
11
|
+
this.preferredPosition = 'bottom-left';
|
|
11
12
|
}
|
|
12
13
|
getTrigger() {
|
|
13
14
|
return (this.customTriggerButton?.nativeElement ??
|
|
@@ -15,11 +16,13 @@ export class MenuComponent {
|
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
MenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
-
MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuComponent, selector: "riv-menu", queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }], viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true, read: ElementRef }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button #customTriggerButton class=\"custom-trigger\" (click)=\"open.next(true)\">\n <ng-container *ngTemplateOutlet=\"triggerTemplate\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #standardTrigger>\n <button\n #standardTriggerButton\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"'MoreVertical'\"\n (click)=\"open.next(true)\"\n ></button>\n</ng-template>\n\n<ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [preferredPosition]=\"
|
|
19
|
+
MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MenuComponent, selector: "riv-menu", inputs: { preferredPosition: "preferredPosition" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }], viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true, read: ElementRef }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button #customTriggerButton class=\"custom-trigger\" (click)=\"open.next(true)\">\n <ng-container *ngTemplateOutlet=\"triggerTemplate\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #standardTrigger>\n <button\n #standardTriggerButton\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"'MoreVertical'\"\n (click)=\"open.next(true)\"\n ></button>\n</ng-template>\n\n<ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [theme]=\"'light'\"\n (close)=\"open.next(false)\"\n >\n <div class=\"options\">\n <ng-content></ng-content>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}.custom-trigger{max-width:100%}.options{display:flex;flex-direction:column;align-items:stretch;gap:var(--size-small);padding:var(--size-large);min-width:calc(var(--base-grid-size) * 58)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "directive", type: i4.OverlayDirective, selector: "[riv-overlay]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MenuComponent, decorators: [{
|
|
20
21
|
type: Component,
|
|
21
|
-
args: [{ selector: 'riv-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button #customTriggerButton class=\"custom-trigger\" (click)=\"open.next(true)\">\n <ng-container *ngTemplateOutlet=\"triggerTemplate\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #standardTrigger>\n <button\n #standardTriggerButton\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"'MoreVertical'\"\n (click)=\"open.next(true)\"\n ></button>\n</ng-template>\n\n<ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [preferredPosition]=\"
|
|
22
|
-
}], propDecorators: {
|
|
22
|
+
args: [{ selector: 'riv-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button #customTriggerButton class=\"custom-trigger\" (click)=\"open.next(true)\">\n <ng-container *ngTemplateOutlet=\"triggerTemplate\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #standardTrigger>\n <button\n #standardTriggerButton\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"'MoreVertical'\"\n (click)=\"open.next(true)\"\n ></button>\n</ng-template>\n\n<ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [theme]=\"'light'\"\n (close)=\"open.next(false)\"\n >\n <div class=\"options\">\n <ng-content></ng-content>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}.custom-trigger{max-width:100%}.options{display:flex;flex-direction:column;align-items:stretch;gap:var(--size-small);padding:var(--size-large);min-width:calc(var(--base-grid-size) * 58)}\n"] }]
|
|
23
|
+
}], propDecorators: { preferredPosition: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], triggerTemplate: [{
|
|
23
26
|
type: ContentChild,
|
|
24
27
|
args: ['trigger']
|
|
25
28
|
}], customTriggerButton: [{
|
|
@@ -29,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
29
32
|
type: ViewChild,
|
|
30
33
|
args: ['standardTriggerButton', { read: ElementRef }]
|
|
31
34
|
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9tb2RhbC9tZW51L21lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbW9kYWwvbWVudS9tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFTdkMsTUFBTSxPQUFPLGFBQWE7SUFOMUI7UUFPa0IsU0FBSSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRzNELHNCQUFpQixHQUFzQyxhQUFhLENBQUM7S0FpQnRFO0lBTkMsVUFBVTtRQUNSLE9BQU8sQ0FDTCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsYUFBYTtZQUN2QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsYUFBYSxDQUMxQyxDQUFDO0lBQ0osQ0FBQzs7MEdBcEJVLGFBQWE7OEZBQWIsYUFBYSxtVEFTa0IsVUFBVSx5SEFHUixVQUFVLDZCQzlCeEQsMDBCQStCQTsyRkRiYSxhQUFhO2tCQU56QixTQUFTOytCQUNFLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTTs4QkFNL0MsaUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxTQUFTO2dCQUl2QixtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl0RCxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGxvdXRDb21wb25lbnQgfSBmcm9tICcuLi9jYWxsb3V0L2NhbGxvdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lbnUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgcHJlZmVycmVkUG9zaXRpb246IENhbGxvdXRDb21wb25lbnQuQW5jaG9yZWRQb3NpdGlvbiA9ICdib3R0b20tbGVmdCc7XG5cbiAgQENvbnRlbnRDaGlsZCgndHJpZ2dlcicpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbVRyaWdnZXJCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY3VzdG9tVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc3RhbmRhcmRUcmlnZ2VyQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHN0YW5kYXJkVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG5cbiAgZ2V0VHJpZ2dlcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VzdG9tVHJpZ2dlckJ1dHRvbj8ubmF0aXZlRWxlbWVudCA/P1xuICAgICAgdGhpcy5zdGFuZGFyZFRyaWdnZXJCdXR0b24/Lm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidHJpZ2dlclRlbXBsYXRlOyBlbHNlIHN0YW5kYXJkVHJpZ2dlclwiPlxuICA8YnV0dG9uICNjdXN0b21UcmlnZ2VyQnV0dG9uIGNsYXNzPVwiY3VzdG9tLXRyaWdnZXJcIiAoY2xpY2spPVwib3Blbi5uZXh0KHRydWUpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3N0YW5kYXJkVHJpZ2dlcj5cbiAgPGJ1dHRvblxuICAgICNzdGFuZGFyZFRyaWdnZXJCdXR0b25cbiAgICByaXZCdXR0b25cbiAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICBbc2l6ZV09XCIneHNtYWxsJ1wiXG4gICAgW2ljb25dPVwiJ01vcmVWZXJ0aWNhbCdcIlxuICAgIChjbGljayk9XCJvcGVuLm5leHQodHJ1ZSlcIlxuICA+PC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwib3BlbiB8IGFzeW5jXCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtb3ZlcmxheVxuICAgIFthbmNob3JdPVwiZ2V0VHJpZ2dlcigpXCJcbiAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwicHJlZmVycmVkUG9zaXRpb25cIlxuICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAoY2xvc2UpPVwib3Blbi5uZXh0KGZhbHNlKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwib3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L3Jpdi1jYWxsb3V0PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { RivViews } from '../state';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../../../input/button/button.component";
|
|
6
|
+
import * as i3 from "../../../visualization/highlight/highlight.component";
|
|
7
|
+
import * as i4 from "../../../icon/icon.component";
|
|
8
|
+
import * as i5 from "../../../input/search/search.component";
|
|
9
|
+
import * as i6 from "../../../modal/side-sheet/side-sheet.component";
|
|
10
|
+
import * as i7 from "../../../content-toggle/toggle/toggle.component";
|
|
11
|
+
import * as i8 from "../view-menu/view-menu.component";
|
|
12
|
+
import * as i9 from "../../../visualization/zero-state/zero-state.component";
|
|
13
|
+
export class AllViewsModalComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.topOffset = 0;
|
|
16
|
+
this.close = new EventEmitter();
|
|
17
|
+
this.getPermissionTitle = RivViews.getPermissionTitle;
|
|
18
|
+
this.getPermissionDescription = RivViews.getPermissionDescription;
|
|
19
|
+
}
|
|
20
|
+
getOpenChange(permission) {
|
|
21
|
+
return (open) => this.manager?.actions?.next({
|
|
22
|
+
type: 'setAllViewsToggle',
|
|
23
|
+
permission,
|
|
24
|
+
open,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
trackById(_, view) {
|
|
28
|
+
return view.id;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
AllViewsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllViewsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
AllViewsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AllViewsModalComponent, selector: "riv-all-views-modal", inputs: { manager: "manager", topOffset: "topOffset" }, outputs: { close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private'),\n emptyStateMessage: s.all.privateEmptyStateMessage\n }\"\n ></ng-container>\n <ng-container\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared'),\n emptyStateMessage: s.all.sharedEmptyStateMessage\n }\"\n ></ng-container>\n <ng-container\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public'),\n emptyStateMessage: s.all.publicEmptyStateMessage\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n let-emptyStateMessage=\"emptyStateMessage\"\n >\n <riv-toggle\n [open]=\"open\"\n (openChange)=\"openChange($event)\"\n [disabled]=\"!!s.all.search\"\n >\n <ng-template #trigger>\n <div>\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n </ng-template>\n\n <div class=\"views-list\" *ngIf=\"views.length > 0; else noViews\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n >\n <riv-icon\n [name]=\"view.enabled ? 'Eye' : 'EyeOff'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n <ng-template #noViews>\n <riv-zero-state [message]=\"emptyStateMessage\"></riv-zero-state>\n </ng-template>\n </riv-toggle>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding-left:var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-item riv-highlight{text-align:left;flex-grow:1}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "active"] }, { kind: "component", type: i3.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i5.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name"] }, { kind: "component", type: i6.SideSheetComponent, selector: "riv-side-sheet", inputs: ["topOffset"], outputs: ["close"] }, { kind: "component", type: i7.ToggleComponent, selector: "riv-toggle", inputs: ["open", "disabled"], outputs: ["openChange"] }, { kind: "component", type: i8.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view"] }, { kind: "component", type: i9.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllViewsModalComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'riv-all-views-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private'),\n emptyStateMessage: s.all.privateEmptyStateMessage\n }\"\n ></ng-container>\n <ng-container\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared'),\n emptyStateMessage: s.all.sharedEmptyStateMessage\n }\"\n ></ng-container>\n <ng-container\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public'),\n emptyStateMessage: s.all.publicEmptyStateMessage\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n let-emptyStateMessage=\"emptyStateMessage\"\n >\n <riv-toggle\n [open]=\"open\"\n (openChange)=\"openChange($event)\"\n [disabled]=\"!!s.all.search\"\n >\n <ng-template #trigger>\n <div>\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n </ng-template>\n\n <div class=\"views-list\" *ngIf=\"views.length > 0; else noViews\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n >\n <riv-icon\n [name]=\"view.enabled ? 'Eye' : 'EyeOff'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n <ng-template #noViews>\n <riv-zero-state [message]=\"emptyStateMessage\"></riv-zero-state>\n </ng-template>\n </riv-toggle>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n", styles: [".content{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:100%}header{display:flex;justify-content:space-between;align-items:center}.title{font:var(--title-02)}.views{flex-grow:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--size-xlarge)}.permission-title{font:var(--title-02)}.permission-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.views-list{display:flex;flex-direction:column;gap:var(--size-small)}.view-item{display:flex;align-items:center;padding-left:var(--size-small);border-radius:var(--border-radius-small);cursor:pointer;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}.view-item:hover{background-color:var(--surface-light-1)}.view-item:active{background-color:var(--surface-light-2)}.view-item riv-highlight{text-align:left;flex-grow:1}.view-item riv-view-menu{align-self:flex-end;opacity:0;transition:opacity var(--short-transition)}.view-item:hover riv-view-menu{opacity:1}.enable-view{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;padding:0 var(--size-xsmall);transition:color var(--medium-transition);color:var(--type-light-low-contrast)}.enable-view.enabled{color:var(--type-light-link)}.enable-view.enabled:hover{color:var(--type-light-link-hover)}.enable-view.enabled:active{color:var(--type-light-link-active)}\n"] }]
|
|
36
|
+
}], propDecorators: { manager: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], topOffset: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], close: [{
|
|
41
|
+
type: Output
|
|
42
|
+
}] } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLXZpZXdzLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3MvYWxsLXZpZXdzLW1vZGFsL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL2FsbC12aWV3cy1tb2RhbC9hbGwtdmlld3MtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7QUFRcEMsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQVdFLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFHdEIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFXM0IsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pELDZCQUF3QixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQztLQUs5RDtJQWZDLGFBQWEsQ0FBQyxVQUFtQztRQUMvQyxPQUFPLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO1lBQzFCLElBQUksRUFBRSxtQkFBbUI7WUFDekIsVUFBVTtZQUNWLElBQUk7U0FDTCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBS0QsU0FBUyxDQUFDLENBQVMsRUFBRSxJQUEwQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7bUhBeEJVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGdKQ2ZuQywybUpBdUlBOzJGRHhIYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07OEJBSS9DLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtYWxsLXZpZXdzLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsbC12aWV3cy1tb2RhbC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbGxWaWV3c01vZGFsQ29tcG9uZW50PFYgZXh0ZW5kcyBSaXZWaWV3cy5WaWV3PiB7XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFY+O1xuXG4gIEBJbnB1dCgpXG4gIHRvcE9mZnNldDogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KClcbiAgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZ2V0T3BlbkNoYW5nZShwZXJtaXNzaW9uOiBSaXZWaWV3cy5WaWV3UGVybWlzc2lvbik6IChvcGVuOiBib29sZWFuKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKG9wZW46IGJvb2xlYW4pID0+XG4gICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnLFxuICAgICAgICBwZXJtaXNzaW9uLFxuICAgICAgICBvcGVuLFxuICAgICAgfSk7XG4gIH1cblxuICBnZXRQZXJtaXNzaW9uVGl0bGUgPSBSaXZWaWV3cy5nZXRQZXJtaXNzaW9uVGl0bGU7XG4gIGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbiA9IFJpdlZpZXdzLmdldFBlcm1pc3Npb25EZXNjcmlwdGlvbjtcblxuICB0cmFja0J5SWQoXzogbnVtYmVyLCB2aWV3OiBSaXZWaWV3cy5GdWxsVmlldzxWPik6IFZbJ2lkJ10ge1xuICAgIHJldHVybiB2aWV3LmlkO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibWFuYWdlcj8uc3RhdGUgfCBhc3luYzsgbGV0IHNcIj5cbiAgPHJpdi1zaWRlLXNoZWV0IFt0b3BPZmZzZXRdPVwidG9wT2Zmc2V0XCIgKGNsb3NlKT1cImNsb3NlLmVtaXQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICA8aGVhZGVyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+QWxsIHZpZXdzPC9zcGFuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgW2ljb25dPVwiJ1gnXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2UuZW1pdCgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIDxyaXYtc2VhcmNoXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJcbiAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRBbGxWaWV3c1NlYXJjaFF1ZXJ5JyxcbiAgICAgICAgICAgIHF1ZXJ5OiAkZXZlbnRcbiAgICAgICAgICB9KVxuICAgICAgICBcIlxuICAgICAgICBbdmFsdWVdPVwicy5hbGwuc2VhcmNoXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgPjwvcml2LXNlYXJjaD5cblxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdzXCI+XG4gICAgICAgIDwhLS0gVmlldyBzZWN0aW9ucyBieSBwZXJtaXNzaW9uIHR5cGUgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwZXJtaXNzaW9uU2VjdGlvblwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgIHBlcm1pc3Npb246ICdwcml2YXRlJyxcbiAgICAgICAgICAgIG9wZW46IHMuYWxsLnByaXZhdGVPcGVuLFxuICAgICAgICAgICAgb3BlbkNoYW5nZTogZ2V0T3BlbkNoYW5nZSgncHJpdmF0ZScpLFxuICAgICAgICAgICAgdmlld3M6IHMuYWxsLnByaXZhdGVWaWV3cyxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRQZXJtaXNzaW9uVGl0bGUoJ3ByaXZhdGUnKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24oJ3ByaXZhdGUnKSxcbiAgICAgICAgICAgIGVtcHR5U3RhdGVNZXNzYWdlOiBzLmFsbC5wcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2VcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicGVybWlzc2lvblNlY3Rpb25cIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAnc2hhcmVkJyxcbiAgICAgICAgICAgIG9wZW46IHMuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICBvcGVuQ2hhbmdlOiBnZXRPcGVuQ2hhbmdlKCdzaGFyZWQnKSxcbiAgICAgICAgICAgIHZpZXdzOiBzLmFsbC5zaGFyZWRWaWV3cyxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRQZXJtaXNzaW9uVGl0bGUoJ3NoYXJlZCcpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbignc2hhcmVkJyksXG4gICAgICAgICAgICBlbXB0eVN0YXRlTWVzc2FnZTogcy5hbGwuc2hhcmVkRW1wdHlTdGF0ZU1lc3NhZ2VcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicGVybWlzc2lvblNlY3Rpb25cIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICBwZXJtaXNzaW9uOiAncHVibGljJyxcbiAgICAgICAgICAgIG9wZW46IHMuYWxsLnB1YmxpY09wZW4sXG4gICAgICAgICAgICBvcGVuQ2hhbmdlOiBnZXRPcGVuQ2hhbmdlKCdwdWJsaWMnKSxcbiAgICAgICAgICAgIHZpZXdzOiBzLmFsbC5wdWJsaWNWaWV3cyxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRQZXJtaXNzaW9uVGl0bGUoJ3B1YmxpYycpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbigncHVibGljJyksXG4gICAgICAgICAgICBlbXB0eVN0YXRlTWVzc2FnZTogcy5hbGwucHVibGljRW1wdHlTdGF0ZU1lc3NhZ2VcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gUGVybWlzc2lvbiBzZWN0aW9uIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAjcGVybWlzc2lvblNlY3Rpb25cbiAgICAgICAgICBsZXQtcGVybWlzc2lvbj1cInBlcm1pc3Npb25cIlxuICAgICAgICAgIGxldC1vcGVuPVwib3BlblwiXG4gICAgICAgICAgbGV0LW9wZW5DaGFuZ2U9XCJvcGVuQ2hhbmdlXCJcbiAgICAgICAgICBsZXQtdmlld3M9XCJ2aWV3c1wiXG4gICAgICAgICAgbGV0LXRpdGxlPVwidGl0bGVcIlxuICAgICAgICAgIGxldC1kZXNjcmlwdGlvbj1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBsZXQtZW1wdHlTdGF0ZU1lc3NhZ2U9XCJlbXB0eVN0YXRlTWVzc2FnZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cml2LXRvZ2dsZVxuICAgICAgICAgICAgW29wZW5dPVwib3BlblwiXG4gICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJvcGVuQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhcy5hbGwuc2VhcmNoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicGVybWlzc2lvbi10aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcm1pc3Npb24tZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmlld3MtbGlzdFwiICpuZ0lmPVwidmlld3MubGVuZ3RoID4gMDsgZWxzZSBub1ZpZXdzXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmlldyBvZiB2aWV3czsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZpZXctaXRlbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRBY3RpdmVWaWV3JyxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHZpZXcuaWRcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgY2xvc2UuZW1pdCgpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ2aWV3LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cInZpZXcudGl0bGVIaWdobGlnaHRJbmRpY2VzID8/IFtdXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICAgIDxyaXYtdmlldy1tZW51XG4gICAgICAgICAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICAgICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICAgICAgICAgID48L3Jpdi12aWV3LW1lbnU+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbmFibGUtdmlld1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZW5hYmxlZF09XCJ2aWV3LmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRFbmFibGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiAhdmlldy5lbmFibGVkXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ2aWV3LmVuYWJsZWQgPyAnRXllJyA6ICdFeWVPZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICAgICAgICAgICAgPjwvcml2LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVmlld3M+XG4gICAgICAgICAgICAgIDxyaXYtemVyby1zdGF0ZSBbbWVzc2FnZV09XCJlbXB0eVN0YXRlTWVzc2FnZVwiPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvcml2LXRvZ2dsZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3Jpdi1zaWRlLXNoZWV0PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,41 +1,64 @@
|
|
|
1
1
|
import Fuse from 'fuse.js';
|
|
2
|
-
import { defaultsDeep } from 'lodash';
|
|
2
|
+
import { defaultsDeep, sortBy } from 'lodash';
|
|
3
3
|
import { connectable, from, map, mergeScan, ReplaySubject, startWith, Subject, } from 'rxjs';
|
|
4
4
|
export var RivViews;
|
|
5
5
|
(function (RivViews) {
|
|
6
6
|
RivViews.ViewPermissions = ['private', 'public', 'shared'];
|
|
7
|
-
function createManager(source, duplicate, options) {
|
|
7
|
+
function createManager(source, duplicate, copyLink, options) {
|
|
8
8
|
const defaultState = {
|
|
9
9
|
views: [],
|
|
10
10
|
activeViewId: null,
|
|
11
11
|
defaultViewId: null,
|
|
12
12
|
containerWidth: 0,
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
overflow: {
|
|
14
|
+
search: '',
|
|
15
|
+
pickerOpen: false,
|
|
16
|
+
},
|
|
17
|
+
all: {
|
|
18
|
+
search: '',
|
|
19
|
+
privateOpen: true,
|
|
20
|
+
sharedOpen: true,
|
|
21
|
+
publicOpen: true,
|
|
22
|
+
},
|
|
15
23
|
};
|
|
16
24
|
const defaultedInitialState = defaultsDeep({}, options?.initialState, defaultState);
|
|
17
25
|
const actions = new Subject();
|
|
18
|
-
const coreState = actions.pipe(mergeScan((state, action) => from(reduce(state, action, source, duplicate)), defaultedInitialState, 1), startWith(defaultedInitialState));
|
|
26
|
+
const coreState = actions.pipe(mergeScan((state, action) => from(reduce(state, action, source, duplicate, copyLink)), defaultedInitialState, 1), startWith(defaultedInitialState));
|
|
19
27
|
const state = connectable(coreState.pipe(map(s => {
|
|
20
28
|
// If for some reason the active view is not currently enabled, we'll
|
|
21
29
|
// default to making the first view active instead.
|
|
22
30
|
const activeView = s.views.find(view => view.enabled && view.id === s.activeViewId);
|
|
23
|
-
const
|
|
24
|
-
.filter(view => view.enabled)
|
|
25
|
-
.map((view, i) => ({
|
|
31
|
+
const allViews = s.views.map((view, i) => ({
|
|
26
32
|
...view,
|
|
27
33
|
active: activeView ? activeView.id === view.id : i === 0,
|
|
28
34
|
default: view.id === s.defaultViewId,
|
|
29
35
|
}));
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
const allEnabledViews = allViews.filter(view => view.enabled);
|
|
37
|
+
const displayedViews = calculateDisplayedViews(allEnabledViews, calculateOverflowViewIndex(s), s.activeViewId);
|
|
38
|
+
const enabledViews = s.overflow.search
|
|
39
|
+
? searchViews(allEnabledViews, s.overflow.search, options?.fuseOptions)
|
|
40
|
+
: allEnabledViews;
|
|
41
|
+
const allViewsFiltered = s.all.search
|
|
42
|
+
? searchViews(allViews, s.all.search, options?.fuseOptions)
|
|
43
|
+
: allViews;
|
|
44
|
+
const searchingAllViews = !!s.all.search;
|
|
34
45
|
return {
|
|
35
46
|
...s,
|
|
36
|
-
|
|
47
|
+
allViews,
|
|
37
48
|
displayedViews,
|
|
38
|
-
|
|
49
|
+
enabledViews,
|
|
50
|
+
all: {
|
|
51
|
+
...s.all,
|
|
52
|
+
privateOpen: searchingAllViews || s.all.privateOpen,
|
|
53
|
+
privateViews: viewsByPermission(allViewsFiltered, 'private'),
|
|
54
|
+
privateEmptyStateMessage: getEmptyStateMessage(s, 'private'),
|
|
55
|
+
sharedOpen: searchingAllViews || s.all.sharedOpen,
|
|
56
|
+
sharedViews: viewsByPermission(allViewsFiltered, 'shared'),
|
|
57
|
+
sharedEmptyStateMessage: getEmptyStateMessage(s, 'shared'),
|
|
58
|
+
publicOpen: searchingAllViews || s.all.publicOpen,
|
|
59
|
+
publicViews: viewsByPermission(allViewsFiltered, 'public'),
|
|
60
|
+
publicEmptyStateMessage: getEmptyStateMessage(s, 'public'),
|
|
61
|
+
},
|
|
39
62
|
};
|
|
40
63
|
})), {
|
|
41
64
|
connector: () => new ReplaySubject(1),
|
|
@@ -74,8 +97,11 @@ export var RivViews;
|
|
|
74
97
|
}
|
|
75
98
|
return displayedViews;
|
|
76
99
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
100
|
+
function viewsByPermission(views, permission) {
|
|
101
|
+
return sortBy(views.filter(view => view.permission === permission), 'title');
|
|
102
|
+
}
|
|
103
|
+
function searchViews(views, query, options) {
|
|
104
|
+
const fuse = new Fuse(views, {
|
|
79
105
|
threshold: 0.2,
|
|
80
106
|
keys: ['title'],
|
|
81
107
|
includeMatches: true,
|
|
@@ -133,7 +159,13 @@ export var RivViews;
|
|
|
133
159
|
];
|
|
134
160
|
}
|
|
135
161
|
}
|
|
136
|
-
|
|
162
|
+
function getEmptyStateMessage(state, permission) {
|
|
163
|
+
if (state.all.search)
|
|
164
|
+
return `No ${permission} views matching "${state.all.search}"`;
|
|
165
|
+
else
|
|
166
|
+
return `No ${permission} views`;
|
|
167
|
+
}
|
|
168
|
+
async function reduce(state, action, source, duplicate, copyLink) {
|
|
137
169
|
switch (action.type) {
|
|
138
170
|
case 'load':
|
|
139
171
|
return {
|
|
@@ -144,6 +176,15 @@ export var RivViews;
|
|
|
144
176
|
return {
|
|
145
177
|
...state,
|
|
146
178
|
activeViewId: action.id,
|
|
179
|
+
views: state.views.map(view => view.id === action.id ? { ...view, enabled: true } : view),
|
|
180
|
+
all: {
|
|
181
|
+
...state.all,
|
|
182
|
+
search: '',
|
|
183
|
+
},
|
|
184
|
+
overflow: {
|
|
185
|
+
...state.overflow,
|
|
186
|
+
search: '',
|
|
187
|
+
},
|
|
147
188
|
};
|
|
148
189
|
case 'setDefaultView':
|
|
149
190
|
return {
|
|
@@ -160,12 +201,26 @@ export var RivViews;
|
|
|
160
201
|
case 'setOverflowPickerOpen':
|
|
161
202
|
return {
|
|
162
203
|
...state,
|
|
163
|
-
|
|
204
|
+
overflow: {
|
|
205
|
+
...state.overflow,
|
|
206
|
+
pickerOpen: action.open,
|
|
207
|
+
},
|
|
164
208
|
};
|
|
165
209
|
case 'setOverflowSearchQuery':
|
|
166
210
|
return {
|
|
167
211
|
...state,
|
|
168
|
-
|
|
212
|
+
overflow: {
|
|
213
|
+
...state.overflow,
|
|
214
|
+
search: action.query,
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
case 'setAllViewsSearchQuery':
|
|
218
|
+
return {
|
|
219
|
+
...state,
|
|
220
|
+
all: {
|
|
221
|
+
...state.all,
|
|
222
|
+
search: action.query,
|
|
223
|
+
},
|
|
169
224
|
};
|
|
170
225
|
case 'updateView':
|
|
171
226
|
return {
|
|
@@ -179,7 +234,51 @@ export var RivViews;
|
|
|
179
234
|
...state,
|
|
180
235
|
views: await withDuplicateView(state.views, action.view, duplicate),
|
|
181
236
|
};
|
|
237
|
+
case 'copyLinkToView':
|
|
238
|
+
await copyLink(action.view);
|
|
239
|
+
return state;
|
|
240
|
+
case 'setAllViewsToggle':
|
|
241
|
+
return {
|
|
242
|
+
...state,
|
|
243
|
+
all: {
|
|
244
|
+
...state.all,
|
|
245
|
+
privateOpen: action.permission === 'private'
|
|
246
|
+
? action.open
|
|
247
|
+
: state.all.privateOpen,
|
|
248
|
+
sharedOpen: action.permission === 'shared'
|
|
249
|
+
? action.open
|
|
250
|
+
: state.all.sharedOpen,
|
|
251
|
+
publicOpen: action.permission === 'public'
|
|
252
|
+
? action.open
|
|
253
|
+
: state.all.publicOpen,
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
///////////////
|
|
259
|
+
// Utilities //
|
|
260
|
+
///////////////
|
|
261
|
+
function getPermissionTitle(permission) {
|
|
262
|
+
switch (permission) {
|
|
263
|
+
case 'private':
|
|
264
|
+
return 'Private';
|
|
265
|
+
case 'shared':
|
|
266
|
+
return 'Shared';
|
|
267
|
+
case 'public':
|
|
268
|
+
return 'Public';
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
RivViews.getPermissionTitle = getPermissionTitle;
|
|
272
|
+
function getPermissionDescription(permission) {
|
|
273
|
+
switch (permission) {
|
|
274
|
+
case 'private':
|
|
275
|
+
return 'Only visible to you';
|
|
276
|
+
case 'shared':
|
|
277
|
+
return 'Only visible to those with access';
|
|
278
|
+
case 'public':
|
|
279
|
+
return 'Visible to everyone';
|
|
182
280
|
}
|
|
183
281
|
}
|
|
282
|
+
RivViews.getPermissionDescription = getPermissionDescription;
|
|
184
283
|
})(RivViews || (RivViews = {}));
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsV0FBVyxFQUVYLElBQUksRUFDSixHQUFHLEVBQ0gsU0FBUyxFQUVULGFBQWEsRUFDYixTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBSWQsTUFBTSxLQUFXLFFBQVEsQ0ErVnhCO0FBL1ZELFdBQWlCLFFBQVE7SUFDVix3QkFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQVUsQ0FBQztJQTBFeEUsU0FBZ0IsYUFBYSxDQUMzQixNQUFpQixFQUNqQixTQUF1QixFQUN2QixPQUEyQjtRQUUzQixNQUFNLFlBQVksR0FBaUI7WUFDakMsS0FBSyxFQUFFLEVBQUU7WUFDVCxZQUFZLEVBQUUsSUFBSTtZQUNsQixhQUFhLEVBQUUsSUFBSTtZQUNuQixjQUFjLEVBQUUsQ0FBQztZQUNqQixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLG1CQUFtQixFQUFFLEVBQUU7U0FDeEIsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQWlCLFlBQVksQ0FDdEQsRUFBRSxFQUNGLE9BQU8sRUFBRSxZQUFZLEVBQ3JCLFlBQVksQ0FDYixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbEQsTUFBTSxTQUFTLEdBQTZCLE9BQU8sQ0FBQyxJQUFJLENBQ3RELFNBQVMsQ0FDUCxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFDakUscUJBQXFCLEVBQ3JCLENBQUMsQ0FDRixFQUNELFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUNqQyxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQThCLFdBQVcsQ0FDbEQsU0FBUyxDQUFDLElBQUksQ0FDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixxRUFBcUU7WUFDckUsbURBQW1EO1lBQ25ELE1BQU0sVUFBVSxHQUFrQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FDbkQsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLO2lCQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUM1QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixHQUFHLElBQUk7Z0JBQ1AsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDeEQsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLGFBQWE7YUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDTixNQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FDNUMsU0FBUyxFQUNULDBCQUEwQixDQUFDLENBQUMsQ0FBQyxFQUM3QixDQUFDLENBQUMsWUFBWSxDQUNmLENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsbUJBQW1CO2dCQUN6QyxDQUFDLENBQUMsV0FBVyxDQUNULFNBQVMsRUFDVCxDQUFDLENBQUMsbUJBQW1CLEVBQ3JCLE9BQU8sRUFBRSxXQUFXLENBQ3JCO2dCQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFZCxPQUFPO2dCQUNMLEdBQUcsQ0FBQztnQkFDSixTQUFTO2dCQUNULGNBQWM7Z0JBQ2QsYUFBYTthQUNkLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxFQUNEO1lBQ0UsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNyQyxpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCLENBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVoQiw2QkFBNkI7UUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQTlFZSxzQkFBYSxnQkE4RTVCLENBQUE7SUFFRCxrQ0FBa0M7SUFDbEMsa0NBQWtDO0lBQ2xDLGtDQUFrQztJQUVsQyxTQUFTLDBCQUEwQixDQUNqQyxLQUFtQjtRQUVuQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5RCxxQ0FBcUM7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFaEUscURBQXFEO1FBQ3JELE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRWpELDhFQUE4RTtRQUM5RSx3RkFBd0Y7UUFDeEYsSUFBSSxrQkFBa0IsSUFBSSxZQUFZLENBQUMsTUFBTTtZQUFFLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQzs7WUFDckUsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7SUFDckUsQ0FBQztJQUVELFNBQVMsdUJBQXVCLENBQzlCLFNBQXdCLEVBQ3hCLGlCQUF5QixFQUN6QixZQUEwQztRQUUxQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTdELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FDakMsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ2pELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDO1lBQ3BFLElBQUksVUFBVSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxXQUFXLENBQ2xCLFNBQXdCLEVBQ3hCLEtBQWEsRUFDYixPQUF5QjtRQUV6QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDL0IsU0FBUyxFQUFFLEdBQUc7WUFDZCxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDZixjQUFjLEVBQUUsSUFBSTtZQUNwQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBOEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRSxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLEdBQUcsTUFBTSxDQUFDLElBQUk7WUFDZCxxQkFBcUIsRUFBRTtnQkFDckIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsRUFBRSxPQUFPO29CQUMvRCxFQUFFLENBQUM7YUFDTjtTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMscUJBQXFCLENBQzVCLEtBQW1CO1FBRW5CLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELE1BQU0sc0JBQXNCLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FDbkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxZQUFZLENBQ3ZDLENBQUM7UUFFRixJQUFJLHNCQUFzQixLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDdEUsT0FBTyxDQUNMLFlBQVksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLFlBQVksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsVUFBVSxDQUNqQixLQUFtQixFQUNuQixFQUFXO1FBRVgsTUFBTSxZQUFZLEdBQ2hCLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtZQUN2QixDQUFDLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RCxPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsS0FBSztZQUNMLFlBQVk7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsVUFBVSxDQUNqQixLQUFtQixFQUNuQixFQUFXLEVBQ1gsT0FBZ0I7UUFFaEIsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM1QixJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM3QztZQUNELFlBQVksRUFDVixDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQ25DLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWTtTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssVUFBVSxpQkFBaUIsQ0FDOUIsS0FBVSxFQUNWLGVBQWtCLEVBQ2xCLFNBQXVCO1FBRXZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN0QixPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLE9BQU87Z0JBQ0wsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO2dCQUNQLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO2FBQ2hDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxLQUFLLFVBQVUsTUFBTSxDQUNuQixLQUFtQixFQUNuQixNQUFpQixFQUNqQixNQUFpQixFQUNqQixTQUF1QjtRQUV2QixRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDbkIsS0FBSyxNQUFNO2dCQUNULE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLEtBQUssRUFBRSxNQUFNLE1BQU0sRUFBRTtpQkFDdEIsQ0FBQztZQUVKLEtBQUssZUFBZTtnQkFDbEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2lCQUN4QixDQUFDO1lBRUosS0FBSyxnQkFBZ0I7Z0JBQ25CLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLGFBQWEsRUFBRSxNQUFNLENBQUMsRUFBRTtpQkFDekIsQ0FBQztZQUVKLEtBQUssWUFBWTtnQkFDZixPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdEQsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU87b0JBQ0wsR0FBRyxLQUFLO29CQUNSLGNBQWMsRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDN0IsQ0FBQztZQUVKLEtBQUssdUJBQXVCO2dCQUMxQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixrQkFBa0IsRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDaEMsQ0FBQztZQUVKLEtBQUssd0JBQXdCO2dCQUMzQixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixtQkFBbUIsRUFBRSxNQUFNLENBQUMsS0FBSztpQkFDbEMsQ0FBQztZQUVKLEtBQUssWUFBWTtnQkFDZixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDNUIsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRDtpQkFDRixDQUFDO1lBRUosS0FBSyxZQUFZO2dCQUNmLE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTNDLEtBQUssZUFBZTtnQkFDbEIsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztpQkFDcEUsQ0FBQztTQUNMO0lBQ0gsQ0FBQztBQUNILENBQUMsRUEvVmdCLFFBQVEsS0FBUixRQUFRLFFBK1Z4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGdXNlLCB7IEZ1c2VSZXN1bHQsIElGdXNlT3B0aW9ucyB9IGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgZGVmYXVsdHNEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGNvbm5lY3RhYmxlLFxuICBDb25uZWN0YWJsZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZVNjYW4sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlzdWFsaXphdGlvbi9oaWdobGlnaHQvaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgUml2Vmlld3Mge1xuICBleHBvcnQgY29uc3QgVmlld1Blcm1pc3Npb25zID0gWydwcml2YXRlJywgJ3B1YmxpYycsICdzaGFyZWQnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgVmlld1Blcm1pc3Npb24gPSAodHlwZW9mIFZpZXdQZXJtaXNzaW9ucylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBWaWV3ID0ge1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxWaWV3PFYgZXh0ZW5kcyBWaWV3ID0gVmlldz4gPSBWICYge1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBkZWZhdWx0OiBib29sZWFuO1xuICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlcz86IEhpZ2hsaWdodENvbXBvbmVudC5IaWdobGlnaHRJbmRpY2VzW107XG4gIH07XG5cbiAgLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgLy9cbiAgLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBDb3JlU3RhdGU8ViBleHRlbmRzIFZpZXc+ID0ge1xuICAgIHZpZXdzOiBWW107XG4gICAgYWN0aXZlVmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBkZWZhdWx0Vmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICAgIG92ZXJmbG93UGlja2VyT3BlbjogYm9vbGVhbjtcbiAgICBvdmVyZmxvd1NlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgRnVsbFN0YXRlPFYgZXh0ZW5kcyBWaWV3PiA9IENvcmVTdGF0ZTxWPiAmIHtcbiAgICBmdWxsVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgZGlzcGxheWVkVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgb3ZlcmZsb3dWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIEFjdGlvbnMgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIEFjdGlvbjxWIGV4dGVuZHMgVmlldz4gPVxuICAgIHwgeyB0eXBlOiAnbG9hZCcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWN0aXZlVmlldyc7IGlkOiBWWydpZCddIH1cbiAgICB8IHsgdHlwZTogJ3NldERlZmF1bHRWaWV3JzsgaWQ6IFZbJ2lkJ10gfVxuICAgIHwgeyB0eXBlOiAnc2V0RW5hYmxlZCc7IGlkOiBWWydpZCddOyBlbmFibGVkOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJzsgd2lkdGg6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOyBvcGVuOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3VwZGF0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2RlbGV0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2R1cGxpY2F0ZVZpZXcnOyB2aWV3OiBWIH07XG5cbiAgLy8vLy8vLy8vLy8vXG4gIC8vIFNvdXJjZSAvL1xuICAvLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBTb3VyY2U8ViBleHRlbmRzIFZpZXc+ID0gKCkgPT4gVltdIHwgUHJvbWlzZTxWW10+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8ViBleHRlbmRzIFZpZXc+ID0gKFxuICAgIHZpZXdUb0R1cGxpY2F0ZTogVixcbiAgKSA9PiBWIHwgUHJvbWlzZTxWPjtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIE1hbmFnZXIgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXI8ViBleHRlbmRzIFZpZXc+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxWIGV4dGVuZHMgVmlldz4gPSB7XG4gICAgaW5pdGlhbFN0YXRlPzogRGVlcFBhcnRpYWw8Q29yZVN0YXRlPFY+PjtcbiAgICBmdXNlT3B0aW9ucz86IElGdXNlT3B0aW9uczxWPjtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFuYWdlcjxWIGV4dGVuZHMgVmlldz4oXG4gICAgc291cmNlOiBTb3VyY2U8Vj4sXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8Vj4sXG4gICAgb3B0aW9ucz86IE1hbmFnZXJPcHRpb25zPFY+LFxuICApOiBNYW5hZ2VyPFY+IHtcbiAgICBjb25zdCBkZWZhdWx0U3RhdGU6IENvcmVTdGF0ZTxWPiA9IHtcbiAgICAgIHZpZXdzOiBbXSxcbiAgICAgIGFjdGl2ZVZpZXdJZDogbnVsbCxcbiAgICAgIGRlZmF1bHRWaWV3SWQ6IG51bGwsXG4gICAgICBjb250YWluZXJXaWR0aDogMCxcbiAgICAgIG92ZXJmbG93UGlja2VyT3BlbjogZmFsc2UsXG4gICAgICBvdmVyZmxvd1NlYXJjaFF1ZXJ5OiAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdGVkSW5pdGlhbFN0YXRlOiBDb3JlU3RhdGU8Vj4gPSBkZWZhdWx0c0RlZXAoXG4gICAgICB7fSxcbiAgICAgIG9wdGlvbnM/LmluaXRpYWxTdGF0ZSxcbiAgICAgIGRlZmF1bHRTdGF0ZSxcbiAgICApO1xuXG4gICAgY29uc3QgYWN0aW9uczogU3ViamVjdDxBY3Rpb248Vj4+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBjb25zdCBjb3JlU3RhdGU6IE9ic2VydmFibGU8Q29yZVN0YXRlPFY+PiA9IGFjdGlvbnMucGlwZShcbiAgICAgIG1lcmdlU2NhbihcbiAgICAgICAgKHN0YXRlLCBhY3Rpb24pID0+IGZyb20ocmVkdWNlKHN0YXRlLCBhY3Rpb24sIHNvdXJjZSwgZHVwbGljYXRlKSksXG4gICAgICAgIGRlZmF1bHRlZEluaXRpYWxTdGF0ZSxcbiAgICAgICAgMSxcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoZGVmYXVsdGVkSW5pdGlhbFN0YXRlKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxWPj4gPSBjb25uZWN0YWJsZShcbiAgICAgIGNvcmVTdGF0ZS5waXBlKFxuICAgICAgICBtYXAocyA9PiB7XG4gICAgICAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBhY3RpdmUgdmlldyBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQsIHdlJ2xsXG4gICAgICAgICAgLy8gZGVmYXVsdCB0byBtYWtpbmcgdGhlIGZpcnN0IHZpZXcgYWN0aXZlIGluc3RlYWQuXG4gICAgICAgICAgY29uc3QgYWN0aXZlVmlldzogViB8IHVuZGVmaW5lZCA9IHMudmlld3MuZmluZChcbiAgICAgICAgICAgIHZpZXcgPT4gdmlldy5lbmFibGVkICYmIHZpZXcuaWQgPT09IHMuYWN0aXZlVmlld0lkLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZnVsbFZpZXdzID0gcy52aWV3c1xuICAgICAgICAgICAgLmZpbHRlcih2aWV3ID0+IHZpZXcuZW5hYmxlZClcbiAgICAgICAgICAgIC5tYXAoKHZpZXcsIGkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLnZpZXcsXG4gICAgICAgICAgICAgIGFjdGl2ZTogYWN0aXZlVmlldyA/IGFjdGl2ZVZpZXcuaWQgPT09IHZpZXcuaWQgOiBpID09PSAwLFxuICAgICAgICAgICAgICBkZWZhdWx0OiB2aWV3LmlkID09PSBzLmRlZmF1bHRWaWV3SWQsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3cyhcbiAgICAgICAgICAgIGZ1bGxWaWV3cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4KHMpLFxuICAgICAgICAgICAgcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IG92ZXJmbG93Vmlld3MgPSBzLm92ZXJmbG93U2VhcmNoUXVlcnlcbiAgICAgICAgICAgID8gc2VhcmNoVmlld3MoXG4gICAgICAgICAgICAgICAgZnVsbFZpZXdzLFxuICAgICAgICAgICAgICAgIHMub3ZlcmZsb3dTZWFyY2hRdWVyeSxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5mdXNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBmdWxsVmlld3M7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGZ1bGxWaWV3cyxcbiAgICAgICAgICAgIGRpc3BsYXllZFZpZXdzLFxuICAgICAgICAgICAgb3ZlcmZsb3dWaWV3cyxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3RvcjogKCkgPT4gbmV3IFJlcGxheVN1YmplY3QoMSksXG4gICAgICAgIHJlc2V0T25EaXNjb25uZWN0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBzdGF0ZS5jb25uZWN0KCk7XG5cbiAgICAvLyBMb2FkIHRoZSB2aWV3cyBpbW1lZGlhdGVseVxuICAgIGFjdGlvbnMubmV4dCh7IHR5cGU6ICdsb2FkJyB9KTtcblxuICAgIHJldHVybiB7IGFjdGlvbnMsIHN0YXRlIH07XG4gIH1cblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFN0YXRlIHJlZHVjZXIgKHdpdGggaGVscGVycykgLy9cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGZ1bmN0aW9uIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4PFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IHN0YXRlLnZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcuZW5hYmxlZCk7XG5cbiAgICAvLyBUYWJzIGhhdmUgYSBtaW5pbXVtIHdpZHRoIG9mIDkycHguXG4gICAgY29uc3QgcG9zc2libGVTbG90Q291bnQgPSBNYXRoLmZsb29yKHN0YXRlLmNvbnRhaW5lcldpZHRoIC8gOTIpO1xuXG4gICAgLy8gVGhlIFwiYWxsIHZpZXdzXCIgc2lkZWJhciB0cmlnZ2VyIHRha2VzIHVwIG9uZSBzbG90LlxuICAgIGNvbnN0IGF2YWlsYWJsZVNsb3RDb3VudCA9IHBvc3NpYmxlU2xvdENvdW50IC0gMTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSB0b28gbWFueSB0YWJzLCB0aGUgXCJOIG1vcmVcIiB0cmlnZ2VyIHRha2VzIHVwIG9uZSBzbG90IGFzIHdlbGwuXG4gICAgLy8gQnV0IHdlIHdhbnQgdG8gYXZvaWQgdGhlIFwiMSBtb3JlXCIgY2FzZSwgc28gd2Ugb25seSB1c2UgYSBzbG90IGZvciBcIk4gbW9yZVwiIGlmIE4gIT0gMS5cbiAgICBpZiAoYXZhaWxhYmxlU2xvdENvdW50ID49IGVuYWJsZWRWaWV3cy5sZW5ndGgpIHJldHVybiBlbmFibGVkVmlld3MubGVuZ3RoO1xuICAgIGVsc2UgcmV0dXJuIGF2YWlsYWJsZVNsb3RDb3VudCAtIDE7IC8vIHRoZSBcIk4gbW9yZVwiIHVzZXMgdXAgYSBzbG90LlxuICB9XG5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlRGlzcGxheWVkVmlld3M8ViBleHRlbmRzIFZpZXc+KFxuICAgIGZ1bGxWaWV3czogRnVsbFZpZXc8Vj5bXSxcbiAgICBvdmVyZmxvd1ZpZXdJbmRleDogbnVtYmVyLFxuICAgIGFjdGl2ZVZpZXdJZDogQ29yZVN0YXRlPFY+WydhY3RpdmVWaWV3SWQnXSxcbiAgKTogRnVsbFZpZXc8Vj5bXSB7XG4gICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBmdWxsVmlld3Muc2xpY2UoMCwgb3ZlcmZsb3dWaWV3SW5kZXgpO1xuXG4gICAgY29uc3QgYWN0aXZlVmlld0luRGlzcGxheSA9IGRpc3BsYXllZFZpZXdzLnNvbWUoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCxcbiAgICApO1xuXG4gICAgaWYgKCFhY3RpdmVWaWV3SW5EaXNwbGF5ICYmIGFjdGl2ZVZpZXdJZCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgYWN0aXZlVmlldyA9IGZ1bGxWaWV3cy5maW5kKHZpZXcgPT4gdmlldy5pZCA9PT0gYWN0aXZlVmlld0lkKTtcbiAgICAgIGlmIChhY3RpdmVWaWV3ICYmIGRpc3BsYXllZFZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIFsuLi5kaXNwbGF5ZWRWaWV3cy5zbGljZSgwLCAtMSksIGFjdGl2ZVZpZXddO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkaXNwbGF5ZWRWaWV3cztcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFZpZXdzPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBmdWxsVmlld3M6IEZ1bGxWaWV3PFY+W10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+LFxuICApOiBGdWxsVmlldzxWPltdIHtcbiAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2UoZnVsbFZpZXdzLCB7XG4gICAgICB0aHJlc2hvbGQ6IDAuMixcbiAgICAgIGtleXM6IFsndGl0bGUnXSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1hdGNoZWRPcHRpb25zOiBGdXNlUmVzdWx0PEZ1bGxWaWV3PFY+PltdID0gZnVzZS5zZWFyY2gocXVlcnkpO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25zLm1hcChyZXN1bHQgPT4gKHtcbiAgICAgIC4uLnJlc3VsdC5pdGVtLFxuICAgICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgIC4uLihyZXN1bHQubWF0Y2hlcz8uZmluZChtYXRjaCA9PiBtYXRjaC5rZXkgPT09ICd0aXRsZScpPy5pbmRpY2VzID8/XG4gICAgICAgICAgW10pLFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0QmVzdEFjdGl2ZVZpZXc8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICk6IFZbJ2lkJ10gfCBudWxsIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBzdGF0ZS52aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmVuYWJsZWQpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZlVmlld0luZGV4ID09PSAtMSkgcmV0dXJuIGVuYWJsZWRWaWV3c1swXT8uaWQgPz8gbnVsbDtcbiAgICByZXR1cm4gKFxuICAgICAgZW5hYmxlZFZpZXdzW2N1cnJlbnRBY3RpdmVWaWV3SW5kZXggKyAxXT8uaWQgPz9cbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4IC0gMV0/LmlkID8/XG4gICAgICBudWxsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlbGV0ZVZpZXc8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICk6IENvcmVTdGF0ZTxWPiB7XG4gICAgY29uc3QgYWN0aXZlVmlld0lkID1cbiAgICAgIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgIDogc3RhdGUuYWN0aXZlVmlld0lkO1xuICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5pZCAhPT0gaWQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzLFxuICAgICAgYWN0aXZlVmlld0lkLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFbmFibGVkPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIGlkOiBWWydpZCddLFxuICAgIGVuYWJsZWQ6IGJvb2xlYW4sXG4gICk6IENvcmVTdGF0ZTxWPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdmlld3M6IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgIHZpZXcuaWQgPT09IGlkID8geyAuLi52aWV3LCBlbmFibGVkIH0gOiB2aWV3LFxuICAgICAgKSxcbiAgICAgIGFjdGl2ZVZpZXdJZDpcbiAgICAgICAgIWVuYWJsZWQgJiYgc3RhdGUuYWN0aXZlVmlld0lkID09PSBpZFxuICAgICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICAgIDogc3RhdGUuYWN0aXZlVmlld0lkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB3aXRoRHVwbGljYXRlVmlldzxWIGV4dGVuZHMgVmlldz4oXG4gICAgdmlld3M6IFZbXSxcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8Vj4sXG4gICk6IFByb21pc2U8VltdPiB7XG4gICAgY29uc3QgbmV3VmlldyA9IGF3YWl0IGR1cGxpY2F0ZSh2aWV3VG9EdXBsaWNhdGUpO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gdmlld1RvRHVwbGljYXRlLmlkKTtcbiAgICBpZiAoc291cmNlSW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gW25ld1ZpZXcsIC4uLnZpZXdzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4udmlld3Muc2xpY2UoMCwgc291cmNlSW5kZXggKyAxKSxcbiAgICAgICAgbmV3VmlldyxcbiAgICAgICAgLi4udmlld3Muc2xpY2Uoc291cmNlSW5kZXggKyAxKSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVkdWNlPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIGFjdGlvbjogQWN0aW9uPFY+LFxuICAgIHNvdXJjZTogU291cmNlPFY+LFxuICAgIGR1cGxpY2F0ZTogRHVwbGljYXRlPFY+LFxuICApOiBQcm9taXNlPENvcmVTdGF0ZTxWPj4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xvYWQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzOiBhd2FpdCBzb3VyY2UoKSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWN0aXZlVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldERlZmF1bHRWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBkZWZhdWx0Vmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEVuYWJsZWQnOlxuICAgICAgICByZXR1cm4gc2V0RW5hYmxlZChzdGF0ZSwgYWN0aW9uLmlkLCBhY3Rpb24uZW5hYmxlZCk7XG5cbiAgICAgIGNhc2UgJ3NldENvbnRhaW5lcldpZHRoJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBjb250YWluZXJXaWR0aDogYWN0aW9uLndpZHRoLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG92ZXJmbG93UGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG92ZXJmbG93U2VhcmNoUXVlcnk6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndXBkYXRlVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgICAgICB2aWV3LmlkID09PSBhY3Rpb24udmlldy5pZCA/IGFjdGlvbi52aWV3IDogdmlldyxcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdkZWxldGVWaWV3JzpcbiAgICAgICAgcmV0dXJuIGRlbGV0ZVZpZXcoc3RhdGUsIGFjdGlvbi52aWV3LmlkKTtcblxuICAgICAgY2FzZSAnZHVwbGljYXRlVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IGF3YWl0IHdpdGhEdXBsaWNhdGVWaWV3KHN0YXRlLnZpZXdzLCBhY3Rpb24udmlldywgZHVwbGljYXRlKSxcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUNMLFdBQVcsRUFFWCxJQUFJLEVBQ0osR0FBRyxFQUNILFNBQVMsRUFFVCxhQUFhLEVBQ2IsU0FBUyxFQUNULE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUlkLE1BQU0sS0FBVyxRQUFRLENBbWZ4QjtBQW5mRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUE4RnhFLFNBQWdCLGFBQWEsQ0FDM0IsTUFBaUIsRUFDakIsU0FBdUIsRUFDdkIsUUFBcUIsRUFDckIsT0FBMkI7UUFFM0IsTUFBTSxZQUFZLEdBQWlCO1lBQ2pDLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLElBQUk7WUFDbEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsY0FBYyxFQUFFLENBQUM7WUFDakIsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxLQUFLO2FBQ2xCO1lBQ0QsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSxFQUFFO2dCQUNWLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsVUFBVSxFQUFFLElBQUk7YUFDakI7U0FDRixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBaUIsWUFBWSxDQUN0RCxFQUFFLEVBQ0YsT0FBTyxFQUFFLFlBQVksRUFDckIsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBdUIsSUFBSSxPQUFPLEVBQUUs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QUFTLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFUZSwyQkFBa0IscUJBU2pDLENBQUE7SUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxVQUEwQjtRQUNqRSxRQUFRLFVBQVUsRUFBRTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxxQkFBcUIsQ0FBQztZQUMvQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxtQ0FBbUMsQ0FBQztZQUM3QyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxxQkFBcUIsQ0FBQztTQUNoQztJQUNILENBQUM7SUFUZSxpQ0FBd0IsMkJBU3ZDLENBQUE7QUFDSCxDQUFDLEVBbmZnQixRQUFRLEtBQVIsUUFBUSxRQW1meEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnVzZSwgeyBGdXNlUmVzdWx0LCBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IGRlZmF1bHRzRGVlcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGNvbm5lY3RhYmxlLFxuICBDb25uZWN0YWJsZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZVNjYW4sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlzdWFsaXphdGlvbi9oaWdobGlnaHQvaGlnaGxpZ2h0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgUml2Vmlld3Mge1xuICBleHBvcnQgY29uc3QgVmlld1Blcm1pc3Npb25zID0gWydwcml2YXRlJywgJ3B1YmxpYycsICdzaGFyZWQnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgVmlld1Blcm1pc3Npb24gPSAodHlwZW9mIFZpZXdQZXJtaXNzaW9ucylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBWaWV3ID0ge1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxWaWV3PFYgZXh0ZW5kcyBWaWV3ID0gVmlldz4gPSBWICYge1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBkZWZhdWx0OiBib29sZWFuO1xuICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlcz86IEhpZ2hsaWdodENvbXBvbmVudC5IaWdobGlnaHRJbmRpY2VzW107XG4gIH07XG5cbiAgLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgLy9cbiAgLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBDb3JlU3RhdGU8ViBleHRlbmRzIFZpZXc+ID0ge1xuICAgIHZpZXdzOiBWW107XG4gICAgYWN0aXZlVmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBkZWZhdWx0Vmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICAgIG92ZXJmbG93OiB7XG4gICAgICBzZWFyY2g6IHN0cmluZztcbiAgICAgIHBpY2tlck9wZW46IGJvb2xlYW47XG4gICAgfTtcbiAgICBhbGw6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcHJpdmF0ZU9wZW46IGJvb2xlYW47XG4gICAgICBzaGFyZWRPcGVuOiBib29sZWFuO1xuICAgICAgcHVibGljT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxWIGV4dGVuZHMgVmlldz4gPSBDb3JlU3RhdGU8Vj4gJiB7XG4gICAgYWxsVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgZGlzcGxheWVkVmlld3M6IEZ1bGxWaWV3PFY+W107XG4gICAgZW5hYmxlZFZpZXdzOiBGdWxsVmlldzxWPltdO1xuICAgIGFsbDoge1xuICAgICAgcHJpdmF0ZVZpZXdzOiBGdWxsVmlldzxWPltdO1xuICAgICAgcHJpdmF0ZUVtcHR5U3RhdGVNZXNzYWdlOiBzdHJpbmc7XG4gICAgICBzaGFyZWRWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgICAgIHNoYXJlZEVtcHR5U3RhdGVNZXNzYWdlOiBzdHJpbmc7XG4gICAgICBwdWJsaWNWaWV3czogRnVsbFZpZXc8Vj5bXTtcbiAgICAgIHB1YmxpY0VtcHR5U3RhdGVNZXNzYWdlOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIEFjdGlvbnMgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIEFjdGlvbjxWIGV4dGVuZHMgVmlldz4gPVxuICAgIHwgeyB0eXBlOiAnbG9hZCcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWN0aXZlVmlldyc7IGlkOiBWWydpZCddIH1cbiAgICB8IHsgdHlwZTogJ3NldERlZmF1bHRWaWV3JzsgaWQ6IFZbJ2lkJ10gfVxuICAgIHwgeyB0eXBlOiAnc2V0RW5hYmxlZCc7IGlkOiBWWydpZCddOyBlbmFibGVkOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJzsgd2lkdGg6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOyBvcGVuOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3VwZGF0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2RlbGV0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2R1cGxpY2F0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2NvcHlMaW5rVG9WaWV3JzsgdmlldzogViB9XG4gICAgfCB7IHR5cGU6ICdzZXRBbGxWaWV3c1RvZ2dsZSc7IHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uOyBvcGVuOiBib29sZWFuIH07XG5cbiAgLy8vLy8vLy8vLy8vXG4gIC8vIFNvdXJjZSAvL1xuICAvLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBTb3VyY2U8ViBleHRlbmRzIFZpZXc+ID0gKCkgPT4gVltdIHwgUHJvbWlzZTxWW10+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8ViBleHRlbmRzIFZpZXc+ID0gKFxuICAgIHZpZXdUb0R1cGxpY2F0ZTogVixcbiAgKSA9PiBWIHwgUHJvbWlzZTxWPjtcbiAgZXhwb3J0IHR5cGUgQ29weUxpbms8ViBleHRlbmRzIFZpZXc+ID0gKHZpZXc6IFYpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gTWFuYWdlciAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxWIGV4dGVuZHMgVmlldz4gPSB7XG4gICAgYWN0aW9uczogU3ViamVjdDxBY3Rpb248Vj4+O1xuICAgIHN0YXRlOiBDb25uZWN0YWJsZTxGdWxsU3RhdGU8Vj4+O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXJPcHRpb25zPFYgZXh0ZW5kcyBWaWV3PiA9IHtcbiAgICBpbml0aWFsU3RhdGU/OiBEZWVwUGFydGlhbDxDb3JlU3RhdGU8Vj4+O1xuICAgIGZ1c2VPcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+O1xuICB9O1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYW5hZ2VyPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzb3VyY2U6IFNvdXJjZTxWPixcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxWPixcbiAgICBjb3B5TGluazogQ29weUxpbms8Vj4sXG4gICAgb3B0aW9ucz86IE1hbmFnZXJPcHRpb25zPFY+LFxuICApOiBNYW5hZ2VyPFY+IHtcbiAgICBjb25zdCBkZWZhdWx0U3RhdGU6IENvcmVTdGF0ZTxWPiA9IHtcbiAgICAgIHZpZXdzOiBbXSxcbiAgICAgIGFjdGl2ZVZpZXdJZDogbnVsbCxcbiAgICAgIGRlZmF1bHRWaWV3SWQ6IG51bGwsXG4gICAgICBjb250YWluZXJXaWR0aDogMCxcbiAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHBpY2tlck9wZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFsbDoge1xuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBwcml2YXRlT3BlbjogdHJ1ZSxcbiAgICAgICAgc2hhcmVkT3BlbjogdHJ1ZSxcbiAgICAgICAgcHVibGljT3BlbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRlZEluaXRpYWxTdGF0ZTogQ29yZVN0YXRlPFY+ID0gZGVmYXVsdHNEZWVwKFxuICAgICAge30sXG4gICAgICBvcHRpb25zPy5pbml0aWFsU3RhdGUsXG4gICAgICBkZWZhdWx0U3RhdGUsXG4gICAgKTtcblxuICAgIGNvbnN0IGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFY+PiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgY29yZVN0YXRlOiBPYnNlcnZhYmxlPENvcmVTdGF0ZTxWPj4gPSBhY3Rpb25zLnBpcGUoXG4gICAgICBtZXJnZVNjYW4oXG4gICAgICAgIChzdGF0ZSwgYWN0aW9uKSA9PlxuICAgICAgICAgIGZyb20ocmVkdWNlKHN0YXRlLCBhY3Rpb24sIHNvdXJjZSwgZHVwbGljYXRlLCBjb3B5TGluaykpLFxuICAgICAgICBkZWZhdWx0ZWRJbml0aWFsU3RhdGUsXG4gICAgICAgIDEsXG4gICAgICApLFxuICAgICAgc3RhcnRXaXRoKGRlZmF1bHRlZEluaXRpYWxTdGF0ZSksXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRlOiBDb25uZWN0YWJsZTxGdWxsU3RhdGU8Vj4+ID0gY29ubmVjdGFibGUoXG4gICAgICBjb3JlU3RhdGUucGlwZShcbiAgICAgICAgbWFwKHMgPT4ge1xuICAgICAgICAgIC8vIElmIGZvciBzb21lIHJlYXNvbiB0aGUgYWN0aXZlIHZpZXcgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkLCB3ZSdsbFxuICAgICAgICAgIC8vIGRlZmF1bHQgdG8gbWFraW5nIHRoZSBmaXJzdCB2aWV3IGFjdGl2ZSBpbnN0ZWFkLlxuICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXc6IFYgfCB1bmRlZmluZWQgPSBzLnZpZXdzLmZpbmQoXG4gICAgICAgICAgICB2aWV3ID0+IHZpZXcuZW5hYmxlZCAmJiB2aWV3LmlkID09PSBzLmFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgYWxsVmlld3M6IEZ1bGxWaWV3PFY+W10gPSBzLnZpZXdzLm1hcCgodmlldywgaSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnZpZXcsXG4gICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXcgPyBhY3RpdmVWaWV3LmlkID09PSB2aWV3LmlkIDogaSA9PT0gMCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHZpZXcuaWQgPT09IHMuZGVmYXVsdFZpZXdJZCxcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICBjb25zdCBhbGxFbmFibGVkVmlld3M6IEZ1bGxWaWV3PFY+W10gPSBhbGxWaWV3cy5maWx0ZXIoXG4gICAgICAgICAgICB2aWV3ID0+IHZpZXcuZW5hYmxlZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3cyhcbiAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4KHMpLFxuICAgICAgICAgICAgcy5hY3RpdmVWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IHMub3ZlcmZsb3cuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKFxuICAgICAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgICAgICBzLm92ZXJmbG93LnNlYXJjaCxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5mdXNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBhbGxFbmFibGVkVmlld3M7XG5cbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBwcml2YXRlRW1wdHlTdGF0ZU1lc3NhZ2U6IGdldEVtcHR5U3RhdGVNZXNzYWdlKHMsICdwcml2YXRlJyksXG4gICAgICAgICAgICAgIHNoYXJlZE9wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICAgIHNoYXJlZFZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHNoYXJlZEVtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAnc2hhcmVkJyksXG4gICAgICAgICAgICAgIHB1YmxpY09wZW46IHNlYXJjaGluZ0FsbFZpZXdzIHx8IHMuYWxsLnB1YmxpY09wZW4sXG4gICAgICAgICAgICAgIHB1YmxpY1ZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHVibGljJyksXG4gICAgICAgICAgICAgIHB1YmxpY0VtcHR5U3RhdGVNZXNzYWdlOiBnZXRFbXB0eVN0YXRlTWVzc2FnZShzLCAncHVibGljJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlT3ZlcmZsb3dWaWV3SW5kZXg8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5lbmFibGVkKTtcblxuICAgIC8vIFRhYnMgaGF2ZSBhIG1pbmltdW0gd2lkdGggb2YgOTJweC5cbiAgICBjb25zdCBwb3NzaWJsZVNsb3RDb3VudCA9IE1hdGguZmxvb3Ioc3RhdGUuY29udGFpbmVyV2lkdGggLyA5Mik7XG5cbiAgICAvLyBUaGUgXCJhbGwgdmlld3NcIiBzaWRlYmFyIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QuXG4gICAgY29uc3QgYXZhaWxhYmxlU2xvdENvdW50ID0gcG9zc2libGVTbG90Q291bnQgLSAxO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IHRhYnMsIHRoZSBcIk4gbW9yZVwiIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QgYXMgd2VsbC5cbiAgICAvLyBCdXQgd2Ugd2FudCB0byBhdm9pZCB0aGUgXCIxIG1vcmVcIiBjYXNlLCBzbyB3ZSBvbmx5IHVzZSBhIHNsb3QgZm9yIFwiTiBtb3JlXCIgaWYgTiAhPSAxLlxuICAgIGlmIChhdmFpbGFibGVTbG90Q291bnQgPj0gZW5hYmxlZFZpZXdzLmxlbmd0aCkgcmV0dXJuIGVuYWJsZWRWaWV3cy5sZW5ndGg7XG4gICAgZWxzZSByZXR1cm4gYXZhaWxhYmxlU2xvdENvdW50IC0gMTsgLy8gdGhlIFwiTiBtb3JlXCIgdXNlcyB1cCBhIHNsb3QuXG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3czxWIGV4dGVuZHMgVmlldz4oXG4gICAgZnVsbFZpZXdzOiBGdWxsVmlldzxWPltdLFxuICAgIG92ZXJmbG93Vmlld0luZGV4OiBudW1iZXIsXG4gICAgYWN0aXZlVmlld0lkOiBDb3JlU3RhdGU8Vj5bJ2FjdGl2ZVZpZXdJZCddLFxuICApOiBGdWxsVmlldzxWPltdIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGZ1bGxWaWV3cy5zbGljZSgwLCBvdmVyZmxvd1ZpZXdJbmRleCk7XG5cbiAgICBjb25zdCBhY3RpdmVWaWV3SW5EaXNwbGF5ID0gZGlzcGxheWVkVmlld3Muc29tZShcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gYWN0aXZlVmlld0lkLFxuICAgICk7XG5cbiAgICBpZiAoIWFjdGl2ZVZpZXdJbkRpc3BsYXkgJiYgYWN0aXZlVmlld0lkICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gZnVsbFZpZXdzLmZpbmQodmlldyA9PiB2aWV3LmlkID09PSBhY3RpdmVWaWV3SWQpO1xuICAgICAgaWYgKGFjdGl2ZVZpZXcgJiYgZGlzcGxheWVkVmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gWy4uLmRpc3BsYXllZFZpZXdzLnNsaWNlKDAsIC0xKSwgYWN0aXZlVmlld107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3BsYXllZFZpZXdzO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlld3NCeVBlcm1pc3Npb248ViBleHRlbmRzIFZpZXc+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxWPltdLFxuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uLFxuICApOiBGdWxsVmlldzxWPltdIHtcbiAgICByZXR1cm4gc29ydEJ5KFxuICAgICAgdmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5wZXJtaXNzaW9uID09PSBwZXJtaXNzaW9uKSxcbiAgICAgICd0aXRsZScsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFZpZXdzPFYgZXh0ZW5kcyBWaWV3PihcbiAgICB2aWV3czogRnVsbFZpZXc8Vj5bXSxcbiAgICBxdWVyeTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj4sXG4gICk6IEZ1bGxWaWV3PFY+W10ge1xuICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZSh2aWV3cywge1xuICAgICAgdGhyZXNob2xkOiAwLjIsXG4gICAgICBrZXlzOiBbJ3RpdGxlJ10sXG4gICAgICBpbmNsdWRlTWF0Y2hlczogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtYXRjaGVkT3B0aW9uczogRnVzZVJlc3VsdDxGdWxsVmlldzxWPj5bXSA9IGZ1c2Uuc2VhcmNoKHF1ZXJ5KTtcblxuICAgIHJldHVybiBtYXRjaGVkT3B0aW9ucy5tYXAocmVzdWx0ID0+ICh7XG4gICAgICAuLi5yZXN1bHQuaXRlbSxcbiAgICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlczogW1xuICAgICAgICAuLi4ocmVzdWx0Lm1hdGNoZXM/LmZpbmQobWF0Y2ggPT4gbWF0Y2gua2V5ID09PSAndGl0bGUnKT8uaW5kaWNlcyA/P1xuICAgICAgICAgIFtdKSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3PFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICApOiBWWydpZCddIHwgbnVsbCB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5lbmFibGVkKTtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZlVmlld0luZGV4ID0gZW5hYmxlZFZpZXdzLmZpbmRJbmRleChcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gc3RhdGUuYWN0aXZlVmlld0lkLFxuICAgICk7XG5cbiAgICBpZiAoY3VycmVudEFjdGl2ZVZpZXdJbmRleCA9PT0gLTEpIHJldHVybiBlbmFibGVkVmlld3NbMF0/LmlkID8/IG51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4ICsgMV0/LmlkID8/XG4gICAgICBlbmFibGVkVmlld3NbY3VycmVudEFjdGl2ZVZpZXdJbmRleCAtIDFdPy5pZCA/P1xuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWxldGVWaWV3PFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIGlkOiBWWydpZCddLFxuICApOiBDb3JlU3RhdGU8Vj4ge1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9XG4gICAgICBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZDtcbiAgICBjb25zdCB2aWV3cyA9IHN0YXRlLnZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcuaWQgIT09IGlkKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aWV3cyxcbiAgICAgIGFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RW5hYmxlZDxWIGV4dGVuZHMgVmlldz4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxWPixcbiAgICBpZDogVlsnaWQnXSxcbiAgICBlbmFibGVkOiBib29sZWFuLFxuICApOiBDb3JlU3RhdGU8Vj4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICB2aWV3LmlkID09PSBpZCA/IHsgLi4udmlldywgZW5hYmxlZCB9IDogdmlldyxcbiAgICAgICksXG4gICAgICBhY3RpdmVWaWV3SWQ6XG4gICAgICAgICFlbmFibGVkICYmIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgICA/IGdldE5leHRCZXN0QWN0aXZlVmlldyhzdGF0ZSlcbiAgICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gd2l0aER1cGxpY2F0ZVZpZXc8ViBleHRlbmRzIFZpZXc+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgdmlld1RvRHVwbGljYXRlOiBWLFxuICAgIGR1cGxpY2F0ZTogRHVwbGljYXRlPFY+LFxuICApOiBQcm9taXNlPFZbXT4ge1xuICAgIGNvbnN0IG5ld1ZpZXcgPSBhd2FpdCBkdXBsaWNhdGUodmlld1RvRHVwbGljYXRlKTtcbiAgICBjb25zdCBzb3VyY2VJbmRleCA9IHZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuaWQgPT09IHZpZXdUb0R1cGxpY2F0ZS5pZCk7XG4gICAgaWYgKHNvdXJjZUluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIFtuZXdWaWV3LCAuLi52aWV3c107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKDAsIHNvdXJjZUluZGV4ICsgMSksXG4gICAgICAgIG5ld1ZpZXcsXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKHNvdXJjZUluZGV4ICsgMSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEVtcHR5U3RhdGVNZXNzYWdlPFYgZXh0ZW5kcyBWaWV3PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFY+LFxuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChzdGF0ZS5hbGwuc2VhcmNoKVxuICAgICAgcmV0dXJuIGBObyAke3Blcm1pc3Npb259IHZpZXdzIG1hdGNoaW5nIFwiJHtzdGF0ZS5hbGwuc2VhcmNofVwiYDtcbiAgICBlbHNlIHJldHVybiBgTm8gJHtwZXJtaXNzaW9ufSB2aWV3c2A7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWR1Y2U8ViBleHRlbmRzIFZpZXc+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8Vj4sXG4gICAgYWN0aW9uOiBBY3Rpb248Vj4sXG4gICAgc291cmNlOiBTb3VyY2U8Vj4sXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8Vj4sXG4gICAgY29weUxpbms6IENvcHlMaW5rPFY+LFxuICApOiBQcm9taXNlPENvcmVTdGF0ZTxWPj4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xvYWQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzOiBhd2FpdCBzb3VyY2UoKSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWN0aXZlVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgICAgdmlld3M6IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgICAgICB2aWV3LmlkID09PSBhY3Rpb24uaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQ6IHRydWUgfSA6IHZpZXcsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmFsbCxcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdmVyZmxvdzoge1xuICAgICAgICAgICAgLi4uc3RhdGUub3ZlcmZsb3csXG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldERlZmF1bHRWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBkZWZhdWx0Vmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEVuYWJsZWQnOlxuICAgICAgICByZXR1cm4gc2V0RW5hYmxlZChzdGF0ZSwgYWN0aW9uLmlkLCBhY3Rpb24uZW5hYmxlZCk7XG5cbiAgICAgIGNhc2UgJ3NldENvbnRhaW5lcldpZHRoJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBjb250YWluZXJXaWR0aDogYWN0aW9uLndpZHRoLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHBpY2tlck9wZW46IGFjdGlvbi5vcGVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHNlYXJjaDogYWN0aW9uLnF1ZXJ5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndXBkYXRlVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgICAgICB2aWV3LmlkID09PSBhY3Rpb24udmlldy5pZCA/IGFjdGlvbi52aWV3IDogdmlldyxcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdkZWxldGVWaWV3JzpcbiAgICAgICAgcmV0dXJuIGRlbGV0ZVZpZXcoc3RhdGUsIGFjdGlvbi52aWV3LmlkKTtcblxuICAgICAgY2FzZSAnZHVwbGljYXRlVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IGF3YWl0IHdpdGhEdXBsaWNhdGVWaWV3KHN0YXRlLnZpZXdzLCBhY3Rpb24udmlldywgZHVwbGljYXRlKSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnY29weUxpbmtUb1ZpZXcnOlxuICAgICAgICBhd2FpdCBjb3B5TGluayhhY3Rpb24udmlldyk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NUb2dnbGUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgcHJpdmF0ZU9wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHJpdmF0ZSdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHJpdmF0ZU9wZW4sXG4gICAgICAgICAgICBzaGFyZWRPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3NoYXJlZCdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgIHB1YmxpY09wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHVibGljJ1xuICAgICAgICAgICAgICAgID8gYWN0aW9uLm9wZW5cbiAgICAgICAgICAgICAgICA6IHN0YXRlLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFV0aWxpdGllcyAvL1xuICAvLy8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGVybWlzc2lvblRpdGxlKHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ1ByaXZhdGUnO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdTaGFyZWQnO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdQdWJsaWMnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24ocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnT25seSB2aXNpYmxlIHRvIHlvdSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ09ubHkgdmlzaWJsZSB0byB0aG9zZSB3aXRoIGFjY2Vzcyc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1Zpc2libGUgdG8gZXZlcnlvbmUnO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../edit-view/edit-view.component";
|
|
5
|
+
import * as i3 from "../../../modal/menu/menu.component";
|
|
6
|
+
import * as i4 from "../../../modal/menu/menu-divider/menu-divider.component";
|
|
7
|
+
import * as i5 from "../../../modal/menu/menu-item/menu-item.component";
|
|
8
|
+
export class ViewMenuComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.editingView = null;
|
|
11
|
+
this.renamingView = false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
ViewMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
ViewMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ViewMenuComponent, selector: "riv-view-menu", inputs: { manager: "manager", view: "view" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["menuTrigger"], descendants: true }], viewQueries: [{ propertyName: "menuElement", first: true, predicate: ["menu"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button riv-menu-item (click)=\"editingView = view\">Edit view</button>\n <button riv-menu-item (click)=\"editingView = view; renamingView = true\">\n Rename view\n </button>\n <button\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'duplicateView', view })\"\n >\n Duplicate view\n </button>\n <button\n riv-menu-item\n [variant]=\"'danger'\"\n (click)=\"manager?.actions?.next({ type: 'deleteView', view })\"\n >\n Delete view\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <riv-edit-view\n *ngIf=\"editingView\"\n [view]=\"editingView\"\n [autoSelectName]=\"renamingView\"\n [anchor]=\"menuElement?.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"editingView = null; renamingView = false\"\n ></riv-edit-view>\n</ng-container>\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}riv-menu{max-width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.EditViewComponent, selector: "riv-edit-view", inputs: ["anchor", "autoSelectName", "view"], outputs: ["save", "delete", "close"] }, { kind: "component", type: i3.MenuComponent, selector: "riv-menu", inputs: ["preferredPosition"] }, { kind: "component", type: i4.MenuDividerComponent, selector: "riv-menu-divider" }, { kind: "component", type: i5.MenuItemComponent, selector: "[riv-menu-item]", inputs: ["locked", "disabled", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewMenuComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'riv-view-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button riv-menu-item (click)=\"editingView = view\">Edit view</button>\n <button riv-menu-item (click)=\"editingView = view; renamingView = true\">\n Rename view\n </button>\n <button\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'duplicateView', view })\"\n >\n Duplicate view\n </button>\n <button\n riv-menu-item\n [variant]=\"'danger'\"\n (click)=\"manager?.actions?.next({ type: 'deleteView', view })\"\n >\n Delete view\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <riv-edit-view\n *ngIf=\"editingView\"\n [view]=\"editingView\"\n [autoSelectName]=\"renamingView\"\n [anchor]=\"menuElement?.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"editingView = null; renamingView = false\"\n ></riv-edit-view>\n</ng-container>\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}riv-menu{max-width:100%}\n"] }]
|
|
19
|
+
}], propDecorators: { manager: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], view: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], menuElement: [{
|
|
24
|
+
type: ViewChild,
|
|
25
|
+
args: ['menu', { read: ElementRef }]
|
|
26
|
+
}], triggerTemplate: [{
|
|
27
|
+
type: ContentChild,
|
|
28
|
+
args: ['menuTrigger']
|
|
29
|
+
}] } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3Mvdmlldy1tZW51L3ZpZXctbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXctbWVudS92aWV3LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBU3ZCLE1BQU0sT0FBTyxpQkFBaUI7SUFOOUI7UUFtQlMsZ0JBQVcsR0FBZ0MsSUFBSSxDQUFDO1FBQ2hELGlCQUFZLEdBQVksS0FBSyxDQUFDO0tBQ3RDOzs4R0FmWSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwrUkFPRCxVQUFVLDZCQ3hCdkMsOHdEQTREQTsyRkQzQ2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTs4QkFJL0MsT0FBTztzQkFETixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixXQUFXO3NCQURWLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJdkMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlldy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctbWVudS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TWVudUNvbXBvbmVudDxWIGV4dGVuZHMgUml2Vmlld3MuVmlldz4ge1xuICBASW5wdXQoKVxuICBtYW5hZ2VyPzogUml2Vmlld3MuTWFuYWdlcjxWPjtcblxuICBASW5wdXQoKVxuICB2aWV3PzogUml2Vmlld3MuRnVsbFZpZXc8Vj47XG5cbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBtZW51RWxlbWVudD86IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZCgnbWVudVRyaWdnZXInKVxuICB0cmlnZ2VyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBwdWJsaWMgZWRpdGluZ1ZpZXc6IFJpdlZpZXdzLkZ1bGxWaWV3PFY+IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyByZW5hbWluZ1ZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3XCI+XG4gIDxyaXYtbWVudVxuICAgICNtZW51XG4gICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tcmlnaHQnXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmlnZ2VyVGVtcGxhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHJpZ2dlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmlnZ2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGJ1dHRvblxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnc2V0RW5hYmxlZCcsXG4gICAgICAgICAgaWQ6IHZpZXcuaWQsXG4gICAgICAgICAgZW5hYmxlZDogIXZpZXcuZW5hYmxlZFxuICAgICAgICB9KVxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyB2aWV3LmVuYWJsZWQgPyAnSGlkZSB0YWInIDogJ1Nob3cgdGFiJyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxyaXYtbWVudS1kaXZpZGVyPjwvcml2LW1lbnUtZGl2aWRlcj5cbiAgICA8YnV0dG9uIHJpdi1tZW51LWl0ZW0gKGNsaWNrKT1cImVkaXRpbmdWaWV3ID0gdmlld1wiPkVkaXQgdmlldzwvYnV0dG9uPlxuICAgIDxidXR0b24gcml2LW1lbnUtaXRlbSAoY2xpY2spPVwiZWRpdGluZ1ZpZXcgPSB2aWV3OyByZW5hbWluZ1ZpZXcgPSB0cnVlXCI+XG4gICAgICBSZW5hbWUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgIChjbGljayk9XCJtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ2R1cGxpY2F0ZVZpZXcnLCB2aWV3IH0pXCJcbiAgICA+XG4gICAgICBEdXBsaWNhdGUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgIFt2YXJpYW50XT1cIidkYW5nZXInXCJcbiAgICAgIChjbGljayk9XCJtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ2RlbGV0ZVZpZXcnLCB2aWV3IH0pXCJcbiAgICA+XG4gICAgICBEZWxldGUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxyaXYtbWVudS1kaXZpZGVyPjwvcml2LW1lbnUtZGl2aWRlcj5cbiAgICA8YnV0dG9uXG4gICAgICByaXYtbWVudS1pdGVtXG4gICAgICAoY2xpY2spPVwibWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdjb3B5TGlua1RvVmlldycsIHZpZXcgfSlcIlxuICAgID5cbiAgICAgIENvcHkgbGluayB0byB2aWV3XG4gICAgPC9idXR0b24+XG4gIDwvcml2LW1lbnU+XG5cbiAgPHJpdi1lZGl0LXZpZXdcbiAgICAqbmdJZj1cImVkaXRpbmdWaWV3XCJcbiAgICBbdmlld109XCJlZGl0aW5nVmlld1wiXG4gICAgW2F1dG9TZWxlY3ROYW1lXT1cInJlbmFtaW5nVmlld1wiXG4gICAgW2FuY2hvcl09XCJtZW51RWxlbWVudD8ubmF0aXZlRWxlbWVudFwiXG4gICAgKHNhdmUpPVwibWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICd1cGRhdGVWaWV3JywgdmlldzogJGV2ZW50IH0pXCJcbiAgICAoZGVsZXRlKT1cIm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnZGVsZXRlVmlldycsIHZpZXc6ICRldmVudCB9KVwiXG4gICAgKGNsb3NlKT1cImVkaXRpbmdWaWV3ID0gbnVsbDsgcmVuYW1pbmdWaWV3ID0gZmFsc2VcIlxuICA+PC9yaXYtZWRpdC12aWV3PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|