@spartan-ng/brain 0.0.1-alpha.412 → 0.0.1-alpha.413

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.
@@ -1,6 +1,6 @@
1
- import { CdkOption } from '@angular/cdk/listbox';
1
+ import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
2
  import { CdkConnectedOverlay, type ConnectedOverlayPositionChange, type ConnectedPosition } from '@angular/cdk/overlay';
3
- import { AfterContentInit, type DoCheck, type Signal } from '@angular/core';
3
+ import { type DoCheck, type Signal } from '@angular/core';
4
4
  import { type ControlValueAccessor, NgControl } from '@angular/forms';
5
5
  import { type ExposesSide, type ExposesState } from '@spartan-ng/brain/core';
6
6
  import { BrnFormFieldControl } from '@spartan-ng/brain/form-field';
@@ -8,72 +8,61 @@ import { ChangeFn, ErrorStateTracker, TouchFn } from '@spartan-ng/brain/forms';
8
8
  import { BrnLabelDirective } from '@spartan-ng/brain/label';
9
9
  import { Subject } from 'rxjs';
10
10
  import { BrnSelectContentComponent } from './brn-select-content.component';
11
+ import { BrnSelectOptionDirective } from './brn-select-option.directive';
12
+ import { BrnSelectTriggerDirective } from './brn-select-trigger.directive';
11
13
  import * as i0 from "@angular/core";
12
14
  export type BrnReadDirection = 'ltr' | 'rtl';
