@villedemontreal/angular-ui 15.3.1 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/{esm2020 → esm2022}/lib/alert/alert.component.mjs +16 -16
  2. package/{esm2020 → esm2022}/lib/alert/module.mjs +13 -13
  3. package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +7 -7
  4. package/{esm2020 → esm2022}/lib/avatar/module.mjs +5 -5
  5. package/{esm2020 → esm2022}/lib/badge/badge.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/badge/module.mjs +5 -5
  7. package/{esm2020 → esm2022}/lib/bao.module.mjs +57 -57
  8. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/breadcrumb/module.mjs +5 -5
  10. package/esm2022/lib/button/button.component.mjs +100 -0
  11. package/{esm2020 → esm2022}/lib/button/module.mjs +5 -5
  12. package/{esm2020 → esm2022}/lib/card/card.component.mjs +16 -16
  13. package/{esm2020 → esm2022}/lib/card/module.mjs +13 -13
  14. package/{esm2020 → esm2022}/lib/checkbox/checkbox-group.component.mjs +4 -4
  15. package/esm2022/lib/checkbox/checkbox.component.mjs +304 -0
  16. package/{esm2020 → esm2022}/lib/checkbox/module.mjs +9 -9
  17. package/{esm2020 → esm2022}/lib/common-components/error-text/errorText.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/common-components/guiding-text/guidingText.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/common-components/label-text/labelText.component.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/common-components/module.mjs +11 -11
  21. package/{esm2020 → esm2022}/lib/common-components/title-text/titleText.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/dropdown-menu/dropdown-menu.component.mjs +22 -22
  23. package/{esm2020 → esm2022}/lib/dropdown-menu/module.mjs +17 -17
  24. package/esm2022/lib/file/file-input.component.mjs +319 -0
  25. package/{esm2020 → esm2022}/lib/file/file-intl.mjs +7 -7
  26. package/{esm2020 → esm2022}/lib/file/file-preview.component.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/file/module.mjs +19 -19
  28. package/{esm2020 → esm2022}/lib/header-info/header-info.component.mjs +19 -19
  29. package/{esm2020 → esm2022}/lib/header-info/module.mjs +15 -15
  30. package/{esm2020 → esm2022}/lib/hyperlink/hyperlink.component.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/hyperlink/module.mjs +5 -5
  32. package/{esm2020 → esm2022}/lib/icon/bao-icon-registry.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/icon/module.mjs +5 -5
  35. package/{esm2020 → esm2022}/lib/list/list.component.mjs +16 -16
  36. package/{esm2020 → esm2022}/lib/list/module.mjs +13 -13
  37. package/{esm2020 → esm2022}/lib/modal/modal-container.mjs +8 -8
  38. package/{esm2020 → esm2022}/lib/modal/modal-directives.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/modal/modal.mjs +7 -7
  40. package/{esm2020 → esm2022}/lib/modal/module.mjs +5 -5
  41. package/{esm2020 → esm2022}/lib/radio/module.mjs +19 -19
  42. package/{esm2020 → esm2022}/lib/radio/radio-group.component.mjs +11 -11
  43. package/{esm2020 → esm2022}/lib/radio/radio.component.mjs +13 -13
  44. package/esm2022/lib/snack-bar/module.mjs +51 -0
  45. package/{esm2020 → esm2022}/lib/snack-bar/simple-snack-bar.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-container.mjs +10 -5
  47. package/{esm2020 → esm2022}/lib/snack-bar/snack-bar.mjs +4 -4
  48. package/{esm2020 → esm2022}/lib/summary/list-summary.component.mjs +7 -7
  49. package/{esm2020 → esm2022}/lib/summary/module.mjs +11 -11
  50. package/{esm2020 → esm2022}/lib/summary/summary.component.mjs +7 -7
  51. package/{esm2020 → esm2022}/lib/system-header/module.mjs +9 -9
  52. package/esm2022/lib/system-header/system-header.component.mjs +130 -0
  53. package/{esm2020 → esm2022}/lib/tabs/module.mjs +11 -11
  54. package/{esm2020 → esm2022}/lib/tabs/tabs.component.mjs +13 -13
  55. package/{esm2020 → esm2022}/lib/tag/module.mjs +5 -5
  56. package/{esm2020 → esm2022}/lib/tag/tag.component.mjs +4 -4
  57. package/{fesm2020 → fesm2022}/villedemontreal-angular-ui.mjs +508 -501
  58. package/fesm2022/villedemontreal-angular-ui.mjs.map +1 -0
  59. package/lib/alert/alert.component.d.ts +1 -1
  60. package/lib/avatar/avatar.component.d.ts +1 -1
  61. package/lib/badge/badge.component.d.ts +1 -1
  62. package/lib/button/button.component.d.ts +4 -4
  63. package/lib/card/card.component.d.ts +1 -1
  64. package/lib/checkbox/checkbox-group.component.d.ts +1 -1
  65. package/lib/checkbox/checkbox.component.d.ts +1 -1
  66. package/lib/common-components/label-text/labelText.component.d.ts +1 -1
  67. package/lib/dropdown-menu/dropdown-menu.component.d.ts +2 -2
  68. package/lib/file/file-input.component.d.ts +1 -1
  69. package/lib/file/file-preview.component.d.ts +1 -1
  70. package/lib/header-info/header-info.component.d.ts +1 -1
  71. package/lib/hyperlink/hyperlink.component.d.ts +1 -1
  72. package/lib/icon/icon.component.d.ts +1 -1
  73. package/lib/modal/modal-directives.d.ts +1 -1
  74. package/lib/radio/radio-group.component.d.ts +1 -1
  75. package/lib/radio/radio.component.d.ts +1 -1
  76. package/lib/summary/summary.component.d.ts +1 -1
  77. package/lib/system-header/system-header.component.d.ts +4 -3
  78. package/lib/tabs/tabs.component.d.ts +1 -1
  79. package/lib/tag/tag.component.d.ts +1 -1
  80. package/package.json +13 -19
  81. package/esm2020/lib/button/button.component.mjs +0 -100
  82. package/esm2020/lib/checkbox/checkbox.component.mjs +0 -304
  83. package/esm2020/lib/file/file-input.component.mjs +0 -319
  84. package/esm2020/lib/snack-bar/module.mjs +0 -52
  85. package/esm2020/lib/system-header/system-header.component.mjs +0 -128
  86. package/fesm2015/villedemontreal-angular-ui.mjs +0 -6119
  87. package/fesm2015/villedemontreal-angular-ui.mjs.map +0 -1
  88. package/fesm2020/villedemontreal-angular-ui.mjs.map +0 -1
  89. /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/card/index.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/checkbox/index.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/common-components/index.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/core/breakpoints.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/core/colors.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/core/index.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/dropdown-menu/index.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/file/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/header-info/index.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/hyperlink/index.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/icon/icons-dictionary.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/icon/index.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/list/index.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
  108. /package/{esm2020 → esm2022}/lib/modal/modal-config.mjs +0 -0
  109. /package/{esm2020 → esm2022}/lib/modal/modal-ref.mjs +0 -0
  110. /package/{esm2020 → esm2022}/lib/radio/index.mjs +0 -0
  111. /package/{esm2020 → esm2022}/lib/shared/enum/display-mode.mjs +0 -0
  112. /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
  113. /package/{esm2020 → esm2022}/lib/snack-bar/index.mjs +0 -0
  114. /package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-animations.mjs +0 -0
  115. /package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-config.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/snack-bar/snack-bar-ref.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/summary/index.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/system-header/index.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/tabs/index.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/tag/index.mjs +0 -0
  121. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  122. /package/{esm2020 → esm2022}/villedemontreal-angular-ui.mjs +0 -0
