@rivet-health/design-system 37.10.2 → 38.0.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/format/pipes/sentence-case.pipe.mjs +61 -0
- package/esm2020/lib/input/search-select/search-select.component.mjs +3 -3
- package/esm2020/lib/navigation/views/edit-view/edit-view.component.mjs +62 -25
- package/esm2020/lib/navigation/views/state.mjs +25 -2
- package/esm2020/lib/navigation/views/view-menu/view-menu.component.mjs +3 -3
- package/esm2020/lib/riv.module.mjs +6 -1
- package/esm2020/lib/table/table/state.mjs +3 -2
- package/esm2020/lib/table/table/table/table.component.mjs +2 -2
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/rivet-health-design-system.mjs +152 -31
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +153 -31
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/format/pipes/sentence-case.pipe.d.ts +8 -0
- package/lib/navigation/views/edit-view/edit-view.component.d.ts +10 -2
- package/lib/navigation/views/state.d.ts +22 -1
- package/lib/riv.module.d.ts +40 -39
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
const ACRONYMS = new Set([
|
|
4
|
+
'API',
|
|
5
|
+
'AWS',
|
|
6
|
+
'CBSA',
|
|
7
|
+
'COB',
|
|
8
|
+
'CPT',
|
|
9
|
+
'CSV',
|
|
10
|
+
'DOS',
|
|
11
|
+
'DRG',
|
|
12
|
+
'EHR',
|
|
13
|
+
'EIN',
|
|
14
|
+
'FTP',
|
|
15
|
+
'HTML',
|
|
16
|
+
'HTTP',
|
|
17
|
+
'HTTPS',
|
|
18
|
+
'ID',
|
|
19
|
+
'JSON',
|
|
20
|
+
'MS',
|
|
21
|
+
'NPI',
|
|
22
|
+
'NPPES',
|
|
23
|
+
'OOP',
|
|
24
|
+
'PDF',
|
|
25
|
+
'SQL',
|
|
26
|
+
'SSN',
|
|
27
|
+
'URL',
|
|
28
|
+
'XML',
|
|
29
|
+
]);
|
|
30
|
+
export function toSentenceCase(value) {
|
|
31
|
+
if (value == null || value === '')
|
|
32
|
+
return '';
|
|
33
|
+
const stringValue = String(value);
|
|
34
|
+
const trimmed = stringValue.trim();
|
|
35
|
+
if (trimmed.length === 0)
|
|
36
|
+
return '';
|
|
37
|
+
const words = trimmed.split(/\s+/);
|
|
38
|
+
const transformedWords = words.map((word, index) => {
|
|
39
|
+
const upperWord = word.toUpperCase();
|
|
40
|
+
if (ACRONYMS.has(upperWord)) {
|
|
41
|
+
return upperWord;
|
|
42
|
+
}
|
|
43
|
+
if (index === 0) {
|
|
44
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
45
|
+
}
|
|
46
|
+
return word.toLowerCase();
|
|
47
|
+
});
|
|
48
|
+
return transformedWords.join(' ');
|
|
49
|
+
}
|
|
50
|
+
export class SentenceCasePipe {
|
|
51
|
+
transform(value) {
|
|
52
|
+
return toSentenceCase(value);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
SentenceCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SentenceCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
56
|
+
SentenceCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: SentenceCasePipe, name: "rivSentenceCase" });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SentenceCasePipe, decorators: [{
|
|
58
|
+
type: Pipe,
|
|
59
|
+
args: [{ name: 'rivSentenceCase' }]
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudGVuY2UtY2FzZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvZm9ybWF0L3BpcGVzL3NlbnRlbmNlLWNhc2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFFcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdkIsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxJQUFJO0lBQ0osTUFBTTtJQUNOLElBQUk7SUFDSixLQUFLO0lBQ0wsT0FBTztJQUNQLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztDQUNOLENBQXdCLENBQUM7QUFFMUIsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUErQjtJQUM1RCxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUNELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBR0QsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixTQUFTLENBQUMsS0FBK0I7UUFDdkMsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7NkdBSFUsZ0JBQWdCOzJHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgQUNST05ZTVMgPSBuZXcgU2V0KFtcbiAgJ0FQSScsXG4gICdBV1MnLFxuICAnQ0JTQScsXG4gICdDT0InLFxuICAnQ1BUJyxcbiAgJ0NTVicsXG4gICdET1MnLFxuICAnRFJHJyxcbiAgJ0VIUicsXG4gICdFSU4nLFxuICAnRlRQJyxcbiAgJ0hUTUwnLFxuICAnSFRUUCcsXG4gICdIVFRQUycsXG4gICdJRCcsXG4gICdKU09OJyxcbiAgJ01TJyxcbiAgJ05QSScsXG4gICdOUFBFUycsXG4gICdPT1AnLFxuICAnUERGJyxcbiAgJ1NRTCcsXG4gICdTU04nLFxuICAnVVJMJyxcbiAgJ1hNTCcsXG5dKSBhcyBSZWFkb25seVNldDxzdHJpbmc+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9TZW50ZW5jZUNhc2UodmFsdWU/OiBzdHJpbmcgfCBudWxsIHwgdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuICcnO1xuXG4gIGNvbnN0IHN0cmluZ1ZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgdHJpbW1lZCA9IHN0cmluZ1ZhbHVlLnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG5cbiAgY29uc3Qgd29yZHMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLyk7XG4gIGNvbnN0IHRyYW5zZm9ybWVkV29yZHMgPSB3b3Jkcy5tYXAoKHdvcmQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgdXBwZXJXb3JkID0gd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIGlmIChBQ1JPTllNUy5oYXModXBwZXJXb3JkKSkge1xuICAgICAgcmV0dXJuIHVwcGVyV29yZDtcbiAgICB9XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkV29yZHMuam9pbignICcpO1xufVxuXG5AUGlwZSh7IG5hbWU6ICdyaXZTZW50ZW5jZUNhc2UnIH0pXG5leHBvcnQgY2xhc3MgU2VudGVuY2VDYXNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU/OiBzdHJpbmcgfCBudWxsIHwgdW5rbm93bik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRvU2VudGVuY2VDYXNlKHZhbHVlKTtcbiAgfVxufVxuIl19
|
|
@@ -137,10 +137,10 @@ export class SearchSelectComponent {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
SearchSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SearchSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
SearchSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SearchSelectComponent, selector: "riv-search-select", inputs: { options: "options", selected: "selected", placeholder: "placeholder", addNewLabel: "addNewLabel", newTooltip: "newTooltip", size: "size", disabled: "disabled", label: "label", help: "help", required: "required", state: "state", errorMessage: "errorMessage", optionTemplate: "optionTemplate", chipTemplate: "chipTemplate" }, outputs: { selectedChange: "selectedChange", addNew: "addNew" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage ?? ''\"\n>\n <div class=\"search-select\" [class.disabled]=\"disabled\">\n <div #trigger class=\"input-wrapper\">\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"searchText\"\n [disabled]=\"disabled\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (input)=\"onSearchInput(searchInput.value)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div *ngIf=\"selected.length > 0\" class=\"chips\">\n <div\n *ngFor=\"let option of selected; trackBy: trackByOption\"\n class=\"chip\"\n [class]=\"option.new
|
|
140
|
+
SearchSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SearchSelectComponent, selector: "riv-search-select", inputs: { options: "options", selected: "selected", placeholder: "placeholder", addNewLabel: "addNewLabel", newTooltip: "newTooltip", size: "size", disabled: "disabled", label: "label", help: "help", required: "required", state: "state", errorMessage: "errorMessage", optionTemplate: "optionTemplate", chipTemplate: "chipTemplate" }, outputs: { selectedChange: "selectedChange", addNew: "addNew" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage ?? ''\"\n>\n <div class=\"search-select\" [class.disabled]=\"disabled\">\n <div #trigger class=\"input-wrapper\">\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"searchText\"\n [disabled]=\"disabled\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (input)=\"onSearchInput(searchInput.value)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div *ngIf=\"selected.length > 0\" class=\"chips\">\n <div\n *ngFor=\"let option of selected; trackBy: trackByOption\"\n class=\"chip\"\n [class.new]=\"option.new\"\n [class.existing]=\"!option.new\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [rivTooltip]=\"option.new && newTooltip ? newTooltip : undefined\"\n >\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [size]=\"'xsmall'\"\n [disabled]=\"disabled\"\n (click)=\"removeOption(option)\"\n ></button>\n <ng-container *ngIf=\"chipTemplate; else defaultChip\">\n <ng-container\n *ngTemplateOutlet=\"chipTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultChip>\n <span class=\"chip-text\">{{ option.title }}</span>\n </ng-template>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'bottom-right'\"\n [allowedPositions]=\"['bottom-right']\"\n (close)=\"close()\"\n >\n <div class=\"dropdown\">\n <button\n *ngIf=\"showAddNew\"\n type=\"button\"\n class=\"dropdown-option add-new\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onAddNew()\"\n >\n <riv-icon [name]=\"'Plus'\" [size]=\"16\"></riv-icon>\n <span>{{ addNewLabel }} \"{{ searchText }}\"</span>\n </button>\n\n <div *ngIf=\"filteredOptions.length > 0\" class=\"options-list\">\n <button\n *ngFor=\"let option of filteredOptions; trackBy: trackByOption\"\n type=\"button\"\n class=\"dropdown-option\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(option)\"\n >\n <ng-container *ngIf=\"optionTemplate; else defaultOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultOption>\n <span class=\"option-title\">{{ option.title }}</span>\n <span *ngIf=\"option.subtitle\" class=\"option-subtitle\">{{\n option.subtitle\n }}</span>\n </ng-template>\n </button>\n </div>\n\n <div\n *ngIf=\"filteredOptions.length === 0 && !showAddNew\"\n class=\"no-results\"\n >\n No results found\n </div>\n </div>\n </riv-callout>\n </ng-container>\n</riv-input-label>\n", styles: [":host{display:block}.search-select{display:flex;flex-direction:column;gap:var(--size-small)}.search-select.disabled{opacity:.6;pointer-events:none}.input-wrapper{position:relative}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-medium);padding-right:calc(var(--size-xlarge) + var(--size-xsmall));height:var(--input-field-height-medium)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}input.small{font:var(--input-small);padding:var(--size-small) var(--size-medium);height:var(--input-field-height-small)}input.large{font:var(--input-large);padding:var(--size-medium);height:var(--input-field-height-large)}.chips{display:flex;flex-wrap:wrap;gap:var(--size-small)}.chip{display:inline-flex;align-items:center;gap:var(--size-xsmall);border-radius:var(--border-radius-medium);padding:var(--size-xsmall) var(--size-medium) var(--size-xsmall) var(--size-small);font:var(--title-02);color:var(--type-light-high-contrast);max-width:100%}.chip.existing{background-color:var(--purp-10);border:var(--border-width) solid var(--border-light)}.chip.new{border:var(--border-width) dashed var(--border-light)}.chip.small{font:var(--input-small);padding:calc(var(--size-xsmall) / 2) var(--size-small)}.chip.large{font:var(--input-large);padding:var(--size-small) var(--size-medium)}.chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{min-width:200px;max-width:400px;max-height:300px;overflow-y:auto;padding:var(--size-large)}.dropdown-option{display:flex;align-items:center;gap:var(--size-small);width:100%;padding:var(--size-small) var(--size-xsmall);border-radius:var(--border-radius-medium);font:var(--input-medium);text-align:left;cursor:pointer;transition:background-color var(--short-transition)}.dropdown-option:hover{background-color:var(--surface-light-2)}.dropdown-option:active{background-color:var(--surface-light-3)}.dropdown-option.add-new{color:var(--purp-80);font-weight:var(--font-weight-heavy)}.dropdown-option.add-new riv-icon{color:var(--purp-80)}.options-list{display:flex;flex-direction:column;gap:var(--size-xsmall)}.option-title{color:var(--type-light-high-contrast)}.option-subtitle{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall)}.no-results{padding:var(--size-medium);text-align:center;color:var(--type-light-low-contrast);font:var(--input-medium)}\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", "current"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i5.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "directive", type: i6.OverlayDirective, selector: "[riv-overlay]" }, { kind: "directive", type: i7.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipCloseDelay", "rivTooltipOpenDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SearchSelectComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'riv-search-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage ?? ''\"\n>\n <div class=\"search-select\" [class.disabled]=\"disabled\">\n <div #trigger class=\"input-wrapper\">\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"searchText\"\n [disabled]=\"disabled\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (input)=\"onSearchInput(searchInput.value)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div *ngIf=\"selected.length > 0\" class=\"chips\">\n <div\n *ngFor=\"let option of selected; trackBy: trackByOption\"\n class=\"chip\"\n [class]=\"option.new
|
|
143
|
+
args: [{ selector: 'riv-search-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage ?? ''\"\n>\n <div class=\"search-select\" [class.disabled]=\"disabled\">\n <div #trigger class=\"input-wrapper\">\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"searchText\"\n [disabled]=\"disabled\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (input)=\"onSearchInput(searchInput.value)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n />\n </div>\n\n <div *ngIf=\"selected.length > 0\" class=\"chips\">\n <div\n *ngFor=\"let option of selected; trackBy: trackByOption\"\n class=\"chip\"\n [class.new]=\"option.new\"\n [class.existing]=\"!option.new\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [rivTooltip]=\"option.new && newTooltip ? newTooltip : undefined\"\n >\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [size]=\"'xsmall'\"\n [disabled]=\"disabled\"\n (click)=\"removeOption(option)\"\n ></button>\n <ng-container *ngIf=\"chipTemplate; else defaultChip\">\n <ng-container\n *ngTemplateOutlet=\"chipTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultChip>\n <span class=\"chip-text\">{{ option.title }}</span>\n </ng-template>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'bottom-right'\"\n [allowedPositions]=\"['bottom-right']\"\n (close)=\"close()\"\n >\n <div class=\"dropdown\">\n <button\n *ngIf=\"showAddNew\"\n type=\"button\"\n class=\"dropdown-option add-new\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onAddNew()\"\n >\n <riv-icon [name]=\"'Plus'\" [size]=\"16\"></riv-icon>\n <span>{{ addNewLabel }} \"{{ searchText }}\"</span>\n </button>\n\n <div *ngIf=\"filteredOptions.length > 0\" class=\"options-list\">\n <button\n *ngFor=\"let option of filteredOptions; trackBy: trackByOption\"\n type=\"button\"\n class=\"dropdown-option\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectOption(option)\"\n >\n <ng-container *ngIf=\"optionTemplate; else defaultOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { option: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultOption>\n <span class=\"option-title\">{{ option.title }}</span>\n <span *ngIf=\"option.subtitle\" class=\"option-subtitle\">{{\n option.subtitle\n }}</span>\n </ng-template>\n </button>\n </div>\n\n <div\n *ngIf=\"filteredOptions.length === 0 && !showAddNew\"\n class=\"no-results\"\n >\n No results found\n </div>\n </div>\n </riv-callout>\n </ng-container>\n</riv-input-label>\n", styles: [":host{display:block}.search-select{display:flex;flex-direction:column;gap:var(--size-small)}.search-select.disabled{opacity:.6;pointer-events:none}.input-wrapper{position:relative}input{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) var(--size-medium);padding-right:calc(var(--size-xlarge) + var(--size-xsmall));height:var(--input-field-height-medium)}input::placeholder{color:var(--type-light-disabled)}input:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}input:focus{outline:none;border:var(--border-width) solid var(--purp-60)}input.warning{border-color:var(--surface-dark-caution)}input.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}input.small{font:var(--input-small);padding:var(--size-small) var(--size-medium);height:var(--input-field-height-small)}input.large{font:var(--input-large);padding:var(--size-medium);height:var(--input-field-height-large)}.chips{display:flex;flex-wrap:wrap;gap:var(--size-small)}.chip{display:inline-flex;align-items:center;gap:var(--size-xsmall);border-radius:var(--border-radius-medium);padding:var(--size-xsmall) var(--size-medium) var(--size-xsmall) var(--size-small);font:var(--title-02);color:var(--type-light-high-contrast);max-width:100%}.chip.existing{background-color:var(--purp-10);border:var(--border-width) solid var(--border-light)}.chip.new{border:var(--border-width) dashed var(--border-light)}.chip.small{font:var(--input-small);padding:calc(var(--size-xsmall) / 2) var(--size-small)}.chip.large{font:var(--input-large);padding:var(--size-small) var(--size-medium)}.chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown{min-width:200px;max-width:400px;max-height:300px;overflow-y:auto;padding:var(--size-large)}.dropdown-option{display:flex;align-items:center;gap:var(--size-small);width:100%;padding:var(--size-small) var(--size-xsmall);border-radius:var(--border-radius-medium);font:var(--input-medium);text-align:left;cursor:pointer;transition:background-color var(--short-transition)}.dropdown-option:hover{background-color:var(--surface-light-2)}.dropdown-option:active{background-color:var(--surface-light-3)}.dropdown-option.add-new{color:var(--purp-80);font-weight:var(--font-weight-heavy)}.dropdown-option.add-new riv-icon{color:var(--purp-80)}.options-list{display:flex;flex-direction:column;gap:var(--size-xsmall)}.option-title{color:var(--type-light-high-contrast)}.option-subtitle{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall)}.no-results{padding:var(--size-medium);text-align:center;color:var(--type-light-low-contrast);font:var(--input-medium)}\n"] }]
|
|
144
144
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
|
|
145
145
|
type: Input
|
|
146
146
|
}], selected: [{
|
|
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
184
184
|
SearchSelectComponent.Sizes = ['small', 'medium', 'large'];
|
|
185
185
|
SearchSelectComponent.States = ['valid', 'warning', 'error'];
|
|
186
186
|
})(SearchSelectComponent || (SearchSelectComponent = {}));
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zZWFyY2gtc2VsZWN0L3NlYXJjaC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2VhcmNoLXNlbGVjdC9zZWFyY2gtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQVMzQixNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQTZCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBR25ELFlBQU8sR0FBUSxFQUFFLENBQUM7UUFHbEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUduQixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUcvQixnQkFBVyxHQUFXLEtBQUssQ0FBQztRQU01QixTQUFJLEdBQStCLFFBQVEsQ0FBQztRQUc1QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBUzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsVUFBSyxHQUFnQyxPQUFPLENBQUM7UUFZcEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRzdDLGdCQUFXLEdBQXdDLElBQUksQ0FBQztRQUd4RCxZQUFPLEdBQXNDLElBQUksQ0FBQztRQUVsRCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFD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WUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSUcsY0FBYztzQkFEdEIsTUFBTTtnQkFJRSxNQUFNO3NCQURkLE1BQU07Z0JBSVAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBSXhCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTOztBQW9JdEIsV0FBaUIscUJBQXFCO0lBQ3ZCLDJCQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBVSxDQUFDO0lBRzlDLDRCQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBSS9ELENBQUMsRUFSZ0IscUJBQXFCLEtBQXJCLHFCQUFxQixRQVFyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgRnVzZSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uL3NlbGVjdC9zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1zZWFyY2gtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlbGVjdENvbXBvbmVudDxUIGV4dGVuZHMgU2VhcmNoU2VsZWN0Q29tcG9uZW50Lk9wdGlvbj5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IFRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBUW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaCc7XG5cbiAgQElucHV0KClcbiAgYWRkTmV3TGFiZWw6IHN0cmluZyA9ICdBZGQnO1xuXG4gIEBJbnB1dCgpXG4gIG5ld1Rvb2x0aXA/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogU2VhcmNoU2VsZWN0Q29tcG9uZW50LlNpemUgPSAnbWVkaXVtJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGhlbHA/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzdGF0ZTogU2VhcmNoU2VsZWN0Q29tcG9uZW50LlN0YXRlID0gJ3ZhbGlkJztcblxuICBASW5wdXQoKVxuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgb3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wdGlvbjogVCB9PjtcblxuICBASW5wdXQoKVxuICBjaGlwVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wdGlvbjogVCB9PjtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgYWRkTmV3ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKVxuICBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKVxuICB0cmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyZWRPcHRpb25zOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSBmdXNlOiBGdXNlPFQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZ1c2UoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRnVzZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZ1c2UgPSBuZXcgRnVzZSh0aGlzLm9wdGlvbnMsIHtcbiAgICAgIGtleXM6IFsndGl0bGUnLCAnc3VidGl0bGUnXSxcbiAgICAgIHRocmVzaG9sZDogMC4zLFxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XG4gIH1cblxuICBvblNlYXJjaElucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIGlmICghdGhpcy5pc09wZW4gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmlsdGVyZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXh0IHx8ICF0aGlzLmZ1c2UpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5nZXRVbnNlbGVjdGVkT3B0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5mdXNlLnNlYXJjaCh0aGlzLnNlYXJjaFRleHQpO1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSByZXN1bHRzXG4gICAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5pdGVtKVxuICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiAhdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgJiYgIW9wdGlvbi5uZXcpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VW5zZWxlY3RlZE9wdGlvbnMoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgIG9wdGlvbiA9PiAhdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgJiYgIW9wdGlvbi5uZXcsXG4gICAgKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQuc29tZShzID0+IHMuaWQgPT09IG9wdGlvbi5pZCk7XG4gIH1cblxuICBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gWy4uLnRoaXMuc2VsZWN0ZWQsIG9wdGlvbl07XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KG5ld1NlbGVjdGVkKTtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICB9XG5cbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbjogVCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZC5maWx0ZXIocyA9PiBzLmlkICE9PSBvcHRpb24uaWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZCk7XG4gIH1cblxuICBvbkFkZE5ldygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dC50cmltKCkpIHJldHVybjtcbiAgICB0aGlzLmFkZE5ldy5lbWl0KHRoaXMuc2VhcmNoVGV4dC50cmltKCkpO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG9uSW5wdXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIG9uSW5wdXRCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNDbGlja0luc2lkZUNvbXBvbmVudChldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LCAxNTApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NsaWNrSW5zaWRlQ29tcG9uZW50KHRhcmdldDogRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXI/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldCkgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBldmVudC5rZXkgPT09ICdFbnRlcicgJiZcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCAmJlxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLm9uQWRkTmV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlPcHRpb24oX2luZGV4OiBudW1iZXIsIG9wdGlvbjogVCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIG9wdGlvbi5pZDtcbiAgfVxuXG4gIGdldCBzaG93QWRkTmV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc2VhcmNoVGV4dC50cmltKCk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBTZWFyY2hTZWxlY3RDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgU2l6ZXMgPSBbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTaXplcylbbnVtYmVyXTtcblxuICBleHBvcnQgY29uc3QgU3RhdGVzID0gWyd2YWxpZCcsICd3YXJuaW5nJywgJ2Vycm9yJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFN0YXRlID0gKHR5cGVvZiBTdGF0ZXMpW251bWJlcl07XG5cbiAgZXhwb3J0IHR5cGUgT3B0aW9uID0gUml2U2VsZWN0LkJhc2VPcHRpb24gJiB7IG5ldzogYm9vbGVhbiB9O1xufVxuIiwiPHJpdi1pbnB1dC1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW3N0YXRlXT1cInN0YXRlXCJcbiAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2UgPz8gJydcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXNlbGVjdFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgI3RyaWdnZXIgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRleHRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3Muc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICAgIFtjbGFzcy5sYXJnZV09XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICAgICAgW2NsYXNzLndhcm5pbmddPVwic3RhdGUgPT09ICd3YXJuaW5nJ1wiXG4gICAgICAgIFtjbGFzcy5lcnJvcl09XCJzdGF0ZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KHNlYXJjaElucHV0LnZhbHVlKVwiXG4gICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoKVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNoaXBzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWQ7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25cIlxuICAgICAgICBjbGFzcz1cImNoaXBcIlxuICAgICAgICBbY2xhc3NdPVwib3B0aW9uLm5ldyA/ICduZXcnIDogJ2V4aXN0aW5nJ1wiXG4gICAgICAgIFtjbGFzcy5zbWFsbF09XCJzaXplID09PSAnc21hbGwnXCJcbiAgICAgICAgW2NsYXNzLmxhcmdlXT1cInNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgICBbcml2VG9vbHRpcF09XCJvcHRpb24ubmV3ICYmIG5ld1Rvb2x0aXAgPyBuZXdUb29sdGlwIDogdW5kZWZpbmVkXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgIFtpY29uXT1cIidYJ1wiXG4gICAgICAgICAgW3NpemVdPVwiJ3hzbWFsbCdcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpcFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRDaGlwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGlwVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uOiBvcHRpb24gfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2hpcD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAtdGV4dFwiPnt7IG9wdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgPHJpdi1jYWxsb3V0XG4gICAgICAqcml2LW92ZXJsYXlcbiAgICAgIFthbmNob3JdPVwidHJpZ2dlclwiXG4gICAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICBbYWxsb3dlZFBvc2l0aW9uc109XCJbJ2JvdHRvbS1yaWdodCddXCJcbiAgICAgIChjbG9zZSk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0FkZE5ld1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb24gYWRkLW5ld1wiXG4gICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWRkTmV3KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidQbHVzJ1wiIFtzaXplXT1cIjE2XCI+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyBhZGROZXdMYWJlbCB9fSBcInt7IHNlYXJjaFRleHQgfX1cIjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJvcHRpb25zLWxpc3RcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeU9wdGlvblwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdE9wdGlvblwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb246IG9wdGlvbiB9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRPcHRpb24+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLXRpdGxlXCI+e3sgb3B0aW9uLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbi5zdWJ0aXRsZVwiIGNsYXNzPVwib3B0aW9uLXN1YnRpdGxlXCI+e3tcbiAgICAgICAgICAgICAgICBvcHRpb24uc3VidGl0bGVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwICYmICFzaG93QWRkTmV3XCJcbiAgICAgICAgICBjbGFzcz1cIm5vLXJlc3VsdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgTm8gcmVzdWx0cyBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcml2LWNhbGxvdXQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9yaXYtaW5wdXQtbGFiZWw+XG4iXX0=
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9zZWFyY2gtc2VsZWN0L3NlYXJjaC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc2VhcmNoLXNlbGVjdC9zZWFyY2gtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7Ozs7Ozs7OztBQVMzQixNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQTZCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBR25ELFlBQU8sR0FBUSxFQUFFLENBQUM7UUFHbEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUduQixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUcvQixnQkFBVyxHQUFXLEtBQUssQ0FBQztRQU01QixTQUFJLEdBQStCLFFBQVEsQ0FBQztRQUc1QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBUzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsVUFBSyxHQUFnQyxPQUFPLENBQUM7UUFZcEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3pDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRzdDLGdCQUFXLEdBQXdDLElBQUksQ0FBQztRQUd4RCxZQUFPLEdBQXNDLElBQUksQ0FBQztRQUVsRCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFD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WUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSUcsY0FBYztzQkFEdEIsTUFBTTtnQkFJRSxNQUFNO3NCQURkLE1BQU07Z0JBSVAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBSXhCLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTOztBQW9JdEIsV0FBaUIscUJBQXFCO0lBQ3ZCLDJCQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBVSxDQUFDO0lBRzlDLDRCQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBSS9ELENBQUMsRUFSZ0IscUJBQXFCLEtBQXJCLHFCQUFxQixRQVFyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgRnVzZSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uL3NlbGVjdC9zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1zZWFyY2gtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlbGVjdENvbXBvbmVudDxUIGV4dGVuZHMgU2VhcmNoU2VsZWN0Q29tcG9uZW50Lk9wdGlvbj5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IFRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBUW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaCc7XG5cbiAgQElucHV0KClcbiAgYWRkTmV3TGFiZWw6IHN0cmluZyA9ICdBZGQnO1xuXG4gIEBJbnB1dCgpXG4gIG5ld1Rvb2x0aXA/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogU2VhcmNoU2VsZWN0Q29tcG9uZW50LlNpemUgPSAnbWVkaXVtJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGhlbHA/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzdGF0ZTogU2VhcmNoU2VsZWN0Q29tcG9uZW50LlN0YXRlID0gJ3ZhbGlkJztcblxuICBASW5wdXQoKVxuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgb3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wdGlvbjogVCB9PjtcblxuICBASW5wdXQoKVxuICBjaGlwVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wdGlvbjogVCB9PjtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgYWRkTmV3ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKVxuICBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKVxuICB0cmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyZWRPcHRpb25zOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSBmdXNlOiBGdXNlPFQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZ1c2UoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRnVzZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZ1c2UgPSBuZXcgRnVzZSh0aGlzLm9wdGlvbnMsIHtcbiAgICAgIGtleXM6IFsndGl0bGUnLCAnc3VidGl0bGUnXSxcbiAgICAgIHRocmVzaG9sZDogMC4zLFxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XG4gIH1cblxuICBvblNlYXJjaElucHV0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIGlmICghdGhpcy5pc09wZW4gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRmlsdGVyZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXh0IHx8ICF0aGlzLmZ1c2UpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5nZXRVbnNlbGVjdGVkT3B0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5mdXNlLnNlYXJjaCh0aGlzLnNlYXJjaFRleHQpO1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSByZXN1bHRzXG4gICAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5pdGVtKVxuICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiAhdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgJiYgIW9wdGlvbi5uZXcpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VW5zZWxlY3RlZE9wdGlvbnMoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlcihcbiAgICAgIG9wdGlvbiA9PiAhdGhpcy5pc1NlbGVjdGVkKG9wdGlvbikgJiYgIW9wdGlvbi5uZXcsXG4gICAgKTtcbiAgfVxuXG4gIGlzU2VsZWN0ZWQob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQuc29tZShzID0+IHMuaWQgPT09IG9wdGlvbi5pZCk7XG4gIH1cblxuICBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gWy4uLnRoaXMuc2VsZWN0ZWQsIG9wdGlvbl07XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KG5ld1NlbGVjdGVkKTtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICB9XG5cbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbjogVCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZC5maWx0ZXIocyA9PiBzLmlkICE9PSBvcHRpb24uaWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZCk7XG4gIH1cblxuICBvbkFkZE5ldygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGV4dC50cmltKCkpIHJldHVybjtcbiAgICB0aGlzLmFkZE5ldy5lbWl0KHRoaXMuc2VhcmNoVGV4dC50cmltKCkpO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG9uSW5wdXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIG9uSW5wdXRCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNDbGlja0luc2lkZUNvbXBvbmVudChldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LCAxNTApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NsaWNrSW5zaWRlQ29tcG9uZW50KHRhcmdldDogRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXI/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldCkgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBldmVudC5rZXkgPT09ICdFbnRlcicgJiZcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCAmJlxuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLm9uQWRkTmV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlPcHRpb24oX2luZGV4OiBudW1iZXIsIG9wdGlvbjogVCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIG9wdGlvbi5pZDtcbiAgfVxuXG4gIGdldCBzaG93QWRkTmV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc2VhcmNoVGV4dC50cmltKCk7XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBTZWFyY2hTZWxlY3RDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgU2l6ZXMgPSBbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTaXplcylbbnVtYmVyXTtcblxuICBleHBvcnQgY29uc3QgU3RhdGVzID0gWyd2YWxpZCcsICd3YXJuaW5nJywgJ2Vycm9yJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFN0YXRlID0gKHR5cGVvZiBTdGF0ZXMpW251bWJlcl07XG5cbiAgZXhwb3J0IHR5cGUgT3B0aW9uID0gUml2U2VsZWN0LkJhc2VPcHRpb24gJiB7IG5ldzogYm9vbGVhbiB9O1xufVxuIiwiPHJpdi1pbnB1dC1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbaGVscF09XCJoZWxwXCJcbiAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgW3N0YXRlXT1cInN0YXRlXCJcbiAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2UgPz8gJydcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXNlbGVjdFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgI3RyaWdnZXIgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRleHRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3Muc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICAgIFtjbGFzcy5sYXJnZV09XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICAgICAgW2NsYXNzLndhcm5pbmddPVwic3RhdGUgPT09ICd3YXJuaW5nJ1wiXG4gICAgICAgIFtjbGFzcy5lcnJvcl09XCJzdGF0ZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KHNlYXJjaElucHV0LnZhbHVlKVwiXG4gICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoKVwiXG4gICAgICAgIChibHVyKT1cIm9uSW5wdXRCbHVyKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkLmxlbmd0aCA+IDBcIiBjbGFzcz1cImNoaXBzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWQ7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25cIlxuICAgICAgICBjbGFzcz1cImNoaXBcIlxuICAgICAgICBbY2xhc3MubmV3XT1cIm9wdGlvbi5uZXdcIlxuICAgICAgICBbY2xhc3MuZXhpc3RpbmddPVwiIW9wdGlvbi5uZXdcIlxuICAgICAgICBbY2xhc3Muc21hbGxdPVwic2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICAgIFtjbGFzcy5sYXJnZV09XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgICAgICAgW3JpdlRvb2x0aXBdPVwib3B0aW9uLm5ldyAmJiBuZXdUb29sdGlwID8gbmV3VG9vbHRpcCA6IHVuZGVmaW5lZFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgICBbaWNvbl09XCInWCdcIlxuICAgICAgICAgIFtzaXplXT1cIid4c21hbGwnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJyZW1vdmVPcHRpb24ob3B0aW9uKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaXBUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Q2hpcFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hpcFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogb3B0aW9uIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENoaXA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwLXRleHRcIj57eyBvcHRpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlblwiPlxuICAgIDxyaXYtY2FsbG91dFxuICAgICAgKnJpdi1vdmVybGF5XG4gICAgICBbYW5jaG9yXT1cInRyaWdnZXJcIlxuICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiWydib3R0b20tcmlnaHQnXVwiXG4gICAgICAoY2xvc2UpPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cInNob3dBZGROZXdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uIGFkZC1uZXdcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIChjbGljayk9XCJvbkFkZE5ldygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxyaXYtaWNvbiBbbmFtZV09XCInUGx1cydcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgYWRkTmV3TGFiZWwgfX0gXCJ7eyBzZWFyY2hUZXh0IH19XCI8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwib3B0aW9ucy1saXN0XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW9wdGlvblwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24ob3B0aW9uKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRPcHRpb25cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uOiBvcHRpb24gfVwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0T3B0aW9uPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi10aXRsZVwiPnt7IG9wdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uc3VidGl0bGVcIiBjbGFzcz1cIm9wdGlvbi1zdWJ0aXRsZVwiPnt7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnN1YnRpdGxlXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMCAmJiAhc2hvd0FkZE5ld1wiXG4gICAgICAgICAgY2xhc3M9XCJuby1yZXN1bHRzXCJcbiAgICAgICAgPlxuICAgICAgICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3Jpdi1jYWxsb3V0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvcml2LWlucHV0LWxhYmVsPlxuIl19
|
|
@@ -8,8 +8,9 @@ import * as i2 from "../../../input/button/button.component";
|
|
|
8
8
|
import * as i3 from "../../../overlay/callout/callout.component";
|
|
9
9
|
import * as i4 from "../../../icon/icon.component";
|
|
10
10
|
import * as i5 from "../../../overlay/overlay.directive";
|
|
11
|
-
import * as i6 from "../../../input/select/select
|
|
12
|
-
import * as i7 from "../../../input/
|
|
11
|
+
import * as i6 from "../../../input/search-select/search-select.component";
|
|
12
|
+
import * as i7 from "../../../input/select/select/select.component";
|
|
13
|
+
import * as i8 from "../../../input/text-field/text-field.component";
|
|
13
14
|
const titles = {
|
|
14
15
|
private: 'Private',
|
|
15
16
|
public: 'Public',
|
|
@@ -21,8 +22,10 @@ const subtitles = {
|
|
|
21
22
|
shared: 'Only visible to those with access',
|
|
22
23
|
};
|
|
23
24
|
export class EditViewComponent {
|
|
24
|
-
constructor() {
|
|
25
|
+
constructor(cdr) {
|
|
26
|
+
this.cdr = cdr;
|
|
25
27
|
this.autoSelectName = false;
|
|
28
|
+
this.userSelectMode = 'select';
|
|
26
29
|
this.mode = 'edit';
|
|
27
30
|
this.save = new EventEmitter();
|
|
28
31
|
this.delete = new EventEmitter();
|
|
@@ -32,6 +35,8 @@ export class EditViewComponent {
|
|
|
32
35
|
title: titles[permission],
|
|
33
36
|
subtitle: subtitles[permission],
|
|
34
37
|
}));
|
|
38
|
+
this.userOptions = [];
|
|
39
|
+
this.selectedUsers = [];
|
|
35
40
|
}
|
|
36
41
|
resetView() {
|
|
37
42
|
this.editedView = cloneDeep(this.view);
|
|
@@ -71,33 +76,61 @@ export class EditViewComponent {
|
|
|
71
76
|
tearDownUserSelectManager() {
|
|
72
77
|
this.userSelectSubscription?.unsubscribe();
|
|
73
78
|
}
|
|
74
|
-
setUpUserSelectManager() {
|
|
79
|
+
async setUpUserSelectManager() {
|
|
75
80
|
this.tearDownUserSelectManager();
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
if (this.userSelectMode === 'search-select') {
|
|
82
|
+
const users = await (this.userSource || (() => []))();
|
|
83
|
+
this.userOptions = users.map(u => ({ ...u, new: false }));
|
|
84
|
+
this.selectedUsers = this.getSharedUsers(this.editedView).map(u => ({
|
|
85
|
+
...u,
|
|
86
|
+
new: false,
|
|
87
|
+
}));
|
|
88
|
+
this.cdr.markForCheck();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.userSelectManager = RivSelect.createInMemoryManager(async () => [{ options: await (this.userSource || (() => []))() }], {
|
|
92
|
+
allowSearch: true,
|
|
93
|
+
allowSelectAll: true,
|
|
94
|
+
allowMultiSelect: true,
|
|
95
|
+
displayLimit: 500,
|
|
96
|
+
initialState: {
|
|
97
|
+
selection: {
|
|
98
|
+
selected: new RivSelect.OptionSet(this.getSharedUsers(this.editedView)),
|
|
99
|
+
},
|
|
84
100
|
},
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
101
|
+
});
|
|
102
|
+
this.userSelectSubscription = this.userSelectManager.state.subscribe(state => {
|
|
103
|
+
if (RivViews.isSharedView(this.editedView)) {
|
|
104
|
+
this.editedView.sharedUsers = [...state.selection.selected];
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
this.userSelectManager.actions.next({ type: 'load' });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
onSelectedUsersChange(users) {
|
|
111
|
+
this.selectedUsers = users;
|
|
112
|
+
if (RivViews.isSharedView(this.editedView)) {
|
|
113
|
+
this.editedView.sharedUsers = RivViews.toSharedUsers(users);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
handleAddUser(searchText) {
|
|
117
|
+
if (!this.onAddUser)
|
|
118
|
+
return;
|
|
119
|
+
const newUser = this.onAddUser(searchText);
|
|
120
|
+
this.userOptions = [...this.userOptions, newUser];
|
|
121
|
+
this.selectedUsers = [...this.selectedUsers, newUser];
|
|
122
|
+
if (RivViews.isSharedView(this.editedView)) {
|
|
123
|
+
this.editedView.sharedUsers = RivViews.toSharedUsers(this.selectedUsers);
|
|
124
|
+
}
|
|
125
|
+
this.cdr.markForCheck();
|
|
93
126
|
}
|
|
94
127
|
}
|
|
95
|
-
EditViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EditViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
-
EditViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EditViewComponent, selector: "riv-edit-view", inputs: { anchor: "anchor", autoSelectName: "autoSelectName", view: "view", userSource: "userSource", mode: "mode" }, outputs: { save: "save", delete: "delete", close: "close" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"editedView; let ev\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor ?? null\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [fallbackDirection]=\"'clockwise'\"\n (close)=\"close.emit()\"\n >\n <div class=\"edit-view\">\n <div class=\"name-input\">\n <span class=\"name-label\">Name * </span>\n <riv-text-field\n [autoFocus]=\"autoSelectName ? 'select' : false\"\n [value]=\"ev.title ?? ''\"\n (valueChange)=\"titleChange($event)\"\n ></riv-text-field>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"permissions\">\n <div class=\"permission-label\">View permissions</div>\n\n <div class=\"permission-options\">\n <button\n *ngFor=\"let option of permissionOptions\"\n class=\"permission-option\"\n [class.current]=\"ev.permission === option.value\"\n type=\"button\"\n [attr.aria-checked]=\"ev.permission === option.value\"\n [attr.aria-label]=\"option.title + ' permission'\"\n (click)=\"permissionChange(option.value)\"\n >\n <div class=\"option-content\">\n <div class=\"option-title\">\n <span>{{ option.title }}</span>\n <span class=\"option-description\">{{ option.subtitle }}</span>\n </div>\n <riv-icon\n *ngIf=\"ev.permission === option.value\"\n class=\"permission-indicator\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n </div>\n <riv-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectManager\n \"\n [label]=\"'Users with access'\"\n [manager]=\"userSelectManager\"\n ></riv-select>\n </button>\n </div>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"actions\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'Trash2'\"\n (click)=\"delete.emit(ev); close.emit()\"\n *ngIf=\"canEdit()\"\n >\n Delete\n </button>\n\n <div class=\"actions-spacer\"></div>\n\n <div class=\"primary-actions\">\n <button rivButton [variant]=\"'ghost'\" (click)=\"close.emit()\">\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'primary'\"\n [disabled]=\"canEdit() && isClean()\"\n (click)=\"save.emit(ev); close.emit()\"\n >\n Save\n </button>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".edit-view{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 104);max-width:50vw;max-height:80vh;overflow-y:auto}.divider{height:var(--border-width);background-color:var(--border-light);border:0;width:100%}.permissions{display:flex;flex-direction:column;gap:var(--size-medium)}.permission-options{display:flex;flex-direction:column}.permission-label,.name-label{font:var(--title-02)}.name-input{display:flex;flex-direction:column;gap:var(--size-small)}.permission-option{display:flex;flex-direction:column;gap:var(--size-small);padding:var(--size-small) var(--size-medium);border-radius:var(--border-radius-large);cursor:pointer;text-align:left}.permission-option:hover{background-color:var(--surface-light-1)}.permission-option:active,.permission-option.current{background-color:var(--surface-light-2)}.option-content{display:flex;justify-content:space-between;align-items:center}.option-title{font:var(--body-medium);display:flex;flex-direction:column;align-items:flex-start}.option-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-indicator{color:var(--type-light-link)}.actions{display:flex;justify-content:space-between;align-items:center}.actions-spacer{flex-grow:1}.primary-actions{display:flex;align-items:center;gap:var(--size-small)}\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: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i5.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i6.SelectComponent, selector: "riv-select", inputs: ["manager", "size", "disabled", "locked", "allowedCalloutPositions", "preferredCalloutPosition"] }, { kind: "component", type:
|
|
128
|
+
EditViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EditViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
+
EditViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: EditViewComponent, selector: "riv-edit-view", inputs: { anchor: "anchor", autoSelectName: "autoSelectName", view: "view", userSource: "userSource", userSelectMode: "userSelectMode", onAddUser: "onAddUser", mode: "mode" }, outputs: { save: "save", delete: "delete", close: "close" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"editedView; let ev\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor ?? null\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [fallbackDirection]=\"'clockwise'\"\n (close)=\"close.emit()\"\n >\n <div class=\"edit-view\">\n <div class=\"name-input\">\n <span class=\"name-label\">Name * </span>\n <riv-text-field\n [autoFocus]=\"autoSelectName ? 'select' : false\"\n [value]=\"ev.title ?? ''\"\n (valueChange)=\"titleChange($event)\"\n ></riv-text-field>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"permissions\">\n <div class=\"permission-label\">View permissions</div>\n\n <div class=\"permission-options\">\n <button\n *ngFor=\"let option of permissionOptions\"\n class=\"permission-option\"\n [class.current]=\"ev.permission === option.value\"\n type=\"button\"\n [attr.aria-checked]=\"ev.permission === option.value\"\n [attr.aria-label]=\"option.title + ' permission'\"\n (click)=\"permissionChange(option.value)\"\n >\n <div class=\"option-content\">\n <div class=\"option-title\">\n <span>{{ option.title }}</span>\n <span class=\"option-description\">{{ option.subtitle }}</span>\n </div>\n <riv-icon\n *ngIf=\"ev.permission === option.value\"\n class=\"permission-indicator\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n </div>\n <riv-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectMode === 'select' &&\n userSelectManager\n \"\n [label]=\"'Users with access'\"\n [manager]=\"userSelectManager\"\n ></riv-select>\n <riv-search-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectMode === 'search-select'\n \"\n (click)=\"$event.stopPropagation()\"\n [label]=\"'Users with access'\"\n [options]=\"userOptions\"\n [selected]=\"selectedUsers\"\n [placeholder]=\"'Search users'\"\n [addNewLabel]=\"'Add'\"\n (selectedChange)=\"onSelectedUsersChange($event)\"\n (addNew)=\"handleAddUser($event)\"\n ></riv-search-select>\n </button>\n </div>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"actions\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'Trash2'\"\n (click)=\"delete.emit(ev); close.emit()\"\n *ngIf=\"canEdit()\"\n >\n Delete\n </button>\n\n <div class=\"actions-spacer\"></div>\n\n <div class=\"primary-actions\">\n <button rivButton [variant]=\"'ghost'\" (click)=\"close.emit()\">\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'primary'\"\n [disabled]=\"canEdit() && isClean()\"\n (click)=\"save.emit(ev); close.emit()\"\n >\n Save\n </button>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".edit-view{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 104);max-width:50vw;max-height:80vh;overflow-y:auto}.divider{height:var(--border-width);background-color:var(--border-light);border:0;width:100%}.permissions{display:flex;flex-direction:column;gap:var(--size-medium)}.permission-options{display:flex;flex-direction:column}.permission-label,.name-label{font:var(--title-02)}.name-input{display:flex;flex-direction:column;gap:var(--size-small)}.permission-option{display:flex;flex-direction:column;gap:var(--size-small);padding:var(--size-small) var(--size-medium);border-radius:var(--border-radius-large);cursor:pointer;text-align:left}.permission-option:hover{background-color:var(--surface-light-1)}.permission-option:active,.permission-option.current{background-color:var(--surface-light-2)}.option-content{display:flex;justify-content:space-between;align-items:center}.option-title{font:var(--body-medium);display:flex;flex-direction:column;align-items:flex-start}.option-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-indicator{color:var(--type-light-link)}.actions{display:flex;justify-content:space-between;align-items:center}.actions-spacer{flex-grow:1}.primary-actions{display:flex;align-items:center;gap:var(--size-small)}\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: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i4.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i5.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i6.SearchSelectComponent, selector: "riv-search-select", inputs: ["options", "selected", "placeholder", "addNewLabel", "newTooltip", "size", "disabled", "label", "help", "required", "state", "errorMessage", "optionTemplate", "chipTemplate"], outputs: ["selectedChange", "addNew"] }, { kind: "component", type: i7.SelectComponent, selector: "riv-select", inputs: ["manager", "size", "disabled", "locked", "allowedCalloutPositions", "preferredCalloutPosition"] }, { kind: "component", type: i8.TextFieldComponent, selector: "riv-text-field", inputs: ["disabled", "readonly", "placeholder", "casing", "type", "size", "autoFocus", "name", "minLength", "maxLength", "value"], outputs: ["valueChange", "blur"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
97
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EditViewComponent, decorators: [{
|
|
98
131
|
type: Component,
|
|
99
|
-
args: [{ selector: 'riv-edit-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"editedView; let ev\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor ?? null\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [fallbackDirection]=\"'clockwise'\"\n (close)=\"close.emit()\"\n >\n <div class=\"edit-view\">\n <div class=\"name-input\">\n <span class=\"name-label\">Name * </span>\n <riv-text-field\n [autoFocus]=\"autoSelectName ? 'select' : false\"\n [value]=\"ev.title ?? ''\"\n (valueChange)=\"titleChange($event)\"\n ></riv-text-field>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"permissions\">\n <div class=\"permission-label\">View permissions</div>\n\n <div class=\"permission-options\">\n <button\n *ngFor=\"let option of permissionOptions\"\n class=\"permission-option\"\n [class.current]=\"ev.permission === option.value\"\n type=\"button\"\n [attr.aria-checked]=\"ev.permission === option.value\"\n [attr.aria-label]=\"option.title + ' permission'\"\n (click)=\"permissionChange(option.value)\"\n >\n <div class=\"option-content\">\n <div class=\"option-title\">\n <span>{{ option.title }}</span>\n <span class=\"option-description\">{{ option.subtitle }}</span>\n </div>\n <riv-icon\n *ngIf=\"ev.permission === option.value\"\n class=\"permission-indicator\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n </div>\n <riv-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectManager\n \"\n [label]=\"'Users with access'\"\n [manager]=\"userSelectManager\"\n ></riv-select>\n </button>\n </div>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"actions\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'Trash2'\"\n (click)=\"delete.emit(ev); close.emit()\"\n *ngIf=\"canEdit()\"\n >\n Delete\n </button>\n\n <div class=\"actions-spacer\"></div>\n\n <div class=\"primary-actions\">\n <button rivButton [variant]=\"'ghost'\" (click)=\"close.emit()\">\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'primary'\"\n [disabled]=\"canEdit() && isClean()\"\n (click)=\"save.emit(ev); close.emit()\"\n >\n Save\n </button>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".edit-view{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 104);max-width:50vw;max-height:80vh;overflow-y:auto}.divider{height:var(--border-width);background-color:var(--border-light);border:0;width:100%}.permissions{display:flex;flex-direction:column;gap:var(--size-medium)}.permission-options{display:flex;flex-direction:column}.permission-label,.name-label{font:var(--title-02)}.name-input{display:flex;flex-direction:column;gap:var(--size-small)}.permission-option{display:flex;flex-direction:column;gap:var(--size-small);padding:var(--size-small) var(--size-medium);border-radius:var(--border-radius-large);cursor:pointer;text-align:left}.permission-option:hover{background-color:var(--surface-light-1)}.permission-option:active,.permission-option.current{background-color:var(--surface-light-2)}.option-content{display:flex;justify-content:space-between;align-items:center}.option-title{font:var(--body-medium);display:flex;flex-direction:column;align-items:flex-start}.option-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-indicator{color:var(--type-light-link)}.actions{display:flex;justify-content:space-between;align-items:center}.actions-spacer{flex-grow:1}.primary-actions{display:flex;align-items:center;gap:var(--size-small)}\n"] }]
|
|
100
|
-
}], propDecorators: { anchor: [{
|
|
132
|
+
args: [{ selector: 'riv-edit-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"editedView; let ev\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor ?? null\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [fallbackDirection]=\"'clockwise'\"\n (close)=\"close.emit()\"\n >\n <div class=\"edit-view\">\n <div class=\"name-input\">\n <span class=\"name-label\">Name * </span>\n <riv-text-field\n [autoFocus]=\"autoSelectName ? 'select' : false\"\n [value]=\"ev.title ?? ''\"\n (valueChange)=\"titleChange($event)\"\n ></riv-text-field>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"permissions\">\n <div class=\"permission-label\">View permissions</div>\n\n <div class=\"permission-options\">\n <button\n *ngFor=\"let option of permissionOptions\"\n class=\"permission-option\"\n [class.current]=\"ev.permission === option.value\"\n type=\"button\"\n [attr.aria-checked]=\"ev.permission === option.value\"\n [attr.aria-label]=\"option.title + ' permission'\"\n (click)=\"permissionChange(option.value)\"\n >\n <div class=\"option-content\">\n <div class=\"option-title\">\n <span>{{ option.title }}</span>\n <span class=\"option-description\">{{ option.subtitle }}</span>\n </div>\n <riv-icon\n *ngIf=\"ev.permission === option.value\"\n class=\"permission-indicator\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n </div>\n <riv-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectMode === 'select' &&\n userSelectManager\n \"\n [label]=\"'Users with access'\"\n [manager]=\"userSelectManager\"\n ></riv-select>\n <riv-search-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectMode === 'search-select'\n \"\n (click)=\"$event.stopPropagation()\"\n [label]=\"'Users with access'\"\n [options]=\"userOptions\"\n [selected]=\"selectedUsers\"\n [placeholder]=\"'Search users'\"\n [addNewLabel]=\"'Add'\"\n (selectedChange)=\"onSelectedUsersChange($event)\"\n (addNew)=\"handleAddUser($event)\"\n ></riv-search-select>\n </button>\n </div>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"actions\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'Trash2'\"\n (click)=\"delete.emit(ev); close.emit()\"\n *ngIf=\"canEdit()\"\n >\n Delete\n </button>\n\n <div class=\"actions-spacer\"></div>\n\n <div class=\"primary-actions\">\n <button rivButton [variant]=\"'ghost'\" (click)=\"close.emit()\">\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'primary'\"\n [disabled]=\"canEdit() && isClean()\"\n (click)=\"save.emit(ev); close.emit()\"\n >\n Save\n </button>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".edit-view{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 104);max-width:50vw;max-height:80vh;overflow-y:auto}.divider{height:var(--border-width);background-color:var(--border-light);border:0;width:100%}.permissions{display:flex;flex-direction:column;gap:var(--size-medium)}.permission-options{display:flex;flex-direction:column}.permission-label,.name-label{font:var(--title-02)}.name-input{display:flex;flex-direction:column;gap:var(--size-small)}.permission-option{display:flex;flex-direction:column;gap:var(--size-small);padding:var(--size-small) var(--size-medium);border-radius:var(--border-radius-large);cursor:pointer;text-align:left}.permission-option:hover{background-color:var(--surface-light-1)}.permission-option:active,.permission-option.current{background-color:var(--surface-light-2)}.option-content{display:flex;justify-content:space-between;align-items:center}.option-title{font:var(--body-medium);display:flex;flex-direction:column;align-items:flex-start}.option-description{font:var(--body-medium);color:var(--type-light-low-contrast)}.permission-indicator{color:var(--type-light-link)}.actions{display:flex;justify-content:space-between;align-items:center}.actions-spacer{flex-grow:1}.primary-actions{display:flex;align-items:center;gap:var(--size-small)}\n"] }]
|
|
133
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { anchor: [{
|
|
101
134
|
type: Input
|
|
102
135
|
}], autoSelectName: [{
|
|
103
136
|
type: Input
|
|
@@ -105,6 +138,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
105
138
|
type: Input
|
|
106
139
|
}], userSource: [{
|
|
107
140
|
type: Input
|
|
141
|
+
}], userSelectMode: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], onAddUser: [{
|
|
144
|
+
type: Input
|
|
108
145
|
}], mode: [{
|
|
109
146
|
type: Input
|
|
110
147
|
}], save: [{
|
|
@@ -114,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
114
151
|
}], close: [{
|
|
115
152
|
type: Output
|
|
116
153
|
}] } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3MvZWRpdC12aWV3L2VkaXQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL2VkaXQtdmlldy9lZGl0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7OztBQUVwQyxNQUFNLE1BQU0sR0FBNEM7SUFDdEQsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUE0QztJQUN6RCxPQUFPLEVBQUUscUJBQXFCO0lBQzlCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsTUFBTSxFQUFFLG1DQUFtQztDQUM1QyxDQUFDO0FBUUYsTUFBTSxPQUFPLGlCQUFpQjtJQU45QjtRQWVFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBV2hDLFNBQUksR0FBc0IsTUFBTSxDQUFDO1FBR2pDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUduRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFHckQsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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QU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs4R0FoSFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNlBDbEM5Qiw0MUZBNkZBOzJGRDNEYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzhCQVEvQyxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFNTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLElBQUk7c0JBREgsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBSVAsS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL2lucHV0L3NlbGVjdC9zdGF0ZSc7XG5pbXBvcnQgeyBSaXZWaWV3cyB9IGZyb20gJy4uL3N0YXRlJztcblxuY29uc3QgdGl0bGVzOiBSZWNvcmQ8Uml2Vmlld3MuVmlld1Blcm1pc3Npb24sIHN0cmluZz4gPSB7XG4gIHByaXZhdGU6ICdQcml2YXRlJyxcbiAgcHVibGljOiAnUHVibGljJyxcbiAgc2hhcmVkOiAnU2hhcmVkJyxcbn07XG5cbmNvbnN0IHN1YnRpdGxlczogUmVjb3JkPFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9uLCBzdHJpbmc+ID0ge1xuICBwcml2YXRlOiAnT25seSB2aXNpYmxlIHRvIHlvdScsXG4gIHB1YmxpYzogJ1Zpc2libGUgdG8gZXZlcnlvbmUnLFxuICBzaGFyZWQ6ICdPbmx5IHZpc2libGUgdG8gdGhvc2Ugd2l0aCBhY2Nlc3MnLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWVkaXQtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdFZpZXdDb21wb25lbnQ8XG4gIFUgZXh0ZW5kcyBSaXZWaWV3cy5Vc2VyLFxuICBWIGV4dGVuZHMgUml2Vmlld3MuVmlldzxVPixcbj4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIGFuY2hvcj86IEVsZW1lbnQgfCBET01SZWN0IHwgbnVsbDtcblxuICBASW5wdXQoKVxuICBhdXRvU2VsZWN0TmFtZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHZpZXc/OiBSaXZWaWV3cy5GdWxsVmlldzxVLCBWPjtcblxuICBlZGl0ZWRWaWV3PzogUml2Vmlld3MuRnVsbFZpZXc8VSwgVj47XG5cbiAgQElucHV0KClcbiAgdXNlclNvdXJjZT86IFJpdlZpZXdzLlVzZXJTb3VyY2U8VT47XG5cbiAgQElucHV0KClcbiAgbW9kZTogJ2VkaXQnIHwgJ2NyZWF0ZScgPSAnZWRpdCc7XG5cbiAgQE91dHB1dCgpXG4gIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+PigpO1xuXG4gIEBPdXRwdXQoKVxuICBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICByZWFkb25seSBwZXJtaXNzaW9uT3B0aW9ucyA9IFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9ucy5tYXAocGVybWlzc2lvbiA9PiAoe1xuICAgIHZhbHVlOiBwZXJtaXNzaW9uLFxuICAgIHRpdGxlOiB0aXRsZXNbcGVybWlzc2lvbl0sXG4gICAgc3VidGl0bGU6IHN1YnRpdGxlc1twZXJtaXNzaW9uXSxcbiAgfSkpO1xuXG4gIHByaXZhdGUgcmVzZXRWaWV3KCkge1xuICAgIHRoaXMuZWRpdGVkVmlldyA9IGNsb25lRGVlcCh0aGlzLnZpZXcpO1xuICAgIHRoaXMuc2V0VXBVc2VyU2VsZWN0TWFuYWdlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFZpZXcoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndmlldyddKSB7XG4gICAgICB0aGlzLnJlc2V0VmlldygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudGVhckRvd25Vc2VyU2VsZWN0TWFuYWdlcigpO1xuICB9XG5cbiAgY2FuRWRpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZWRpdCc7XG4gIH1cblxuICBpc0NsZWFuKCkge1xuICAgIHJldHVybiBpc0VxdWFsKHRoaXMuZWRpdGVkVmlldywgdGhpcy52aWV3KTtcbiAgfVxuXG4gIHRpdGxlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0ZWRWaWV3KSB0aGlzLmVkaXRlZFZpZXcudGl0bGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHBlcm1pc3Npb25DaGFuZ2UodmFsdWU6IFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdGVkVmlldykgdGhpcy5lZGl0ZWRWaWV3LnBlcm1pc3Npb24gPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2hhcmVkVXNlcnModmlldz86IFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+KTogVVtdIHtcbiAgICBpZiAoUml2Vmlld3MuaXNTaGFyZWRWaWV3KHZpZXcpKSB7XG4gICAgICByZXR1cm4gdmlldy5zaGFyZWRVc2VycztcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdXNlclNlbGVjdE1hbmFnZXI/OiBSaXZTZWxlY3QuTWFuYWdlcjxVPjtcbiAgcHJpdmF0ZSB1c2VyU2VsZWN0U3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgdGVhckRvd25Vc2VyU2VsZWN0TWFuYWdlcigpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJTZWxlY3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFVwVXNlclNlbGVjdE1hbmFnZXIoKTogdm9pZCB7XG4gICAgdGhpcy50ZWFyRG93blVzZXJTZWxlY3RNYW5hZ2VyKCk7XG4gICAgdGhpcy51c2VyU2VsZWN0TWFuYWdlciA9IFJpdlNlbGVjdC5jcmVhdGVJbk1lbW9yeU1hbmFnZXIoXG4gICAgICBhc3luYyAoKSA9PiBbeyBvcHRpb25zOiBhd2FpdCAodGhpcy51c2VyU291cmNlIHx8ICgoKSA9PiBbXSkpKCkgfV0sXG4gICAgICB7XG4gICAgICAgIGFsbG93U2VhcmNoOiB0cnVlLFxuICAgICAgICBhbGxvd1NlbGVjdEFsbDogdHJ1ZSxcbiAgICAgICAgYWxsb3dNdWx0aVNlbGVjdDogdHJ1ZSxcbiAgICAgICAgZGlzcGxheUxpbWl0OiA1MDAsXG4gICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgIHNlbGVjdGlvbjoge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IG5ldyBSaXZTZWxlY3QuT3B0aW9uU2V0KFxuICAgICAgICAgICAgICB0aGlzLmdldFNoYXJlZFVzZXJzKHRoaXMuZWRpdGVkVmlldyksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy51c2VyU2VsZWN0U3Vic2NyaXB0aW9uID0gdGhpcy51c2VyU2VsZWN0TWFuYWdlci5zdGF0ZS5zdWJzY3JpYmUoXG4gICAgICBzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChSaXZWaWV3cy5pc1NoYXJlZFZpZXcodGhpcy5lZGl0ZWRWaWV3KSkge1xuICAgICAgICAgIHRoaXMuZWRpdGVkVmlldy5zaGFyZWRVc2VycyA9IFsuLi5zdGF0ZS5zZWxlY3Rpb24uc2VsZWN0ZWRdIGFzIFVbXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICAgIHRoaXMudXNlclNlbGVjdE1hbmFnZXIuYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGVkVmlldzsgbGV0IGV2XCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtb3ZlcmxheVxuICAgIFthbmNob3JdPVwiYW5jaG9yID8/IG51bGxcIlxuICAgIFtpc01vZGFsXT1cInRydWVcIlxuICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgIFtmYWxsYmFja0RpcmVjdGlvbl09XCInY2xvY2t3aXNlJ1wiXG4gICAgKGNsb3NlKT1cImNsb3NlLmVtaXQoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZWRpdC12aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmFtZS1pbnB1dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWUtbGFiZWxcIj5OYW1lICogPC9zcGFuPlxuICAgICAgICA8cml2LXRleHQtZmllbGRcbiAgICAgICAgICBbYXV0b0ZvY3VzXT1cImF1dG9TZWxlY3ROYW1lID8gJ3NlbGVjdCcgOiBmYWxzZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImV2LnRpdGxlID8/ICcnXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidGl0bGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3Jpdi10ZXh0LWZpZWxkPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tbGFiZWxcIj5WaWV3IHBlcm1pc3Npb25zPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tb3B0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGVybWlzc2lvbk9wdGlvbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJwZXJtaXNzaW9uLW9wdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuY3VycmVudF09XCJldi5wZXJtaXNzaW9uID09PSBvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZXYucGVybWlzc2lvbiA9PT0gb3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwib3B0aW9uLnRpdGxlICsgJyBwZXJtaXNzaW9uJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwicGVybWlzc2lvbkNoYW5nZShvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1kZXNjcmlwdGlvblwiPnt7IG9wdGlvbi5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZXYucGVybWlzc2lvbiA9PT0gb3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBlcm1pc3Npb24taW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInQ2hlY2snXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cml2LXNlbGVjdFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGV2LnBlcm1pc3Npb24gPT09ICdzaGFyZWQnICYmXG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSAnc2hhcmVkJyAmJlxuICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RNYW5hZ2VyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInVXNlcnMgd2l0aCBhY2Nlc3MnXCJcbiAgICAgICAgICAgICAgW21hbmFnZXJdPVwidXNlclNlbGVjdE1hbmFnZXJcIlxuICAgICAgICAgICAgPjwvcml2LXNlbGVjdD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgICBbaWNvbl09XCInVHJhc2gyJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZS5lbWl0KGV2KTsgY2xvc2UuZW1pdCgpXCJcbiAgICAgICAgICAqbmdJZj1cImNhbkVkaXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICBEZWxldGVcbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtc3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnktYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gcml2QnV0dG9uIFt2YXJpYW50XT1cIidnaG9zdCdcIiAoY2xpY2spPVwiY2xvc2UuZW1pdCgpXCI+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICAgIFt2YXJpYW50XT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2FuRWRpdCgpICYmIGlzQ2xlYW4oKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2F2ZS5lbWl0KGV2KTsgY2xvc2UuZW1pdCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTYXZlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvcml2LWNhbGxvdXQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3MvZWRpdC12aWV3L2VkaXQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL2VkaXQtdmlldy9lZGl0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7QUFFcEMsTUFBTSxNQUFNLEdBQTRDO0lBQ3RELE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0NBQ2pCLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBNEM7SUFDekQsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixNQUFNLEVBQUUscUJBQXFCO0lBQzdCLE1BQU0sRUFBRSxtQ0FBbUM7Q0FDNUMsQ0FBQztBQVFGLE1BQU0sT0FBTyxpQkFBaUI7SUEyRjVCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEYxQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQVdoQyxtQkFBYyxHQUE0QixRQUFRLENBQUM7UUFNbkQsU0FBSSxHQUFzQixNQUFNLENBQUM7UUFHakMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FB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RUQsYUFBYSxDQUFDLFVBQWtCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMxRTtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7OEdBeEpVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHVUQ25DOUIsNmdIQTZHQTsyRkQxRWEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTt3R0FRL0MsTUFBTTtzQkFETCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBTU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLElBQUk7c0JBREgsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBSVAsS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSaXZTZWxlY3QgfSBmcm9tICcuLi8uLi8uLi9pbnB1dC9zZWxlY3Qvc3RhdGUnO1xuaW1wb3J0IHsgUml2Vmlld3MgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbmNvbnN0IHRpdGxlczogUmVjb3JkPFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9uLCBzdHJpbmc+ID0ge1xuICBwcml2YXRlOiAnUHJpdmF0ZScsXG4gIHB1YmxpYzogJ1B1YmxpYycsXG4gIHNoYXJlZDogJ1NoYXJlZCcsXG59O1xuXG5jb25zdCBzdWJ0aXRsZXM6IFJlY29yZDxSaXZWaWV3cy5WaWV3UGVybWlzc2lvbiwgc3RyaW5nPiA9IHtcbiAgcHJpdmF0ZTogJ09ubHkgdmlzaWJsZSB0byB5b3UnLFxuICBwdWJsaWM6ICdWaXNpYmxlIHRvIGV2ZXJ5b25lJyxcbiAgc2hhcmVkOiAnT25seSB2aXNpYmxlIHRvIHRob3NlIHdpdGggYWNjZXNzJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1lZGl0LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdC12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRWaWV3Q29tcG9uZW50PFxuICBVIGV4dGVuZHMgUml2Vmlld3MuVXNlcixcbiAgViBleHRlbmRzIFJpdlZpZXdzLlZpZXc8VT4sXG4+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBhbmNob3I/OiBFbGVtZW50IHwgRE9NUmVjdCB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgYXV0b1NlbGVjdE5hbWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICB2aWV3PzogUml2Vmlld3MuRnVsbFZpZXc8VSwgVj47XG5cbiAgZWRpdGVkVmlldz86IFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHVzZXJTb3VyY2U/OiBSaXZWaWV3cy5Vc2VyU291cmNlPFU+O1xuXG4gIEBJbnB1dCgpXG4gIHVzZXJTZWxlY3RNb2RlOiBSaXZWaWV3cy5Vc2VyU2VsZWN0TW9kZSA9ICdzZWxlY3QnO1xuXG4gIEBJbnB1dCgpXG4gIG9uQWRkVXNlcj86IFJpdlZpZXdzLk9uQWRkVXNlcjxVPjtcblxuICBASW5wdXQoKVxuICBtb2RlOiAnZWRpdCcgfCAnY3JlYXRlJyA9ICdlZGl0JztcblxuICBAT3V0cHV0KClcbiAgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Uml2Vmlld3MuRnVsbFZpZXc8VSwgVj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Uml2Vmlld3MuRnVsbFZpZXc8VSwgVj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25PcHRpb25zID0gUml2Vmlld3MuVmlld1Blcm1pc3Npb25zLm1hcChwZXJtaXNzaW9uID0+ICh7XG4gICAgdmFsdWU6IHBlcm1pc3Npb24sXG4gICAgdGl0bGU6IHRpdGxlc1twZXJtaXNzaW9uXSxcbiAgICBzdWJ0aXRsZTogc3VidGl0bGVzW3Blcm1pc3Npb25dLFxuICB9KSk7XG5cbiAgcHJpdmF0ZSByZXNldFZpZXcoKSB7XG4gICAgdGhpcy5lZGl0ZWRWaWV3ID0gY2xvbmVEZWVwKHRoaXMudmlldyk7XG4gICAgdGhpcy5zZXRVcFVzZXJTZWxlY3RNYW5hZ2VyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VmlldygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2aWV3J10pIHtcbiAgICAgIHRoaXMucmVzZXRWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50ZWFyRG93blVzZXJTZWxlY3RNYW5hZ2VyKCk7XG4gIH1cblxuICBjYW5FZGl0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdlZGl0JztcbiAgfVxuXG4gIGlzQ2xlYW4oKSB7XG4gICAgcmV0dXJuIGlzRXF1YWwodGhpcy5lZGl0ZWRWaWV3LCB0aGlzLnZpZXcpO1xuICB9XG5cbiAgdGl0bGVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRlZFZpZXcpIHRoaXMuZWRpdGVkVmlldy50aXRsZSA9IHZhbHVlO1xuICB9XG5cbiAgcGVybWlzc2lvbkNoYW5nZSh2YWx1ZTogUml2Vmlld3MuVmlld1Blcm1pc3Npb24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0ZWRWaWV3KSB0aGlzLmVkaXRlZFZpZXcucGVybWlzc2lvbiA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaGFyZWRVc2Vycyh2aWV3PzogUml2Vmlld3MuRnVsbFZpZXc8VSwgVj4pOiBVW10ge1xuICAgIGlmIChSaXZWaWV3cy5pc1NoYXJlZFZpZXcodmlldykpIHtcbiAgICAgIHJldHVybiB2aWV3LnNoYXJlZFVzZXJzO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICB1c2VyU2VsZWN0TWFuYWdlcj86IFJpdlNlbGVjdC5NYW5hZ2VyPFU+O1xuICBwcml2YXRlIHVzZXJTZWxlY3RTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgdXNlck9wdGlvbnM6IFJpdlZpZXdzLlNlYXJjaFNlbGVjdFVzZXI8VT5bXSA9IFtdO1xuICBzZWxlY3RlZFVzZXJzOiBSaXZWaWV3cy5TZWFyY2hTZWxlY3RVc2VyPFU+W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgcHJpdmF0ZSB0ZWFyRG93blVzZXJTZWxlY3RNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMudXNlclNlbGVjdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0VXBVc2VyU2VsZWN0TWFuYWdlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnRlYXJEb3duVXNlclNlbGVjdE1hbmFnZXIoKTtcblxuICAgIGlmICh0aGlzLnVzZXJTZWxlY3RNb2RlID09PSAnc2VhcmNoLXNlbGVjdCcpIHtcbiAgICAgIGNvbnN0IHVzZXJzID0gYXdhaXQgKHRoaXMudXNlclNvdXJjZSB8fCAoKCkgPT4gW10pKSgpO1xuICAgICAgdGhpcy51c2VyT3B0aW9ucyA9IHVzZXJzLm1hcCh1ID0+ICh7IC4uLnUsIG5ldzogZmFsc2UgfSkpO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gdGhpcy5nZXRTaGFyZWRVc2Vycyh0aGlzLmVkaXRlZFZpZXcpLm1hcCh1ID0+ICh7XG4gICAgICAgIC4uLnUsXG4gICAgICAgIG5ldzogZmFsc2UsXG4gICAgICB9KSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VyU2VsZWN0TWFuYWdlciA9IFJpdlNlbGVjdC5jcmVhdGVJbk1lbW9yeU1hbmFnZXIoXG4gICAgICAgIGFzeW5jICgpID0+IFt7IG9wdGlvbnM6IGF3YWl0ICh0aGlzLnVzZXJTb3VyY2UgfHwgKCgpID0+IFtdKSkoKSB9XSxcbiAgICAgICAge1xuICAgICAgICAgIGFsbG93U2VhcmNoOiB0cnVlLFxuICAgICAgICAgIGFsbG93U2VsZWN0QWxsOiB0cnVlLFxuICAgICAgICAgIGFsbG93TXVsdGlTZWxlY3Q6IHRydWUsXG4gICAgICAgICAgZGlzcGxheUxpbWl0OiA1MDAsXG4gICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IG5ldyBSaXZTZWxlY3QuT3B0aW9uU2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2hhcmVkVXNlcnModGhpcy5lZGl0ZWRWaWV3KSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnVzZXJTZWxlY3RTdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJTZWxlY3RNYW5hZ2VyLnN0YXRlLnN1YnNjcmliZShcbiAgICAgICAgc3RhdGUgPT4ge1xuICAgICAgICAgIGlmIChSaXZWaWV3cy5pc1NoYXJlZFZpZXcodGhpcy5lZGl0ZWRWaWV3KSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0ZWRWaWV3LnNoYXJlZFVzZXJzID0gWy4uLnN0YXRlLnNlbGVjdGlvbi5zZWxlY3RlZF0gYXMgVVtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnVzZXJTZWxlY3RNYW5hZ2VyLmFjdGlvbnMubmV4dCh7IHR5cGU6ICdsb2FkJyB9KTtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGVkVXNlcnNDaGFuZ2UodXNlcnM6IFJpdlZpZXdzLlNlYXJjaFNlbGVjdFVzZXI8VT5bXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IHVzZXJzO1xuICAgIGlmIChSaXZWaWV3cy5pc1NoYXJlZFZpZXcodGhpcy5lZGl0ZWRWaWV3KSkge1xuICAgICAgdGhpcy5lZGl0ZWRWaWV3LnNoYXJlZFVzZXJzID0gUml2Vmlld3MudG9TaGFyZWRVc2Vycyh1c2Vycyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQWRkVXNlcihzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub25BZGRVc2VyKSByZXR1cm47XG4gICAgY29uc3QgbmV3VXNlciA9IHRoaXMub25BZGRVc2VyKHNlYXJjaFRleHQpO1xuICAgIHRoaXMudXNlck9wdGlvbnMgPSBbLi4udGhpcy51c2VyT3B0aW9ucywgbmV3VXNlcl07XG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gWy4uLnRoaXMuc2VsZWN0ZWRVc2VycywgbmV3VXNlcl07XG4gICAgaWYgKFJpdlZpZXdzLmlzU2hhcmVkVmlldyh0aGlzLmVkaXRlZFZpZXcpKSB7XG4gICAgICB0aGlzLmVkaXRlZFZpZXcuc2hhcmVkVXNlcnMgPSBSaXZWaWV3cy50b1NoYXJlZFVzZXJzKHRoaXMuc2VsZWN0ZWRVc2Vycyk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGVkVmlldzsgbGV0IGV2XCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtb3ZlcmxheVxuICAgIFthbmNob3JdPVwiYW5jaG9yID8/IG51bGxcIlxuICAgIFtpc01vZGFsXT1cInRydWVcIlxuICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgIFtmYWxsYmFja0RpcmVjdGlvbl09XCInY2xvY2t3aXNlJ1wiXG4gICAgKGNsb3NlKT1cImNsb3NlLmVtaXQoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZWRpdC12aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmFtZS1pbnB1dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWUtbGFiZWxcIj5OYW1lICogPC9zcGFuPlxuICAgICAgICA8cml2LXRleHQtZmllbGRcbiAgICAgICAgICBbYXV0b0ZvY3VzXT1cImF1dG9TZWxlY3ROYW1lID8gJ3NlbGVjdCcgOiBmYWxzZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImV2LnRpdGxlID8/ICcnXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidGl0bGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3Jpdi10ZXh0LWZpZWxkPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tbGFiZWxcIj5WaWV3IHBlcm1pc3Npb25zPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tb3B0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGVybWlzc2lvbk9wdGlvbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJwZXJtaXNzaW9uLW9wdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuY3VycmVudF09XCJldi5wZXJtaXNzaW9uID09PSBvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZXYucGVybWlzc2lvbiA9PT0gb3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwib3B0aW9uLnRpdGxlICsgJyBwZXJtaXNzaW9uJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwicGVybWlzc2lvbkNoYW5nZShvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1kZXNjcmlwdGlvblwiPnt7IG9wdGlvbi5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZXYucGVybWlzc2lvbiA9PT0gb3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBlcm1pc3Npb24taW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInQ2hlY2snXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cml2LXNlbGVjdFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGV2LnBlcm1pc3Npb24gPT09ICdzaGFyZWQnICYmXG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSAnc2hhcmVkJyAmJlxuICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RNb2RlID09PSAnc2VsZWN0JyAmJlxuICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RNYW5hZ2VyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInVXNlcnMgd2l0aCBhY2Nlc3MnXCJcbiAgICAgICAgICAgICAgW21hbmFnZXJdPVwidXNlclNlbGVjdE1hbmFnZXJcIlxuICAgICAgICAgICAgPjwvcml2LXNlbGVjdD5cbiAgICAgICAgICAgIDxyaXYtc2VhcmNoLXNlbGVjdFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGV2LnBlcm1pc3Npb24gPT09ICdzaGFyZWQnICYmXG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSAnc2hhcmVkJyAmJlxuICAgICAgICAgICAgICAgIHVzZXJTZWxlY3RNb2RlID09PSAnc2VhcmNoLXNlbGVjdCdcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInVXNlcnMgd2l0aCBhY2Nlc3MnXCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwidXNlck9wdGlvbnNcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRVc2Vyc1wiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VhcmNoIHVzZXJzJ1wiXG4gICAgICAgICAgICAgIFthZGROZXdMYWJlbF09XCInQWRkJ1wiXG4gICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJvblNlbGVjdGVkVXNlcnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhZGROZXcpPVwiaGFuZGxlQWRkVXNlcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3Jpdi1zZWFyY2gtc2VsZWN0PlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8aHIgY2xhc3M9XCJkaXZpZGVyXCIgLz5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgIFtpY29uXT1cIidUcmFzaDInXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlLmVtaXQoZXYpOyBjbG9zZS5lbWl0KClcIlxuICAgICAgICAgICpuZ0lmPVwiY2FuRWRpdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIERlbGV0ZVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1zcGFjZXJcIj48L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeS1hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiByaXZCdXR0b24gW3ZhcmlhbnRdPVwiJ2dob3N0J1wiIChjbGljayk9XCJjbG9zZS5lbWl0KClcIj5cbiAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ3ByaW1hcnknXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjYW5FZGl0KCkgJiYgaXNDbGVhbigpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzYXZlLmVtaXQoZXYpOyBjbG9zZS5lbWl0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtY2FsbG91dD5cbjwvbmctY29udGFpbmVyPlxuIl19
|