13
- export declare class BrnSelectComponent<T = unknown> implements ControlValueAccessor, AfterContentInit, DoCheck, ExposesSide, ExposesState, BrnFormFieldControl {
14
- private readonly _selectService;
15
- readonly triggerWidth: Signal<number>;
16
- readonly multiple: import("@angular/core").InputSignal<boolean>;
15
+ export declare class BrnSelectComponent<T = unknown> implements ControlValueAccessor, DoCheck, ExposesSide, ExposesState, BrnFormFieldControl {
16
+ private readonly _defaultErrorStateMatcher;
17
+ private readonly _parentForm;
18
+ private readonly _injector;
19
+ private readonly _parentFormGroup;
20
+ readonly ngControl: NgControl | null;
21
+ readonly id: import("@angular/core").InputSignal<string>;
22
+ readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
17
23
  readonly placeholder: import("@angular/core").InputSignal<string>;
18
- readonly disabled: import("@angular/core").InputSignal<boolean>;
24
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
19
25
  readonly dir: import("@angular/core").InputSignal<BrnReadDirection>;
20
- private readonly _disabledFromSetDisabledState;
21
- protected selectLabel: Signal<BrnLabelDirective | undefined>;
26
+ readonly closeDelay: import("@angular/core").InputSignalWithTransform<number, NumberInput>;
27
+ readonly open: import("@angular/core").ModelSignal<boolean>;
28
+ readonly value: import("@angular/core").ModelSignal<T | T[] | undefined>;
29
+ readonly compareWith: import("@angular/core").InputSignal<(o1: T, o2: T) => boolean>;
30
+ readonly _formDisabled: import("@angular/core").WritableSignal<boolean>;
31
+ /** Label provided by the consumer. */
32
+ protected readonly selectLabel: Signal<BrnLabelDirective | undefined>;
22
33
  /** Overlay pane containing the options. */
23
- protected selectContent: Signal<BrnSelectContentComponent>;
24
- protected options: Signal<readonly CdkOption<any>[]>;
25
- protected options$: import("rxjs").Observable<readonly CdkOption<any>[]>;
26
- protected optionsAndIndex$: import("rxjs").Observable<readonly [readonly CdkOption<any>[], number]>;
34
+ protected readonly selectContent: Signal<BrnSelectContentComponent<any>>;
35
+ /** @internal */
36
+ readonly options: Signal<readonly BrnSelectOptionDirective<any>[]>;
37
+ /** @internal Derive the selected options to filter out the unselected options */
38
+ readonly selectedOptions: Signal<BrnSelectOptionDirective<any>[]>;
27
39
  /** Overlay pane containing the options. */
28
- protected _overlayDir: Signal<CdkConnectedOverlay | undefined>;
29
- readonly closeDelay: import("@angular/core").InputSignal<number>;
30
- readonly isExpanded: Signal<boolean>;
40
+ protected readonly _overlayDir: Signal<CdkConnectedOverlay>;
41
+ readonly trigger: import("@angular/core").WritableSignal<BrnSelectTriggerDirective<T> | null>;
42
+ readonly triggerWidth: import("@angular/core").WritableSignal<number>;
31
43
  protected readonly _delayedExpanded: Signal<boolean>;
32
44
  readonly state: Signal<"open" | "closed">;
33
- readonly openedChange: import("@angular/core").OutputEmitterRef<boolean>;
34
- readonly valueChange: import("@angular/core").OutputEmitterRef<T>;
35
45
  protected readonly _positionChanges$: Subject<ConnectedOverlayPositionChange>;
36
46
  readonly side: Signal<'top' | 'bottom' | 'left' | 'right'>;
37
- readonly backupLabelId: Signal<string>;
38
- readonly labelProvided: import("@angular/core").WritableSignal<boolean>;
39
- readonly ngControl: NgControl | null;
47
+ readonly labelId: Signal<string | import("@angular/core").InputSignal<string>>;
40
48
  private _onChange;
41
49
  private _onTouched;
42
- private readonly _shouldEmitValueChange;
43
50
  protected _positions: ConnectedPosition[];
44
51
  errorStateTracker: ErrorStateTracker;
45
- private readonly _defaultErrorStateMatcher;
46
- private readonly _parentForm;
47
- private readonly _parentFormGroup;
48
- errorState: Signal<boolean>;
49
- writeValue$: Subject<T>;
52
+ readonly errorState: Signal<boolean>;
50
53
  constructor();
51
- ngAfterContentInit(): void;
52
54
  ngDoCheck(): void;
53
55
  toggle(): void;
54
- open(): void;
55
- close(): void;
56
- protected _canOpen(): boolean;
57
- private _moveFocusToCDKList;
56
+ show(): void;
57
+ hide(): void;
58
58
  writeValue(value: T): void;
59
- registerOnChange(fn: ChangeFn<T>): void;
59
+ registerOnChange(fn: ChangeFn<T | T[]>): void;
60
60
  registerOnTouched(fn: TouchFn): void;
61
61
  setDisabledState(isDisabled: boolean): void;
62
- /**
63
- * Once writeValue is called and options are available we can handle setting the initial options
64
- * @private
65
- */
66
- private handleInitialOptionSelect;
67
- /**
68
- * When options change, our current selected options may become invalid
69
- * Here we will automatically update our current selected options so that they are always inline with the possibleOptions
70
- * @private
71
- */
72
- private handleOptionChanges;
73
- /**
74
- * Check that our "selectedOptions" are still valid when "possibleOptions" is about to be updated
75
- */
76
- private handleInvalidOptions;
62
+ selectOption(value: T): void;
63
+ deselectOption(value: T): void;
64
+ toggleSelect(value: T): void;
65
+ isSelected(value: T): boolean;
77
66
  static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectComponent<any>, never>;
78
- static ɵcmp: i0.ɵɵComponentDeclaration<BrnSelectComponent<any>, "brn-select, hlm-select", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "openedChange": "openedChange"; "valueChange": "valueChange"; }, ["selectLabel", "selectContent", "options"], ["label[hlmLabel],label[brnLabel]", "hlm-select-trigger,[brnSelectTrigger]", "*"], true, never>;
67
+ static ɵcmp: i0.ɵɵComponentDeclaration<BrnSelectComponent<any>, "brn-select, hlm-select", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "value": "valueChange"; }, ["selectLabel", "selectContent", "options"], ["label[hlmLabel],label[brnLabel]", "hlm-select-trigger,[brnSelectTrigger]", "*"], true, never>;
79
68
  }