@@ -1,304 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Directive, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/cdk/a11y";
5
- /**
6
- * Unique ID for each checkbox counter
7
- */
8
- let checkboxNextUniqueId = 0;
9
- export class BaoCheckboxComponent {
10
- constructor(elementRef, cdr, focusMonitor) {
11
- this.elementRef = elementRef;
12
- this.cdr = cdr;
13
- this.focusMonitor = focusMonitor;
14
- /**
15
- * Whether the checkbox has a border and is considered as a card.
16
- */
17
- this.brandBorder = false;
18
- /**
19
- * Whether the checkbox is inline.
20
- */
21
- this.inline = false;
22
- /**
23
- * The visible state of the label
24
- */
25
- this.hiddenLabel = false;
26
- /**
27
- * Emitted object on change event
28
- */
29
- this.change = new EventEmitter();
30
- /**
31
- * Inderminate value of the checkbox whenever
32
- */
33
- this.indeterminateChange = new EventEmitter();
34
- this._disabled = false;
35
- this._checked = false;
36
- this._indeterminate = false;
37
- this._uniqueId = `bao-checkbox-${++checkboxNextUniqueId}`;
38
- this.onModelChange = () => undefined;
39
- this.onTouch = () => undefined;
40
- if (!this.id) {
41
- this.id = this._uniqueId;
42
- }
43
- }
44
- /**
45
- * Whether the checkbox is checked. Default value : false
46
- */
47
- get checked() {
48
- return this._checked;
49
- }
50
- /**
51
- * Whether the checkbox is disabled. Default value : false
52
- */
53
- get disabled() {
54
- return this._disabled;
55
- }
56
- /**
57
- * Whether the checkbox is required. Default value : false
58
- */
59
- get required() {
60
- return this._required;
61
- }
62
- /**
63
- * Whether the checkbox is indeterminate. Default value : false
64
- */
65
- get indeterminate() {
66
- return this._indeterminate;
67
- }
68
- get nativeElement() {
69
- return this.elementRef.nativeElement;
70
- }
71
- set checked(value) {
72
- if (value !== this.checked) {
73
- this._checked = value;
74
- this.cdr.markForCheck();
75
- }
76
- }
77
- set disabled(value) {
78
- // In the case the value is string or boolean
79
- const newValue = value;
80
- if (newValue !== this.disabled) {
81
- this._disabled = newValue;
82
- this.cdr.markForCheck();
83
- }
84
- }
85
- set required(value) {
86
- this._required = value;
87
- }
88
- set indeterminate(value) {
89
- const newValue = value;
90
- if (newValue !== this._indeterminate) {
91
- this._indeterminate = newValue;
92
- this.indeterminateChange.emit(this._indeterminate);
93
- }
94
- // Update the inderteminate value of the html element object
95
- this.syncIndeterminate(this._indeterminate);
96
- }
97
- ngOnInit() {
98
- // Set all unique ids for the html elements
99
- this.inputID = `${this.id}-input`;
100
- this.ariaLabelledby = `${this.id}-arialabelledby`;
101
- }
102
- ngAfterViewInit() {
103
- this.focusMonitor.monitor(this.elementRef, true).subscribe(focusOrigin => {
104
- if (!focusOrigin) {
105
- // When a focused element becomes disabled, the browser *immediately* fires a blur event.
106
- // Angular does not expect events to be raised during change detection, so any state change
107
- // (such as a form control's 'ng-touched') will cause a changed-after-checked error.
108
- // See https://github.com/angular/angular/issues/17793. To work around this, we defer
109
- // telling the form control it has been touched until the next tick.
110
- Promise.resolve()
111
- .then(() => {
112
- this.onTouch();
113
- this.cdr.markForCheck();
114
- })
115
- .catch(() => undefined);
116
- }
117
- });
118
- this.setAriaDescribedByToDescription();
119
- this.syncIndeterminate(this.indeterminate);
120
- }
121
- ngOnDestroy() {
122
- this.focusMonitor.stopMonitoring(this.elementRef);
123
- }
124
- /**
125
- * Implement ControlValueAccessor
126
- */
127
- writeValue(value) {
128
- this.checked = !!value;
129
- }
130
- /**
131
- * Implement ControlValueAccessor
132
- */
133
- registerOnChange(fn) {
134
- this.onModelChange = fn;
135
- }
136
- /**
137
- * Implement ControlValueAccessor
138
- */
139
- registerOnTouched(fn) {
140
- this.onTouch = fn;
141
- }
142
- /**
143
- * Implement ControlValueAccessor
144
- */
145
- setDisabledState(isDisabled) {
146
- this.disabled = isDisabled;
147
- }
148
- focus(origin, options) {
149
- if (origin) {
150
- this.focusMonitor.focusVia(this.inputElement, origin, options);
151
- }
152
- else {
153
- this.inputElement.nativeElement.focus(options);
154
- }
155
- }
156
- /**
157
- * Whenever there is change on the input html element
158
- */
159
- onInteractionEvent(event) {
160
- // We always have to stop propagation on the change event.
161
- // Otherwise the change event, from the input element, will bubble up and
162
- // emit its event object to the `change` output.
163
- event.stopPropagation();
164
- }
165
- /**
166
- * Whenever there is click event triggered on the checkbox
167
- */
168
- onInputClick(event) {
169
- event.stopPropagation();
170
- this.toggle();
171
- this.emitChangeEvent();
172
- }
173
- /**
174
- * Get the value for the aria-checked property (web accessibility)
175
- */
176
- getAriaState() {
177
- if (this.checked) {
178
- return "true" /* eCheckboxAriaState.TRUE */;
179
- }
180
- return this.indeterminate
181
- ? "mixed" /* eCheckboxAriaState.MIXED */
182
- : "false" /* eCheckboxAriaState.FALSE */;
183
- }
184
- /**
185
- * Emit new values whenever the checkbox object has change.
186
- */
187
- emitChangeEvent() {
188
- this.onModelChange(this.checked);
189
- this.change.emit(this.checked);
190
- this.syncChecked(this.checked);
191
- }
192
- /**
193
- * Set the checked property on the input html element
194
- */
195
- syncChecked(value) {
196
- if (this.inputElement) {
197
- this.inputElement.nativeElement.checked = value;
198
- }
199
- }
200
- /**
201
- * Set the indeterminate property on the input html element
202
- */
203
- syncIndeterminate(value) {
204
- if (this.inputElement) {
205
- this.inputElement.nativeElement.indeterminate = value;
206
- }
207
- }
208
- /**
209
- * Set the aria-describedby property to bao-checkbox-description
210
- */
211
- setAriaDescribedByToDescription() {
212
- const childNodes = Array.from(this.nativeElement.childNodes);
213
- const labelNode = childNodes.find(x => {
214
- return x.nodeName === 'LABEL';
215
- });
216
- if (labelNode) {
217
- const labelChildNodes = Array.from(labelNode.childNodes);
218
- const descriptionNode = labelChildNodes.find(x => {
219
- return x.nodeName === 'BAO-CHECKBOX-DESCRIPTION';
220
- });
221
- if (descriptionNode) {
222
- this.ariaDescribedby = `${this.id}-ariadescribedby`;
223
- descriptionNode.setAttribute('id', this.ariaDescribedby);
224
- }
225
- else {
226
- this.ariaDescribedby = undefined;
227
- }
228
- this.cdr.detectChanges();
229
- }
230
- }
231
- /**
232
- * Set checked value
233
- */
234
- toggle() {
235
- this.checked = !this.checked;
236
- }
237
- }
238
- BaoCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckboxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
239
- BaoCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: BaoCheckboxComponent, selector: "bao-checkbox, [bao-checkbox]", inputs: { id: "id", ariaLabel: ["aria-label", "ariaLabel"], brandBorder: "brandBorder", inline: "inline", name: "name", hiddenLabel: "hiddenLabel", checked: "checked", disabled: "disabled", required: "required", indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "class.bao-checkbox-inline": "inline", "class.bao-checkbox-checked": "checked", "class.bao-checkbox-indeterminate": "indeterminate", "class.bao-checkbox-disabled": "disabled", "class.bao-checkbox-card": "brandBorder", "class.bao-checkbox-required": "required", "class.bao-checkbox-hidden-label": "hiddenLabel" }, classAttribute: "bao-checkbox" }, providers: [
240
- {
241
- provide: NG_VALUE_ACCESSOR,
242
- useExisting: forwardRef(() => BaoCheckboxComponent),
243
- multi: true
244
- }
245
- ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n type=\"checkbox\"\n [id]=\"inputID\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-checked]=\"getAriaState()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n role=\"checkbox\"\n/>\n<label class=\"bao-checkbox-content-container\" [attr.for]=\"inputID\">\n <div class=\"bao-checkbox-label\" [id]=\"ariaLabelledby\">\n <ng-content></ng-content>\n </div>\n <ng-content\n select=\"bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]\"\n ></ng-content>\n</label>\n", styles: [".bao-checkbox{display:block;font-size:1rem;line-height:1.5rem;min-height:1.5rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:2rem;position:relative;z-index:1}.bao-checkbox input{box-sizing:border-box;left:0;opacity:0;overflow:visible;padding:0;position:absolute;z-index:-1}.bao-checkbox input:focus~.bao-checkbox-content-container:before{box-shadow:0 0 0 .1875rem #0079c480}.bao-checkbox label.bao-checkbox-content-container{color:#212529;font-weight:400;font-size:1rem;line-height:1.5rem;margin-bottom:0;position:relative;vertical-align:top}.bao-checkbox label.bao-checkbox-content-container:before{border-radius:.125rem;box-sizing:border-box;position:absolute;top:0;left:-2rem;display:block;margin:.125rem;width:1.25rem;height:1.25rem;pointer-events:none;content:\"\";background-color:#fff;border:#ced4da solid 1px;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.bao-checkbox label.bao-checkbox-content-container:after{box-sizing:border-box;background:no-repeat 50%/1.5rem;content:\"\";display:block;height:1.5rem;left:-2rem;margin:0;position:absolute;top:0;width:1.5rem}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-label{color:#212529;display:block}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-description{color:#637381;display:block;margin-top:.5rem}.bao-checkbox.bao-checkbox-inline{display:inline-flex;margin-right:1rem}.bao-checkbox.bao-checkbox-card{padding:0;margin-bottom:1rem}.bao-checkbox.bao-checkbox-card:last-of-type{margin-bottom:0}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container{display:flex;flex-direction:column;flex:1;justify-content:center;padding:1rem 1rem 1rem 3.5rem;position:relative;border:1px solid #ced4da;border-radius:.25rem;color:#637381;min-height:3.5rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:before{top:1rem;left:0;margin-left:1.125rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:after{top:1rem;left:0;margin-left:1rem}.bao-checkbox.bao-checkbox-indeterminate .bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23097d6c' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}.bao-checkbox input:checked~.bao-checkbox-content-container:before{border-color:#097d6c;background-color:#097d6c}.bao-checkbox input:checked~.bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='%23ffffff' d='M16.7 8.3C17.1 8.7 17.1 9.3 16.7 9.7L10.7 15.7 10.7 15.7C10.6 15.9 10.4 15.9 10.2 16L10.1 16 10.1 16 9.9 16C9.7 16 9.5 15.9 9.3 15.7L7.3 13.7C6.9 13.3 6.9 12.7 7.3 12.3 7.7 11.9 8.3 11.9 8.7 12.3L10 13.6 15.3 8.3C15.7 7.9 16.3 7.9 16.7 8.3Z'/%3e%3c/svg%3e\")}.bao-checkbox input:disabled~.bao-checkbox-content-container{color:#adb2bd;border-color:#dee2e6}.bao-checkbox input:disabled~.bao-checkbox-content-container:before{border-color:#ced4da;background-color:#ced4da}.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-label,.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-description{color:#adb2bd}.bao-checkbox.bao-checkbox-hidden-label .bao-checkbox-label{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.bao-checkbox.bao-checkbox-hidden-label label.bao-checkbox-content-container .bao-checkbox-description{margin-top:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckboxComponent, decorators: [{
247
- type: Component,
248
- args: [{ selector: 'bao-checkbox, [bao-checkbox]', providers: [
249
- {
250
- provide: NG_VALUE_ACCESSOR,
251
- useExisting: forwardRef(() => BaoCheckboxComponent),
252
- multi: true
253
- }
254
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
255
- class: 'bao-checkbox',
256
- '[class.bao-checkbox-inline]': 'inline',
257
- '[class.bao-checkbox-checked]': 'checked',
258
- '[class.bao-checkbox-indeterminate]': 'indeterminate',
259
- '[class.bao-checkbox-disabled]': 'disabled',
260
- '[class.bao-checkbox-card]': 'brandBorder',
261
- '[class.bao-checkbox-required]': 'required',
262
- '[class.bao-checkbox-hidden-label]': 'hiddenLabel'
263
- }, template: "<input\n #input\n type=\"checkbox\"\n [id]=\"inputID\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [required]=\"required\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-checked]=\"getAriaState()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n role=\"checkbox\"\n/>\n<label class=\"bao-checkbox-content-container\" [attr.for]=\"inputID\">\n <div class=\"bao-checkbox-label\" [id]=\"ariaLabelledby\">\n <ng-content></ng-content>\n </div>\n <ng-content\n select=\"bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]\"\n ></ng-content>\n</label>\n", styles: [".bao-checkbox{display:block;font-size:1rem;line-height:1.5rem;min-height:1.5rem;padding-top:.5rem;padding-bottom:.5rem;padding-left:2rem;position:relative;z-index:1}.bao-checkbox input{box-sizing:border-box;left:0;opacity:0;overflow:visible;padding:0;position:absolute;z-index:-1}.bao-checkbox input:focus~.bao-checkbox-content-container:before{box-shadow:0 0 0 .1875rem #0079c480}.bao-checkbox label.bao-checkbox-content-container{color:#212529;font-weight:400;font-size:1rem;line-height:1.5rem;margin-bottom:0;position:relative;vertical-align:top}.bao-checkbox label.bao-checkbox-content-container:before{border-radius:.125rem;box-sizing:border-box;position:absolute;top:0;left:-2rem;display:block;margin:.125rem;width:1.25rem;height:1.25rem;pointer-events:none;content:\"\";background-color:#fff;border:#ced4da solid 1px;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.bao-checkbox label.bao-checkbox-content-container:after{box-sizing:border-box;background:no-repeat 50%/1.5rem;content:\"\";display:block;height:1.5rem;left:-2rem;margin:0;position:absolute;top:0;width:1.5rem}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-label{color:#212529;display:block}.bao-checkbox label.bao-checkbox-content-container .bao-checkbox-description{color:#637381;display:block;margin-top:.5rem}.bao-checkbox.bao-checkbox-inline{display:inline-flex;margin-right:1rem}.bao-checkbox.bao-checkbox-card{padding:0;margin-bottom:1rem}.bao-checkbox.bao-checkbox-card:last-of-type{margin-bottom:0}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container{display:flex;flex-direction:column;flex:1;justify-content:center;padding:1rem 1rem 1rem 3.5rem;position:relative;border:1px solid #ced4da;border-radius:.25rem;color:#637381;min-height:3.5rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:before{top:1rem;left:0;margin-left:1.125rem}.bao-checkbox.bao-checkbox-card label.bao-checkbox-content-container:after{top:1rem;left:0;margin-left:1rem}.bao-checkbox.bao-checkbox-indeterminate .bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23097d6c' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\")}.bao-checkbox input:checked~.bao-checkbox-content-container:before{border-color:#097d6c;background-color:#097d6c}.bao-checkbox input:checked~.bao-checkbox-content-container:after{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='%23ffffff' d='M16.7 8.3C17.1 8.7 17.1 9.3 16.7 9.7L10.7 15.7 10.7 15.7C10.6 15.9 10.4 15.9 10.2 16L10.1 16 10.1 16 9.9 16C9.7 16 9.5 15.9 9.3 15.7L7.3 13.7C6.9 13.3 6.9 12.7 7.3 12.3 7.7 11.9 8.3 11.9 8.7 12.3L10 13.6 15.3 8.3C15.7 7.9 16.3 7.9 16.7 8.3Z'/%3e%3c/svg%3e\")}.bao-checkbox input:disabled~.bao-checkbox-content-container{color:#adb2bd;border-color:#dee2e6}.bao-checkbox input:disabled~.bao-checkbox-content-container:before{border-color:#ced4da;background-color:#ced4da}.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-label,.bao-checkbox input:disabled~.bao-checkbox-content-container .bao-checkbox-description{color:#adb2bd}.bao-checkbox.bao-checkbox-hidden-label .bao-checkbox-label{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.bao-checkbox.bao-checkbox-hidden-label label.bao-checkbox-content-container .bao-checkbox-description{margin-top:0}\n"] }]
264
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }]; }, propDecorators: { id: [{
265
- type: Input
266
- }], ariaLabel: [{
267
- type: Input,
268
- args: ['aria-label']
269
- }], brandBorder: [{
270
- type: Input
271
- }], inline: [{
272
- type: Input
273
- }], name: [{
274
- type: Input
275
- }], hiddenLabel: [{
276
- type: Input
277
- }], change: [{
278
- type: Output
279
- }], indeterminateChange: [{
280
- type: Output
281
- }], inputElement: [{
282
- type: ViewChild,
283
- args: ['input', { static: false }]
284
- }], checked: [{
285
- type: Input
286
- }], disabled: [{
287
- type: Input
288
- }], required: [{
289
- type: Input
290
- }], indeterminate: [{
291
- type: Input
292
- }] } });
293
- export class BaoCheckBoxDescription {
294
- }
295
- BaoCheckBoxDescription.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckBoxDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
296
- BaoCheckBoxDescription.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.3", type: BaoCheckBoxDescription, selector: "bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]", host: { classAttribute: "bao-checkbox-description" }, ngImport: i0 });
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoCheckBoxDescription, decorators: [{
298
- type: Directive,
299
- args: [{
300
- selector: 'bao-checkbox-description, [bao-checkbox-description], [baoCheckboxDescription]',
301
- host: { class: 'bao-checkbox-description' }
302
- }]
303
- }] });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFXekU7O0dBRUc7QUFDSCxJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQTBCN0IsTUFBTSxPQUFPLG9CQUFvQjtJQXdFL0IsWUFDVSxVQUFtQyxFQUNuQyxHQUFzQixFQUN0QixZQUEwQjtRQUYxQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQTlEcEM7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUNhLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFPL0I7O1dBRUc7UUFDYSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQzs7V0FFRztRQUN1QixXQUFNLEdBQzlCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFOUI7O1dBRUc7UUFDdUIsd0JBQW1CLEdBQzNDLElBQUksWUFBWSxFQUFXLENBQUM7UUF1QnRCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLEtB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cUJBQ0YsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsY0FBYzt3QkFDckIsNkJBQTZCLEVBQUUsUUFBUTt3QkFDdkMsOEJBQThCLEVBQUUsU0FBUzt3QkFDekMsb0NBQW9DLEVBQUUsZUFBZTt3QkFDckQsK0JBQStCLEVBQUUsVUFBVTt3QkFDM0MsMkJBQTJCLEVBQUUsYUFBYTt3QkFDMUMsK0JBQStCLEVBQUUsVUFBVTt3QkFDM0MsbUNBQW1DLEVBQUUsYUFBYTtxQkFDbkQ7NEpBUWUsRUFBRTtzQkFBakIsS0FBSztnQkFLc0IsU0FBUztzQkFBcEMsS0FBSzt1QkFBQyxZQUFZO2dCQUtILFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFLVSxJQUFJO3NCQUFuQixLQUFLO2dCQUtVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS29CLE1BQU07c0JBQS9CLE1BQU07Z0JBTW1CLG1CQUFtQjtzQkFBNUMsTUFBTTtnQkFPQyxZQUFZO3NCQURuQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBc0NqQyxPQUFPO3NCQURWLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixhQUFhO3NCQURoQixLQUFLOztBQW1OUixNQUFNLE9BQU8sc0JBQXNCOzttSEFBdEIsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQ04saUZBQWlGO29CQUNuRixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMyBWaWxsZSBkZSBNb250cmVhbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5pbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBDaGVja2JveCBzdGF0ZSBmb3IgYXJpYS1jaGVja2VkIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIGVDaGVja2JveEFyaWFTdGF0ZSB7XG4gIFRSVUUgPSAndHJ1ZScsXG4gIEZBTFNFID0gJ2ZhbHNlJyxcbiAgTUlYRUQgPSAnbWl4ZWQnXG59XG5cbi8qKlxuICogVW5pcXVlIElEIGZvciBlYWNoIGNoZWNrYm94IGNvdW50ZXJcbiAqL1xubGV0IGNoZWNrYm94TmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFvLWNoZWNrYm94LCBbYmFvLWNoZWNrYm94XScsXG4gIHRlbXBsYXRlVXJsOiAnY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJhb0NoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYmFvLWNoZWNrYm94JyxcbiAgICAnW2NsYXNzLmJhby1jaGVja2JveC1pbmxpbmVdJzogJ2lubGluZScsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0nOiAnaW5kZXRlcm1pbmF0ZScsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmJhby1jaGVja2JveC1jYXJkXSc6ICdicmFuZEJvcmRlcicsXG4gICAgJ1tjbGFzcy5iYW8tY2hlY2tib3gtcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmJhby1jaGVja2JveC1oaWRkZW4tbGFiZWxdJzogJ2hpZGRlbkxhYmVsJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJhb0NoZWNrYm94Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgY2hlY2tib3ggSUQuIEl0IGlzIHNldCBkeW5hbWljYWxseSB3aXRoIGFuIHVuaXF1ZSBJRCBieSBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyaWEtbGFiZWwgZm9yIHdlYiBhY2Nlc3NpYmlsaXR5XG4gICAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBwdWJsaWMgYXJpYUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBoYXMgYSBib3JkZXIgYW5kIGlzIGNvbnNpZGVyZWQgYXMgYSBjYXJkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGJyYW5kQm9yZGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGlubGluZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpbmxpbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgcHJvcGVydHkgb2YgdGhlIGNoZWNrYm94XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZpc2libGUgc3RhdGUgb2YgdGhlIGxhYmVsXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZGVuTGFiZWwgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHRlZCBvYmplY3Qgb24gY2hhbmdlIGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEluZGVybWluYXRlIHZhbHVlIG9mIHRoZSBjaGVja2JveCB3aGVuZXZlclxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBpbnB1dCBodG1sIGVsZW1lbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgYXJpYS1kZXNjcmliZWRieSBpZCBmb3Igd2ViIGFjY2Vzc2liaWx0eVxuICAgKi9cbiAgcHVibGljIGFyaWFEZXNjcmliZWRieT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyaWEtbGFiZWxlZGJ5IGlkIGZvciB3ZWIgYWNjZXNzaWJpbHR5XG4gICAqL1xuICBwdWJsaWMgYXJpYUxhYmVsbGVkYnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgaW5wdXQgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgaW5wdXRJRDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2NoZWNrZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICBwcml2YXRlIF91bmlxdWVJZCA9IGBiYW8tY2hlY2tib3gtJHsrK2NoZWNrYm94TmV4dFVuaXF1ZUlkfWA7XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3JcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICB0aGlzLmlkID0gdGhpcy5fdW5pcXVlSWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuICBEZWZhdWx0IHZhbHVlIDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLiBEZWZhdWx0IHZhbHVlIDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgcmVxdWlyZWQuICBEZWZhdWx0IHZhbHVlIDogZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZS4gIERlZmF1bHQgdmFsdWUgOiBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gIH1cblxuICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuY2hlY2tlZCkge1xuICAgICAgdGhpcy5fY2hlY2tlZCA9IHZhbHVlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgLy8gSW4gdGhlIGNhc2UgdGhlIHZhbHVlIGlzIHN0cmluZyBvciBib29sZWFuXG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gIH1cblxuICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGUpIHtcbiAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgIH1cbiAgICAvLyBVcGRhdGUgdGhlIGluZGVydGVtaW5hdGUgdmFsdWUgb2YgdGhlIGh0bWwgZWxlbWVudCBvYmplY3RcbiAgICB0aGlzLnN5bmNJbmRldGVybWluYXRlKHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIC8vIFNldCBhbGwgdW5pcXVlIGlkcyBmb3IgdGhlIGh0bWwgZWxlbWVudHNcbiAgICB0aGlzLmlucHV0SUQgPSBgJHt0aGlzLmlkfS1pbnB1dGA7XG4gICAgdGhpcy5hcmlhTGFiZWxsZWRieSA9IGAke3RoaXMuaWR9LWFyaWFsYWJlbGxlZGJ5YDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYsIHRydWUpLnN1YnNjcmliZShmb2N1c09yaWdpbiA9PiB7XG4gICAgICBpZiAoIWZvY3VzT3JpZ2luKSB7XG4gICAgICAgIC8vIFdoZW4gYSBmb2N1c2VkIGVsZW1lbnQgYmVjb21lcyBkaXNhYmxlZCwgdGhlIGJyb3dzZXIgKmltbWVkaWF0ZWx5KiBmaXJlcyBhIGJsdXIgZXZlbnQuXG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lcyBub3QgZXhwZWN0IGV2ZW50cyB0byBiZSByYWlzZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24sIHNvIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgLy8gKHN1Y2ggYXMgYSBmb3JtIGNvbnRyb2wncyAnbmctdG91Y2hlZCcpIHdpbGwgY2F1c2UgYSBjaGFuZ2VkLWFmdGVyLWNoZWNrZWQgZXJyb3IuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xNzc5My4gVG8gd29yayBhcm91bmQgdGhpcywgd2UgZGVmZXJcbiAgICAgICAgLy8gdGVsbGluZyB0aGUgZm9ybSBjb250cm9sIGl0IGhhcyBiZWVuIHRvdWNoZWQgdW50aWwgdGhlIG5leHQgdGljay5cbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldEFyaWFEZXNjcmliZWRCeVRvRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLnN5bmNJbmRldGVybWluYXRlKHRoaXMuaW5kZXRlcm1pbmF0ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudCBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luLCBvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5pbnB1dEVsZW1lbnQsIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW5ldmVyIHRoZXJlIGlzIGNoYW5nZSBvbiB0aGUgaW5wdXQgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgb25JbnRlcmFjdGlvbkV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFdlIGFsd2F5cyBoYXZlIHRvIHN0b3AgcHJvcGFnYXRpb24gb24gdGhlIGNoYW5nZSBldmVudC5cbiAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgLy8gZW1pdCBpdHMgZXZlbnQgb2JqZWN0IHRvIHRoZSBgY2hhbmdlYCBvdXRwdXQuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbmV2ZXIgdGhlcmUgaXMgY2xpY2sgZXZlbnQgdHJpZ2dlcmVkIG9uIHRoZSBjaGVja2JveFxuICAgKi9cbiAgcHVibGljIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmb3IgdGhlIGFyaWEtY2hlY2tlZCBwcm9wZXJ0eSAod2ViIGFjY2Vzc2liaWxpdHkpXG4gICAqL1xuICBwdWJsaWMgZ2V0QXJpYVN0YXRlKCk6IGVDaGVja2JveEFyaWFTdGF0ZSB7XG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xuICAgICAgcmV0dXJuIGVDaGVja2JveEFyaWFTdGF0ZS5UUlVFO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmluZGV0ZXJtaW5hdGVcbiAgICAgID8gZUNoZWNrYm94QXJpYVN0YXRlLk1JWEVEXG4gICAgICA6IGVDaGVja2JveEFyaWFTdGF0ZS5GQUxTRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IG5ldyB2YWx1ZXMgd2hlbmV2ZXIgdGhlIGNoZWNrYm94IG9iamVjdCBoYXMgY2hhbmdlLlxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKSB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuY2hlY2tlZCk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuc3luY0NoZWNrZWQodGhpcy5jaGVja2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNoZWNrZWQgcHJvcGVydHkgb24gdGhlIGlucHV0IGh0bWwgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jQ2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaW5kZXRlcm1pbmF0ZSBwcm9wZXJ0eSBvbiB0aGUgaW5wdXQgaHRtbCBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIHN5bmNJbmRldGVybWluYXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHByb3BlcnR5IHRvIGJhby1jaGVja2JveC1kZXNjcmlwdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzZXRBcmlhRGVzY3JpYmVkQnlUb0Rlc2NyaXB0aW9uKCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzKTtcbiAgICBjb25zdCBsYWJlbE5vZGUgPSBjaGlsZE5vZGVzLmZpbmQoeCA9PiB7XG4gICAgICByZXR1cm4geC5ub2RlTmFtZSA9PT0gJ0xBQkVMJztcbiAgICB9KTtcbiAgICBpZiAobGFiZWxOb2RlKSB7XG4gICAgICBjb25zdCBsYWJlbENoaWxkTm9kZXMgPSBBcnJheS5mcm9tKGxhYmVsTm9kZS5jaGlsZE5vZGVzKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTm9kZSA9IGxhYmVsQ2hpbGROb2Rlcy5maW5kKHggPT4ge1xuICAgICAgICByZXR1cm4geC5ub2RlTmFtZSA9PT0gJ0JBTy1DSEVDS0JPWC1ERVNDUklQVElPTic7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGRlc2NyaXB0aW9uTm9kZSkge1xuICAgICAgICB0aGlzLmFyaWFEZXNjcmliZWRieSA9IGAke3RoaXMuaWR9LWFyaWFkZXNjcmliZWRieWA7XG4gICAgICAgIChkZXNjcmlwdGlvbk5vZGUgYXMgSFRNTEVsZW1lbnQpLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnaWQnLFxuICAgICAgICAgIHRoaXMuYXJpYURlc2NyaWJlZGJ5XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFyaWFEZXNjcmliZWRieSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2hlY2tlZCB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSB0b2dnbGUoKSB7XG4gICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb2RlbENoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOlxuICAgICdiYW8tY2hlY2tib3gtZGVzY3JpcHRpb24sIFtiYW8tY2hlY2tib3gtZGVzY3JpcHRpb25dLCAgW2Jhb0NoZWNrYm94RGVzY3JpcHRpb25dJyxcbiAgaG9zdDogeyBjbGFzczogJ2Jhby1jaGVja2JveC1kZXNjcmlwdGlvbicgfVxufSlcbmV4cG9ydCBjbGFzcyBCYW9DaGVja0JveERlc2NyaXB0aW9uIHt9XG4iLCI8aW5wdXRcbiAgI2lucHV0XG4gIHR5cGU9XCJjaGVja2JveFwiXG4gIFtpZF09XCJpbnB1dElEXCJcbiAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlcIlxuICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZ2V0QXJpYVN0YXRlKClcIlxuICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCJcbiAgcm9sZT1cImNoZWNrYm94XCJcbi8+XG48bGFiZWwgY2xhc3M9XCJiYW8tY2hlY2tib3gtY29udGVudC1jb250YWluZXJcIiBbYXR0ci5mb3JdPVwiaW5wdXRJRFwiPlxuICA8ZGl2IGNsYXNzPVwiYmFvLWNoZWNrYm94LWxhYmVsXCIgW2lkXT1cImFyaWFMYWJlbGxlZGJ5XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnRcbiAgICBzZWxlY3Q9XCJiYW8tY2hlY2tib3gtZGVzY3JpcHRpb24sIFtiYW8tY2hlY2tib3gtZGVzY3JpcHRpb25dLCBbYmFvQ2hlY2tib3hEZXNjcmlwdGlvbl1cIlxuICA+PC9uZy1jb250ZW50PlxuPC9sYWJlbD5cbiJdfQ==