tango-app-ui-store-builder 1.2.10 → 1.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/chips-input/chips-input.component.mjs +101 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +2 -2
- package/esm2022/lib/components/create-fixture/create-fixture.component.mjs +66 -25
- package/esm2022/lib/components/create-vm/create-vm.component.mjs +2 -2
- package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +1 -1
- package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +15 -5
- package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +31 -12
- package/esm2022/lib/components/fixture-template-table/popups/create-fixture-template/create-fixture-template.component.mjs +1 -1
- package/esm2022/lib/components/look-plano-collection/look-plano-collection.component.mjs +156 -0
- package/esm2022/lib/components/look-plano-collection-form/look-plano-collection-form.component.mjs +1204 -0
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +1 -1
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +1 -1
- package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +1 -1
- package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +2 -2
- package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +2 -2
- package/esm2022/lib/components/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.mjs +1 -1
- package/esm2022/lib/components/multiselect-chip-dropdown/multiselect-chip-dropdown.component.mjs +27 -4
- package/esm2022/lib/components/onboard-store-plano/create-planogram/create-planogram.component.mjs +2 -2
- package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +1 -1
- package/esm2022/lib/components/plano-library/fixture-library/popups/create-fixture-modal/create-fixture-modal.component.mjs +1 -1
- package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/move-bucket/move-bucket.component.mjs +1 -1
- package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +1 -1
- package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +1 -1
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +1 -1
- package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +22 -3
- package/esm2022/lib/components/searchable-select/searchable-select.component.mjs +265 -0
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +1 -1
- package/esm2022/lib/interfaces/fixture-library.interface.mjs +1 -1
- package/esm2022/lib/services/store-builder.service.mjs +28 -3
- package/esm2022/lib/tango-store-builder-routing.module.mjs +11 -1
- package/esm2022/lib/tango-store-builder.module.mjs +23 -4
- package/fesm2022/tango-app-ui-store-builder.mjs +1914 -69
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/chips-input/chips-input.component.d.ts +35 -0
- package/lib/components/create-fixture/create-fixture.component.d.ts +3 -0
- package/lib/components/fixture-template/template-products/template-products.component.d.ts +9 -1
- package/lib/components/fixture-template/template-vms/template-vms.component.d.ts +9 -1
- package/lib/components/look-plano-collection/look-plano-collection.component.d.ts +53 -0
- package/lib/components/look-plano-collection-form/look-plano-collection-form.component.d.ts +237 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/multiselect-chip-dropdown/multiselect-chip-dropdown.component.d.ts +12 -1
- package/lib/components/reactive-select/reactive-select.component.d.ts +12 -1
- package/lib/components/searchable-select/searchable-select.component.d.ts +56 -0
- package/lib/interfaces/fixture-library.interface.d.ts +1 -0
- package/lib/services/store-builder.service.d.ts +7 -1
- package/lib/tango-store-builder.module.d.ts +39 -34
- package/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
3
|
+
import { FormsModule, NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
/**
|
|
8
|
+
* Free-text chips/tag input. The user types a value and presses Enter to turn
|
|
9
|
+
* it into a chip; chips are removed with their × button (or Backspace on an
|
|
10
|
+
* empty input). Binds to a reactive form control as a `string[]`.
|
|
11
|
+
*
|
|
12
|
+
* Unlike multiselect-chip-dropdown / searchable-select (which pick from a
|
|
13
|
+
* predefined list), this accepts arbitrary text — there is no options list.
|
|
14
|
+
*/
|
|
15
|
+
export class ChipsInputComponent {
|
|
16
|
+
placeholder = 'Type and press Enter';
|
|
17
|
+
/** Allow the same value to appear more than once. Off by default. */
|
|
18
|
+
allowDuplicates = false;
|
|
19
|
+
chips = [];
|
|
20
|
+
inputValue = '';
|
|
21
|
+
isDisabled = false;
|
|
22
|
+
onChange = () => { };
|
|
23
|
+
onTouched = () => { };
|
|
24
|
+
writeValue(value) {
|
|
25
|
+
this.chips = Array.isArray(value) ? [...value] : [];
|
|
26
|
+
}
|
|
27
|
+
registerOnChange(fn) {
|
|
28
|
+
this.onChange = fn;
|
|
29
|
+
}
|
|
30
|
+
registerOnTouched(fn) {
|
|
31
|
+
this.onTouched = fn;
|
|
32
|
+
}
|
|
33
|
+
setDisabledState(isDisabled) {
|
|
34
|
+
this.isDisabled = isDisabled;
|
|
35
|
+
}
|
|
36
|
+
/** Enter → commit the typed text as a new chip. */
|
|
37
|
+
onEnter(event) {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
this.addChip();
|
|
40
|
+
}
|
|
41
|
+
/** Commit any pending text when focus leaves, and mark the control touched. */
|
|
42
|
+
onBlur() {
|
|
43
|
+
this.addChip();
|
|
44
|
+
this.onTouched();
|
|
45
|
+
}
|
|
46
|
+
/** Backspace on an empty input removes the last chip (standard tag-input UX). */
|
|
47
|
+
onBackspace() {
|
|
48
|
+
if (this.isDisabled || this.inputValue || !this.chips.length)
|
|
49
|
+
return;
|
|
50
|
+
this.chips = this.chips.slice(0, -1);
|
|
51
|
+
this.emit();
|
|
52
|
+
}
|
|
53
|
+
addChip() {
|
|
54
|
+
if (this.isDisabled)
|
|
55
|
+
return;
|
|
56
|
+
const value = this.inputValue.trim();
|
|
57
|
+
if (!value)
|
|
58
|
+
return;
|
|
59
|
+
const dup = this.chips.some((c) => c.toLowerCase() === value.toLowerCase());
|
|
60
|
+
if (!this.allowDuplicates && dup) {
|
|
61
|
+
this.inputValue = '';
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.chips = [...this.chips, value];
|
|
65
|
+
this.inputValue = '';
|
|
66
|
+
this.emit();
|
|
67
|
+
}
|
|
68
|
+
removeChip(index) {
|
|
69
|
+
if (this.isDisabled)
|
|
70
|
+
return;
|
|
71
|
+
this.chips = this.chips.filter((_, i) => i !== index);
|
|
72
|
+
this.emit();
|
|
73
|
+
}
|
|
74
|
+
emit() {
|
|
75
|
+
this.onChange(this.chips);
|
|
76
|
+
this.onTouched();
|
|
77
|
+
}
|
|
78
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChipsInputComponent, isStandalone: true, selector: "lib-chips-input", inputs: { placeholder: "placeholder", allowDuplicates: "allowDuplicates" }, providers: [
|
|
80
|
+
{
|
|
81
|
+
provide: NG_VALUE_ACCESSOR,
|
|
82
|
+
useExisting: forwardRef(() => ChipsInputComponent),
|
|
83
|
+
multi: true,
|
|
84
|
+
},
|
|
85
|
+
], ngImport: i0, template: "<div class=\"chips-input\" [class.disabled]=\"isDisabled\" (click)=\"textInput.focus()\">\r\n <span class=\"chip\" *ngFor=\"let chip of chips; let i = index\">\r\n <span class=\"chip-label\">{{ chip }}</span>\r\n <button\r\n type=\"button\"\r\n class=\"chip-x\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"$event.stopPropagation(); removeChip(i)\"\r\n >×</button>\r\n </span>\r\n <input\r\n #textInput\r\n type=\"text\"\r\n class=\"chip-text\"\r\n [(ngModel)]=\"inputValue\"\r\n [placeholder]=\"chips.length ? '' : placeholder\"\r\n [disabled]=\"isDisabled\"\r\n (keydown.enter)=\"onEnter($event)\"\r\n (keydown.backspace)=\"onBackspace()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n</div>\r\n", styles: [":host{display:block}.chips-input{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:31px;padding:4px 10px;border:1px solid var(--Gray-300, #d0d5dd);border-radius:.475rem;background:#fff;cursor:text}.chips-input.disabled{background:#f1f5f9;cursor:not-allowed}.chips-input .chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px 1px 8px;border-radius:12px;background:var(--Gray-100, #f2f4f7);font-size:12px;line-height:18px;max-width:100%}.chips-input .chip .chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.chips-input .chip .chip-x{background:none;border:0;color:#7a7a7a;padding:0 2px;font-size:13px;line-height:1;cursor:pointer}.chips-input .chip .chip-x:hover{color:#475569}.chips-input .chip-text{flex:1 1 80px;min-width:80px;width:auto;height:auto;min-height:21px;margin:0!important;padding:0!important;border:0!important;outline:0!important;box-shadow:none!important;border-radius:0!important;appearance:none;-webkit-appearance:none;font-size:13px;line-height:21px;background:transparent!important;color:#1e293b}.chips-input .chip-text:focus,.chips-input .chip-text:focus-visible{border:0!important;outline:0!important;box-shadow:none!important}.chips-input .chip-text::placeholder{color:var(--Gray-500, #667085)}.chips-input .chip-text:disabled{background:transparent!important;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ selector: 'lib-chips-input', standalone: true, imports: [CommonModule, FormsModule], providers: [
|
|
90
|
+
{
|
|
91
|
+
provide: NG_VALUE_ACCESSOR,
|
|
92
|
+
useExisting: forwardRef(() => ChipsInputComponent),
|
|
93
|
+
multi: true,
|
|
94
|
+
},
|
|
95
|
+
], template: "<div class=\"chips-input\" [class.disabled]=\"isDisabled\" (click)=\"textInput.focus()\">\r\n <span class=\"chip\" *ngFor=\"let chip of chips; let i = index\">\r\n <span class=\"chip-label\">{{ chip }}</span>\r\n <button\r\n type=\"button\"\r\n class=\"chip-x\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"$event.stopPropagation(); removeChip(i)\"\r\n >×</button>\r\n </span>\r\n <input\r\n #textInput\r\n type=\"text\"\r\n class=\"chip-text\"\r\n [(ngModel)]=\"inputValue\"\r\n [placeholder]=\"chips.length ? '' : placeholder\"\r\n [disabled]=\"isDisabled\"\r\n (keydown.enter)=\"onEnter($event)\"\r\n (keydown.backspace)=\"onBackspace()\"\r\n (blur)=\"onBlur()\"\r\n />\r\n</div>\r\n", styles: [":host{display:block}.chips-input{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:31px;padding:4px 10px;border:1px solid var(--Gray-300, #d0d5dd);border-radius:.475rem;background:#fff;cursor:text}.chips-input.disabled{background:#f1f5f9;cursor:not-allowed}.chips-input .chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px 1px 8px;border-radius:12px;background:var(--Gray-100, #f2f4f7);font-size:12px;line-height:18px;max-width:100%}.chips-input .chip .chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.chips-input .chip .chip-x{background:none;border:0;color:#7a7a7a;padding:0 2px;font-size:13px;line-height:1;cursor:pointer}.chips-input .chip .chip-x:hover{color:#475569}.chips-input .chip-text{flex:1 1 80px;min-width:80px;width:auto;height:auto;min-height:21px;margin:0!important;padding:0!important;border:0!important;outline:0!important;box-shadow:none!important;border-radius:0!important;appearance:none;-webkit-appearance:none;font-size:13px;line-height:21px;background:transparent!important;color:#1e293b}.chips-input .chip-text:focus,.chips-input .chip-text:focus-visible{border:0!important;outline:0!important;box-shadow:none!important}.chips-input .chip-text::placeholder{color:var(--Gray-500, #667085)}.chips-input .chip-text:disabled{background:transparent!important;cursor:not-allowed}\n"] }]
|
|
96
|
+
}], propDecorators: { placeholder: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], allowDuplicates: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}] } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY2hpcHMtaW5wdXQvY2hpcHMtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvY2hpcHMtaW5wdXQvY2hpcHMtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBRUwsV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXhCOzs7Ozs7O0dBT0c7QUFlSCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztJQUM5QyxxRUFBcUU7SUFDNUQsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUVqQyxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBQ3JCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDaEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVYLFFBQVEsR0FBOEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFekMsVUFBVSxDQUFDLEtBQWU7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsZ0JBQWdCLENB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QW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUdRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3Jtc01vZHVsZSxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKipcclxuICogRnJlZS10ZXh0IGNoaXBzL3RhZyBpbnB1dC4gVGhlIHVzZXIgdHlwZXMgYSB2YWx1ZSBhbmQgcHJlc3NlcyBFbnRlciB0byB0dXJuXHJcbiAqIGl0IGludG8gYSBjaGlwOyBjaGlwcyBhcmUgcmVtb3ZlZCB3aXRoIHRoZWlyIMOXIGJ1dHRvbiAob3IgQmFja3NwYWNlIG9uIGFuXHJcbiAqIGVtcHR5IGlucHV0KS4gQmluZHMgdG8gYSByZWFjdGl2ZSBmb3JtIGNvbnRyb2wgYXMgYSBgc3RyaW5nW11gLlxyXG4gKlxyXG4gKiBVbmxpa2UgbXVsdGlzZWxlY3QtY2hpcC1kcm9wZG93biAvIHNlYXJjaGFibGUtc2VsZWN0ICh3aGljaCBwaWNrIGZyb20gYVxyXG4gKiBwcmVkZWZpbmVkIGxpc3QpLCB0aGlzIGFjY2VwdHMgYXJiaXRyYXJ5IHRleHQg4oCUIHRoZXJlIGlzIG5vIG9wdGlvbnMgbGlzdC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoaXBzLWlucHV0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jaGlwcy1pbnB1dC5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGlwc0lucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGlwc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1R5cGUgYW5kIHByZXNzIEVudGVyJztcclxuICAvKiogQWxsb3cgdGhlIHNhbWUgdmFsdWUgdG8gYXBwZWFyIG1vcmUgdGhhbiBvbmNlLiBPZmYgYnkgZGVmYXVsdC4gKi9cclxuICBASW5wdXQoKSBhbGxvd0R1cGxpY2F0ZXMgPSBmYWxzZTtcclxuXHJcbiAgY2hpcHM6IHN0cmluZ1tdID0gW107XHJcbiAgaW5wdXRWYWx1ZSA9ICcnO1xyXG4gIGlzRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmdbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoaXBzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbLi4udmFsdWVdIDogW107XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nW10pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKiBFbnRlciDihpIgY29tbWl0IHRoZSB0eXBlZCB0ZXh0IGFzIGEgbmV3IGNoaXAuICovXHJcbiAgb25FbnRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmFkZENoaXAoKTtcclxuICB9XHJcblxyXG4gIC8qKiBDb21taXQgYW55IHBlbmRpbmcgdGV4dCB3aGVuIGZvY3VzIGxlYXZlcywgYW5kIG1hcmsgdGhlIGNvbnRyb2wgdG91Y2hlZC4gKi9cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZENoaXAoKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvKiogQmFja3NwYWNlIG9uIGFuIGVtcHR5IGlucHV0IHJlbW92ZXMgdGhlIGxhc3QgY2hpcCAoc3RhbmRhcmQgdGFnLWlucHV0IFVYKS4gKi9cclxuICBvbkJhY2tzcGFjZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQgfHwgdGhpcy5pbnB1dFZhbHVlIHx8ICF0aGlzLmNoaXBzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgdGhpcy5jaGlwcyA9IHRoaXMuY2hpcHMuc2xpY2UoMCwgLTEpO1xyXG4gICAgdGhpcy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRDaGlwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsdWUudHJpbSgpO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgZHVwID0gdGhpcy5jaGlwcy5zb21lKChjKSA9PiBjLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgaWYgKCF0aGlzLmFsbG93RHVwbGljYXRlcyAmJiBkdXApIHtcclxuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2hpcHMgPSBbLi4udGhpcy5jaGlwcywgdmFsdWVdO1xyXG4gICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5jaGlwcyA9IHRoaXMuY2hpcHMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XHJcbiAgICB0aGlzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5jaGlwcyk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2hpcHMtaW5wdXRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIChjbGljayk9XCJ0ZXh0SW5wdXQuZm9jdXMoKVwiPlxyXG4gIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBjaGlwIG9mIGNoaXBzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNoaXAtbGFiZWxcIj57eyBjaGlwIH19PC9zcGFuPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJjaGlwLXhcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUNoaXAoaSlcIlxyXG4gICAgPiZ0aW1lczs8L2J1dHRvbj5cclxuICA8L3NwYW4+XHJcbiAgPGlucHV0XHJcbiAgICAjdGV4dElucHV0XHJcbiAgICB0eXBlPVwidGV4dFwiXHJcbiAgICBjbGFzcz1cImNoaXAtdGV4dFwiXHJcbiAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cImNoaXBzLmxlbmd0aCA/ICcnIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlcigkZXZlbnQpXCJcclxuICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJvbkJhY2tzcGFjZSgpXCJcclxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAvPlxyXG48L2Rpdj5cclxuIl19
|