@@ -0,0 +1,4 @@
1
+ import { ExistingProvider, Type } from '@angular/core';
2
+ import type { BrnSelectComponent } from './brn-select.component';
3
+ export declare function injectBrnSelect<T>(): BrnSelectComponent<T>;
4
+ export declare function provideBrnSelect(select: Type<BrnSelectComponent>): ExistingProvider;
@@ -1,207 +0,0 @@
1
- import { isPlatformBrowser } from '@angular/common';
2
- import { Directive, ElementRef, Injectable, PLATFORM_ID, computed, inject, signal, } from '@angular/core';
3
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
4
- import { NgControl } from '@angular/forms';
5
- import { Subject } from 'rxjs';
6
- import { skip } from 'rxjs/operators';
7
- import * as i0 from "@angular/core";
8
- export class BrnSelectTriggerDirective {
9
- _el = inject(ElementRef);
10
- _selectService = inject(BrnSelectService);
11
- _ngControl = inject(NgControl, { optional: true });
12
- _platform = inject(PLATFORM_ID);
13
- isExpanded = this._selectService.isExpanded;
14
- selectTriggerId = computed(() => `${this._selectService.id()}--trigger`);
15
- selectContentId = computed(() => `${this._selectService.id()}--content`);
16
- selectDisable = computed(() => this._selectService.disabled());
17
- selectTriggerLabelledBy = computed(() => {
18
- if (this._selectService.value() && this._selectService.value().length > 0) {
19
- return `${this._selectService.labelId()} ${this._selectService.id()}--value`;
20
- }
21
- return this._selectService.labelId();
22
- });
23
- _resizeObserver;
24
- constructor() {
25
- if (!this._selectService)
26
- return;
27
- this._selectService._setSelectTrigger(this);
28
- }
29
- ngAfterViewInit() {
30
- this._selectService.setTriggerWidth(this._el.nativeElement.offsetWidth);
31
- // if we are on the client, listen for element resize events
32
- if (isPlatformBrowser(this._platform)) {
33
- this._resizeObserver = new ResizeObserver(() => this._selectService.setTriggerWidth(this._el.nativeElement.offsetWidth));
34
- this._resizeObserver.observe(this._el.nativeElement);
35
- }
36
- }
37
- ngOnDestroy() {
38
- this._resizeObserver?.disconnect();
39
- }
40
- focus() {
41
- this._el.nativeElement.focus();
42
- }
43
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: BrnSelectTriggerDirective, isStandalone: true, selector: "[brnSelectTrigger]", host: { attributes: { "role": "combobox", "aria-autocomplete": "none", "type": "button" }, properties: { "attr.id": "selectTriggerId()", "disabled": "selectDisable()", "attr.aria-expanded": "isExpanded()", "attr.aria-controls": "selectContentId() + ''", "attr.aria-labelledBy": "selectTriggerLabelledBy()", "attr.dir": "_selectService.dir()", "class.ng-invalid": "this._ngControl?.invalid || null", "class.ng-dirty": "this._ngControl?.dirty || null", "class.ng-valid": "this._ngControl?.valid || null", "class.ng-touched": "this._ngControl?.touched || null", "class.ng-untouched": "this._ngControl?.untouched || null", "class.ng-pristine": "this._ngControl?.pristine || null" } }, ngImport: i0 });
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectTriggerDirective, decorators: [{
47
- type: Directive,
48
- args: [{
49
- selector: '[brnSelectTrigger]',
50
- standalone: true,
51
- host: {
52
- role: 'combobox',
53
- '[attr.id]': 'selectTriggerId()',
54
- '[disabled]': 'selectDisable()',
55
- '[attr.aria-expanded]': 'isExpanded()',
56
- '[attr.aria-controls]': "selectContentId() + ''",
57
- '[attr.aria-labelledBy]': 'selectTriggerLabelledBy()',
58
- 'aria-autocomplete': 'none',
59
- '[attr.dir]': '_selectService.dir()',
60
- '[class.ng-invalid]': 'this._ngControl?.invalid || null',
61
- '[class.ng-dirty]': 'this._ngControl?.dirty || null',
62
- '[class.ng-valid]': 'this._ngControl?.valid || null',
63
- '[class.ng-touched]': 'this._ngControl?.touched || null',
64
- '[class.ng-untouched]': 'this._ngControl?.untouched || null',
65
- '[class.ng-pristine]': 'this._ngControl?.pristine || null',
66
- type: 'button',
67
- },
68
- }]
69
- }], ctorParameters: () => [] });
70
- export class BrnSelectService {
71
- state = signal({
72
- id: '',
73
- labelId: '',
74
- panelId: '',
75
- isExpanded: false,
76
- placeholder: signal(''),
77
- multiple: signal(false),
78
- disabled: signal(false),
79
- disabledBySetDisabled: signal(false),
80
- dir: signal('ltr'),
81
- selectedOptions: [],
82
- possibleOptions: [],
83
- value: '',
84
- triggerWidth: 0,
85
- });
86
- id = computed(() => this.state().id);
87
- labelId = computed(() => this.state().labelId);
88
- panelId = computed(() => this.state().panelId);
89
- placeholder = computed(() => this.state().placeholder());
90
- disabled = computed(() => this.state().disabled() || this.state().disabledBySetDisabled());
91
- isExpanded = computed(() => this.state().isExpanded);
92
- multiple = computed(() => this.state().multiple());
93
- dir = computed(() => this.state().dir());
94
- selectedOptions = computed(() => this.state().selectedOptions);
95
- value = computed(() => this.state().value);
96
- triggerWidth = computed(() => this.state().triggerWidth);
97
- possibleOptions = computed(() => this.state().possibleOptions);
98
- _multiple$ = toObservable(this.multiple);
99
- listBoxValueChangeEvent$ = new Subject();
100
- _selectTrigger;
101
- get selectTrigger() {
102
- return this._selectTrigger;
103
- }
104
- constructor() {
105
- this.listBoxValueChangeEvent$.pipe(takeUntilDestroyed()).subscribe((listBoxChange) => {
106
- const updatedSelections = this.multiple() ? this.getUpdatedOptions(listBoxChange) : [listBoxChange.option];
107
- const value = this.multiple() ? listBoxChange.value : listBoxChange.value[0];
108
- this.state.update((state) => ({
109
- ...state,
110
- selectedOptions: [...updatedSelections],
111
- value: value,
112
- }));
113
- });
114
- // We need to skip the first value because we don't want to deselect all options when the component is initialized with a preselected value e.g. by the form control
115
- this._multiple$.pipe(skip(1), takeUntilDestroyed()).subscribe((multiple) => {
116
- if (!multiple && this.value().length > 1) {
117
- this.deselectAllOptions();
118
- }
119
- });
120
- }
121
- setTriggerWidth(triggerWidth) {
122
- this.state.update((s) => ({ ...s, triggerWidth }));
123
- }
124
- getUpdatedOptions(latestListboxChange) {
125
- const isNewSelection = latestListboxChange.value.findIndex((value) => value === latestListboxChange.option?.value);
126
- if (isNewSelection === -1) {
127
- const removedOptionIndex = this.selectedOptions().findIndex((option) => latestListboxChange.option === option);
128
- const options = this.selectedOptions();
129
- options.splice(removedOptionIndex, 1);
130
- return options;
131
- }
132
- return [...this.selectedOptions(), latestListboxChange.option];
133
- }
134
- deselectAllOptions() {
135
- this.state.update((state) => ({
136
- ...state,
137
- selectedOptions: [],
138
- value: [],
139
- }));
140
- }
141
- // Needed due to https://github.com/angular/angular/issues/20810
142
- _setSelectTrigger(trigger) {
143
- this._selectTrigger = trigger;
144
- }
145
- setInitialSelectedOptions(value) {
146
- this.selectOptionByValue(value);
147
- this.state.update((state) => ({
148
- ...state,
149
- value: value,
150
- initialSelectedOptions: this.selectedOptions(),
151
- selectedOptions: this.selectedOptions(),
152
- }));
153
- }
154
- /**
155
- * Sync the updated options with "possibleOptions" in the select service
156
- */
157
- updatePossibleOptions(options) {
158
- this.state.update((state) => ({
159
- ...state,
160
- possibleOptions: options,
161
- }));
162
- }
163
- selectOptionByValue(value) {
164
- const options = this.possibleOptions();
165
- if (value === null || value === undefined) {
166
- const nullOrUndefinedOption = options.find((o) => o && o.value === value);
167
- if (!nullOrUndefinedOption) {
168
- this.state.update((state) => ({
169
- ...state,
170
- selectedOptions: [],
171
- value: this.multiple() ? [] : '',
172
- }));
173
- return;
174
- }
175
- }
176
- if (this.multiple()) {
177
- const selectedOptions = options.filter((option) => {
178
- if (Array.isArray(value)) {
179
- return value.includes(option?.value);
180
- }
181
- return value === option?.value;
182
- });
183
- this.state.update((state) => ({
184
- ...state,
185
- selectedOptions,
186
- value: value,
187
- }));
188
- }
189
- else {
190
- const selectedOption = options.find((option) => option?.value === value);
191
- if (!selectedOption) {
192
- return;
193
- }
194
- this.state.update((state) => ({
195
- ...state,
196
- selectedOptions: [selectedOption],
197
- value: selectedOption.value,
198
- }));
199
- }
200
- }
201
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
202
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectService });
203
- }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectService, decorators: [{
205
- type: Injectable
206
- }], ctorParameters: () => [] });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9zZWxlY3Qvc3JjL2xpYi9icm4tc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUVWLFdBQVcsRUFFWCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXVCdEMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQixHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZCLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQzVDLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxD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QUM7WUFDUCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckIsT0FBTztZQUNSLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsR0FBRyxLQUFLO2dCQUNSLGVBQWUsRUFBRSxDQUFDLGNBQWtDLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxjQUFjLENBQUMsS0FBZTthQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDRixDQUFDOzBIQTdKVyxnQkFBZ0I7OEhBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2RrT3B0aW9uLCBMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9saXN0Ym94JztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdHR5cGUgQWZ0ZXJWaWV3SW5pdCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3RhYmxlLFxuXHRPbkRlc3Ryb3ksXG5cdFBMQVRGT1JNX0lELFxuXHRTaWduYWwsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5TZWxlY3RUcmlnZ2VyXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGhvc3Q6IHtcblx0XHRyb2xlOiAnY29tYm9ib3gnLFxuXHRcdCdbYXR0ci5pZF0nOiAnc2VsZWN0VHJpZ2dlcklkKCknLFxuXHRcdCdbZGlzYWJsZWRdJzogJ3NlbGVjdERpc2FibGUoKScsXG5cdFx0J1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzRXhwYW5kZWQoKScsXG5cdFx0J1thdHRyLmFyaWEtY29udHJvbHNdJzogXCJzZWxlY3RDb250ZW50SWQoKSArICcnXCIsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRCeV0nOiAnc2VsZWN0VHJpZ2dlckxhYmVsbGVkQnkoKScsXG5cdFx0J2FyaWEtYXV0b2NvbXBsZXRlJzogJ25vbmUnLFxuXHRcdCdbYXR0ci5kaXJdJzogJ19zZWxlY3RTZXJ2aWNlLmRpcigpJyxcblx0XHQnW2NsYXNzLm5nLWludmFsaWRdJzogJ3RoaXMuX25nQ29udHJvbD8uaW52YWxpZCB8fCBudWxsJyxcblx0XHQnW2NsYXNzLm5nLWRpcnR5XSc6ICd0aGlzLl9uZ0NvbnRyb2w/LmRpcnR5IHx8IG51bGwnLFxuXHRcdCdbY2xhc3MubmctdmFsaWRdJzogJ3RoaXMuX25nQ29udHJvbD8udmFsaWQgfHwgbnVsbCcsXG5cdFx0J1tjbGFzcy5uZy10b3VjaGVkXSc6ICd0aGlzLl9uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgbnVsbCcsXG5cdFx0J1tjbGFzcy5uZy11bnRvdWNoZWRdJzogJ3RoaXMuX25nQ29udHJvbD8udW50b3VjaGVkIHx8IG51bGwnLFxuXHRcdCdbY2xhc3MubmctcHJpc3RpbmVdJzogJ3RoaXMuX25nQ29udHJvbD8ucHJpc3RpbmUgfHwgbnVsbCcsXG5cdFx0dHlwZTogJ2J1dHRvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJyblNlbGVjdFRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9zZWxlY3RTZXJ2aWNlID0gaW5qZWN0KEJyblNlbGVjdFNlcnZpY2UpO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX25nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblx0cHVibGljIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSB0aGlzLl9zZWxlY3RTZXJ2aWNlLmlzRXhwYW5kZWQ7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RUcmlnZ2VySWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS10cmlnZ2VyYCk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RDb250ZW50SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS1jb250ZW50YCk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3REaXNhYmxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc2VsZWN0U2VydmljZS5kaXNhYmxlZCgpKTtcblx0cHVibGljIHJlYWRvbmx5IHNlbGVjdFRyaWdnZXJMYWJlbGxlZEJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGlmICh0aGlzLl9zZWxlY3RTZXJ2aWNlLnZhbHVlKCkgJiYgdGhpcy5fc2VsZWN0U2VydmljZS52YWx1ZSgpLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmxhYmVsSWQoKX0gJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS12YWx1ZWA7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9zZWxlY3RTZXJ2aWNlLmxhYmVsSWQoKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAoIXRoaXMuX3NlbGVjdFNlcnZpY2UpIHJldHVybjtcblx0XHR0aGlzLl9zZWxlY3RTZXJ2aWNlLl9zZXRTZWxlY3RUcmlnZ2VyKHRoaXMpO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuX3NlbGVjdFNlcnZpY2Uuc2V0VHJpZ2dlcldpZHRoKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuXG5cdFx0Ly8gaWYgd2UgYXJlIG9uIHRoZSBjbGllbnQsIGxpc3RlbiBmb3IgZWxlbWVudCByZXNpemUgZXZlbnRzXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuX3BsYXRmb3JtKSkge1xuXHRcdFx0dGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT5cblx0XHRcdFx0dGhpcy5fc2VsZWN0U2VydmljZS5zZXRUcmlnZ2VyV2lkdGgodGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCksXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMoKSB7XG5cdFx0dGhpcy5fZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHR9XG59XG5cbnR5cGUgQnJuUmVhZERpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCcm5TZWxlY3RTZXJ2aWNlIHtcblx0cHVibGljIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsPHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdGxhYmVsSWQ6IHN0cmluZztcblx0XHRwYW5lbElkOiBzdHJpbmc7XG5cdFx0cGxhY2Vob2xkZXI6IFNpZ25hbDxzdHJpbmc+O1xuXHRcdGlzRXhwYW5kZWQ6IGJvb2xlYW47XG5cdFx0bXVsdGlwbGU6IFNpZ25hbDxib29sZWFuPjtcblx0XHRkaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGRpc2FibGVkQnlTZXREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGRpcjogU2lnbmFsPEJyblJlYWREaXJlY3Rpb24+O1xuXHRcdHNlbGVjdGVkT3B0aW9uczogQXJyYXk8Q2RrT3B0aW9uIHwgbnVsbD47XG5cdFx0cG9zc2libGVPcHRpb25zOiBBcnJheTxDZGtPcHRpb24gfCBudWxsPjtcblx0XHR2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cdFx0dHJpZ2dlcldpZHRoOiBudW1iZXI7XG5cdH0+KHtcblx0XHRpZDogJycsXG5cdFx0bGFiZWxJZDogJycsXG5cdFx0cGFuZWxJZDogJycsXG5cdFx0aXNFeHBhbmRlZDogZmFsc2UsXG5cdFx0cGxhY2Vob2xkZXI6IHNpZ25hbCgnJyksXG5cdFx0bXVsdGlwbGU6IHNpZ25hbChmYWxzZSksXG5cdFx0ZGlzYWJsZWQ6IHNpZ25hbChmYWxzZSksXG5cdFx0ZGlzYWJsZWRCeVNldERpc2FibGVkOiBzaWduYWwoZmFsc2UpLFxuXHRcdGRpcjogc2lnbmFsKCdsdHInIGFzIEJyblJlYWREaXJlY3Rpb24pLFxuXHRcdHNlbGVjdGVkT3B0aW9uczogW10sXG5cdFx0cG9zc2libGVPcHRpb25zOiBbXSxcblx0XHR2YWx1ZTogJycsXG5cdFx0dHJpZ2dlcldpZHRoOiAwLFxuXHR9KTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuaWQpO1xuXHRwdWJsaWMgcmVhZG9ubHkgbGFiZWxJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5sYWJlbElkKTtcblx0cHVibGljIHJlYWRvbmx5IHBhbmVsSWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkucGFuZWxJZCk7XG5cdHB1YmxpYyByZWFkb25seSBwbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5wbGFjZWhvbGRlcigpKTtcblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLmRpc2FibGVkKCkgfHwgdGhpcy5zdGF0ZSgpLmRpc2FibGVkQnlTZXREaXNhYmxlZCgpKTtcblx0cHVibGljIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuaXNFeHBhbmRlZCk7XG5cdHB1YmxpYyByZWFkb25seSBtdWx0aXBsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5tdWx0aXBsZSgpKTtcblx0cHVibGljIHJlYWRvbmx5IGRpciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5kaXIoKSk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRPcHRpb25zKTtcblx0cHVibGljIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnZhbHVlKTtcblx0cHVibGljIHJlYWRvbmx5IHRyaWdnZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS50cmlnZ2VyV2lkdGgpO1xuXHRwdWJsaWMgcmVhZG9ubHkgcG9zc2libGVPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnBvc3NpYmxlT3B0aW9ucyk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfbXVsdGlwbGUkID0gdG9PYnNlcnZhYmxlKHRoaXMubXVsdGlwbGUpO1xuXG5cdHB1YmxpYyByZWFkb25seSBsaXN0Qm94VmFsdWVDaGFuZ2VFdmVudCQgPSBuZXcgU3ViamVjdDxMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudDx1bmtub3duPj4oKTtcblxuXHRwcml2YXRlIF9zZWxlY3RUcmlnZ2VyPzogQnJuU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZTtcblx0cHVibGljIGdldCBzZWxlY3RUcmlnZ2VyKCkge1xuXHRcdHJldHVybiB0aGlzLl9zZWxlY3RUcmlnZ2VyO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5saXN0Qm94VmFsdWVDaGFuZ2VFdmVudCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChsaXN0Qm94Q2hhbmdlKSA9PiB7XG5cdFx0XHRjb25zdCB1cGRhdGVkU2VsZWN0aW9ucyA9IHRoaXMubXVsdGlwbGUoKSA/IHRoaXMuZ2V0VXBkYXRlZE9wdGlvbnMobGlzdEJveENoYW5nZSkgOiBbbGlzdEJveENoYW5nZS5vcHRpb25dO1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLm11bHRpcGxlKCkgPyBsaXN0Qm94Q2hhbmdlLnZhbHVlIDogbGlzdEJveENoYW5nZS52YWx1ZVswXTtcblx0XHRcdHRoaXMuc3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcblx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdHNlbGVjdGVkT3B0aW9uczogWy4uLnVwZGF0ZWRTZWxlY3Rpb25zXSxcblx0XHRcdFx0dmFsdWU6IHZhbHVlIGFzIHN0cmluZyB8IHN0cmluZ1tdLFxuXHRcdFx0fSkpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gV2UgbmVlZCB0byBza2lwIHRoZSBmaXJzdCB2YWx1ZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVzZWxlY3QgYWxsIG9wdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkIHdpdGggYSBwcmVzZWxlY3RlZCB2YWx1ZSBlLmcuIGJ5IHRoZSBmb3JtIGNvbnRyb2xcblx0XHR0aGlzLl9tdWx0aXBsZSQucGlwZShza2lwKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChtdWx0aXBsZSkgPT4ge1xuXHRcdFx0aWYgKCFtdWx0aXBsZSAmJiB0aGlzLnZhbHVlKCkubGVuZ3RoID4gMSkge1xuXHRcdFx0XHR0aGlzLmRlc2VsZWN0QWxsT3B0aW9ucygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNldFRyaWdnZXJXaWR0aCh0cmlnZ2VyV2lkdGg6IG51bWJlcikge1xuXHRcdHRoaXMuc3RhdGUudXBkYXRlKChzKSA9PiAoeyAuLi5zLCB0cmlnZ2VyV2lkdGggfSkpO1xuXHR9XG5cblx0cHVibGljIGdldFVwZGF0ZWRPcHRpb25zKGxhdGVzdExpc3Rib3hDaGFuZ2U6IExpc3Rib3hWYWx1ZUNoYW5nZUV2ZW50PHVua25vd24+KTogQXJyYXk8Q2RrT3B0aW9uIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGlzTmV3U2VsZWN0aW9uID0gbGF0ZXN0TGlzdGJveENoYW5nZS52YWx1ZS5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gbGF0ZXN0TGlzdGJveENoYW5nZS5vcHRpb24/LnZhbHVlKTtcblx0XHRpZiAoaXNOZXdTZWxlY3Rpb24gPT09IC0xKSB7XG5cdFx0XHRjb25zdCByZW1vdmVkT3B0aW9uSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBsYXRlc3RMaXN0Ym94Q2hhbmdlLm9wdGlvbiA9PT0gb3B0aW9uKTtcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucygpO1xuXHRcdFx0b3B0aW9ucy5zcGxpY2UocmVtb3ZlZE9wdGlvbkluZGV4LCAxKTtcblx0XHRcdHJldHVybiBvcHRpb25zO1xuXHRcdH1cblx0XHRyZXR1cm4gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zKCksIGxhdGVzdExpc3Rib3hDaGFuZ2Uub3B0aW9uXTtcblx0fVxuXG5cdHB1YmxpYyBkZXNlbGVjdEFsbE9wdGlvbnMoKSB7XG5cdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRzZWxlY3RlZE9wdGlvbnM6IFtdLFxuXHRcdFx0dmFsdWU6IFtdLFxuXHRcdH0pKTtcblx0fVxuXG5cdC8vIE5lZWRlZCBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjA4MTBcblx0cHVibGljIF9zZXRTZWxlY3RUcmlnZ2VyKHRyaWdnZXI6IEJyblNlbGVjdFRyaWdnZXJEaXJlY3RpdmUpIHtcblx0XHR0aGlzLl9zZWxlY3RUcmlnZ2VyID0gdHJpZ2dlcjtcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsU2VsZWN0ZWRPcHRpb25zKHZhbHVlOiB1bmtub3duKSB7XG5cdFx0dGhpcy5zZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHQuLi5zdGF0ZSxcblx0XHRcdHZhbHVlOiB2YWx1ZSBhcyBzdHJpbmcgfCBzdHJpbmdbXSxcblx0XHRcdGluaXRpYWxTZWxlY3RlZE9wdGlvbnM6IHRoaXMuc2VsZWN0ZWRPcHRpb25zKCksXG5cdFx0XHRzZWxlY3RlZE9wdGlvbnM6IHRoaXMuc2VsZWN0ZWRPcHRpb25zKCksXG5cdFx0fSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN5bmMgdGhlIHVwZGF0ZWQgb3B0aW9ucyB3aXRoIFwicG9zc2libGVPcHRpb25zXCIgaW4gdGhlIHNlbGVjdCBzZXJ2aWNlXG5cdCAqL1xuXHRwdWJsaWMgdXBkYXRlUG9zc2libGVPcHRpb25zKG9wdGlvbnM6IHJlYWRvbmx5IENka09wdGlvbltdKSB7XG5cdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRwb3NzaWJsZU9wdGlvbnM6IG9wdGlvbnMgYXMgQ2RrT3B0aW9uW10sXG5cdFx0fSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMucG9zc2libGVPcHRpb25zKCk7XG5cdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IG51bGxPclVuZGVmaW5lZE9wdGlvbiA9IG9wdGlvbnMuZmluZCgobykgPT4gbyAmJiBvLnZhbHVlID09PSB2YWx1ZSk7XG5cdFx0XHRpZiAoIW51bGxPclVuZGVmaW5lZE9wdGlvbikge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zOiBbXSxcblx0XHRcdFx0XHR2YWx1ZTogdGhpcy5tdWx0aXBsZSgpID8gW10gOiAnJyxcblx0XHRcdFx0fSkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUoKSkge1xuXHRcdFx0Y29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUuaW5jbHVkZXMob3B0aW9uPy52YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gb3B0aW9uPy52YWx1ZTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHQuLi5zdGF0ZSxcblx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zLFxuXHRcdFx0XHR2YWx1ZTogdmFsdWUgYXMgc3RyaW5nW10sXG5cdFx0XHR9KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbj8udmFsdWUgPT09IHZhbHVlKTtcblx0XHRcdGlmICghc2VsZWN0ZWRPcHRpb24pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHQuLi5zdGF0ZSxcblx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zOiBbc2VsZWN0ZWRPcHRpb24gYXMgQ2RrT3B0aW9uIHwgbnVsbF0sXG5cdFx0XHRcdHZhbHVlOiBzZWxlY3RlZE9wdGlvbi52YWx1ZSBhcyBzdHJpbmcsXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
@@ -1,71 +0,0 @@
1
- import type { CdkOption, ListboxValueChangeEvent } from '@angular/cdk/listbox';
2
- import { type AfterViewInit, OnDestroy, Signal } from '@angular/core';
3
- import { NgControl } from '@angular/forms';
4
- import { Subject } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- export declare class BrnSelectTriggerDirective implements AfterViewInit, OnDestroy {
7
- private readonly _el;
8
- protected readonly _selectService: BrnSelectService;
9
- protected readonly _ngControl: NgControl | null;
10
- private readonly _platform;
11
- readonly isExpanded: Signal<boolean>;
12
- readonly selectTriggerId: Signal<string>;
13
- readonly selectContentId: Signal<string>;
14
- readonly selectDisable: Signal<boolean>;
15
- readonly selectTriggerLabelledBy: Signal<string>;
16
- private _resizeObserver?;
17
- constructor();
18
- ngAfterViewInit(): void;
19
- ngOnDestroy(): void;
20
- focus(): void;
21
- static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectTriggerDirective, never>;
22
- static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectTriggerDirective, "[brnSelectTrigger]", never, {}, {}, never, never, true, never>;
23
- }
24
- type BrnReadDirection = 'ltr' | 'rtl';
25
- export declare class BrnSelectService {
26
- readonly state: import("@angular/core").WritableSignal<{
27
- id: string;
28
- labelId: string;
29
- panelId: string;
30
- placeholder: Signal<string>;
31
- isExpanded: boolean;
32
- multiple: Signal<boolean>;
33
- disabled: Signal<boolean>;
34
- disabledBySetDisabled: Signal<boolean>;
35
- dir: Signal<BrnReadDirection>;
36
- selectedOptions: Array<CdkOption | null>;
37
- possibleOptions: Array<CdkOption | null>;
38
- value: string | string[];
39
- triggerWidth: number;
40
- }>;
41
- readonly id: Signal<string>;
42
- readonly labelId: Signal<string>;
43
- readonly panelId: Signal<string>;
44
- readonly placeholder: Signal<string>;
45
- readonly disabled: Signal<boolean>;
46
- readonly isExpanded: Signal<boolean>;
47
- readonly multiple: Signal<boolean>;
48
- readonly dir: Signal<BrnReadDirection>;
49
- readonly selectedOptions: Signal<(CdkOption<unknown> | null)[]>;
50
- readonly value: Signal<string | string[]>;
51
- readonly triggerWidth: Signal<number>;
52
- readonly possibleOptions: Signal<(CdkOption<unknown> | null)[]>;
53
- private readonly _multiple$;
54
- readonly listBoxValueChangeEvent$: Subject<ListboxValueChangeEvent<unknown>>;
55
- private _selectTrigger?;
56
- get selectTrigger(): BrnSelectTriggerDirective | undefined;
57
- constructor();
58
- setTriggerWidth(triggerWidth: number): void;
59
- getUpdatedOptions(latestListboxChange: ListboxValueChangeEvent<unknown>): Array<CdkOption | null>;
60
- deselectAllOptions(): void;
61
- _setSelectTrigger(trigger: BrnSelectTriggerDirective): void;
62
- setInitialSelectedOptions(value: unknown): void;
63
- /**
64
- * Sync the updated options with "possibleOptions" in the select service
65
- */
66
- updatePossibleOptions(options: readonly CdkOption[]): void;
67
- private selectOptionByValue;
68
- static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectService, never>;
69
- static ɵprov: i0.ɵɵInjectableDeclaration<BrnSelectService>;
70
- }
71
- export {};