@coreui/angular 4.2.22 → 4.2.23

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,8 @@
1
- import { Component, EventEmitter, HostBinding, Inject, Input, Output } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
3
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
1
+ var _SidebarComponent_narrow, _SidebarComponent_overlaid, _SidebarComponent_unfoldable, _SidebarComponent_visible, _SidebarComponent_onMobile, _SidebarComponent_layoutChangeSubscription, _SidebarComponent_stateToggleSubscription, _SidebarComponent_stateInitial;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { Component, EventEmitter, HostBinding, Inject, Input, Output } from "@angular/core";
4
+ import { DOCUMENT } from "@angular/common";
5
+ import { coerceBooleanProperty } from "@angular/cdk/coercion";
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@angular/cdk/layout";
6
8
  import * as i2 from "../sidebar.service";
@@ -12,14 +14,21 @@ export class SidebarComponent {
12
14
  this.breakpointObserver = breakpointObserver;
13
15
  this.sidebarService = sidebarService;
14
16
  this.backdropService = backdropService;
15
- this._narrow = false;
16
- this._overlaid = false;
17
- this._unfoldable = false;
18
- this._visible = false;
19
- this.onMobile = false;
17
+ _SidebarComponent_narrow.set(this, false);
18
+ _SidebarComponent_overlaid.set(this, false);
19
+ _SidebarComponent_unfoldable.set(this, false);
20
+ _SidebarComponent_visible.set(this, false);
21
+ _SidebarComponent_onMobile.set(this, false);
22
+ _SidebarComponent_layoutChangeSubscription.set(this, void 0);
23
+ _SidebarComponent_stateToggleSubscription.set(this, void 0);
20
24
  this.state = {
21
25
  sidebar: this
22
26
  };
27
+ _SidebarComponent_stateInitial.set(this, {
28
+ narrow: false,
29
+ visible: false,
30
+ unfoldable: false
31
+ });
23
32
  /**
24
33
  * Place sidebar in non-static positions. [docs]
25
34
  * @default 'fixed'
@@ -37,49 +46,49 @@ export class SidebarComponent {
37
46
  * @type boolean
38
47
  */
39
48
  set narrow(value) {
40
- this._narrow = coerceBooleanProperty(value);
49
+ __classPrivateFieldSet(this, _SidebarComponent_narrow, coerceBooleanProperty(value), "f");
41
50
  }
42
51
  get narrow() {
43
- return this._narrow;
52
+ return __classPrivateFieldGet(this, _SidebarComponent_narrow, "f");
44
53
  }
45
54
  /**
46
55
  * Set sidebar to overlaid variant.
47
56
  * @type boolean
48
57
  */
49
58
  set overlaid(value) {
50
- this._overlaid = coerceBooleanProperty(value);
59
+ __classPrivateFieldSet(this, _SidebarComponent_overlaid, coerceBooleanProperty(value), "f");
51
60
  }
52
61
  get overlaid() {
53
- return this._overlaid;
62
+ return __classPrivateFieldGet(this, _SidebarComponent_overlaid, "f");
54
63
  }
55
64
  /**
56
65
  * Expand narrowed sidebar on hover. [docs]
57
66
  */
58
67
  set unfoldable(value) {
59
- this._unfoldable = coerceBooleanProperty(value);
68
+ __classPrivateFieldSet(this, _SidebarComponent_unfoldable, coerceBooleanProperty(value), "f");
60
69
  }
61
70
  get unfoldable() {
62
- return this._unfoldable;
71
+ return __classPrivateFieldGet(this, _SidebarComponent_unfoldable, "f");
63
72
  }
64
73
  /**
65
74
  * Toggle the visibility of sidebar component. [docs]
66
75
  */
67
76
  set visible(value) {
68
77
  const visible = coerceBooleanProperty(value);
69
- if (this._visible !== visible) {
70
- this._visible = visible;
71
- this.visibleChange.emit(this._visible);
78
+ if (__classPrivateFieldGet(this, _SidebarComponent_visible, "f") !== visible) {
79
+ __classPrivateFieldSet(this, _SidebarComponent_visible, visible, "f");
80
+ this.visibleChange.emit(__classPrivateFieldGet(this, _SidebarComponent_visible, "f"));
72
81
  }
73
82
  }
74
83
  get visible() {
75
- return this._visible;
84
+ return __classPrivateFieldGet(this, _SidebarComponent_visible, "f");
76
85
  }
77
86
  set sidebarState(value) {
78
87
  const newState = value;
79
88
  if ('toggle' in newState) {
80
89
  if (newState.toggle === 'visible') {
81
90
  newState.visible = !this.state.visible;
82
- this.visible = newState.visible && !this.overlaid;
91
+ this.visible = newState.visible;
83
92
  }
84
93
  else if (newState.toggle === 'unfoldable') {
85
94
  newState.unfoldable = !this.state.unfoldable;
@@ -91,21 +100,24 @@ export class SidebarComponent {
91
100
  }
92
101
  this.state = {
93
102
  ...this.state,
94
- ...newState
103
+ ...newState,
95
104
  };
96
- this.state.mobile && this.state.visible ? this.backdropService.setBackdrop(this) : this.backdropService.clearBackdrop();
105
+ this.state.mobile && this.state.visible
106
+ ? this.backdropService.setBackdrop(this)
107
+ : this.backdropService.clearBackdrop();
97
108
  }
98
109
  get sidebarState() {
99
110
  return this.state;
100
111
  }
101
112
  get getMobileBreakpoint() {
102
- const element = this.document.firstElementChild;
103
- const mobileBreakpoint = getComputedStyle(element).getPropertyValue('--cui-mobile-breakpoint') || 'md';
113
+ const element = this.document.documentElement;
114
+ const mobileBreakpoint = getComputedStyle(element).getPropertyValue('--cui-mobile-breakpoint') ||
115
+ 'md';
104
116
  const breakpointValue = getComputedStyle(element).getPropertyValue(`--cui-breakpoint-${mobileBreakpoint.trim()}`) || '768px';
105
- return `${parseFloat(breakpointValue.trim()) - .02}px` || '767.98px';
117
+ return `${parseFloat(breakpointValue.trim()) - 0.02}px` || '767.98px';
106
118
  }
107
119
  get getClasses() {
108
- const { mobile, unfoldable, visible } = this.sidebarState;
120
+ const { mobile, visible } = this.sidebarState;
109
121
  return {
110
122
  sidebar: true,
111
123
  'sidebar-fixed': this.position === 'fixed' && !mobile,
@@ -113,8 +125,8 @@ export class SidebarComponent {
113
125
  'sidebar-narrow-unfoldable': this.unfoldable,
114
126
  'sidebar-overlaid': this.overlaid,
115
127
  [`sidebar-${this.size}`]: !!this.size,
116
- show: visible && this.onMobile,
117
- hide: !visible && !this.onMobile
128
+ show: visible && __classPrivateFieldGet(this, _SidebarComponent_onMobile, "f"),
129
+ hide: !visible,
118
130
  };
119
131
  }
120
132
  ngOnInit() {
@@ -147,50 +159,54 @@ export class SidebarComponent {
147
159
  }
148
160
  }
149
161
  setInitialState() {
150
- this.sidebarService.toggle({
162
+ __classPrivateFieldSet(this, _SidebarComponent_stateInitial, {
151
163
  narrow: this.narrow,
152
164
  visible: this.visible,
153
165
  unfoldable: this.unfoldable,
154
- sidebar: this
166
+ }, "f");
167
+ this.sidebarService.toggle({
168
+ ...__classPrivateFieldGet(this, _SidebarComponent_stateInitial, "f"),
169
+ sidebar: this,
155
170
  });
156
171
  }
157
172
  stateToggleSubscribe(subscribe = true) {
158
173
  if (subscribe) {
159
- this.stateToggleSubscription = this.sidebarService.sidebarState$.subscribe((state) => {
174
+ __classPrivateFieldSet(this, _SidebarComponent_stateToggleSubscription, this.sidebarService.sidebarState$.subscribe((state) => {
160
175
  if (this === state.sidebar || this.id === state.id) {
161
176
  this.sidebarState = state;
162
177
  }
163
- });
178
+ }), "f");
164
179
  }
165
180
  else {
166
- this.stateToggleSubscription.unsubscribe();
181
+ __classPrivateFieldGet(this, _SidebarComponent_stateToggleSubscription, "f").unsubscribe();
167
182
  }
168
183
  }
169
184
  layoutChangeSubscribe(subscribe = true) {
170
185
  const onMobile = `(max-width: ${this.getMobileBreakpoint})`;
171
186
  if (subscribe) {
172
187
  const layoutChanges = this.breakpointObserver.observe([onMobile]);
173
- this.layoutChangeSubscription = layoutChanges.subscribe((result) => {
188
+ __classPrivateFieldSet(this, _SidebarComponent_layoutChangeSubscription, layoutChanges.subscribe((result) => {
174
189
  const isOnMobile = result.breakpoints[onMobile];
175
190
  const isUnfoldable = isOnMobile ? false : this.unfoldable;
176
- if (this.onMobile !== isOnMobile) {
177
- this.onMobile = isOnMobile;
191
+ if (__classPrivateFieldGet(this, _SidebarComponent_onMobile, "f") !== isOnMobile) {
192
+ __classPrivateFieldSet(this, _SidebarComponent_onMobile, isOnMobile, "f");
178
193
  this.sidebarService.toggle({
179
194
  mobile: isOnMobile,
180
195
  unfoldable: isUnfoldable,
181
- visible: (!isOnMobile) || isUnfoldable,
182
- sidebar: this
196
+ visible: isOnMobile ? !isOnMobile : __classPrivateFieldGet(this, _SidebarComponent_stateInitial, "f").visible,
197
+ sidebar: this,
183
198
  });
184
199
  }
185
- });
200
+ }), "f");
186
201
  }
187
202
  else {
188
- this.layoutChangeSubscription.unsubscribe();
203
+ __classPrivateFieldGet(this, _SidebarComponent_layoutChangeSubscription, "f").unsubscribe();
189
204
  }
190
205
  }
191
206
  }
207
+ _SidebarComponent_narrow = new WeakMap(), _SidebarComponent_overlaid = new WeakMap(), _SidebarComponent_unfoldable = new WeakMap(), _SidebarComponent_visible = new WeakMap(), _SidebarComponent_onMobile = new WeakMap(), _SidebarComponent_layoutChangeSubscription = new WeakMap(), _SidebarComponent_stateToggleSubscription = new WeakMap(), _SidebarComponent_stateInitial = new WeakMap();
192
208
  SidebarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SidebarComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i1.BreakpointObserver }, { token: i2.SidebarService }, { token: i3.SidebarBackdropService }], target: i0.ɵɵFactoryTarget.Component });
193
- SidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SidebarComponent, selector: "c-sidebar", inputs: { id: "id", narrow: "narrow", overlaid: "overlaid", position: "position", size: "size", unfoldable: "unfoldable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "this.getClasses" } }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
209
+ SidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SidebarComponent, selector: "c-sidebar", inputs: { colorScheme: "colorScheme", id: "id", narrow: "narrow", overlaid: "overlaid", placement: "placement", position: "position", size: "size", unfoldable: "unfoldable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "this.getClasses" } }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
194
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SidebarComponent, decorators: [{
195
211
  type: Component,
196
212
  args: [{
@@ -198,15 +214,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
198
214
  exportAs: 'cSidebar',
199
215
  template: '<ng-content></ng-content>'
200
216
  }]
201
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
217
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
202
218
  type: Inject,
203
219
  args: [DOCUMENT]
204
- }] }, { type: i0.Renderer2 }, { type: i1.BreakpointObserver }, { type: i2.SidebarService }, { type: i3.SidebarBackdropService }]; }, propDecorators: { id: [{
220
+ }] }, { type: i0.Renderer2 }, { type: i1.BreakpointObserver }, { type: i2.SidebarService }, { type: i3.SidebarBackdropService }]; }, propDecorators: { colorScheme: [{
221
+ type: Input
222
+ }], id: [{
205
223
  type: Input
206
224
  }], narrow: [{
207
225
  type: Input
208
226
  }], overlaid: [{
209
227
  type: Input
228
+ }], placement: [{
229
+ type: Input
210
230
  }], position: [{
211
231
  type: Input
212
232
  }], size: [{
@@ -221,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
221
241
  type: HostBinding,
222
242
  args: ['class']
223
243
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3NpZGViYXIvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFZNUUsTUFBTSxPQUFPLGdCQUFnQjtJQWdJM0IsWUFDNEIsUUFBYSxFQUMvQixRQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsY0FBOEIsRUFDOUIsZUFBdUM7UUFKckIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQTlIekMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUl6QixVQUFLLEdBQW1CO1lBQ3RCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQW1DRjs7O1dBR0c7UUFDTSxhQUFRLEdBQXVCLE9BQU8sQ0FBQztRQW1DaEQ7OztXQUdHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBd0NwRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FB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LENBQUM7b0JBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO3dCQUN6QixNQUFNLEVBQUUsVUFBVTt3QkFDbEIsVUFBVSxFQUFFLFlBQVk7d0JBQ3hCLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksWUFBWTt3QkFDdEMsT0FBTyxFQUFFLElBQUk7cUJBQ2QsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7OEdBdk9VLGdCQUFnQixrQkFpSWpCLFFBQVE7a0dBaklQLGdCQUFnQixpVkFGakIsMkJBQTJCOzRGQUUxQixnQkFBZ0I7a0JBTDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0Qzs7MEJBa0lJLE1BQU07MkJBQUMsUUFBUTt1S0F6R1QsRUFBRTtzQkFBVixLQUFLO2dCQU9GLE1BQU07c0JBRFQsS0FBSztnQkFjRixRQUFRO3NCQURYLEtBQUs7Z0JBYUcsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUYsVUFBVTtzQkFEYixLQUFLO2dCQWFGLE9BQU87c0JBRFYsS0FBSztnQkFpQkksYUFBYTtzQkFBdEIsTUFBTTtnQkE0Q0gsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50U3RhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJU2lkZWJhckFjdGlvbiwgU2lkZWJhclNlcnZpY2UgfSBmcm9tICcuLi9zaWRlYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lkZWJhckJhY2tkcm9wU2VydmljZSB9IGZyb20gJy4uL3NpZGViYXItYmFja2Ryb3Avc2lkZWJhci1iYWNrZHJvcC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1zaWRlYmFyJyxcbiAgZXhwb3J0QXM6ICdjU2lkZWJhcicsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uYXJyb3c6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX292ZXJsYWlkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV91bmZvbGRhYmxlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92aXNpYmxlOiBCb29sZWFuSW5wdXQ7XG5cbiAgcHJpdmF0ZSBfbmFycm93ID0gZmFsc2U7XG4gIHByaXZhdGUgX292ZXJsYWlkID0gZmFsc2U7XG4gIHByaXZhdGUgX3VuZm9sZGFibGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIG9uTW9iaWxlID0gZmFsc2U7XG4gIHByaXZhdGUgbGF5b3V0Q2hhbmdlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHN0YXRlOiBJU2lkZWJhckFjdGlvbiA9IHtcbiAgICBzaWRlYmFyOiB0aGlzXG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHMgaHRtbCBhdHRyaWJ1dGUgaWQuIFtkb2NzXVxuICAgKlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYWtlIHNpZGViYXIgbmFycm93LiBbZG9jc11cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG5hcnJvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25hcnJvdyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbmFycm93KCkge1xuICAgIHJldHVybiB0aGlzLl9uYXJyb3c7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHNpZGViYXIgdG8gb3ZlcmxhaWQgdmFyaWFudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG92ZXJsYWlkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3ZlcmxhaWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG92ZXJsYWlkKCkge1xuICAgIHJldHVybiB0aGlzLl9vdmVybGFpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZSBzaWRlYmFyIGluIG5vbi1zdGF0aWMgcG9zaXRpb25zLiBbZG9jc11cbiAgICogQGRlZmF1bHQgJ2ZpeGVkJ1xuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb246ICdmaXhlZCcgfCAnc3RpY2t5JyA9ICdmaXhlZCc7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIGNvbXBvbmVudCBzbWFsbCwgbGFyZ2UsIG9yIGV4dHJhIGxhcmdlLiBbZG9jc11cbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiAnc20nIHwgJ2xnJyB8ICd4bCc7XG5cbiAgLyoqXG4gICAqIEV4cGFuZCBuYXJyb3dlZCBzaWRlYmFyIG9uIGhvdmVyLiBbZG9jc11cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB1bmZvbGRhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdW5mb2xkYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgdW5mb2xkYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdW5mb2xkYWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2Ygc2lkZWJhciBjb21wb25lbnQuIFtkb2NzXVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB2aXNpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAodGhpcy5fdmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuICAgICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl92aXNpYmxlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIG9uIHZpc2liaWxpdHkgY2hhbmdlLiBbZG9jc11cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgc2V0IHNpZGViYXJTdGF0ZSh2YWx1ZTogSVNpZGViYXJBY3Rpb24pIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHZhbHVlO1xuICAgIGlmICgndG9nZ2xlJyBpbiBuZXdTdGF0ZSkge1xuICAgICAgaWYgKG5ld1N0YXRlLnRvZ2dsZSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgIG5ld1N0YXRlLnZpc2libGUgPSAhdGhpcy5zdGF0ZS52aXNpYmxlO1xuICAgICAgICB0aGlzLnZpc2libGUgPSBuZXdTdGF0ZS52aXNpYmxlICYmICF0aGlzLm92ZXJsYWlkO1xuICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS50b2dnbGUgPT09ICd1bmZvbGRhYmxlJykge1xuICAgICAgICBuZXdTdGF0ZS51bmZvbGRhYmxlID0gIXRoaXMuc3RhdGUudW5mb2xkYWJsZTtcbiAgICAgICAgdGhpcy51bmZvbGRhYmxlID0gbmV3U3RhdGUudW5mb2xkYWJsZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aXNpYmxlID0gKG5ld1N0YXRlLnZpc2libGUgPz8gdGhpcy52aXNpYmxlKSAmJiAhdGhpcy5vdmVybGFpZDtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZVxuICAgIH07XG4gICAgdGhpcy5zdGF0ZS5tb2JpbGUgJiYgdGhpcy5zdGF0ZS52aXNpYmxlID8gdGhpcy5iYWNrZHJvcFNlcnZpY2Uuc2V0QmFja2Ryb3AodGhpcykgOiB0aGlzLmJhY2tkcm9wU2VydmljZS5jbGVhckJhY2tkcm9wKCk7XG4gIH1cblxuICBnZXQgc2lkZWJhclN0YXRlKCk6IElTaWRlYmFyQWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgfVxuXG4gIGdldCBnZXRNb2JpbGVCcmVha3BvaW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgY29uc3QgbW9iaWxlQnJlYWtwb2ludCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1jdWktbW9iaWxlLWJyZWFrcG9pbnQnKSB8fCAnbWQnO1xuICAgIGNvbnN0IGJyZWFrcG9pbnRWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShgLS1jdWktYnJlYWtwb2ludC0ke21vYmlsZUJyZWFrcG9pbnQudHJpbSgpfWApIHx8ICc3NjhweCc7XG4gICAgcmV0dXJuIGAke3BhcnNlRmxvYXQoYnJlYWtwb2ludFZhbHVlLnRyaW0oKSkgLSAuMDJ9cHhgIHx8ICc3NjcuOThweCc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgcHJpdmF0ZSBzaWRlYmFyU2VydmljZTogU2lkZWJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZHJvcFNlcnZpY2U6IFNpZGViYXJCYWNrZHJvcFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iYWNrZHJvcFNlcnZpY2UucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgZ2V0Q2xhc3NlcygpOiBhbnkge1xuICAgIGNvbnN0IHsgbW9iaWxlLCB1bmZvbGRhYmxlLCB2aXNpYmxlIH0gPSB0aGlzLnNpZGViYXJTdGF0ZTtcbiAgICByZXR1cm4ge1xuICAgICAgc2lkZWJhcjogdHJ1ZSxcbiAgICAgICdzaWRlYmFyLWZpeGVkJzogdGhpcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyAmJiAhbW9iaWxlLFxuICAgICAgJ3NpZGViYXItbmFycm93JzogdGhpcy5uYXJyb3cgJiYgIXRoaXMudW5mb2xkYWJsZSxcbiAgICAgICdzaWRlYmFyLW5hcnJvdy11bmZvbGRhYmxlJzogdGhpcy51bmZvbGRhYmxlLFxuICAgICAgJ3NpZGViYXItb3ZlcmxhaWQnOiB0aGlzLm92ZXJsYWlkLFxuICAgICAgW2BzaWRlYmFyLSR7dGhpcy5zaXplfWBdOiAhIXRoaXMuc2l6ZSxcbiAgICAgIHNob3c6IHZpc2libGUgJiYgdGhpcy5vbk1vYmlsZSxcbiAgICAgIGhpZGU6ICF2aXNpYmxlICYmICF0aGlzLm9uTW9iaWxlXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VTdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaWJlKGZhbHNlKTtcbiAgICB0aGlzLmxheW91dENoYW5nZVN1YnNjcmliZShmYWxzZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkU3RhdGVNYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhdGUpKTtcbiAgICBjb25zdCBuZXdTdGF0ZU1hcCA9IG5ldyBNYXAoKTtcbiAgICBuZXdTdGF0ZU1hcC5zZXQoJ3NpZGViYXInLCB0aGlzKTtcblxuICAgIGNvbnN0IHByb3BMaXN0ID0gWyd2aXNpYmxlJywgJ3VuZm9sZGFibGUnLCAnbmFycm93J107XG5cbiAgICBmb3IgKGNvbnN0IHByb3BOYW1lIGluIGNoYW5nZXMpIHtcbiAgICAgIGlmIChwcm9wTGlzdC5pbmNsdWRlcyhwcm9wTmFtZSkpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbcHJvcE5hbWVdICYmICFjaGFuZ2VzW3Byb3BOYW1lXS5maXJzdENoYW5nZSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXNbcHJvcE5hbWVdLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgaWYgKG9sZFN0YXRlTWFwLmdldChwcm9wTmFtZSkgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZU1hcC5zZXQocHJvcE5hbWUsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3U3RhdGVNYXAuc2l6ZSA+IDEpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gT2JqZWN0LmZyb21FbnRyaWVzKG5ld1N0YXRlTWFwLmVudHJpZXMoKSk7XG4gICAgICB0aGlzLnNpZGViYXJTZXJ2aWNlLnRvZ2dsZShzdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0SW5pdGlhbFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc2lkZWJhclNlcnZpY2UudG9nZ2xlKHtcbiAgICAgIG5hcnJvdzogdGhpcy5uYXJyb3csXG4gICAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXG4gICAgICB1bmZvbGRhYmxlOiB0aGlzLnVuZm9sZGFibGUsXG4gICAgICBzaWRlYmFyOiB0aGlzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRlVG9nZ2xlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uID0gdGhpcy5zaWRlYmFyU2VydmljZS5zaWRlYmFyU3RhdGUkLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMgPT09IHN0YXRlLnNpZGViYXIgfHwgdGhpcy5pZCA9PT0gc3RhdGUuaWQpIHtcbiAgICAgICAgICB0aGlzLnNpZGViYXJTdGF0ZSA9IHN0YXRlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZVRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGxheW91dENoYW5nZVN1YnNjcmliZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3Qgb25Nb2JpbGUgPSBgKG1heC13aWR0aDogJHt0aGlzLmdldE1vYmlsZUJyZWFrcG9pbnR9KWA7XG5cbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICBjb25zdCBsYXlvdXRDaGFuZ2VzID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbb25Nb2JpbGVdKTtcblxuICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VTdWJzY3JpcHRpb24gPSBsYXlvdXRDaGFuZ2VzLnN1YnNjcmliZSgocmVzdWx0OiBCcmVha3BvaW50U3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgaXNPbk1vYmlsZSA9IHJlc3VsdC5icmVha3BvaW50c1tvbk1vYmlsZV07XG4gICAgICAgIGNvbnN0IGlzVW5mb2xkYWJsZSA9IGlzT25Nb2JpbGUgPyBmYWxzZSA6IHRoaXMudW5mb2xkYWJsZTtcbiAgICAgICAgaWYgKHRoaXMub25Nb2JpbGUgIT09IGlzT25Nb2JpbGUpIHtcbiAgICAgICAgICB0aGlzLm9uTW9iaWxlID0gaXNPbk1vYmlsZTtcbiAgICAgICAgICB0aGlzLnNpZGViYXJTZXJ2aWNlLnRvZ2dsZSh7XG4gICAgICAgICAgICBtb2JpbGU6IGlzT25Nb2JpbGUsXG4gICAgICAgICAgICB1bmZvbGRhYmxlOiBpc1VuZm9sZGFibGUsXG4gICAgICAgICAgICB2aXNpYmxlOiAoIWlzT25Nb2JpbGUpIHx8IGlzVW5mb2xkYWJsZSxcbiAgICAgICAgICAgIHNpZGViYXI6IHRoaXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGF5b3V0Q2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3NpZGViYXIvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQVk1RSxNQUFNLE9BQU8sZ0JBQWdCO0lBeUozQixZQUM0QixRQUFrQixFQUNwQyxRQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsY0FBOEIsRUFDOUIsZUFBdUM7UUFKckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQXhKakQsbUNBQVUsS0FBSyxFQUFDO1FBQ2hCLHFDQUFZLEtBQUssRUFBQztRQUNsQix1Q0FBYyxLQUFLLEVBQUM7UUFDcEIsb0NBQVcsS0FBSyxFQUFDO1FBQ2pCLHFDQUFZLEtBQUssRUFBQztRQUNsQiw2REFBeUM7UUFDekMsNERBQXdDO1FBRXhDLFVBQUssR0FBbUI7WUFDdEIsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO1FBRUYseUNBQWdCO1lBQ2QsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsS0FBSztZQUNkLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLEVBQUM7UUFnREY7OztXQUdHO1FBQ00sYUFBUSxHQUF1QixPQUFP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bnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludFN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9sYXlvdXRcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmltcG9ydCB7IElTaWRlYmFyQWN0aW9uLCBTaWRlYmFyU2VydmljZSB9IGZyb20gXCIuLi9zaWRlYmFyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2lkZWJhckJhY2tkcm9wU2VydmljZSB9IGZyb20gXCIuLi9zaWRlYmFyLWJhY2tkcm9wL3NpZGViYXItYmFja2Ryb3Auc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjLXNpZGViYXInLFxyXG4gIGV4cG9ydEFzOiAnY1NpZGViYXInLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PidcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbmFycm93OiBCb29sZWFuSW5wdXQ7XHJcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX292ZXJsYWlkOiBCb29sZWFuSW5wdXQ7XHJcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3VuZm9sZGFibGU6IEJvb2xlYW5JbnB1dDtcclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmlzaWJsZTogQm9vbGVhbklucHV0O1xyXG5cclxuICAjbmFycm93ID0gZmFsc2U7XHJcbiAgI292ZXJsYWlkID0gZmFsc2U7XHJcbiAgI3VuZm9sZGFibGUgPSBmYWxzZTtcclxuICAjdmlzaWJsZSA9IGZhbHNlO1xyXG4gICNvbk1vYmlsZSA9IGZhbHNlO1xyXG4gICNsYXlvdXRDaGFuZ2VTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgI3N0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBzdGF0ZTogSVNpZGViYXJBY3Rpb24gPSB7XHJcbiAgICBzaWRlYmFyOiB0aGlzXHJcbiAgfTtcclxuXHJcbiAgI3N0YXRlSW5pdGlhbCA9IHtcclxuICAgIG5hcnJvdzogZmFsc2UsXHJcbiAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIHVuZm9sZGFibGU6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBpZiB0aGUgY29sb3Igb2YgdGV4dCBzaG91bGQgYmUgY29sb3JlZCBmb3IgYSBsaWdodCBvciBkYXJrIGJhY2tncm91bmQuIFtkb2NzXVxyXG4gICAqXHJcbiAgICogQHR5cGUgJ2RhcmsnIHwgJ2xpZ2h0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbG9yU2NoZW1lPzogJ2RhcmsnIHwgJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyBodG1sIGF0dHJpYnV0ZSBpZC4gW2RvY3NdXHJcbiAgICpcclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZSBzaWRlYmFyIG5hcnJvdy4gW2RvY3NdXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5hcnJvdyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy4jbmFycm93ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBuYXJyb3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy4jbmFycm93O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHNpZGViYXIgdG8gb3ZlcmxhaWQgdmFyaWFudC5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgb3ZlcmxhaWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuI292ZXJsYWlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBvdmVybGFpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLiNvdmVybGFpZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBvbmVudHMgcGxhY2VtZW50LCB0aGVyZeKAmXMgbm8gZGVmYXVsdCBwbGFjZW1lbnQuIFtkb2NzXVxyXG4gICAqIEB0eXBlICdzdGFydCcgfCAnZW5kJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlbWVudD86ICdzdGFydCcgfCAnZW5kJztcclxuXHJcbiAgLyoqXHJcbiAgICogUGxhY2Ugc2lkZWJhciBpbiBub24tc3RhdGljIHBvc2l0aW9ucy4gW2RvY3NdXHJcbiAgICogQGRlZmF1bHQgJ2ZpeGVkJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBvc2l0aW9uOiAnZml4ZWQnIHwgJ3N0aWNreScgPSAnZml4ZWQnO1xyXG5cclxuICAvKipcclxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwsIGxhcmdlLCBvciBleHRyYSBsYXJnZS4gW2RvY3NdXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2l6ZT86ICdzbScgfCAnbGcnIHwgJ3hsJztcclxuXHJcbiAgLyoqXHJcbiAgICogRXhwYW5kIG5hcnJvd2VkIHNpZGViYXIgb24gaG92ZXIuIFtkb2NzXVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHVuZm9sZGFibGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuI3VuZm9sZGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVuZm9sZGFibGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy4jdW5mb2xkYWJsZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiBzaWRlYmFyIGNvbXBvbmVudC4gW2RvY3NdXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgY29uc3QgdmlzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy4jdmlzaWJsZSAhPT0gdmlzaWJsZSkge1xyXG4gICAgICB0aGlzLiN2aXNpYmxlID0gdmlzaWJsZTtcclxuICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy4jdmlzaWJsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLiN2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCBvbiB2aXNpYmlsaXR5IGNoYW5nZS4gW2RvY3NdXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBzZXQgc2lkZWJhclN0YXRlKHZhbHVlOiBJU2lkZWJhckFjdGlvbikge1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSB2YWx1ZTtcclxuICAgIGlmICgndG9nZ2xlJyBpbiBuZXdTdGF0ZSkge1xyXG4gICAgICBpZiAobmV3U3RhdGUudG9nZ2xlID09PSAndmlzaWJsZScpIHtcclxuICAgICAgICBuZXdTdGF0ZS52aXNpYmxlID0gIXRoaXMuc3RhdGUudmlzaWJsZTtcclxuICAgICAgICB0aGlzLnZpc2libGUgPSBuZXdTdGF0ZS52aXNpYmxlO1xyXG4gICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLnRvZ2dsZSA9PT0gJ3VuZm9sZGFibGUnKSB7XHJcbiAgICAgICAgbmV3U3RhdGUudW5mb2xkYWJsZSA9ICF0aGlzLnN0YXRlLnVuZm9sZGFibGU7XHJcbiAgICAgICAgdGhpcy51bmZvbGRhYmxlID0gbmV3U3RhdGUudW5mb2xkYWJsZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52aXNpYmxlID0gKG5ld1N0YXRlLnZpc2libGUgPz8gdGhpcy52aXNpYmxlKSAmJiAhdGhpcy5vdmVybGFpZDtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIC4uLnRoaXMuc3RhdGUsXHJcbiAgICAgIC4uLm5ld1N0YXRlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc3RhdGUubW9iaWxlICYmIHRoaXMuc3RhdGUudmlzaWJsZVxyXG4gICAgICA/IHRoaXMuYmFja2Ryb3BTZXJ2aWNlLnNldEJhY2tkcm9wKHRoaXMpXHJcbiAgICAgIDogdGhpcy5iYWNrZHJvcFNlcnZpY2UuY2xlYXJCYWNrZHJvcCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNpZGViYXJTdGF0ZSgpOiBJU2lkZWJhckFjdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRNb2JpbGVCcmVha3BvaW50KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbGVtZW50OiBFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICBjb25zdCBtb2JpbGVCcmVha3BvaW50ID1cclxuICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWN1aS1tb2JpbGUtYnJlYWtwb2ludCcpIHx8XHJcbiAgICAgICdtZCc7XHJcbiAgICBjb25zdCBicmVha3BvaW50VmFsdWUgPVxyXG4gICAgICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoXHJcbiAgICAgICAgYC0tY3VpLWJyZWFrcG9pbnQtJHttb2JpbGVCcmVha3BvaW50LnRyaW0oKX1gXHJcbiAgICAgICkgfHwgJzc2OHB4JztcclxuICAgIHJldHVybiBgJHtwYXJzZUZsb2F0KGJyZWFrcG9pbnRWYWx1ZS50cmltKCkpIC0gMC4wMn1weGAgfHwgJzc2Ny45OHB4JztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxyXG4gICAgcHJpdmF0ZSBzaWRlYmFyU2VydmljZTogU2lkZWJhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tkcm9wU2VydmljZTogU2lkZWJhckJhY2tkcm9wU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5iYWNrZHJvcFNlcnZpY2UucmVuZGVyZXIgPSByZW5kZXJlcjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IGFueSB7XHJcbiAgICBjb25zdCB7IG1vYmlsZSwgdmlzaWJsZSB9ID0gdGhpcy5zaWRlYmFyU3RhdGU7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaWRlYmFyOiB0cnVlLFxyXG4gICAgICAnc2lkZWJhci1maXhlZCc6IHRoaXMucG9zaXRpb24gPT09ICdmaXhlZCcgJiYgIW1vYmlsZSxcclxuICAgICAgJ3NpZGViYXItbmFycm93JzogdGhpcy5uYXJyb3cgJiYgIXRoaXMudW5mb2xkYWJsZSxcclxuICAgICAgJ3NpZGViYXItbmFycm93LXVuZm9sZGFibGUnOiB0aGlzLnVuZm9sZGFibGUsXHJcbiAgICAgICdzaWRlYmFyLW92ZXJsYWlkJzogdGhpcy5vdmVybGFpZCxcclxuICAgICAgW2BzaWRlYmFyLSR7dGhpcy5zaXplfWBdOiAhIXRoaXMuc2l6ZSxcclxuICAgICAgc2hvdzogdmlzaWJsZSAmJiB0aGlzLiNvbk1vYmlsZSxcclxuICAgICAgaGlkZTogIXZpc2libGUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VTdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc3RhdGVUb2dnbGVTdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGF0ZVRvZ2dsZVN1YnNjcmliZShmYWxzZSk7XHJcbiAgICB0aGlzLmxheW91dENoYW5nZVN1YnNjcmliZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCBvbGRTdGF0ZU1hcCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5zdGF0ZSkpO1xyXG4gICAgY29uc3QgbmV3U3RhdGVNYXAgPSBuZXcgTWFwKCk7XHJcbiAgICBuZXdTdGF0ZU1hcC5zZXQoJ3NpZGViYXInLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFsndmlzaWJsZScsICd1bmZvbGRhYmxlJywgJ25hcnJvdyddO1xyXG5cclxuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gY2hhbmdlcykge1xyXG4gICAgICBpZiAocHJvcExpc3QuaW5jbHVkZXMocHJvcE5hbWUpKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbcHJvcE5hbWVdICYmICFjaGFuZ2VzW3Byb3BOYW1lXS5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1twcm9wTmFtZV0uY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgIGlmIChvbGRTdGF0ZU1hcC5nZXQocHJvcE5hbWUpICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICBuZXdTdGF0ZU1hcC5zZXQocHJvcE5hbWUsIHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobmV3U3RhdGVNYXAuc2l6ZSA+IDEpIHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSBPYmplY3QuZnJvbUVudHJpZXMobmV3U3RhdGVNYXAuZW50cmllcygpKTtcclxuICAgICAgdGhpcy5zaWRlYmFyU2VydmljZS50b2dnbGUoc3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy4jc3RhdGVJbml0aWFsID0ge1xyXG4gICAgICBuYXJyb3c6IHRoaXMubmFycm93LFxyXG4gICAgICB2aXNpYmxlOiB0aGlzLnZpc2libGUsXHJcbiAgICAgIHVuZm9sZGFibGU6IHRoaXMudW5mb2xkYWJsZSxcclxuICAgIH07XHJcbiAgICB0aGlzLnNpZGViYXJTZXJ2aWNlLnRvZ2dsZSh7XHJcbiAgICAgIC4uLnRoaXMuI3N0YXRlSW5pdGlhbCxcclxuICAgICAgc2lkZWJhcjogdGhpcyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0ZVRvZ2dsZVN1YnNjcmliZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoc3Vic2NyaWJlKSB7XHJcbiAgICAgIHRoaXMuI3N0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uID1cclxuICAgICAgICB0aGlzLnNpZGViYXJTZXJ2aWNlLnNpZGViYXJTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMgPT09IHN0YXRlLnNpZGViYXIgfHwgdGhpcy5pZCA9PT0gc3RhdGUuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zaWRlYmFyU3RhdGUgPSBzdGF0ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuI3N0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsYXlvdXRDaGFuZ2VTdWJzY3JpYmUoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgY29uc3Qgb25Nb2JpbGUgPSBgKG1heC13aWR0aDogJHt0aGlzLmdldE1vYmlsZUJyZWFrcG9pbnR9KWA7XHJcblxyXG4gICAgaWYgKHN1YnNjcmliZSkge1xyXG4gICAgICBjb25zdCBsYXlvdXRDaGFuZ2VzID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbb25Nb2JpbGVdKTtcclxuXHJcbiAgICAgIHRoaXMuI2xheW91dENoYW5nZVN1YnNjcmlwdGlvbiA9IGxheW91dENoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQ6IEJyZWFrcG9pbnRTdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXNPbk1vYmlsZSA9IHJlc3VsdC5icmVha3BvaW50c1tvbk1vYmlsZV07XHJcbiAgICAgICAgICBjb25zdCBpc1VuZm9sZGFibGUgPSBpc09uTW9iaWxlID8gZmFsc2UgOiB0aGlzLnVuZm9sZGFibGU7XHJcbiAgICAgICAgICBpZiAodGhpcy4jb25Nb2JpbGUgIT09IGlzT25Nb2JpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy4jb25Nb2JpbGUgPSBpc09uTW9iaWxlO1xyXG4gICAgICAgICAgICB0aGlzLnNpZGViYXJTZXJ2aWNlLnRvZ2dsZSh7XHJcbiAgICAgICAgICAgICAgbW9iaWxlOiBpc09uTW9iaWxlLFxyXG4gICAgICAgICAgICAgIHVuZm9sZGFibGU6IGlzVW5mb2xkYWJsZSxcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBpc09uTW9iaWxlID8gIWlzT25Nb2JpbGUgOiB0aGlzLiNzdGF0ZUluaXRpYWwudmlzaWJsZSxcclxuICAgICAgICAgICAgICBzaWRlYmFyOiB0aGlzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLiNsYXlvdXRDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -13,6 +13,7 @@ import { createPopper } from '@popperjs/core';
13
13
  import * as i1$2 from '@angular/cdk/layout';
14
14
  import * as i3$1 from '@angular/cdk/a11y';
15
15
  import { A11yModule } from '@angular/cdk/a11y';
16
+ import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
16
17
  import * as i5 from '@coreui/icons-angular';
17
18
  import { IconModule } from '@coreui/icons-angular';
18
19
 
@@ -6901,6 +6902,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
6901
6902
  }] }, { type: SidebarService }];
6902
6903
  } });
6903
6904
 
6905
+ var _SidebarComponent_narrow, _SidebarComponent_overlaid, _SidebarComponent_unfoldable, _SidebarComponent_visible, _SidebarComponent_onMobile, _SidebarComponent_layoutChangeSubscription, _SidebarComponent_stateToggleSubscription, _SidebarComponent_stateInitial;
6904
6906
  class SidebarComponent {
6905
6907
  constructor(document, renderer, breakpointObserver, sidebarService, backdropService) {
6906
6908
  this.document = document;
@@ -6908,14 +6910,21 @@ class SidebarComponent {
6908
6910
  this.breakpointObserver = breakpointObserver;
6909
6911
  this.sidebarService = sidebarService;
6910
6912
  this.backdropService = backdropService;
6911
- this._narrow = false;
6912
- this._overlaid = false;
6913
- this._unfoldable = false;
6914
- this._visible = false;
6915
- this.onMobile = false;
6913
+ _SidebarComponent_narrow.set(this, false);
6914
+ _SidebarComponent_overlaid.set(this, false);
6915
+ _SidebarComponent_unfoldable.set(this, false);
6916
+ _SidebarComponent_visible.set(this, false);
6917
+ _SidebarComponent_onMobile.set(this, false);
6918
+ _SidebarComponent_layoutChangeSubscription.set(this, void 0);
6919
+ _SidebarComponent_stateToggleSubscription.set(this, void 0);
6916
6920
  this.state = {
6917
6921
  sidebar: this
6918
6922
  };
6923
+ _SidebarComponent_stateInitial.set(this, {
6924
+ narrow: false,
6925
+ visible: false,
6926
+ unfoldable: false
6927
+ });
6919
6928
  /**
6920
6929
  * Place sidebar in non-static positions. [docs]
6921
6930
  * @default 'fixed'
@@ -6933,42 +6942,42 @@ class SidebarComponent {
6933
6942
  * @type boolean
6934
6943
  */
6935
6944
  set narrow(value) {
6936
- this._narrow = coerceBooleanProperty(value);
6945
+ __classPrivateFieldSet(this, _SidebarComponent_narrow, coerceBooleanProperty(value), "f");
6937
6946
  }
6938
6947
  get narrow() {
6939
- return this._narrow;
6948
+ return __classPrivateFieldGet(this, _SidebarComponent_narrow, "f");
6940
6949
  }
6941
6950
  /**
6942
6951
  * Set sidebar to overlaid variant.
6943
6952
  * @type boolean
6944
6953
  */
6945
6954
  set overlaid(value) {
6946
- this._overlaid = coerceBooleanProperty(value);
6955
+ __classPrivateFieldSet(this, _SidebarComponent_overlaid, coerceBooleanProperty(value), "f");
6947
6956
  }
6948
6957
  get overlaid() {
6949
- return this._overlaid;
6958
+ return __classPrivateFieldGet(this, _SidebarComponent_overlaid, "f");
6950
6959
  }
6951
6960
  /**
6952
6961
  * Expand narrowed sidebar on hover. [docs]
6953
6962
  */
6954
6963
  set unfoldable(value) {
6955
- this._unfoldable = coerceBooleanProperty(value);
6964
+ __classPrivateFieldSet(this, _SidebarComponent_unfoldable, coerceBooleanProperty(value), "f");
6956
6965
  }
6957
6966
  get unfoldable() {
6958
- return this._unfoldable;
6967
+ return __classPrivateFieldGet(this, _SidebarComponent_unfoldable, "f");
6959
6968
  }
6960
6969
  /**
6961
6970
  * Toggle the visibility of sidebar component. [docs]
6962
6971
  */
6963
6972
  set visible(value) {
6964
6973
  const visible = coerceBooleanProperty(value);
6965
- if (this._visible !== visible) {
6966
- this._visible = visible;
6967
- this.visibleChange.emit(this._visible);
6974
+ if (__classPrivateFieldGet(this, _SidebarComponent_visible, "f") !== visible) {
6975
+ __classPrivateFieldSet(this, _SidebarComponent_visible, visible, "f");
6976
+ this.visibleChange.emit(__classPrivateFieldGet(this, _SidebarComponent_visible, "f"));
6968
6977
  }
6969
6978
  }
6970
6979
  get visible() {
6971
- return this._visible;
6980
+ return __classPrivateFieldGet(this, _SidebarComponent_visible, "f");
6972
6981
  }
6973
6982
  set sidebarState(value) {
6974
6983
  var _a;
@@ -6976,7 +6985,7 @@ class SidebarComponent {
6976
6985
  if ('toggle' in newState) {
6977
6986
  if (newState.toggle === 'visible') {
6978
6987
  newState.visible = !this.state.visible;
6979
- this.visible = newState.visible && !this.overlaid;
6988
+ this.visible = newState.visible;
6980
6989
  }
6981
6990
  else if (newState.toggle === 'unfoldable') {
6982
6991
  newState.unfoldable = !this.state.unfoldable;
@@ -6987,19 +6996,22 @@ class SidebarComponent {
6987
6996
  this.visible = ((_a = newState.visible) !== null && _a !== void 0 ? _a : this.visible) && !this.overlaid;
6988
6997
  }
6989
6998
  this.state = Object.assign(Object.assign({}, this.state), newState);
6990
- this.state.mobile && this.state.visible ? this.backdropService.setBackdrop(this) : this.backdropService.clearBackdrop();
6999
+ this.state.mobile && this.state.visible
7000
+ ? this.backdropService.setBackdrop(this)
7001
+ : this.backdropService.clearBackdrop();
6991
7002
  }
6992
7003
  get sidebarState() {
6993
7004
  return this.state;
6994
7005
  }
6995
7006
  get getMobileBreakpoint() {
6996
- const element = this.document.firstElementChild;
6997
- const mobileBreakpoint = getComputedStyle(element).getPropertyValue('--cui-mobile-breakpoint') || 'md';
7007
+ const element = this.document.documentElement;
7008
+ const mobileBreakpoint = getComputedStyle(element).getPropertyValue('--cui-mobile-breakpoint') ||
7009
+ 'md';
6998
7010
  const breakpointValue = getComputedStyle(element).getPropertyValue(`--cui-breakpoint-${mobileBreakpoint.trim()}`) || '768px';
6999
- return `${parseFloat(breakpointValue.trim()) - .02}px` || '767.98px';
7011
+ return `${parseFloat(breakpointValue.trim()) - 0.02}px` || '767.98px';
7000
7012
  }
7001
7013
  get getClasses() {
7002
- const { mobile, unfoldable, visible } = this.sidebarState;
7014
+ const { mobile, visible } = this.sidebarState;
7003
7015
  return {
7004
7016
  sidebar: true,
7005
7017
  'sidebar-fixed': this.position === 'fixed' && !mobile,
@@ -7007,8 +7019,8 @@ class SidebarComponent {
7007
7019
  'sidebar-narrow-unfoldable': this.unfoldable,
7008
7020
  'sidebar-overlaid': this.overlaid,
7009
7021
  [`sidebar-${this.size}`]: !!this.size,
7010
- show: visible && this.onMobile,
7011
- hide: !visible && !this.onMobile
7022
+ show: visible && __classPrivateFieldGet(this, _SidebarComponent_onMobile, "f"),
7023
+ hide: !visible,
7012
7024
  };
7013
7025
  }
7014
7026
  ngOnInit() {
@@ -7041,50 +7053,51 @@ class SidebarComponent {
7041
7053
  }
7042
7054
  }
7043
7055
  setInitialState() {
7044
- this.sidebarService.toggle({
7056
+ __classPrivateFieldSet(this, _SidebarComponent_stateInitial, {
7045
7057
  narrow: this.narrow,
7046
7058
  visible: this.visible,
7047
7059
  unfoldable: this.unfoldable,
7048
- sidebar: this
7049
- });
7060
+ }, "f");
7061
+ this.sidebarService.toggle(Object.assign(Object.assign({}, __classPrivateFieldGet(this, _SidebarComponent_stateInitial, "f")), { sidebar: this }));
7050
7062
  }
7051
7063
  stateToggleSubscribe(subscribe = true) {
7052
7064
  if (subscribe) {
7053
- this.stateToggleSubscription = this.sidebarService.sidebarState$.subscribe((state) => {
7065
+ __classPrivateFieldSet(this, _SidebarComponent_stateToggleSubscription, this.sidebarService.sidebarState$.subscribe((state) => {
7054
7066
  if (this === state.sidebar || this.id === state.id) {
7055
7067
  this.sidebarState = state;
7056
7068
  }
7057
- });
7069
+ }), "f");
7058
7070
  }
7059
7071
  else {
7060
- this.stateToggleSubscription.unsubscribe();
7072
+ __classPrivateFieldGet(this, _SidebarComponent_stateToggleSubscription, "f").unsubscribe();
7061
7073
  }
7062
7074
  }
7063
7075
  layoutChangeSubscribe(subscribe = true) {
7064
7076
  const onMobile = `(max-width: ${this.getMobileBreakpoint})`;
7065
7077
  if (subscribe) {
7066
7078
  const layoutChanges = this.breakpointObserver.observe([onMobile]);
7067
- this.layoutChangeSubscription = layoutChanges.subscribe((result) => {
7079
+ __classPrivateFieldSet(this, _SidebarComponent_layoutChangeSubscription, layoutChanges.subscribe((result) => {
7068
7080
  const isOnMobile = result.breakpoints[onMobile];
7069
7081
  const isUnfoldable = isOnMobile ? false : this.unfoldable;
7070
- if (this.onMobile !== isOnMobile) {
7071
- this.onMobile = isOnMobile;
7082
+ if (__classPrivateFieldGet(this, _SidebarComponent_onMobile, "f") !== isOnMobile) {
7083
+ __classPrivateFieldSet(this, _SidebarComponent_onMobile, isOnMobile, "f");
7072
7084
  this.sidebarService.toggle({
7073
7085
  mobile: isOnMobile,
7074
7086
  unfoldable: isUnfoldable,
7075
- visible: (!isOnMobile) || isUnfoldable,
7076
- sidebar: this
7087
+ visible: isOnMobile ? !isOnMobile : __classPrivateFieldGet(this, _SidebarComponent_stateInitial, "f").visible,
7088
+ sidebar: this,
7077
7089
  });
7078
7090
  }
7079
- });
7091
+ }), "f");
7080
7092
  }
7081
7093
  else {
7082
- this.layoutChangeSubscription.unsubscribe();
7094
+ __classPrivateFieldGet(this, _SidebarComponent_layoutChangeSubscription, "f").unsubscribe();
7083
7095
  }
7084
7096
  }
7085
7097
  }
7098
+ _SidebarComponent_narrow = new WeakMap(), _SidebarComponent_overlaid = new WeakMap(), _SidebarComponent_unfoldable = new WeakMap(), _SidebarComponent_visible = new WeakMap(), _SidebarComponent_onMobile = new WeakMap(), _SidebarComponent_layoutChangeSubscription = new WeakMap(), _SidebarComponent_stateToggleSubscription = new WeakMap(), _SidebarComponent_stateInitial = new WeakMap();
7086
7099
  SidebarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SidebarComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i1$2.BreakpointObserver }, { token: SidebarService }, { token: SidebarBackdropService }], target: i0.ɵɵFactoryTarget.Component });
7087
- SidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SidebarComponent, selector: "c-sidebar", inputs: { id: "id", narrow: "narrow", overlaid: "overlaid", position: "position", size: "size", unfoldable: "unfoldable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "this.getClasses" } }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
7100
+ SidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SidebarComponent, selector: "c-sidebar", inputs: { colorScheme: "colorScheme", id: "id", narrow: "narrow", overlaid: "overlaid", placement: "placement", position: "position", size: "size", unfoldable: "unfoldable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "this.getClasses" } }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
7088
7101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SidebarComponent, decorators: [{
7089
7102
  type: Component,
7090
7103
  args: [{
@@ -7093,16 +7106,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
7093
7106
  template: '<ng-content></ng-content>'
7094
7107
  }]
7095
7108
  }], ctorParameters: function () {
7096
- return [{ type: undefined, decorators: [{
7109
+ return [{ type: Document, decorators: [{
7097
7110
  type: Inject,
7098
7111
  args: [DOCUMENT]
7099
7112
  }] }, { type: i0.Renderer2 }, { type: i1$2.BreakpointObserver }, { type: SidebarService }, { type: SidebarBackdropService }];
7100
- }, propDecorators: { id: [{
7113
+ }, propDecorators: { colorScheme: [{
7114
+ type: Input
7115
+ }], id: [{
7101
7116
  type: Input
7102
7117
  }], narrow: [{
7103
7118
  type: Input
7104
7119
  }], overlaid: [{
7105
7120
  type: Input
7121
+ }], placement: [{
7122
+ type: Input
7106
7123
  }], position: [{
7107
7124
  type: Input
7108
7125
  }], size: [{